cft_smartcloud 0.1.9 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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 %*
|