Sha256: 83ed29f9c46f9ed6349b5d4ccb866cac462b25fd95a56fac008c19ac0f146ac9

Contents?: true

Size: 1.77 KB

Versions: 16

Compression:

Stored size: 1.77 KB

Contents

module Fog
  module Compute
    class XenServer
      class Real
        def create_vif( vm_ref, network_ref, device = -1)
          raise ArgumentError.new('Invalid vm_ref') if vm_ref.nil?
          raise ArgumentError.new('Invalid network_ref') if network_ref.nil?
          vm_ref = vm_ref.reference if vm_ref.kind_of? Fog::Model
          network_ref = network_ref.reference if network_ref.kind_of? Fog::Model
          vif_config = default_vif_config(vm_ref, network_ref, device.to_s)
          @connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VIF.create'}, vif_config )
        end

        def create_vif_custom( conf )
          raise ArgumentError.new('VIF config is not a Hash') if not conf.kind_of?(Hash)
          @connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VIF.create'}, conf )
        end

        def default_vif_config( vm_ref, network_ref, device_number = '-1' )
          conf = {
            'MAC_autogenerated' => 'True',
            'VM' => vm_ref,
            'network' => network_ref,
            'MAC' => '',
            'MTU' => '0',
            'other_config' => {},
            'qos_algorithm_type' => 'ratelimit',
            'qos_algorithm_params' => {}
          }
          if device_number.to_i >= 0
            conf['device'] = device_number
          else
            highest_dev = 0
            server = servers.get vm_ref
            server.vifs.each do |vif|
              dev = vif.device.to_i
              highest_dev = dev if dev > highest_dev
            end
            conf['device'] = (highest_dev + 1).to_s
          end
          conf
        end
      end

      class Mock
        def create_vif( vm_ref, network_ref )
          Fog::Mock.not_implemented
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 4 rubygems

Version Path
vagrant-cloudstack-1.1.0 vendor/bundle/gems/fog-1.22.1/lib/fog/xenserver/requests/compute/create_vif.rb
fog-1.26.0 lib/fog/xenserver/requests/compute/create_vif.rb
fog-1.25.0 lib/fog/xenserver/requests/compute/create_vif.rb
nsidc-fog-1.24.1 lib/fog/xenserver/requests/compute/create_vif.rb
fog-1.24.0 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.11 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.10 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.9 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.8 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.7 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.6 lib/fog/xenserver/requests/compute/create_vif.rb
fog-1.23.0 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.4 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.3 lib/fog/xenserver/requests/compute/create_vif.rb
ns-fog-1.22.2 lib/fog/xenserver/requests/compute/create_vif.rb
fog-1.22.1 lib/fog/xenserver/requests/compute/create_vif.rb