Sha256: 320a31e1003364c84764699e5d427b7cf24c3251f903d6d05ac7532c88a3ef6f

Contents?: true

Size: 1.12 KB

Versions: 12

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
        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

12 entries across 12 versions & 1 rubygems

Version Path
fog-vsphere-1.0.1 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-1.0.0 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.8.1 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.8.0 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.7.0 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.6.4 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.6.3 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.6.2 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.6.1 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.6.0 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.5.0 lib/fog/vsphere/models/compute/rule.rb
fog-vsphere-0.4.0 lib/fog/vsphere/models/compute/rule.rb