lib/fog/profitbricks/compute.rb in fog-profitbricks-4.0.0 vs lib/fog/profitbricks/compute.rb in fog-profitbricks-4.1.0
- old
+ new
@@ -4,11 +4,11 @@
API_VERSION = 'v4'.freeze
autoload :Base, File.expand_path('../models/base', __FILE__)
requires :profitbricks_username, :profitbricks_password
- recognizes :profitbricks_url
+ recognizes :profitbricks_url, :profitbricks_user_agent
# Models
model_path 'fog/profitbricks/models/compute'
model :server
collection :servers
@@ -49,131 +49,132 @@
model :resource
collection :resources
# Requests
request_path 'fog/profitbricks/requests/compute'
- request :create_server # createServer
- request :delete_server # deleteServer
- request :update_server # updateServer
- request :get_all_servers # getAllServers
- request :get_server # getServer
- request :list_attached_volumes # listAttachedVolumes
- request :attach_volume # attachVolume
- request :get_attached_volume # getAttachedVolume
- request :detach_volume # detachVolume
- request :list_attached_cdroms # listAttachedCdroms
- request :attach_cdrom # attachCdrom
- request :get_attached_cdrom # getAttachedCdrom
- request :detach_cdrom # detachCdrom
- request :reboot_server # rebootServer
- request :start_server # startServer
- request :stop_server # stopServer
+ request :create_server # createServer
+ request :delete_server # deleteServer
+ request :update_server # updateServer
+ request :get_all_servers # getAllServers
+ request :get_server # getServer
+ request :list_attached_volumes # listAttachedVolumes
+ request :attach_volume # attachVolume
+ request :get_attached_volume # getAttachedVolume
+ request :detach_volume # detachVolume
+ request :list_attached_cdroms # listAttachedCdroms
+ request :attach_cdrom # attachCdrom
+ request :get_attached_cdrom # getAttachedCdrom
+ request :detach_cdrom # detachCdrom
+ request :reboot_server # rebootServer
+ request :start_server # startServer
+ request :stop_server # stopServer
- request :create_datacenter # createDataCenter
- request :delete_datacenter # deleteDataCenter
- request :update_datacenter # updateDataCenter
- request :get_all_datacenters # getAllDataCenters
- request :get_datacenter # getDataCenter
+ request :create_datacenter # createDataCenter
+ request :delete_datacenter # deleteDataCenter
+ request :update_datacenter # updateDataCenter
+ request :get_all_datacenters # getAllDataCenters
+ request :get_datacenter # getDataCenter
- request :get_all_locations # getAllLocations
- request :get_location # getLocation
+ request :get_all_locations # getAllLocations
+ request :get_location # getLocation
- request :get_all_images # getAllImages
- request :get_image # getImage
- request :update_image # updateImage
- request :delete_image # deleteImage
+ request :get_all_images # getAllImages
+ request :get_image # getImage
+ request :update_image # updateImage
+ request :delete_image # deleteImage
- request :get_all_flavors # getAllFlavors
- request :get_flavor # getFlavor
- request :create_flavor # createFlavor
+ request :get_all_flavors # getAllFlavors
+ request :get_flavor # getFlavor
+ request :create_flavor # createFlavor
- request :create_volume # createVolume
- request :delete_volume # deleteVolume
- request :update_volume # updateVolume
- request :get_all_volumes # getAllVolumes
- request :get_volume # getVolume
- request :create_volume_snapshot # createVolumeSnapshot
- request :restore_volume_snapshot # restoreVolumeSnapshot
+ request :create_volume # createVolume
+ request :delete_volume # deleteVolume
+ request :update_volume # updateVolume
+ request :get_all_volumes # getAllVolumes
+ request :get_volume # getVolume
+ request :create_volume_snapshot # createVolumeSnapshot
+ request :restore_volume_snapshot # restoreVolumeSnapshot
- request :get_all_lans # getAllLans
- request :get_lan # getLans
- request :create_lan # createLan
- request :update_lan # updateLan
- request :delete_lan # deleteLan
+ request :get_all_lans # getAllLans
+ request :get_lan # getLans
+ request :create_lan # createLan
+ request :update_lan # updateLan
+ request :delete_lan # deleteLan
- request :create_nic # createNic
- request :delete_nic # deleteNic
- request :update_nic # updateNic
- request :get_all_nic # getAllNic
- request :get_nic # getNic
+ request :create_nic # createNic
+ request :delete_nic # deleteNic
+ request :update_nic # updateNic
+ request :get_all_nic # getAllNic
+ request :get_nic # getNic
- request :delete_snapshot # deleteSnapshot
- request :update_snapshot # updateSnapshot
- request :get_all_snapshots # getAllSnapshots
- request :get_snapshot # getSnapshot
+ request :delete_snapshot # deleteSnapshot
+ request :update_snapshot # updateSnapshot
+ request :get_all_snapshots # getAllSnapshots
+ request :get_snapshot # getSnapshot
- request :get_all_requests # getAllRequests
- request :get_request # getRequest
- request :get_request_status # getRequestStatus
+ request :get_all_requests # getAllRequests
+ request :get_request # getRequest
+ request :get_request_status # getRequestStatus
- request :get_all_ip_blocks # getAllIpBlocks
- request :get_ip_block # getIpBlock
- request :create_ip_block # createIpBlock
- request :delete_ip_block # deleteIpBlock
+ request :get_all_ip_blocks # getAllIpBlocks
+ request :get_ip_block # getIpBlock
+ request :create_ip_block # createIpBlock
+ request :delete_ip_block # deleteIpBlock
- request :get_all_firewall_rules # getAllFireWallRules
- request :get_firewall_rule # getFirewallRule
- request :create_firewall_rule # createFirewallRule
- request :update_firewall_rule # updateFirewallRule
- request :delete_firewall_rule # deleteFirewallRule
+ request :get_all_firewall_rules # getAllFireWallRules
+ request :get_firewall_rule # getFirewallRule
+ request :create_firewall_rule # createFirewallRule
+ request :update_firewall_rule # updateFirewallRule
+ request :delete_firewall_rule # deleteFirewallRule
- request :get_all_load_balancers # getAllLoadBalancers
- request :get_load_balancer # getLoadBalancer
- request :create_load_balancer # createLoadBalancer
- request :delete_load_balancer # deleteLoadBalancer
- request :update_load_balancer # deleteLoadBalancer
- request :get_all_load_balanced_nics # getAllLoadBalancedNics
- request :get_load_balanced_nic # getLoadBalancedNic
- request :associate_nic_to_load_balancer # associateNicToLoadBalancer
- request :remove_nic_association # removeNicAssociation
+ request :get_all_load_balancers # getAllLoadBalancers
+ request :get_load_balancer # getLoadBalancer
+ request :create_load_balancer # createLoadBalancer
+ request :delete_load_balancer # deleteLoadBalancer
+ request :update_load_balancer # deleteLoadBalancer
+ request :get_all_load_balanced_nics # getAllLoadBalancedNics
+ request :get_load_balanced_nic # getLoadBalancedNic
+ request :associate_nic_to_load_balancer # associateNicToLoadBalancer
+ request :remove_nic_association # removeNicAssociation
- request :get_all_contract_resources # getAllContractResources
+ request :get_all_contract_resources # getAllContractResources
- request :get_all_groups # getAllGroups
- request :get_group # getGroup
- request :create_group # createGroup
- request :update_group # updateGroup
- request :delete_group # deleteGroup
+ request :get_all_groups # getAllGroups
+ request :get_group # getGroup
+ request :create_group # createGroup
+ request :update_group # updateGroup
+ request :delete_group # deleteGroup
- request :get_all_shares # getAllShares
- request :get_share # getShare
- request :add_share # addShare
- request :update_share # updateShare
- request :delete_share # deleteShare
+ request :get_all_shares # getAllShares
+ request :get_share # getShare
+ request :add_share # addShare
+ request :update_share # updateShare
+ request :delete_share # deleteShare
- request :get_all_users # getAllUsers
- request :get_user # getUser
- request :create_user # createUser
- request :update_user # updateUser
- request :delete_user # deleteUser
- request :get_group_users # getGroupUsers
- request :add_user_to_group # addUserToGroup
- request :remove_user_from_group # removeUserFromGroup
+ request :get_all_users # getAllUsers
+ request :get_user # getUser
+ request :create_user # createUser
+ request :update_user # updateUser
+ request :delete_user # deleteUser
+ request :get_group_users # getGroupUsers
+ request :add_user_to_group # addUserToGroup
+ request :remove_user_from_group # removeUserFromGroup
- request :get_all_resources # getAllResources
- request :get_resources_by_type # getResourcesByType
- request :get_resource_by_type # getResourcesByType
+ request :get_all_resources # getAllResources
+ request :get_resources_by_type # getResourcesByType
+ request :get_resource_by_type # getResourcesByType
class Real
def initialize(options = {})
@profitbricks_username = options[:profitbricks_username]
@profitbricks_password = options[:profitbricks_password]
@profitbricks_url = options[:profitbricks_url] || "https://api.profitbricks.com"
+ @user_agent = options[:profitbricks_user_agent] || ""
connection_options = options[:connection_options] || {}
connection_options[:headers] ||= {}
- connection_options[:headers]["User-Agent"] = Fog::Core::Connection.user_agents.to_s
+ connection_options[:headers]["User-Agent"] = @user_agent != "" ? @user_agent + " " + Fog::Core::Connection.user_agents.to_s : Fog::Core::Connection.user_agents.to_s
connection_options[:omit_default_port] = true
connection_options[:path_prefix] = "/cloudapi/#{API_VERSION}"
@connection = Fog::Core::Connection.new(@profitbricks_url, false, connection_options)
end
@@ -183,10 +184,11 @@
params[:headers]["Authorization"] = "Basic #{auth_header}"
params[:path_style] = false
begin
response = @connection.request(params)
+
rescue Excon::Errors::Unauthorized => error
Logger.warning('Unauthorized error')
raise error, Fog::JSON.decode(error.response.body)['messages']
rescue Excon::Errors::HTTPStatusError => error
Logger.warning('HTTPStatusError error')
@@ -261,11 +263,11 @@
'properties' => {
'name' => 'dc_1',
'description' => 'testing fog rest implementation',
'location' => 'us/las',
'version' => 1,
- 'features' => %w[SSD MULTIPLE_CPU]
+ 'features' => %w(SSD MULTIPLE_CPU)
}
},
{
'id' => dc2_id,
'type' => 'datacenter',
@@ -281,11 +283,11 @@
'properties' => {
'name' => 'dc_2',
'description' => 'testing fog rest implementation',
'location' => 'de/fkb',
'version' => 1,
- 'features' => %w[SSD MULTIPLE_CPU]
+ 'features' => %w(SSD MULTIPLE_CPU)
}
}
]
},
:servers => {
@@ -475,29 +477,29 @@
'id' => 'de/fkb',
'type' => 'location',
'href' => 'https://api.profitbricks.com/rest/v2/locations/de/fkb',
'properties' => {
'name' => 'karlsruhe',
- 'features' => %w[SSD MULTIPLE_CPU]
+ 'features' => %w(SSD MULTIPLE_CPU)
}
},
{
'id' => 'de/fra',
'type' => 'location',
'href' => 'https://api.profitbricks.com/rest/v2/locations/de/fra',
'properties' => {
'name' => 'frankfurt',
- 'features' => %w[SSD MULTIPLE_CPU]
+ 'features' => %w(SSD MULTIPLE_CPU)
}
},
{
'id' => 'us/las',
'type' => 'location',
'href' => 'https://api.profitbricks.com/rest/v2/locations/us/las',
'properties' => {
'name' => 'lasvegas',
- 'features' => %w[SSD MULTIPLE_CPU]
+ 'features' => %w(SSD MULTIPLE_CPU)
}
}
]
},
:images =>
@@ -538,10 +540,42 @@
'imageType' => 'CDROM',
'public' => 'true'
}
},
{
+ 'id' => 'dfcb40db-28b5-11e6-9336-52540005ab80',
+ 'type' => 'image',
+ 'href' => 'https=>//api.profitbricks.com/rest/v2/images/dfcb40db-28b5-11e6-9336-52540005ab80',
+ 'metadata' => {
+ 'createdDate' => '2016-06-02T11:33:49Z',
+ 'createdBy' => 'System',
+ 'etag' => '9909709d99655c6f31aca789998d7d89',
+ 'lastModifiedDate' => '2016-06-02T11:33:49Z',
+ 'lastModifiedBy' => 'System',
+ 'state' => 'AVAILABLE'
+ },
+ 'properties' => {
+ 'name' => 'CentOS-6.8-x86_64-netinstall.iso',
+ 'description' => '',
+ 'location' => 'us/las',
+ 'size' => 0.23,
+ 'cpuHotPlug' => 'true',
+ 'cpuHotUnplug' => 'false',
+ 'ramHotPlug' => 'true',
+ 'ramHotUnplug' => 'false',
+ 'nicHotPlug' => 'true',
+ 'nicHotUnplug' => 'true',
+ 'discVirtioHotPlug' => 'true',
+ 'discVirtioHotUnplug' => 'true',
+ 'discScsiHotPlug' => 'false',
+ 'discScsiHotUnplug' => 'false',
+ 'licenceType' => 'LINUX',
+ 'imageType' => 'HDD',
+ 'public' => 'true'
+ }
+ },
+ {
'id' => '05cadf29-6c12-11e4-beeb-52540066fee9',
'type' => 'image',
'href' => 'https=>//api.profitbricks.com/rest/v2/images/05cadf29-6c12-11e4-beeb-52540066fee9',
'metadata' => {
'createdDate' => '2014-11-14T15:22:19Z',
@@ -1096,13 +1130,14 @@
'datacenter_id' => dc1_id
}
]
},
:contracts => {
- 'contractNumber' => '12345678',
- 'owner' => 'test@domain.com',
- 'status' => 'BILLABLE',
+ 'type' => 'contract',
+ 'contractNumber' => '12345678',
+ 'owner' => 'test@domain.com',
+ 'status' => 'BILLABLE',
'resourceLimits' => {
'coresPerServer' => '20',
'coresPerContract' => '30',
'coresProvisioned' => '0',
'ramPerServer' => '204800',
@@ -1114,11 +1149,120 @@
'ssdLimitPerVolume' => '2048000',
'ssdLimitPerContract' => '3072000',
'ssdVolumeProvisioned' => '0',
'reservableIps' => '3',
'reservedIpsOnContract' => '0',
- 'reservedIpsInUse' => '0'
+ 'reservedIpsInUse' => '0',
}
+ },
+ :groups => {
+ 'id' => "groups",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/groups",
+ 'items' => []
+ },
+ :shares => {
+ 'id' => "059c4d71-f97a-4bfd-b3a5-XXXXXXXXXXXX/shares",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/groups/059c4d71-f97a-4bfd-b3a5-XXXXXXXXXXXX/shares",
+ 'items' => []
+ },
+ :users => {
+ 'id' => "users",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/users",
+ 'items' => []
+ },
+ :resources => {
+ 'id' => "resources",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/resources",
+ 'items' => [
+ {
+ 'id' => dc1_id,
+ 'type' => 'datacenter',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/resources/datacenter/#{dc1_id}",
+ 'metadata' => {
+ 'createdDate' => '2016-07-31T15:41:27Z',
+ 'createdBy' => 'test@stackpointcloud.com',
+ 'etag' => '5b91832ee85a758568d4523a86bd8702',
+ 'lastModifiedDate' => '2016-07-31T15:41:27Z',
+ 'lastModifiedBy' => 'test@stackpointcloud.com',
+ 'state' => 'AVAILABLE'
+ },
+ 'entities' => {
+ 'groups' => {
+ 'id' => "#{dc1_id}/groups",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/groups",
+ 'items' => []
+ }
+ }
+ },
+ {
+ 'id' => 'dfcb40db-28b5-11e6-9336-52540005ab80',
+ 'type' => 'image',
+ 'href' => 'https://api.profitbricks.com/cloudapi/v4/um/resources/image/dfcb40db-28b5-11e6-9336-52540005ab80',
+ 'metadata' => {
+ 'createdDate' => '2016-06-02T11:33:49Z',
+ 'createdBy' => 'System',
+ 'etag' => '9909709d99655c6f31aca789998d7d89',
+ 'lastModifiedDate' => '2016-06-02T11:33:49Z',
+ 'lastModifiedBy' => 'System',
+ 'state' => 'AVAILABLE'
+ },
+ 'entities' => {
+ 'groups' => {
+ 'id' => "dfcb40db-28b5-11e6-9336-52540005ab80/groups",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/groups",
+ 'items' => []
+ }
+ }
+ },
+ {
+ 'id' => '3d52b13d-bec4-49de-ad05-fd2f8c687be6',
+ 'type' => 'snapshot',
+ 'href' => 'https://api.profitbricks.com/cloudapi/v4/um/resources/snapshot/3d52b13d-bec4-49de-ad05-fd2f8c687be6',
+ 'metadata' => {
+ 'createdDate' => '2016-08-07T22:28:38Z',
+ 'createdBy' => 'test@stackpointcloud.com',
+ 'etag' => '83ad78a4757ab0d9bdeaebc3a6485dcf',
+ 'lastModifiedDate' => '2016-08-07T22:28:38Z',
+ 'lastModifiedBy' => 'test@stackpointcloud.com',
+ 'state' => 'AVAILABLE'
+ },
+ 'entities' => {
+ 'groups' => {
+ 'id' => "3d52b13d-bec4-49de-ad05-fd2f8c687be6/groups",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/groups",
+ 'items' => []
+ }
+ }
+ },
+ {
+ 'id' => ipb1_id,
+ 'type' => 'ipblock',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/resources/ipblock/#{ipb1_id}",
+ 'metadata' => {
+ 'createdDate' => '2016-07-31T15:41:27Z',
+ 'createdBy' => 'test@stackpointcloud.com',
+ 'etag' => '5b91832ee85a758568d4523a86bd8702',
+ 'lastModifiedDate' => '2016-07-31T15:41:27Z',
+ 'lastModifiedBy' => 'test@stackpointcloud.com',
+ 'state' => 'AVAILABLE'
+ },
+ 'entities' => {
+ 'groups' => {
+ 'id' => "#{ipb1_id}/groups",
+ 'type' => 'collection',
+ 'href' => "https://api.profitbricks.com/cloudapi/v4/um/groups",
+ 'items' => []
+ }
+ }
+ }
+ ]
}
}
end
end