Shindo.tests('Fog::Compute[:xenserver] | create_vif request', ['xenserver']) do compute = Fog::Compute[:xenserver] servers = compute.servers # pre-flight cleanup (servers.all :name_matches => test_ephemeral_vm_name).each do |s| s.destroy end tests('create_vif should') do vm_ref = compute.create_server test_ephemeral_vm_name, test_template_name ref = compute.create_vif vm_ref, compute.networks.first.reference s = servers.get vm_ref test('return a valid reference') do if (ref != "OpaqueRef:NULL") and (ref.split("1") != "NULL") true else false end end test('add the VIF to the server') do !(s.vifs.find { |vif| vif.reference == ref }).nil? end raises(ArgumentError, 'raise ArgumentError when vm_ref nil') do ref = compute.create_vif nil, compute.networks.first.reference end raises(ArgumentError, 'raise ArgumentError when network_ref nil') do ref = compute.create_vif vm_ref, nil end test('create a VIF with device number 9') do ref = compute.create_vif vm_ref, compute.networks.first.reference, 9 s.reload (compute.vifs.get(ref).device == 9.to_s) and \ !(s.vifs.find { |vif| vif.reference == ref }).nil? end end tests('create_vif_custom should') do vm_ref = compute.create_server test_ephemeral_vm_name, test_template_name network_ref = compute.networks.first.reference conf = { 'MAC_autogenerated' => 'True', 'VM' => vm_ref, 'network' => network_ref, 'MAC' => '', 'device' => '4', 'MTU' => '0', 'other_config' => {}, 'qos_algorithm_type' => 'ratelimit', 'qos_algorithm_params' => {} } ref = compute.create_vif_custom conf s = servers.get vm_ref test('return a valid reference') do if (ref != "OpaqueRef:NULL") and (ref.split("1") != "NULL") true else false end end test('add the VIF to the server') do !(s.vifs.find { |vif| vif.reference == ref }).nil? end raises(ArgumentError, 'raise ArgumentError when conf is not a Hash') do conf['device'] = '5' ref = compute.create_vif_custom 'foobar' end test('create a VIF with device number 9') do conf['device'] = '9' ref = compute.create_vif_custom conf s.reload (compute.vifs.get(ref).device == 9.to_s) and \ !(s.vifs.find { |vif| vif.reference == ref }).nil? end test('create a VIF with MAC 11:22:33:44:55:66') do conf['MAC_autogenerated'] = 'False' conf['MAC'] = '11:22:33:44:55:66' conf['device'] = '6' ref = compute.create_vif_custom conf vif = compute.vifs.get ref vif.mac == '11:22:33:44:55:66' end end tests('The expected options') do raises(ArgumentError, 'raises ArgumentError when vm_ref,net_ref missing') { compute.create_vif } end end