nifty-cloud-sdk 1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +112 -0
- data/Gemfile +4 -0
- data/INSTALL +30 -0
- data/LICENSE.txt +58 -0
- data/README.rdoc +375 -0
- data/Rakefile +61 -0
- data/lib/NIFTY.rb +405 -0
- data/lib/NIFTY/Cloud.rb +24 -0
- data/lib/NIFTY/Cloud/availability_zones.rb +23 -0
- data/lib/NIFTY/Cloud/certificates.rb +283 -0
- data/lib/NIFTY/Cloud/images.rb +134 -0
- data/lib/NIFTY/Cloud/instances.rb +372 -0
- data/lib/NIFTY/Cloud/keypairs.rb +76 -0
- data/lib/NIFTY/Cloud/load_balancers.rb +433 -0
- data/lib/NIFTY/Cloud/security_groups.rb +357 -0
- data/lib/NIFTY/Cloud/volumes.rb +140 -0
- data/lib/NIFTY/config.rb +41 -0
- data/lib/NIFTY/exceptions.rb +32 -0
- data/lib/NIFTY/responses.rb +19 -0
- data/lib/NIFTY/version.rb +3 -0
- data/nifty-cloud-sdk.gemspec +28 -0
- data/sample/availability_zones/describe-availability-zones.rb +37 -0
- data/sample/certificate/create-ssl-certificate.rb +41 -0
- data/sample/certificate/delete-ssl-certificate.rb +28 -0
- data/sample/certificate/describe-ssl-certificate-attribute.rb +58 -0
- data/sample/certificate/describe-ssl-certificates.rb +49 -0
- data/sample/certificate/download-ssl-certificate.rb +31 -0
- data/sample/certificate/modify-ssl-certificate-attribute.rb +29 -0
- data/sample/certificate/register-corporate-info-for-certificate.rb +57 -0
- data/sample/certificate/upload-ssl-certificate.rb +32 -0
- data/sample/images/create-image.rb +33 -0
- data/sample/images/delete-image.rb +26 -0
- data/sample/images/describe-images.rb +70 -0
- data/sample/images/modify-image-attribute.rb +33 -0
- data/sample/instances/cancel_copy_instances.rb +26 -0
- data/sample/instances/copy-instances.rb +41 -0
- data/sample/instances/describe-instance-attribute.rb +78 -0
- data/sample/instances/describe-instances.rb +100 -0
- data/sample/instances/modify-instance-attribute.rb +30 -0
- data/sample/instances/reboot-instances.rb +29 -0
- data/sample/instances/run-instances.rb +104 -0
- data/sample/instances/start-instances.rb +36 -0
- data/sample/instances/stop-instances.rb +35 -0
- data/sample/instances/terminate-instances.rb +34 -0
- data/sample/keypairs/create-key-pair.rb +31 -0
- data/sample/keypairs/delete-key-pair.rb +28 -0
- data/sample/keypairs/describe-key-pairs.rb +31 -0
- data/sample/load_balancers/configure-health-check.rb +41 -0
- data/sample/load_balancers/create-load-balancer.rb +35 -0
- data/sample/load_balancers/delete-load-balancer.rb +28 -0
- data/sample/load_balancers/deregister-instances-from-load-balancer.rb +35 -0
- data/sample/load_balancers/describe-instance-health.rb +36 -0
- data/sample/load_balancers/describe-load-balancers.rb +89 -0
- data/sample/load_balancers/register-instances-with-load-balancer.rb +33 -0
- data/sample/load_balancers/register-port-with-load-balancer.rb +37 -0
- data/sample/load_balancers/set-filter-for-load-balancer.rb +38 -0
- data/sample/load_balancers/update-load-balancer.rb +33 -0
- data/sample/security_groups/authorize-security-group-ingress.rb +36 -0
- data/sample/security_groups/create-security-group.rb +29 -0
- data/sample/security_groups/delete-security-group.rb +28 -0
- data/sample/security_groups/deregister-instances-from-security-group.rb +31 -0
- data/sample/security_groups/describe-security-activities.rb +33 -0
- data/sample/security_groups/describe-security-groups.rb +59 -0
- data/sample/security_groups/register-instances-with-security-group.rb +31 -0
- data/sample/security_groups/revoke-security-group-ingress.rb +36 -0
- data/sample/security_groups/update-security-group.rb +30 -0
- data/sample/volumes/attach-volumes.rb +34 -0
- data/sample/volumes/create-volume.rb +38 -0
- data/sample/volumes/delete-volume.rb +28 -0
- data/sample/volumes/describe-volumes.rb +44 -0
- data/sample/volumes/detach-volume.rb +35 -0
- data/test/test_Cloud.rb +186 -0
- data/test/test_Cloud_availability_zones.rb +50 -0
- data/test/test_Cloud_certificates.rb +627 -0
- data/test/test_Cloud_images.rb +284 -0
- data/test/test_Cloud_instances.rb +941 -0
- data/test/test_Cloud_keypairs.rb +177 -0
- data/test/test_Cloud_load_balancers.rb +1183 -0
- data/test/test_Cloud_responses.rb +43 -0
- data/test/test_Cloud_security_groups.rb +699 -0
- data/test/test_Cloud_volumes.rb +325 -0
- data/test/test_helper.rb +23 -0
- metadata +275 -0
data/lib/NIFTY/Cloud.rb
ADDED
@@ -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
|
+
|