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,348 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require_relative '../client'
4
+ require_relative '../resources/resource'
5
+ require_relative 'query_params'
6
+ require_relative '../../errors/saklient_exception'
7
+
8
+ module Saklient
9
+ module Cloud
10
+ module Models
11
+
12
+ # @private
13
+ class Model
14
+
15
+ protected
16
+
17
+ # @private
18
+ # @return [Saklient::Cloud::Client]
19
+ attr_accessor :_client
20
+
21
+ # @private
22
+ # @return [Saklient::Cloud::Client]
23
+ def get_client
24
+ return @_client
25
+ end
26
+
27
+ public
28
+
29
+ # @return [Saklient::Cloud::Client]
30
+ attr_reader :client
31
+
32
+ def client
33
+ get_client
34
+ end
35
+
36
+ protected
37
+
38
+ # @private
39
+ # @return [QueryParams]
40
+ attr_accessor :_query
41
+
42
+ # @private
43
+ # @return [QueryParams]
44
+ def get_query
45
+ return @_query
46
+ end
47
+
48
+ public
49
+
50
+ # @return [QueryParams]
51
+ attr_reader :query
52
+
53
+ def query
54
+ get_query
55
+ end
56
+
57
+ protected
58
+
59
+ # @private
60
+ # @return [Fixnum]
61
+ attr_accessor :_total
62
+
63
+ # @private
64
+ # @return [Fixnum]
65
+ def get_total
66
+ return @_total
67
+ end
68
+
69
+ public
70
+
71
+ # @return [Fixnum]
72
+ attr_reader :total
73
+
74
+ def total
75
+ get_total
76
+ end
77
+
78
+ protected
79
+
80
+ # @private
81
+ # @return [Fixnum]
82
+ attr_accessor :_count
83
+
84
+ # @private
85
+ # @return [Fixnum]
86
+ def get_count
87
+ return @_count
88
+ end
89
+
90
+ public
91
+
92
+ # @return [Fixnum]
93
+ attr_reader :count
94
+
95
+ def count
96
+ get_count
97
+ end
98
+
99
+ protected
100
+
101
+ # @private
102
+ # @return [String]
103
+ def _api_path
104
+ return nil
105
+ end
106
+
107
+ # @private
108
+ # @return [String]
109
+ def _root_key
110
+ return nil
111
+ end
112
+
113
+ # @private
114
+ # @return [String]
115
+ def _root_key_m
116
+ return nil
117
+ end
118
+
119
+ # @private
120
+ # @return [String]
121
+ def _class_name
122
+ return nil
123
+ end
124
+
125
+ public
126
+
127
+ # @param [Saklient::Cloud::Client] client
128
+ def initialize(client)
129
+ Saklient::Util::validate_type(client, 'Saklient::Cloud::Client')
130
+ @_client = client
131
+ _reset
132
+ end
133
+
134
+ protected
135
+
136
+ # 次に取得するリストの開始オフセットを指定します.
137
+ #
138
+ # @private
139
+ # @param [Fixnum] offset オフセット
140
+ # @return [Model] this
141
+ def _offset(offset)
142
+ Saklient::Util::validate_type(offset, 'Fixnum')
143
+ @_query.begin = offset
144
+ return self
145
+ end
146
+
147
+ # 次に取得するリストの上限レコード数を指定します.
148
+ #
149
+ # @private
150
+ # @param [Fixnum] count 上限レコード数
151
+ # @return [Model] this
152
+ def _limit(count)
153
+ Saklient::Util::validate_type(count, 'Fixnum')
154
+ @_query.count = count
155
+ return self
156
+ end
157
+
158
+ # 次に取得するリストのソートカラムを指定します.
159
+ #
160
+ # @private
161
+ # @param [String] column カラム名
162
+ # @param [bool] reverse
163
+ # @return [Model] this
164
+ def _sort(column, reverse = false)
165
+ Saklient::Util::validate_type(column, 'String')
166
+ Saklient::Util::validate_type(reverse, 'bool')
167
+ op = reverse ? '-' : ''
168
+ @_query.sort << op + column
169
+ return self
170
+ end
171
+
172
+ # Web APIのフィルタリング設定を直接指定します.
173
+ #
174
+ # @private
175
+ # @param [String] key キー
176
+ # @param [any] value 値
177
+ # @param [bool] multiple valueに配列を与え, OR条件で完全一致検索する場合にtrueを指定します. 通常, valueはスカラ値であいまい検索されます.
178
+ # @return [Model]
179
+ def _filter_by(key, value, multiple = false)
180
+ Saklient::Util::validate_type(key, 'String')
181
+ Saklient::Util::validate_type(multiple, 'bool')
182
+ filter = @_query.filter
183
+ if multiple
184
+ filter[key.to_sym] = [] if !(!filter.nil? && filter.key?(key.to_sym))
185
+ values = filter[key.to_sym]
186
+ values << value
187
+ else
188
+ raise Saklient::Errors::SaklientException.new('filter_duplicated', 'The same filter key can be specified only once (by calling the same method \'withFooBar\')') if !filter.nil? && filter.key?(key.to_sym)
189
+ filter[key.to_sym] = value
190
+ end
191
+ return self
192
+ end
193
+
194
+ # 次のリクエストのために設定されているステートをすべて破棄します.
195
+ #
196
+ # @private
197
+ # @return [Model] this
198
+ def _reset
199
+ @_query = Saklient::Cloud::Models::QueryParams.new()
200
+ @_total = 0
201
+ @_count = 0
202
+ return self
203
+ end
204
+
205
+ # 新規リソース作成用のオブジェクトを用意します.
206
+ #
207
+ # 返り値のオブジェクトにパラメータを設定し, save() を呼ぶことで実際のリソースが作成されます.
208
+ #
209
+ # @private
210
+ # @return [Saklient::Cloud::Resources::Resource] リソースオブジェクト
211
+ def _create
212
+ a = [
213
+ @_client,
214
+ nil,
215
+ false
216
+ ]
217
+ return Saklient::Util::create_class_instance('saklient.cloud.resources.' + _class_name, a)
218
+ end
219
+
220
+ # 指定したIDを持つ唯一のリソースを取得します.
221
+ #
222
+ # @private
223
+ # @param [String] id
224
+ # @return [Saklient::Cloud::Resources::Resource] リソースオブジェクト
225
+ def _get_by_id(id)
226
+ Saklient::Util::validate_type(id, 'String')
227
+ query = @_query.build
228
+ _reset
229
+ result = @_client.request('GET', _api_path + '/' + Saklient::Util::url_encode(id), query)
230
+ @_total = 1
231
+ @_count = 1
232
+ a = [
233
+ @_client,
234
+ result,
235
+ true
236
+ ]
237
+ return Saklient::Util::create_class_instance('saklient.cloud.resources.' + _class_name, a)
238
+ end
239
+
240
+ # リソースの検索リクエストを実行し, 結果をリストで取得します.
241
+ #
242
+ # @private
243
+ # @return [Array<Saklient::Cloud::Resources::Resource>] リソースオブジェクトの配列
244
+ def _find
245
+ query = @_query.build
246
+ _reset
247
+ result = @_client.request('GET', _api_path, query)
248
+ @_total = result[:Total]
249
+ @_count = result[:Count]
250
+ data = []
251
+ records = result[_root_key_m.to_sym]
252
+ for record in records
253
+ a = [
254
+ @_client,
255
+ record,
256
+ false
257
+ ]
258
+ i = Saklient::Util::create_class_instance('saklient.cloud.resources.' + _class_name, a)
259
+ data << i
260
+ end
261
+ return data
262
+ end
263
+
264
+ # リソースの検索リクエストを実行し, 唯一のリソースを取得します.
265
+ #
266
+ # @private
267
+ # @return [Saklient::Cloud::Resources::Resource] リソースオブジェクト
268
+ def _find_one
269
+ query = @_query.build
270
+ _reset
271
+ result = @_client.request('GET', _api_path, query)
272
+ @_total = result[:Total]
273
+ @_count = result[:Count]
274
+ return nil if @_total == 0
275
+ records = result[_root_key_m.to_sym]
276
+ a = [
277
+ @_client,
278
+ records[0],
279
+ false
280
+ ]
281
+ return Saklient::Util::create_class_instance('saklient.cloud.resources.' + _class_name, a)
282
+ end
283
+
284
+ # 指定した文字列を名前に含むリソースに絞り込みます.
285
+ #
286
+ # 大文字・小文字は区別されません.
287
+ # 半角スペースで区切られた複数の文字列は, それらをすべて含むことが条件とみなされます.
288
+ #
289
+ # @private
290
+ # @todo Implement test case
291
+ # @param [String] name
292
+ # @return [Model]
293
+ def _with_name_like(name)
294
+ Saklient::Util::validate_type(name, 'String')
295
+ return _filter_by('Name', name)
296
+ end
297
+
298
+ # 指定したタグを持つリソースに絞り込みます.
299
+ #
300
+ # 複数のタグを指定する場合は withTags() を利用してください.
301
+ #
302
+ # @private
303
+ # @todo Implement test case
304
+ # @param [String] tag
305
+ # @return [Model]
306
+ def _with_tag(tag)
307
+ Saklient::Util::validate_type(tag, 'String')
308
+ return _filter_by('Tags.Name', [tag])
309
+ end
310
+
311
+ # 指定したすべてのタグを持つリソースに絞り込みます.
312
+ #
313
+ # @private
314
+ # @todo Implement test case
315
+ # @param [Array<String>] tags
316
+ # @return [Model]
317
+ def _with_tags(tags)
318
+ Saklient::Util::validate_type(tags, 'Array')
319
+ return _filter_by('Tags.Name', [tags])
320
+ end
321
+
322
+ # 指定したDNFに合致するタグを持つリソースに絞り込みます.
323
+ #
324
+ # @private
325
+ # @todo Implement test case
326
+ # @param [Array<Array<String>>] dnf
327
+ # @return [Model]
328
+ def _with_tag_dnf(dnf)
329
+ Saklient::Util::validate_type(dnf, 'Array')
330
+ return _filter_by('Tags.Name', dnf)
331
+ end
332
+
333
+ # 名前でソートします.
334
+ #
335
+ # @private
336
+ # @todo Implement test case
337
+ # @param [bool] reverse
338
+ # @return [Model]
339
+ def _sort_by_name(reverse = false)
340
+ Saklient::Util::validate_type(reverse, 'bool')
341
+ return _sort('Name', reverse)
342
+ end
343
+
344
+ end
345
+
346
+ end
347
+ end
348
+ end
@@ -0,0 +1,161 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require_relative '../client'
4
+ require_relative 'model'
5
+ require_relative '../resources/appliance'
6
+
7
+ module Saklient
8
+ module Cloud
9
+ module Models
10
+
11
+ # アプライアンスを検索・作成するための機能を備えたクラス.
12
+ class Model_Appliance < Saklient::Cloud::Models::Model
13
+
14
+ protected
15
+
16
+ # @private
17
+ # @return [String]
18
+ def _api_path
19
+ return '/appliance'
20
+ end
21
+
22
+ # @private
23
+ # @return [String]
24
+ def _root_key
25
+ return 'Appliance'
26
+ end
27
+
28
+ # @private
29
+ # @return [String]
30
+ def _root_key_m
31
+ return 'Appliances'
32
+ end
33
+
34
+ # @private
35
+ # @return [String]
36
+ def _class_name
37
+ return 'Appliance'
38
+ end
39
+
40
+ public
41
+
42
+ # 次に取得するリストの開始オフセットを指定します.
43
+ #
44
+ # @param [Fixnum] offset オフセット
45
+ # @return [Model_Appliance] this
46
+ def offset(offset)
47
+ Saklient::Util::validate_type(offset, 'Fixnum')
48
+ return _offset(offset)
49
+ end
50
+
51
+ # 次に取得するリストの上限レコード数を指定します.
52
+ #
53
+ # @param [Fixnum] count 上限レコード数
54
+ # @return [Model_Appliance] this
55
+ def limit(count)
56
+ Saklient::Util::validate_type(count, 'Fixnum')
57
+ return _limit(count)
58
+ end
59
+
60
+ # Web APIのフィルタリング設定を直接指定します.
61
+ #
62
+ # @param [String] key キー
63
+ # @param [any] value 値
64
+ # @param [bool] multiple valueに配列を与え, OR条件で完全一致検索する場合にtrueを指定します. 通常, valueはスカラ値であいまい検索されます.
65
+ # @return [Model_Appliance]
66
+ def filter_by(key, value, multiple = false)
67
+ Saklient::Util::validate_type(key, 'String')
68
+ Saklient::Util::validate_type(multiple, 'bool')
69
+ return _filter_by(key, value, multiple)
70
+ end
71
+
72
+ # 次のリクエストのために設定されているステートをすべて破棄します.
73
+ #
74
+ # @return [Model_Appliance] this
75
+ def reset
76
+ return _reset
77
+ end
78
+
79
+ # 指定したIDを持つ唯一のリソースを取得します.
80
+ #
81
+ # @param [String] id
82
+ # @return [Saklient::Cloud::Resources::Appliance] リソースオブジェクト
83
+ def get_by_id(id)
84
+ Saklient::Util::validate_type(id, 'String')
85
+ return _get_by_id(id)
86
+ end
87
+
88
+ # リソースの検索リクエストを実行し, 結果をリストで取得します.
89
+ #
90
+ # @return [Array<Saklient::Cloud::Resources::Appliance>] リソースオブジェクトの配列
91
+ def find
92
+ return _find
93
+ end
94
+
95
+ # 指定した文字列を名前に含むリソースに絞り込みます.
96
+ #
97
+ # 大文字・小文字は区別されません.
98
+ # 半角スペースで区切られた複数の文字列は, それらをすべて含むことが条件とみなされます.
99
+ #
100
+ # @todo Implement test case
101
+ # @param [String] name
102
+ # @return [Model_Appliance]
103
+ def with_name_like(name)
104
+ Saklient::Util::validate_type(name, 'String')
105
+ return _with_name_like(name)
106
+ end
107
+
108
+ # 指定したタグを持つリソースに絞り込みます.
109
+ #
110
+ # 複数のタグを指定する場合は withTags() を利用してください.
111
+ #
112
+ # @todo Implement test case
113
+ # @param [String] tag
114
+ # @return [Model_Appliance]
115
+ def with_tag(tag)
116
+ Saklient::Util::validate_type(tag, 'String')
117
+ return _with_tag(tag)
118
+ end
119
+
120
+ # 指定したすべてのタグを持つリソースに絞り込みます.
121
+ #
122
+ # @todo Implement test case
123
+ # @param [Array<String>] tags
124
+ # @return [Model_Appliance]
125
+ def with_tags(tags)
126
+ Saklient::Util::validate_type(tags, 'Array')
127
+ return _with_tags(tags)
128
+ end
129
+
130
+ # 指定したDNFに合致するタグを持つリソースに絞り込みます.
131
+ #
132
+ # @todo Implement test case
133
+ # @param [Array<Array<String>>] dnf
134
+ # @return [Model_Appliance]
135
+ def with_tag_dnf(dnf)
136
+ Saklient::Util::validate_type(dnf, 'Array')
137
+ return _with_tag_dnf(dnf)
138
+ end
139
+
140
+ # 名前でソートします.
141
+ #
142
+ # @todo Implement test case
143
+ # @param [bool] reverse
144
+ # @return [Model_Appliance]
145
+ def sort_by_name(reverse = false)
146
+ Saklient::Util::validate_type(reverse, 'bool')
147
+ return _sort_by_name(reverse)
148
+ end
149
+
150
+ # @private
151
+ # @param [Saklient::Cloud::Client] client
152
+ def initialize(client)
153
+ super(client)
154
+ Saklient::Util::validate_type(client, 'Saklient::Cloud::Client')
155
+ end
156
+
157
+ end
158
+
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,207 @@
1
+ # -*- encoding: UTF-8 -*-
2
+
3
+ require_relative '../client'
4
+ require_relative 'model'
5
+ require_relative '../resources/archive'
6
+ require_relative '../enums/escope'
7
+
8
+ module Saklient
9
+ module Cloud
10
+ module Models
11
+
12
+ # アーカイブを検索・作成するための機能を備えたクラス.
13
+ class Model_Archive < Saklient::Cloud::Models::Model
14
+
15
+ protected
16
+
17
+ # @private
18
+ # @return [String]
19
+ def _api_path
20
+ return '/archive'
21
+ end
22
+
23
+ # @private
24
+ # @return [String]
25
+ def _root_key
26
+ return 'Archive'
27
+ end
28
+
29
+ # @private
30
+ # @return [String]
31
+ def _root_key_m
32
+ return 'Archives'
33
+ end
34
+
35
+ # @private
36
+ # @return [String]
37
+ def _class_name
38
+ return 'Archive'
39
+ end
40
+
41
+ public
42
+
43
+ # 次に取得するリストの開始オフセットを指定します.
44
+ #
45
+ # @param [Fixnum] offset オフセット
46
+ # @return [Model_Archive] this
47
+ def offset(offset)
48
+ Saklient::Util::validate_type(offset, 'Fixnum')
49
+ return _offset(offset)
50
+ end
51
+
52
+ # 次に取得するリストの上限レコード数を指定します.
53
+ #
54
+ # @param [Fixnum] count 上限レコード数
55
+ # @return [Model_Archive] this
56
+ def limit(count)
57
+ Saklient::Util::validate_type(count, 'Fixnum')
58
+ return _limit(count)
59
+ end
60
+
61
+ # Web APIのフィルタリング設定を直接指定します.
62
+ #
63
+ # @param [String] key キー
64
+ # @param [any] value 値
65
+ # @param [bool] multiple valueに配列を与え, OR条件で完全一致検索する場合にtrueを指定します. 通常, valueはスカラ値であいまい検索されます.
66
+ # @return [Model_Archive]
67
+ def filter_by(key, value, multiple = false)
68
+ Saklient::Util::validate_type(key, 'String')
69
+ Saklient::Util::validate_type(multiple, 'bool')
70
+ return _filter_by(key, value, multiple)
71
+ end
72
+
73
+ # 次のリクエストのために設定されているステートをすべて破棄します.
74
+ #
75
+ # @return [Model_Archive] this
76
+ def reset
77
+ return _reset
78
+ end
79
+
80
+ # 新規リソース作成用のオブジェクトを用意します.
81
+ #
82
+ # 返り値のオブジェクトにパラメータを設定し, save() を呼ぶことで実際のリソースが作成されます.
83
+ #
84
+ # @return [Saklient::Cloud::Resources::Archive] リソースオブジェクト
85
+ def create
86
+ return _create
87
+ end
88
+
89
+ # 指定したIDを持つ唯一のリソースを取得します.
90
+ #
91
+ # @param [String] id
92
+ # @return [Saklient::Cloud::Resources::Archive] リソースオブジェクト
93
+ def get_by_id(id)
94
+ Saklient::Util::validate_type(id, 'String')
95
+ return _get_by_id(id)
96
+ end
97
+
98
+ # リソースの検索リクエストを実行し, 結果をリストで取得します.
99
+ #
100
+ # @return [Array<Saklient::Cloud::Resources::Archive>] リソースオブジェクトの配列
101
+ def find
102
+ return _find
103
+ end
104
+
105
+ # 指定した文字列を名前に含むリソースに絞り込みます.
106
+ #
107
+ # 大文字・小文字は区別されません.
108
+ # 半角スペースで区切られた複数の文字列は, それらをすべて含むことが条件とみなされます.
109
+ #
110
+ # @todo Implement test case
111
+ # @param [String] name
112
+ # @return [Model_Archive]
113
+ def with_name_like(name)
114
+ Saklient::Util::validate_type(name, 'String')
115
+ return _with_name_like(name)
116
+ end
117
+
118
+ # 指定したタグを持つリソースに絞り込みます.
119
+ #
120
+ # 複数のタグを指定する場合は withTags() を利用してください.
121
+ #
122
+ # @todo Implement test case
123
+ # @param [String] tag
124
+ # @return [Model_Archive]
125
+ def with_tag(tag)
126
+ Saklient::Util::validate_type(tag, 'String')
127
+ return _with_tag(tag)
128
+ end
129
+
130
+ # 指定したすべてのタグを持つリソースに絞り込みます.
131
+ #
132
+ # @todo Implement test case
133
+ # @param [Array<String>] tags
134
+ # @return [Model_Archive]
135
+ def with_tags(tags)
136
+ Saklient::Util::validate_type(tags, 'Array')
137
+ return _with_tags(tags)
138
+ end
139
+
140
+ # 指定したDNFに合致するタグを持つリソースに絞り込みます.
141
+ #
142
+ # @todo Implement test case
143
+ # @param [Array<Array<String>>] dnf
144
+ # @return [Model_Archive]
145
+ def with_tag_dnf(dnf)
146
+ Saklient::Util::validate_type(dnf, 'Array')
147
+ return _with_tag_dnf(dnf)
148
+ end
149
+
150
+ # 名前でソートします.
151
+ #
152
+ # @todo Implement test case
153
+ # @param [bool] reverse
154
+ # @return [Model_Archive]
155
+ def sort_by_name(reverse = false)
156
+ Saklient::Util::validate_type(reverse, 'bool')
157
+ return _sort_by_name(reverse)
158
+ end
159
+
160
+ # @private
161
+ # @param [Saklient::Cloud::Client] client
162
+ def initialize(client)
163
+ super(client)
164
+ Saklient::Util::validate_type(client, 'Saklient::Cloud::Client')
165
+ end
166
+
167
+ # 指定したサイズのアーカイブに絞り込みます.
168
+ #
169
+ # @param [Fixnum] sizeGib
170
+ # @return [Model_Archive]
171
+ def with_size_gib(sizeGib)
172
+ Saklient::Util::validate_type(sizeGib, 'Fixnum')
173
+ _filter_by('SizeMB', [sizeGib * 1024])
174
+ return self
175
+ end
176
+
177
+ # パブリックアーカイブに絞り込みます.
178
+ #
179
+ # @return [Model_Archive]
180
+ def with_shared_scope
181
+ _filter_by('Scope', [Saklient::Cloud::Enums::EScope::shared])
182
+ return self
183
+ end
184
+
185
+ # プライベートアーカイブに絞り込みます.
186
+ #
187
+ # @return [Model_Archive]
188
+ def with_user_scope
189
+ _filter_by('Scope', [Saklient::Cloud::Enums::EScope::user])
190
+ return self
191
+ end
192
+
193
+ # サイズでソートします.
194
+ #
195
+ # @param [bool] reverse
196
+ # @return [Model_Archive]
197
+ def sort_by_size(reverse = false)
198
+ Saklient::Util::validate_type(reverse, 'bool')
199
+ _sort('SizeMB', reverse)
200
+ return self
201
+ end
202
+
203
+ end
204
+
205
+ end
206
+ end
207
+ end