Class: Fog::Network::Softlayer::Real
- Inherits:
-
Object
- Object
- Fog::Network::Softlayer::Real
- Includes:
- Softlayer::Slapi
- Defined in:
- lib/fog/softlayer/network.rb,
lib/fog/softlayer/requests/network/get_subnet.rb,
lib/fog/softlayer/requests/network/get_network.rb,
lib/fog/softlayer/requests/network/list_subnets.rb,
lib/fog/softlayer/requests/network/create_subnet.rb,
lib/fog/softlayer/requests/network/list_networks.rb,
lib/fog/softlayer/requests/network/create_network.rb,
lib/fog/softlayer/requests/network/delete_network.rb,
lib/fog/softlayer/requests/network/get_ip_address.rb,
lib/fog/softlayer/requests/network/get_datacenters.rb,
lib/fog/softlayer/requests/network/route_global_ip.rb,
lib/fog/softlayer/requests/network/get_ip_addresses.rb,
lib/fog/softlayer/requests/network/get_network_tags.rb,
lib/fog/softlayer/requests/network/unroute_global_ip.rb,
lib/fog/softlayer/requests/network/create_network_tags.rb,
lib/fog/softlayer/requests/network/delete_network_tags.rb,
lib/fog/softlayer/requests/network/get_global_ip_address.rb,
lib/fog/softlayer/requests/network/get_global_ip_records.rb,
lib/fog/softlayer/requests/network/get_subnet_package_id.rb,
lib/fog/softlayer/requests/network/get_subnet_price_code.rb,
lib/fog/softlayer/requests/network/get_datacenter_routers.rb,
lib/fog/softlayer/requests/network/delete_global_ip_address.rb,
lib/fog/softlayer/requests/network/get_public_vlan_price_code.rb,
lib/fog/softlayer/requests/network/get_references_by_tag_name.rb,
lib/fog/softlayer/requests/network/get_private_vlan_price_code.rb,
lib/fog/softlayer/requests/network/get_portable_subnet_package_id.rb,
lib/fog/softlayer/requests/network/get_portable_subnet_price_code.rb
Instance Method Summary collapse
- #create_network(order) ⇒ Object
- #create_network_tags(id, tags = []) ⇒ Object
- #create_new_global_ipv4 ⇒ Object
- #create_new_global_ipv6 ⇒ Object
- #create_subnet(order) ⇒ Object
- #delete_global_ip_address(id) ⇒ Object
- #delete_network(id) ⇒ Object
- #delete_network_tags(id, tags = []) ⇒ Object
- #get_datacenter_routers(id) ⇒ Object
- #get_datacenters ⇒ Object
- #get_global_ip_address(id) ⇒ Object
- #get_global_ip_records ⇒ Object
- #get_ip_address(id) ⇒ Object
- #get_ip_addresses ⇒ Object
- #get_network(id) ⇒ Object
- #get_network_tags(id) ⇒ Object
- #get_portable_subnet_package_id(address_space) ⇒ Object
- #get_portable_subnet_price_code(address_count, public = true) ⇒ Object
- #get_private_vlan_price_code ⇒ Object
- #get_public_vlan_price_code ⇒ Object
- #get_references_by_tag_name(tag_list) ⇒ Object
- #get_subnet(id) ⇒ Object
- #get_subnet_package_id(address_space) ⇒ Object
- #get_subnet_price_code(address_count, public = true) ⇒ Object
-
#initialize(options = {}) ⇒ Real
constructor
A new instance of Real.
- #list_networks ⇒ Object
- #list_subnets ⇒ Object
- #request(service, path, options = {}) ⇒ Object
- #route_global_ip(global_ip_id, destination_ip_address) ⇒ Object
- #unroute_global_ip(global_ip_id) ⇒ Object
Methods included from Softlayer::Slapi
Constructor Details
#initialize(options = {}) ⇒ Real
Returns a new instance of Real.
116 117 118 119 |
# File 'lib/fog/softlayer/network.rb', line 116 def initialize(={}) @softlayer_api_key = [:softlayer_api_key] @softlayer_username = [:softlayer_username] end |
Instance Method Details
#create_network(order) ⇒ Object
481 482 483 484 |
# File 'lib/fog/softlayer/requests/network/create_network.rb', line 481 def create_network(order) raise ArgumentError, "Order argument for #{self.class.name}##{__method__} must be Hash." unless order.is_a?(Hash) self.request(:product_order, :place_order, :body => order, :http_method => :post) end |
#create_network_tags(id, tags = []) ⇒ Object
43 44 45 46 |
# File 'lib/fog/softlayer/requests/network/create_network_tags.rb', line 43 def (id, = []) raise ArgumentError, "Tags argument for #{self.class.name}##{__method__} must be Array." unless .is_a?(Array) self.request(:network_vlan, "#{id}/set_tags", :body => .join(','), :http_method => :post) end |
#create_new_global_ipv4 ⇒ Object
126 127 128 129 130 131 132 133 134 |
# File 'lib/fog/softlayer/network.rb', line 126 def create_new_global_ipv4 order = { "complexType" => 'SoftLayer_Container_Product_Order_Network_Subnet', "packageId" => 0, # everything that's not a Server is package 0 when using placeOrder "prices" => [{"id"=>global_ipv4_price_code}], "quantity" => 1 } request(:product_order, :place_order, :body => order, :http_method => :POST).status == 200 end |
#create_new_global_ipv6 ⇒ Object
136 137 138 139 140 141 142 143 144 |
# File 'lib/fog/softlayer/network.rb', line 136 def create_new_global_ipv6 order = { "complexType" => 'SoftLayer_Container_Product_Order_Network_Subnet', "packageId" => 0, # everything that's not a Server is package 0 when using placeOrder "prices" => [{"id"=>global_ipv6_price_code}], "quantity" => 1 } request(:product_order, :place_order, :body => order, :http_method => :POST).status == 200 end |
#create_subnet(order) ⇒ Object
20 21 22 23 |
# File 'lib/fog/softlayer/requests/network/create_subnet.rb', line 20 def create_subnet(order) raise ArgumentError, "Order argument for #{self.class.name}##{__method__} must be Hash." unless order.is_a?(Hash) self.request(:product_order, :place_order, :body => order, :http_method => :post) end |
#delete_global_ip_address(id) ⇒ Object
22 23 24 25 26 |
# File 'lib/fog/softlayer/requests/network/delete_global_ip_address.rb', line 22 def delete_global_ip_address(id) billing = self.request(:network_subnet_ipaddress_global, "#{id}/get_billing_item").body billing.nil? and raise "Global IP Address with ID #{id} not found." request(:billing_item, "#{billing['id']}/cancel_service") end |
#delete_network(id) ⇒ Object
29 30 31 32 33 |
# File 'lib/fog/softlayer/requests/network/delete_network.rb', line 29 def delete_network(id) billing_id = request(:network_vlan, "#{id}/get_billing_item").body['id'] billing_id.nil? and raise "SoftLayer VLAN with ID #{id} cannot be deleted." # will be automatically deleted when hardware using it is deleted. request(:billing_item, "#{billing_id}/cancel_service").body end |
#delete_network_tags(id, tags = []) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/fog/softlayer/requests/network/delete_network_tags.rb', line 36 def (id, = []) raise ArgumentError, "Tags argument for #{self.class.name}##{__method__} must be Array." unless .is_a?(Array) subset = self.(id).body['tagReferences'].map do |i| i['tag']['name'] unless .include?(i['tag']['name']) end.compact self.(id, subset) end |
#get_datacenter_routers(id) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/fog/softlayer/requests/network/get_datacenter_routers.rb', line 35 def get_datacenter_routers(id) Excon.defaults[:read_timeout] *= 2 # this SLAPI method is incredibly slow to respond result = request(:location_datacenter, "#{id}/get_hardware_routers", :query => 'objectMask=id;hostname') Excon.defaults[:read_timeout] /= 2 result end |
#get_datacenters ⇒ Object
24 25 26 |
# File 'lib/fog/softlayer/requests/network/get_datacenters.rb', line 24 def get_datacenters request(:location_datacenter, :get_datacenters) end |
#get_global_ip_address(id) ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/get_global_ip_address.rb', line 22 def get_global_ip_address(id) self.request(:network_subnet_ipaddress_global, id, :query => 'objectMask=mask[ipAddress,destinationIpAddress]') end |
#get_global_ip_records ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/get_global_ip_records.rb', line 22 def get_global_ip_records self.request(:account, :get_global_ip_records) end |
#get_ip_address(id) ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/get_ip_address.rb', line 22 def get_ip_address(id) self.request(:network_subnet_IpAddress, id, :query => 'objectMask=mask[hardware.fullyQualifiedDomainName,hardware.id,virtualGuest.id,virtualGuest.fullyQualifiedDomainName,subnet.id]') end |
#get_ip_addresses ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/get_ip_addresses.rb', line 22 def get_ip_addresses self.request(:account, :get_ip_addresses, :query => 'objectMask=mask[hardware.fullyQualifiedDomainName,hardware.id,virtualGuest.id,virtualGuest.fullyQualifiedDomainName,subnet.id]') end |
#get_network(id) ⇒ Object
28 29 30 |
# File 'lib/fog/softlayer/requests/network/get_network.rb', line 28 def get_network(id) self.request(:network_vlan, "#{id}/get_object", :query => 'objectMask=mask[subnets,tagReferences,type,primaryRouter.datacenter,networkSpace]') end |
#get_network_tags(id) ⇒ Object
41 42 43 |
# File 'lib/fog/softlayer/requests/network/get_network_tags.rb', line 41 def (id) self.request(:network_vlan, id, :query => 'objectMask=mask[tagReferences]') end |
#get_portable_subnet_package_id(address_space) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/fog/softlayer/requests/network/get_portable_subnet_package_id.rb', line 23 def get_portable_subnet_package_id(address_space) address_space.downcase!; err_msg = "Argument for #{self.class.name}##{__method__} must be 'PRIVATE' or 'PUBLIC'." raise ArgumentError, err_msg unless %{private public}.include?(address_space) request(:product_package, '0/get_configuration', :query => 'objectMask=mask[isRequired,itemCategory]').body.map do |item| item['itemCategory']['id'] if item['itemCategory']['categoryCode'] == "sov_sec_ip_addresses_#{address_space == 'public' ? 'pub' : 'priv'}" end.compact.first end |
#get_portable_subnet_price_code(address_count, public = true) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/fog/softlayer/requests/network/get_portable_subnet_price_code.rb', line 21 def get_portable_subnet_price_code(address_count, public=true) portable_subnet_package_id = get_portable_subnet_package_id(public ? 'PUBLIC' : 'PRIVATE') request(:product_package, '0/get_item_prices', :query => 'objectMask=mask[id,categories.id,item.description]').body.map do |item| catg = item['categories'][0] item['id'] if catg['id'] == portable_subnet_package_id && item['item']['description'] =~ /^#{address_count}/ end.compact.first end |
#get_private_vlan_price_code ⇒ Object
21 22 23 |
# File 'lib/fog/softlayer/requests/network/get_private_vlan_price_code.rb', line 21 def get_private_vlan_price_code request(:product_package, '0/get_items').body.map { |item| item['prices'][0]['id'] if item['description'] =~ /vlan/i and item['description'] =~ /private/i }.compact.first end |
#get_public_vlan_price_code ⇒ Object
21 22 23 |
# File 'lib/fog/softlayer/requests/network/get_public_vlan_price_code.rb', line 21 def get_public_vlan_price_code request(:product_package, '0/get_items').body.map { |item| item['prices'][0]['id'] if item['description'] =~ /vlan/i and item['description'] =~ /public/i }.compact.first end |
#get_references_by_tag_name(tag_list) ⇒ Object
36 37 38 |
# File 'lib/fog/softlayer/requests/network/get_references_by_tag_name.rb', line 36 def get_references_by_tag_name(tag_list) self.request(:tag, "get_tag_by_tag_name/#{tag_list}", :query => 'objectMask=references') end |
#get_subnet(id) ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/get_subnet.rb', line 22 def get_subnet(id) self.request(:network_subnet, "#{id}/get_object", :query => 'objectMask=mask[datacenter,ipAddresses.id,virtualGuests.fullyQualifiedDomainName,virtualGuests.id,hardware.fullyQualifiedDomainName,hardware.id,addressSpace]') end |
#get_subnet_package_id(address_space) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/fog/softlayer/requests/network/get_subnet_package_id.rb', line 23 def get_subnet_package_id(address_space) address_space.downcase!; err_msg = "Argument for #{self.class.name}##{__method__} must be 'PRIVATE' or 'PUBLIC'." raise ArgumentError, err_msg unless %{private public}.include?(address_space) request(:product_package, '0/get_configuration', :query => 'objectMask=mask[isRequired,itemCategory]').body.map do |item| item['itemCategory']['id'] if item['itemCategory']['categoryCode'] == 'static_sec_ip_addresses' end.compact.first end |
#get_subnet_price_code(address_count, public = true) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/fog/softlayer/requests/network/get_subnet_price_code.rb', line 21 def get_subnet_price_code(address_count, public=true) subnet_package_id = get_subnet_package_id(public ? 'PUBLIC' : 'PRIVATE') request(:product_package, '0/get_item_prices', :query => 'objectMask=mask[id,categories.id,item.description]').body.map do |item| item['id'] if catg['id'] == subnet_package_id && item['item']['description'] =~ /^#{address_count}/ end.compact.first end |
#list_networks ⇒ Object
146 147 148 |
# File 'lib/fog/softlayer/network.rb', line 146 def list_networks self.list_networks end |
#list_subnets ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/list_subnets.rb', line 22 def list_subnets self.request(:account, :get_subnets, :query => 'objectMask=mask[networkVlan,ipAddresses.id,datacenter,hardware,virtualGuests.id,virtualGuests.fullyQualifiedDomainName]') end |
#request(service, path, options = {}) ⇒ Object
121 122 123 124 |
# File 'lib/fog/softlayer/network.rb', line 121 def request(service, path, = {}) = {:username => @softlayer_username, :api_key => @softlayer_api_key}.merge() Fog::Softlayer::Slapi.slapi_request(service, path, ) end |
#route_global_ip(global_ip_id, destination_ip_address) ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/route_global_ip.rb', line 22 def route_global_ip(global_ip_id, destination_ip_address) self.request(:network_subnet_ipaddress_global, "#{global_ip_id}/route", :body => destination_ip_address, :http_method => :post) end |
#unroute_global_ip(global_ip_id) ⇒ Object
22 23 24 |
# File 'lib/fog/softlayer/requests/network/unroute_global_ip.rb', line 22 def unroute_global_ip(global_ip_id) self.request(:network_subnet_ipaddress_global, "#{global_ip_id}/unroute") end |