nifty-cloud-sdk 1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/CHANGELOG +112 -0
  2. data/Gemfile +4 -0
  3. data/INSTALL +30 -0
  4. data/LICENSE.txt +58 -0
  5. data/README.rdoc +375 -0
  6. data/Rakefile +61 -0
  7. data/lib/NIFTY.rb +405 -0
  8. data/lib/NIFTY/Cloud.rb +24 -0
  9. data/lib/NIFTY/Cloud/availability_zones.rb +23 -0
  10. data/lib/NIFTY/Cloud/certificates.rb +283 -0
  11. data/lib/NIFTY/Cloud/images.rb +134 -0
  12. data/lib/NIFTY/Cloud/instances.rb +372 -0
  13. data/lib/NIFTY/Cloud/keypairs.rb +76 -0
  14. data/lib/NIFTY/Cloud/load_balancers.rb +433 -0
  15. data/lib/NIFTY/Cloud/security_groups.rb +357 -0
  16. data/lib/NIFTY/Cloud/volumes.rb +140 -0
  17. data/lib/NIFTY/config.rb +41 -0
  18. data/lib/NIFTY/exceptions.rb +32 -0
  19. data/lib/NIFTY/responses.rb +19 -0
  20. data/lib/NIFTY/version.rb +3 -0
  21. data/nifty-cloud-sdk.gemspec +28 -0
  22. data/sample/availability_zones/describe-availability-zones.rb +37 -0
  23. data/sample/certificate/create-ssl-certificate.rb +41 -0
  24. data/sample/certificate/delete-ssl-certificate.rb +28 -0
  25. data/sample/certificate/describe-ssl-certificate-attribute.rb +58 -0
  26. data/sample/certificate/describe-ssl-certificates.rb +49 -0
  27. data/sample/certificate/download-ssl-certificate.rb +31 -0
  28. data/sample/certificate/modify-ssl-certificate-attribute.rb +29 -0
  29. data/sample/certificate/register-corporate-info-for-certificate.rb +57 -0
  30. data/sample/certificate/upload-ssl-certificate.rb +32 -0
  31. data/sample/images/create-image.rb +33 -0
  32. data/sample/images/delete-image.rb +26 -0
  33. data/sample/images/describe-images.rb +70 -0
  34. data/sample/images/modify-image-attribute.rb +33 -0
  35. data/sample/instances/cancel_copy_instances.rb +26 -0
  36. data/sample/instances/copy-instances.rb +41 -0
  37. data/sample/instances/describe-instance-attribute.rb +78 -0
  38. data/sample/instances/describe-instances.rb +100 -0
  39. data/sample/instances/modify-instance-attribute.rb +30 -0
  40. data/sample/instances/reboot-instances.rb +29 -0
  41. data/sample/instances/run-instances.rb +104 -0
  42. data/sample/instances/start-instances.rb +36 -0
  43. data/sample/instances/stop-instances.rb +35 -0
  44. data/sample/instances/terminate-instances.rb +34 -0
  45. data/sample/keypairs/create-key-pair.rb +31 -0
  46. data/sample/keypairs/delete-key-pair.rb +28 -0
  47. data/sample/keypairs/describe-key-pairs.rb +31 -0
  48. data/sample/load_balancers/configure-health-check.rb +41 -0
  49. data/sample/load_balancers/create-load-balancer.rb +35 -0
  50. data/sample/load_balancers/delete-load-balancer.rb +28 -0
  51. data/sample/load_balancers/deregister-instances-from-load-balancer.rb +35 -0
  52. data/sample/load_balancers/describe-instance-health.rb +36 -0
  53. data/sample/load_balancers/describe-load-balancers.rb +89 -0
  54. data/sample/load_balancers/register-instances-with-load-balancer.rb +33 -0
  55. data/sample/load_balancers/register-port-with-load-balancer.rb +37 -0
  56. data/sample/load_balancers/set-filter-for-load-balancer.rb +38 -0
  57. data/sample/load_balancers/update-load-balancer.rb +33 -0
  58. data/sample/security_groups/authorize-security-group-ingress.rb +36 -0
  59. data/sample/security_groups/create-security-group.rb +29 -0
  60. data/sample/security_groups/delete-security-group.rb +28 -0
  61. data/sample/security_groups/deregister-instances-from-security-group.rb +31 -0
  62. data/sample/security_groups/describe-security-activities.rb +33 -0
  63. data/sample/security_groups/describe-security-groups.rb +59 -0
  64. data/sample/security_groups/register-instances-with-security-group.rb +31 -0
  65. data/sample/security_groups/revoke-security-group-ingress.rb +36 -0
  66. data/sample/security_groups/update-security-group.rb +30 -0
  67. data/sample/volumes/attach-volumes.rb +34 -0
  68. data/sample/volumes/create-volume.rb +38 -0
  69. data/sample/volumes/delete-volume.rb +28 -0
  70. data/sample/volumes/describe-volumes.rb +44 -0
  71. data/sample/volumes/detach-volume.rb +35 -0
  72. data/test/test_Cloud.rb +186 -0
  73. data/test/test_Cloud_availability_zones.rb +50 -0
  74. data/test/test_Cloud_certificates.rb +627 -0
  75. data/test/test_Cloud_images.rb +284 -0
  76. data/test/test_Cloud_instances.rb +941 -0
  77. data/test/test_Cloud_keypairs.rb +177 -0
  78. data/test/test_Cloud_load_balancers.rb +1183 -0
  79. data/test/test_Cloud_responses.rb +43 -0
  80. data/test/test_Cloud_security_groups.rb +699 -0
  81. data/test/test_Cloud_volumes.rb +325 -0
  82. data/test/test_helper.rb +23 -0
  83. metadata +275 -0
@@ -0,0 +1,24 @@
1
+ module NIFTY
2
+ module Cloud
3
+ class Base < NIFTY::Base
4
+ # この値が真のときNIFTY Cloud API側で無視されるパラメータは送信されない
5
+ @@ignore_amz_params = false
6
+
7
+ def initialize( options={} )
8
+ @default_access_key = ACCESS_KEY
9
+ @default_secret_key = SECRET_KEY
10
+ @default_endpoint = ENDPOINT_URL
11
+ @default_proxy_server = PROXY_SERVER
12
+ @default_user_agent = USER_AGENT
13
+ @default_max_retry = MAX_RETRY
14
+ @default_connection_timeout = CONNECTION_TIMEOUT
15
+ @default_socket_timeout = SOCKET_TIMEOUT
16
+ @default_signature_method = SIGNATURE_METHOD
17
+ @default_signature_version = SIGNATURE_VERSION
18
+
19
+ super(options)
20
+ end
21
+ end
22
+ end
23
+ end
24
+
@@ -0,0 +1,23 @@
1
+ module NIFTY
2
+ module Cloud
3
+ class Base < NIFTY::Base
4
+ ZONES_IGNORED_PARAMS = Regexp.new(/ZoneName\.\d+/)
5
+
6
+ # API「DescribeAvailabilityZones」を実行し、利用可能なゾーンの情報を取得します。常に、ゾーン「ap-japan-1a」の情報が返されます。
7
+ #
8
+ # @return [Hash] レスポンスXML解析結果
9
+ #
10
+ # @example
11
+ # describe_availability_zones(:zone_name => 'ap-japan-1a')
12
+ #
13
+ def describe_availability_zones( options={} )
14
+ params = {'Action' => 'DescribeAvailabilityZones'}
15
+ params.merge!(pathlist('ZoneName', options[:zone_name]))
16
+
17
+ params.reject! {|k, v| ZONES_IGNORED_PARAMS =~ k } if @@ignore_amz_params
18
+
19
+ return response_generator(params)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,283 @@
1
+ module NIFTY
2
+ module Cloud
3
+ class Base < NIFTY::Base
4
+ VALIDITY_TERM = ['6', '12', '24']
5
+ KEY_LENGTH = ['1024', '2048']
6
+ CERTIFICATE_DESCRIBE_ATTRIBUTE = ['count', 'certState', 'period', 'keyLength', 'uploadState', 'description', 'certInfo']
7
+ FILE_TYPE = ['1', '2', '3']
8
+
9
+ # API「CreateSslCertificate」を実行し、SSL 証明書の新規作成または更新を行います。
10
+ # 申請法人情報が未登録の場合は、エラーが返されます。
11
+ # パラメーター「fqdnId」を指定した場合、指定したSSL 証明書を更新します。指定したSSL 証明書の有効期間が更新可能ではない、
12
+ # アップロードした証明書を指定した、存在しないSSL 証明書を指定した場合など、無効なSSL 証明書を指定した場合は、エラーが返されます。
13
+ # パラメーター「fqdnId」を指定しない場合、SSL 証明書を新規作成します。作成可能なSSL 証明書の上限数を超える場合は、エラーが返されます。
14
+ # また申請法人情報を登録するには、API「RegisterCorporateInfoForCertificate」を実行します。
15
+ #
16
+ # @option options [String] :fqdn_id SSL証明書の識別子(必須)
17
+ # @option options [String] :fqdn FQDN(必須)
18
+ # @option options [Integer] :count SSL証明書の数量(必須)
19
+ # 許可値: 1 - 30
20
+ # @option options [Integer] :validity_term SSL証明書の有効月数(必須)
21
+ # 許可値: 6 (半年) | 12 (1年) | 24 (2年)
22
+ # @option options [Integer] :key_length SSL証明書の鍵長(必須)
23
+ # 許可値: 1024 (1024bit) | 2048 (2048bit)
24
+ # @option options [String] :organization_name 申請組織名(必須)
25
+ # @option options [String] :organization_unit_name 申請部署名(必須)
26
+ # @option options [String] :state_name 事業所住所の都道府県名(必須)
27
+ # @option options [String] :location_name 事業所住所の市区町村名(必須)
28
+ # @return [Hash] レスポンスXML解析結果
29
+ #
30
+ # @example
31
+ # create_ssl_certificate(:fqdn => 'aaa.aaa.aaa', :count => 2, :validity_term => 24, :key_length => 1024, :organization_name => 'NIFTY',
32
+ # :organization_unit_name => 'Center Department', :state_name => 'Tokyo', :location_name => 'Shinagawa-ku')
33
+ #
34
+ def create_ssl_certificate( options={} )
35
+ raise ArgumentError, ":fqdn_id or :fqdn must be provided." if blank?(options[:fqdn_id]) && blank?(options[:fqdn])
36
+ unless blank?(options[:fqdn])
37
+ raise ArgumentError, "No :count provided." if blank?(options[:count])
38
+ raise ArgumentError, "No :validity_term provided." if blank?(options[:validity_term])
39
+ raise ArgumentError, "No :key_length provided." if blank?(options[:key_length])
40
+ raise ArgumentError, "No :organization_name provided." if blank?(options[:organization_name])
41
+ raise ArgumentError, "No :organization_unit_name provided." if blank?(options[:organization_unit_name])
42
+ raise ArgumentError, "No :state_name provided." if blank?(options[:state_name])
43
+ raise ArgumentError, "No :location_name provided." if blank?(options[:location_name])
44
+ end
45
+ raise ArgumentError, "Invalid :count provided." unless blank?(options[:count]) || ('1'..'30').to_a.include?(options[:count].to_s)
46
+ raise ArgumentError, "Invalid :validity_term provided." unless blank?(options[:validity_term]) ||
47
+ VALIDITY_TERM.include?(options[:validity_term].to_s)
48
+ raise ArgumentError, "Invalid :key_length provided." unless blank?(options[:key_length]) || KEY_LENGTH.include?(options[:key_length].to_s)
49
+
50
+ params = {'Action' => 'CreateSslCertificate'}
51
+ params.merge!(opts_to_prms(options, [:fqdn_id, :fqdn, :count, :validity_term, :key_length]))
52
+ params.merge!(opts_to_prms(options, [:organization_name, :organization_unit_name, :country_name,
53
+ :state_name, :location_name, :email_address], 'CertInfo'))
54
+
55
+ return response_generator(params)
56
+ end
57
+
58
+
59
+ # API「DeleteSslCertificate」を実行し、指定したSSL 証明書を削除します。
60
+ # 指定したSSL 証明書のステータスが「期限切れ」「失効」「発行エラー」以外の場合は、エラーが返されます。
61
+ # またアップロードしたSSL証明書は、ステータスに関わらず削除できます。
62
+ # SSL 証明書を指定するためには、SSL 証明書の発行識別子(fqdnId)が必要です。削除済みのSSL 証明書を指定した、
63
+ # 管理外のSSL 証明書を指定したなど、無効なSSL 証明書を指定した場合は、エラーが返されます。
64
+ #
65
+ # @option options [String] :fqdn_id SSL証明書の識別子(必須)
66
+ # @return [Hash] レスポンスXML解析結果
67
+ #
68
+ # @example
69
+ # delete_ssl_certificate(:fqdn_id => 111)
70
+ #
71
+ def delete_ssl_certificate( options={} )
72
+ raise ArgumentError, "No :fqdn_id provided." if blank?(options[:fqdn_id])
73
+
74
+ params = {
75
+ 'Action' => 'DeleteSslCertificate',
76
+ 'FqdnId' => options[:fqdn_id].to_s
77
+ }
78
+
79
+ return response_generator(params)
80
+ end
81
+
82
+
83
+ # API「DescribeSslCertificates」を実行し、指定したSSL 証明書の情報を取得します。
84
+ # SSL証明書を指定するためには、SSL 証明書の発行識別子(fqdnId)またはFQDN が必要です。
85
+ # 指定しない場合は、取得可能なすべてのSSL証明書の情報を取得します。
86
+ #
87
+ # @option options [Array<String>] :fqdn_id SSL証明書の識別子
88
+ # @option options [Array<String>] :fqdn FQDN
89
+ # @return [Hash] レスポンスXML解析結果
90
+ #
91
+ # @example
92
+ # describe_ssl_certificates(:fqdn_id => 111, :fqdn => 'aaa.aaa.aaa.')
93
+ #
94
+ def describe_ssl_certificates( options={} )
95
+ params = {'Action' => 'DescribeSslCertificates'}
96
+ params.merge!(pathlist('Fqdn', options[:fqdn]))
97
+ params.merge!(pathlist('FqdnId', options[:fqdn_id]))
98
+
99
+ return response_generator(params)
100
+ end
101
+
102
+
103
+ # API「DescribeSslCertificateAttribute」を実行し、指定したSSL証明書の詳細情報を取得します。
104
+ # 1回のリクエストで、指定したSSL証明書のどれか1つの詳細情報を取得できます。
105
+ # SSL証明書を指定するためには、SSL 証明書の発行識別子(fqdnId)が必要です。削除済みのSSL証明書を指定した、
106
+ # 管理外のSSL証明書を指定したなど、無効なSSL 証明書を指定した場合は、エラーが返されます。
107
+ #
108
+ # @option options [String] :fqdn_id SSL証明書の識別子(必須)
109
+ # @option options [String] :attribute 取得する情報の項目名
110
+ # 許可値: count(SSL証明書の数量を取得) | certState(SSL証明書の発行ステータスを取得) | period(SSL証明書の有効期間を取得) |
111
+ # keyLength(SSL証明書の鍵長を取得) | uploadState(SSL証明書の種別を取得) | description(SSL証明書のメモ情報を取得) |
112
+ # certInfo(SSL証明書の発行申請情報を取得)
113
+ #
114
+ # @return [Hash] レスポンスXML解析結果
115
+ #
116
+ # @example
117
+ # describe_ssl_certificate_attribute(:fqdn_id => 111, :attribute => 'certInfo')
118
+ #
119
+ def describe_ssl_certificate_attribute( options={} )
120
+ raise ArgumentError, "No :fqdn_id provided." if blank?(options[:fqdn_id])
121
+ raise ArgumentError, "Invalid :attribute provided." unless blank?(options[:attribute]) ||
122
+ CERTIFICATE_DESCRIBE_ATTRIBUTE.include?(options[:attribute].to_s)
123
+
124
+ params = {'Action' => 'DescribeSslCertificateAttribute'}
125
+ params.merge!(opts_to_prms(options, [:fqdn_id, :attribute]))
126
+
127
+ return response_generator(params)
128
+ end
129
+
130
+
131
+ # API「DownloadSslCertificate」を実行し、指定したSSL証明書をダウンロードします。
132
+ # 1回のリクエストで、SSL証明書のキー・CA・証明書のいずれかを取得できます。
133
+ # SSL証明書を指定するためには、SSL 証明書の発行識別子(fqdnId)が必要です。削除済みのSSL証明書を指定した、
134
+ # 管理外のSSL証明書を指定したなど、無効なSSL証明書を指定した場合は、エラーが返されます。
135
+ # またSSL証明書の発行状況により、指定したファイルがダウンロードできない場合があります。
136
+ #
137
+ # @option options [String] :fqdn_id SSL証明書の識別子(必須)
138
+ # @option options [String] :file_type ダウンロードするファイル種別(必須)
139
+ # 許可値: 1 (キー) | 2 (CA) | 3 (証明書)
140
+ # @return [Hash] レスポンスXML解析結果
141
+ #
142
+ # @example
143
+ # download_ssl_certificate(:fqdn_id => 111, :file_type => 1)
144
+ #
145
+ def download_ssl_certificate( options={} )
146
+ raise ArgumentError, "No :fqdn_id provided." if blank?(options[:fqdn_id])
147
+ raise ArgumentError, "No :file_type provided." if blank?(options[:file_type])
148
+ raise ArgumentError, "Invalid :file_type provided." unless FILE_TYPE.include?(options[:file_type].to_s)
149
+
150
+ params = {'Action' => 'DownloadSslCertificate'}
151
+ params.merge!(opts_to_prms(options, [:fqdn_id, :file_type]))
152
+
153
+ return response_generator(params)
154
+ end
155
+
156
+
157
+ # API「ModifySslCertificateAttribute」を実行し、指定したSSL 証明書の詳細情報を更新します。1 回のリクエストで、1 つのSSL 証明書の1 つの詳細情報を更新できます。
158
+ # SSL証明書を指定するためには、SSL 証明書の発行識別子(fqdnId)が必要です。削除済みのSSL証明書を指定した、管理外のSSL
159
+ # 証明書を指定したなど、無効なSSL 証明書を指定した場合は、エラーが返されます。
160
+ #
161
+ # @option options [String] :fqdn_id SSL証明書の識別子(必須)
162
+ # @option options [String] :description SSL 証明書のメモ情報の更新値
163
+ # @return [Hash] レスポンスXML解析結果
164
+ #
165
+ # @example
166
+ # modify_ssl_certificate_attribute(:fqdn_id => 111, :description => 'For service A')
167
+ #
168
+ def modify_ssl_certificate_attribute( options={} )
169
+ raise ArgumentError, "No :fqdn_id provided." if blank?(options[:fqdn_id])
170
+
171
+ params = {
172
+ 'Action' => 'ModifySslCertificateAttribute',
173
+ 'FqdnId' => options[:fqdn_id].to_s,
174
+ 'Description.Value' => options[:description].to_s
175
+ }
176
+
177
+ return response_generator(params)
178
+ end
179
+
180
+
181
+ # API「RegisterCorporateInfoForCertificate」を実行し、SSL証明書を管理する申請法人情報を登録または更新します。
182
+ # 利用規約(http://cp.cloud.nifty.com/ssl/trust.txt)をご確認の上、パラメーター「agreement」を指定します。
183
+ #
184
+ # @option options [Boolean] :agreement 利用規約に同意(必須)
185
+ # 許可値: true (同意する) | false (同意しない)
186
+ # @option options [String] :tdb_code 帝国データバンクコード
187
+ # @option options [String] :corp_name 法人名(必須)
188
+ # 使用可能文字: 全角
189
+ # @option options [String] :corp_grade 法人格(必須)
190
+ # 使用可能文字: 全角
191
+ # 許可値: 株式会社 | 有限会社 | 社団法人 | 財団法人 | 学校法人 | 医療法人 | 医療法人社団 | 特定非営利活動法人 |
192
+ # 有限責任中間法人 | 中央省庁 | 地方公共団体 | 国立大学法人 | 独立行政法人 | 国家資格取得 | 協同組合 | 協同組合連合会 |
193
+ # 商工連合会 | 協議会 | 公団 | 公共団体 | その他法人 | その他組合 | その他団体 | その他公共機関
194
+ # @option options [String] :president_name1 代表者氏名(姓)(必須)
195
+ # 使用可能文字: 全角
196
+ # @option options [String] :president_name2 代表者氏名(名)(必須)
197
+ # 使用可能文字: 全角
198
+ # @option options [String] :zip1 郵便番号(上3桁)(必須)
199
+ # 使用可能文字: 半角
200
+ # @option options [String] :zip2 郵便番号(下4桁)(必須)
201
+ # 使用可能文字: 半角
202
+ # @option options [String] :pref 都道府県名(必須)
203
+ # 使用可能文字: 全角
204
+ # 許可値: 北海道 | 青森県 | 岩手県 | 宮城県 | 秋田県 | 山形県 | 福島県 | 茨城県 | 栃木県 | 群馬県 | 埼玉県 | 千葉県 |
205
+ # 東京都 | 神奈川県 | 新潟県 | 富山県 | 石川県 | 福井県 | 山梨県 | 長野県 | 岐阜県 | 静岡県 | 愛知県 | 三重県 |
206
+ # 滋賀県 | 京都府 | 大阪府| 兵庫県 | 奈良県 | 和歌山県 | 鳥取県 | 島根県 |岡山県 | 広島県 | 山口県 | 徳島県 |
207
+ # 香川県 | 愛媛県 | 高知県 | 福岡県 | 佐賀県 | 長崎県 | 熊本県 | 大分県 | 宮崎県 | 鹿児島県 | 沖縄県
208
+ # @option options [String] :city 市町村名
209
+ # 使用可能文字: 全角
210
+ # @option options [String] :name1 責任者氏名(姓)(必須)
211
+ # 使用可能文字: 全角
212
+ # @option options [String] :name2 責任者氏名(名)(必須)
213
+ # 使用可能文字: 全角
214
+ # @option options [String] :kana_name1 責任者氏名かな(姓)(必須)
215
+ # 使用可能文字: 全角
216
+ # @option options [String] :kana_name2 責任者氏名かな(名)(必須)
217
+ # 使用可能文字: 全角
218
+ # @option options [String] :post_name 役職名(必須)
219
+ # 使用可能文字: 全角
220
+ # @option options [String] :division_name 部署名(必須)
221
+ # 使用可能文字: 全角
222
+ # @return [Hash] レスポンスXML解析結果
223
+ #
224
+ # @example
225
+ # register_corporate_info_for_certificate(:agreement => true, :corp_name => 'ニフティ', :corp_grade => '株式会社', :president_name1 => 'ニフティ',
226
+ # :president_name2 => '太郎', :zip1 => 140, :zip2 => 8544, :pref => '東京都', :city => '品川区',
227
+ # :name1 => '山田', :name2 => '花子', :kana_name1 => 'やまだ', :kana_name2 => 'はなこ', :post_name => '部長',
228
+ # :division_name => '技術部')
229
+ #
230
+ def register_corporate_info_for_certificate( options={} )
231
+ raise ArgumentError, "No :agreement provided." if blank?(options[:agreement])
232
+ raise ArgumentError, "Invalid :agreement provided." unless blank?(options[:agreement]) || BOOLEAN.include?(options[:agreement].to_s)
233
+ raise ArgumentError, "No :corp_name provided." if blank?(options[:corp_name])
234
+ raise ArgumentError, "No :corp_grade provided." if blank?(options[:corp_grade])
235
+ raise ArgumentError, "No :president_name1 provided." if blank?(options[:president_name1])
236
+ raise ArgumentError, "No :president_name2 provided." if blank?(options[:president_name2])
237
+ raise ArgumentError, "No :zip1 provided." if blank?(options[:zip1])
238
+ raise ArgumentError, "Invalid :zip1 provided." unless /^\d{3}$/ =~ options[:zip1].to_s
239
+ raise ArgumentError, "No :zip2 provided." if blank?(options[:zip2])
240
+ raise ArgumentError, "Invalid :zip2 provided." unless /^\d{4}$/ =~ options[:zip2].to_s
241
+ raise ArgumentError, "No :pref provided." if blank?(options[:pref])
242
+ raise ArgumentError, "No :city provided." if blank?(options[:city])
243
+ raise ArgumentError, "No :name1 provided." if blank?(options[:name1])
244
+ raise ArgumentError, "No :name2 provided." if blank?(options[:name2])
245
+ raise ArgumentError, "No :kana_name1 provided." if blank?(options[:kana_name1])
246
+ raise ArgumentError, "No :kana_name2 provided." if blank?(options[:kana_name2])
247
+ raise ArgumentError, "No :post_name provided." if blank?(options[:post_name])
248
+ raise ArgumentError, "No :division_name provided." if blank?(options[:division_name])
249
+
250
+ params = {'Action' => 'RegisterCorporateInfoForCertificate'}
251
+ params.merge!(opts_to_prms(options,
252
+ [:agreement, :tdb_code, :corp_name, :corp_grade, :president_name1, :president_name2,
253
+ :zip1, :zip2, :pref, :city, :name1, :name2, :kana_name1, :kana_name2, :post_name, :division_name]))
254
+
255
+ return response_generator(params)
256
+ end
257
+
258
+
259
+ # API「UploadSslCertificate」を実行し、指定したSSL証明書をアップロードします。
260
+ # 1回のリクエストで、SSL証明書のキー・CA・証明書の1 セットをアップロードできます。
261
+ # 作成可能なSSL証明書の上限数を超える場合は、エラーが返されます。
262
+ # またアップロードしたファイルの解析に失敗した場合は、エラーが返されます。
263
+ #
264
+ # @option options [String] :certificate 証明書ファイル(必須)
265
+ # @option options [String] :key 秘密鍵ファイル(必須)
266
+ # @option options [String] :ca CA(認証局)ファイル
267
+ # @return [Hash] レスポンスXML解析結果
268
+ #
269
+ # @example
270
+ # upload_ssl_certificate(:certificate => 'xxxxxxxxxxxxxxxxxxxxxx', :key => 'xxxxxxxxxxx')
271
+ #
272
+ def upload_ssl_certificate( options={} )
273
+ raise ArgumentError, "No :certificate provided." if blank?(options[:certificate])
274
+ raise ArgumentError, "No :key provided." if blank?(options[:key])
275
+
276
+ params = {'Action' => 'UploadSslCertificate'}
277
+ params.merge!(opts_to_prms(options, [:certificate, :key, :ca]))
278
+
279
+ return response_generator(params)
280
+ end
281
+ end
282
+ end
283
+ end
@@ -0,0 +1,134 @@
1
+ module NIFTY
2
+ module Cloud
3
+ class Base < NIFTY::Base
4
+ IMAGES_MODIFY_ATTRIBUTE = ['description', 'imageName']
5
+ IMAGES_DESCRIBE_OWNER = ['niftycloud', 'self']
6
+ IMAGES_IGNORED_PARAMS = Regexp.union(/Description/,
7
+ /NoReboot/,
8
+ /ExecutableBy\.\d+/,
9
+ /LaunchPermission\.Add\.\d+\.UserId/,
10
+ /LaunchPermission\.Add\.\d+\.Group/,
11
+ /LaunchPermission\.Remove\.\d+\.UserId/,
12
+ /LaunchPermission\.Remove\.\d+\.Group/,
13
+ /ProductCode\.\d+/)
14
+
15
+ # API「DescribeImages」を実行し、OS イメージの情報を取得します。
16
+ # 特定のOS イメージを指定するためには、OS イメージID またはOS イメージ名が必要です。OS イメージを指定しない場合は、
17
+ # 取得可能なすべてのOS イメージ情報を取得します。無効なOS イメージを指定した場合は、エラーが返されます。
18
+ #
19
+ # @option options [Array<String>] :image_id OSイメージID
20
+ # @option options [Array<String>] :image_name OSイメージ名
21
+ # @option options [Array<String>] :owner OSイメージの種別
22
+ # 許可値: niftycloud | self
23
+ # @return [Hash] レスポンスXML解析結果
24
+ #
25
+ # @example
26
+ # describe_images(:image_id => [12000, 11001], :image_name => ['image01', 'image02'], :owner => ['niftycloud', 'self'])
27
+ #
28
+ def describe_images( options = {} )
29
+ [options[:owner]].flatten.each{|o| raise ArgumentError, "Invalid :owner provided." unless IMAGES_DESCRIBE_OWNER.include?(o) } unless blank?(options[:owner])
30
+ raise ArgumentError, "Invalid :image_id provided." unless blank?(options[:image_id]) || options[:image_id].to_s.to_i > 0
31
+
32
+ params = {'Action' => 'DescribeImages'}
33
+ params.merge!(pathlist("ExecutableBy", options[:executable_by]))
34
+ params.merge!(pathlist("ImageId", options[:image_id]))
35
+ params.merge!(pathlist("ImageName", options[:image_name]))
36
+ params.merge!(pathlist("Owner", options[:owner]))
37
+
38
+ params.reject! {|k, v| IMAGES_IGNORED_PARAMS =~ k } if @@ignore_amz_params
39
+
40
+ return response_generator(params)
41
+ end
42
+
43
+
44
+ # API「CreateImage」を実行し、指定したサーバーをイメージ化し、カスタマイズイメージとして保存します。
45
+ # サーバーをイメージ化するためには、サーバーを停止する必要があります。
46
+ # カスタマイズイメージの作成には、時間がかかることがあります。このAPI のレスポンス「imageState」を確認し「pending」が返ってきた、
47
+ # タイムアウトした場合は、API「DescribeImages」のレスポンス「imageState」でカスタマイズイメージのステータスを確認できます。
48
+ # 処理が失敗した場合、カスタマイズイメージは保存されず、エラーが返されます。
49
+ #
50
+ # @option options [String] :instance_id イメージ化元サーバー(必須)
51
+ # @option options [String] :name イメージ名(必須)
52
+ # @option options [Boolean] :left_instance イメージ化元サーバーを残す
53
+ # 許可値: true(サーバーを残す) | false(サーバーを残さない)
54
+ # @return [Hash] レスポンスXML解析結果
55
+ #
56
+ # @example
57
+ # create_image(:instance_id => 'server01', :name => 'image01', :left_instance => true)
58
+ #
59
+ def create_image( options = {} )
60
+ raise ArgumentError, "No :instance_id provided" if blank?(options[:instance_id])
61
+ raise ArgumentError, "No :name provided" if blank?(options[:name])
62
+ raise ArgumentError, "Invalid :left_instance provided. only 'true' or 'false' allowed." unless blank?(options[:left_instance]) ||
63
+ BOOLEAN.include?(options[:left_instance].to_s)
64
+
65
+ params = { 'Action' => 'CreateImage' }
66
+ params.merge!(opts_to_prms(options, [:instance_id, :name, :description, :no_reboot, :left_instance]))
67
+
68
+ params.reject! {|k, v| IMAGES_IGNORED_PARAMS =~ k } if @@ignore_amz_params
69
+
70
+ return response_generator(params)
71
+ end
72
+
73
+
74
+ # API「DeleteImage」を実行し、指定したカスタマイズイメージを削除します。
75
+ # 削除中のカスタマイズイメージを指定してサーバー作成を行った場合は、サーバー作成からエラーが返されます。
76
+ # カスタマイズイメージを選択して作成されたサーバーのOSイメージ名は、カスタマイズイメージの削除が完了すると、イメージ化した
77
+ # サーバーのOS 名が返されます。
78
+ #
79
+ # @option options [String] :image_id 削除対象のイメージID(必須)
80
+ # 許可値: 10000以降の数値
81
+ # @return [Hash] レスポンスXML解析結果
82
+ #
83
+ # @example
84
+ # delete_image(:image_id => 10430)
85
+ #
86
+ def delete_image( options={} )
87
+ raise ArgumentError, "No :image_id provided." if blank?(options[:image_id])
88
+ raise ArgumentError, "Invalid :image_id provided." unless options[:image_id].to_s.to_i >= 10000
89
+
90
+ params = {
91
+ 'Action' => 'DeleteImage',
92
+ 'ImageId' => options[:image_id].to_s
93
+ }
94
+
95
+ return response_generator(params)
96
+ end
97
+
98
+
99
+ # API「ModifyImageAttribute」を実行し、指定したカスタマイズイメージの詳細情報を更新します。1 回のリクエストで、1 つのカスタマイズイメージの情報を更新できます。
100
+ # カスタマイズイメージを指定するためには、イメージID が必要です。削除済みのイメージID を指定した、管理外のイメージID を指定したなど、
101
+ # 無効なイメージID を指定した場合は、エラーが返されます。
102
+ #
103
+ # @option options [String] :image_id 更新対象のイメージID(必須)
104
+ # 許可値: 10000以降の数値
105
+ # @option options [String] :attribute 更新対象の項目名(必須)
106
+ # 許可値: description | imageName
107
+ # @option options [String] :attribute 更新値
108
+ # @return [Hash] レスポンスXML解析結果
109
+ #
110
+ # @example
111
+ # modify_image_attribute(:image_id => 10000, :attribute => 'description', :value => 'メモ')
112
+ #
113
+ def modify_image_attribute( options={} )
114
+ raise ArgumentError, "No :image_id provided." if blank?(options[:image_id])
115
+ raise ArgumentError, "Invalid :image_id provided." unless options[:image_id].to_s.to_i >= 10000
116
+ raise ArgumentError, "No :attribute provided." if blank?(options[:attribute])
117
+ raise ArgumentError, "Invalid :attribute provided." unless blank?(options[:attribute]) || IMAGES_MODIFY_ATTRIBUTE.include?(options[:attribute])
118
+
119
+ params = {'Action' => 'ModifyImageAttribute'}
120
+ params.merge!(opts_to_prms(options, [:image_id, :attribute, :value]))
121
+ params.merge!(pathhashlist('LaunchPermission.Add', options[:launch_permission_add],
122
+ {:user_id => 'UserId', :group => 'Group'})) unless blank?(options[:launch_permission_add])
123
+ params.merge!(pathhashlist('LaunchPermission.Remove', options[:launch_permission_remove],
124
+ {:user_id => 'UserId', :group => 'Group'})) unless blank?(options[:launch_permission_remove])
125
+ params.merge!(pathlist('ProductCode', options[:product_code]))
126
+
127
+ params.reject! {|k, v| IMAGES_IGNORED_PARAMS =~ k } if @@ignore_amz_params
128
+
129
+ return response_generator(params)
130
+ end
131
+ end
132
+ end
133
+ end
134
+