Class: Deltacloud::Drivers::Fgcp::FgcpClient

Inherits:
Object
  • Object
show all
Defined in:
lib/deltacloud/drivers/fgcp/fgcp_client.rb

Instance Method Summary collapse

Constructor Details

#initialize(cert, key, region = nil, version = '2011-01-31', locale = 'en') ⇒ FgcpClient

Returns a new instance of FgcpClient.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 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 =~ /\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 =~ /diesk/ # 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

Instance Method Details

#allocate_public_ip(vsys_id) ⇒ Object



285
286
287
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 285

def allocate_public_ip(vsys_id)
  request('AllocatePublicIP', {'vsysId' => vsys_id})
end

#attach_public_ip(vsys_id, public_ip) ⇒ Object



289
290
291
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 289

def attach_public_ip(vsys_id, public_ip)
  request('AttachPublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip})
end

#attach_vdisk(vserver_id, vdisk_id) ⇒ Object



257
258
259
# 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) ⇒ Object



269
270
271
# 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) ⇒ Object



196
197
198
199
200
201
202
203
# 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) ⇒ Object



249
250
251
# 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) ⇒ Object



109
110
111
112
113
114
115
116
# 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) ⇒ Object



118
119
120
121
122
123
124
125
126
127
# 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) ⇒ Object



301
302
303
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 301

def create_vsys(vsys_descriptor_id, vsys_name)
  request('CreateVSYS', {'vsysDescriptorId' => vsys_descriptor_id, 'vsysName' => vsys_name})
end

#destroy_efm(efm_id) ⇒ Object



205
206
207
# 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) ⇒ Object



253
254
255
# 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) ⇒ Object



273
274
275
# 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) ⇒ Object



129
130
131
# 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) ⇒ Object



305
306
307
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 305

def destroy_vsys(vsys_id)
  request('DestroyVSYS', {'vsysId' => vsys_id})
end

#detach_public_ip(vsys_id, public_ip) ⇒ Object



293
294
295
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 293

def detach_public_ip(vsys_id, public_ip)
  request('DetachPublicIP', {'vsysId' => vsys_id, 'publicIp' => public_ip})
end

#detach_vdisk(vserver_id, vdisk_id) ⇒ Object



261
262
263
# 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

#extract_vsys_id(id) ⇒ Object

extract vsysId from vserverId, efmId or networkId



319
320
321
322
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 319

def extract_vsys_id(id)
  /^(\w+-\w+)\b.*/ =~ id
  $1
end

#free_public_ip(vsys_id, public_ip) ⇒ Object



297
298
299
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 297

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) ⇒ Object



213
214
215
216
217
218
219
220
221
222
223
# 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) ⇒ Object



209
210
211
# 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) ⇒ Object



309
310
311
312
313
314
315
316
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 309

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) ⇒ Object



245
246
247
# 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_status(vdisk_id) ⇒ Object



241
242
243
# 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) ⇒ Object



141
142
143
# 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) ⇒ Object



145
146
147
# 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) ⇒ Object



137
138
139
# 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) ⇒ Object



133
134
135
# 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) ⇒ Object



85
86
87
# 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) ⇒ Object



89
90
91
# 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) ⇒ Object



149
150
151
152
153
154
155
# 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) ⇒ Object



184
185
186
# 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) ⇒ Object



277
278
279
280
281
282
283
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 277

def list_public_ips(vsys_id=nil)
  if vsys_id.nil?
    request('ListPublicIP')
  else
    request('ListPublicIP', {'vsysId' => vsys_id})
  end
end

#list_server_typesObject

API methods



76
77
78
79
# 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) ⇒ Object



237
238
239
# 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) ⇒ Object



265
266
267
# 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) ⇒ Object



97
98
99
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 97

def list_vservers(vsys_id)
  request('ListVServer', {'vsysId' => vsys_id})
end

#list_vsysObject



81
82
83
# File 'lib/deltacloud/drivers/fgcp/fgcp_client.rb', line 81

def list_vsys
  request('ListVSYS')
end

#list_vsys_descriptorObject



93
94
95
# 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) ⇒ Object



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# 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\"?>\n<Request>\n<vserverId>\#{vserver_id}</vserverId>\n<locales>\n  <locale>\n    <lcid>en</lcid>\n    <name>\#{name}</name>\n    <description>\#{description}</description>\n  </locale>\n  <locale>\n    <lcid>ja</lcid>\n    <name>\#{name}</name>\n    <description>\#{description}</description>\n  </locale>\n</locales>\n</Request>\n"
  request('RegisterPrivateDiskImage', nil, image_descriptor, 'diskImageXMLFilePath')
end

#start_efm(efm_id) ⇒ Object



188
189
190
# 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) ⇒ Object



101
102
103
# 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) ⇒ Object



192
193
194
# 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) ⇒ Object



105
106
107
# 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) ⇒ Object



180
181
182
# 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) ⇒ Object



225
226
227
228
229
230
231
232
233
234
235
# 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