lib/fog/ibm.rb in fog-1.19.0 vs lib/fog/ibm.rb in fog-1.20.0

- old
+ new

@@ -1,176 +1,2 @@ -require 'fog/core' - -module Fog - module IBM - - extend Fog::Provider - - service(:compute, 'ibm/compute', 'Compute') - service(:storage, 'ibm/storage', 'Storage') - - # Provisioning is very slow. We'll pass this arg explicitly until there's a way - # to set the default timeout on a per-provider basis. - - def self.timeout - 1800 - end - - class Connection < Fog::Connection - - def initialize(user, password) - @user = user - @password = password - @endpoint = URI.parse('https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331') - @base_path = @endpoint.path - super("#{@endpoint.scheme}://#{@endpoint.host}:#{@endpoint.port}") - end - - def request(options) - options[:path] = @base_path + options[:path] - options[:headers] ||= {} - options[:headers]['Authorization'] = auth_header - options[:headers]['Accept'] = 'application/json' - options[:headers]['Accept-Encoding'] = 'gzip' - unless options[:body].nil? - options[:headers]['Content-Type'] = 'application/x-www-form-urlencoded' - options[:body] = form_encode(options[:body]) - end - response = super(options) - unless response.body.empty? - response.body = Fog::JSON.decode(response.body) - end - response - end - - def auth_header - @auth_header ||= 'Basic ' + Base64.encode64("#{@user}:#{@password}").gsub("\n",'') - end - - def form_encode(params) - params.reject {|k, v| v.nil? }.map {|pair| pair.map {|x| URI.escape(x.to_s) }.join('=') }.join('&') - end - end - - class Mock - class << self - - def id - Fog::Mock.random_numbers(7).to_i.to_s - end - alias :instance_id :id - alias :request_id :id - - def primary_ip - { "type" => 0, "ip" => Fog::IBM::Mock.ip_address, "hostname" => Fog::IBM::Mock.hostname } - end - - def ip_address - ip = [] - 4.times do - ip << Fog::Mock.random_numbers(rand(3) + 1).to_i.to_s # remove leading 0 - end - ip.join('.') - end - - def hostname - "vhost" + Fog::Mock.random_numbers(3).to_i.to_s + ".fake.compute.ihost.com" - end - - # Miliseconds since epoch - def launch_time - (Time.now.tv_sec * 1000).to_i - end - - # 1 year from now, in miliseconds since epoch - def expiry_time - ((Time.now.tv_sec + 31556926) * 1000).to_i - end - - def owner - "user" + Fog::Mock.random_numbers(3).to_i.to_s + "@company.com" - end - - def key_material - OpenSSL::PKey::RSA.generate(1024) - end - - def private_image(name, description) - { - "name" => name, - "createdTime" => Fog::IBM::Mock.launch_time, - "productCodes"=> [], - "id" => Fog::IBM::Mock.instance_id, - "description" => description, - "visibility" => "PRIVATE", - "state" => 0 - } - end - - def create_instance(name, image_id, instance_type, location, options) - { - "name" => name, - "location" => location, - "keyName" => options[:key_name], - "primaryIP" => Fog::IBM::Mock.primary_ip, - "productCodes" => [], - "requestId" => Fog::IBM::Mock.request_id, - "imageId" => image_id, - "launchTime" => Fog::IBM::Mock.launch_time, - "id" => Fog::IBM::Mock.instance_id, - "volumes" => [], - "isMiniEphemeral" => "false", - "instanceType" => instance_type, - "diskSize" => "60", - "requestName" => "", - "secondaryIP" => [], - "status" => 1, - "software" => [ - { "name"=>"SUSE Linux Enterprise Server", - "type"=>"OS", - "version"=>"11 SP1" } - ], - "expirationTime"=> Fog::IBM::Mock.expiry_time, - "owner" => Fog::IBM::Mock.owner - } - end - - def create_volume(name, format, location_id, size, offering_id) - { - "instanceId" => "0", - "state" => 1, - "size" => size, - "offeringId" => offering_id, - "ioPrice" => { - "rate" => 0.11, - "unitOfMeasure" => "CNT", - "countryCode" => "897", - "effectiveDate" => Fog::IBM::Mock.launch_time, - "currencyCode" => "USD", - "pricePerQuantity" => 1 - }, - "owner" => Fog::IBM::Mock.owner, - "createdTime" => Fog::IBM::Mock.launch_time, - "location" => location_id, - "productCodes"=> [], - "format" => format, - "name" => name, - "id" => Fog::IBM::Mock.id, - } - end - - def create_address(location_id, offering_id, vlan_id) - # TODO: Figure out vlan handling - { - "id" => Fog::IBM::Mock.id, - "location" => location_id, - "offeringId"=> offering_id, - "ip" => "", - "state" => 0 - } - end - - end - end - - end -end +require 'fog/ibm/compute' +require 'fog/ibm/storage'