Example #1
0
    def test_add_cluster_templates_update_failed(self, reverse_updates, reverse_creates, cl_update):
        self.logger.clear_log()
        ctx = context.ctx()

        cl_update.side_effect = Exception("mistake")

        # Create a record that will be updated in the db
        existing = copy.copy(c.SAMPLE_CLT)
        existing = self.api.cluster_template_create(ctx, existing)

        # Create the update
        update = copy.copy(c.SAMPLE_CLT)
        update["hadoop_version"] = "1"

        # Create a record that will be new in the db
        new = copy.copy(c.SAMPLE_CLT)
        new["name"] = "new_name"

        clts = [{"template": new, "path": "bar"}, {"template": update, "path": "foo"}]

        error = template_api.add_cluster_templates(ctx, clts, {})
        new = self.api.cluster_template_get_all(ctx, name=new["name"])[0]
        self.assertTrue(error)
        self.assertEqual(1, reverse_creates.call_count)

        # call should have been (ctx, [new])
        self.assertEqual(new["id"], reverse_creates.call_args[0][1][0]["id"])

        self.assertEqual(1, reverse_updates.call_count)
        msg = "Update of cluster template {info} failed, mistake".format(info=u.name_and_id(existing))
        self.assertIn(msg, self.logger.warnings)

        self.api.cluster_template_destroy(ctx, new["id"], ignore_default=True)
        self.api.cluster_template_destroy(ctx, existing["id"], ignore_default=True)
Example #2
0
    def test_add_cluster_templates(self):
        self.logger.clear_log()
        ctx = context.ctx()

        # Create a record that will be updated in the db
        existing = copy.copy(c.SAMPLE_CLT)
        existing = self.api.cluster_template_create(ctx, existing)

        # Create the update
        update = copy.copy(c.SAMPLE_CLT)
        update["hadoop_version"] = "1"

        # Create a record that will be new in the db
        new = copy.copy(c.SAMPLE_CLT)
        new["name"] = "new_name"

        clts = [{"template": update, "path": "foo"}, {"template": new, "path": "bar"}]

        error = template_api.add_cluster_templates(ctx, clts, {})
        self.assertFalse(error)

        new = self.api.cluster_template_get_all(ctx, name=new["name"])[0]
        self.assertIsNotNone(new)

        msg = "Created cluster template {info} from bar".format(info=u.name_and_id(new))
        self.assertIn(msg, self.logger.infos)

        msg = "Updated cluster template {info} from foo".format(info=u.name_and_id(existing))
        self.assertIn(msg, self.logger.infos)

        self.api.cluster_template_destroy(ctx, new["id"], ignore_default=True)
        self.api.cluster_template_destroy(ctx, existing["id"], ignore_default=True)
Example #3
0
    def test_add_cluster_templates_create_failed(self, reverse_updates,
                                                 reverse_creates, cl_create):
        self.logger.clear_log()
        ctx = context.ctx()

        cl_create.side_effect = Exception("mistake")

        # Create a record that will be updated in the db
        existing = copy.copy(c.SAMPLE_CLT)
        existing = self.api.cluster_template_create(ctx, existing)

        # Create the update
        update = copy.copy(c.SAMPLE_CLT)
        update["hadoop_version"] = "1"

        # Create a record that will be new in the db
        new = copy.copy(c.SAMPLE_CLT)
        new["name"] = "new_name"

        clts = [{
            "template": update,
            "path": "foo"
        }, {
            "template": new,
            "path": "bar"
        }]

        error = template_api.add_cluster_templates(ctx, clts, {})
        self.assertTrue(error)
        self.assertEqual(1, reverse_creates.call_count)
        self.assertEqual(1, reverse_updates.call_count)

        # call should have been (ctx, [(existing, updated_fields)])
        # updated fields will contain hadoop_version and node_groups,
        # since node_groups is modified by the conductor
        updated_fields = reverse_updates.call_args[0][1][0][1]
        self.assertEqual(updated_fields["hadoop_version"],
                         existing["hadoop_version"])
        self.assertIn("node_groups", updated_fields)

        msg = "Creation of cluster template from bar failed, mistake"
        self.assertIn(msg, self.logger.warnings)

        self.api.cluster_template_destroy(ctx,
                                          existing["id"],
                                          ignore_prot_on_def=True)
Example #4
0
    def test_add_cluster_templates_update_failed(self, reverse_updates,
                                                 reverse_creates, cl_update):
        self.logger.clear_log()
        ctx = context.ctx()

        cl_update.side_effect = Exception("mistake")

        # Create a record that will be updated in the db
        existing = copy.copy(c.SAMPLE_CLT)
        existing = self.api.cluster_template_create(ctx, existing)

        # Create the update
        update = copy.copy(c.SAMPLE_CLT)
        update["hadoop_version"] = "1"

        # Create a record that will be new in the db
        new = copy.copy(c.SAMPLE_CLT)
        new["name"] = "new_name"

        clts = [{
            "template": new,
            "path": "bar"
        }, {
            "template": update,
            "path": "foo"
        }]

        error = template_api.add_cluster_templates(ctx, clts, {})
        new = self.api.cluster_template_get_all(ctx, name=new["name"])[0]
        self.assertTrue(error)
        self.assertEqual(1, reverse_creates.call_count)

        # call should have been (ctx, [new])
        self.assertEqual(new["id"], reverse_creates.call_args[0][1][0]["id"])

        self.assertEqual(1, reverse_updates.call_count)
        msg = ("Update of cluster template {info} failed, mistake".format(
            info=u.name_and_id(existing)))
        self.assertIn(msg, self.logger.warnings)

        self.api.cluster_template_destroy(ctx,
                                          new["id"],
                                          ignore_prot_on_def=True)
        self.api.cluster_template_destroy(ctx,
                                          existing["id"],
                                          ignore_prot_on_def=True)
Example #5
0
    def test_add_cluster_templates(self):
        self.logger.clear_log()
        ctx = context.ctx()

        # Create a record that will be updated in the db
        existing = copy.copy(c.SAMPLE_CLT)
        existing = self.api.cluster_template_create(ctx, existing)

        # Create the update
        update = copy.copy(c.SAMPLE_CLT)
        update["hadoop_version"] = "1"

        # Create a record that will be new in the db
        new = copy.copy(c.SAMPLE_CLT)
        new["name"] = "new_name"

        clts = [{
            "template": update,
            "path": "foo"
        }, {
            "template": new,
            "path": "bar"
        }]

        error = template_api.add_cluster_templates(ctx, clts, {})
        self.assertFalse(error)

        new = self.api.cluster_template_get_all(ctx, name=new["name"])[0]
        self.assertIsNotNone(new)

        msg = ("Created cluster template {info} from bar".format(
            info=u.name_and_id(new)))
        self.assertIn(msg, self.logger.infos)

        msg = ("Updated cluster template {info} from foo".format(
            info=u.name_and_id(existing)))
        self.assertIn(msg, self.logger.infos)

        self.api.cluster_template_destroy(ctx,
                                          new["id"],
                                          ignore_prot_on_def=True)
        self.api.cluster_template_destroy(ctx,
                                          existing["id"],
                                          ignore_prot_on_def=True)
Example #6
0
    def test_add_cluster_templates_create_failed(self,
                                                 reverse_updates,
                                                 reverse_creates,
                                                 cl_create):
        self.logger.clear_log()
        ctx = context.ctx()

        cl_create.side_effect = Exception("mistake")

        # Create a record that will be updated in the db
        existing = copy.copy(c.SAMPLE_CLT)
        existing = self.api.cluster_template_create(ctx, existing)

        # Create the update
        update = copy.copy(c.SAMPLE_CLT)
        update["hadoop_version"] = "1"

        # Create a record that will be new in the db
        new = copy.copy(c.SAMPLE_CLT)
        new["name"] = "new_name"

        clts = [{"template": update, "path": "foo"},
                {"template": new, "path": "bar"}]

        error = template_api.add_cluster_templates(ctx, clts, {})
        self.assertTrue(error)
        reverse_creates.assert_called_once()
        reverse_updates.assert_called_once()

        # call should have been (ctx, [(existing, updated_fields)])
        # updated fields will contain hadoop_version and node_groups,
        # since node_groups is modified by the conductor
        updated_fields = reverse_updates.call_args[0][1][0][1]
        self.assertEqual(updated_fields["hadoop_version"],
                         existing["hadoop_version"])
        self.assertIn("node_groups", updated_fields)

        msg = "Creation of cluster template from bar failed, mistake"
        self.assertIn(msg, self.logger.warnings)

        self.api.cluster_template_destroy(ctx, existing["id"],
                                          ignore_default=True)