Sha256: 7e724a0274047e6d48b5419ebcbb470133533c919dac3f229833fa03645365ab

Contents?: true

Size: 1.62 KB

Versions: 13

Compression:

Stored size: 1.62 KB

Contents

module Fog
  module Vsphere
    class Compute
      class Interfaces < Fog::Collection
        model Fog::Vsphere::Compute::Interface

        attribute :server_id

        def all(_filters = {})
          requires :server_id

          case server
          when Fog::Vsphere::Compute::Server
            load service.list_vm_interfaces(server.id)
          when Fog::Vsphere::Compute::Template
            load service.list_template_interfaces(server.id)
          else
            raise 'interfaces should have vm or template'
          end

          each { |interface| interface.server_id = server.id }
          self
        end

        def get(id)
          requires :server_id

          case server
          when Fog::Vsphere::Compute::Server
            interface = service.get_vm_interface(server.id, key: id, mac: id, name: id, datacenter: server.datacenter)
          when Fog::Vsphere::Compute::Template
            interface = service.get_template_interfaces(server.id, key: id, mac: id, name: id)
          else

            raise 'interfaces should have vm or template'
          end

          if interface
            Fog::Vsphere::Compute::Interface.new(interface.merge(server_id: server.id, service: service))
          end
        end

        def new(attributes = {})
          if server_id
            super({ server_id: server_id }.merge(attributes))
          else
            super
          end
        end

        def server
          return nil if server_id.nil?
          service.servers.get(server_id)
        end

        def server=(new_server)
          server_id = new_server.id
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
fog-vsphere-3.7.0 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.8 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.7 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.6 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.5 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.4 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.3 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.2 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.5.3 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.6.0 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.5.2 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.5.1 lib/fog/vsphere/models/compute/interfaces.rb
fog-vsphere-3.5.0 lib/fog/vsphere/models/compute/interfaces.rb