class Saklient::Cloud::Resources::LoadBalancer

ロードバランサの実体1つに対応し, 属性の取得や操作を行うためのクラス.

Attributes

_virtual_ips[RW]

@private @return [Array<LbVirtualIp>]

default_route[RW]

デフォルトルート

@return [String]

mask_len[RW]

マスク長

@return [Fixnum]

virtual_ips[R]

仮想IPアドレス {LbVirtualIp} の配列

@return [Array<LbVirtualIp>]

vrid[RW]

VRID

@return [Fixnum]

Public Class Methods

new(client, obj, wrapped = false) click to toggle source

@private @param [Saklient::Cloud::Client] client @param [any] obj @param [bool] wrapped

# 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

add_virtual_ip(settings = nil) click to toggle source

仮想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
clear_virtual_ips() click to toggle source

@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
default_route=(v) click to toggle source
# File lib/saklient/cloud/resources/load_balancer.rb, line 66
def default_route=(v)
  set_default_route(v)
end
get_default_route() click to toggle source

@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
get_mask_len() click to toggle source

@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
get_virtual_ip_by_address(address) click to toggle source

指定した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
get_virtual_ips() click to toggle source

@private @return [Array<LbVirtualIp>]

# File lib/saklient/cloud/resources/load_balancer.rb, line 29
def get_virtual_ips
  return @_virtual_ips
end
get_vrid() click to toggle source

@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
mask_len=(v) click to toggle source
# File lib/saklient/cloud/resources/load_balancer.rb, line 96
def mask_len=(v)
  set_mask_len(v)
end
reload_status() click to toggle source

監視対象サーバのステータスを最新の状態に更新します.

@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
set_default_route(v) click to toggle source

@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
set_initial_params(swytch, vrid, realIps, isHighSpec = false) click to toggle source

@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
set_mask_len(v) click to toggle source

@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
set_vrid(v) click to toggle source

@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
vrid=(v) click to toggle source
# File lib/saklient/cloud/resources/load_balancer.rb, line 126
def vrid=(v)
  set_vrid(v)
end

Protected Instance Methods

_on_after_api_deserialize(r, root) click to toggle source

@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
_on_before_api_serialize(withClean) click to toggle source

@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