cft_smartcloud 0.1.9 → 0.2.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.
- data/CHANGELOG +6 -0
- data/VERSION +1 -1
- data/cft_smartcloud.gemspec +2 -91
- data/lib/mock_smartcloud.rb +4 -2
- data/lib/smartcloud.rb +73 -75
- metadata +4 -93
- data/lib/cli_tools/README.txt +0 -50
- data/lib/cli_tools/ic-add-keypair.cmd +0 -29
- data/lib/cli_tools/ic-add-keypair.sh +0 -15
- data/lib/cli_tools/ic-allocate-address.cmd +0 -29
- data/lib/cli_tools/ic-allocate-address.sh +0 -14
- data/lib/cli_tools/ic-attach-volume.cmd +0 -27
- data/lib/cli_tools/ic-attach-volume.sh +0 -27
- data/lib/cli_tools/ic-clone-image.cmd +0 -27
- data/lib/cli_tools/ic-clone-image.sh +0 -14
- data/lib/cli_tools/ic-clone-volume.cmd +0 -27
- data/lib/cli_tools/ic-clone-volume.sh +0 -60
- data/lib/cli_tools/ic-cmd.cmd +0 -41
- data/lib/cli_tools/ic-cmd.sh +0 -38
- data/lib/cli_tools/ic-create-instance.cmd +0 -27
- data/lib/cli_tools/ic-create-instance.sh +0 -14
- data/lib/cli_tools/ic-create-password.cmd +0 -27
- data/lib/cli_tools/ic-create-password.sh +0 -14
- data/lib/cli_tools/ic-create-volume.cmd +0 -27
- data/lib/cli_tools/ic-create-volume.sh +0 -14
- data/lib/cli_tools/ic-delete-image.cmd +0 -27
- data/lib/cli_tools/ic-delete-image.sh +0 -14
- data/lib/cli_tools/ic-delete-instance.cmd +0 -27
- data/lib/cli_tools/ic-delete-instance.sh +0 -14
- data/lib/cli_tools/ic-delete-volume.cmd +0 -27
- data/lib/cli_tools/ic-delete-volume.sh +0 -14
- data/lib/cli_tools/ic-describe-address-offerings.cmd +0 -27
- data/lib/cli_tools/ic-describe-address-offerings.sh +0 -14
- data/lib/cli_tools/ic-describe-addresses.cmd +0 -27
- data/lib/cli_tools/ic-describe-addresses.sh +0 -14
- data/lib/cli_tools/ic-describe-image-agreement.cmd +0 -27
- data/lib/cli_tools/ic-describe-image-agreement.sh +0 -14
- data/lib/cli_tools/ic-describe-image.cmd +0 -27
- data/lib/cli_tools/ic-describe-image.sh +0 -14
- data/lib/cli_tools/ic-describe-images.cmd +0 -27
- data/lib/cli_tools/ic-describe-images.sh +0 -14
- data/lib/cli_tools/ic-describe-instance.cmd +0 -27
- data/lib/cli_tools/ic-describe-instance.sh +0 -14
- data/lib/cli_tools/ic-describe-instances.cmd +0 -27
- data/lib/cli_tools/ic-describe-instances.sh +0 -14
- data/lib/cli_tools/ic-describe-keypair.cmd +0 -27
- data/lib/cli_tools/ic-describe-keypair.sh +0 -14
- data/lib/cli_tools/ic-describe-keypairs.cmd +0 -27
- data/lib/cli_tools/ic-describe-keypairs.sh +0 -14
- data/lib/cli_tools/ic-describe-location.cmd +0 -14
- data/lib/cli_tools/ic-describe-location.sh +0 -14
- data/lib/cli_tools/ic-describe-locations.cmd +0 -14
- data/lib/cli_tools/ic-describe-locations.sh +0 -14
- data/lib/cli_tools/ic-describe-request.cmd +0 -27
- data/lib/cli_tools/ic-describe-request.sh +0 -14
- data/lib/cli_tools/ic-describe-vlans.cmd +0 -27
- data/lib/cli_tools/ic-describe-vlans.sh +0 -14
- data/lib/cli_tools/ic-describe-volume-offerings.cmd +0 -27
- data/lib/cli_tools/ic-describe-volume-offerings.sh +0 -14
- data/lib/cli_tools/ic-describe-volume.cmd +0 -27
- data/lib/cli_tools/ic-describe-volume.sh +0 -14
- data/lib/cli_tools/ic-describe-volumes.cmd +0 -27
- data/lib/cli_tools/ic-describe-volumes.sh +0 -14
- data/lib/cli_tools/ic-detach-volume.cmd +0 -27
- data/lib/cli_tools/ic-detach-volume.sh +0 -27
- data/lib/cli_tools/ic-extend-reservation.cmd +0 -27
- data/lib/cli_tools/ic-extend-reservation.sh +0 -14
- data/lib/cli_tools/ic-generate-keypair.cmd +0 -27
- data/lib/cli_tools/ic-generate-keypair.sh +0 -14
- data/lib/cli_tools/ic-release-address.cmd +0 -27
- data/lib/cli_tools/ic-release-address.sh +0 -14
- data/lib/cli_tools/ic-remove-keypair.cmd +0 -27
- data/lib/cli_tools/ic-remove-keypair.sh +0 -14
- data/lib/cli_tools/ic-restart-instance.cmd +0 -27
- data/lib/cli_tools/ic-restart-instance.sh +0 -14
- data/lib/cli_tools/ic-save-instance.cmd +0 -27
- data/lib/cli_tools/ic-save-instance.sh +0 -14
- data/lib/cli_tools/ic-set-default-key.cmd +0 -27
- data/lib/cli_tools/ic-set-default-key.sh +0 -14
- data/lib/cli_tools/ic-update-instance.cmd +0 -27
- data/lib/cli_tools/ic-update-instance.sh +0 -14
- data/lib/cli_tools/ic-update-keypair.cmd +0 -27
- data/lib/cli_tools/ic-update-keypair.sh +0 -14
- data/lib/cli_tools/lib/DeveloperCloud_API_Client_JAR.jar +0 -0
- data/lib/cli_tools/lib/DeveloperCloud_CMD_Tool.jar +0 -0
- data/lib/cli_tools/lib/commons-beanutils-1.6.1.jar +0 -0
- data/lib/cli_tools/lib/commons-cli-1.2.jar +0 -0
- data/lib/cli_tools/lib/commons-codec-1.3.jar +0 -0
- data/lib/cli_tools/lib/commons-collections-3.2.1.jar +0 -0
- data/lib/cli_tools/lib/commons-digester-1.8.jar +0 -0
- data/lib/cli_tools/lib/commons-httpclient-3.1.jar +0 -0
- data/lib/cli_tools/lib/commons-lang-2.3.jar +0 -0
- data/lib/cli_tools/lib/commons-logging-1.1.1.jar +0 -0
- data/lib/cli_tools/logging.properties +0 -7
- data/lib/cli_tools/manifest.rmd +0 -26
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
2011-09-21 0.2.1:
|
|
2
|
+
* Added sleep/retry logic for intermittent 500 errors returned by cloud
|
|
3
|
+
|
|
4
|
+
2011-09-13 0.2.0:
|
|
5
|
+
* Clone operation now done using API instead of CLI
|
|
6
|
+
|
|
1
7
|
2011-08-09 0.1.8:
|
|
2
8
|
* Updated create_instance to return the Instance object rather
|
|
3
9
|
than the xml request, for consistency with describe_instance
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.2.2
|
data/cft_smartcloud.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{cft_smartcloud}
|
|
8
|
-
s.version = "0.
|
|
8
|
+
s.version = "0.2.2"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["yan", "cohesive"]
|
|
12
|
-
s.date = %q{2011-
|
|
12
|
+
s.date = %q{2011-10-17}
|
|
13
13
|
s.description = %q{CohesiveFT Ruby Interface for IBM SmartCloud and 'smartcloud' command line helper.}
|
|
14
14
|
s.email = %q{yan.pritzker@cohesiveft.com}
|
|
15
15
|
s.executables = ["cft_smartcloud", "smartcloud"]
|
|
@@ -27,95 +27,6 @@ Gem::Specification.new do |s|
|
|
|
27
27
|
"bin/cft_smartcloud",
|
|
28
28
|
"bin/smartcloud",
|
|
29
29
|
"cft_smartcloud.gemspec",
|
|
30
|
-
"lib/cli_tools/README.txt",
|
|
31
|
-
"lib/cli_tools/ic-add-keypair.cmd",
|
|
32
|
-
"lib/cli_tools/ic-add-keypair.sh",
|
|
33
|
-
"lib/cli_tools/ic-allocate-address.cmd",
|
|
34
|
-
"lib/cli_tools/ic-allocate-address.sh",
|
|
35
|
-
"lib/cli_tools/ic-attach-volume.cmd",
|
|
36
|
-
"lib/cli_tools/ic-attach-volume.sh",
|
|
37
|
-
"lib/cli_tools/ic-clone-image.cmd",
|
|
38
|
-
"lib/cli_tools/ic-clone-image.sh",
|
|
39
|
-
"lib/cli_tools/ic-clone-volume.cmd",
|
|
40
|
-
"lib/cli_tools/ic-clone-volume.sh",
|
|
41
|
-
"lib/cli_tools/ic-cmd.cmd",
|
|
42
|
-
"lib/cli_tools/ic-cmd.sh",
|
|
43
|
-
"lib/cli_tools/ic-create-instance.cmd",
|
|
44
|
-
"lib/cli_tools/ic-create-instance.sh",
|
|
45
|
-
"lib/cli_tools/ic-create-password.cmd",
|
|
46
|
-
"lib/cli_tools/ic-create-password.sh",
|
|
47
|
-
"lib/cli_tools/ic-create-volume.cmd",
|
|
48
|
-
"lib/cli_tools/ic-create-volume.sh",
|
|
49
|
-
"lib/cli_tools/ic-delete-image.cmd",
|
|
50
|
-
"lib/cli_tools/ic-delete-image.sh",
|
|
51
|
-
"lib/cli_tools/ic-delete-instance.cmd",
|
|
52
|
-
"lib/cli_tools/ic-delete-instance.sh",
|
|
53
|
-
"lib/cli_tools/ic-delete-volume.cmd",
|
|
54
|
-
"lib/cli_tools/ic-delete-volume.sh",
|
|
55
|
-
"lib/cli_tools/ic-describe-address-offerings.cmd",
|
|
56
|
-
"lib/cli_tools/ic-describe-address-offerings.sh",
|
|
57
|
-
"lib/cli_tools/ic-describe-addresses.cmd",
|
|
58
|
-
"lib/cli_tools/ic-describe-addresses.sh",
|
|
59
|
-
"lib/cli_tools/ic-describe-image-agreement.cmd",
|
|
60
|
-
"lib/cli_tools/ic-describe-image-agreement.sh",
|
|
61
|
-
"lib/cli_tools/ic-describe-image.cmd",
|
|
62
|
-
"lib/cli_tools/ic-describe-image.sh",
|
|
63
|
-
"lib/cli_tools/ic-describe-images.cmd",
|
|
64
|
-
"lib/cli_tools/ic-describe-images.sh",
|
|
65
|
-
"lib/cli_tools/ic-describe-instance.cmd",
|
|
66
|
-
"lib/cli_tools/ic-describe-instance.sh",
|
|
67
|
-
"lib/cli_tools/ic-describe-instances.cmd",
|
|
68
|
-
"lib/cli_tools/ic-describe-instances.sh",
|
|
69
|
-
"lib/cli_tools/ic-describe-keypair.cmd",
|
|
70
|
-
"lib/cli_tools/ic-describe-keypair.sh",
|
|
71
|
-
"lib/cli_tools/ic-describe-keypairs.cmd",
|
|
72
|
-
"lib/cli_tools/ic-describe-keypairs.sh",
|
|
73
|
-
"lib/cli_tools/ic-describe-location.cmd",
|
|
74
|
-
"lib/cli_tools/ic-describe-location.sh",
|
|
75
|
-
"lib/cli_tools/ic-describe-locations.cmd",
|
|
76
|
-
"lib/cli_tools/ic-describe-locations.sh",
|
|
77
|
-
"lib/cli_tools/ic-describe-request.cmd",
|
|
78
|
-
"lib/cli_tools/ic-describe-request.sh",
|
|
79
|
-
"lib/cli_tools/ic-describe-vlans.cmd",
|
|
80
|
-
"lib/cli_tools/ic-describe-vlans.sh",
|
|
81
|
-
"lib/cli_tools/ic-describe-volume-offerings.cmd",
|
|
82
|
-
"lib/cli_tools/ic-describe-volume-offerings.sh",
|
|
83
|
-
"lib/cli_tools/ic-describe-volume.cmd",
|
|
84
|
-
"lib/cli_tools/ic-describe-volume.sh",
|
|
85
|
-
"lib/cli_tools/ic-describe-volumes.cmd",
|
|
86
|
-
"lib/cli_tools/ic-describe-volumes.sh",
|
|
87
|
-
"lib/cli_tools/ic-detach-volume.cmd",
|
|
88
|
-
"lib/cli_tools/ic-detach-volume.sh",
|
|
89
|
-
"lib/cli_tools/ic-extend-reservation.cmd",
|
|
90
|
-
"lib/cli_tools/ic-extend-reservation.sh",
|
|
91
|
-
"lib/cli_tools/ic-generate-keypair.cmd",
|
|
92
|
-
"lib/cli_tools/ic-generate-keypair.sh",
|
|
93
|
-
"lib/cli_tools/ic-release-address.cmd",
|
|
94
|
-
"lib/cli_tools/ic-release-address.sh",
|
|
95
|
-
"lib/cli_tools/ic-remove-keypair.cmd",
|
|
96
|
-
"lib/cli_tools/ic-remove-keypair.sh",
|
|
97
|
-
"lib/cli_tools/ic-restart-instance.cmd",
|
|
98
|
-
"lib/cli_tools/ic-restart-instance.sh",
|
|
99
|
-
"lib/cli_tools/ic-save-instance.cmd",
|
|
100
|
-
"lib/cli_tools/ic-save-instance.sh",
|
|
101
|
-
"lib/cli_tools/ic-set-default-key.cmd",
|
|
102
|
-
"lib/cli_tools/ic-set-default-key.sh",
|
|
103
|
-
"lib/cli_tools/ic-update-instance.cmd",
|
|
104
|
-
"lib/cli_tools/ic-update-instance.sh",
|
|
105
|
-
"lib/cli_tools/ic-update-keypair.cmd",
|
|
106
|
-
"lib/cli_tools/ic-update-keypair.sh",
|
|
107
|
-
"lib/cli_tools/lib/DeveloperCloud_API_Client_JAR.jar",
|
|
108
|
-
"lib/cli_tools/lib/DeveloperCloud_CMD_Tool.jar",
|
|
109
|
-
"lib/cli_tools/lib/commons-beanutils-1.6.1.jar",
|
|
110
|
-
"lib/cli_tools/lib/commons-cli-1.2.jar",
|
|
111
|
-
"lib/cli_tools/lib/commons-codec-1.3.jar",
|
|
112
|
-
"lib/cli_tools/lib/commons-collections-3.2.1.jar",
|
|
113
|
-
"lib/cli_tools/lib/commons-digester-1.8.jar",
|
|
114
|
-
"lib/cli_tools/lib/commons-httpclient-3.1.jar",
|
|
115
|
-
"lib/cli_tools/lib/commons-lang-2.3.jar",
|
|
116
|
-
"lib/cli_tools/lib/commons-logging-1.1.1.jar",
|
|
117
|
-
"lib/cli_tools/logging.properties",
|
|
118
|
-
"lib/cli_tools/manifest.rmd",
|
|
119
30
|
"lib/config/config.yml",
|
|
120
31
|
"lib/hash_fix.rb",
|
|
121
32
|
"lib/mime-types-1.16/History.txt",
|
data/lib/mock_smartcloud.rb
CHANGED
|
@@ -22,6 +22,8 @@ class MockSmartCloud
|
|
|
22
22
|
"Price"=>{"Rate"=>"0.21", "PricePerQuantity"=>"1", "UnitOfMeasure"=>"UHR ", "CountryCode"=>"897", "CurrencyCode"=>"USD"}},
|
|
23
23
|
{"Label"=>"Copper 32 bit", "ID"=>"COP32.1/2048/60",
|
|
24
24
|
"Price"=>{"Rate"=>"0.21", "PricePerQuantity"=>"1", "UnitOfMeasure"=>"UHR ", "CountryCode"=>"897", "CurrencyCode"=>"USD"}},
|
|
25
|
+
{"Label"=>"Silver 32 bit", "ID"=>"SLV32.2/4096/60*350",
|
|
26
|
+
"Price"=>{"Rate"=>"0.21", "PricePerQuantity"=>"1", "UnitOfMeasure"=>"UHR ", "CountryCode"=>"897", "CurrencyCode"=>"USD"}},
|
|
25
27
|
]
|
|
26
28
|
},
|
|
27
29
|
"Name"=>"CohesiveFT VPN-Cubed Datacenter Connect V2.0.0 - BYOL (TOR)", "Location"=>"101", "ProductCodes"=>{"ProductCode"=>"caondc13bV97Kg5TLyGNodD9or7gA"}, "Documentation"=>"https://www-147.ibm.com/cloud/enterprise/ram.ws/RAMSecure/artifact/{974E595E-566E-87E3-A483-AC0FC468C4D9}/1.0/GettingStarted.html", "ID"=>"20016530", "Manifest"=>"https://www-147.ibm.com/cloud/enterprise/ram.ws/RAMSecure/artifact/{974E595E-566E-87E3-A483-AC0FC468C4D9}/1.0/parameters.xml", "Description"=>"CohesiveFT VPN-Cubed 2.0.0 UL - for TOR datacenter", "State"=>"AVAILABLE", "Visibility"=>"PUBLIC", "Platform"=>"Red Hat Enterprise Linux/5.4"}
|
|
@@ -32,7 +34,7 @@ class MockSmartCloud
|
|
|
32
34
|
end
|
|
33
35
|
|
|
34
36
|
def create_volume(*args)
|
|
35
|
-
|
|
37
|
+
"12345"
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
def describe_volume(*args)
|
|
@@ -40,7 +42,7 @@ class MockSmartCloud
|
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
def clone_volume(*args)
|
|
43
|
-
|
|
45
|
+
"555555"
|
|
44
46
|
end
|
|
45
47
|
|
|
46
48
|
def restart_instance(*args)
|
data/lib/smartcloud.rb
CHANGED
|
@@ -31,6 +31,10 @@ class IBMSmartCloud
|
|
|
31
31
|
attr_accessor :logger
|
|
32
32
|
|
|
33
33
|
def initialize(username, password, logger=nil, debug=false)
|
|
34
|
+
# For handling errors
|
|
35
|
+
@retries = 120
|
|
36
|
+
@sleep_interval = 30
|
|
37
|
+
|
|
34
38
|
@username = username
|
|
35
39
|
@password = password
|
|
36
40
|
@logger = logger || SmartcloudLogger.new(STDOUT)
|
|
@@ -139,9 +143,9 @@ class IBMSmartCloud
|
|
|
139
143
|
instance_params.delete("description")
|
|
140
144
|
|
|
141
145
|
# configuration data has to be changed from a string like
|
|
142
|
-
# <configuration>{contextmanager:
|
|
146
|
+
# <configuration>{contextmanager:test-c3-master.cohesiveft.com,clustername:TEST_poc_pk0515,role:[nfs-client-setup|newyork_master_refdata_member|install-luci|rhel-openlikewise-client-setup|join-domain],hostname:r550n107}</configuration>
|
|
143
147
|
# to a standard list of POST params like
|
|
144
|
-
# contextmanager=
|
|
148
|
+
# contextmanager=test-c3-mager&clustername=TEST...
|
|
145
149
|
configuration_data = instance_params.delete("configuration") || instance_params.delete("ConfigurationData")
|
|
146
150
|
if configuration_data
|
|
147
151
|
if configuration_data =~ /\s+/
|
|
@@ -203,17 +207,8 @@ class IBMSmartCloud
|
|
|
203
207
|
# TODO: the API call does not work, we have to use the cli for now
|
|
204
208
|
args :clone_volume, [:name, :source_disk_id]
|
|
205
209
|
def clone_volume(name, source_disk_id)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
# offering = describe_volume_offerings(original_disk.Location).detect {|offer| offer.ID == original_disk.OfferingID}
|
|
209
|
-
# logger.info "Original volume size: #{offering.Name}"
|
|
210
|
-
# result = post("/storage", :name => name, :SourceDiskID => source_disk_id, :format => original_disk.Format.upcase, :location => original_disk.Location, :size => offering.Name, :offeringID => original_disk.OfferingID )
|
|
211
|
-
# result.Volume.ID
|
|
212
|
-
|
|
213
|
-
create_password_file
|
|
214
|
-
result = run_ibm_tool("ic-clone-volume.sh -n #{name} -S #{source_disk_id}")
|
|
215
|
-
result =~ /ID : (.*)/
|
|
216
|
-
return $1 # grab the id of the created volume
|
|
210
|
+
result = post("/storage", :name => name, :sourceDiskID => source_disk_id, :type => 'clone')
|
|
211
|
+
result.Volume.ID
|
|
217
212
|
end
|
|
218
213
|
|
|
219
214
|
args :attach_volume, [:instance_id, :volume_id]
|
|
@@ -244,10 +239,16 @@ class IBMSmartCloud
|
|
|
244
239
|
end
|
|
245
240
|
|
|
246
241
|
# generates a keypair and returns the private key
|
|
247
|
-
args :generate_keypair, [:name]
|
|
248
|
-
def generate_keypair(name)
|
|
249
|
-
|
|
250
|
-
|
|
242
|
+
args :generate_keypair, [{:name=>:req}, {:publicKey=>:opt}], %{ If publicKey parameter is given, creates a key with that public key, and returns nothing. If public key is omitted, generates a new key and returns the pirvate key.}
|
|
243
|
+
def generate_keypair(name, publicKey=nil)
|
|
244
|
+
options = {:name => name}
|
|
245
|
+
options[:publicKey] = publicKey if publicKey
|
|
246
|
+
response = post("/keys", options)
|
|
247
|
+
if publicKey
|
|
248
|
+
true
|
|
249
|
+
else
|
|
250
|
+
response.PrivateKey.KeyMaterial
|
|
251
|
+
end
|
|
251
252
|
end
|
|
252
253
|
|
|
253
254
|
args :remove_keypair, [:name]
|
|
@@ -261,6 +262,11 @@ class IBMSmartCloud
|
|
|
261
262
|
get("/keys/#{name}").PublicKey
|
|
262
263
|
end
|
|
263
264
|
|
|
265
|
+
args :update_key, [:name, :publicKey]
|
|
266
|
+
def update_key(name, key)
|
|
267
|
+
put("/keys/#{name}", :publicKey => key)
|
|
268
|
+
end
|
|
269
|
+
|
|
264
270
|
# If address_id is supplied, will return info on that address only
|
|
265
271
|
args :describe_addresses, [{:address_id=>:opt}]
|
|
266
272
|
def describe_addresses(address_id=nil)
|
|
@@ -518,7 +524,8 @@ class IBMSmartCloud
|
|
|
518
524
|
# Also takes an :order param, examples:
|
|
519
525
|
# display_instances(:order => "Name") or :order => "LaunchTime"
|
|
520
526
|
#
|
|
521
|
-
|
|
527
|
+
|
|
528
|
+
args :display_instances, [:filters => :opt], %{example: smartcloud "display_instances(:name=>'matchMe')"}
|
|
522
529
|
def display_instances(filters={})
|
|
523
530
|
instances = describe_instances(filters)
|
|
524
531
|
|
|
@@ -563,41 +570,68 @@ class IBMSmartCloud
|
|
|
563
570
|
end
|
|
564
571
|
|
|
565
572
|
def delete(path)
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
573
|
+
rescue_and_retry_errors do
|
|
574
|
+
output = RestClient.delete File.join(@api_url, path), :accept => :response
|
|
575
|
+
response = XmlSimple.xml_in(output, {'ForceArray' => nil})
|
|
576
|
+
end
|
|
570
577
|
end
|
|
571
578
|
|
|
572
579
|
def put(path, params={}, param_remap={})
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
580
|
+
rescue_and_retry_errors do
|
|
581
|
+
param_string = make_param_string(params, param_remap)
|
|
582
|
+
output = RestClient.put File.join(@api_url, path), param_string, :accept => :response
|
|
583
|
+
response = XmlSimple.xml_in(output, {'ForceArray' => nil})
|
|
584
|
+
end
|
|
578
585
|
end
|
|
579
586
|
|
|
580
587
|
def get(path)
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
588
|
+
rescue_and_retry_errors do
|
|
589
|
+
output = RestClient.get File.join(@api_url, path), :accept => :response
|
|
590
|
+
response = XmlSimple.xml_in(output, {'ForceArray' => nil})
|
|
591
|
+
end
|
|
585
592
|
end
|
|
586
593
|
|
|
587
594
|
def post(path, params={}, param_remap=nil)
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
raise_restclient_error(e)
|
|
595
|
+
rescue_and_retry_errors do
|
|
596
|
+
param_string = make_param_string(params, param_remap)
|
|
597
|
+
output = RestClient.post File.join(@api_url, path), param_string, :accept => :response
|
|
598
|
+
response = XmlSimple.xml_in(output, {'ForceArray' => nil})
|
|
599
|
+
end
|
|
594
600
|
end
|
|
595
601
|
|
|
596
602
|
private
|
|
603
|
+
|
|
604
|
+
# Custom exception matcher
|
|
605
|
+
def timeouts_and_500s
|
|
606
|
+
m = Module.new
|
|
607
|
+
(class << m; self; end).instance_eval do
|
|
608
|
+
define_method(:===) do |e|
|
|
609
|
+
[RestClient::RequestTimeout, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ETIMEDOUT,
|
|
610
|
+
EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError].include?(e.class)|| e.message =~ /500/
|
|
611
|
+
end
|
|
612
|
+
end
|
|
613
|
+
m
|
|
614
|
+
end
|
|
615
|
+
|
|
597
616
|
# rest client error details are in the response so we want to
|
|
598
617
|
# display that as the error, otherwise we lose that info
|
|
599
|
-
def
|
|
600
|
-
|
|
618
|
+
def rescue_and_retry_errors(&block)
|
|
619
|
+
block.call
|
|
620
|
+
rescue timeouts_and_500s => e
|
|
621
|
+
is_500 = e.message =~ /500/
|
|
622
|
+
|
|
623
|
+
@retries -= 1
|
|
624
|
+
if @retries >= 0
|
|
625
|
+
logger.warn e.message
|
|
626
|
+
logger.warn "Caught #{is_500 ? "500" : "Timeout"} Error from cloud API server. Server is down or malfunctioning. Will sleep #{@sleep_interval}s and retry. Retries remaining: #{@retries}..."
|
|
627
|
+
sleep(@sleep_interval)
|
|
628
|
+
retry
|
|
629
|
+
else
|
|
630
|
+
logger.warn "Reached maximum retry limit for this error. Aborting."
|
|
631
|
+
raise e
|
|
632
|
+
end
|
|
633
|
+
rescue => e
|
|
634
|
+
if e.respond_to?(:response)
|
|
601
635
|
raise "#{e.message} - #{e.response}"
|
|
602
636
|
else
|
|
603
637
|
raise e
|
|
@@ -653,42 +687,6 @@ class IBMSmartCloud
|
|
|
653
687
|
array_or_object.is_a?(Array) ? array_or_object : [array_or_object]
|
|
654
688
|
end
|
|
655
689
|
|
|
656
|
-
# TODO: all methods below here can be nuked once CLI tools are removed
|
|
657
|
-
def run_ibm_tool(command)
|
|
658
|
-
FileUtils.mkdir_p(File.join(IBM_TOOLS_HOME, 'logs'))
|
|
659
|
-
cmd = "cd #{IBM_TOOLS_HOME} && ./#{command} -u #{@username} -w #{passphrase} -g #{password_file}"
|
|
660
|
-
logger.debug cmd
|
|
661
|
-
output = if @debug
|
|
662
|
-
IBMMockResponseGenerator.respond(command)
|
|
663
|
-
else
|
|
664
|
-
`#{cmd}`
|
|
665
|
-
end
|
|
666
|
-
|
|
667
|
-
logger.debug output
|
|
668
|
-
|
|
669
|
-
if output =~ /ErrorMessage : (.*)/
|
|
670
|
-
raise $1 # raise the error message matched above
|
|
671
|
-
else
|
|
672
|
-
return output
|
|
673
|
-
end
|
|
674
|
-
end
|
|
675
|
-
|
|
676
|
-
def create_password_file
|
|
677
|
-
# if no passphrase or password file is supplied, we'll generate it
|
|
678
|
-
run_ibm_tool("ic-create-password.sh -u #{@username} -p #{@password}")
|
|
679
|
-
end
|
|
680
|
-
|
|
681
|
-
def password_file
|
|
682
|
-
@password_file ||= "/tmp/smrtcloud-pwfile-#{Time.now.to_i.to_s}"
|
|
683
|
-
end
|
|
684
|
-
|
|
685
|
-
def passphrase
|
|
686
|
-
@passphrase ||= Time.now.to_i.to_s
|
|
687
|
-
end
|
|
688
|
-
# End CLI tool helpers
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
690
|
end
|
|
693
691
|
|
|
694
692
|
# predefine an instance for convenience
|
metadata
CHANGED
|
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
|
4
4
|
prerelease: false
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
version: 0.
|
|
7
|
+
- 2
|
|
8
|
+
- 2
|
|
9
|
+
version: 0.2.2
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- yan
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-
|
|
18
|
+
date: 2011-10-17 00:00:00 -07:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies: []
|
|
21
21
|
|
|
@@ -39,95 +39,6 @@ files:
|
|
|
39
39
|
- bin/cft_smartcloud
|
|
40
40
|
- bin/smartcloud
|
|
41
41
|
- cft_smartcloud.gemspec
|
|
42
|
-
- lib/cli_tools/README.txt
|
|
43
|
-
- lib/cli_tools/ic-add-keypair.cmd
|
|
44
|
-
- lib/cli_tools/ic-add-keypair.sh
|
|
45
|
-
- lib/cli_tools/ic-allocate-address.cmd
|
|
46
|
-
- lib/cli_tools/ic-allocate-address.sh
|
|
47
|
-
- lib/cli_tools/ic-attach-volume.cmd
|
|
48
|
-
- lib/cli_tools/ic-attach-volume.sh
|
|
49
|
-
- lib/cli_tools/ic-clone-image.cmd
|
|
50
|
-
- lib/cli_tools/ic-clone-image.sh
|
|
51
|
-
- lib/cli_tools/ic-clone-volume.cmd
|
|
52
|
-
- lib/cli_tools/ic-clone-volume.sh
|
|
53
|
-
- lib/cli_tools/ic-cmd.cmd
|
|
54
|
-
- lib/cli_tools/ic-cmd.sh
|
|
55
|
-
- lib/cli_tools/ic-create-instance.cmd
|
|
56
|
-
- lib/cli_tools/ic-create-instance.sh
|
|
57
|
-
- lib/cli_tools/ic-create-password.cmd
|
|
58
|
-
- lib/cli_tools/ic-create-password.sh
|
|
59
|
-
- lib/cli_tools/ic-create-volume.cmd
|
|
60
|
-
- lib/cli_tools/ic-create-volume.sh
|
|
61
|
-
- lib/cli_tools/ic-delete-image.cmd
|
|
62
|
-
- lib/cli_tools/ic-delete-image.sh
|
|
63
|
-
- lib/cli_tools/ic-delete-instance.cmd
|
|
64
|
-
- lib/cli_tools/ic-delete-instance.sh
|
|
65
|
-
- lib/cli_tools/ic-delete-volume.cmd
|
|
66
|
-
- lib/cli_tools/ic-delete-volume.sh
|
|
67
|
-
- lib/cli_tools/ic-describe-address-offerings.cmd
|
|
68
|
-
- lib/cli_tools/ic-describe-address-offerings.sh
|
|
69
|
-
- lib/cli_tools/ic-describe-addresses.cmd
|
|
70
|
-
- lib/cli_tools/ic-describe-addresses.sh
|
|
71
|
-
- lib/cli_tools/ic-describe-image-agreement.cmd
|
|
72
|
-
- lib/cli_tools/ic-describe-image-agreement.sh
|
|
73
|
-
- lib/cli_tools/ic-describe-image.cmd
|
|
74
|
-
- lib/cli_tools/ic-describe-image.sh
|
|
75
|
-
- lib/cli_tools/ic-describe-images.cmd
|
|
76
|
-
- lib/cli_tools/ic-describe-images.sh
|
|
77
|
-
- lib/cli_tools/ic-describe-instance.cmd
|
|
78
|
-
- lib/cli_tools/ic-describe-instance.sh
|
|
79
|
-
- lib/cli_tools/ic-describe-instances.cmd
|
|
80
|
-
- lib/cli_tools/ic-describe-instances.sh
|
|
81
|
-
- lib/cli_tools/ic-describe-keypair.cmd
|
|
82
|
-
- lib/cli_tools/ic-describe-keypair.sh
|
|
83
|
-
- lib/cli_tools/ic-describe-keypairs.cmd
|
|
84
|
-
- lib/cli_tools/ic-describe-keypairs.sh
|
|
85
|
-
- lib/cli_tools/ic-describe-location.cmd
|
|
86
|
-
- lib/cli_tools/ic-describe-location.sh
|
|
87
|
-
- lib/cli_tools/ic-describe-locations.cmd
|
|
88
|
-
- lib/cli_tools/ic-describe-locations.sh
|
|
89
|
-
- lib/cli_tools/ic-describe-request.cmd
|
|
90
|
-
- lib/cli_tools/ic-describe-request.sh
|
|
91
|
-
- lib/cli_tools/ic-describe-vlans.cmd
|
|
92
|
-
- lib/cli_tools/ic-describe-vlans.sh
|
|
93
|
-
- lib/cli_tools/ic-describe-volume-offerings.cmd
|
|
94
|
-
- lib/cli_tools/ic-describe-volume-offerings.sh
|
|
95
|
-
- lib/cli_tools/ic-describe-volume.cmd
|
|
96
|
-
- lib/cli_tools/ic-describe-volume.sh
|
|
97
|
-
- lib/cli_tools/ic-describe-volumes.cmd
|
|
98
|
-
- lib/cli_tools/ic-describe-volumes.sh
|
|
99
|
-
- lib/cli_tools/ic-detach-volume.cmd
|
|
100
|
-
- lib/cli_tools/ic-detach-volume.sh
|
|
101
|
-
- lib/cli_tools/ic-extend-reservation.cmd
|
|
102
|
-
- lib/cli_tools/ic-extend-reservation.sh
|
|
103
|
-
- lib/cli_tools/ic-generate-keypair.cmd
|
|
104
|
-
- lib/cli_tools/ic-generate-keypair.sh
|
|
105
|
-
- lib/cli_tools/ic-release-address.cmd
|
|
106
|
-
- lib/cli_tools/ic-release-address.sh
|
|
107
|
-
- lib/cli_tools/ic-remove-keypair.cmd
|
|
108
|
-
- lib/cli_tools/ic-remove-keypair.sh
|
|
109
|
-
- lib/cli_tools/ic-restart-instance.cmd
|
|
110
|
-
- lib/cli_tools/ic-restart-instance.sh
|
|
111
|
-
- lib/cli_tools/ic-save-instance.cmd
|
|
112
|
-
- lib/cli_tools/ic-save-instance.sh
|
|
113
|
-
- lib/cli_tools/ic-set-default-key.cmd
|
|
114
|
-
- lib/cli_tools/ic-set-default-key.sh
|
|
115
|
-
- lib/cli_tools/ic-update-instance.cmd
|
|
116
|
-
- lib/cli_tools/ic-update-instance.sh
|
|
117
|
-
- lib/cli_tools/ic-update-keypair.cmd
|
|
118
|
-
- lib/cli_tools/ic-update-keypair.sh
|
|
119
|
-
- lib/cli_tools/lib/DeveloperCloud_API_Client_JAR.jar
|
|
120
|
-
- lib/cli_tools/lib/DeveloperCloud_CMD_Tool.jar
|
|
121
|
-
- lib/cli_tools/lib/commons-beanutils-1.6.1.jar
|
|
122
|
-
- lib/cli_tools/lib/commons-cli-1.2.jar
|
|
123
|
-
- lib/cli_tools/lib/commons-codec-1.3.jar
|
|
124
|
-
- lib/cli_tools/lib/commons-collections-3.2.1.jar
|
|
125
|
-
- lib/cli_tools/lib/commons-digester-1.8.jar
|
|
126
|
-
- lib/cli_tools/lib/commons-httpclient-3.1.jar
|
|
127
|
-
- lib/cli_tools/lib/commons-lang-2.3.jar
|
|
128
|
-
- lib/cli_tools/lib/commons-logging-1.1.1.jar
|
|
129
|
-
- lib/cli_tools/logging.properties
|
|
130
|
-
- lib/cli_tools/manifest.rmd
|
|
131
42
|
- lib/config/config.yml
|
|
132
43
|
- lib/hash_fix.rb
|
|
133
44
|
- lib/mime-types-1.16/History.txt
|
data/lib/cli_tools/README.txt
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
Command Line Tool
|
|
2
|
-
---- IBM Smart Business Development & Test on the IBM Cloud
|
|
3
|
-
Version 1.4.1.CC20110505-2046 March 2011
|
|
4
|
-
---------------
|
|
5
|
-
Changes:
|
|
6
|
-
1. Add an option in command ic-describe-images, -y --ignoreAdditionalInfo to ignore the additional information. With this
|
|
7
|
-
option, it won't download the parameters.xml from RAM.
|
|
8
|
-
|
|
9
|
-
Version 1.4.0.CC20110112-2159 January 2011
|
|
10
|
-
---------------
|
|
11
|
-
Changes:
|
|
12
|
-
1.Add command ic-update-instance
|
|
13
|
-
2.Add command ic-attach-volume & ic-detach-volume
|
|
14
|
-
|
|
15
|
-
Version 1.3.0.CC20101207-1012 November 2010
|
|
16
|
-
---------------
|
|
17
|
-
Changes:
|
|
18
|
-
1. Add DataCenterDownException in several commands.
|
|
19
|
-
|
|
20
|
-
Version 1.2.0.20101019-0015 October 2010
|
|
21
|
-
---------------
|
|
22
|
-
Changes:
|
|
23
|
-
1. Add command ic-clone-volume
|
|
24
|
-
2. Add parameter -e/--isMiniEphemeral for ic-create-instance to support provision an instance with minimal ephemeral storage
|
|
25
|
-
3. Support multiple addresses attached in one instance
|
|
26
|
-
|
|
27
|
-
Version 1.1.3.20101012-0333 October 2010
|
|
28
|
-
---------------
|
|
29
|
-
Changes:
|
|
30
|
-
1. Increase the value of the so_timeout
|
|
31
|
-
|
|
32
|
-
Version 1.1.2.20100906-0202 September 2010
|
|
33
|
-
---------------
|
|
34
|
-
Changes:
|
|
35
|
-
1. Update DeveloperCloud_API_Client_JAR.jar.
|
|
36
|
-
Correct the business logic in createInstance.
|
|
37
|
-
|
|
38
|
-
Version 1.1.1.20100829-2101 August 2010
|
|
39
|
-
---------------
|
|
40
|
-
Changes:
|
|
41
|
-
1. Update DeveloperCloud_API_Client_JAR-javadoc.jar.
|
|
42
|
-
|
|
43
|
-
Version 1.1.0.20100623-1406 June 2010
|
|
44
|
-
---------------
|
|
45
|
-
Changes:
|
|
46
|
-
1. Add command and parameters to support Vlan
|
|
47
|
-
1) ic-describe-vlans
|
|
48
|
-
2) ic-allocate-address
|
|
49
|
-
3) ic-create-instance
|
|
50
|
-
2. Add commands ic-describe-image-agreement.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
|
|
3
|
-
REM ###########################################################################
|
|
4
|
-
|
|
5
|
-
REM #
|
|
6
|
-
|
|
7
|
-
REM # Licensed Materials - Property of IBM
|
|
8
|
-
|
|
9
|
-
REM #
|
|
10
|
-
|
|
11
|
-
REM # (C) COPYRIGHT International Business Machines Corp. 2009
|
|
12
|
-
|
|
13
|
-
REM #
|
|
14
|
-
|
|
15
|
-
REM # All Rights Reserved.
|
|
16
|
-
|
|
17
|
-
REM #
|
|
18
|
-
|
|
19
|
-
REM # US Government Users Restricted Rights - Use, duplication or
|
|
20
|
-
|
|
21
|
-
REM # disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
|
|
22
|
-
|
|
23
|
-
REM #
|
|
24
|
-
|
|
25
|
-
REM #############################################################################
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ic-cmd.cmd -action AddKeyPair %*
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
############################################################################
|
|
3
|
-
#
|
|
4
|
-
# Licensed Materials - Property of IBM
|
|
5
|
-
#
|
|
6
|
-
# (C) COPYRIGHT International Business Machines Corp. 2009
|
|
7
|
-
#
|
|
8
|
-
# All Rights Reserved.
|
|
9
|
-
#
|
|
10
|
-
# US Government Users Restricted Rights - Use, duplication or
|
|
11
|
-
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
|
|
12
|
-
#
|
|
13
|
-
#############################################################################
|
|
14
|
-
|
|
15
|
-
./ic-cmd.sh -action AddKeyPair $*
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
|
|
3
|
-
REM ###########################################################################
|
|
4
|
-
|
|
5
|
-
REM #
|
|
6
|
-
|
|
7
|
-
REM # Licensed Materials - Property of IBM
|
|
8
|
-
|
|
9
|
-
REM #
|
|
10
|
-
|
|
11
|
-
REM # (C) COPYRIGHT International Business Machines Corp. 2009
|
|
12
|
-
|
|
13
|
-
REM #
|
|
14
|
-
|
|
15
|
-
REM # All Rights Reserved.
|
|
16
|
-
|
|
17
|
-
REM #
|
|
18
|
-
|
|
19
|
-
REM # US Government Users Restricted Rights - Use, duplication or
|
|
20
|
-
|
|
21
|
-
REM # disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
|
|
22
|
-
|
|
23
|
-
REM #
|
|
24
|
-
|
|
25
|
-
REM #############################################################################
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ic-cmd.cmd -action AllocateAddress %*
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
############################################################################
|
|
3
|
-
#
|
|
4
|
-
# Licensed Materials - Property of IBM
|
|
5
|
-
#
|
|
6
|
-
# (C) COPYRIGHT International Business Machines Corp. 2009
|
|
7
|
-
#
|
|
8
|
-
# All Rights Reserved.
|
|
9
|
-
#
|
|
10
|
-
# US Government Users Restricted Rights - Use, duplication or
|
|
11
|
-
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
|
|
12
|
-
#
|
|
13
|
-
#############################################################################
|
|
14
|
-
./ic-cmd.sh -action AllocateAddress $*
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
@echo off
|
|
2
|
-
|
|
3
|
-
REM ###########################################################################
|
|
4
|
-
|
|
5
|
-
REM #
|
|
6
|
-
|
|
7
|
-
REM # Licensed Materials - Property of IBM
|
|
8
|
-
|
|
9
|
-
REM #
|
|
10
|
-
|
|
11
|
-
REM # (C) COPYRIGHT International Business Machines Corp. 2009
|
|
12
|
-
|
|
13
|
-
REM #
|
|
14
|
-
|
|
15
|
-
REM # All Rights Reserved.
|
|
16
|
-
|
|
17
|
-
REM #
|
|
18
|
-
|
|
19
|
-
REM # US Government Users Restricted Rights - Use, duplication or
|
|
20
|
-
|
|
21
|
-
REM # disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
|
|
22
|
-
|
|
23
|
-
REM #
|
|
24
|
-
|
|
25
|
-
REM #############################################################################
|
|
26
|
-
|
|
27
|
-
ic-cmd.cmd -action AttachVolume %*
|