Пример #1
0
    def test_get_one_with_parameters(self, mock_retrieve):
        # Setup
        p = manager_models.DeploymentPlan('a', 'n', 'd')
        p.add_parameters(
            manager_models.PlanParameter(
                name="Param 1", label="1", default=2, hidden=False,
                description="1", value=1, param_type='number', constraints=''),
            manager_models.PlanParameter(
                name="Param 2", label="2", default=['a', ], hidden=False,
                description="2", value=['a', 'b'],
                param_type='comma_delimited_list', constraints=''),
            manager_models.PlanParameter(
                name="Param 3", label="3", default={'a': 2}, hidden=False,
                description="3", value={'a': 1}, param_type='json',
                constraints=''),
        )
        mock_retrieve.return_value = p

        # Test
        url = URL_PLANS + '/' + 'qwerty12345'
        response = self.app.get(url)
        result = response.json

        # Verify
        mock_retrieve.assert_called_once_with('qwerty12345')
        self.assertEqual(response.status_int, 200)
        self.assertEqual(result['name'], 'n')
Пример #2
0
    def retrieve_plan(self, plan_uuid):
        """Loads the given plan.

        :type plan_uuid: str
        :rtype: tuskar.manager.models.DeploymentPlan
        :raises tuskar.storage.exceptions.UnknownUUID: if there is no plan
                with the given UUID
        """

        # Load the plan from the database.
        db_plan = self.plan_store.retrieve(plan_uuid)

        # Parse the plan into the template model.
        master_template = parser.parse_template(
            db_plan.master_template.contents)
        environment = parser.parse_environment(
            db_plan.environment_file.contents)

        # Create the Tuskar model for the plan.
        deployment_plan = models.DeploymentPlan(
            plan_uuid,
            db_plan.name,
            master_template.description,
            created_at=db_plan.created_at,
            updated_at=db_plan.updated_at,
        )

        roles = self._find_roles(environment)
        deployment_plan.add_roles(*roles)

        params = self._find_parameters(master_template, environment)
        deployment_plan.add_parameters(*params)

        return deployment_plan
Пример #3
0
    def test_get_all(self, mock_list):
        # Setup
        mock_list.return_value = [
            manager_models.DeploymentPlan('a', 'n1', 'd1'),
            manager_models.DeploymentPlan('b', 'n2', 'd2'),
        ]

        # Test
        response = self.app.get(URL_PLANS)
        result = response.json

        # Verify
        mock_list.assert_called_once()
        self.assertEqual(response.status_int, 200)
        self.assertTrue(isinstance(result, list))
        self.assertEqual(2, len(result))
        self.assertEqual(result[0]['name'], 'n1')
        self.assertEqual(result[1]['name'], 'n2')
Пример #4
0
    def test_get_one(self, mock_retrieve):
        # Setup
        p = manager_models.DeploymentPlan('a', 'n', 'd')
        mock_retrieve.return_value = p

        # Test
        url = URL_PLANS + '/' + 'qwerty12345'
        response = self.app.get(url)
        result = response.json

        # Verify
        mock_retrieve.assert_called_once_with('qwerty12345')
        self.assertEqual(response.status_int, 200)
        self.assertEqual(result['name'], 'n')
Пример #5
0
    def test_delete(self, mock_remove):
        # Setup
        p = manager_models.DeploymentPlan('a', 'n', 'd')
        mock_remove.return_value = p

        # Test
        response = self.app.delete_json(URL_PLAN_ROLES + '/role_uuid')
        result = response.json

        # Verify
        mock_remove.assert_called_once_with('plan_uuid', 'role_uuid')
        self.assertEqual(response.status_int, 200)
        self.assertEqual(result['uuid'], 'a')
        self.assertEqual(result['name'], 'n')
Пример #6
0
    def test_post(self, mock_add):
        # Setup
        p = manager_models.DeploymentPlan('a', 'n', 'd')
        mock_add.return_value = p

        # Test
        role_data = {'uuid': 'qwerty12345'}
        response = self.app.post_json(URL_PLAN_ROLES, params=role_data)
        result = response.json

        # Verify
        mock_add.assert_called_once_with('plan_uuid', 'qwerty12345')
        self.assertEqual(response.status_int, 201)
        self.assertEqual(result['uuid'], 'a')
        self.assertEqual(result['name'], 'n')
Пример #7
0
    def test_post(self, mock_create):
        # Setup
        p = manager_models.DeploymentPlan('a', 'n', 'd')
        mock_create.return_value = p

        # Test
        plan_data = {'name': 'new', 'description': 'desc'}
        response = self.app.post_json(URL_PLANS, params=plan_data)
        result = response.json

        # Verify
        mock_create.assert_called_once_with('new', 'desc')
        self.assertEqual(response.status_int, 201)
        self.assertEqual(result['uuid'], p.uuid)
        self.assertEqual(result['name'], p.name)
        self.assertEqual(result['description'], p.description)
Пример #8
0
    def test_patch(self, mock_set):
        # Setup
        p = manager_models.DeploymentPlan('a', 'n', 'd')
        mock_set.return_value = p

        # Test
        values = [{'name': 'foo', 'value': 'bar'}]
        url = URL_PLANS + '/' + 'qwerty12345'
        response = self.app.patch_json(url, values)
        result = response.json

        # Verify
        mock_set.assert_called_once()
        self.assertEqual(mock_set.call_args[0][0], 'qwerty12345')
        self.assertEqual(mock_set.call_args[0][1][0].name, 'foo')
        self.assertEqual(mock_set.call_args[0][1][0].value, 'bar')
        self.assertEqual(response.status_int, 201)
        self.assertEqual(result['name'], p.name)