Class: Inception::Providers::Clients::OpenStackProviderClient
- Inherits:
-
FogProviderClient
- Object
- FogProviderClient
- Inception::Providers::Clients::OpenStackProviderClient
- Defined in:
- lib/inception/providers/clients/openstack_provider_client.rb
Instance Attribute Summary
Attributes inherited from FogProviderClient
Instance Method Summary collapse
- #associate_ip_address_with_server(ip_address, server) ⇒ Object
-
#authorize_port_range(sg, port_range, protocol, ip_range) ⇒ Object
Hook method for FogProviderClient#create_security_group.
- #create_and_attach_volume(name, disk_size, server, device) ⇒ Object
- #find_server_device(server, device) ⇒ Object
- #fog_attributes(inception_server) ⇒ Object
- #image_id ⇒ Object
-
#ip_permissions(sg) ⇒ Object
Hook method for FogProviderClient#create_security_group.
- #openstack_constants ⇒ Object
-
#provision_public_ip_address(options = {}) ⇒ String
TODO nil if none available.
-
#setup_fog_connection ⇒ Object
Construct a Fog::Compute object Uses
attributes
which normally originates fromsettings.provider
.
Methods inherited from FogProviderClient
#bootstrap, #cleanup_unused_ip_addresses, #create_key_pair, #create_security_group, #delete_key_pair_if_exists, #delete_servers_with_name, #delete_volumes_with_name, #extract_port_definition, #find_unused_public_ip_address, #flavor_id, #initialize, #port_open?, #provision_or_reuse_public_ip_address, #set_resource_name
Constructor Details
This class inherits a constructor from Inception::Providers::Clients::FogProviderClient
Instance Method Details
#associate_ip_address_with_server(ip_address, server) ⇒ Object
17 18 19 20 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 17 def associate_ip_address_with_server(ip_address, server) address = fog_compute.addresses.find { |a| a.ip == ip_address } address.server = server end |
#authorize_port_range(sg, port_range, protocol, ip_range) ⇒ Object
Hook method for FogProviderClient#create_security_group
28 29 30 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 28 def (sg, port_range, protocol, ip_range) sg.create_security_group_rule(port_range.min, port_range.max, protocol, ip_range) end |
#create_and_attach_volume(name, disk_size, server, device) ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 37 def create_and_attach_volume(name, disk_size, server, device) volume = fog_compute.volumes.create(:name => name, :description => "", :size => disk_size, :availability_zone => server.availability_zone) volume.wait_for { volume.status == 'available' } volume.attach(server.id, device) volume.wait_for { volume.status == 'in-use' } end |
#find_server_device(server, device) ⇒ Object
32 33 34 35 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 32 def find_server_device(server, device) va = fog_compute.get_server_volumes(server.id).body['volumeAttachments'] va.find { |v| v["device"] == device } end |
#fog_attributes(inception_server) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 59 def fog_attributes(inception_server) # :name => "Inception VM", # :key_name => key_name, # :private_key_path => inception_vm_private_key_path, # :flavor_ref => inception_flavor.id, # :image_ref => inception_image.id, # :security_groups => [settings["inception"]["security_group"]], # :username => username { name: inception_server.server_name, key_name: inception_server.key_name, private_key_path: inception_server.private_key_path, image_ref: inception_server.image_id, flavor_ref: flavor_id(inception_server.flavor), security_groups: inception_server.security_groups, public_key: inception_server.public_key, public_ip_address: inception_server.ip_address, bits: 64, username: "ubuntu", } end |
#image_id ⇒ Object
47 48 49 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 47 def image_id raise "Not yet implemented" end |
#ip_permissions(sg) ⇒ Object
Hook method for FogProviderClient#create_security_group
23 24 25 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 23 def (sg) sg.rules end |
#openstack_constants ⇒ Object
81 82 83 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 81 def openstack_constants Inception::Providers::Constants::OpenStackConstants end |
#provision_public_ip_address(options = {}) ⇒ String
TODO nil if none available
11 12 13 14 15 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 11 def provision_public_ip_address(={}) address = fog_compute.addresses.create address.ip # TODO catch error and return nil end |
#setup_fog_connection ⇒ Object
Construct a Fog::Compute object Uses attributes
which normally originates from settings.provider
53 54 55 56 57 |
# File 'lib/inception/providers/clients/openstack_provider_client.rb', line 53 def setup_fog_connection configuration = Fog.symbolize_credentials(attributes.credentials) configuration[:provider] = "OpenStack" @fog_compute = Fog::Compute.new(configuration) end |