Sha256: 70ddfecdf8f5b97d4e79f2219d84fe13fa134d8967b893c6bd4b019c556999f1

Contents?: true

Size: 1.84 KB

Versions: 26

Compression:

Stored size: 1.84 KB

Contents

require 'fog/core/collection'
require 'fog/rackspace/models/networking/virtual_interface'
require 'fog/rackspace/models/compute_v2/server'

module Fog
  module Rackspace
    class Networking
      class VirtualInterfaces < Fog::Collection
        model Fog::Rackspace::Networking::VirtualInterface

        # Returns list of virtual interfaces for a server
        # @return [Fog::Rackspace::Networking::Servers] Retrieves a list virtual interfaces for server.
        # @raise [Fog::Rackspace::Networking::NotFound] - HTTP 404
        # @raise [Fog::Rackspace::Networking::BadRequest] - HTTP 400
        # @raise [Fog::Rackspace::Networking::InternalServerError] - HTTP 500
        # @raise [Fog::Rackspace::Networking::ServiceError]
        # @note Fog's current implementation only returns 1000 servers
        # @note The filter parameter on the method is just to maintain compatability with other providers that support filtering.
        # @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Servers-d1e2078.html
        # @see Fog::Rackspace::Networking::Server#virtual_interfaces
        def all(options={})
          server  = server(options[:server])
          data    = service.list_virtual_interfaces(server.id).body['virtual_interfaces']
          objects = load(data)
          objects.each{ |obj| obj.attributes[:server] = server }
          objects
        end

        private

        def server(obj)
          server = case obj.class.to_s
            when "Fog::Compute::RackspaceV2::Server" then obj
            when "String" then Fog::Compute::RackspaceV2::Server.new(:id => obj, :service => service)
            else raise "Please pass in :server (either id or Fog::Compute::RackspaceV2::Server)"
          end

          raise "Server (#{server}) not found" unless server.present?

          server
        end
      end
    end
  end
end

Version data entries

26 entries across 24 versions & 5 rubygems

Version Path
fog-rackspace-0.1.6 lib/fog/rackspace/models/networking/virtual_interfaces.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.5.0/gems/fog-rackspace-0.1.5/lib/fog/rackspace/models/networking/virtual_interfaces.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/fog-rackspace-0.1.5/lib/fog/rackspace/models/networking/virtual_interfaces.rb
vagrant-packet-0.1.1 vendor/bundle/ruby/2.3.0/gems/fog-rackspace-0.1.5/lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-rackspace-0.1.5 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-rackspace-0.1.4 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-rackspace-0.1.3 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-rackspace-0.1.2 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-rackspace-0.1.1 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-rackspace-0.1.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.37.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.36.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.35.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-2.0.0.pre.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
vagrant-cloudstack-1.2.0 vendor/bundle/gems/fog-1.32.0/lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.34.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.33.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.32.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.31.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb
fog-1.30.0 lib/fog/rackspace/models/networking/virtual_interfaces.rb