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,508 @@
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 'swytch'
8
+ require_relative 'ipv4_net'
9
+ require_relative 'ipv6_net'
10
+ require_relative '../models/model_swytch'
11
+
12
+ module Saklient
13
+ module Cloud
14
+ module Resources
15
+
16
+ # ルータの実体1つに対応し, 属性の取得や操作を行うためのクラス.
17
+ class Router < Saklient::Cloud::Resources::Resource
18
+
19
+ protected
20
+
21
+ # ID
22
+ #
23
+ # @return [String]
24
+ attr_accessor :m_id
25
+
26
+ # 名前
27
+ #
28
+ # @return [String]
29
+ attr_accessor :m_name
30
+
31
+ # 説明
32
+ #
33
+ # @return [String]
34
+ attr_accessor :m_description
35
+
36
+ # ネットワークのマスク長
37
+ #
38
+ # @return [Fixnum]
39
+ attr_accessor :m_network_mask_len
40
+
41
+ # 帯域幅
42
+ #
43
+ # @return [Fixnum]
44
+ attr_accessor :m_band_width_mbps
45
+
46
+ # スイッチ
47
+ #
48
+ # @return [String]
49
+ attr_accessor :m_swytch_id
50
+
51
+ # @private
52
+ # @return [String]
53
+ def _api_path
54
+ return '/internet'
55
+ end
56
+
57
+ # @private
58
+ # @return [String]
59
+ def _root_key
60
+ return 'Internet'
61
+ end
62
+
63
+ # @private
64
+ # @return [String]
65
+ def _root_key_m
66
+ return 'Internet'
67
+ end
68
+
69
+ public
70
+
71
+ # @private
72
+ # @return [String]
73
+ def _class_name
74
+ return 'Router'
75
+ end
76
+
77
+ # @private
78
+ # @return [String]
79
+ def _id
80
+ return get_id
81
+ end
82
+
83
+ # このローカルオブジェクトに現在設定されているリソース情報をAPIに送信し, 新規作成または上書き保存します.
84
+ #
85
+ # @return [Router] this
86
+ def save
87
+ return _save
88
+ end
89
+
90
+ # 最新のリソース情報を再取得します.
91
+ #
92
+ # @return [Router] this
93
+ def reload
94
+ return _reload
95
+ end
96
+
97
+ # @private
98
+ # @param [Saklient::Cloud::Client] client
99
+ # @param [any] obj
100
+ # @param [bool] wrapped
101
+ def initialize(client, obj, wrapped = false)
102
+ super(client)
103
+ Saklient::Util::validate_type(client, 'Saklient::Cloud::Client')
104
+ Saklient::Util::validate_type(wrapped, 'bool')
105
+ api_deserialize(obj, wrapped)
106
+ end
107
+
108
+ # 作成中のルータが利用可能になるまで待機します.
109
+ #
110
+ # @private
111
+ # @yield [Saklient::Cloud::Resources::Router, bool]
112
+ # @yieldreturn [void]
113
+ # @param [Fixnum] timeoutSec
114
+ # @return [void]
115
+ def after_create(timeoutSec, &callback)
116
+ Saklient::Util::validate_type(timeoutSec, 'Fixnum')
117
+ Saklient::Util::validate_type(callback, 'Proc')
118
+ ret = sleep_while_creating(timeoutSec)
119
+ callback.call(self, ret)
120
+ end
121
+
122
+ # 作成中のルータが利用可能になるまで待機します.
123
+ #
124
+ # @param [Fixnum] timeoutSec
125
+ # @return [bool] 成功時はtrue, タイムアウトやエラーによる失敗時はfalseを返します.
126
+ def sleep_while_creating(timeoutSec = 120)
127
+ Saklient::Util::validate_type(timeoutSec, 'Fixnum')
128
+ step = 3
129
+ while 0 < timeoutSec do
130
+ if exists
131
+ reload
132
+ return true
133
+ end
134
+ timeoutSec -= step
135
+ sleep step if 0 < timeoutSec
136
+ end
137
+ return false
138
+ end
139
+
140
+ # このルータが接続されているスイッチを取得します.
141
+ #
142
+ # @return [Swytch]
143
+ def get_swytch
144
+ model = Saklient::Util::create_class_instance('saklient.cloud.models.Model_Swytch', [@_client])
145
+ id = get_swytch_id
146
+ return model.get_by_id(id)
147
+ end
148
+
149
+ # このルータ+スイッチでIPv6アドレスを有効にします.
150
+ #
151
+ # @return [Ipv6Net] 有効化されたIPv6ネットワーク
152
+ def add_ipv6_net
153
+ result = @_client.request('POST', _api_path + '/' + Saklient::Util::url_encode(_id) + '/ipv6net')
154
+ reload
155
+ return Saklient::Cloud::Resources::Ipv6Net.new(@_client, result[:IPv6Net])
156
+ end
157
+
158
+ # このルータ+スイッチでIPv6アドレスを無効にします.
159
+ #
160
+ # @param [Ipv6Net] ipv6Net
161
+ # @return [Router] this
162
+ def remove_ipv6_net(ipv6Net)
163
+ Saklient::Util::validate_type(ipv6Net, 'Saklient::Cloud::Resources::Ipv6Net')
164
+ @_client.request('DELETE', _api_path + '/' + Saklient::Util::url_encode(_id) + '/ipv6net/' + ipv6Net._id)
165
+ reload
166
+ return self
167
+ end
168
+
169
+ # このルータ+スイッチにスタティックルートを追加します.
170
+ #
171
+ # @param [Fixnum] maskLen
172
+ # @param [String] nextHop
173
+ # @return [Ipv4Net] 追加されたスタティックルート
174
+ def add_static_route(maskLen, nextHop)
175
+ Saklient::Util::validate_type(maskLen, 'Fixnum')
176
+ Saklient::Util::validate_type(nextHop, 'String')
177
+ q = {}
178
+ Saklient::Util::set_by_path(q, 'NetworkMaskLen', maskLen)
179
+ Saklient::Util::set_by_path(q, 'NextHop', nextHop)
180
+ result = @_client.request('POST', _api_path + '/' + Saklient::Util::url_encode(_id) + '/subnet', q)
181
+ reload
182
+ return Saklient::Cloud::Resources::Ipv4Net.new(@_client, result[:Subnet])
183
+ end
184
+
185
+ # このルータ+スイッチからスタティックルートを削除します.
186
+ #
187
+ # @param [Ipv4Net] ipv4Net
188
+ # @return [Router] this
189
+ def remove_static_route(ipv4Net)
190
+ Saklient::Util::validate_type(ipv4Net, 'Saklient::Cloud::Resources::Ipv4Net')
191
+ @_client.request('DELETE', _api_path + '/' + Saklient::Util::url_encode(_id) + '/subnet/' + ipv4Net._id)
192
+ reload
193
+ return self
194
+ end
195
+
196
+ # このルータ+スイッチの帯域プランを変更します.
197
+ #
198
+ # 成功時はリソースIDが変わることにご注意ください.
199
+ #
200
+ # @param [Fixnum] bandWidthMbps
201
+ # @return [Router] this
202
+ def change_plan(bandWidthMbps)
203
+ Saklient::Util::validate_type(bandWidthMbps, 'Fixnum')
204
+ path = _api_path + '/' + Saklient::Util::url_encode(_id) + '/bandwidth'
205
+ q = {}
206
+ Saklient::Util::set_by_path(q, 'Internet.BandWidthMbps', bandWidthMbps)
207
+ result = @_client.request('PUT', path, q)
208
+ api_deserialize(result, true)
209
+ return self
210
+ end
211
+
212
+ protected
213
+
214
+ # @return [bool]
215
+ attr_accessor :n_id
216
+
217
+ # (This method is generated in Translator_default#buildImpl)
218
+ #
219
+ # @private
220
+ # @return [String]
221
+ def get_id
222
+ return @m_id
223
+ end
224
+
225
+ public
226
+
227
+ # ID
228
+ #
229
+ # @return [String]
230
+ attr_reader :id
231
+
232
+ def id
233
+ get_id
234
+ end
235
+
236
+ protected
237
+
238
+ # @return [bool]
239
+ attr_accessor :n_name
240
+
241
+ # (This method is generated in Translator_default#buildImpl)
242
+ #
243
+ # @private
244
+ # @return [String]
245
+ def get_name
246
+ return @m_name
247
+ end
248
+
249
+ # (This method is generated in Translator_default#buildImpl)
250
+ #
251
+ # @private
252
+ # @param [String] v
253
+ # @return [String]
254
+ def set_name(v)
255
+ Saklient::Util::validate_type(v, 'String')
256
+ @m_name = v
257
+ @n_name = true
258
+ return @m_name
259
+ end
260
+
261
+ public
262
+
263
+ # 名前
264
+ #
265
+ # @return [String]
266
+ attr_accessor :name
267
+
268
+ def name
269
+ get_name
270
+ end
271
+
272
+ def name=(v)
273
+ set_name(v)
274
+ end
275
+
276
+ protected
277
+
278
+ # @return [bool]
279
+ attr_accessor :n_description
280
+
281
+ # (This method is generated in Translator_default#buildImpl)
282
+ #
283
+ # @private
284
+ # @return [String]
285
+ def get_description
286
+ return @m_description
287
+ end
288
+
289
+ # (This method is generated in Translator_default#buildImpl)
290
+ #
291
+ # @private
292
+ # @param [String] v
293
+ # @return [String]
294
+ def set_description(v)
295
+ Saklient::Util::validate_type(v, 'String')
296
+ @m_description = v
297
+ @n_description = true
298
+ return @m_description
299
+ end
300
+
301
+ public
302
+
303
+ # 説明
304
+ #
305
+ # @return [String]
306
+ attr_accessor :description
307
+
308
+ def description
309
+ get_description
310
+ end
311
+
312
+ def description=(v)
313
+ set_description(v)
314
+ end
315
+
316
+ protected
317
+
318
+ # @return [bool]
319
+ attr_accessor :n_network_mask_len
320
+
321
+ # (This method is generated in Translator_default#buildImpl)
322
+ #
323
+ # @private
324
+ # @return [Fixnum]
325
+ def get_network_mask_len
326
+ return @m_network_mask_len
327
+ end
328
+
329
+ # (This method is generated in Translator_default#buildImpl)
330
+ #
331
+ # @private
332
+ # @param [Fixnum] v
333
+ # @return [Fixnum]
334
+ def set_network_mask_len(v)
335
+ Saklient::Util::validate_type(v, 'Fixnum')
336
+ raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Router#network_mask_len') if !@is_new
337
+ @m_network_mask_len = v
338
+ @n_network_mask_len = true
339
+ return @m_network_mask_len
340
+ end
341
+
342
+ public
343
+
344
+ # ネットワークのマスク長
345
+ #
346
+ # @return [Fixnum]
347
+ attr_accessor :network_mask_len
348
+
349
+ def network_mask_len
350
+ get_network_mask_len
351
+ end
352
+
353
+ def network_mask_len=(v)
354
+ set_network_mask_len(v)
355
+ end
356
+
357
+ protected
358
+
359
+ # @return [bool]
360
+ attr_accessor :n_band_width_mbps
361
+
362
+ # (This method is generated in Translator_default#buildImpl)
363
+ #
364
+ # @private
365
+ # @return [Fixnum]
366
+ def get_band_width_mbps
367
+ return @m_band_width_mbps
368
+ end
369
+
370
+ # (This method is generated in Translator_default#buildImpl)
371
+ #
372
+ # @private
373
+ # @param [Fixnum] v
374
+ # @return [Fixnum]
375
+ def set_band_width_mbps(v)
376
+ Saklient::Util::validate_type(v, 'Fixnum')
377
+ raise Saklient::Errors::SaklientException.new('immutable_field', 'Immutable fields cannot be modified after the resource creation: ' + 'Saklient::Cloud::Resources::Router#band_width_mbps') if !@is_new
378
+ @m_band_width_mbps = v
379
+ @n_band_width_mbps = true
380
+ return @m_band_width_mbps
381
+ end
382
+
383
+ public
384
+
385
+ # 帯域幅
386
+ #
387
+ # @return [Fixnum]
388
+ attr_accessor :band_width_mbps
389
+
390
+ def band_width_mbps
391
+ get_band_width_mbps
392
+ end
393
+
394
+ def band_width_mbps=(v)
395
+ set_band_width_mbps(v)
396
+ end
397
+
398
+ protected
399
+
400
+ # @return [bool]
401
+ attr_accessor :n_swytch_id
402
+
403
+ # (This method is generated in Translator_default#buildImpl)
404
+ #
405
+ # @private
406
+ # @return [String]
407
+ def get_swytch_id
408
+ return @m_swytch_id
409
+ end
410
+
411
+ public
412
+
413
+ # スイッチ
414
+ #
415
+ # @return [String]
416
+ attr_reader :swytch_id
417
+
418
+ def swytch_id
419
+ get_swytch_id
420
+ end
421
+
422
+ protected
423
+
424
+ # (This method is generated in Translator_default#buildImpl)
425
+ #
426
+ # @param [any] r
427
+ def api_deserialize_impl(r)
428
+ @is_new = (r).nil?
429
+ r = {} if @is_new
430
+ @is_incomplete = false
431
+ if Saklient::Util::exists_path(r, 'ID')
432
+ @m_id = (Saklient::Util::get_by_path(r, 'ID')).nil? ? nil : Saklient::Util::get_by_path(r, 'ID').to_s
433
+ else
434
+ @m_id = nil
435
+ @is_incomplete = true
436
+ end
437
+ @n_id = false
438
+ if Saklient::Util::exists_path(r, 'Name')
439
+ @m_name = (Saklient::Util::get_by_path(r, 'Name')).nil? ? nil : Saklient::Util::get_by_path(r, 'Name').to_s
440
+ else
441
+ @m_name = nil
442
+ @is_incomplete = true
443
+ end
444
+ @n_name = false
445
+ if Saklient::Util::exists_path(r, 'Description')
446
+ @m_description = (Saklient::Util::get_by_path(r, 'Description')).nil? ? nil : Saklient::Util::get_by_path(r, 'Description').to_s
447
+ else
448
+ @m_description = nil
449
+ @is_incomplete = true
450
+ end
451
+ @n_description = false
452
+ if Saklient::Util::exists_path(r, 'NetworkMaskLen')
453
+ @m_network_mask_len = (Saklient::Util::get_by_path(r, 'NetworkMaskLen')).nil? ? nil : (Saklient::Util::get_by_path(r, 'NetworkMaskLen').to_s).to_i(10)
454
+ else
455
+ @m_network_mask_len = nil
456
+ @is_incomplete = true
457
+ end
458
+ @n_network_mask_len = false
459
+ if Saklient::Util::exists_path(r, 'BandWidthMbps')
460
+ @m_band_width_mbps = (Saklient::Util::get_by_path(r, 'BandWidthMbps')).nil? ? nil : (Saklient::Util::get_by_path(r, 'BandWidthMbps').to_s).to_i(10)
461
+ else
462
+ @m_band_width_mbps = nil
463
+ @is_incomplete = true
464
+ end
465
+ @n_band_width_mbps = false
466
+ if Saklient::Util::exists_path(r, 'Switch.ID')
467
+ @m_swytch_id = (Saklient::Util::get_by_path(r, 'Switch.ID')).nil? ? nil : Saklient::Util::get_by_path(r, 'Switch.ID').to_s
468
+ else
469
+ @m_swytch_id = nil
470
+ @is_incomplete = true
471
+ end
472
+ @n_swytch_id = false
473
+ end
474
+
475
+ # @private
476
+ # @param [bool] withClean
477
+ # @return [any]
478
+ def api_serialize_impl(withClean = false)
479
+ Saklient::Util::validate_type(withClean, 'bool')
480
+ missing = []
481
+ ret = {}
482
+ Saklient::Util::set_by_path(ret, 'ID', @m_id) if withClean || @n_id
483
+ if withClean || @n_name
484
+ Saklient::Util::set_by_path(ret, 'Name', @m_name)
485
+ else
486
+ missing << 'name' if @is_new
487
+ end
488
+ Saklient::Util::set_by_path(ret, 'Description', @m_description) if withClean || @n_description
489
+ if withClean || @n_network_mask_len
490
+ Saklient::Util::set_by_path(ret, 'NetworkMaskLen', @m_network_mask_len)
491
+ else
492
+ missing << 'network_mask_len' if @is_new
493
+ end
494
+ if withClean || @n_band_width_mbps
495
+ Saklient::Util::set_by_path(ret, 'BandWidthMbps', @m_band_width_mbps)
496
+ else
497
+ missing << 'band_width_mbps' if @is_new
498
+ end
499
+ Saklient::Util::set_by_path(ret, 'Switch.ID', @m_swytch_id) if withClean || @n_swytch_id
500
+ raise Saklient::Errors::SaklientException.new('required_field', 'Required fields must be set before the Router creation: ' + missing.join(', ')) if missing.length > 0
501
+ return ret
502
+ end
503
+
504
+ end
505
+
506
+ end
507
+ end
508
+ end