def setUp(self):
     super(AttachInterfacesPolicyEnforcementv21, self).setUp()
     self.controller = \
         attach_interfaces_v21.InterfaceAttachmentController()
     self.req = fakes.HTTPRequest.blank('')
     self.rule_name = "os_compute_api:os-attach-interfaces"
     self.policy.set_rules({self.rule_name: "project:non_fake"})
Esempio n. 2
0
    def test_show_invalid(self):
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank('/v3/servers/fake/os-attach-interfaces/show')
        req.method = 'POST'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context

        self.assertRaises(exc.HTTPNotFound,
                          attachments.show, req, FAKE_UUID2, FAKE_PORT_ID1)
Esempio n. 3
0
    def test_show(self):
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank('/v3/servers/fake/os-attach-interfaces/show')
        req.method = 'POST'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context

        result = attachments.show(req, FAKE_UUID1, FAKE_PORT_ID1)
        self.assertEqual(self.expected_show, result)
Esempio n. 4
0
    def test_delete(self):
        self.stubs.Set(compute_api.API, 'detach_interface',
                       fake_detach_interface)
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank(
            '/v3/servers/fake/os-attach-interfaces/delete')
        req.method = 'DELETE'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context

        result = attachments.delete(req, FAKE_UUID1, FAKE_PORT_ID1)
        self.assertEqual('202 Accepted', result.status)
Esempio n. 5
0
 def test_attach_interface_without_network_id(self):
     self.stubs.Set(compute_api.API, 'attach_interface',
                    fake_attach_interface)
     attachments = attach_interfaces.InterfaceAttachmentController()
     req = webob.Request.blank(
         '/v3/servers/fake/os-attach-interfaces/attach')
     req.method = 'POST'
     req.body = jsonutils.dumps({})
     req.headers['content-type'] = 'application/json'
     req.environ['nova.context'] = self.context
     result = attachments.create(req, FAKE_UUID1, jsonutils.loads(req.body))
     self.assertEqual(result['interface_attachment']['net_id'],
                      FAKE_NET_ID1)
Esempio n. 6
0
    def test_delete_interface_not_found(self):
        self.stubs.Set(compute_api.API, 'detach_interface',
                       fake_detach_interface)
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank(
            '/v3/servers/fake/os-attach-interfaces/delete')
        req.method = 'POST'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context

        self.assertRaises(exc.HTTPNotFound, attachments.delete, req,
                          FAKE_UUID1, 'invaid-port-id')
Esempio n. 7
0
 def test_attach_interface_with_invalid_data(self):
     self.stubs.Set(compute_api.API, 'attach_interface',
                    fake_attach_interface)
     attachments = attach_interfaces.InterfaceAttachmentController()
     req = webob.Request.blank(
         '/v3/servers/fake/os-attach-interfaces/attach')
     req.method = 'POST'
     req.body = jsonutils.dumps({'interface_attachment':
                                 {'net_id': 'bad_id'}})
     req.headers['content-type'] = 'application/json'
     req.environ['nova.context'] = self.context
     self.assertRaises(exc.HTTPBadRequest,
                       attachments.create, req, FAKE_UUID1,
                       jsonutils.loads(req.body))
Esempio n. 8
0
    def test_item_instance_not_found(self):
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank('/v3/servers/fake/os-attach-interfaces/')
        req.method = 'GET'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context

        def fake_get_instance_exception(self, context, instance_uuid,
                                        **kwargs):
            raise exception.InstanceNotFound(instance_id=instance_uuid)

        self.stubs.Set(compute_api.API, 'get', fake_get_instance_exception)
        self.assertRaises(exc.HTTPNotFound, attachments.index, req, 'fake')
Esempio n. 9
0
 def _test_attach_interface_with_invalid_parameter(self, param):
     self.stubs.Set(compute_api.API, 'attach_interface',
                    fake_attach_interface)
     attachments = attach_interfaces.InterfaceAttachmentController()
     req = webob.Request.blank(
         '/v3/servers/fake/os-attach-interfaces/attach')
     req.method = 'POST'
     req.body = jsonutils.dumps({'interface_attachment': param})
     req.headers['content-type'] = 'application/json'
     req.environ['nova.context'] = self.context
     self.assertRaises(exception.ValidationError,
                       attachments.create,
                       req,
                       FAKE_UUID1,
                       body=jsonutils.loads(req.body))
Esempio n. 10
0
    def test_detach_interface_instance_locked(self):
        def fake_detach_interface_from_locked_server(self, context, instance,
                                                     port_id):
            raise exception.InstanceIsLocked(instance_uuid=FAKE_UUID1)

        self.stubs.Set(compute_api.API, 'detach_interface',
                       fake_detach_interface_from_locked_server)
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank(
            '/v3/servers/fake/os-attach-interfaces/delete')
        req.method = 'POST'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context

        self.assertRaises(exc.HTTPConflict, attachments.delete, req,
                          FAKE_UUID1, FAKE_PORT_ID1)
Esempio n. 11
0
    def test_detach_interface_with_invalid_state(self):
        def fake_detach_interface_invalid_state(*args, **kwargs):
            raise exception.InstanceInvalidState(instance_uuid='',
                                                 attr='',
                                                 state='',
                                                 method='detach_interface')

        self.stubs.Set(compute_api.API, 'detach_interface',
                       fake_detach_interface_invalid_state)
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank(
            '/v3/servers/fake/os-attach-interfaces/delete')
        req.method = 'DELETE'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context
        self.assertRaises(exc.HTTPConflict, attachments.delete, req,
                          FAKE_UUID1, FAKE_NET_ID1)
Esempio n. 12
0
 def test_attach_interface_fixed_ip_already_in_use(self, attach_mock,
                                                   get_mock):
     get_mock.side_effect = fake_get_instance
     attach_mock.side_effect = exception.FixedIpAlreadyInUse(
         address='10.0.3.2', instance_uuid=FAKE_UUID1)
     attachments = attach_interfaces.InterfaceAttachmentController()
     req = webob.Request.blank(
         '/v3/servers/fake/os-attach-interfaces/attach')
     req.method = 'POST'
     req.body = jsonutils.dumps({})
     req.headers['content-type'] = 'application/json'
     req.environ['nova.context'] = self.context
     self.assertRaises(exc.HTTPBadRequest, attachments.create, req,
                       FAKE_UUID1, jsonutils.loads(req.body))
     attach_mock.assert_called_once_with(self.context, {}, None, None, None)
     get_mock.assert_called_once_with(self.context,
                                      FAKE_UUID1,
                                      want_objects=True,
                                      expected_attrs=None)
Esempio n. 13
0
    def test_delete_instance_not_found(self):
        self.stubs.Set(compute_api.API, 'detach_interface',
                       fake_detach_interface)
        attachments = attach_interfaces.InterfaceAttachmentController()
        req = webob.Request.blank(
            '/v3/servers/fake/os-attach-interfaces/delete')
        req.method = 'POST'
        req.body = jsonutils.dumps({})
        req.headers['content-type'] = 'application/json'
        req.environ['nova.context'] = self.context

        def fake_get_instance_exception(self,
                                        context,
                                        instance_uuid,
                                        columns_to_join=None):
            raise exception.InstanceNotFound(instance_id=instance_uuid)

        self.stubs.Set(compute_api.API, 'get', fake_get_instance_exception)
        self.assertRaises(exc.HTTPNotFound, attachments.delete, req, 'fake',
                          'invaid-port-id')