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,802 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require_relative '../../errors/saklient_exception'
4
+ require_relative '../client'
5
+ require_relative 'resource'
6
+ require_relative 'icon'
7
+ require_relative 'disk_plan'
8
+ require_relative 'server'
9
+ require_relative 'disk_config'
10
+ require_relative '../enums/eavailability'
11
+ require_relative '../enums/edisk_connection'
12
+ require_relative '../enums/estorage_class'
13
+
14
+ module Saklient
15
+ module Cloud
16
+ module Resources
17
+
18
+ # ディスクの実体1つに対応し, 属性の取得や操作を行うためのクラス.
19
+ class Disk < Saklient::Cloud::Resources::Resource
20
+
21
+ protected
22
+
23
+ # ID
24
+ #
25
+ # @return [String]
26
+ attr_accessor :m_id
27
+
28
+ # 名前
29
+ #
30
+ # @return [String]
31
+ attr_accessor :m_name
32
+
33
+ # 説明
34
+ #
35
+ # @return [String]
36
+ attr_accessor :m_description
37
+
38
+ # タグ
39
+ #
40
+ # @return [Array<String>]
41
+ attr_accessor :m_tags
42
+
43
+ # アイコン
44
+ #
45
+ # @return [Icon]
46
+ attr_accessor :m_icon
47
+
48
+ # サイズ[MiB]
49
+ #
50
+ # @return [Fixnum]
51
+ attr_accessor :m_size_mib
52
+
53
+ # サービスクラス
54
+ #
55
+ # @return [String]
56
+ attr_accessor :m_service_class
57
+
58
+ # プラン
59
+ #
60
+ # @return [DiskPlan]
61
+ attr_accessor :m_plan
62
+
63
+ # 接続先のサーバ
64
+ #
65
+ # @return [Server]
66
+ attr_accessor :m_server
67
+
68
+ # 有効状態 {Saklient::Cloud::Enums::EAvailability}
69
+ #
70
+ # @return [String]
71
+ attr_accessor :m_availability
72
+
73
+ # @private
74
+ # @return [String]
75
+ def _api_path
76
+ return '/disk'
77
+ end
78
+
79
+ # @private
80
+ # @return [String]
81
+ def _root_key
82
+ return 'Disk'
83
+ end
84
+
85
+ # @private
86
+ # @return [String]
87
+ def _root_key_m
88
+ return 'Disks'
89
+ end
90
+
91
+ public
92
+
93
+ # @private
94
+ # @return [String]
95
+ def _class_name
96
+ return 'Disk'
97
+ end
98
+
99
+ # @private
100
+ # @return [String]
101
+ def _id
102
+ return get_id
103
+ end
104
+
105
+ # このローカルオブジェクトに現在設定されているリソース情報をAPIに送信し, 新規作成または上書き保存します.
106
+ #
107
+ # @return [Disk] this
108
+ def save
109
+ return _save
110
+ end
111
+
112
+ # 最新のリソース情報を再取得します.
113
+ #
114
+ # @return [Disk] this
115
+ def reload
116
+ return _reload
117
+ end
118
+
119
+ # @private
120
+ # @param [Saklient::Cloud::Client] client
121
+ # @param [any] obj
122
+ # @param [bool] wrapped
123
+ def initialize(client, obj, wrapped = false)
124
+ super(client)
125
+ Saklient::Util::validate_type(client, 'Saklient::Cloud::Client')
126
+ Saklient::Util::validate_type(wrapped, 'bool')
127
+ api_deserialize(obj, wrapped)
128
+ end
129
+
130
+ protected
131
+
132
+ # @private
133
+ # @return [bool]
134
+ def get_is_available
135
+ return get_availability == Saklient::Cloud::Enums::EAvailability::available
136
+ end
137
+
138
+ public
139
+
140
+ # ディスクが利用可能なときtrueを返します.
141
+ #
142
+ # @return [bool]
143
+ attr_reader :is_available
144
+
145
+ def is_available
146
+ get_is_available
147
+ end
148
+
149
+ protected
150
+
151
+ # @private
152
+ # @return [Fixnum]
153
+ def get_size_gib
154
+ sizeMib = get_size_mib
155
+ return (sizeMib).nil? ? nil : sizeMib >> 10
156
+ end
157
+
158
+ # @private
159
+ # @param [Fixnum] sizeGib
160
+ # @return [Fixnum]
161
+ def set_size_gib(sizeGib)
162
+ Saklient::Util::validate_type(sizeGib, 'Fixnum')
163
+ set_size_mib((sizeGib).nil? ? nil : sizeGib * 1024)
164
+ return sizeGib
165
+ end
166
+
167
+ public
168
+
169
+ # サイズ[GiB]
170
+ #
171
+ # @return [Fixnum]
172
+ attr_accessor :size_gib
173
+
174
+ def size_gib
175
+ get_size_gib
176
+ end
177
+
178
+ def size_gib=(v)
179
+ set_size_gib(v)
180
+ end
181
+
182
+ protected
183
+
184
+ # @private
185
+ # @return [Resource]
186
+ attr_accessor :_source
187
+
188
+ public
189
+
190
+ # @private
191
+ # @return [Resource]
192
+ def get_source
193
+ return @_source
194
+ end
195
+
196
+ # @private
197
+ # @param [Resource] source
198
+ # @return [Resource]
199
+ def set_source(source)
200
+ Saklient::Util::validate_type(source, 'Saklient::Cloud::Resources::Resource')
201
+ @_source = source
202
+ return source
203
+ end
204
+
205
+ # ディスクのコピー元
206
+ #
207
+ # @return [Resource]
208
+ attr_accessor :source
209
+
210
+ def source
211
+ get_source
212
+ end
213
+
214
+ def source=(v)
215
+ set_source(v)
216
+ end
217
+
218
+ protected
219
+
220
+ # @private
221
+ # @param [any] r
222
+ # @param [any] root
223
+ # @return [void]
224
+ def _on_after_api_deserialize(r, root)
225
+ if !(r).nil?
226
+ if !r.nil? && r.key?(:SourceDisk)
227
+ s = r[:SourceDisk]
228
+ if !(s).nil?
229
+ id = s[:ID]
230
+ @_source = Saklient::Cloud::Resources::Disk.new(@_client, s) if !(id).nil?
231
+ end
232
+ end
233
+ if !r.nil? && r.key?(:SourceArchive)
234
+ s = r[:SourceArchive]
235
+ if !(s).nil?
236
+ id = s[:ID]
237
+ if !(id).nil?
238
+ obj = Saklient::Util::create_class_instance('saklient.cloud.resources.Archive', [
239
+ @_client,
240
+ s,
241
+ false
242
+ ])
243
+ @_source = obj
244
+ end
245
+ end
246
+ end
247
+ end
248
+ end
249
+
250
+ # @private
251
+ # @param [any] r
252
+ # @param [bool] withClean
253
+ # @return [void]
254
+ def _on_after_api_serialize(r, withClean)
255
+ Saklient::Util::validate_type(withClean, 'bool')
256
+ return nil if (r).nil?
257
+ if !(@_source).nil?
258
+ if @_source._class_name == 'Disk'
259
+ s = withClean ? @_source.api_serialize(true) : { ID: @_source._id }
260
+ r[:SourceDisk] = s
261
+ else
262
+ if @_source._class_name == 'Archive'
263
+ s = withClean ? @_source.api_serialize(true) : { ID: @_source._id }
264
+ r[:SourceArchive] = s
265
+ else
266
+ @_source = nil
267
+ Saklient::Util::validate_type(@_source, 'Disk or Archive', true)
268
+ end
269
+ end
270
+ end
271
+ end
272
+
273
+ public
274
+
275
+ # ディスクをサーバに取り付けます.
276
+ #
277
+ # @param [Server] server
278
+ # @return [Disk] this
279
+ def connect_to(server)
280
+ Saklient::Util::validate_type(server, 'Saklient::Cloud::Resources::Server')
281
+ @_client.request('PUT', '/disk/' + _id + '/to/server/' + server._id)
282
+ return self
283
+ end
284
+
285
+ # ディスクをサーバから取り外します.
286
+ #
287
+ # @return [Disk] this
288
+ def disconnect
289
+ @_client.request('DELETE', '/disk/' + _id + '/to/server')
290
+ return self
291
+ end
292
+
293
+ # ディスク修正を行うためのオブジェクトを用意します.
294
+ #
295
+ # 返り値のオブジェクトにパラメータを設定し, write() を呼ぶことで修正を行います.
296
+ #
297
+ # @return [DiskConfig]
298
+ def create_config
299
+ return Saklient::Cloud::Resources::DiskConfig.new(@_client, _id)
300
+ end
301
+
302
+ # コピー中のディスクが利用可能になるまで待機します.
303
+ #
304
+ # @private
305
+ # @yield [Saklient::Cloud::Resources::Disk, bool]
306
+ # @yieldreturn [void]
307
+ # @param [Fixnum] timeoutSec
308
+ # @return [void]
309
+ def after_copy(timeoutSec, &callback)
310
+ Saklient::Util::validate_type(timeoutSec, 'Fixnum')
311
+ Saklient::Util::validate_type(callback, 'Proc')
312
+ ret = sleep_while_copying(timeoutSec)
313
+ callback.call(self, ret)
314
+ end
315
+
316
+ # コピー中のディスクが利用可能になるまで待機します.
317
+ #
318
+ # @param [Fixnum] timeoutSec
319
+ # @return [bool] 成功時はtrue, タイムアウトやエラーによる失敗時はfalseを返します.
320
+ def sleep_while_copying(timeoutSec = 3600)
321
+ Saklient::Util::validate_type(timeoutSec, 'Fixnum')
322
+ step = 3
323
+ while 0 < timeoutSec do
324
+ reload
325
+ a = get_availability
326
+ return true if a == Saklient::Cloud::Enums::EAvailability::available
327
+ timeoutSec = 0 if a != Saklient::Cloud::Enums::EAvailability::migrating
328
+ timeoutSec -= step
329
+ sleep step if 0 < timeoutSec
330
+ end
331
+ return false
332
+ end
333
+
334
+ protected
335
+
336
+ # @return [bool]
337
+ attr_accessor :n_id
338
+
339
+ # (This method is generated in Translator_default#buildImpl)
340
+ #
341
+ # @private
342
+ # @return [String]
343
+ def get_id
344
+ return @m_id
345
+ end
346
+
347
+ public
348
+
349
+ # ID
350
+ #
351
+ # @return [String]
352
+ attr_reader :id
353
+
354
+ def id
355
+ get_id
356
+ end
357
+
358
+ protected
359
+
360
+ # @return [bool]
361
+ attr_accessor :n_name
362
+
363
+ # (This method is generated in Translator_default#buildImpl)
364
+ #
365
+ # @private
366
+ # @return [String]
367
+ def get_name
368
+ return @m_name
369
+ end
370
+
371
+ # (This method is generated in Translator_default#buildImpl)
372
+ #
373
+ # @private
374
+ # @param [String] v
375
+ # @return [String]
376
+ def set_name(v)
377
+ Saklient::Util::validate_type(v, 'String')
378
+ @m_name = v
379
+ @n_name = true
380
+ return @m_name
381
+ end
382
+
383
+ public
384
+
385
+ # 名前
386
+ #
387
+ # @return [String]
388
+ attr_accessor :name
389
+
390
+ def name
391
+ get_name
392
+ end
393
+
394
+ def name=(v)
395
+ set_name(v)
396
+ end
397
+
398
+ protected
399
+
400
+ # @return [bool]
401
+ attr_accessor :n_description
402
+
403
+ # (This method is generated in Translator_default#buildImpl)
404
+ #
405
+ # @private
406
+ # @return [String]
407
+ def get_description
408
+ return @m_description
409
+ end
410
+
411
+ # (This method is generated in Translator_default#buildImpl)
412
+ #
413
+ # @private
414
+ # @param [String] v
415
+ # @return [String]
416
+ def set_description(v)
417
+ Saklient::Util::validate_type(v, 'String')
418
+ @m_description = v
419
+ @n_description = true
420
+ return @m_description
421
+ end
422
+
423
+ public
424
+
425
+ # 説明
426
+ #
427
+ # @return [String]
428
+ attr_accessor :description
429
+
430
+ def description
431
+ get_description
432
+ end
433
+
434
+ def description=(v)
435
+ set_description(v)
436
+ end
437
+
438
+ protected
439
+
440
+ # @return [bool]
441
+ attr_accessor :n_tags
442
+
443
+ # (This method is generated in Translator_default#buildImpl)
444
+ #
445
+ # @private
446
+ # @return [Array<String>]
447
+ def get_tags
448
+ return @m_tags
449
+ end
450
+
451
+ # (This method is generated in Translator_default#buildImpl)
452
+ #
453
+ # @private
454
+ # @param [Array<String>] v
455
+ # @return [Array<String>]
456
+ def set_tags(v)
457
+ Saklient::Util::validate_type(v, 'Array')
458
+ @m_tags = v
459
+ @n_tags = true
460
+ return @m_tags
461
+ end
462
+
463
+ public
464
+
465
+ # タグ
466
+ #
467
+ # @return [Array<String>]
468
+ attr_accessor :tags
469
+
470
+ def tags
471
+ get_tags
472
+ end
473
+
474
+ def tags=(v)
475
+ set_tags(v)
476
+ end
477
+
478
+ protected
479
+
480
+ # @return [bool]
481
+ attr_accessor :n_icon
482
+
483
+ # (This method is generated in Translator_default#buildImpl)
484
+ #
485
+ # @private
486
+ # @return [Icon]
487
+ def get_icon
488
+ return @m_icon
489
+ end
490
+
491
+ # (This method is generated in Translator_default#buildImpl)
492
+ #
493
+ # @private
494
+ # @param [Icon] v
495
+ # @return [Icon]
496
+ def set_icon(v)
497
+ Saklient::Util::validate_type(v, 'Saklient::Cloud::Resources::Icon')
498
+ @m_icon = v
499
+ @n_icon = true
500
+ return @m_icon
501
+ end
502
+
503
+ public
504
+
505
+ # アイコン
506
+ #
507
+ # @return [Icon]
508
+ attr_accessor :icon
509
+
510
+ def icon
511
+ get_icon
512
+ end
513
+
514
+ def icon=(v)
515
+ set_icon(v)
516
+ end
517
+
518
+ protected
519
+
520
+ # @return [bool]
521
+ attr_accessor :n_size_mib
522
+
523
+ # (This method is generated in Translator_default#buildImpl)
524
+ #
525
+ # @private
526
+ # @return [Fixnum]
527
+ def get_size_mib
528
+ return @m_size_mib
529
+ end
530
+
531
+ # (This method is generated in Translator_default#buildImpl)
532
+ #
533
+ # @private
534
+ # @param [Fixnum] v
535
+ # @return [Fixnum]
536
+ def set_size_mib(v)
537
+ Saklient::Util::validate_type(v, 'Fixnum')
538
+ raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Disk#size_mib') if !@is_new
539
+ @m_size_mib = v
540
+ @n_size_mib = true
541
+ return @m_size_mib
542
+ end
543
+
544
+ public
545
+
546
+ # サイズ[MiB]
547
+ #
548
+ # @return [Fixnum]
549
+ attr_accessor :size_mib
550
+
551
+ def size_mib
552
+ get_size_mib
553
+ end
554
+
555
+ def size_mib=(v)
556
+ set_size_mib(v)
557
+ end
558
+
559
+ protected
560
+
561
+ # @return [bool]
562
+ attr_accessor :n_service_class
563
+
564
+ # (This method is generated in Translator_default#buildImpl)
565
+ #
566
+ # @private
567
+ # @return [String]
568
+ def get_service_class
569
+ return @m_service_class
570
+ end
571
+
572
+ public
573
+
574
+ # サービスクラス
575
+ #
576
+ # @return [String]
577
+ attr_reader :service_class
578
+
579
+ def service_class
580
+ get_service_class
581
+ end
582
+
583
+ protected
584
+
585
+ # @return [bool]
586
+ attr_accessor :n_plan
587
+
588
+ # (This method is generated in Translator_default#buildImpl)
589
+ #
590
+ # @private
591
+ # @return [DiskPlan]
592
+ def get_plan
593
+ return @m_plan
594
+ end
595
+
596
+ # (This method is generated in Translator_default#buildImpl)
597
+ #
598
+ # @private
599
+ # @param [DiskPlan] v
600
+ # @return [DiskPlan]
601
+ def set_plan(v)
602
+ Saklient::Util::validate_type(v, 'Saklient::Cloud::Resources::DiskPlan')
603
+ raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Disk#plan') if !@is_new
604
+ @m_plan = v
605
+ @n_plan = true
606
+ return @m_plan
607
+ end
608
+
609
+ public
610
+
611
+ # プラン
612
+ #
613
+ # @return [DiskPlan]
614
+ attr_accessor :plan
615
+
616
+ def plan
617
+ get_plan
618
+ end
619
+
620
+ def plan=(v)
621
+ set_plan(v)
622
+ end
623
+
624
+ protected
625
+
626
+ # @return [bool]
627
+ attr_accessor :n_server
628
+
629
+ # (This method is generated in Translator_default#buildImpl)
630
+ #
631
+ # @private
632
+ # @return [Server]
633
+ def get_server
634
+ return @m_server
635
+ end
636
+
637
+ public
638
+
639
+ # 接続先のサーバ
640
+ #
641
+ # @return [Server]
642
+ attr_reader :server
643
+
644
+ def server
645
+ get_server
646
+ end
647
+
648
+ protected
649
+
650
+ # @return [bool]
651
+ attr_accessor :n_availability
652
+
653
+ # (This method is generated in Translator_default#buildImpl)
654
+ #
655
+ # @private
656
+ # @return [String]
657
+ def get_availability
658
+ return @m_availability
659
+ end
660
+
661
+ public
662
+
663
+ # 有効状態 {Saklient::Cloud::Enums::EAvailability}
664
+ #
665
+ # @return [String]
666
+ attr_reader :availability
667
+
668
+ def availability
669
+ get_availability
670
+ end
671
+
672
+ protected
673
+
674
+ # (This method is generated in Translator_default#buildImpl)
675
+ #
676
+ # @param [any] r
677
+ def api_deserialize_impl(r)
678
+ @is_new = (r).nil?
679
+ r = {} if @is_new
680
+ @is_incomplete = false
681
+ if Saklient::Util::exists_path(r, 'ID')
682
+ @m_id = (Saklient::Util::get_by_path(r, 'ID')).nil? ? nil : Saklient::Util::get_by_path(r, 'ID').to_s
683
+ else
684
+ @m_id = nil
685
+ @is_incomplete = true
686
+ end
687
+ @n_id = false
688
+ if Saklient::Util::exists_path(r, 'Name')
689
+ @m_name = (Saklient::Util::get_by_path(r, 'Name')).nil? ? nil : Saklient::Util::get_by_path(r, 'Name').to_s
690
+ else
691
+ @m_name = nil
692
+ @is_incomplete = true
693
+ end
694
+ @n_name = false
695
+ if Saklient::Util::exists_path(r, 'Description')
696
+ @m_description = (Saklient::Util::get_by_path(r, 'Description')).nil? ? nil : Saklient::Util::get_by_path(r, 'Description').to_s
697
+ else
698
+ @m_description = nil
699
+ @is_incomplete = true
700
+ end
701
+ @n_description = false
702
+ if Saklient::Util::exists_path(r, 'Tags')
703
+ if (Saklient::Util::get_by_path(r, 'Tags')).nil?
704
+ @m_tags = []
705
+ else
706
+ @m_tags = []
707
+ for t in Saklient::Util::get_by_path(r, 'Tags')
708
+ v1 = nil
709
+ v1 = (t).nil? ? nil : t.to_s
710
+ @m_tags << v1
711
+ end
712
+ end
713
+ else
714
+ @m_tags = nil
715
+ @is_incomplete = true
716
+ end
717
+ @n_tags = false
718
+ if Saklient::Util::exists_path(r, 'Icon')
719
+ @m_icon = (Saklient::Util::get_by_path(r, 'Icon')).nil? ? nil : Saklient::Cloud::Resources::Icon.new(@_client, Saklient::Util::get_by_path(r, 'Icon'))
720
+ else
721
+ @m_icon = nil
722
+ @is_incomplete = true
723
+ end
724
+ @n_icon = false
725
+ if Saklient::Util::exists_path(r, 'SizeMB')
726
+ @m_size_mib = (Saklient::Util::get_by_path(r, 'SizeMB')).nil? ? nil : (Saklient::Util::get_by_path(r, 'SizeMB').to_s).to_i(10)
727
+ else
728
+ @m_size_mib = nil
729
+ @is_incomplete = true
730
+ end
731
+ @n_size_mib = false
732
+ if Saklient::Util::exists_path(r, 'ServiceClass')
733
+ @m_service_class = (Saklient::Util::get_by_path(r, 'ServiceClass')).nil? ? nil : Saklient::Util::get_by_path(r, 'ServiceClass').to_s
734
+ else
735
+ @m_service_class = nil
736
+ @is_incomplete = true
737
+ end
738
+ @n_service_class = false
739
+ if Saklient::Util::exists_path(r, 'Plan')
740
+ @m_plan = (Saklient::Util::get_by_path(r, 'Plan')).nil? ? nil : Saklient::Cloud::Resources::DiskPlan.new(@_client, Saklient::Util::get_by_path(r, 'Plan'))
741
+ else
742
+ @m_plan = nil
743
+ @is_incomplete = true
744
+ end
745
+ @n_plan = false
746
+ if Saklient::Util::exists_path(r, 'Server')
747
+ @m_server = (Saklient::Util::get_by_path(r, 'Server')).nil? ? nil : Saklient::Cloud::Resources::Server.new(@_client, Saklient::Util::get_by_path(r, 'Server'))
748
+ else
749
+ @m_server = nil
750
+ @is_incomplete = true
751
+ end
752
+ @n_server = false
753
+ if Saklient::Util::exists_path(r, 'Availability')
754
+ @m_availability = (Saklient::Util::get_by_path(r, 'Availability')).nil? ? nil : Saklient::Util::get_by_path(r, 'Availability').to_s
755
+ else
756
+ @m_availability = nil
757
+ @is_incomplete = true
758
+ end
759
+ @n_availability = false
760
+ end
761
+
762
+ # @private
763
+ # @param [bool] withClean
764
+ # @return [any]
765
+ def api_serialize_impl(withClean = false)
766
+ Saklient::Util::validate_type(withClean, 'bool')
767
+ missing = []
768
+ ret = {}
769
+ Saklient::Util::set_by_path(ret, 'ID', @m_id) if withClean || @n_id
770
+ if withClean || @n_name
771
+ Saklient::Util::set_by_path(ret, 'Name', @m_name)
772
+ else
773
+ missing << 'name' if @is_new
774
+ end
775
+ Saklient::Util::set_by_path(ret, 'Description', @m_description) if withClean || @n_description
776
+ if withClean || @n_tags
777
+ Saklient::Util::set_by_path(ret, 'Tags', [])
778
+ for r1 in @m_tags
779
+ v = nil
780
+ v = r1
781
+ ret[:Tags] << v
782
+ end
783
+ end
784
+ 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
785
+ Saklient::Util::set_by_path(ret, 'SizeMB', @m_size_mib) if withClean || @n_size_mib
786
+ Saklient::Util::set_by_path(ret, 'ServiceClass', @m_service_class) if withClean || @n_service_class
787
+ if withClean || @n_plan
788
+ 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))
789
+ else
790
+ missing << 'plan' if @is_new
791
+ end
792
+ Saklient::Util::set_by_path(ret, 'Server', withClean ? ((@m_server).nil? ? nil : @m_server.api_serialize(withClean)) : ((@m_server).nil? ? { ID: '0' } : @m_server.api_serialize_id)) if withClean || @n_server
793
+ Saklient::Util::set_by_path(ret, 'Availability', @m_availability) if withClean || @n_availability
794
+ raise Saklient::Errors::SaklientException.new('required_field', 'Required fields must be set before the Disk creation: ' + missing.join(', ')) if missing.length > 0
795
+ return ret
796
+ end
797
+
798
+ end
799
+
800
+ end
801
+ end
802
+ end