Class: Fog::Compute::Google::Real
- Inherits:
-
Object
- Object
- Fog::Compute::Google::Real
- Includes:
- Collections, Shared
- Defined in:
- lib/fog/google/compute.rb,
lib/fog/google/requests/compute/get_disk.rb,
lib/fog/google/requests/compute/get_zone.rb,
lib/fog/google/requests/compute/set_tags.rb,
lib/fog/google/requests/compute/get_image.rb,
lib/fog/google/requests/compute/get_route.rb,
lib/fog/google/requests/compute/get_region.rb,
lib/fog/google/requests/compute/get_server.rb,
lib/fog/google/requests/compute/list_disks.rb,
lib/fog/google/requests/compute/list_zones.rb,
lib/fog/google/requests/compute/attach_disk.rb,
lib/fog/google/requests/compute/delete_disk.rb,
lib/fog/google/requests/compute/detach_disk.rb,
lib/fog/google/requests/compute/get_address.rb,
lib/fog/google/requests/compute/get_network.rb,
lib/fog/google/requests/compute/get_project.rb,
lib/fog/google/requests/compute/insert_disk.rb,
lib/fog/google/requests/compute/list_images.rb,
lib/fog/google/requests/compute/list_routes.rb,
lib/fog/google/requests/compute/delete_image.rb,
lib/fog/google/requests/compute/delete_route.rb,
lib/fog/google/requests/compute/get_firewall.rb,
lib/fog/google/requests/compute/get_snapshot.rb,
lib/fog/google/requests/compute/insert_image.rb,
lib/fog/google/requests/compute/insert_route.rb,
lib/fog/google/requests/compute/list_regions.rb,
lib/fog/google/requests/compute/list_servers.rb,
lib/fog/google/requests/compute/reset_server.rb,
lib/fog/google/requests/compute/set_metadata.rb,
lib/fog/google/requests/compute/delete_server.rb,
lib/fog/google/requests/compute/insert_server.rb,
lib/fog/google/requests/compute/list_networks.rb,
lib/fog/google/requests/compute/delete_address.rb,
lib/fog/google/requests/compute/delete_network.rb,
lib/fog/google/requests/compute/insert_address.rb,
lib/fog/google/requests/compute/insert_network.rb,
lib/fog/google/requests/compute/list_addresses.rb,
lib/fog/google/requests/compute/list_firewalls.rb,
lib/fog/google/requests/compute/list_snapshots.rb,
lib/fog/google/requests/compute/delete_firewall.rb,
lib/fog/google/requests/compute/delete_snapshot.rb,
lib/fog/google/requests/compute/get_target_pool.rb,
lib/fog/google/requests/compute/insert_firewall.rb,
lib/fog/google/requests/compute/insert_snapshot.rb,
lib/fog/google/requests/compute/get_machine_type.rb,
lib/fog/google/requests/compute/list_target_pools.rb,
lib/fog/google/requests/compute/delete_target_pool.rb,
lib/fog/google/requests/compute/get_zone_operation.rb,
lib/fog/google/requests/compute/insert_target_pool.rb,
lib/fog/google/requests/compute/list_machine_types.rb,
lib/fog/google/requests/compute/get_forwarding_rule.rb,
lib/fog/google/requests/compute/get_global_operation.rb,
lib/fog/google/requests/compute/get_region_operation.rb,
lib/fog/google/requests/compute/list_zone_operations.rb,
lib/fog/google/requests/compute/delete_zone_operation.rb,
lib/fog/google/requests/compute/get_http_health_check.rb,
lib/fog/google/requests/compute/list_aggregated_disks.rb,
lib/fog/google/requests/compute/list_forwarding_rules.rb,
lib/fog/google/requests/compute/set_server_scheduling.rb,
lib/fog/google/requests/compute/delete_forwarding_rule.rb,
lib/fog/google/requests/compute/get_target_pool_health.rb,
lib/fog/google/requests/compute/insert_forwarding_rule.rb,
lib/fog/google/requests/compute/list_global_operations.rb,
lib/fog/google/requests/compute/list_region_operations.rb,
lib/fog/google/requests/compute/delete_global_operation.rb,
lib/fog/google/requests/compute/delete_region_operation.rb,
lib/fog/google/requests/compute/list_aggregated_servers.rb,
lib/fog/google/requests/compute/list_http_health_checks.rb,
lib/fog/google/requests/compute/add_server_access_config.rb,
lib/fog/google/requests/compute/delete_http_health_check.rb,
lib/fog/google/requests/compute/insert_http_health_check.rb,
lib/fog/google/requests/compute/add_target_pool_instances.rb,
lib/fog/google/requests/compute/list_aggregated_addresses.rb,
lib/fog/google/requests/compute/set_forwarding_rule_target.rb,
lib/fog/google/requests/compute/delete_server_access_config.rb,
lib/fog/google/requests/compute/remove_target_pool_instance.rb,
lib/fog/google/requests/compute/set_server_disk_auto_delete.rb,
lib/fog/google/requests/compute/remove_target_pool_instances.rb,
lib/fog/google/requests/compute/set_common_instance_metadata.rb,
lib/fog/google/requests/compute/add_target_pool_health_checks.rb,
lib/fog/google/requests/compute/get_server_serial_port_output.rb,
lib/fog/google/requests/compute/list_aggregated_machine_types.rb,
lib/fog/google/requests/compute/remove_target_pool_health_checks.rb
Instance Attribute Summary collapse
-
#api_url ⇒ Object
readonly
Returns the value of attribute api_url.
-
#client ⇒ Object
Returns the value of attribute client.
-
#compute ⇒ Object
readonly
Returns the value of attribute compute.
Attributes included from Shared
Instance Method Summary collapse
- #add_server_access_config(identity, zone, nic, options = {}) ⇒ Object
- #add_target_pool_health_checks(target_pool, health_checks) ⇒ Object
- #add_target_pool_instances(target_pool, instances) ⇒ Object
- #attach_disk(instance, zone, source, options = {}) ⇒ Object
-
#build_response(result) ⇒ Object
result = Google::APIClient::Result returns Excon::Response.
- #build_result(api_method, parameters, body_object = nil) ⇒ Object
- #delete_address(address_name, region_name) ⇒ Object
- #delete_disk(disk_name, zone_name) ⇒ Object
- #delete_firewall(firewall_name) ⇒ Object
- #delete_forwarding_rule(forwarding_rule_name, region_name) ⇒ Object
- #delete_global_operation(operation) ⇒ Object
- #delete_http_health_check(name) ⇒ Object
- #delete_image(image_name) ⇒ Object
- #delete_network(network_name) ⇒ Object
- #delete_region_operation(region_name, operation) ⇒ Object
- #delete_route(identity) ⇒ Object
- #delete_server(server_name, zone_name = nil) ⇒ Object
- #delete_server_access_config(identity, zone, nic, options = {}) ⇒ Object
- #delete_snapshot(snapshot_name) ⇒ Object
- #delete_target_pool(target_pool_name, region_name) ⇒ Object
- #delete_zone_operation(zone_name, operation) ⇒ Object
- #detach_disk(instance, zone, deviceName) ⇒ Object
- #format_metadata(metadata) ⇒ Object
- #get_address(address_name, region_name) ⇒ Object
- #get_disk(disk_name, zone_name) ⇒ Object
- #get_firewall(firewall_name) ⇒ Object
- #get_forwarding_rule(forwarding_rule_name, region_name) ⇒ Object
- #get_global_operation(operation) ⇒ Object
- #get_http_health_check(name) ⇒ Object
- #get_image(image_name, project = @project) ⇒ Object
- #get_machine_type(machine_type_name, zone_name = nil) ⇒ Object
- #get_network(network_name) ⇒ Object
- #get_project(identity) ⇒ Object
- #get_region(identity) ⇒ Object
- #get_region_operation(region_name, operation) ⇒ Object
- #get_route(identity) ⇒ Object
- #get_server(server_name, zone_name) ⇒ Object
- #get_server_serial_port_output(identity, zone) ⇒ Object
- #get_snapshot(snap_name, project = @project) ⇒ Object
- #get_target_pool(target_pool_name, region_name) ⇒ Object
- #get_target_pool_health(target_pool) ⇒ Object
- #get_zone(zone_name) ⇒ Object
- #get_zone_operation(zone_name, operation) ⇒ Object
- #handle_disks(options) ⇒ Object
-
#initialize(options) ⇒ Real
constructor
A new instance of Real.
- #insert_address(address_name, region_name, options = {}) ⇒ Object
- #insert_disk(disk_name, zone_name, image_name = nil, opts = {}) ⇒ Object
- #insert_firewall(firewall_name, allowed, network = @default_network, options = {}) ⇒ Object
- #insert_forwarding_rule(forwarding_rule_name, region_name, opts = {}) ⇒ Object
- #insert_http_health_check(name, opts = {}) ⇒ Object
- #insert_image(image_name, options = {}) ⇒ Object
- #insert_network(network_name, ip_range, options = {}) ⇒ Object
- #insert_route(name, network, dest_range, priority, options = {}) ⇒ Object
- #insert_server(server_name, zone_name, options = {}, *deprecated_args) ⇒ Object
- #insert_snapshot(disk_name, zone_name, project = @project, opts = {}) ⇒ Object
- #insert_target_pool(target_pool_name, region_name, opts = {}) ⇒ Object
- #list_addresses(region_name) ⇒ Object
- #list_aggregated_addresses(options = {}) ⇒ Object
- #list_aggregated_disks(options = {}) ⇒ Object
- #list_aggregated_machine_types ⇒ Object
- #list_aggregated_servers(options = {}) ⇒ Object
- #list_disks(zone_name) ⇒ Object
- #list_firewalls ⇒ Object
- #list_forwarding_rules(region_name) ⇒ Object
- #list_global_operations ⇒ Object
- #list_http_health_checks ⇒ Object
- #list_images(project = nil) ⇒ Object
- #list_machine_types(zone_name) ⇒ Object
- #list_networks ⇒ Object
- #list_region_operations(region) ⇒ Object
- #list_regions ⇒ Object
- #list_routes ⇒ Object
- #list_servers(zone_name) ⇒ Object
- #list_snapshots(project = nil) ⇒ Object
- #list_target_pools(region_name) ⇒ Object
- #list_zone_operations(zone) ⇒ Object
- #list_zones ⇒ Object
-
#new_pk12_google_client(google_client_email, google_key, app_name = nil, app_version = nil) ⇒ Object
Public: Create a Google::APIClient with a pkcs12 key and a user email.
- #remove_target_pool_health_checks(target_pool, health_checks) ⇒ Object
- #remove_target_pool_instances(target_pool, instances) ⇒ Object
- #reset_server(identity, zone) ⇒ Object
- #set_common_instance_metadata(identity, current_fingerprint, metadata = {}) ⇒ Object
- #set_forwarding_rule_target(rule, target) ⇒ Object
-
#set_metadata(instance, zone, fingerprint, metadata = {}) ⇒ Object
Set an instance metadata.
- #set_server_disk_auto_delete(identity, zone, auto_delete, device_name) ⇒ Object
- #set_server_scheduling(identity, zone, on_host_maintenance, automatic_restart) ⇒ Object
- #set_tags(instance, zone, fingerprint, tags = []) ⇒ Object
Methods included from Shared
#backoff_if_unfound, #build_excon_response, #find_zone, #shared_initialize
Constructor Details
#initialize(options) ⇒ Real
Returns a new instance of Real.
918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 |
# File 'lib/fog/google/compute.rb', line 918 def initialize() # NOTE: loaded here to avoid requiring this as a core Fog dependency begin require 'google/api_client' rescue LoadError => error Fog::Logger.warning("Please install the google-api-client gem before using this provider.") raise error end shared_initialize() if ![:google_client].nil? @client = [:google_client] end if @client.nil? if ![:google_key_location].nil? google_key = File.([:google_key_location]) elsif ![:google_key_string].nil? google_key = [:google_key_string] end if ![:google_client_email].nil? and !google_key.nil? @client = self.new_pk12_google_client( [:google_client_email], google_key, [:app_name], [:app_verion]) else Fog::Logger.debug("Fog::Compute::Google.client has not been initialized nor are the :google_client_email and :google_key_location or :google_key_string options set, so we can not create one for you.") raise ArgumentError.new("No Google API Client has been initialized.") end end # We want to always mention we're using Fog. if @client.user_agent.nil? or @client.user_agent.empty? @client.user_agent = "" elsif !@client.user_agent.include? "fog" @client.user_agent += "fog/#{Fog::VERSION}" end @compute = @client.discovered_api('compute', api_version) end |
Instance Attribute Details
#api_url ⇒ Object (readonly)
Returns the value of attribute api_url.
916 917 918 |
# File 'lib/fog/google/compute.rb', line 916 def api_url @api_url end |
#client ⇒ Object
Returns the value of attribute client.
915 916 917 |
# File 'lib/fog/google/compute.rb', line 915 def client @client end |
#compute ⇒ Object (readonly)
Returns the value of attribute compute.
916 917 918 |
# File 'lib/fog/google/compute.rb', line 916 def compute @compute end |
Instance Method Details
#add_server_access_config(identity, zone, nic, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/fog/google/requests/compute/add_server_access_config.rb', line 11 def add_server_access_config(identity, zone, nic, = {}) api_method = @compute.instances.add_access_config parameters = { 'project' => @project, 'instance' => identity, 'zone' => zone.split('/')[-1], 'networkInterface' => nic, } body_object = { 'type' => 'ONE_TO_ONE_NAT', } body_object['name'] = [:name] ? [:name] : 'External NAT' body_object['natIP'] = [:address] if [:address] result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#add_target_pool_health_checks(target_pool, health_checks) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/google/requests/compute/add_target_pool_health_checks.rb', line 11 def add_target_pool_health_checks(target_pool, health_checks) api_method = @compute.target_pools.add_health_check parameters = { 'project' => @project, 'targetPool' => target_pool.name, 'region' => target_pool.region.split('/')[-1] } body = { 'healthChecks' => health_checks.map { |i| { 'healthCheck' => i } } } result = self.build_result(api_method, parameters, body_object=body) self.build_response(result) end |
#add_target_pool_instances(target_pool, instances) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/google/requests/compute/add_target_pool_instances.rb', line 11 def add_target_pool_instances(target_pool, instances) api_method = @compute.target_pools.add_instance parameters = { 'project' => @project, 'targetPool' => target_pool.name, 'region' => target_pool.region.split('/')[-1] } body = { 'instances' => instances.map { |i| { 'instance' => i } } } result = self.build_result(api_method, parameters, body_object=body) self.build_response(result) end |
#attach_disk(instance, zone, source, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/fog/google/requests/compute/attach_disk.rb', line 11 def attach_disk(instance, zone, source, = {}) api_method = @compute.instances.attach_disk parameters = { 'project' => @project, 'instance' => instance, 'zone' => zone.split('/')[-1], } writable = .delete(:writable) body_object = { 'type' => 'PERSISTENT', 'source' => source, 'mode' => writable ? 'READ_WRITE' : 'READ_ONLY', 'deviceName' => .delete(:deviceName), 'boot' => .delete(:boot), 'autoDelete' => .delete(:autoDelete), } result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#build_response(result) ⇒ Object
result = Google::APIClient::Result returns Excon::Response
1022 1023 1024 |
# File 'lib/fog/google/compute.rb', line 1022 def build_response(result) build_excon_response(result.body.nil? || result.body.empty? ? nil : Fog::JSON.decode(result.body), result.status) end |
#build_result(api_method, parameters, body_object = nil) ⇒ Object
1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 |
# File 'lib/fog/google/compute.rb', line 1005 def build_result(api_method, parameters, body_object=nil) if body_object result = @client.execute( :api_method => api_method, :parameters => parameters, :body_object => body_object ) else result = @client.execute( :api_method => api_method, :parameters => parameters ) end end |
#delete_address(address_name, region_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/fog/google/requests/compute/delete_address.rb', line 11 def delete_address(address_name, region_name) api_method = @compute.addresses.delete parameters = { 'project' => @project, 'address' => address_name, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_disk(disk_name, zone_name) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/fog/google/requests/compute/delete_disk.rb', line 31 def delete_disk(disk_name, zone_name) if zone_name.start_with? 'http' zone_name = zone_name.split('/')[-1] end api_method = @compute.disks.delete parameters = { 'project' => @project, 'disk' => disk_name, 'zone' => zone_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_firewall(firewall_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/delete_firewall.rb', line 11 def delete_firewall(firewall_name) api_method = @compute.firewalls.delete parameters = { 'project' => @project, 'firewall' => firewall_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_forwarding_rule(forwarding_rule_name, region_name) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/fog/google/requests/compute/delete_forwarding_rule.rb', line 13 def delete_forwarding_rule(forwarding_rule_name, region_name) if region_name.start_with? 'http' region_name = region_name.split('/')[-1] end api_method = @compute.forwarding_rules.delete parameters = { 'project' => @project, 'forwardingRule' => forwarding_rule_name, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_global_operation(operation) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/google/requests/compute/delete_global_operation.rb', line 13 def delete_global_operation(operation) api_method = @compute.global_operations.delete parameters = { 'project' => @project, 'operation' => operation } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_http_health_check(name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/delete_http_health_check.rb', line 11 def delete_http_health_check(name) api_method = @compute.http_health_checks.delete parameters = { 'project' => @project, 'httpHealthCheck' => name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_image(image_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/delete_image.rb', line 11 def delete_image(image_name) api_method = @compute.images.delete parameters = { 'project' => @project, 'image' => image_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_network(network_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/delete_network.rb', line 11 def delete_network(network_name) api_method = @compute.networks.delete parameters = { 'project' => @project, 'network' => network_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_region_operation(region_name, operation) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/google/requests/compute/delete_region_operation.rb', line 13 def delete_region_operation(region_name, operation) if region_name.start_with? 'http' region_name = region_name.split('/')[-1] end api_method = @compute.region_operations.delete parameters = { 'project' => @project, 'region' => region_name, 'operation' => operation } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_route(identity) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/delete_route.rb', line 11 def delete_route(identity) api_method = @compute.routes.delete parameters = { 'project' => @project, 'route' => identity, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_server(server_name, zone_name = nil) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/fog/google/requests/compute/delete_server.rb', line 55 def delete_server(server_name, zone_name=nil) zone_name = find_zone(zone_name) api_method = @compute.instances.delete parameters = { 'project' => @project, 'zone' => zone_name, 'instance' => server_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_server_access_config(identity, zone, nic, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/google/requests/compute/delete_server_access_config.rb', line 11 def delete_server_access_config(identity, zone, nic, = {}) api_method = @compute.instances.delete_access_config parameters = { 'project' => @project, 'instance' => identity, 'zone' => zone.split('/')[-1], 'networkInterface' => nic, 'accessConfig' => [:access_config].nil? ? 'External NAT' : [:access_config], } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_snapshot(snapshot_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/delete_snapshot.rb', line 11 def delete_snapshot(snapshot_name) api_method = @compute.snapshots.delete parameters = { 'project' => @project, 'snapshot' => snapshot_name, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_target_pool(target_pool_name, region_name) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/fog/google/requests/compute/delete_target_pool.rb', line 13 def delete_target_pool(target_pool_name, region_name) if region_name.start_with? 'http' region_name = region_name.split('/')[-1] end api_method = @compute.target_pools.delete parameters = { 'project' => @project, 'targetPool' => target_pool_name, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#delete_zone_operation(zone_name, operation) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/google/requests/compute/delete_zone_operation.rb', line 13 def delete_zone_operation(zone_name, operation) if zone_name.start_with? 'http' zone_name = zone_name.split('/')[-1] end api_method = @compute.zone_operations.delete parameters = { 'project' => @project, 'zone' => zone_name, 'operation' => operation } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#detach_disk(instance, zone, deviceName) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/google/requests/compute/detach_disk.rb', line 11 def detach_disk(instance, zone, deviceName) api_method = @compute.instances.detach_disk parameters = { 'project' => @project, 'instance' => instance, 'zone' => zone.split('/')[-1], 'deviceName' => deviceName } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#format_metadata(metadata) ⇒ Object
113 114 115 |
# File 'lib/fog/google/requests/compute/insert_server.rb', line 113 def () { "items" => .map {|k,v| {"key" => k, "value" => v}} } end |
#get_address(address_name, region_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/fog/google/requests/compute/get_address.rb', line 11 def get_address(address_name, region_name) api_method = @compute.addresses.get parameters = { 'project' => @project, 'address' => address_name, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_disk(disk_name, zone_name) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/fog/google/requests/compute/get_disk.rb', line 35 def get_disk(disk_name, zone_name) if zone_name.start_with? 'http' zone_name = zone_name.split('/')[-1] end api_method = @compute.disks.get parameters = { 'project' => @project, 'disk' => disk_name, 'zone' => zone_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_firewall(firewall_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/get_firewall.rb', line 11 def get_firewall(firewall_name) api_method = @compute.firewalls.get parameters = { 'project' => @project, 'firewall' => firewall_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_forwarding_rule(forwarding_rule_name, region_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/google/requests/compute/get_forwarding_rule.rb', line 11 def get_forwarding_rule(forwarding_rule_name, region_name) if region_name.start_with? 'http' region_name = region_name.split('/')[-1] end api_method = @compute.forwarding_rules.get parameters = { 'project' => @project, 'forwardingRule' => forwarding_rule_name, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_global_operation(operation) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/google/requests/compute/get_global_operation.rb', line 13 def get_global_operation(operation) api_method = @compute.global_operations.get parameters = { 'project' => @project, 'operation' => operation } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_http_health_check(name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/get_http_health_check.rb', line 11 def get_http_health_check(name) api_method = @compute.http_health_checks.get parameters = { 'project' => @project, 'httpHealthCheck' => name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_image(image_name, project = @project) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/fog/google/requests/compute/get_image.rb', line 24 def get_image(image_name, project=@project) api_method = @compute.images.get parameters = { 'image' => image_name, 'project' => project, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_machine_type(machine_type_name, zone_name = nil) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/google/requests/compute/get_machine_type.rb', line 26 def get_machine_type(machine_type_name, zone_name = nil) zone_name = list_zones.body['items'].first['name'] if zone_name.nil? if zone_name.start_with? 'http' zone_name = zone_name.split('/')[-1] end api_method = @compute.machine_types.get parameters = { 'zone' => zone_name, 'project' => 'google', 'machineType' => machine_type_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_network(network_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/get_network.rb', line 11 def get_network(network_name) api_method = @compute.networks.get parameters = { 'project' => @project, 'network' => network_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_project(identity) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/fog/google/requests/compute/get_project.rb', line 11 def get_project(identity) api_method = @compute.projects.get parameters = { :project => identity, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_region(identity) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/google/requests/compute/get_region.rb', line 15 def get_region(identity) api_method = @compute.regions.get parameters = { 'project' => @project, 'region' => identity.split('/')[-1], } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_region_operation(region_name, operation) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/fog/google/requests/compute/get_region_operation.rb', line 13 def get_region_operation(region_name, operation) if region_name.start_with? 'http' region_name = region_name.split('/')[-1] end api_method = @compute.region_operations.get parameters = { 'project' => @project, 'region' => region_name, 'operation' => operation } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_route(identity) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/get_route.rb', line 11 def get_route(identity) api_method = @compute.routes.get parameters = { 'project' => @project, 'route' => identity, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_server(server_name, zone_name) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/fog/google/requests/compute/get_server.rb', line 56 def get_server(server_name, zone_name) if zone_name.is_a? Excon::Response zone = zone_name.body["name"] else zone = zone_name end api_method = @compute.instances.get parameters = { 'project' => @project, 'zone' => zone, 'instance' => server_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_server_serial_port_output(identity, zone) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/fog/google/requests/compute/get_server_serial_port_output.rb', line 11 def get_server_serial_port_output(identity, zone) api_method = @compute.instances.get_serial_port_output parameters = { 'project' => @project, 'instance' => identity, 'zone' => zone.split('/')[-1], } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_snapshot(snap_name, project = @project) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/google/requests/compute/get_snapshot.rb', line 11 def get_snapshot(snap_name, project=@project) if snap_name.nil? raise ArgumentError.new "snap_name must not be nil." end api_method = @compute.snapshots.get parameters = { 'snapshot' => snap_name, 'project' => project, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_target_pool(target_pool_name, region_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/google/requests/compute/get_target_pool.rb', line 11 def get_target_pool(target_pool_name, region_name) if region_name.start_with? 'http' region_name = region_name.split('/')[-1] end api_method = @compute.target_pools.get parameters = { 'project' => @project, 'targetPool' => target_pool_name, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_target_pool_health(target_pool) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/google/requests/compute/get_target_pool_health.rb', line 11 def get_target_pool_health(target_pool) api_method = @compute.target_pools.get_health parameters = { 'project' => @project, 'targetPool' => target_pool.name, 'region' => target_pool.region.split('/')[-1] } health_results = target_pool.instances.map do |instance| body = { 'instance' => instance } resp = build_response(build_result(api_method, parameters, body_object=body)) [instance, resp.data[:body]['healthStatus']] end Hash[health_results] end |
#get_zone(zone_name) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/fog/google/requests/compute/get_zone.rb', line 24 def get_zone(zone_name) api_method = @compute.zones.get parameters = { 'project' => @project, 'zone' => zone_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#get_zone_operation(zone_name, operation) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/fog/google/requests/compute/get_zone_operation.rb', line 38 def get_zone_operation(zone_name, operation) if zone_name.start_with? 'http' zone_name = zone_name.split('/')[-1] end api_method = @compute.zone_operations.get parameters = { 'project' => @project, 'zone' => zone_name, 'operation' => operation } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#handle_disks(options) ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/fog/google/requests/compute/insert_server.rb', line 98 def handle_disks() disks = [] # An array of persistent disks. You must supply a boot disk as the first disk in # this array and mark it as a boot disk using the disks[].boot property. .delete('disks').each do |disk| if disk.is_a? Disk disks << disk.get_object else disks << disk end end disks.first['boot'] = true disks end |
#insert_address(address_name, region_name, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/google/requests/compute/insert_address.rb', line 11 def insert_address(address_name, region_name, = {}) api_method = @compute.addresses.insert parameters = { 'project' => @project, 'region' => region_name, } body_object = { 'name' => address_name } body_object['description'] = [:description] if [:description] result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#insert_disk(disk_name, zone_name, image_name = nil, opts = {}) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/fog/google/requests/compute/insert_disk.rb', line 63 def insert_disk(disk_name, zone_name, image_name=nil, opts={}) api_method = @compute.disks.insert parameters = { 'project' => @project, 'zone' => zone_name } if image_name # New disk from image image = images.get(image_name) raise ArgumentError.new("Invalid image specified: #{image_name}") unless image @image_url = @api_url + image.resource_url parameters['sourceImage'] = @image_url end body_object = { 'name' => disk_name } # According to Google docs, if image name is not present, only one of # sizeGb or sourceSnapshot need to be present, one will create blank # disk of desired size, other will create disk from snapshot if image_name.nil? if opts.key?('sourceSnapshot') # New disk from snapshot snap = snapshots.get(opts.delete('sourceSnapshot')) raise ArgumentError.new('Invalid source snapshot') unless snap body_object['sourceSnapshot'] = @api_url + snap.resource_url elsif opts.key?('sizeGb') # New blank disk body_object['sizeGb'] = opts.delete('sizeGb') else raise ArgumentError.new('Must specify image OR snapshot OR '\ 'disk size when creating a disk.') end end # Merge in any remaining options (only 'description' should remain) body_object.merge!(opts) result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#insert_firewall(firewall_name, allowed, network = @default_network, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/google/requests/compute/insert_firewall.rb', line 11 def insert_firewall(firewall_name, allowed, network = @default_network, = {}) unless network.start_with? 'http' network = "#{@api_url}#{@project}/global/networks/#{network}" end api_method = @compute.firewalls.insert parameters = { 'project' => @project, } body_object = { "name" => firewall_name, "network" => network, "allowed" => allowed, } unless [:description].nil? body_object["description"] = [:description] end unless [:source_ranges].nil? || [:source_ranges].empty? body_object["sourceRanges"] = [:source_ranges] end unless [:source_tags].nil? || [:source_tags].empty? body_object["sourceTags"] = [:source_tags] end unless [:target_tags].nil? || [:target_tags].empty? body_object["targetTags"] = [:target_tags] end result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#insert_forwarding_rule(forwarding_rule_name, region_name, opts = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/google/requests/compute/insert_forwarding_rule.rb', line 11 def insert_forwarding_rule(forwarding_rule_name, region_name, opts = {}) api_method = @compute.forwarding_rules.insert parameters = { 'project' => @project, 'region' => region_name } body_object = { 'name' => forwarding_rule_name } body_object.merge!(opts) result = self.build_result(api_method, parameters, body_object=body_object) response = self.build_response(result) end |
#insert_http_health_check(name, opts = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/google/requests/compute/insert_http_health_check.rb', line 11 def insert_http_health_check(name, opts={}) api_method = @compute.http_health_checks.insert parameters = { 'project' => @project } body_object = { 'name' => name } body_object.merge!(opts) result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#insert_image(image_name, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/fog/google/requests/compute/insert_image.rb', line 11 def insert_image(image_name, ={}) api_method = @compute.images.insert parameters = { 'project' => @project, } body_object = { 'sourceType' => 'RAW', 'name' => image_name, 'rawDisk' => { 'source' => .delete('rawDisk') } } # Merge in the remaining params (only 'description' should remain) body_object.merge!() result = self.build_result(api_method, parameters, body_object=body_object) response = self.build_response(result) end |
#insert_network(network_name, ip_range, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/google/requests/compute/insert_network.rb', line 11 def insert_network(network_name, ip_range, = {}) api_method = @compute.networks.insert parameters = { 'project' => @project, } body_object = { 'name' => network_name, 'IPv4Range' => ip_range } body_object['description'] = [:description] if [:description] body_object['gatewayIPv4'] = [:gateway_ipv4] if [:gateway_ipv4] result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#insert_route(name, network, dest_range, priority, options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/fog/google/requests/compute/insert_route.rb', line 11 def insert_route(name, network, dest_range, priority, = {}) api_method = @compute.routes.insert parameters = { 'project' => @project, } body_object = { 'name' => name, 'network' => network, 'destRange' => dest_range, 'priority' => priority, } body_object['description'] = [:description] if [:description] unless [:tags].nil? || [:tags].empty? body_object['tags'] = [:tags] end body_object['nextHopInstance'] = [:next_hop_instance] if [:next_hop_instance] body_object['nextHopGateway'] = [:next_hop_gateway] if [:next_hop_gateway] body_object['nextHopIp'] = [:next_hop_ip] if [:next_hop_ip] result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#insert_server(server_name, zone_name, options = {}, *deprecated_args) ⇒ Object
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/fog/google/requests/compute/insert_server.rb', line 117 def insert_server(server_name, zone_name, ={}, *deprecated_args) if deprecated_args.length > 0 or not .is_a? Hash raise ArgumentError.new 'Too many parameters specified. This may be the cause of code written for an outdated'\ ' version of fog. Usage: server_name, zone_name, [options]' end api_method = @compute.instances.insert parameters = { 'project' => @project, 'zone' => zone_name, } body_object = {:name => server_name} body_object['machineType'] = @api_url + @project + "/zones/#{zone_name}/machineTypes/#{.delete 'machineType'}" network = nil if .key? 'network' network = .delete 'network' elsif @default_network network = @default_network end # ExternalIP is default value for server creation access_config = {'type' => 'ONE_TO_ONE_NAT', 'name' => 'External NAT'} # leave natIP undefined to use an IP from a shared ephemeral IP address pool if .key? 'externalIp' access_config['natIP'] = .delete 'externalIp' # If set to 'false', that would mean user does no want to allocate an external IP access_config = nil if access_config['natIP'] == false end networkInterfaces = [] if ! network.nil? networkInterface = { 'network' => @api_url + @project + "/global/networks/#{network}" } networkInterface['accessConfigs'] = [access_config] if access_config networkInterfaces << networkInterface end scheduling = { 'automaticRestart' => false, 'onHostMaintenance' => "MIGRATE" } if .key? 'auto_restart' scheduling['automaticRestart'] = .delete 'auto_restart' scheduling['automaticRestart'] = scheduling['automaticRestart'].class == TrueClass end if .key? 'on_host_maintenance' ohm = .delete 'on_host_maintenance' scheduling['onHostMaintenance'] = (ohm.respond_to?("upcase") && ohm.upcase == "MIGRATE" && "MIGRATE") || "TERMINATE" end body_object['scheduling'] = scheduling # @see https://developers.google.com/compute/docs/networking#canipforward if .key? 'can_ip_forward' body_object['canIpForward'] = .delete 'can_ip_forward' end # TODO: add other networks body_object['networkInterfaces'] = networkInterfaces if ['disks'].nil? or ['disks'].empty? raise ArgumentError.new "Empty value for field 'disks'. Boot disk must be specified" end body_object['disks'] = handle_disks() ['metadata'] = ['metadata'] if ['metadata'] body_object['tags'] = { 'items' => .delete('tags') } if ['tags'] body_object.merge!() # Adds in all remaining options that weren't explicitly handled. result = self.build_result(api_method, parameters, body_object=body_object) response = self.build_response(result) end |
#insert_snapshot(disk_name, zone_name, project = @project, opts = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/fog/google/requests/compute/insert_snapshot.rb', line 11 def insert_snapshot(disk_name, zone_name, project=@project, opts={}) # This is unfortunate, since we might be called from 2 contexts # 1. disk.snapshot <-- here validation of disk_name is not needed # 2. snapshot.create <-- here we must validate the disk_name # # Validation would involve 'get'ing the disk by that name. This is # redundant (and expensive) for case (1) which is likely the common # codepath. So we won't do it. api_method = @compute.disks.create_snapshot parameters = { 'disk' => disk_name, 'zone' => zone_name, 'project' => @project, } snap_name = opts.delete('name') raise ArgumentError.new('Must specify snapshot name') unless snap_name body_object = { 'name' => snap_name } # Merge in any remaining options (description) body_object.merge!(opts) result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#insert_target_pool(target_pool_name, region_name, opts = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/google/requests/compute/insert_target_pool.rb', line 11 def insert_target_pool(target_pool_name, region_name, opts = {}) api_method = @compute.target_pools.insert parameters = { 'project' => @project, 'region' => region_name } body_object = { 'name' => target_pool_name } body_object.merge!(opts) result = self.build_result(api_method, parameters, body_object=body_object) response = self.build_response(result) end |
#list_addresses(region_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/list_addresses.rb', line 11 def list_addresses(region_name) api_method = @compute.addresses.list parameters = { 'project' => @project, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_aggregated_addresses(options = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/list_aggregated_addresses.rb', line 11 def list_aggregated_addresses( = {}) api_method = @compute.addresses.aggregated_list parameters = { 'project' => @project, } parameters['filter'] = [:filter] if [:filter] result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_aggregated_disks(options = {}) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/fog/google/requests/compute/list_aggregated_disks.rb', line 28 def list_aggregated_disks( = {}) api_method = @compute.disks.aggregated_list parameters = { 'project' => @project, } parameters['filter'] = [:filter] if [:filter] result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_aggregated_machine_types ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/fog/google/requests/compute/list_aggregated_machine_types.rb', line 11 def list_aggregated_machine_types api_method = @compute.machine_types.aggregated_list parameters = { 'project' => @project, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_aggregated_servers(options = {}) ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'lib/fog/google/requests/compute/list_aggregated_servers.rb', line 28 def list_aggregated_servers( = {}) api_method = @compute.instances.aggregated_list parameters = { 'project' => @project, } parameters['filter'] = [:filter] if [:filter] result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_disks(zone_name) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/google/requests/compute/list_disks.rb', line 17 def list_disks(zone_name) api_method = @compute.disks.list parameters = { 'project' => @project, 'zone' => zone_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_firewalls ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/fog/google/requests/compute/list_firewalls.rb', line 11 def list_firewalls api_method = @compute.firewalls.list parameters = { 'project' => @project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_forwarding_rules(region_name) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/google/requests/compute/list_forwarding_rules.rb', line 17 def list_forwarding_rules(region_name) api_method = @compute.forwarding_rules.list parameters = { 'project' => @project, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_global_operations ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/fog/google/requests/compute/list_global_operations.rb', line 13 def list_global_operations api_method = @compute.global_operations.list parameters = { 'project' => @project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_http_health_checks ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/fog/google/requests/compute/list_http_health_checks.rb', line 11 def list_http_health_checks api_method = @compute.http_health_checks.list parameters = { 'project' => @project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_images(project = nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/google/requests/compute/list_images.rb', line 17 def list_images(project=nil) api_method = @compute.images.list project=@project if project.nil? parameters = { 'project' => project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_machine_types(zone_name) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/fog/google/requests/compute/list_machine_types.rb', line 18 def list_machine_types(zone_name) api_method = @compute.machine_types.list parameters = { 'project' => @project, 'zone' => zone_name, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_networks ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/fog/google/requests/compute/list_networks.rb', line 11 def list_networks api_method = @compute.networks.list parameters = { 'project' => @project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_region_operations(region) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/google/requests/compute/list_region_operations.rb', line 13 def list_region_operations(region) api_method = @compute.region_operations.list parameters = { 'region' => region, 'project' => @project, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_regions ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File 'lib/fog/google/requests/compute/list_regions.rb', line 74 def list_regions api_method = @compute.regions.list parameters = { 'project' => @project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_routes ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/fog/google/requests/compute/list_routes.rb', line 11 def list_routes api_method = @compute.routes.list parameters = { 'project' => @project, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_servers(zone_name) ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/fog/google/requests/compute/list_servers.rb', line 19 def list_servers(zone_name) api_method = @compute.instances.list parameters = { 'project' => @project, 'zone' => zone_name, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_snapshots(project = nil) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/list_snapshots.rb', line 11 def list_snapshots(project=nil) api_method = @compute.snapshots.list project=@project if project.nil? parameters = { 'project' => project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_target_pools(region_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fog/google/requests/compute/list_target_pools.rb', line 11 def list_target_pools(region_name) api_method = @compute.target_pools.list parameters = { 'project' => @project, 'region' => region_name } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_zone_operations(zone) ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fog/google/requests/compute/list_zone_operations.rb', line 13 def list_zone_operations(zone) api_method = @compute.zone_operations.list parameters = { 'zone' => zone, 'project' => @project, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#list_zones ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/google/requests/compute/list_zones.rb', line 17 def list_zones api_method = @compute.zones.list parameters = { 'project' => @project } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#new_pk12_google_client(google_client_email, google_key, app_name = nil, app_version = nil) ⇒ Object
Public: Create a Google::APIClient with a pkcs12 key and a user email.
google_client_email - an @developer.gserviceaccount.com email address to use. google_key - an absolute location to a pkcs12 key file or the content of the file itself. app_name - an optional string to set as the app name in the user agent. app_version - an optional string to set as the app version in the user agent.
Returns a new Google::APIClient
969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 |
# File 'lib/fog/google/compute.rb', line 969 def new_pk12_google_client(google_client_email, google_key, app_name=nil, app_version=nil) # The devstorage scope is needed to be able to insert images # devstorage.read_only scope is not sufficient like you'd hope api_scope_url = 'https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/devstorage.read_write' user_agent = "" if app_name user_agent = "#{app_name}/#{app_version || '0.0.0'} " end user_agent += "fog/#{Fog::VERSION}" = { # https://github.com/google/google-api-ruby-client/blob/master/lib/google/api_client.rb#L98 :application_name => "suppress warning", # https://github.com/google/google-api-ruby-client/blob/master/lib/google/api_client.rb#L100 :user_agent => user_agent } local_client = ::Google::APIClient.new() key = ::Google::APIClient::KeyUtils.load_from_pkcs12(google_key, 'notasecret') local_client. = Signet::OAuth2::Client.new({ :audience => 'https://accounts.google.com/o/oauth2/token', :auth_provider_x509_cert_url => "https://www.googleapis.com/oauth2/v1/certs", :client_x509_cert_url => "https://www.googleapis.com/robot/v1/metadata/x509/#{google_client_email}", :issuer => google_client_email, :scope => api_scope_url, :signing_key => key, :token_credential_uri => 'https://accounts.google.com/o/oauth2/token', }) local_client..fetch_access_token! return local_client end |
#remove_target_pool_health_checks(target_pool, health_checks) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/google/requests/compute/remove_target_pool_health_checks.rb', line 11 def remove_target_pool_health_checks(target_pool, health_checks) api_method = @compute.target_pools.remove_health_check parameters = { 'project' => @project, 'targetPool' => target_pool.name, 'region' => target_pool.region.split('/')[-1] } body = { 'healthChecks' => health_checks.map { |i| { 'healthCheck' => i } } } result = self.build_result(api_method, parameters, body_object=body) self.build_response(result) end |
#remove_target_pool_instances(target_pool, instances) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/google/requests/compute/remove_target_pool_instance.rb', line 11 def remove_target_pool_instances(target_pool, instances) api_method = @compute.target_pools.remove_instance parameters = { 'project' => @project, 'targetPool' => target_pool.name, 'region' => target_pool.region.split('/')[-1] } body = { 'instances' => instances.map { |i| { 'instance' => i } } } result = self.build_result(api_method, parameters, body_object=body) self.build_response(result) end |
#reset_server(identity, zone) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/fog/google/requests/compute/reset_server.rb', line 11 def reset_server(identity, zone) api_method = @compute.instances.reset parameters = { 'project' => @project, 'instance' => identity, 'zone' => zone.split('/')[-1], } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#set_common_instance_metadata(identity, current_fingerprint, metadata = {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/google/requests/compute/set_common_instance_metadata.rb', line 11 def (identity, current_fingerprint, = {}) api_method = @compute.projects. parameters = { :project => identity, } body_object = { :fingerprint => current_fingerprint, :items => Array().map { |pair| { :key => pair[0], :value => pair[1] } }, } result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#set_forwarding_rule_target(rule, target) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/fog/google/requests/compute/set_forwarding_rule_target.rb', line 11 def set_forwarding_rule_target(rule, target) api_method = @compute.forwarding_rules.set_target parameters = { 'project' => @project, 'forwardingRule' => rule.name, 'region' => rule.region.split('/')[-1] } body = { 'target' => target } result = self.build_result(api_method, parameters, body_object=body) self.build_response(result) end |
#set_metadata(instance, zone, fingerprint, metadata = {}) ⇒ Object
Set an instance metadata
Parameters
-
instance<~String> - Instance name (identity)
-
zone<~String> - Zone short name (without the full path)
-
fingerprint<~String> - The fingerprint of the last metadata. Can be retrieved by reloading the compute object, and checking the metadata fingerprint field.
instance.reload fingerprint = instance.['fingerprint']
-
metadata<~Hash> - A new metadata
Returns
-
response<~Excon::Response>
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fog/google/requests/compute/set_metadata.rb', line 23 def (instance, zone, fingerprint, ={}) api_method = @compute.instances. parameters = { 'project' => @project, 'instance' => instance, 'zone' => zone } body_object = { 'fingerprint' => fingerprint, "items" => .to_a.map {|pair| { :key => pair[0], :value => pair[1] } } } result = self.build_result( api_method, parameters, body_object=body_object ) response = self.build_response(result) end |
#set_server_disk_auto_delete(identity, zone, auto_delete, device_name) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/fog/google/requests/compute/set_server_disk_auto_delete.rb', line 11 def set_server_disk_auto_delete(identity, zone, auto_delete, device_name) api_method = @compute.instances.set_disk_auto_delete parameters = { 'project' => @project, 'instance' => identity, 'zone' => zone.split('/')[-1], 'autoDelete' => auto_delete, 'deviceName' => device_name, } result = self.build_result(api_method, parameters) response = self.build_response(result) end |
#set_server_scheduling(identity, zone, on_host_maintenance, automatic_restart) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/fog/google/requests/compute/set_server_scheduling.rb', line 11 def set_server_scheduling(identity, zone, on_host_maintenance, automatic_restart) api_method = @compute.instances.set_scheduling parameters = { 'project' => @project, 'instance' => identity, 'zone' => zone.split('/')[-1], } body_object = { 'onHostMaintenance' => on_host_maintenance, 'automaticRestart' => automatic_restart, } result = self.build_result(api_method, parameters, body_object) response = self.build_response(result) end |
#set_tags(instance, zone, fingerprint, tags = []) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/fog/google/requests/compute/set_tags.rb', line 11 def (instance, zone, fingerprint, =[]) api_method = @compute.instances. parameters = { 'project' => @project, 'instance' => instance, 'zone' => zone } body_object = { "fingerprint" => fingerprint, "items" => } result = self.build_result( api_method, parameters, body_object=body_object ) response = self.build_response(result) end |