Sha256: ea470e6147000a189a854c1174bbd79114715fbc673ca85d74cd8d23bf772514

Contents?: true

Size: 1.98 KB

Versions: 29

Compression:

Stored size: 1.98 KB

Contents

require 'fog/core/model'

module Fog
  module HP
    class LB
      class LoadBalancer < Fog::Model
        identity  :id

        attribute :name
        attribute :protocol
        attribute :port
        attribute :algorithm
        attribute :status
        attribute :status_description, :aliases => 'statusDescription'
        attribute :nodes
        attribute :virtual_ips, :aliases => 'virtualIps'
        attribute :node_count,  :aliases => 'nodeCount'
        attribute :created_at,  :aliases => 'created'
        attribute :updated_at , :aliases => 'updated'

        def destroy
          requires :id
          service.delete_load_balancer(id)
          true
        end

        def ready?
          self.status == 'ACTIVE'
        end

        def save
          identity ? update : create
        end

        def nodes
          @nodes ||= begin
            Fog::HP::LB::Nodes.new({
              :service  => service,
              :load_balancer   => self
            })
          end
        end

        def nodes=(new_nodes=[])
          nodes.load(new_nodes)
        end

        private

        def create
          requires :name, :nodes

          options = {}
          options['virtualIps'] = virtual_ips if virtual_ips
          options['port']       = port if port
          options['protocol']   = protocol if protocol
          options['algorithm']  = algorithm if algorithm
          merge_attributes(service.create_load_balancer(name, nodes_to_hash, options).body)
          true
        end

        def update
          requires :id

          options = {}
          options['name']       = name if name
          options['algorithm']  = algorithm if algorithm
          service.update_load_balancer(id, options).body
          true
        end

        def nodes_to_hash
          if nodes
            nodes.map do |node|
              { 'address' => node.address, 'port' => node.port, 'condition' => node.condition }
            end
          end
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 4 rubygems

Version Path
fog-1.37.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.36.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.35.0 lib/fog/hp/models/lb/load_balancer.rb
fog-2.0.0.pre.0 lib/fog/hp/models/lb/load_balancer.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/fog-1.32.0/lib/fog/hp/models/lb/load_balancer.rb
fog-1.34.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.33.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.32.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.31.0 lib/fog/hp/models/lb/load_balancer.rb
vagrant-cloudstack-1.1.0 vendor/bundle/gems/fog-1.22.1/lib/fog/hp/models/lb/load_balancer.rb
fog-1.30.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.29.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.28.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.27.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.26.0 lib/fog/hp/models/lb/load_balancer.rb
fog-1.25.0 lib/fog/hp/models/lb/load_balancer.rb
nsidc-fog-1.24.1 lib/fog/hp/models/lb/load_balancer.rb
fog-1.24.0 lib/fog/hp/models/lb/load_balancer.rb
ns-fog-1.22.11 lib/fog/hp/models/lb/load_balancer.rb
ns-fog-1.22.10 lib/fog/hp/models/lb/load_balancer.rb