softlayer_api 3.0.0 → 3.0.1
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.
- checksums.yaml +4 -4
- data/examples/order_virtual_server.rb +1 -1
- data/lib/softlayer/Account.rb +85 -13
- data/lib/softlayer/AccountPassword.rb +356 -0
- data/lib/softlayer/BareMetalServer.rb +21 -13
- data/lib/softlayer/BareMetalServerOrder_Package.rb +30 -13
- data/lib/softlayer/Config.rb +6 -1
- data/lib/softlayer/ImageTemplate.rb +15 -5
- data/lib/softlayer/NetworkMessageDelivery.rb +130 -0
- data/lib/softlayer/NetworkService.rb +95 -0
- data/lib/softlayer/NetworkStorage.rb +340 -0
- data/lib/softlayer/NetworkStorageAllowedHost.rb +77 -0
- data/lib/softlayer/NetworkStorageCredential.rb +204 -0
- data/lib/softlayer/NetworkStorageGroup.rb +159 -0
- data/lib/softlayer/ProductItemCategory.rb +16 -11
- data/lib/softlayer/ProductPackage.rb +7 -2
- data/lib/softlayer/Server.rb +14 -0
- data/lib/softlayer/Service.rb +3 -17
- data/lib/softlayer/Software.rb +368 -0
- data/lib/softlayer/SoftwarePassword.rb +612 -0
- data/lib/softlayer/UserCustomer.rb +144 -0
- data/lib/softlayer/UserCustomerExternalBinding.rb +97 -0
- data/lib/softlayer/VirtualDiskImage.rb +181 -0
- data/lib/softlayer/VirtualDiskImageSoftware.rb +51 -0
- data/lib/softlayer/VirtualServer.rb +2 -2
- data/lib/softlayer/VirtualServerOrder_Package.rb +161 -0
- data/lib/softlayer/base.rb +1 -1
- data/lib/softlayer_api.rb +14 -0
- metadata +33 -19
@@ -131,7 +131,7 @@ module SoftLayer
|
|
131
131
|
has_active_transaction = has_sl_property? :activeTransaction
|
132
132
|
|
133
133
|
reloading_os = has_active_transaction && has_os_reload && (self.lastOperatingSystemReload['id'] == self.activeTransaction['id'])
|
134
|
-
provisioned = has_sl_property?
|
134
|
+
provisioned = has_sl_property?(:provisionDate) && ! self['provisionDate'].empty?
|
135
135
|
|
136
136
|
# a server is ready when it is provisioned, not reloading the OS
|
137
137
|
# (and if wait_for_transactions is true, when there are no active transactions).
|
@@ -313,4 +313,4 @@ module SoftLayer
|
|
313
313
|
return softlayer_client[:Virtual_Guest].object_with_id(self.id)
|
314
314
|
end
|
315
315
|
end #class VirtualServer
|
316
|
-
end
|
316
|
+
end
|
@@ -0,0 +1,161 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright (c) 2014 SoftLayer Technologies, Inc. All rights reserved.
|
3
|
+
#
|
4
|
+
# For licensing information see the LICENSE.md file in the project root.
|
5
|
+
#++
|
6
|
+
|
7
|
+
module SoftLayer
|
8
|
+
#
|
9
|
+
# This class is used to order a virtual server using a product package.
|
10
|
+
#
|
11
|
+
# Ordering a server using a product package is a more complex process than
|
12
|
+
# ordering with simple attributes (as is done by the VirtualServerServerOrder class).
|
13
|
+
# However with that complexity comes the the ability to specify the configuration
|
14
|
+
# of the server in exacting detail.
|
15
|
+
#
|
16
|
+
# To use this class, you first select a product package. The product package
|
17
|
+
# defines the base configuration of the server as well as the set of configuration
|
18
|
+
# options available for that server. To fully configure the server you must select
|
19
|
+
# the value for each configuration option.
|
20
|
+
#
|
21
|
+
# This class roughly Corresponds to the SoftLayer_Container_Product_Order_Virtual_Guest
|
22
|
+
# data type in the SoftLayer API
|
23
|
+
#
|
24
|
+
# http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Product_Order_Virtual_Guest
|
25
|
+
#
|
26
|
+
class VirtualServerOrder_Package < Server
|
27
|
+
# The following properties are required in a server order.
|
28
|
+
|
29
|
+
# The product package object (an instance of SoftLayer::ProductPackage) identifying the base
|
30
|
+
# configuration for the server. A Virtual Server product package is returned by
|
31
|
+
# SoftLayer::ProductPackage.virtual_server_package
|
32
|
+
attr_reader :package
|
33
|
+
|
34
|
+
# An instance of SoftLayer::Datacenter. The server will be provisioned in this data center.
|
35
|
+
# The set of datacenters available is determined by the package and may be obtained from
|
36
|
+
# the SoftLayer::ProductPackage object using the #datacenter_options method.
|
37
|
+
attr_accessor :datacenter
|
38
|
+
|
39
|
+
# The hostname of the server being created (i.e. 'sldn' is the hostname of sldn.softlayer.com).
|
40
|
+
attr_accessor :hostname
|
41
|
+
|
42
|
+
# The domain of the server being created (i.e. 'softlayer.com' is the domain of sldn.softlayer.com)
|
43
|
+
attr_accessor :domain
|
44
|
+
|
45
|
+
# The value of this property should be a hash. The keys of the hash are ProdcutItemCategory
|
46
|
+
# codes (like 'os' and 'ram') while the values may be Integers or Objects. The Integer values
|
47
|
+
# should be the +id+ of a +SoftLayer_Product_Item_Price+ representing the configuration option
|
48
|
+
# chosen for that category. Objects must respond to the +price_id+ message and return an integer
|
49
|
+
# that is the +id+ of a +SoftLayer_Product_Item_Price+. Instances of the ProductConfigurationOption
|
50
|
+
# class behave this way.
|
51
|
+
#
|
52
|
+
# At a minimum, the configuation_options should include entries for each of the categories
|
53
|
+
# required by the package (i.e. those returned from ProductPackage#required_categories)
|
54
|
+
attr_accessor :configuration_options
|
55
|
+
|
56
|
+
# The following properties are optional, but allow further fine tuning of
|
57
|
+
# the server
|
58
|
+
|
59
|
+
# Boolean, If true, an hourly server will be ordered, otherwise a monthly server will be ordered
|
60
|
+
# Corresponds to +useHourlyPricing+ in the SoftLayer_Container_Product_Order_Virtual_Guest container
|
61
|
+
# documentation
|
62
|
+
attr_accessor :hourly
|
63
|
+
|
64
|
+
# An instance of the SoftLayer::ImageTemplate class. Represents the image template that should
|
65
|
+
# be installed on the server.
|
66
|
+
attr_accessor :image_template
|
67
|
+
|
68
|
+
# The URI of a script to execute on the server after it has been provisioned. This may be
|
69
|
+
# any object which accepts the to_s message. The resulting string will be passed to SoftLayer API.
|
70
|
+
attr_accessor :provision_script_URI
|
71
|
+
|
72
|
+
# An array of the ids of SSH keys to install on the server upon provisioning
|
73
|
+
# To obtain a list of existing SSH keys, call getSshKeys on the SoftLayer_Account service:
|
74
|
+
# client[:Account].getSshKeys()
|
75
|
+
attr_accessor :ssh_key_ids
|
76
|
+
|
77
|
+
# String, User metadata associated with the instance
|
78
|
+
# Corresponds to +userData+ in the +SoftLayer_Virtual_Guest+ documentation
|
79
|
+
attr_accessor :user_metadata
|
80
|
+
|
81
|
+
##
|
82
|
+
# You initialize a VirtualServerOrder_Package by passing in the package that you
|
83
|
+
# are ordering from.
|
84
|
+
def initialize(client = nil)
|
85
|
+
@softlayer_client = client || Client.default_client
|
86
|
+
raise "#{__method__} requires a client but none was given and Client::default_client is not set" if !@softlayer_client
|
87
|
+
|
88
|
+
@configuration_options = []
|
89
|
+
@package = SoftLayer::ProductPackage.virtual_server_package(@softlayer_client)
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# Present the order for verification by the SoftLayer ordering system.
|
94
|
+
# The order is verified, but not executed. This should not
|
95
|
+
# change the billing of your account.
|
96
|
+
#
|
97
|
+
# If you add a block to the method call, it will receive the product
|
98
|
+
# order template before it is sent to the API. You may **carefully** make
|
99
|
+
# changes to the template to provide specialized configuration.
|
100
|
+
#
|
101
|
+
def verify
|
102
|
+
product_order = virtual_server_order
|
103
|
+
product_order = yield product_order if block_given?
|
104
|
+
softlayer_client[:Product_Order].verifyOrder(product_order)
|
105
|
+
end
|
106
|
+
|
107
|
+
##
|
108
|
+
# Submit the order to be executed by the SoftLayer ordering system.
|
109
|
+
# If successful this will probably result in additional billing items
|
110
|
+
# applied to your account!
|
111
|
+
#
|
112
|
+
# If you add a block to the method call, it will receive the product
|
113
|
+
# order template before it is sent to the API. You may **carefully** make
|
114
|
+
# changes to the template to provide specialized configuration.
|
115
|
+
#
|
116
|
+
# The return value of this call is a product order receipt. After
|
117
|
+
# submitting the order, it will proceed to Sales for authorization.
|
118
|
+
#
|
119
|
+
def place_order!
|
120
|
+
product_order = virtual_server_order
|
121
|
+
product_order = yield product_order if block_given?
|
122
|
+
softlayer_client[:Product_Order].placeOrder(product_order)
|
123
|
+
end
|
124
|
+
|
125
|
+
protected
|
126
|
+
|
127
|
+
##
|
128
|
+
# Construct and return a hash representing a +SoftLayer_Container_Product_Order_Virtual_Guest+
|
129
|
+
# based on the configuration options given.
|
130
|
+
def virtual_server_order
|
131
|
+
product_order = {
|
132
|
+
'packageId' => @package.id,
|
133
|
+
'useHourlyPricing' => !!@hourly,
|
134
|
+
'virtualGuests' => [{
|
135
|
+
'domain' => @domain,
|
136
|
+
'hostname' => @hostname
|
137
|
+
}]
|
138
|
+
}
|
139
|
+
|
140
|
+
#Note that the use of image_template and SoftLayer::ProductPackage os/guest_diskX configuration category
|
141
|
+
#item prices is mutually exclusive.
|
142
|
+
product_order['imageTemplateGlobalIdentifier'] = @image_template.global_id if @image_template
|
143
|
+
product_order['location'] = @datacenter.id if @datacenter
|
144
|
+
product_order['provisionScripts'] = [@provision_script_URI.to_s] if @provision_script_URI
|
145
|
+
product_order['sshKeys'] = [{ 'sshKeyIds' => @ssh_key_ids }] if @ssh_key_ids
|
146
|
+
product_order['virtualGuests'][0]['userData'] = @user_metadata if @user_metadata
|
147
|
+
|
148
|
+
product_order['prices'] = @configuration_options.collect do |key, value|
|
149
|
+
if value.respond_to?(:price_id)
|
150
|
+
price_id = value.price_id
|
151
|
+
else
|
152
|
+
price_id = value.to_i
|
153
|
+
end
|
154
|
+
|
155
|
+
{ 'id' => price_id }
|
156
|
+
end
|
157
|
+
|
158
|
+
product_order
|
159
|
+
end
|
160
|
+
end # VirtualServerOrder_Package
|
161
|
+
end # SoftLayer
|
data/lib/softlayer/base.rb
CHANGED
@@ -12,7 +12,7 @@ require 'rubygems'
|
|
12
12
|
module SoftLayer
|
13
13
|
# The version number (including major, minor, and bugfix numbers)
|
14
14
|
# This should change in accordance with the concept of Semantic Versioning
|
15
|
-
VERSION = "3.0.
|
15
|
+
VERSION = "3.0.1" # version history in the CHANGELOG.textile file at the root of the source
|
16
16
|
|
17
17
|
# The base URL of the SoftLayer API available to the public internet.
|
18
18
|
API_PUBLIC_ENDPOINT = 'https://api.softlayer.com/xmlrpc/v3/'
|
data/lib/softlayer_api.rb
CHANGED
@@ -22,19 +22,33 @@ require 'softlayer/ModelBase'
|
|
22
22
|
require 'softlayer/Datacenter'
|
23
23
|
require 'softlayer/DynamicAttribute'
|
24
24
|
require 'softlayer/Account'
|
25
|
+
require 'softlayer/AccountPassword'
|
25
26
|
require 'softlayer/Server'
|
26
27
|
require 'softlayer/BareMetalServer'
|
27
28
|
require 'softlayer/BareMetalServerOrder'
|
28
29
|
require 'softlayer/BareMetalServerOrder_Package'
|
29
30
|
require 'softlayer/ImageTemplate'
|
30
31
|
require 'softlayer/NetworkComponent'
|
32
|
+
require 'softlayer/NetworkMessageDelivery'
|
33
|
+
require 'softlayer/NetworkService'
|
34
|
+
require 'softlayer/NetworkStorageAllowedHost'
|
35
|
+
require 'softlayer/NetworkStorageCredential'
|
36
|
+
require 'softlayer/NetworkStorageGroup'
|
37
|
+
require 'softlayer/NetworkStorage'
|
31
38
|
require 'softlayer/ProductPackage'
|
32
39
|
require 'softlayer/ProductItemCategory'
|
33
40
|
require 'softlayer/ServerFirewall'
|
34
41
|
require 'softlayer/ServerFirewallOrder'
|
42
|
+
require 'softlayer/SoftwarePassword'
|
43
|
+
require 'softlayer/Software'
|
35
44
|
require 'softlayer/Ticket'
|
45
|
+
require 'softlayer/UserCustomerExternalBinding'
|
46
|
+
require 'softlayer/UserCustomer'
|
47
|
+
require 'softlayer/VirtualDiskImage'
|
48
|
+
require 'softlayer/VirtualDiskImageSoftware'
|
36
49
|
require 'softlayer/VirtualServer'
|
37
50
|
require 'softlayer/VirtualServerOrder'
|
51
|
+
require 'softlayer/VirtualServerOrder_Package'
|
38
52
|
require 'softlayer/VirtualServerUpgradeOrder'
|
39
53
|
require 'softlayer/VLANFirewall'
|
40
54
|
require 'softlayer/VLANFirewallOrder'
|
metadata
CHANGED
@@ -1,103 +1,103 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: softlayer_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SoftLayer Development Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: configparser
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.1.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.1.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rdoc
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 2.4.2
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.4.2
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: json
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.8'
|
76
|
-
- -
|
76
|
+
- - ">="
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: 1.8.1
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
|
-
- - ~>
|
83
|
+
- - "~>"
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '1.8'
|
86
|
-
- -
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: 1.8.1
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: coveralls
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- -
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- -
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
description: The softlayer_api gem offers a convenient mechanism for invoking the
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- examples/ticket_info.rb
|
119
119
|
- lib/softlayer/APIParameterFilter.rb
|
120
120
|
- lib/softlayer/Account.rb
|
121
|
+
- lib/softlayer/AccountPassword.rb
|
121
122
|
- lib/softlayer/BareMetalServer.rb
|
122
123
|
- lib/softlayer/BareMetalServerOrder.rb
|
123
124
|
- lib/softlayer/BareMetalServerOrder_Package.rb
|
@@ -128,6 +129,12 @@ files:
|
|
128
129
|
- lib/softlayer/ImageTemplate.rb
|
129
130
|
- lib/softlayer/ModelBase.rb
|
130
131
|
- lib/softlayer/NetworkComponent.rb
|
132
|
+
- lib/softlayer/NetworkMessageDelivery.rb
|
133
|
+
- lib/softlayer/NetworkService.rb
|
134
|
+
- lib/softlayer/NetworkStorage.rb
|
135
|
+
- lib/softlayer/NetworkStorageAllowedHost.rb
|
136
|
+
- lib/softlayer/NetworkStorageCredential.rb
|
137
|
+
- lib/softlayer/NetworkStorageGroup.rb
|
131
138
|
- lib/softlayer/ObjectFilter.rb
|
132
139
|
- lib/softlayer/ObjectMaskParser.rb
|
133
140
|
- lib/softlayer/ObjectMaskProperty.rb
|
@@ -139,11 +146,18 @@ files:
|
|
139
146
|
- lib/softlayer/ServerFirewall.rb
|
140
147
|
- lib/softlayer/ServerFirewallOrder.rb
|
141
148
|
- lib/softlayer/Service.rb
|
149
|
+
- lib/softlayer/Software.rb
|
150
|
+
- lib/softlayer/SoftwarePassword.rb
|
142
151
|
- lib/softlayer/Ticket.rb
|
152
|
+
- lib/softlayer/UserCustomer.rb
|
153
|
+
- lib/softlayer/UserCustomerExternalBinding.rb
|
143
154
|
- lib/softlayer/VLANFirewall.rb
|
144
155
|
- lib/softlayer/VLANFirewallOrder.rb
|
156
|
+
- lib/softlayer/VirtualDiskImage.rb
|
157
|
+
- lib/softlayer/VirtualDiskImageSoftware.rb
|
145
158
|
- lib/softlayer/VirtualServer.rb
|
146
159
|
- lib/softlayer/VirtualServerOrder.rb
|
160
|
+
- lib/softlayer/VirtualServerOrder_Package.rb
|
147
161
|
- lib/softlayer/VirtualServerUpgradeOrder.rb
|
148
162
|
- lib/softlayer/base.rb
|
149
163
|
- lib/softlayer/object_mask_helpers.rb
|
@@ -158,17 +172,17 @@ require_paths:
|
|
158
172
|
- lib
|
159
173
|
required_ruby_version: !ruby/object:Gem::Requirement
|
160
174
|
requirements:
|
161
|
-
- -
|
175
|
+
- - ">="
|
162
176
|
- !ruby/object:Gem::Version
|
163
177
|
version: 1.9.2
|
164
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
179
|
requirements:
|
166
|
-
- -
|
180
|
+
- - ">="
|
167
181
|
- !ruby/object:Gem::Version
|
168
182
|
version: '0'
|
169
183
|
requirements: []
|
170
184
|
rubyforge_project:
|
171
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.4.5
|
172
186
|
signing_key:
|
173
187
|
specification_version: 4
|
174
188
|
summary: Library for accessing the SoftLayer API
|