1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/fogdocker/compute.rb
Daniel Lobato b38f644f77 Docker: Support for logs/top operations
In order to test this properly, responses from the mock return values
closer to what the API actually returns. Examples are from Remote API
1.18.

downcasing hash keys cannot be performed on all Docker API operations so
now it will only be done where the top element is a hash. Logs, top, and
many others will not return a hash.
2014-10-16 12:43:02 +02:00

58 lines
1.6 KiB
Ruby

require 'fog/fogdocker/core'
module Fog
module Compute
class Fogdocker < Fog::Service
requires :docker_url
recognizes :docker_username, :docker_password, :docker_email
model_path 'fog/fogdocker/models/compute'
model :server
collection :servers
model :image
collection :images
request_path 'fog/fogdocker/requests/compute'
request :api_version
request :container_all
request :container_create
request :container_delete
request :container_get
request :container_action
request :container_commit
request :image_all
request :image_create
request :image_delete
request :image_get
request :image_search
class Mock
def initialize(options={})
end
end
class Real
def initialize(options={})
require 'docker'
username = options[:docker_username]
password = options[:docker_password]
email = options[:docker_email]
url = options[:docker_url]
Docker.url = url
Docker.authenticate!('username' => username, 'password' => password, 'email' => email) unless username.nil? || username.empty?
end
def downcase_hash_keys(hash, k = [])
return {k.join('_').gsub(/([a-z])([A-Z])/,'\1_\2').downcase => hash} unless hash.is_a?(Hash)
hash.reduce({}){ |h, v| h.merge! downcase_hash_keys(v[-1], k + [v[0]]) }
end
def camelize_hash_keys(hash)
Hash[ hash.map {|k, v| [k.to_s.split('_').map {|w| w.capitalize}.join, v] }]
end
end
end
end
end