def _provision_cluster(cluster_id): ctx = context.ctx() cluster = conductor.cluster_get(ctx, cluster_id) plugin = plugin_base.PLUGINS.get_plugin(cluster.plugin_name) # updating cluster infra cluster = conductor.cluster_update(ctx, cluster, {"status": "InfraUpdating"}) LOG.info(g.format_cluster_status(cluster)) plugin.update_infra(cluster) # creating instances and configuring them cluster = conductor.cluster_get(ctx, cluster_id) i.create_cluster(cluster) # configure cluster cluster = conductor.cluster_update(ctx, cluster, {"status": "Configuring"}) LOG.info(g.format_cluster_status(cluster)) plugin.configure_cluster(cluster) # starting prepared and configured cluster cluster = conductor.cluster_update(ctx, cluster, {"status": "Starting"}) LOG.info(g.format_cluster_status(cluster)) plugin.start_cluster(cluster) # cluster is now up and ready cluster = conductor.cluster_update(ctx, cluster, {"status": "Active"}) LOG.info(g.format_cluster_status(cluster)) # schedule execution pending job for cluster for je in conductor.job_execution_get_all(ctx, cluster_id=cluster.id): jm.run_job(ctx, je)
def _provision_cluster(cluster_id): ctx = context.ctx() cluster = conductor.cluster_get(ctx, cluster_id) plugin = plugin_base.PLUGINS.get_plugin(cluster.plugin_name) # updating cluster infra cluster = conductor.cluster_update(ctx, cluster, {"status": "InfraUpdating"}) LOG.info(g.format_cluster_status(cluster)) plugin.update_infra(cluster) # creating instances and configuring them cluster = conductor.cluster_get(ctx, cluster_id) i.create_cluster(cluster) # configure cluster cluster = conductor.cluster_update(ctx, cluster, {"status": "Configuring"}) LOG.info(g.format_cluster_status(cluster)) plugin.configure_cluster(cluster) # starting prepared and configured cluster cluster = conductor.cluster_update(ctx, cluster, {"status": "Starting"}) LOG.info(g.format_cluster_status(cluster)) plugin.start_cluster(cluster) # cluster is now up and ready cluster = conductor.cluster_update(ctx, cluster, {"status": "Active"}) LOG.info(g.format_cluster_status(cluster))
def test_cluster_creation_with_errors(self, novaclient): node_groups = [_make_ng_dict("test_group", "test_flavor", ["data node", "task tracker"], 2)] cluster = _create_cluster_mock(node_groups, []) nova = _create_nova_mock(novaclient) nova.servers.create.side_effect = [_mock_instance(1), MockException("test")] nova.servers.list = mock.MagicMock(return_value=[_mock_instance(1)]) with self.assertRaises(MockException): instances.create_cluster(cluster) ctx = context.ctx() cluster_obj = conductor.cluster_get_all(ctx)[0] self.assertEqual(len(cluster_obj.node_groups[0].instances), 0)
def _provision_cluster(cluster_id): ctx = context.ctx() cluster = conductor.cluster_get(ctx, cluster_id) plugin = plugin_base.PLUGINS.get_plugin(cluster.plugin_name) # updating cluster infra cluster = conductor.cluster_update(ctx, cluster, {"status": "InfraUpdating"}) LOG.info(g.format_cluster_status(cluster)) plugin.update_infra(cluster) # creating instances and configuring them cluster = conductor.cluster_get(ctx, cluster_id) i.create_cluster(cluster) # configure cluster cluster = conductor.cluster_update(ctx, cluster, {"status": "Configuring"}) LOG.info(g.format_cluster_status(cluster)) try: plugin.configure_cluster(cluster) except Exception as ex: LOG.exception("Can't configure cluster '%s' (reason: %s)", cluster.name, ex) conductor.cluster_update(ctx, cluster, {"status": "Error"}) LOG.info(g.format_cluster_status(cluster)) return # starting prepared and configured cluster cluster = conductor.cluster_update(ctx, cluster, {"status": "Starting"}) LOG.info(g.format_cluster_status(cluster)) try: plugin.start_cluster(cluster) except Exception as ex: LOG.exception("Can't start services for cluster '%s' (reason: %s)", cluster.name, ex) conductor.cluster_update(ctx, cluster, {"status": "Error"}) LOG.info(g.format_cluster_status(cluster)) return # cluster is now up and ready cluster = conductor.cluster_update(ctx, cluster, {"status": "Active"}) LOG.info(g.format_cluster_status(cluster)) # schedule execution pending job for cluster for je in conductor.job_execution_get_all(ctx, cluster_id=cluster.id): jm.run_job(je)
def test_cluster_creation_with_errors(self, novaclient): node_groups = [m.NodeGroup("test_group", "test_flavor", ["data node", "test tracker"], 2)] node_groups[0]._username = "******" cluster = _create_cluster_mock(node_groups, []) nova = _create_nova_mock(novaclient) nova.servers.create.side_effect = [_mock_instance(1), Exception("test")] nova.servers.list = mock.MagicMock(return_value=[_mock_instance(1)]) with self.assertRaises(Exception): instances.create_cluster(cluster) session = ctx.ctx().session with session.begin(): self.assertEqual(session.query(m.Instance).count(), 0)
def test_cluster_creation_with_errors(self, novaclient): node_groups = [ _make_ng_dict('test_group', 'test_flavor', ['data node', 'task tracker'], 2) ] cluster = _create_cluster_mock(node_groups, []) nova = _create_nova_mock(novaclient) nova.servers.create.side_effect = [ _mock_instance(1), MockException("test") ] nova.servers.list = mock.MagicMock(return_value=[_mock_instance(1)]) with self.assertRaises(MockException): instances.create_cluster(cluster) ctx = context.ctx() cluster_obj = conductor.cluster_get_all(ctx)[0] self.assertEqual(len(cluster_obj.node_groups[0].instances), 0)
def _provision_cluster(cluster_id): cluster = get_cluster(id=cluster_id) plugin = plugin_base.PLUGINS.get_plugin(cluster.plugin_name) # updating cluster infra context.model_update(cluster, status="InfraUpdating") plugin.update_infra(cluster) # creating instances and configuring them i.create_cluster(cluster) # configure cluster context.model_update(cluster, status="Configuring") plugin.configure_cluster(cluster) # starting prepared and configured cluster context.model_update(cluster, status="Starting") plugin.start_cluster(cluster) # cluster is now up and ready context.model_update(cluster, status="Active") return cluster