Class: Saklient::Cloud::Resources::LoadBalancer
- Defined in:
- lib/saklient/cloud/resources/load_balancer.rb
Overview
ロードバランサの実体1つに対応し, 属性の取得や操作を行うためのクラス.
Instance Attribute Summary collapse
-
#default_route ⇒ String
デフォルトルート.
-
#mask_len ⇒ Fixnum
マスク長.
-
#virtual_ips ⇒ Array<LbVirtualIp>
readonly
仮想IPアドレス LbVirtualIp の配列.
-
#vrid ⇒ Fixnum
VRID.
Attributes inherited from Appliance
#availability, #clazz, #description, #icon, #id, #ifaces, #name, #plan_id, #raw_annotation, #raw_settings, #raw_settings_hash, #service_class, #status, #swytch_id, #tags
Attributes inherited from Resource
Instance Method Summary collapse
-
#add_virtual_ip(settings = nil) ⇒ LbVirtualIp
仮想IPアドレス設定を追加します.
- #clear_virtual_ips ⇒ LoadBalancer
- #get_default_route ⇒ String
- #get_mask_len ⇒ Fixnum
-
#get_virtual_ip_by_address(address) ⇒ LbVirtualIp
指定したIPアドレスにマッチする仮想IPアドレス設定を取得します.
- #get_virtual_ips ⇒ Array<LbVirtualIp>
- #get_vrid ⇒ Fixnum
-
#initialize(client, obj, wrapped = false) ⇒ LoadBalancer
constructor
A new instance of LoadBalancer.
-
#reload_status ⇒ LoadBalancer
監視対象サーバのステータスを最新の状態に更新します.
- #set_default_route(v) ⇒ String
- #set_initial_params(swytch, vrid, realIps, isHighSpec = false) ⇒ LoadBalancer
- #set_mask_len(v) ⇒ Fixnum
- #set_vrid(v) ⇒ Fixnum
Methods inherited from Appliance
#_class_name, #_id, #apply, #boot, #get_swytch, #reboot, #reload, #save, #shutdown, #sleep_until_down, #sleep_until_up, #sleep_while_creating, #stop
Methods inherited from Resource
#_class_name, #_id, #api_deserialize, #api_serialize, create_with, #destroy, #dump, #exists, #request_retry, #set_param
Constructor Details
#initialize(client, obj, wrapped = false) ⇒ LoadBalancer
Returns a new instance of LoadBalancer.
135 136 137 138 139 140 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 135 def initialize(client, obj, wrapped = false) super(client, obj, wrapped) Saklient::Util::validate_type(client, 'Saklient::Cloud::Client') Saklient::Util::validate_type(wrapped, 'bool') self.raw_annotation = {} if (self.raw_annotation).nil? end |
Instance Attribute Details
#default_route ⇒ String
デフォルトルート
61 62 63 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 61 def default_route @default_route end |
#mask_len ⇒ Fixnum
マスク長
91 92 93 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 91 def mask_len @mask_len end |
#virtual_ips ⇒ Array<LbVirtualIp> (readonly)
仮想IPアドレス Saklient::Cloud::Resources::LbVirtualIp の配列
37 38 39 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 37 def virtual_ips @virtual_ips end |
#vrid ⇒ Fixnum
VRID
121 122 123 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 121 def vrid @vrid end |
Instance Method Details
#add_virtual_ip(settings = nil) ⇒ LbVirtualIp
仮想IPアドレス設定を追加します.
221 222 223 224 225 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 221 def add_virtual_ip(settings = nil) ret = Saklient::Cloud::Resources::LbVirtualIp.new(settings) @_virtual_ips << ret return ret end |
#clear_virtual_ips ⇒ LoadBalancer
210 211 212 213 214 215 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 210 def clear_virtual_ips while 0 < @_virtual_ips.length do @_virtual_ips.pop() end return self end |
#get_default_route ⇒ String
45 46 47 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 45 def get_default_route return Saklient::Util::get_by_path(self.raw_annotation, 'Network.DefaultRoute') end |
#get_mask_len ⇒ Fixnum
73 74 75 76 77 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 73 def get_mask_len maskLen = Saklient::Util::get_by_path(self.raw_annotation, 'Network.NetworkMaskLen') raise Saklient::Errors::SaklientException.new('invalid_data', 'Data of the resource is invalid') if (maskLen).nil? return (maskLen).to_s().to_i(10) end |
#get_virtual_ip_by_address(address) ⇒ LbVirtualIp
指定したIPアドレスにマッチする仮想IPアドレス設定を取得します.
231 232 233 234 235 236 237 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 231 def get_virtual_ip_by_address(address) Saklient::Util::validate_type(address, 'String') for vip in @_virtual_ips return vip if vip.virtual_ip_address == address end return nil end |
#get_virtual_ips ⇒ Array<LbVirtualIp>
30 31 32 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 30 def get_virtual_ips return @_virtual_ips end |
#get_vrid ⇒ Fixnum
103 104 105 106 107 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 103 def get_vrid vrid = Saklient::Util::get_by_path(self.raw_annotation, 'VRRP.VRID') raise Saklient::Errors::SaklientException.new('invalid_data', 'Data of the resource is invalid') if (vrid).nil? return (vrid).to_s().to_i(10) end |
#reload_status ⇒ LoadBalancer
監視対象サーバのステータスを最新の状態に更新します.
242 243 244 245 246 247 248 249 250 251 252 253 254 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 242 def reload_status result = request_retry('GET', _api_path + '/' + Saklient::Util::url_encode(_id) + '/status') if !(result).nil? && (!result.nil? && result.key?(:LoadBalancer)) vips = result[:LoadBalancer] for vipDyn in vips vipStr = vipDyn[:VirtualIPAddress] vip = get_virtual_ip_by_address(vipStr) next if (vip).nil? vip.update_status(vipDyn[:Servers]) end end return self end |
#set_default_route(v) ⇒ String
52 53 54 55 56 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 52 def set_default_route(v) Saklient::Util::validate_type(v, 'String') Saklient::Util::set_by_path(self.raw_annotation, 'Network.DefaultRoute', v) return v end |
#set_initial_params(swytch, vrid, realIps, isHighSpec = false) ⇒ LoadBalancer
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 184 def set_initial_params(swytch, vrid, realIps, isHighSpec = false) Saklient::Util::validate_type(swytch, 'Saklient::Cloud::Resources::Swytch') Saklient::Util::validate_type(vrid, 'Fixnum') Saklient::Util::validate_type(realIps, 'Array') Saklient::Util::validate_type(isHighSpec, 'bool') annot = self.raw_annotation self.vrid = vrid Saklient::Util::set_by_path(annot, 'Switch.ID', swytch._id) if !(swytch.ipv4_nets).nil? && 0 < swytch.ipv4_nets.length net = swytch.ipv4_nets[0] self.default_route = net.default_route self.mask_len = net.mask_len else self.default_route = swytch.user_default_route self.mask_len = swytch.user_mask_len end servers = [] for ip in realIps servers << { IPAddress: ip } end Saklient::Util::set_by_path(annot, 'Servers', servers) self.plan_id = isHighSpec ? 2 : 1 return self end |
#set_mask_len(v) ⇒ Fixnum
82 83 84 85 86 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 82 def set_mask_len(v) Saklient::Util::validate_type(v, 'Fixnum') Saklient::Util::set_by_path(self.raw_annotation, 'Network.NetworkMaskLen', v) return v end |
#set_vrid(v) ⇒ Fixnum
112 113 114 115 116 |
# File 'lib/saklient/cloud/resources/load_balancer.rb', line 112 def set_vrid(v) Saklient::Util::validate_type(v, 'Fixnum') Saklient::Util::set_by_path(self.raw_annotation, 'VRRP.VRID', v) return v end |