Sha256: f0df78e2d54551c36791436b27f5f1af94db8e0fc3329d69c2916abae3984d69

Contents?: true

Size: 1.12 KB

Versions: 7

Compression:

Stored size: 1.12 KB

Contents

module Fog
  module Compute
    class Vsphere
      # ClusterRuleInfo
      class Rule < Fog::Model
        identity :key

        attribute :datacenter
        attribute :cluster
        attribute :name
        attribute :enabled
        # Type should be a class - either
        #  - RbVmomi::VIM::ClusterAntiAffinityRuleSpec
        #  - RbVmomi::VIM::ClusterAffinityRuleSpec
        #  - RbVmomi::VIM::ClusterVmHostRuleInfo
        attribute :type
        attribute :vm_ids

        def vms
          vm_ids.map { |id| service.servers.get(id, datacenter) }
        end

        def vms=(vms)
          self.vm_ids = vms.map(&:instance_uuid)
        end

        def save
          requires :datacenter, :cluster, :name, :enabled, :type, :vm_ids
          if vm_ids.length < 2
            raise ArgumentError, 'A rule must have at least 2 VMs'
          end
          if persisted?
            raise 'Update is not supported yet'
          else
            self.key = service.create_rule(attributes)
          end
          reload
        end

        def destroy
          service.destroy_rule(attributes)
        end
      end
    end
  end
end

Version data entries

7 entries across 5 versions & 2 rubygems

Version Path
fog-vsphere-2.5.0 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-2.4.0 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-2.3.0 lib/fog/vsphere/models/compute/rule.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-vsphere-2.2.0/lib/fog/vsphere/models/compute/rule.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-vsphere-2.2.0/lib/fog/vsphere/models/compute/rule.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-vsphere-2.2.0/lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-2.2.0 lib/fog/vsphere/models/compute/rule.rb