class Deltacloud::Drivers::Fgcp::FgcpClient

Public Class Methods

new(cert, key, region = nil, version = '2011-01-31', locale = 'en') click to toggle source
# 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

Public Instance Methods

allocate_public_ip(vsys_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 323
def allocate_public_ip(vsys_id)
  request('AllocatePublicIP', {'vsysId' => vsys_id})
end
attach_public_ip(vsys_id, public_ip) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 327
def attach_public_ip(vsys_id, public_ip)
  request('AttachPublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip})
end
attach_vdisk(vserver_id, vdisk_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 257
def attach_vdisk(vserver_id, vdisk_id)
  request('AttachVDisk', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id, 'vdiskId' => vdisk_id})
end
backup_vdisk(vdisk_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 269
def backup_vdisk(vdisk_id)
  request('BackupVDisk', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id})
end
create_efm(efm_type, efm_name, network_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 196
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
create_vdisk(vsys_id, vdisk_name, size) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 249
def create_vdisk(vsys_id, vdisk_name, size)
  request('CreateVDisk', {'vsysId' => vsys_id, 'vdiskName' => vdisk_name, 'size' => size})
end
create_vserver(vserver_name, vserver_type, disk_image_id, network_id) click to toggle source
# 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
create_vservers(vsys_id, vservers_xml) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 118
def create_vservers(vsys_id, vservers_xml)
  @version = '2012-07-20'
  request('CreateMultipleVServer',
    {
      'vsysId'    => vsys_id,
    },
    vservers_xml,
    'vserversXMLFilePath'
  )
end
create_vsys(vsys_descriptor_id, vsys_name) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 339
def create_vsys(vsys_descriptor_id, vsys_name)
  request('CreateVSYS', {'vsysDescriptorId' => vsys_descriptor_id, 'vsysName' => vsys_name})
end
destroy_efm(efm_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 205
def destroy_efm(efm_id)
  request('DestroyEFM', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id})
end
destroy_vdisk(vdisk_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 253
def destroy_vdisk(vdisk_id)
  request('DestroyVDisk', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id})
end
destroy_vdisk_backup(vsys_id, backup_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 273
def destroy_vdisk_backup(vsys_id, backup_id)
  request('DestroyVDiskBackup', {'vsysId' => vsys_id, 'backupId' => backup_id})
end
destroy_vserver(vserver_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 129
def destroy_vserver(vserver_id)
  request('DestroyVServer', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id})
end
destroy_vsys(vsys_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 343
def destroy_vsys(vsys_id)
  request('DestroyVSYS', {'vsysId' => vsys_id})
end
detach_public_ip(vsys_id, public_ip) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 331
def detach_public_ip(vsys_id, public_ip)
  request('DetachPublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip})
end
detach_vdisk(vserver_id, vdisk_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 261
def detach_vdisk(vserver_id, vdisk_id)
  request('DetachVDisk', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id, 'vdiskId' => vdisk_id})
end
external_restore_vdisk(src_vsys_id, src_backup_id, dst_vsys_id, dst_vdisk_id, key) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 304
def external_restore_vdisk(src_vsys_id, src_backup_id, dst_vsys_id, dst_vdisk_id, key)
  @version = '2012-07-20'
  request('ExternalRestoreVDisk', {
    'srcVsysId'   => src_vsys_id,
    'srcBackupId' => src_backup_id,
    'dstVsysId'   => dst_vsys_id,
    'dstVdiskId'  => dst_vdisk_id,
    'key'         => key}
  )
end
extract_contract_id(id) click to toggle source

extract contract id from vserverId, efmId or networkId

# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 363
def extract_contract_id(id)
  %r^(\w+)-\w+\b.*/ =~ id
  $1
end
extract_vsys_id(id) click to toggle source

extract vsysId from vserverId, efmId or networkId

# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 357
def extract_vsys_id(id)
  %r^(\w+-\w+)\b.*/ =~ id
  $1
end
free_public_ip(vsys_id, public_ip) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 335
def free_public_ip(vsys_id, public_ip)
  request('FreePublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip})
end
get_efm_configuration(efm_id, configuration_name, configuration_xml=nil) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 213
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
get_efm_status(efm_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 209
def get_efm_status(efm_id)
  request('GetEFMStatus', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id})
end
get_performance_information(vserver_id, interval, data_type=nil) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 347
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
get_vdisk_attributes(vdisk_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 245
def get_vdisk_attributes(vdisk_id)
  request('GetVDiskAttributes', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id})
end
get_vdisk_backup_copy_key(vsys_id, backup_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 277
def get_vdisk_backup_copy_key(vsys_id, backup_id)
  @version = '2012-07-20'
  request('GetVDiskBackupCopyKey', {'vsysId' => vsys_id, 'backupId' => backup_id})
end
get_vdisk_status(vdisk_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 241
def get_vdisk_status(vdisk_id)
  request('GetVDiskStatus', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id})
end
get_vserver_attributes(vserver_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 141
def get_vserver_attributes(vserver_id)
  request('GetVServerAttributes', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id})
end
get_vserver_configuration(vserver_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 145
def get_vserver_configuration(vserver_id)
  request('GetVServerConfiguration', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id})
end
get_vserver_initial_password(vserver_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 137
def get_vserver_initial_password(vserver_id)
  request('GetVServerInitialPassword', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id})
end
get_vserver_status(vserver_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 133
def get_vserver_status(vserver_id)
  request('GetVServerStatus', {'vsysId' => extract_vsys_id(vserver_id), 'vserverId' => vserver_id})
end
get_vsys_attributes(vsys_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 85
def get_vsys_attributes(vsys_id)
  request('GetVSYSAttributes', {'vsysId' => vsys_id})
end
get_vsys_configuration(vsys_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 89
def get_vsys_configuration(vsys_id)
  request('GetVSYSConfiguration', {'vsysId' => vsys_id})
end
list_disk_images(server_category=nil, vsys_descriptor_id=nil) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 149
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
list_efm(vsys_id, efm_type) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 184
def list_efm(vsys_id, efm_type)
  request('ListEFM', {'vsysId' => vsys_id, 'efmType' => efm_type})
end
list_public_ips(vsys_id=nil) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 315
def list_public_ips(vsys_id=nil)
  if vsys_id.nil?
    request('ListPublicIP')
  else
    request('ListPublicIP', {'vsysId' => vsys_id})
  end
end
list_server_types() click to toggle source

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
list_vdisk(vsys_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 237
def list_vdisk(vsys_id)
  request('ListVDisk', {'vsysId' => vsys_id})
end
list_vdisk_backup(vdisk_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 265
def list_vdisk_backup(vdisk_id)
  request('ListVDiskBackup', {'vsysId' => extract_vsys_id(vdisk_id), 'vdiskId' => vdisk_id})
end
list_vservers(vsys_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 97
def list_vservers(vsys_id)
  request('ListVServer', {'vsysId' => vsys_id})
end
list_vsys() click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 81
def list_vsys
  request('ListVSYS')
end
list_vsys_descriptor() click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 93
def list_vsys_descriptor
  request('ListVSYSDescriptor')
end
register_private_disk_image(vserver_id, name, description) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 157
  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>ja</lcid>
      <name>#{name}</name>
      <description>#{description}</description>
    </locale>
  </locales>
</Request>
"
    request('RegisterPrivateDiskImage', nil, image_descriptor, 'diskImageXMLFilePath')
  end
set_vdisk_backup_copy_key(vsys_id, backup_id, contracts) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 282
  def set_vdisk_backup_copy_key(vsys_id, backup_id, contracts)
    @version = '2012-07-20'
    contracts_xml = "<?xml version="1.0" encoding ="UTF-8"?>
<Request>
  <contracts>
    <contract>
#{contracts.collect { |c| "      <number>#{c}</number>" }.join("\n")}
    </contract>
  </contracts>
</Request>
"
    request('SetVDiskBackupCopyKey',
      {
        'vsysId'   => vsys_id,
        'backupId' => backup_id
      },
      contracts_xml,
      'contractsXMLFilePath'
    )
  end
start_efm(efm_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 188
def start_efm(efm_id)
  request('StartEFM', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id})
end
start_vserver(vserver_id) click to toggle source
# 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
stop_efm(efm_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 192
def stop_efm(efm_id)
  request('StopEFM', {'vsysId' => extract_vsys_id(efm_id), 'efmId' => efm_id})
end
stop_vserver(vserver_id, force=false) click to toggle source
# 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
unregister_disk_image(disk_image_id) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 180
def unregister_disk_image(disk_image_id)
  request('UnregisterDiskImage', {'diskImageId' => disk_image_id})
end
update_efm_configuration(efm_id, configuration_name, configuration_xml=nil) click to toggle source
# File lib/deltacloud/drivers/fgcp/fgcp_client.rb, line 225
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