saklient 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +43 -0
  6. data/Rakefile +1 -0
  7. data/config.sh.sample +5 -0
  8. data/example.rb +83 -0
  9. data/example.sh +6 -0
  10. data/lib/saklient/cloud/api.rb +382 -0
  11. data/lib/saklient/cloud/client.rb +111 -0
  12. data/lib/saklient/cloud/enums/eappliance_class.rb +39 -0
  13. data/lib/saklient/cloud/enums/eavailability.rb +79 -0
  14. data/lib/saklient/cloud/enums/edisk_connection.rb +39 -0
  15. data/lib/saklient/cloud/enums/escope.rb +39 -0
  16. data/lib/saklient/cloud/enums/escript_class.rb +39 -0
  17. data/lib/saklient/cloud/enums/eserver_instance_status.rb +44 -0
  18. data/lib/saklient/cloud/enums/estorage_class.rb +34 -0
  19. data/lib/saklient/cloud/errors/access_api_key_disabled_exception.rb +23 -0
  20. data/lib/saklient/cloud/errors/access_sakura_exception.rb +23 -0
  21. data/lib/saklient/cloud/errors/access_staff_exception.rb +23 -0
  22. data/lib/saklient/cloud/errors/access_token_exception.rb +23 -0
  23. data/lib/saklient/cloud/errors/access_xhr_or_api_key_exception.rb +23 -0
  24. data/lib/saklient/cloud/errors/account_not_found_exception.rb +23 -0
  25. data/lib/saklient/cloud/errors/account_not_specified_exception.rb +23 -0
  26. data/lib/saklient/cloud/errors/ambiguous_identifier_exception.rb +23 -0
  27. data/lib/saklient/cloud/errors/ambiguous_zone_exception.rb +23 -0
  28. data/lib/saklient/cloud/errors/api_proxy_timeout_exception.rb +23 -0
  29. data/lib/saklient/cloud/errors/api_proxy_timeout_non_get_exception.rb +23 -0
  30. data/lib/saklient/cloud/errors/archive_is_incomplete_exception.rb +23 -0
  31. data/lib/saklient/cloud/errors/boot_failure_by_lock_exception.rb +23 -0
  32. data/lib/saklient/cloud/errors/boot_failure_in_group_exception.rb +23 -0
  33. data/lib/saklient/cloud/errors/busy_exception.rb +23 -0
  34. data/lib/saklient/cloud/errors/cant_resize_smaller_exception.rb +23 -0
  35. data/lib/saklient/cloud/errors/cdrom_device_locked_exception.rb +23 -0
  36. data/lib/saklient/cloud/errors/cdrom_disabled_exception.rb +23 -0
  37. data/lib/saklient/cloud/errors/cdrom_in_use_exception.rb +23 -0
  38. data/lib/saklient/cloud/errors/cdrom_is_incomplete_exception.rb +23 -0
  39. data/lib/saklient/cloud/errors/connect_to_same_switch_exception.rb +23 -0
  40. data/lib/saklient/cloud/errors/contract_creation_exception.rb +23 -0
  41. data/lib/saklient/cloud/errors/copy_to_itself_exception.rb +23 -0
  42. data/lib/saklient/cloud/errors/delete_disk_b4_template_exception.rb +23 -0
  43. data/lib/saklient/cloud/errors/delete_ip_v6_nets_first_exception.rb +23 -0
  44. data/lib/saklient/cloud/errors/delete_res_b4_account_exception.rb +23 -0
  45. data/lib/saklient/cloud/errors/delete_router_b4_switch_exception.rb +23 -0
  46. data/lib/saklient/cloud/errors/delete_static_route_first_exception.rb +23 -0
  47. data/lib/saklient/cloud/errors/disabled_in_sandbox_exception.rb +23 -0
  48. data/lib/saklient/cloud/errors/disconnect_b4_delete_exception.rb +23 -0
  49. data/lib/saklient/cloud/errors/disconnect_b4_update_exception.rb +23 -0
  50. data/lib/saklient/cloud/errors/disk_connection_limit_exception.rb +23 -0
  51. data/lib/saklient/cloud/errors/disk_is_copying_exception.rb +23 -0
  52. data/lib/saklient/cloud/errors/disk_is_not_available_exception.rb +23 -0
  53. data/lib/saklient/cloud/errors/disk_license_mismatch_exception.rb +23 -0
  54. data/lib/saklient/cloud/errors/disk_or_ss_in_migration_exception.rb +23 -0
  55. data/lib/saklient/cloud/errors/disk_stock_run_out_exception.rb +23 -0
  56. data/lib/saklient/cloud/errors/dns_aaaa_record_not_found_exception.rb +23 -0
  57. data/lib/saklient/cloud/errors/dns_arecord_not_found_exception.rb +23 -0
  58. data/lib/saklient/cloud/errors/dns_ptr_update_failure_exception.rb +23 -0
  59. data/lib/saklient/cloud/errors/dont_create_in_sandbox_exception.rb +23 -0
  60. data/lib/saklient/cloud/errors/duplicate_account_code_exception.rb +23 -0
  61. data/lib/saklient/cloud/errors/duplicate_entry_exception.rb +23 -0
  62. data/lib/saklient/cloud/errors/duplicate_user_code_exception.rb +23 -0
  63. data/lib/saklient/cloud/errors/file_not_uploaded_exception.rb +23 -0
  64. data/lib/saklient/cloud/errors/filter_array_comparison_exception.rb +23 -0
  65. data/lib/saklient/cloud/errors/filter_bad_operator_exception.rb +23 -0
  66. data/lib/saklient/cloud/errors/filter_null_comparison_exception.rb +23 -0
  67. data/lib/saklient/cloud/errors/filter_unknown_operator_exception.rb +23 -0
  68. data/lib/saklient/cloud/errors/ftp_cannot_close_exception.rb +23 -0
  69. data/lib/saklient/cloud/errors/ftp_is_already_close_exception.rb +23 -0
  70. data/lib/saklient/cloud/errors/ftp_is_already_open_exception.rb +23 -0
  71. data/lib/saklient/cloud/errors/ftp_must_be_closed_exception.rb +23 -0
  72. data/lib/saklient/cloud/errors/host_operation_failure_exception.rb +23 -0
  73. data/lib/saklient/cloud/errors/illegal_das_usage_exception.rb +23 -0
  74. data/lib/saklient/cloud/errors/in_migration_exception.rb +23 -0
  75. data/lib/saklient/cloud/errors/invalid_format_exception.rb +23 -0
  76. data/lib/saklient/cloud/errors/invalid_param_comb_exception.rb +23 -0
  77. data/lib/saklient/cloud/errors/invalid_range_exception.rb +23 -0
  78. data/lib/saklient/cloud/errors/invalid_uri_argument_exception.rb +23 -0
  79. data/lib/saklient/cloud/errors/ip_v6_net_already_attached_exception.rb +23 -0
  80. data/lib/saklient/cloud/errors/limit_count_in_account_exception.rb +23 -0
  81. data/lib/saklient/cloud/errors/limit_count_in_member_exception.rb +23 -0
  82. data/lib/saklient/cloud/errors/limit_count_in_network_exception.rb +23 -0
  83. data/lib/saklient/cloud/errors/limit_count_in_router_exception.rb +23 -0
  84. data/lib/saklient/cloud/errors/limit_count_in_zone_exception.rb +23 -0
  85. data/lib/saklient/cloud/errors/limit_memory_in_account_exception.rb +23 -0
  86. data/lib/saklient/cloud/errors/limit_size_in_account_exception.rb +23 -0
  87. data/lib/saklient/cloud/errors/missing_iso_image_exception.rb +23 -0
  88. data/lib/saklient/cloud/errors/missing_param_exception.rb +23 -0
  89. data/lib/saklient/cloud/errors/must_be_of_same_zone_exception.rb +23 -0
  90. data/lib/saklient/cloud/errors/no_display_response_exception.rb +23 -0
  91. data/lib/saklient/cloud/errors/not_for_router_exception.rb +23 -0
  92. data/lib/saklient/cloud/errors/not_replicating_exception.rb +23 -0
  93. data/lib/saklient/cloud/errors/not_with_hybridconn_exception.rb +23 -0
  94. data/lib/saklient/cloud/errors/old_storage_plan_exception.rb +23 -0
  95. data/lib/saklient/cloud/errors/operation_failure_exception.rb +23 -0
  96. data/lib/saklient/cloud/errors/operation_timeout_exception.rb +23 -0
  97. data/lib/saklient/cloud/errors/original_hash_mismatch_exception.rb +23 -0
  98. data/lib/saklient/cloud/errors/packet_filter_applying_exception.rb +23 -0
  99. data/lib/saklient/cloud/errors/packet_filter_version_mismatch_exception.rb +23 -0
  100. data/lib/saklient/cloud/errors/param_ip_not_found_exception.rb +23 -0
  101. data/lib/saklient/cloud/errors/param_res_not_found_exception.rb +23 -0
  102. data/lib/saklient/cloud/errors/payment_credit_card_exception.rb +23 -0
  103. data/lib/saklient/cloud/errors/payment_payment_exception.rb +23 -0
  104. data/lib/saklient/cloud/errors/payment_registration_exception.rb +23 -0
  105. data/lib/saklient/cloud/errors/payment_tel_certification_exception.rb +23 -0
  106. data/lib/saklient/cloud/errors/payment_unpayable_exception.rb +23 -0
  107. data/lib/saklient/cloud/errors/penalty_operation_exception.rb +23 -0
  108. data/lib/saklient/cloud/errors/replica_already_exists_exception.rb +23 -0
  109. data/lib/saklient/cloud/errors/replica_not_found_exception.rb +23 -0
  110. data/lib/saklient/cloud/errors/res_already_connected_exception.rb +23 -0
  111. data/lib/saklient/cloud/errors/res_already_disconnected_exception.rb +23 -0
  112. data/lib/saklient/cloud/errors/res_already_exists_exception.rb +23 -0
  113. data/lib/saklient/cloud/errors/res_used_in_zone_exception.rb +23 -0
  114. data/lib/saklient/cloud/errors/resource_path_not_found_exception.rb +23 -0
  115. data/lib/saklient/cloud/errors/run_out_of_ip_address_exception.rb +23 -0
  116. data/lib/saklient/cloud/errors/same_license_required_exception.rb +23 -0
  117. data/lib/saklient/cloud/errors/server_could_not_stop_exception.rb +23 -0
  118. data/lib/saklient/cloud/errors/server_is_cleaning_exception.rb +23 -0
  119. data/lib/saklient/cloud/errors/server_operation_failure_exception.rb +23 -0
  120. data/lib/saklient/cloud/errors/server_power_must_be_down_exception.rb +23 -0
  121. data/lib/saklient/cloud/errors/server_power_must_be_up_exception.rb +23 -0
  122. data/lib/saklient/cloud/errors/service_temporarily_unavailable_exception.rb +23 -0
  123. data/lib/saklient/cloud/errors/size_mismatch_exception.rb +23 -0
  124. data/lib/saklient/cloud/errors/snapshot_in_migration_exception.rb +23 -0
  125. data/lib/saklient/cloud/errors/still_creating_exception.rb +23 -0
  126. data/lib/saklient/cloud/errors/storage_abnormal_exception.rb +23 -0
  127. data/lib/saklient/cloud/errors/storage_operation_failure_exception.rb +23 -0
  128. data/lib/saklient/cloud/errors/switch_hybrid_connected_exception.rb +23 -0
  129. data/lib/saklient/cloud/errors/template_ftp_is_open_exception.rb +23 -0
  130. data/lib/saklient/cloud/errors/template_is_incomplete_exception.rb +23 -0
  131. data/lib/saklient/cloud/errors/too_many_request_exception.rb +23 -0
  132. data/lib/saklient/cloud/errors/unknown_exception.rb +23 -0
  133. data/lib/saklient/cloud/errors/unknown_os_type_exception.rb +23 -0
  134. data/lib/saklient/cloud/errors/unsupported_res_class_exception.rb +23 -0
  135. data/lib/saklient/cloud/errors/user_not_specified_exception.rb +23 -0
  136. data/lib/saklient/cloud/errors/vnc_proxy_request_failure_exception.rb +23 -0
  137. data/lib/saklient/cloud/models/model.rb +348 -0
  138. data/lib/saklient/cloud/models/model_appliance.rb +161 -0
  139. data/lib/saklient/cloud/models/model_archive.rb +207 -0
  140. data/lib/saklient/cloud/models/model_disk.rb +200 -0
  141. data/lib/saklient/cloud/models/model_disk_plan.rb +156 -0
  142. data/lib/saklient/cloud/models/model_icon.rb +178 -0
  143. data/lib/saklient/cloud/models/model_iface.rb +115 -0
  144. data/lib/saklient/cloud/models/model_ipv6_net.rb +106 -0
  145. data/lib/saklient/cloud/models/model_iso_image.rb +207 -0
  146. data/lib/saklient/cloud/models/model_router.rb +148 -0
  147. data/lib/saklient/cloud/models/model_router_plan.rb +106 -0
  148. data/lib/saklient/cloud/models/model_script.rb +178 -0
  149. data/lib/saklient/cloud/models/model_server.rb +237 -0
  150. data/lib/saklient/cloud/models/model_server_plan.rb +119 -0
  151. data/lib/saklient/cloud/models/model_swytch.rb +138 -0
  152. data/lib/saklient/cloud/models/query_params.rb +44 -0
  153. data/lib/saklient/cloud/product.rb +95 -0
  154. data/lib/saklient/cloud/resources/appliance.rb +551 -0
  155. data/lib/saklient/cloud/resources/archive.rb +861 -0
  156. data/lib/saklient/cloud/resources/disk.rb +802 -0
  157. data/lib/saklient/cloud/resources/disk_config.rb +353 -0
  158. data/lib/saklient/cloud/resources/disk_plan.rb +194 -0
  159. data/lib/saklient/cloud/resources/ftp_info.rb +93 -0
  160. data/lib/saklient/cloud/resources/icon.rb +268 -0
  161. data/lib/saklient/cloud/resources/iface.rb +329 -0
  162. data/lib/saklient/cloud/resources/ipv4_net.rb +275 -0
  163. data/lib/saklient/cloud/resources/ipv6_net.rb +238 -0
  164. data/lib/saklient/cloud/resources/iso_image.rb +666 -0
  165. data/lib/saklient/cloud/resources/resource.rb +287 -0
  166. data/lib/saklient/cloud/resources/router.rb +508 -0
  167. data/lib/saklient/cloud/resources/router_plan.rb +230 -0
  168. data/lib/saklient/cloud/resources/script.rb +554 -0
  169. data/lib/saklient/cloud/resources/server.rb +730 -0
  170. data/lib/saklient/cloud/resources/server_instance.rb +217 -0
  171. data/lib/saklient/cloud/resources/server_plan.rb +285 -0
  172. data/lib/saklient/cloud/resources/swytch.rb +521 -0
  173. data/lib/saklient/errors/exception_factory.rb +532 -0
  174. data/lib/saklient/errors/http_bad_gateway_exception.rb +21 -0
  175. data/lib/saklient/errors/http_bad_request_exception.rb +21 -0
  176. data/lib/saklient/errors/http_conflict_exception.rb +21 -0
  177. data/lib/saklient/errors/http_exception.rb +27 -0
  178. data/lib/saklient/errors/http_expectation_failed_exception.rb +21 -0
  179. data/lib/saklient/errors/http_failed_dependency_exception.rb +21 -0
  180. data/lib/saklient/errors/http_forbidden_exception.rb +21 -0
  181. data/lib/saklient/errors/http_gateway_timeout_exception.rb +21 -0
  182. data/lib/saklient/errors/http_gone_exception.rb +21 -0
  183. data/lib/saklient/errors/http_http_version_not_supported_exception.rb +21 -0
  184. data/lib/saklient/errors/http_insufficient_storage_exception.rb +21 -0
  185. data/lib/saklient/errors/http_internal_server_error_exception.rb +21 -0
  186. data/lib/saklient/errors/http_length_required_exception.rb +21 -0
  187. data/lib/saklient/errors/http_locked_exception.rb +21 -0
  188. data/lib/saklient/errors/http_method_not_allowed_exception.rb +21 -0
  189. data/lib/saklient/errors/http_not_acceptable_exception.rb +21 -0
  190. data/lib/saklient/errors/http_not_extended_exception.rb +21 -0
  191. data/lib/saklient/errors/http_not_found_exception.rb +21 -0
  192. data/lib/saklient/errors/http_not_implemented_exception.rb +21 -0
  193. data/lib/saklient/errors/http_payment_required_exception.rb +21 -0
  194. data/lib/saklient/errors/http_precondition_failed_exception.rb +21 -0
  195. data/lib/saklient/errors/http_proxy_authentication_required_exception.rb +21 -0
  196. data/lib/saklient/errors/http_request_entity_too_large_exception.rb +21 -0
  197. data/lib/saklient/errors/http_request_timeout_exception.rb +21 -0
  198. data/lib/saklient/errors/http_request_uri_too_long_exception.rb +21 -0
  199. data/lib/saklient/errors/http_requested_range_not_satisfiable_exception.rb +21 -0
  200. data/lib/saklient/errors/http_service_unavailable_exception.rb +21 -0
  201. data/lib/saklient/errors/http_unauthorized_exception.rb +21 -0
  202. data/lib/saklient/errors/http_unprocessable_entity_exception.rb +21 -0
  203. data/lib/saklient/errors/http_unsupported_media_type_exception.rb +21 -0
  204. data/lib/saklient/errors/http_upgrade_required_exception.rb +21 -0
  205. data/lib/saklient/errors/http_variant_also_negotiates_exception.rb +21 -0
  206. data/lib/saklient/errors/saklient_exception.rb +22 -0
  207. data/lib/saklient/util.rb +121 -0
  208. data/lib/saklient/version.rb +5 -0
  209. data/saklient.gemspec +24 -0
  210. data/spec/archive_spec.rb +141 -0
  211. data/spec/enum_spec.rb +24 -0
  212. data/spec/exception_spec.rb +25 -0
  213. data/spec/iso_image_spec.rb +172 -0
  214. data/spec/router_spec.rb +124 -0
  215. data/spec/server_spec.rb +261 -0
  216. data/spec/util_spec.rb +72 -0
  217. data/test-sshkey.txt +27 -0
  218. metadata +281 -0
@@ -0,0 +1,861 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require_relative '../client'
4
+ require_relative 'resource'
5
+ require_relative 'icon'
6
+ require_relative 'ftp_info'
7
+ require_relative 'disk_plan'
8
+ require_relative 'server'
9
+ require_relative '../enums/escope'
10
+ require_relative '../enums/eavailability'
11
+ require_relative '../../errors/saklient_exception'
12
+
13
+ module Saklient
14
+ module Cloud
15
+ module Resources
16
+
17
+ # アーカイブの実体1つに対応し, 属性の取得や操作を行うためのクラス.
18
+ class Archive < Saklient::Cloud::Resources::Resource
19
+
20
+ protected
21
+
22
+ # ID
23
+ #
24
+ # @return [String]
25
+ attr_accessor :m_id
26
+
27
+ # スコープ {Saklient::Cloud::Enums::EScope}
28
+ #
29
+ # @return [String]
30
+ attr_accessor :m_scope
31
+
32
+ # 名前
33
+ #
34
+ # @return [String]
35
+ attr_accessor :m_name
36
+
37
+ # 説明
38
+ #
39
+ # @return [String]
40
+ attr_accessor :m_description
41
+
42
+ # タグ
43
+ #
44
+ # @return [Array<String>]
45
+ attr_accessor :m_tags
46
+
47
+ # アイコン
48
+ #
49
+ # @return [Icon]
50
+ attr_accessor :m_icon
51
+
52
+ # 表示順序
53
+ #
54
+ # @return [Fixnum]
55
+ attr_accessor :m_display_order
56
+
57
+ # サイズ[MiB]
58
+ #
59
+ # @return [Fixnum]
60
+ attr_accessor :m_size_mib
61
+
62
+ # サービスクラス
63
+ #
64
+ # @return [String]
65
+ attr_accessor :m_service_class
66
+
67
+ # プラン
68
+ #
69
+ # @return [DiskPlan]
70
+ attr_accessor :m_plan
71
+
72
+ # 有効状態 {Saklient::Cloud::Enums::EAvailability}
73
+ #
74
+ # @return [String]
75
+ attr_accessor :m_availability
76
+
77
+ # @private
78
+ # @return [String]
79
+ def _api_path
80
+ return '/archive'
81
+ end
82
+
83
+ # @private
84
+ # @return [String]
85
+ def _root_key
86
+ return 'Archive'
87
+ end
88
+
89
+ # @private
90
+ # @return [String]
91
+ def _root_key_m
92
+ return 'Archives'
93
+ end
94
+
95
+ public
96
+
97
+ # @private
98
+ # @return [String]
99
+ def _class_name
100
+ return 'Archive'
101
+ end
102
+
103
+ # @private
104
+ # @return [String]
105
+ def _id
106
+ return get_id
107
+ end
108
+
109
+ # このローカルオブジェクトに現在設定されているリソース情報をAPIに送信し, 新規作成または上書き保存します.
110
+ #
111
+ # @return [Archive] this
112
+ def save
113
+ return _save
114
+ end
115
+
116
+ # 最新のリソース情報を再取得します.
117
+ #
118
+ # @return [Archive] this
119
+ def reload
120
+ return _reload
121
+ end
122
+
123
+ # @private
124
+ # @param [Saklient::Cloud::Client] client
125
+ # @param [any] obj
126
+ # @param [bool] wrapped
127
+ def initialize(client, obj, wrapped = false)
128
+ super(client)
129
+ Saklient::Util::validate_type(client, 'Saklient::Cloud::Client')
130
+ Saklient::Util::validate_type(wrapped, 'bool')
131
+ api_deserialize(obj, wrapped)
132
+ end
133
+
134
+ protected
135
+
136
+ # @private
137
+ # @return [bool]
138
+ def get_is_available
139
+ return get_availability == Saklient::Cloud::Enums::EAvailability::available
140
+ end
141
+
142
+ public
143
+
144
+ # ディスクが利用可能なときtrueを返します.
145
+ #
146
+ # @return [bool]
147
+ attr_reader :is_available
148
+
149
+ def is_available
150
+ get_is_available
151
+ end
152
+
153
+ protected
154
+
155
+ # @private
156
+ # @return [Fixnum]
157
+ def get_size_gib
158
+ sizeMib = get_size_mib
159
+ return (sizeMib).nil? ? nil : sizeMib >> 10
160
+ end
161
+
162
+ # @private
163
+ # @param [Fixnum] sizeGib
164
+ # @return [Fixnum]
165
+ def set_size_gib(sizeGib)
166
+ Saklient::Util::validate_type(sizeGib, 'Fixnum')
167
+ set_size_mib((sizeGib).nil? ? nil : sizeGib * 1024)
168
+ return sizeGib
169
+ end
170
+
171
+ public
172
+
173
+ # サイズ[GiB]
174
+ #
175
+ # @return [Fixnum]
176
+ attr_accessor :size_gib
177
+
178
+ def size_gib
179
+ get_size_gib
180
+ end
181
+
182
+ def size_gib=(v)
183
+ set_size_gib(v)
184
+ end
185
+
186
+ protected
187
+
188
+ # @private
189
+ # @return [Resource]
190
+ attr_accessor :_source
191
+
192
+ public
193
+
194
+ # @private
195
+ # @return [Resource]
196
+ def get_source
197
+ return @_source
198
+ end
199
+
200
+ # @private
201
+ # @param [Resource] source
202
+ # @return [Resource]
203
+ def set_source(source)
204
+ Saklient::Util::validate_type(source, 'Saklient::Cloud::Resources::Resource')
205
+ @_source = source
206
+ return source
207
+ end
208
+
209
+ # アーカイブのコピー元
210
+ #
211
+ # @return [Resource]
212
+ attr_accessor :source
213
+
214
+ def source
215
+ get_source
216
+ end
217
+
218
+ def source=(v)
219
+ set_source(v)
220
+ end
221
+
222
+ protected
223
+
224
+ # @private
225
+ # @return [FtpInfo]
226
+ attr_accessor :_ftp_info
227
+
228
+ public
229
+
230
+ # @private
231
+ # @return [FtpInfo]
232
+ def get_ftp_info
233
+ return @_ftp_info
234
+ end
235
+
236
+ # FTP情報
237
+ #
238
+ # @return [FtpInfo]
239
+ attr_reader :ftp_info
240
+
241
+ def ftp_info
242
+ get_ftp_info
243
+ end
244
+
245
+ protected
246
+
247
+ # @private
248
+ # @param [any] r
249
+ # @param [any] root
250
+ # @return [void]
251
+ def _on_after_api_deserialize(r, root)
252
+ if !(root).nil?
253
+ if !root.nil? && root.key?(:FTPServer)
254
+ ftp = root[:FTPServer]
255
+ @_ftp_info = Saklient::Cloud::Resources::FtpInfo.new(ftp) if !(ftp).nil?
256
+ end
257
+ end
258
+ if !(r).nil?
259
+ if !r.nil? && r.key?(:SourceArchive)
260
+ s = r[:SourceArchive]
261
+ if !(s).nil?
262
+ id = s[:ID]
263
+ @_source = Saklient::Cloud::Resources::Archive.new(@_client, s) if !(id).nil?
264
+ end
265
+ end
266
+ if !r.nil? && r.key?(:SourceDisk)
267
+ s = r[:SourceDisk]
268
+ if !(s).nil?
269
+ id = s[:ID]
270
+ if !(id).nil?
271
+ obj = Saklient::Util::create_class_instance('saklient.cloud.resources.Disk', [
272
+ @_client,
273
+ s,
274
+ false
275
+ ])
276
+ @_source = obj
277
+ end
278
+ end
279
+ end
280
+ end
281
+ end
282
+
283
+ # @private
284
+ # @param [any] r
285
+ # @param [bool] withClean
286
+ # @return [void]
287
+ def _on_after_api_serialize(r, withClean)
288
+ Saklient::Util::validate_type(withClean, 'bool')
289
+ return nil if (r).nil?
290
+ if !(@_source).nil?
291
+ if @_source._class_name == 'Archive'
292
+ s = withClean ? @_source.api_serialize(true) : { ID: @_source._id }
293
+ r[:SourceArchive] = s
294
+ else
295
+ if @_source._class_name == 'Disk'
296
+ s = withClean ? @_source.api_serialize(true) : { ID: @_source._id }
297
+ r[:SourceDisk] = s
298
+ else
299
+ @_source = nil
300
+ Saklient::Util::validate_type(@_source, 'Disk or Archive', true)
301
+ end
302
+ end
303
+ end
304
+ end
305
+
306
+ public
307
+
308
+ # FTPSを開始し, イメージファイルをアップロード・ダウンロードできる状態にします.
309
+ #
310
+ # アカウント情報は, ftpInfo プロパティから取得することができます.
311
+ #
312
+ # @param [bool] reset 既にFTPSが開始されているとき, trueを指定してこのメソッドを呼ぶことでパスワードを再設定します.
313
+ # @return [Archive] this
314
+ def open_ftp(reset = false)
315
+ Saklient::Util::validate_type(reset, 'bool')
316
+ path = _api_path + '/' + Saklient::Util::url_encode(_id) + '/ftp'
317
+ q = {}
318
+ Saklient::Util::set_by_path(q, 'ChangePassword', reset)
319
+ result = @_client.request('PUT', path, q)
320
+ _on_after_api_deserialize(nil, result)
321
+ return self
322
+ end
323
+
324
+ # FTPSを終了し, アーカイブを利用可能な状態にします.
325
+ #
326
+ # @return [Archive] this
327
+ def close_ftp
328
+ path = _api_path + '/' + Saklient::Util::url_encode(_id) + '/ftp'
329
+ @_client.request('DELETE', path)
330
+ @_ftp_info = nil
331
+ return self
332
+ end
333
+
334
+ # コピー中のアーカイブが利用可能になるまで待機します.
335
+ #
336
+ # @private
337
+ # @yield [Saklient::Cloud::Resources::Archive, bool]
338
+ # @yieldreturn [void]
339
+ # @param [Fixnum] timeoutSec
340
+ # @return [void]
341
+ def after_copy(timeoutSec, &callback)
342
+ Saklient::Util::validate_type(timeoutSec, 'Fixnum')
343
+ Saklient::Util::validate_type(callback, 'Proc')
344
+ ret = sleep_while_copying(timeoutSec)
345
+ callback.call(self, ret)
346
+ end
347
+
348
+ # コピー中のアーカイブが利用可能になるまで待機します.
349
+ #
350
+ # @param [Fixnum] timeoutSec
351
+ # @return [bool] 成功時はtrue, タイムアウトやエラーによる失敗時はfalseを返します.
352
+ def sleep_while_copying(timeoutSec = 3600)
353
+ Saklient::Util::validate_type(timeoutSec, 'Fixnum')
354
+ step = 3
355
+ while 0 < timeoutSec do
356
+ reload
357
+ a = get_availability
358
+ return true if a == Saklient::Cloud::Enums::EAvailability::available
359
+ timeoutSec = 0 if a != Saklient::Cloud::Enums::EAvailability::migrating
360
+ timeoutSec -= step
361
+ sleep step if 0 < timeoutSec
362
+ end
363
+ return false
364
+ end
365
+
366
+ protected
367
+
368
+ # @return [bool]
369
+ attr_accessor :n_id
370
+
371
+ # (This method is generated in Translator_default#buildImpl)
372
+ #
373
+ # @private
374
+ # @return [String]
375
+ def get_id
376
+ return @m_id
377
+ end
378
+
379
+ public
380
+
381
+ # ID
382
+ #
383
+ # @return [String]
384
+ attr_reader :id
385
+
386
+ def id
387
+ get_id
388
+ end
389
+
390
+ protected
391
+
392
+ # @return [bool]
393
+ attr_accessor :n_scope
394
+
395
+ # (This method is generated in Translator_default#buildImpl)
396
+ #
397
+ # @private
398
+ # @return [String]
399
+ def get_scope
400
+ return @m_scope
401
+ end
402
+
403
+ public
404
+
405
+ # スコープ {Saklient::Cloud::Enums::EScope}
406
+ #
407
+ # @return [String]
408
+ attr_reader :scope
409
+
410
+ def scope
411
+ get_scope
412
+ end
413
+
414
+ protected
415
+
416
+ # @return [bool]
417
+ attr_accessor :n_name
418
+
419
+ # (This method is generated in Translator_default#buildImpl)
420
+ #
421
+ # @private
422
+ # @return [String]
423
+ def get_name
424
+ return @m_name
425
+ end
426
+
427
+ # (This method is generated in Translator_default#buildImpl)
428
+ #
429
+ # @private
430
+ # @param [String] v
431
+ # @return [String]
432
+ def set_name(v)
433
+ Saklient::Util::validate_type(v, 'String')
434
+ @m_name = v
435
+ @n_name = true
436
+ return @m_name
437
+ end
438
+
439
+ public
440
+
441
+ # 名前
442
+ #
443
+ # @return [String]
444
+ attr_accessor :name
445
+
446
+ def name
447
+ get_name
448
+ end
449
+
450
+ def name=(v)
451
+ set_name(v)
452
+ end
453
+
454
+ protected
455
+
456
+ # @return [bool]
457
+ attr_accessor :n_description
458
+
459
+ # (This method is generated in Translator_default#buildImpl)
460
+ #
461
+ # @private
462
+ # @return [String]
463
+ def get_description
464
+ return @m_description
465
+ end
466
+
467
+ # (This method is generated in Translator_default#buildImpl)
468
+ #
469
+ # @private
470
+ # @param [String] v
471
+ # @return [String]
472
+ def set_description(v)
473
+ Saklient::Util::validate_type(v, 'String')
474
+ @m_description = v
475
+ @n_description = true
476
+ return @m_description
477
+ end
478
+
479
+ public
480
+
481
+ # 説明
482
+ #
483
+ # @return [String]
484
+ attr_accessor :description
485
+
486
+ def description
487
+ get_description
488
+ end
489
+
490
+ def description=(v)
491
+ set_description(v)
492
+ end
493
+
494
+ protected
495
+
496
+ # @return [bool]
497
+ attr_accessor :n_tags
498
+
499
+ # (This method is generated in Translator_default#buildImpl)
500
+ #
501
+ # @private
502
+ # @return [Array<String>]
503
+ def get_tags
504
+ return @m_tags
505
+ end
506
+
507
+ # (This method is generated in Translator_default#buildImpl)
508
+ #
509
+ # @private
510
+ # @param [Array<String>] v
511
+ # @return [Array<String>]
512
+ def set_tags(v)
513
+ Saklient::Util::validate_type(v, 'Array')
514
+ @m_tags = v
515
+ @n_tags = true
516
+ return @m_tags
517
+ end
518
+
519
+ public
520
+
521
+ # タグ
522
+ #
523
+ # @return [Array<String>]
524
+ attr_accessor :tags
525
+
526
+ def tags
527
+ get_tags
528
+ end
529
+
530
+ def tags=(v)
531
+ set_tags(v)
532
+ end
533
+
534
+ protected
535
+
536
+ # @return [bool]
537
+ attr_accessor :n_icon
538
+
539
+ # (This method is generated in Translator_default#buildImpl)
540
+ #
541
+ # @private
542
+ # @return [Icon]
543
+ def get_icon
544
+ return @m_icon
545
+ end
546
+
547
+ # (This method is generated in Translator_default#buildImpl)
548
+ #
549
+ # @private
550
+ # @param [Icon] v
551
+ # @return [Icon]
552
+ def set_icon(v)
553
+ Saklient::Util::validate_type(v, 'Saklient::Cloud::Resources::Icon')
554
+ @m_icon = v
555
+ @n_icon = true
556
+ return @m_icon
557
+ end
558
+
559
+ public
560
+
561
+ # アイコン
562
+ #
563
+ # @return [Icon]
564
+ attr_accessor :icon
565
+
566
+ def icon
567
+ get_icon
568
+ end
569
+
570
+ def icon=(v)
571
+ set_icon(v)
572
+ end
573
+
574
+ protected
575
+
576
+ # @return [bool]
577
+ attr_accessor :n_display_order
578
+
579
+ # (This method is generated in Translator_default#buildImpl)
580
+ #
581
+ # @private
582
+ # @return [Fixnum]
583
+ def get_display_order
584
+ return @m_display_order
585
+ end
586
+
587
+ # (This method is generated in Translator_default#buildImpl)
588
+ #
589
+ # @private
590
+ # @param [Fixnum] v
591
+ # @return [Fixnum]
592
+ def set_display_order(v)
593
+ Saklient::Util::validate_type(v, 'Fixnum')
594
+ @m_display_order = v
595
+ @n_display_order = true
596
+ return @m_display_order
597
+ end
598
+
599
+ public
600
+
601
+ # 表示順序
602
+ #
603
+ # @return [Fixnum]
604
+ attr_accessor :display_order
605
+
606
+ def display_order
607
+ get_display_order
608
+ end
609
+
610
+ def display_order=(v)
611
+ set_display_order(v)
612
+ end
613
+
614
+ protected
615
+
616
+ # @return [bool]
617
+ attr_accessor :n_size_mib
618
+
619
+ # (This method is generated in Translator_default#buildImpl)
620
+ #
621
+ # @private
622
+ # @return [Fixnum]
623
+ def get_size_mib
624
+ return @m_size_mib
625
+ end
626
+
627
+ # (This method is generated in Translator_default#buildImpl)
628
+ #
629
+ # @private
630
+ # @param [Fixnum] v
631
+ # @return [Fixnum]
632
+ def set_size_mib(v)
633
+ Saklient::Util::validate_type(v, 'Fixnum')
634
+ raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Archive#size_mib') if !@is_new
635
+ @m_size_mib = v
636
+ @n_size_mib = true
637
+ return @m_size_mib
638
+ end
639
+
640
+ public
641
+
642
+ # サイズ[MiB]
643
+ #
644
+ # @return [Fixnum]
645
+ attr_accessor :size_mib
646
+
647
+ def size_mib
648
+ get_size_mib
649
+ end
650
+
651
+ def size_mib=(v)
652
+ set_size_mib(v)
653
+ end
654
+
655
+ protected
656
+
657
+ # @return [bool]
658
+ attr_accessor :n_service_class
659
+
660
+ # (This method is generated in Translator_default#buildImpl)
661
+ #
662
+ # @private
663
+ # @return [String]
664
+ def get_service_class
665
+ return @m_service_class
666
+ end
667
+
668
+ public
669
+
670
+ # サービスクラス
671
+ #
672
+ # @return [String]
673
+ attr_reader :service_class
674
+
675
+ def service_class
676
+ get_service_class
677
+ end
678
+
679
+ protected
680
+
681
+ # @return [bool]
682
+ attr_accessor :n_plan
683
+
684
+ # (This method is generated in Translator_default#buildImpl)
685
+ #
686
+ # @private
687
+ # @return [DiskPlan]
688
+ def get_plan
689
+ return @m_plan
690
+ end
691
+
692
+ public
693
+
694
+ # プラン
695
+ #
696
+ # @return [DiskPlan]
697
+ attr_reader :plan
698
+
699
+ def plan
700
+ get_plan
701
+ end
702
+
703
+ protected
704
+
705
+ # @return [bool]
706
+ attr_accessor :n_availability
707
+
708
+ # (This method is generated in Translator_default#buildImpl)
709
+ #
710
+ # @private
711
+ # @return [String]
712
+ def get_availability
713
+ return @m_availability
714
+ end
715
+
716
+ public
717
+
718
+ # 有効状態 {Saklient::Cloud::Enums::EAvailability}
719
+ #
720
+ # @return [String]
721
+ attr_reader :availability
722
+
723
+ def availability
724
+ get_availability
725
+ end
726
+
727
+ protected
728
+
729
+ # (This method is generated in Translator_default#buildImpl)
730
+ #
731
+ # @param [any] r
732
+ def api_deserialize_impl(r)
733
+ @is_new = (r).nil?
734
+ r = {} if @is_new
735
+ @is_incomplete = false
736
+ if Saklient::Util::exists_path(r, 'ID')
737
+ @m_id = (Saklient::Util::get_by_path(r, 'ID')).nil? ? nil : Saklient::Util::get_by_path(r, 'ID').to_s
738
+ else
739
+ @m_id = nil
740
+ @is_incomplete = true
741
+ end
742
+ @n_id = false
743
+ if Saklient::Util::exists_path(r, 'Scope')
744
+ @m_scope = (Saklient::Util::get_by_path(r, 'Scope')).nil? ? nil : Saklient::Util::get_by_path(r, 'Scope').to_s
745
+ else
746
+ @m_scope = nil
747
+ @is_incomplete = true
748
+ end
749
+ @n_scope = false
750
+ if Saklient::Util::exists_path(r, 'Name')
751
+ @m_name = (Saklient::Util::get_by_path(r, 'Name')).nil? ? nil : Saklient::Util::get_by_path(r, 'Name').to_s
752
+ else
753
+ @m_name = nil
754
+ @is_incomplete = true
755
+ end
756
+ @n_name = false
757
+ if Saklient::Util::exists_path(r, 'Description')
758
+ @m_description = (Saklient::Util::get_by_path(r, 'Description')).nil? ? nil : Saklient::Util::get_by_path(r, 'Description').to_s
759
+ else
760
+ @m_description = nil
761
+ @is_incomplete = true
762
+ end
763
+ @n_description = false
764
+ if Saklient::Util::exists_path(r, 'Tags')
765
+ if (Saklient::Util::get_by_path(r, 'Tags')).nil?
766
+ @m_tags = []
767
+ else
768
+ @m_tags = []
769
+ for t in Saklient::Util::get_by_path(r, 'Tags')
770
+ v1 = nil
771
+ v1 = (t).nil? ? nil : t.to_s
772
+ @m_tags << v1
773
+ end
774
+ end
775
+ else
776
+ @m_tags = nil
777
+ @is_incomplete = true
778
+ end
779
+ @n_tags = false
780
+ if Saklient::Util::exists_path(r, 'Icon')
781
+ @m_icon = (Saklient::Util::get_by_path(r, 'Icon')).nil? ? nil : Saklient::Cloud::Resources::Icon.new(@_client, Saklient::Util::get_by_path(r, 'Icon'))
782
+ else
783
+ @m_icon = nil
784
+ @is_incomplete = true
785
+ end
786
+ @n_icon = false
787
+ if Saklient::Util::exists_path(r, 'DisplayOrder')
788
+ @m_display_order = (Saklient::Util::get_by_path(r, 'DisplayOrder')).nil? ? nil : (Saklient::Util::get_by_path(r, 'DisplayOrder').to_s).to_i(10)
789
+ else
790
+ @m_display_order = nil
791
+ @is_incomplete = true
792
+ end
793
+ @n_display_order = false
794
+ if Saklient::Util::exists_path(r, 'SizeMB')
795
+ @m_size_mib = (Saklient::Util::get_by_path(r, 'SizeMB')).nil? ? nil : (Saklient::Util::get_by_path(r, 'SizeMB').to_s).to_i(10)
796
+ else
797
+ @m_size_mib = nil
798
+ @is_incomplete = true
799
+ end
800
+ @n_size_mib = false
801
+ if Saklient::Util::exists_path(r, 'ServiceClass')
802
+ @m_service_class = (Saklient::Util::get_by_path(r, 'ServiceClass')).nil? ? nil : Saklient::Util::get_by_path(r, 'ServiceClass').to_s
803
+ else
804
+ @m_service_class = nil
805
+ @is_incomplete = true
806
+ end
807
+ @n_service_class = false
808
+ if Saklient::Util::exists_path(r, 'Plan')
809
+ @m_plan = (Saklient::Util::get_by_path(r, 'Plan')).nil? ? nil : Saklient::Cloud::Resources::DiskPlan.new(@_client, Saklient::Util::get_by_path(r, 'Plan'))
810
+ else
811
+ @m_plan = nil
812
+ @is_incomplete = true
813
+ end
814
+ @n_plan = false
815
+ if Saklient::Util::exists_path(r, 'Availability')
816
+ @m_availability = (Saklient::Util::get_by_path(r, 'Availability')).nil? ? nil : Saklient::Util::get_by_path(r, 'Availability').to_s
817
+ else
818
+ @m_availability = nil
819
+ @is_incomplete = true
820
+ end
821
+ @n_availability = false
822
+ end
823
+
824
+ # @private
825
+ # @param [bool] withClean
826
+ # @return [any]
827
+ def api_serialize_impl(withClean = false)
828
+ Saklient::Util::validate_type(withClean, 'bool')
829
+ missing = []
830
+ ret = {}
831
+ Saklient::Util::set_by_path(ret, 'ID', @m_id) if withClean || @n_id
832
+ Saklient::Util::set_by_path(ret, 'Scope', @m_scope) if withClean || @n_scope
833
+ if withClean || @n_name
834
+ Saklient::Util::set_by_path(ret, 'Name', @m_name)
835
+ else
836
+ missing << 'name' if @is_new
837
+ end
838
+ Saklient::Util::set_by_path(ret, 'Description', @m_description) if withClean || @n_description
839
+ if withClean || @n_tags
840
+ Saklient::Util::set_by_path(ret, 'Tags', [])
841
+ for r1 in @m_tags
842
+ v = nil
843
+ v = r1
844
+ ret[:Tags] << v
845
+ end
846
+ end
847
+ Saklient::Util::set_by_path(ret, 'Icon', withClean ? ((@m_icon).nil? ? nil : @m_icon.api_serialize(withClean)) : ((@m_icon).nil? ? { ID: '0' } : @m_icon.api_serialize_id)) if withClean || @n_icon
848
+ Saklient::Util::set_by_path(ret, 'DisplayOrder', @m_display_order) if withClean || @n_display_order
849
+ Saklient::Util::set_by_path(ret, 'SizeMB', @m_size_mib) if withClean || @n_size_mib
850
+ Saklient::Util::set_by_path(ret, 'ServiceClass', @m_service_class) if withClean || @n_service_class
851
+ Saklient::Util::set_by_path(ret, 'Plan', withClean ? ((@m_plan).nil? ? nil : @m_plan.api_serialize(withClean)) : ((@m_plan).nil? ? { ID: '0' } : @m_plan.api_serialize_id)) if withClean || @n_plan
852
+ Saklient::Util::set_by_path(ret, 'Availability', @m_availability) if withClean || @n_availability
853
+ raise Saklient::Errors::SaklientException.new('required_field', 'Required fields must be set before the Archive creation: ' + missing.join(', ')) if missing.length > 0
854
+ return ret
855
+ end
856
+
857
+ end
858
+
859
+ end
860
+ end
861
+ end