fog-softlayer 0.4.2.pre → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +5 -13
  2. data/CONTRIBUTORS.md +2 -0
  3. data/examples/compute.md +37 -1
  4. data/lib/fog/softlayer/compute.rb +8 -1
  5. data/lib/fog/softlayer/dns.rb +0 -1
  6. data/lib/fog/softlayer/ext/hash.rb +6 -0
  7. data/lib/fog/softlayer/ext/string.rb +20 -0
  8. data/lib/fog/softlayer/models/compute/flavor.rb +0 -2
  9. data/lib/fog/softlayer/models/compute/flavors.rb +0 -1
  10. data/lib/fog/softlayer/models/compute/image.rb +0 -2
  11. data/lib/fog/softlayer/models/compute/images.rb +0 -1
  12. data/lib/fog/softlayer/models/compute/key_pair.rb +0 -2
  13. data/lib/fog/softlayer/models/compute/key_pairs.rb +0 -1
  14. data/lib/fog/softlayer/models/compute/network_component.rb +0 -2
  15. data/lib/fog/softlayer/models/compute/network_components.rb +0 -1
  16. data/lib/fog/softlayer/models/compute/server.rb +10 -0
  17. data/lib/fog/softlayer/models/compute/servers.rb +25 -1
  18. data/lib/fog/softlayer/models/compute/tag.rb +0 -2
  19. data/lib/fog/softlayer/models/compute/tags.rb +0 -1
  20. data/lib/fog/softlayer/models/dns/domain.rb +1 -1
  21. data/lib/fog/softlayer/models/dns/domains.rb +1 -1
  22. data/lib/fog/softlayer/models/dns/record.rb +0 -1
  23. data/lib/fog/softlayer/models/dns/records.rb +1 -1
  24. data/lib/fog/softlayer/models/network/datacenter.rb +0 -2
  25. data/lib/fog/softlayer/models/network/datacenters.rb +0 -1
  26. data/lib/fog/softlayer/models/network/ip.rb +0 -2
  27. data/lib/fog/softlayer/models/network/ips.rb +0 -1
  28. data/lib/fog/softlayer/models/network/network.rb +0 -2
  29. data/lib/fog/softlayer/models/network/networks.rb +0 -1
  30. data/lib/fog/softlayer/models/network/subnet.rb +0 -2
  31. data/lib/fog/softlayer/models/network/subnets.rb +0 -1
  32. data/lib/fog/softlayer/models/network/tag.rb +0 -1
  33. data/lib/fog/softlayer/models/network/tags.rb +1 -1
  34. data/lib/fog/softlayer/models/product/item.rb +0 -1
  35. data/lib/fog/softlayer/models/product/items.rb +0 -1
  36. data/lib/fog/softlayer/models/product/package.rb +0 -1
  37. data/lib/fog/softlayer/models/product/packages.rb +0 -1
  38. data/lib/fog/softlayer/models/storage/directories.rb +0 -1
  39. data/lib/fog/softlayer/models/storage/directory.rb +0 -1
  40. data/lib/fog/softlayer/models/storage/file.rb +0 -2
  41. data/lib/fog/softlayer/models/storage/files.rb +0 -1
  42. data/lib/fog/softlayer/network.rb +0 -2
  43. data/lib/fog/softlayer/product.rb +0 -1
  44. data/lib/fog/softlayer/requests/compute/create_bare_metal_server.rb +1 -0
  45. data/lib/fog/softlayer/requests/compute/create_vms.rb +1 -0
  46. data/lib/fog/softlayer/requests/compute/get_bare_metal_active_tickets.rb +79 -0
  47. data/lib/fog/softlayer/requests/compute/get_bare_metal_create_options.rb +1116 -0
  48. data/lib/fog/softlayer/requests/compute/get_bare_metal_server_by_ip.rb +32 -0
  49. data/lib/fog/softlayer/requests/compute/get_bare_metal_users.rb +148 -0
  50. data/lib/fog/softlayer/requests/compute/get_virtual_guest_active_tickets.rb +79 -0
  51. data/lib/fog/softlayer/requests/compute/get_virtual_guest_by_ip.rb +32 -0
  52. data/lib/fog/softlayer/requests/compute/get_virtual_guest_create_options.rb +4060 -0
  53. data/lib/fog/softlayer/requests/compute/get_virtual_guest_users.rb +148 -0
  54. data/lib/fog/softlayer/slapi.rb +96 -0
  55. data/lib/fog/softlayer/storage.rb +1 -3
  56. data/lib/fog/softlayer/version.rb +1 -1
  57. data/lib/fog/softlayer.rb +69 -6
  58. data/tests/softlayer/requests/compute/bmc_tests.rb +38 -0
  59. data/tests/softlayer/requests/compute/vm_tests.rb +37 -0
  60. metadata +41 -32
  61. data/lib/fog/softlayer/core.rb +0 -176
@@ -0,0 +1,32 @@
1
+ #
2
+ # Author:: Matheus Francisco Barra Mina (<mfbmina@gmail.com>)
3
+ # © Copyright IBM Corporation 2015.
4
+ #
5
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
6
+ #
7
+ module Fog
8
+ module Compute
9
+ class Softlayer
10
+ class Mock
11
+ def get_bare_metal_server_by_ip(ip_address)
12
+ response = Excon::Response.new
13
+ response.body = @bare_metal_servers.map {|vm| vm if vm['primaryIpAddress'] == ip_address.to_s }.compact.first || {}
14
+ response.status = response.body.empty? ? 404 : 200
15
+ if response.status == 404
16
+ response.body = {
17
+ "error"=>"Unable to find object with ip of '#{ip_address}'.",
18
+ "code"=>"SoftLayer_Exception_ObjectNotFound"
19
+ }
20
+ end
21
+ response
22
+ end
23
+ end
24
+
25
+ class Real
26
+ def get_bare_metal_server_by_ip(ip_address)
27
+ request(:hardware_server, :findByIpAddress, :body => "#{ip_address}", :http_method => :POST, :query => 'objectMask=mask[datacenter,tagReferences,memory,provisionDate,processorCoreAmount,hardDrives,datacenter,hourlyBillingFlag,operatingSystem.softwareLicense.softwareDescription.referenceCode,sshKeys.id,privateNetworkOnlyFlag,userData,frontendNetworkComponents,backendNetworkComponents]')
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,148 @@
1
+ #
2
+ # Author:: Matheus Francisco Barra Mina (<mfbmina@gmail.com>)
3
+ # © Copyright IBM Corporation 2015.
4
+ #
5
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
6
+ #
7
+ module Fog
8
+ module Compute
9
+ class Softlayer
10
+ class Mock
11
+ # Gets all Bare Metal users
12
+ # @param [Integer] id
13
+ # @return [Excon::Response]
14
+ def get_bare_metal_users(id)
15
+ response = Excon::Response.new
16
+ found = self.get_bare_metal_servers.body.map{|server| server['id']}.include?(id)
17
+ unless found
18
+ response.status = 404
19
+ response.body = {
20
+ "error" => "Unable to find object with id of '#{id}'.",
21
+ "code" => "SoftLayer_Exception_ObjectNotFound"
22
+ }
23
+ else
24
+ response.status = 200
25
+ response.body = get_users
26
+ end
27
+ response
28
+ end
29
+ end
30
+
31
+ class Real
32
+ def get_bare_metal_users(id)
33
+ request(:hardware_server, "#{id}/getUsers")
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ module Fog
41
+ module Compute
42
+ class Softlayer
43
+ class Mock
44
+ def get_users
45
+ [
46
+ {
47
+ "accountId"=>000000,
48
+ "address1"=>"Your address",
49
+ "authenticationToken"=>
50
+ {
51
+ "hash"=>"06e849qqq25e5266753043484893344232",
52
+ "user"=>nil,
53
+ "userId"=>000000
54
+ },
55
+ "city"=>"Your City",
56
+ "companyName"=>"Your Company",
57
+ "country"=>"Your country",
58
+ "createDate"=>"2014-03-05T13:23:04-06:00",
59
+ "daylightSavingsTimeFlag"=>true,
60
+ "denyAllResourceAccessOnCreateFlag"=>false,
61
+ "displayName"=>"Your name",
62
+ "email"=>"youremail@example.com",
63
+ "firstName"=>"Your name",
64
+ "forumPasswordHash"=>"121kdsksdkvm323j4j3",
65
+ "id"=>000000,
66
+ "lastName"=>"Your last name",
67
+ "localeId"=>1,
68
+ "modifyDate"=>"2014-03-05T13:23:04-06:00",
69
+ "officePhone"=>"+55 00 111-111",
70
+ "parentId"=>nil,
71
+ "passwordExpireDate"=>nil,
72
+ "permissionSystemVersion"=>2,
73
+ "postalCode"=>"000000-000",
74
+ "pptpVpnAllowedFlag"=>false,
75
+ "savedId"=>"000000",
76
+ "secondaryLoginManagementFlag"=>nil,
77
+ "secondaryLoginRequiredFlag"=>nil,
78
+ "secondaryPasswordModifyDate"=>"2014-03-05T13:40:12-06:00",
79
+ "secondaryPasswordTimeoutDays"=>nil,
80
+ "sslVpnAllowedFlag"=>false,
81
+ "state"=>"OT",
82
+ "statusDate"=>"2014-03-05T13:23:04-06:00",
83
+ "timezoneId"=>114,
84
+ "userStatusId"=>1001,
85
+ "username"=>"Your username",
86
+ "vpnManualConfig"=>false,
87
+ "account"=>
88
+ {
89
+ "accountManagedResourcesFlag"=>false,
90
+ "accountStatusId"=>1001,
91
+ "address1"=>"Your address 1",
92
+ "address2"=>"Your address 2",
93
+ "allowedPptpVpnQuantity"=>1,
94
+ "brandId"=>2,
95
+ "city"=>"Your city",
96
+ "claimedTaxExemptTxFlag"=>false,
97
+ "companyName"=>"Your company",
98
+ "country"=>"Your country",
99
+ "createDate"=>"2014-03-05T13:23:04-06:00",
100
+ "email"=>"youremail@example.com",
101
+ "firstName"=>"Your name",
102
+ "id"=>000000,
103
+ "isReseller"=>1,
104
+ "lastName"=>"Your last name",
105
+ "lateFeeProtectionFlag"=>nil,
106
+ "modifyDate"=>"2014-04-29T15:22:55-05:00",
107
+ "officePhone"=>"+00 00 0000-0000",
108
+ "postalCode"=>"00000-000",
109
+ "state"=>"OT",
110
+ "statusDate"=>nil,
111
+ "masterUser"=>nil
112
+ },
113
+ "apiAuthenticationKeys"=>
114
+ [
115
+ {
116
+ "authenticationKey"=>"43k43dsmkf9994m3mdkm3k2mcdsk32",
117
+ "id"=>000000,
118
+ "timestampKey"=>302399304309,
119
+ "userId"=>000000
120
+ }
121
+ ],
122
+ "locale"=>
123
+ {
124
+ "friendlyName"=>"English",
125
+ "id"=>1,
126
+ "languageTag"=>"en-US",
127
+ "name"=>"English"
128
+ },
129
+ "timezone"=>
130
+ {
131
+ "id"=>114,
132
+ "longName"=>"(GMT-06:00) America/Dallas - CST", "name"=>"America/Chicago",
133
+ "offset"=>"-0600",
134
+ "shortName"=>"CST"
135
+ },
136
+ "userStatus"=>
137
+ {
138
+ "id"=>1001,
139
+ "keyName"=>"ACTIVE",
140
+ "name"=>"Active"
141
+ }
142
+ }
143
+ ]
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,79 @@
1
+ #
2
+ # Author:: Matheus Francisco Barra Mina (<mfbmina@gmail.com>)
3
+ # © Copyright IBM Corporation 2015.
4
+ #
5
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
6
+ #
7
+ module Fog
8
+ module Compute
9
+ class Softlayer
10
+ class Mock
11
+ # Gets all Virtual Guest active tickets
12
+ # @param [Integer] id
13
+ # @return [Excon::Response]
14
+ def get_virtual_guest_active_tickets(id)
15
+ response = Excon::Response.new
16
+ found = self.get_vms.body.map{|server| server['id']}.include?(id)
17
+ unless found
18
+ response.status = 404
19
+ response.body = {
20
+ "error" => "Unable to find object with id of '#{id}'.",
21
+ "code" => "SoftLayer_Exception_ObjectNotFound"
22
+ }
23
+ else
24
+ response.status = 200
25
+ response.body = get_active_tickets
26
+ end
27
+ response
28
+ end
29
+ end
30
+
31
+ class Real
32
+ def get_virtual_guest_active_tickets(id)
33
+ request(:virtual_guest, "#{id.to_s}/getActiveTickets", :http_method => :GET)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ module Fog
41
+ module Compute
42
+ class Softlayer
43
+ class Mock
44
+ def get_active_tickets
45
+ [
46
+ {
47
+ "accountId"=>1,
48
+ "assignedUserId"=>1,
49
+ "billableFlag"=>nil,
50
+ "changeOwnerFlag"=>false,
51
+ "createDate"=>"2015-03-17T07:42:42-05:00",
52
+ "groupId"=>1,
53
+ "id"=>1,
54
+ "lastEditDate"=>"2015-03-17T07:42:43-05:00",
55
+ "lastEditType"=>"AUTO",
56
+ "locationId"=>nil,
57
+ "modifyDate"=>"2015-03-17T07:42:43-05:00",
58
+ "notifyUserOnUpdateFlag"=>true,
59
+ "originatingIpAddress"=>"10.10.10.10",
60
+ "priority"=>0,
61
+ "responsibleBrandId"=>1,
62
+ "serverAdministrationBillingAmount"=>nil,
63
+ "serverAdministrationBillingInvoiceId"=>nil,
64
+ "serverAdministrationFlag"=>0,
65
+ "serverAdministrationRefundInvoiceId"=>nil,
66
+ "serviceProviderId"=>1,
67
+ "serviceProviderResourceId"=>1,
68
+ "statusId"=>1,
69
+ "subjectId"=>1,
70
+ "title"=>"API Question - Testing API",
71
+ "totalUpdateCount"=>1,
72
+ "userEditableFlag"=>true
73
+ }
74
+ ]
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,32 @@
1
+ #
2
+ # Author:: Matheus Francisco Barra Mina (<mfbmina@gmail.com>)
3
+ # © Copyright IBM Corporation 2015.
4
+ #
5
+ # LICENSE: MIT (http://opensource.org/licenses/MIT)
6
+ #
7
+ module Fog
8
+ module Compute
9
+ class Softlayer
10
+ class Mock
11
+ def get_virtual_guest_by_ip(ip_address)
12
+ response = Excon::Response.new
13
+ response.body = @virtual_guests.map {|vm| vm if vm['primaryIpAddress'] == ip_address }.compact.first || {}
14
+ response.status = response.body.empty? ? 404 : 200
15
+ if response.status == 404
16
+ response.body = {
17
+ "error"=>"Unable to find object with ip of '#{ip_address}'.",
18
+ "code"=>"SoftLayer_Exception_ObjectNotFound"
19
+ }
20
+ end
21
+ response
22
+ end
23
+ end
24
+
25
+ class Real
26
+ def get_virtual_guest_by_ip(ip_address)
27
+ request(:virtual_guest, :findByIpAddress, :body => "#{ip_address}", :http_method => :POST, :query => 'objectMask=mask[datacenter,tagReferences,blockDevices,blockDeviceTemplateGroup.globalIdentifier,operatingSystem.softwareLicense.softwareDescription.referenceCode,sshKeys.id,privateNetworkOnlyFlag,userData,frontendNetworkComponents,backendNetworkComponents]')
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end