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/bin/openstack.rb
Ladislav Smola c7cd466865 Add OpenStack Ironic support
Adding Openstack Ironic support for nodes, chassis, ports and
drivers.

Adding only basic CRUD operations support for start. Rest of
the special methods will be added later. All not implemented
API calls had been marked as TODO.

DependsOn: https://github.com/fog/fog-core/pull/117
2015-02-02 10:11:43 +01:00

69 lines
2.6 KiB
Ruby

class OpenStack < Fog::Bin
class << self
def class_for(key)
case key
when :compute
Fog::Compute::OpenStack
when :identity
Fog::Identity::OpenStack
when :image
Fog::Image::OpenStack
when :network
Fog::Network::OpenStack
when :storage
Fog::Storage::OpenStack
when :volume
Fog::Volume::OpenStack
when :metering
Fog::Metering::OpenStack
when :orchestration
Fog::Orchestration::OpenStack
when :baremetal
Fog::Baremetal::OpenStack
else
raise ArgumentError, "Unrecognized service: #{key}"
end
end
def [](service)
@@connections ||= Hash.new do |hash, key|
hash[key] = case key
when :compute
Fog::Logger.warning("OpenStack[:compute] is not recommended, use Compute[:openstack] for portability")
Fog::Compute.new(:provider => 'OpenStack')
when :identity
Fog::Logger.warning("OpenStack[:identity] is not recommended, use Identity[:openstack] for portability")
Fog::Identity.new(:provider => 'OpenStack')
when :image
Fog::Logger.warning("OpenStack[:image] is not recommended, use Image[:openstack] for portability")
Fog::Image.new(:provider => 'OpenStack')
when :network
Fog::Logger.warning("OpenStack[:network] is not recommended, use Network[:openstack] for portability")
Fog::Network.new(:provider => 'OpenStack')
when :storage
Fog::Logger.warning("OpenStack[:storage] is not recommended, use Storage[:openstack] for portability")
Fog::Storage.new(:provider => 'OpenStack')
when :volume
Fog::Logger.warning("OpenStack[:volume] is not recommended, use Volume[:openstack] for portability")
Fog::Volume.new(:provider => 'OpenStack')
when :metering
Fog::Logger.warning("OpenStack[:metering] is not recommended, use Metering[:openstack] for portability")
Fog::Metering.new(:provider => 'OpenStack')
when :orchestration
Fog::Logger.warning("OpenStack[:orchestration] is not recommended, use Orchestration[:openstack] for portability")
Fog::Orchestration.new(:provider => 'OpenStack')
when :baremetal
Fog::Logger.warning("OpenStack[:baremetal] is not recommended, use Baremetal[:openstack] for portability")
Fog::Baremetal.new(:provider => 'OpenStack')
else
raise ArgumentError, "Unrecognized service: #{key.inspect}"
end
end
@@connections[service]
end
def services
Fog::OpenStack.services
end
end
end