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.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +43 -0
- data/Rakefile +1 -0
- data/config.sh.sample +5 -0
- data/example.rb +83 -0
- data/example.sh +6 -0
- data/lib/saklient/cloud/api.rb +382 -0
- data/lib/saklient/cloud/client.rb +111 -0
- data/lib/saklient/cloud/enums/eappliance_class.rb +39 -0
- data/lib/saklient/cloud/enums/eavailability.rb +79 -0
- data/lib/saklient/cloud/enums/edisk_connection.rb +39 -0
- data/lib/saklient/cloud/enums/escope.rb +39 -0
- data/lib/saklient/cloud/enums/escript_class.rb +39 -0
- data/lib/saklient/cloud/enums/eserver_instance_status.rb +44 -0
- data/lib/saklient/cloud/enums/estorage_class.rb +34 -0
- data/lib/saklient/cloud/errors/access_api_key_disabled_exception.rb +23 -0
- data/lib/saklient/cloud/errors/access_sakura_exception.rb +23 -0
- data/lib/saklient/cloud/errors/access_staff_exception.rb +23 -0
- data/lib/saklient/cloud/errors/access_token_exception.rb +23 -0
- data/lib/saklient/cloud/errors/access_xhr_or_api_key_exception.rb +23 -0
- data/lib/saklient/cloud/errors/account_not_found_exception.rb +23 -0
- data/lib/saklient/cloud/errors/account_not_specified_exception.rb +23 -0
- data/lib/saklient/cloud/errors/ambiguous_identifier_exception.rb +23 -0
- data/lib/saklient/cloud/errors/ambiguous_zone_exception.rb +23 -0
- data/lib/saklient/cloud/errors/api_proxy_timeout_exception.rb +23 -0
- data/lib/saklient/cloud/errors/api_proxy_timeout_non_get_exception.rb +23 -0
- data/lib/saklient/cloud/errors/archive_is_incomplete_exception.rb +23 -0
- data/lib/saklient/cloud/errors/boot_failure_by_lock_exception.rb +23 -0
- data/lib/saklient/cloud/errors/boot_failure_in_group_exception.rb +23 -0
- data/lib/saklient/cloud/errors/busy_exception.rb +23 -0
- data/lib/saklient/cloud/errors/cant_resize_smaller_exception.rb +23 -0
- data/lib/saklient/cloud/errors/cdrom_device_locked_exception.rb +23 -0
- data/lib/saklient/cloud/errors/cdrom_disabled_exception.rb +23 -0
- data/lib/saklient/cloud/errors/cdrom_in_use_exception.rb +23 -0
- data/lib/saklient/cloud/errors/cdrom_is_incomplete_exception.rb +23 -0
- data/lib/saklient/cloud/errors/connect_to_same_switch_exception.rb +23 -0
- data/lib/saklient/cloud/errors/contract_creation_exception.rb +23 -0
- data/lib/saklient/cloud/errors/copy_to_itself_exception.rb +23 -0
- data/lib/saklient/cloud/errors/delete_disk_b4_template_exception.rb +23 -0
- data/lib/saklient/cloud/errors/delete_ip_v6_nets_first_exception.rb +23 -0
- data/lib/saklient/cloud/errors/delete_res_b4_account_exception.rb +23 -0
- data/lib/saklient/cloud/errors/delete_router_b4_switch_exception.rb +23 -0
- data/lib/saklient/cloud/errors/delete_static_route_first_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disabled_in_sandbox_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disconnect_b4_delete_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disconnect_b4_update_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disk_connection_limit_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disk_is_copying_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disk_is_not_available_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disk_license_mismatch_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disk_or_ss_in_migration_exception.rb +23 -0
- data/lib/saklient/cloud/errors/disk_stock_run_out_exception.rb +23 -0
- data/lib/saklient/cloud/errors/dns_aaaa_record_not_found_exception.rb +23 -0
- data/lib/saklient/cloud/errors/dns_arecord_not_found_exception.rb +23 -0
- data/lib/saklient/cloud/errors/dns_ptr_update_failure_exception.rb +23 -0
- data/lib/saklient/cloud/errors/dont_create_in_sandbox_exception.rb +23 -0
- data/lib/saklient/cloud/errors/duplicate_account_code_exception.rb +23 -0
- data/lib/saklient/cloud/errors/duplicate_entry_exception.rb +23 -0
- data/lib/saklient/cloud/errors/duplicate_user_code_exception.rb +23 -0
- data/lib/saklient/cloud/errors/file_not_uploaded_exception.rb +23 -0
- data/lib/saklient/cloud/errors/filter_array_comparison_exception.rb +23 -0
- data/lib/saklient/cloud/errors/filter_bad_operator_exception.rb +23 -0
- data/lib/saklient/cloud/errors/filter_null_comparison_exception.rb +23 -0
- data/lib/saklient/cloud/errors/filter_unknown_operator_exception.rb +23 -0
- data/lib/saklient/cloud/errors/ftp_cannot_close_exception.rb +23 -0
- data/lib/saklient/cloud/errors/ftp_is_already_close_exception.rb +23 -0
- data/lib/saklient/cloud/errors/ftp_is_already_open_exception.rb +23 -0
- data/lib/saklient/cloud/errors/ftp_must_be_closed_exception.rb +23 -0
- data/lib/saklient/cloud/errors/host_operation_failure_exception.rb +23 -0
- data/lib/saklient/cloud/errors/illegal_das_usage_exception.rb +23 -0
- data/lib/saklient/cloud/errors/in_migration_exception.rb +23 -0
- data/lib/saklient/cloud/errors/invalid_format_exception.rb +23 -0
- data/lib/saklient/cloud/errors/invalid_param_comb_exception.rb +23 -0
- data/lib/saklient/cloud/errors/invalid_range_exception.rb +23 -0
- data/lib/saklient/cloud/errors/invalid_uri_argument_exception.rb +23 -0
- data/lib/saklient/cloud/errors/ip_v6_net_already_attached_exception.rb +23 -0
- data/lib/saklient/cloud/errors/limit_count_in_account_exception.rb +23 -0
- data/lib/saklient/cloud/errors/limit_count_in_member_exception.rb +23 -0
- data/lib/saklient/cloud/errors/limit_count_in_network_exception.rb +23 -0
- data/lib/saklient/cloud/errors/limit_count_in_router_exception.rb +23 -0
- data/lib/saklient/cloud/errors/limit_count_in_zone_exception.rb +23 -0
- data/lib/saklient/cloud/errors/limit_memory_in_account_exception.rb +23 -0
- data/lib/saklient/cloud/errors/limit_size_in_account_exception.rb +23 -0
- data/lib/saklient/cloud/errors/missing_iso_image_exception.rb +23 -0
- data/lib/saklient/cloud/errors/missing_param_exception.rb +23 -0
- data/lib/saklient/cloud/errors/must_be_of_same_zone_exception.rb +23 -0
- data/lib/saklient/cloud/errors/no_display_response_exception.rb +23 -0
- data/lib/saklient/cloud/errors/not_for_router_exception.rb +23 -0
- data/lib/saklient/cloud/errors/not_replicating_exception.rb +23 -0
- data/lib/saklient/cloud/errors/not_with_hybridconn_exception.rb +23 -0
- data/lib/saklient/cloud/errors/old_storage_plan_exception.rb +23 -0
- data/lib/saklient/cloud/errors/operation_failure_exception.rb +23 -0
- data/lib/saklient/cloud/errors/operation_timeout_exception.rb +23 -0
- data/lib/saklient/cloud/errors/original_hash_mismatch_exception.rb +23 -0
- data/lib/saklient/cloud/errors/packet_filter_applying_exception.rb +23 -0
- data/lib/saklient/cloud/errors/packet_filter_version_mismatch_exception.rb +23 -0
- data/lib/saklient/cloud/errors/param_ip_not_found_exception.rb +23 -0
- data/lib/saklient/cloud/errors/param_res_not_found_exception.rb +23 -0
- data/lib/saklient/cloud/errors/payment_credit_card_exception.rb +23 -0
- data/lib/saklient/cloud/errors/payment_payment_exception.rb +23 -0
- data/lib/saklient/cloud/errors/payment_registration_exception.rb +23 -0
- data/lib/saklient/cloud/errors/payment_tel_certification_exception.rb +23 -0
- data/lib/saklient/cloud/errors/payment_unpayable_exception.rb +23 -0
- data/lib/saklient/cloud/errors/penalty_operation_exception.rb +23 -0
- data/lib/saklient/cloud/errors/replica_already_exists_exception.rb +23 -0
- data/lib/saklient/cloud/errors/replica_not_found_exception.rb +23 -0
- data/lib/saklient/cloud/errors/res_already_connected_exception.rb +23 -0
- data/lib/saklient/cloud/errors/res_already_disconnected_exception.rb +23 -0
- data/lib/saklient/cloud/errors/res_already_exists_exception.rb +23 -0
- data/lib/saklient/cloud/errors/res_used_in_zone_exception.rb +23 -0
- data/lib/saklient/cloud/errors/resource_path_not_found_exception.rb +23 -0
- data/lib/saklient/cloud/errors/run_out_of_ip_address_exception.rb +23 -0
- data/lib/saklient/cloud/errors/same_license_required_exception.rb +23 -0
- data/lib/saklient/cloud/errors/server_could_not_stop_exception.rb +23 -0
- data/lib/saklient/cloud/errors/server_is_cleaning_exception.rb +23 -0
- data/lib/saklient/cloud/errors/server_operation_failure_exception.rb +23 -0
- data/lib/saklient/cloud/errors/server_power_must_be_down_exception.rb +23 -0
- data/lib/saklient/cloud/errors/server_power_must_be_up_exception.rb +23 -0
- data/lib/saklient/cloud/errors/service_temporarily_unavailable_exception.rb +23 -0
- data/lib/saklient/cloud/errors/size_mismatch_exception.rb +23 -0
- data/lib/saklient/cloud/errors/snapshot_in_migration_exception.rb +23 -0
- data/lib/saklient/cloud/errors/still_creating_exception.rb +23 -0
- data/lib/saklient/cloud/errors/storage_abnormal_exception.rb +23 -0
- data/lib/saklient/cloud/errors/storage_operation_failure_exception.rb +23 -0
- data/lib/saklient/cloud/errors/switch_hybrid_connected_exception.rb +23 -0
- data/lib/saklient/cloud/errors/template_ftp_is_open_exception.rb +23 -0
- data/lib/saklient/cloud/errors/template_is_incomplete_exception.rb +23 -0
- data/lib/saklient/cloud/errors/too_many_request_exception.rb +23 -0
- data/lib/saklient/cloud/errors/unknown_exception.rb +23 -0
- data/lib/saklient/cloud/errors/unknown_os_type_exception.rb +23 -0
- data/lib/saklient/cloud/errors/unsupported_res_class_exception.rb +23 -0
- data/lib/saklient/cloud/errors/user_not_specified_exception.rb +23 -0
- data/lib/saklient/cloud/errors/vnc_proxy_request_failure_exception.rb +23 -0
- data/lib/saklient/cloud/models/model.rb +348 -0
- data/lib/saklient/cloud/models/model_appliance.rb +161 -0
- data/lib/saklient/cloud/models/model_archive.rb +207 -0
- data/lib/saklient/cloud/models/model_disk.rb +200 -0
- data/lib/saklient/cloud/models/model_disk_plan.rb +156 -0
- data/lib/saklient/cloud/models/model_icon.rb +178 -0
- data/lib/saklient/cloud/models/model_iface.rb +115 -0
- data/lib/saklient/cloud/models/model_ipv6_net.rb +106 -0
- data/lib/saklient/cloud/models/model_iso_image.rb +207 -0
- data/lib/saklient/cloud/models/model_router.rb +148 -0
- data/lib/saklient/cloud/models/model_router_plan.rb +106 -0
- data/lib/saklient/cloud/models/model_script.rb +178 -0
- data/lib/saklient/cloud/models/model_server.rb +237 -0
- data/lib/saklient/cloud/models/model_server_plan.rb +119 -0
- data/lib/saklient/cloud/models/model_swytch.rb +138 -0
- data/lib/saklient/cloud/models/query_params.rb +44 -0
- data/lib/saklient/cloud/product.rb +95 -0
- data/lib/saklient/cloud/resources/appliance.rb +551 -0
- data/lib/saklient/cloud/resources/archive.rb +861 -0
- data/lib/saklient/cloud/resources/disk.rb +802 -0
- data/lib/saklient/cloud/resources/disk_config.rb +353 -0
- data/lib/saklient/cloud/resources/disk_plan.rb +194 -0
- data/lib/saklient/cloud/resources/ftp_info.rb +93 -0
- data/lib/saklient/cloud/resources/icon.rb +268 -0
- data/lib/saklient/cloud/resources/iface.rb +329 -0
- data/lib/saklient/cloud/resources/ipv4_net.rb +275 -0
- data/lib/saklient/cloud/resources/ipv6_net.rb +238 -0
- data/lib/saklient/cloud/resources/iso_image.rb +666 -0
- data/lib/saklient/cloud/resources/resource.rb +287 -0
- data/lib/saklient/cloud/resources/router.rb +508 -0
- data/lib/saklient/cloud/resources/router_plan.rb +230 -0
- data/lib/saklient/cloud/resources/script.rb +554 -0
- data/lib/saklient/cloud/resources/server.rb +730 -0
- data/lib/saklient/cloud/resources/server_instance.rb +217 -0
- data/lib/saklient/cloud/resources/server_plan.rb +285 -0
- data/lib/saklient/cloud/resources/swytch.rb +521 -0
- data/lib/saklient/errors/exception_factory.rb +532 -0
- data/lib/saklient/errors/http_bad_gateway_exception.rb +21 -0
- data/lib/saklient/errors/http_bad_request_exception.rb +21 -0
- data/lib/saklient/errors/http_conflict_exception.rb +21 -0
- data/lib/saklient/errors/http_exception.rb +27 -0
- data/lib/saklient/errors/http_expectation_failed_exception.rb +21 -0
- data/lib/saklient/errors/http_failed_dependency_exception.rb +21 -0
- data/lib/saklient/errors/http_forbidden_exception.rb +21 -0
- data/lib/saklient/errors/http_gateway_timeout_exception.rb +21 -0
- data/lib/saklient/errors/http_gone_exception.rb +21 -0
- data/lib/saklient/errors/http_http_version_not_supported_exception.rb +21 -0
- data/lib/saklient/errors/http_insufficient_storage_exception.rb +21 -0
- data/lib/saklient/errors/http_internal_server_error_exception.rb +21 -0
- data/lib/saklient/errors/http_length_required_exception.rb +21 -0
- data/lib/saklient/errors/http_locked_exception.rb +21 -0
- data/lib/saklient/errors/http_method_not_allowed_exception.rb +21 -0
- data/lib/saklient/errors/http_not_acceptable_exception.rb +21 -0
- data/lib/saklient/errors/http_not_extended_exception.rb +21 -0
- data/lib/saklient/errors/http_not_found_exception.rb +21 -0
- data/lib/saklient/errors/http_not_implemented_exception.rb +21 -0
- data/lib/saklient/errors/http_payment_required_exception.rb +21 -0
- data/lib/saklient/errors/http_precondition_failed_exception.rb +21 -0
- data/lib/saklient/errors/http_proxy_authentication_required_exception.rb +21 -0
- data/lib/saklient/errors/http_request_entity_too_large_exception.rb +21 -0
- data/lib/saklient/errors/http_request_timeout_exception.rb +21 -0
- data/lib/saklient/errors/http_request_uri_too_long_exception.rb +21 -0
- data/lib/saklient/errors/http_requested_range_not_satisfiable_exception.rb +21 -0
- data/lib/saklient/errors/http_service_unavailable_exception.rb +21 -0
- data/lib/saklient/errors/http_unauthorized_exception.rb +21 -0
- data/lib/saklient/errors/http_unprocessable_entity_exception.rb +21 -0
- data/lib/saklient/errors/http_unsupported_media_type_exception.rb +21 -0
- data/lib/saklient/errors/http_upgrade_required_exception.rb +21 -0
- data/lib/saklient/errors/http_variant_also_negotiates_exception.rb +21 -0
- data/lib/saklient/errors/saklient_exception.rb +22 -0
- data/lib/saklient/util.rb +121 -0
- data/lib/saklient/version.rb +5 -0
- data/saklient.gemspec +24 -0
- data/spec/archive_spec.rb +141 -0
- data/spec/enum_spec.rb +24 -0
- data/spec/exception_spec.rb +25 -0
- data/spec/iso_image_spec.rb +172 -0
- data/spec/router_spec.rb +124 -0
- data/spec/server_spec.rb +261 -0
- data/spec/util_spec.rb +72 -0
- data/test-sshkey.txt +27 -0
- 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
|