class Saklient::Cloud::Resources::LoadBalancer
ロードバランサの実体1つに対応し, 属性の取得や操作を行うためのクラス.
Attributes
@private @return [Array<LbVirtualIp>]
デフォルトルート
@return [String]
マスク長
@return [Fixnum]
仮想IPアドレス {LbVirtualIp} の配列
@return [Array<LbVirtualIp>]
VRID
@return [Fixnum]
Public Class Methods
@private @param [Saklient::Cloud::Client] client @param [any] obj @param [bool] wrapped
Saklient::Cloud::Resources::Appliance::new
# File lib/saklient/cloud/resources/load_balancer.rb, line 134 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
Public Instance Methods
仮想IPアドレス設定を追加します.
@param [any] settings 設定オブジェクト @return [LbVirtualIp]
# File lib/saklient/cloud/resources/load_balancer.rb, line 220 def add_virtual_ip(settings = nil) ret = Saklient::Cloud::Resources::LbVirtualIp.new(settings) @_virtual_ips << ret return ret end
@return [LoadBalancer]
# File lib/saklient/cloud/resources/load_balancer.rb, line 209 def clear_virtual_ips while 0 < @_virtual_ips.length do @_virtual_ips.pop() end return self end
# File lib/saklient/cloud/resources/load_balancer.rb, line 66 def default_route=(v) set_default_route(v) end
@private @return [String]
# File lib/saklient/cloud/resources/load_balancer.rb, line 44 def get_default_route return Saklient::Util::get_by_path(self.raw_annotation, 'Network.DefaultRoute') end
@private @return [Fixnum]
# File lib/saklient/cloud/resources/load_balancer.rb, line 72 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
指定したIPアドレスにマッチする仮想IPアドレス設定を取得します.
@param [String] address @return [LbVirtualIp]
# File lib/saklient/cloud/resources/load_balancer.rb, line 230 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
@private @return [Array<LbVirtualIp>]
# File lib/saklient/cloud/resources/load_balancer.rb, line 29 def get_virtual_ips return @_virtual_ips end
@private @return [Fixnum]
# File lib/saklient/cloud/resources/load_balancer.rb, line 102 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
# File lib/saklient/cloud/resources/load_balancer.rb, line 96 def mask_len=(v) set_mask_len(v) end
監視対象サーバのステータスを最新の状態に更新します.
@return [LoadBalancer]
# File lib/saklient/cloud/resources/load_balancer.rb, line 241 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
@private @param [String] v @return [String]
# File lib/saklient/cloud/resources/load_balancer.rb, line 51 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
@private @param [Swytch] swytch @param [Fixnum] vrid @param [Array<String>] realIps @param [bool] isHighSpec @return [LoadBalancer]
# File lib/saklient/cloud/resources/load_balancer.rb, line 183 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
@private @param [Fixnum] v @return [Fixnum]
# File lib/saklient/cloud/resources/load_balancer.rb, line 81 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
@private @param [Fixnum] v @return [Fixnum]
# File lib/saklient/cloud/resources/load_balancer.rb, line 111 def set_vrid(v) Saklient::Util::validate_type(v, 'Fixnum') Saklient::Util::set_by_path(self.raw_annotation, 'VRRP.VRID', v) return v end
# File lib/saklient/cloud/resources/load_balancer.rb, line 126 def vrid=(v) set_vrid(v) end
Protected Instance Methods
@private @param [any] r @param [any] root @return [void]
# File lib/saklient/cloud/resources/load_balancer.rb, line 147 def _on_after_api_deserialize(r, root) self.raw_annotation = {} if (self.raw_annotation).nil? @_virtual_ips = [] settings = self.raw_settings if !(settings).nil? lb = settings[:LoadBalancer] lb = [] if (lb).nil? vips = lb for vip in vips @_virtual_ips << Saklient::Cloud::Resources::LbVirtualIp.new(vip) end end end
@private @param [bool] withClean @return [void]
# File lib/saklient/cloud/resources/load_balancer.rb, line 164 def _on_before_api_serialize(withClean) Saklient::Util::validate_type(withClean, 'bool') lb = [] for vip in @_virtual_ips lb << vip.to_raw_settings end self.raw_settings = {} if (self.raw_settings).nil? self.raw_settings[:LoadBalancer] = lb self.clazz = Saklient::Cloud::Enums::EApplianceClass::loadbalancer if @is_new end