# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 32 def initialize(cert, key, region = nil, version = '2011-01-31', locale = 'en') @version = version @locale = locale if region.nil? cert.subject.to_s =~ %r\b[Cc]=(\w\w)\b/ region = $1.downcase end # first 'jp' region is now 'jp-east' region = 'jp-east' if region == 'jp' endpoint = Deltacloud::Drivers::driver_config[:fgcp][:entrypoints]['default'][region] || region #proxy settings: http_proxy = ENV['http_proxy'] proxy_uri = URI.parse(http_proxy) if http_proxy if proxy_uri proxy_addr = proxy_uri.host proxy_port = proxy_uri.port proxy_user = proxy_uri.user proxy_pass = proxy_uri.password end @uri = URI.parse(endpoint) @headers = {'Accept' => 'text/xml', 'User-Agent' => 'OViSS-API-CLIENT'} @service = Net::HTTP::Proxy(proxy_addr, proxy_port, proxy_user, proxy_pass).new(@uri.host, @uri.port) @service.set_debug_output $stderr if cert.subject.to_s =~ %rdiesk/ # TODO: use a proper debug mode flag # configure client authentication @service.use_ssl = (@uri.scheme == 'https') @service.key = key @service.cert = cert # configure server authentication (peer verification) ca_certs = ENV['FGCP_CA_CERTS'] # e.g. '/etc/ssl/certs/ca-bundle.crt' @service.ca_file = ca_certs if ca_certs and File.file?(ca_certs) @service.ca_path = ca_certs if ca_certs and File.directory?(ca_certs) @service.verify_mode = (@service.ca_file or @service.ca_path) ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 274 def allocate_public_ip(vsys_id) request('AllocatePublicIP', {'vsysId' => vsys_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 278 def attach_public_ip(vsys_id, public_ip) request('AttachPublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 246 def attach_vdisk(vserver_id, vdisk_id) request('AttachVDisk', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id, 'vdiskId' => vdisk_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 258 def backup_vdisk(vdisk_id) request('BackupVDisk', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 185 def create_efm(efm_type, efm_name, network_id) request('CreateEFM', { 'vsysId' => extract_vsys_id(network_id), 'efmType' => efm_type, 'efmName' => efm_name, 'networkId' => network_id} ) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 238 def create_vdisk(vsys_id, vdisk_name, size) request('CreateVDisk', {'vsysId' => vsys_id, 'vdiskName' => vdisk_name, 'size' => size}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 109 def create_vserver(vserver_name, vserver_type, disk_image_id, network_id) request('CreateVServer', { 'vsysId' => extract_vsys_id(network_id), 'vserverName' => vserver_name, 'vserverType' => vserver_type, 'diskImageId' => disk_image_id, 'networkId' => network_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 290 def create_vsys(vsys_descriptor_id, vsys_name) request('CreateVSYS', {'vsysDescriptorId' => vsys_descriptor_id, 'vsysName' => vsys_name}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 194 def destroy_efm(efm_id) request('DestroyEFM', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 242 def destroy_vdisk(vdisk_id) request('DestroyVDisk', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 262 def destroy_vdisk_backup(vsys_id, backup_id) request('DestroyVDiskBackup', {'vsysId' => vsys_id, 'backupId' => backup_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 118 def destroy_vserver(vserver_id) request('DestroyVServer', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 294 def destroy_vsys(vsys_id) request('DestroyVSYS', {'vsysId' => vsys_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 282 def detach_public_ip(vsys_id, public_ip) request('DetachPublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 250 def detach_vdisk(vserver_id, vdisk_id) request('DetachVDisk', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id, 'vdiskId' => vdisk_id}) end
extract vsysId from vserverId, efmId or networkId
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 308 def extract_vsys_id(id) %r^(\w+-\w+)\b.*/ =~ id $1 end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 286 def free_public_ip(vsys_id, public_ip) request('FreePublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 202 def get_efm_configuration(efm_id, configuration_name, configuration_xml=nil) request('GetEFMConfiguration', { 'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id, 'configurationName' => configuration_name }, configuration_xml, 'configurationXMLFilePath' ) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 198 def get_efm_status(efm_id) request('GetEFMStatus', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 298 def get_performance_information(vserver_id, interval, data_type=nil) @version = '2012-02-18' if data_type.nil? request('GetPerformanceInformation', {'vsysId' => extract_vsys_id(vserver_id), 'serverId' => vserver_id, 'interval' => interval}) else request('GetPerformanceInformation', {'vsysId' => extract_vsys_id(vserver_id), 'serverId' => vserver_id, 'dataType' => data_type, 'interval' => interval}) end end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 234 def get_vdisk_attributes(vdisk_id) request('GetVDiskAttributes', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 230 def get_vdisk_status(vdisk_id) request('GetVDiskStatus', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 130 def get_vserver_attributes(vserver_id) request('GetVServerAttributes', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 134 def get_vserver_configuration(vserver_id) request('GetVServerConfiguration', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 126 def get_vserver_initial_password(vserver_id) request('GetVServerInitialPassword', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 122 def get_vserver_status(vserver_id) request('GetVServerStatus', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 85 def get_vsys_attributes(vsys_id) request('GetVSYSAttributes', {'vsysId' => vsys_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 89 def get_vsys_configuration(vsys_id) request('GetVSYSConfiguration', {'vsysId' => vsys_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 138 def list_disk_images(server_category=nil, vsys_descriptor_id=nil) params = {} params.merge! 'serverCategory' => server_category if server_category params.merge! 'vsysDescriptorId' => vsys_descriptor_id if vsys_descriptor_id request('ListDiskImage', params) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 173 def list_efm(vsys_id, efm_type) request('ListEFM', {'vsysId' => vsys_id, 'efmType' => efm_type}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 266 def list_public_ips(vsys_id=nil) if vsys_id.nil? request('ListPublicIP') else request('ListPublicIP', {'vsysId' => vsys_id}) end end
API methods
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 76 def list_server_types #diskImageId is mandatory but value seems to be ignored request('ListServerType', {'diskImageId' => 'dummy'}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 226 def list_vdisk(vsys_id) request('ListVDisk', {'vsysId' => vsys_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 254 def list_vdisk_backup(vdisk_id) request('ListVDiskBackup', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 97 def list_vservers(vsys_id) request('ListVServer', {'vsysId' => vsys_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 81 def list_vsys request('ListVSYS') end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 93 def list_vsys_descriptor request('ListVSYSDescriptor') end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 146 def register_private_disk_image(vserver_id, name, description) #TODO: support different attributes for different locales? image_descriptor = "<?xml version="1.0" encoding ="UTF-8"?> <Request> <vserverId>#{vserver_id}</vserverId> <locales> <locale> <lcid>en</lcid> <name>#{name}</name> <description>#{description}</description> </locale> <locale> <lcid>jp</lcid> <name>#{name}</name> <description>#{description}</description> </locale> </locales> </Request> " request('RegisterPrivateDiskImage', nil, image_descriptor, 'diskImageXMLFilePath') end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 177 def start_efm(efm_id) request('StartEFM', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 101 def start_vserver(vserver_id) request('StartVServer', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 181 def stop_efm(efm_id) request('StopEFM', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 105 def stop_vserver(vserver_id, force=false) request('StopVServer', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id, 'force' => force}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 169 def unregister_disk_image(disk_image_id) request('UnregisterDiskImage', {'diskImageId' => disk_image_id}) end
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 214 def update_efm_configuration(efm_id, configuration_name, configuration_xml=nil) request('UpdateEFMConfiguration', { 'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id, 'configurationName' => configuration_name }, configuration_xml, 'configurationXMLFilePath' ) end