def add(request, net, args): # Normal Response Code: 202 # Error Response Codes: computeFault (400, 500), # serviceUnavailable (503), # unauthorized (401), # badRequest (400), # buildInProgress (409), # badMediaType(415), # itemNotFound (404), # overLimit (413) server_id = args.get('serverRef', None) if not server_id: raise faults.BadRequest('Malformed Request.') vm = util.get_vm(server_id, request.user_uniq, non_suspended=True) servers.connect(vm, network=net) return HttpResponse(status=202)
def test_connect_network(self, mrapi): # Common connect for dhcp in [True, False]: subnet = mfactory.IPv4SubnetFactory(network__flavor="CUSTOM", cidr="192.168.2.0/24", gateway="192.168.2.1", dhcp=dhcp) net = subnet.network vm = mfactory.VirtualMachineFactory(operstate="STARTED") mfactory.BackendNetworkFactory(network=net, backend=vm.backend) mrapi().ModifyInstance.return_value = 42 with override_settings(settings, GANETI_USE_HOTPLUG=True): servers.connect(vm, net) pool = net.get_ip_pools(locked=False)[0] self.assertFalse(pool.is_available("192.168.2.2")) args, kwargs = mrapi().ModifyInstance.call_args nics = kwargs["nics"][0] self.assertEqual(kwargs["instance"], vm.backend_vm_id) self.assertEqual(nics[0], "add") self.assertEqual(nics[1], "-1") self.assertEqual(nics[2]["ip"], "192.168.2.2") self.assertEqual(nics[2]["network"], net.backend_id) # Test connect to IPv6 only network vm = mfactory.VirtualMachineFactory(operstate="STARTED") subnet = mfactory.IPv6SubnetFactory(cidr="2000::/64", gateway="2000::1") net = subnet.network mfactory.BackendNetworkFactory(network=net, backend=vm.backend) with override_settings(settings, GANETI_USE_HOTPLUG=True): servers.connect(vm, net) args, kwargs = mrapi().ModifyInstance.call_args nics = kwargs["nics"][0] self.assertEqual(kwargs["instance"], vm.backend_vm_id) self.assertEqual(nics[0], "add") self.assertEqual(nics[1], "-1") self.assertEqual(nics[2]["ip"], None) self.assertEqual(nics[2]["network"], net.backend_id)