Пример #1
0
    def setUp(self):
        super(TestUpgradeController, self).setUp()
        self.controller = UpgradeController()

        self.body = {
            "upgrade": {
                "instance_id": "27e25b73-88a1-4526-b2b9-919a28b8b33f",
                "instance_version": "v1.0.1",
                "location": "http://swift/trove-guestagent-v1.0.1.tar.gz"}
        }
Пример #2
0
    def get_resources(self):
        resources = []

        instances = extensions.ResourceExtension('{tenant_id}/mgmt/instances',
                                                 MgmtInstanceController(),
                                                 member_actions={
                                                     'root': 'GET',
                                                     'diagnostics': 'GET',
                                                     'hwinfo': 'GET',
                                                     'rpc_ping': 'GET',
                                                     'action': 'POST'
                                                 })
        resources.append(instances)

        clusters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/clusters',
            ClusterController(),
            member_actions={'action': 'POST'})
        resources.append(clusters)

        hosts = extensions.ResourceExtension('{tenant_id}/mgmt/hosts',
                                             HostController(),
                                             member_actions={})
        resources.append(hosts)

        quota = extensions.ResourceExtension('{tenant_id}/mgmt/quotas',
                                             QuotaController(),
                                             member_actions={})
        resources.append(quota)

        storage = extensions.ResourceExtension('{tenant_id}/mgmt/storage',
                                               StorageController(),
                                               member_actions={})
        resources.append(storage)

        host_instances = extensions.ResourceExtension(
            'instances',
            hostservice.HostInstanceController(),
            parent={
                'member_name': 'host',
                'collection_name': '{tenant_id}/mgmt/hosts'
            },
            collection_actions={'action': 'POST'})
        resources.append(host_instances)

        upgrade = extensions.ResourceExtension(
            '{tenant_id}/mgmt/instances/{instance_id}/upgrade',
            UpgradeController(),
            member_actions={})
        resources.append(upgrade)

        datastore_configuration_parameters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/datastores/versions/{version_id}/parameters',
            conf_service.ConfigurationsParameterController(),
            member_actions={})
        resources.append(datastore_configuration_parameters)

        return resources
Пример #3
0
    def setUp(self):
        super(TestUpgradeController, self).setUp()
        self.controller = UpgradeController()

        self.body = {
            "upgrade": {
                "instance_id": "27e25b73-88a1-4526-b2b9-919a28b8b33f",
                "instance_version": "v1.0.1",
                "location": "http://swift/trove-guestagent-v1.0.1.tar.gz"}
        }
Пример #4
0
    def get_resources(self):
        resources = []

        instances = extensions.ResourceExtension(
            '{tenant_id}/mgmt/instances',
            MgmtInstanceController(),
            member_actions={'root': 'GET',
                            'diagnostics': 'GET',
                            'hwinfo': 'GET',
                            'rpc_ping': 'GET',
                            'action': 'POST'})
        resources.append(instances)

        clusters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/clusters',
            MgmtClusterController(),
            member_actions={'action': 'POST'})
        resources.append(clusters)

        quota = extensions.ResourceExtension(
            '{tenant_id}/mgmt/quotas',
            QuotaController(),
            member_actions={})
        resources.append(quota)

        upgrade = extensions.ResourceExtension(
            '{tenant_id}/mgmt/instances/{instance_id}/upgrade',
            UpgradeController(),
            member_actions={})
        resources.append(upgrade)

        datastore_configuration_parameters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/datastores/versions/{version_id}/parameters',
            conf_service.ConfigurationsParameterController(),
            member_actions={})
        resources.append(datastore_configuration_parameters)

        datastore_version = extensions.ResourceExtension(
            '{tenant_id}/mgmt/datastore-versions',
            DatastoreVersionController(),
            member_actions={})
        resources.append(datastore_version)

        return resources
Пример #5
0
class TestUpgradeController(TestCase):
    def setUp(self):
        super(TestUpgradeController, self).setUp()
        self.controller = UpgradeController()

        self.body = {
            "upgrade": {
                "instance_id": "27e25b73-88a1-4526-b2b9-919a28b8b33f",
                "instance_version": "v1.0.1",
                "location": "http://swift/trove-guestagent-v1.0.1.tar.gz"
            }
        }

    def tearDown(self):
        super(TestUpgradeController, self).tearDown()
        self.body = {}

    def _get_validator(self, body):
        """
        Helper method to return a validator
        """
        schema = self.controller.get_schema('create', body)
        return jsonschema.Draft4Validator(schema)

    def test_validate_create(self):
        """
        Test for valid payload in body
        """
        validator = self._get_validator(self.body)
        self.assertTrue(validator.is_valid(self.body))

    def test_validate_create_additional_params(self):
        """
        Test for valid payload with additional params
        """
        self.body["upgrade"]["description"] = "upgrade"
        validator = self._get_validator(self.body)
        self.assertTrue(validator.is_valid(self.body))

    def test_controller_with_no_metadata(self):
        """
        Test the mock controller w/out metadata
        """
        tenant_id = '77889991010'
        instance_id = '27e25b73-88a1-4526-b2b9-919a28b8b33f'
        context = Mock()

        req = Mock()
        req.environ = MagicMock()
        req.environ.get = Mock(return_value=context)

        send = Mock()
        UpgradeMessageSender.create = Mock(return_value=send)

        resp = self.controller.create(req, self.body, tenant_id, instance_id)

        instance_version = self.body["upgrade"]["instance_version"]
        location = self.body["upgrade"]["location"]

        metadata = None
        UpgradeMessageSender.create.assert_called_once_with(
            context, instance_id, instance_version, location, metadata)
        self.assertEqual(202, resp.status)

    def test_controller_with_metadata(self):
        """
        Test the mock controller with metadata
        """
        tenant_id = '77889991010'
        instance_id = '27e25b73-88a1-4526-b2b9-919a28b8b33f'
        context = Mock()

        req = Mock()
        req.environ = MagicMock()
        req.environ.get = Mock(return_value=context)

        send = Mock()
        UpgradeMessageSender.create = Mock(return_value=send)

        # append the body w/ metadata
        self.body["upgrade"]["metadata"] = {
            "config_location": "swift://my.conf.location",
            "is_public": True,
            "is_encypted": True
        }

        resp = self.controller.create(req, self.body, tenant_id, instance_id)

        instance_version = self.body["upgrade"]["instance_version"]
        location = self.body["upgrade"]["location"]
        metadata = self.body["upgrade"]["metadata"]

        UpgradeMessageSender.create.assert_called_once_with(
            context, instance_id, instance_version, location, metadata)
        self.assertEqual(202, resp.status)

    def test_controller_with_empty_metadata(self):
        """
        Test the mock controller with metadata
        """
        tenant_id = '77889991010'
        instance_id = '27e25b73-88a1-4526-b2b9-919a28b8b33f'
        context = Mock()

        req = Mock()
        req.environ = MagicMock()
        req.environ.get = Mock(return_value=context)

        send = Mock()
        UpgradeMessageSender.create = Mock(return_value=send)

        # append the body w/ empty metadata
        self.body["upgrade"]["metadata"] = {}

        resp = self.controller.create(req, self.body, tenant_id, instance_id)

        instance_version = self.body["upgrade"]['instance_version']
        location = self.body["upgrade"]["location"]
        metadata = self.body["upgrade"]["metadata"]

        UpgradeMessageSender.create.assert_called_once_with(
            context, instance_id, instance_version, location, metadata)
        self.assertEqual(202, resp.status)
Пример #6
0
class TestUpgradeController(trove_testtools.TestCase):

    def setUp(self):
        super(TestUpgradeController, self).setUp()
        self.controller = UpgradeController()

        self.body = {
            "upgrade": {
                "instance_id": "27e25b73-88a1-4526-b2b9-919a28b8b33f",
                "instance_version": "v1.0.1",
                "location": "http://swift/trove-guestagent-v1.0.1.tar.gz"}
        }

    def tearDown(self):
        super(TestUpgradeController, self).tearDown()
        self.body = {}

    def _get_validator(self, body):
        """
        Helper method to return a validator
        """
        schema = self.controller.get_schema('create', body)
        return jsonschema.Draft4Validator(schema)

    def test_validate_create(self):
        """
        Test for valid payload in body
        """
        validator = self._get_validator(self.body)
        self.assertTrue(validator.is_valid(self.body))

    def test_validate_create_additional_params(self):
        """
        Test for valid payload with additional params
        """
        self.body["upgrade"]["description"] = "upgrade"
        validator = self._get_validator(self.body)
        self.assertTrue(validator.is_valid(self.body))

    @patch.object(UpgradeMessageSender, 'create', Mock(return_value=Mock()))
    def test_controller_with_no_metadata(self):
        """
        Test the mock controller w/out metadata
        """
        tenant_id = '77889991010'
        instance_id = '27e25b73-88a1-4526-b2b9-919a28b8b33f'
        context = Mock()

        req = Mock()
        req.environ = MagicMock()
        req.environ.get = Mock(return_value=context)

        resp = self.controller.create(req, self.body, tenant_id, instance_id)

        instance_version = self.body["upgrade"]["instance_version"]
        location = self.body["upgrade"]["location"]

        metadata = None
        UpgradeMessageSender.create.assert_called_once_with(
            context, instance_id, instance_version, location, metadata)
        self.assertEqual(202, resp.status)

    @patch.object(UpgradeMessageSender, 'create', Mock(return_value=Mock()))
    def test_controller_with_metadata(self):
        """
        Test the mock controller with metadata
        """
        tenant_id = '77889991010'
        instance_id = '27e25b73-88a1-4526-b2b9-919a28b8b33f'
        context = Mock()

        req = Mock()
        req.environ = MagicMock()
        req.environ.get = Mock(return_value=context)

        # append the body w/ metadata
        self.body["upgrade"]["metadata"] = {
            "config_location": "swift://my.conf.location",
            "is_public": True,
            "is_encypted": True}

        resp = self.controller.create(req, self.body, tenant_id, instance_id)

        instance_version = self.body["upgrade"]["instance_version"]
        location = self.body["upgrade"]["location"]
        metadata = self.body["upgrade"]["metadata"]

        UpgradeMessageSender.create.assert_called_once_with(
            context, instance_id, instance_version, location, metadata)
        self.assertEqual(202, resp.status)

    @patch.object(UpgradeMessageSender, 'create', Mock(return_value=Mock()))
    def test_controller_with_empty_metadata(self):
        """
        Test the mock controller with metadata
        """
        tenant_id = '77889991010'
        instance_id = '27e25b73-88a1-4526-b2b9-919a28b8b33f'
        context = Mock()

        req = Mock()
        req.environ = MagicMock()
        req.environ.get = Mock(return_value=context)

        # append the body w/ empty metadata
        self.body["upgrade"]["metadata"] = {}

        resp = self.controller.create(req, self.body, tenant_id, instance_id)

        instance_version = self.body["upgrade"]['instance_version']
        location = self.body["upgrade"]["location"]
        metadata = self.body["upgrade"]["metadata"]

        UpgradeMessageSender.create.assert_called_once_with(
            context, instance_id, instance_version, location, metadata)
        self.assertEqual(202, resp.status)