def setup_poll_test(self, mock_driver, mock_openstack_client, cfg, mock_retrieve_cluster_template): cfg.CONF.cluster_heat.max_attempts = 10 worker_ng = mock.MagicMock(uuid='worker_ng', role='worker') master_ng = mock.MagicMock(uuid='master_ng', role='master') nodegroups = [worker_ng, master_ng] cluster = mock.MagicMock(nodegroups=nodegroups, default_ng_worker=worker_ng, default_ng_master=master_ng) cluster_template_dict = utils.get_test_cluster_template( coe='kubernetes') mock_heat_stack = mock.MagicMock() mock_heat_client = mock.MagicMock() mock_heat_client.stacks.get.return_value = mock_heat_stack mock_openstack_client.heat.return_value = mock_heat_client cluster_template = objects.ClusterTemplate(self.context, **cluster_template_dict) mock_retrieve_cluster_template.return_value = cluster_template mock_driver.return_value = k8s_atomic_dr.Driver() poller = heat_driver.HeatPoller(mock_openstack_client, mock.MagicMock(), cluster, k8s_atomic_dr.Driver()) poller.get_version_info = mock.MagicMock() return (mock_heat_stack, cluster, poller)
def setUp(self): super(TestHandler, self).setUp() self.handler = cluster_conductor.Handler() cluster_template_dict = utils.get_test_cluster_template() self.cluster_template = objects.ClusterTemplate( self.context, **cluster_template_dict) self.cluster_template.create() cluster_dict = utils.get_test_cluster(node_count=1) self.cluster = objects.Cluster(self.context, **cluster_dict) self.cluster.create()
def get_test_cluster_template(context, **kw): """Return a ClusterTemplate object with appropriate attributes. NOTE: The object leaves the attributes marked as changed, such that a create() could be used to commit it to the DB. """ db_cluster_template = db_utils.get_test_cluster_template(**kw) cluster_template = objects.ClusterTemplate(context) # Let DB generate ID if it isn't specified explicitly if 'id' not in kw: del db_cluster_template['id'] for key in db_cluster_template: setattr(cluster_template, key, db_cluster_template[key]) return cluster_template
def setup_poll_test(self, mock_openstack_client, cfg, mock_retrieve_cluster_template): cfg.CONF.cluster_heat.max_attempts = 10 cluster = mock.MagicMock() cluster_template_dict = utils.get_test_cluster_template( coe='kubernetes') mock_heat_stack = mock.MagicMock() mock_heat_client = mock.MagicMock() mock_heat_client.stacks.get.return_value = mock_heat_stack mock_openstack_client.heat.return_value = mock_heat_client cluster_template = objects.ClusterTemplate(self.context, **cluster_template_dict) mock_retrieve_cluster_template.return_value = cluster_template poller = cluster_conductor.HeatPoller(mock_openstack_client, cluster) poller.get_version_info = mock.MagicMock() return (mock_heat_stack, cluster, poller)
def setup_poll_test(self, mock_driver, mock_openstack_client, cfg, mock_retrieve_cluster_template): cfg.CONF.cluster_heat.max_attempts = 10 cluster = mock.MagicMock() cluster_template_dict = utils.get_test_cluster_template( coe='kubernetes') mock_heat_stack = mock.MagicMock() mock_heat_client = mock.MagicMock() mock_heat_client.stacks.get.return_value = mock_heat_stack mock_openstack_client.heat.return_value = mock_heat_client cluster_template = objects.ClusterTemplate(self.context, **cluster_template_dict) mock_retrieve_cluster_template.return_value = cluster_template mock_driver.return_value = k8s_atomic_dr.Driver() poller = cluster_conductor.HeatPoller(mock_openstack_client, cluster, k8s_atomic_dr.Driver()) poller.get_version_info = mock.MagicMock() return (mock_heat_stack, cluster, poller)
def setUp(self): super(TestHandler, self).setUp() self.handler = cluster_conductor.Handler() cluster_template_dict = utils.get_test_cluster_template() self.cluster_template = objects.ClusterTemplate( self.context, **cluster_template_dict) self.cluster_template.create() self.cluster_dict = utils.get_test_cluster(node_count=1) self.nodegroups_dict = utils.get_nodegroups_for_cluster(node_count=1) del self.nodegroups_dict['master']['id'] del self.nodegroups_dict['worker']['id'] self.cluster = objects.Cluster(self.context, **self.cluster_dict) self.master_count = self.cluster.master_count self.node_count = self.cluster.node_count self.cluster.create() self.master = objects.NodeGroup(self.context, **self.nodegroups_dict['master']) self.worker = objects.NodeGroup(self.context, **self.nodegroups_dict['worker'])
def setUp(self): super(TestHandler, self).setUp() self.handler = cluster_conductor.Handler() cluster_template_dict = utils.get_test_cluster_template() self.cluster_template = objects.ClusterTemplate( self.context, **cluster_template_dict) self.cluster_template.create() self.cluster_dict = utils.get_test_cluster(node_count=1) self.nodegroups_dict = utils.get_nodegroups_for_cluster( node_count=1) del self.nodegroups_dict['master']['id'] del self.nodegroups_dict['worker']['id'] self.cluster = objects.Cluster(self.context, **self.cluster_dict) self.master_count = self.cluster.master_count self.node_count = self.cluster.node_count self.cluster.create() self.master = objects.NodeGroup( self.context, **self.nodegroups_dict['master']) self.worker = objects.NodeGroup( self.context, **self.nodegroups_dict['worker'])
def setUp(self): super(MonitorsTestCase, self).setUp() self.requests_mock = self.useFixture(fixture.Fixture()) cluster = utils.get_test_cluster(node_addresses=['1.2.3.4'], api_address='https://5.6.7.8:2376', master_addresses=['10.0.0.6'], labels={}) self.cluster = objects.Cluster(self.context, **cluster) cluster_template = (utils.get_test_cluster_template( master_lb_enabled=False)) self.cluster.cluster_template = (objects.ClusterTemplate( self.context, **cluster_template)) nodegroups = utils.get_nodegroups_for_cluster( node_addresses=['1.2.3.4'], master_addresses=['10.0.0.6']) self.nodegroups = [ objects.NodeGroup(self.context, **nodegroups['master']), objects.NodeGroup(self.context, **nodegroups['worker']) ] self.monitor = swarm_monitor.SwarmMonitor(self.context, self.cluster) self.v2_monitor = swarm_v2_monitor.SwarmMonitor( self.context, self.cluster) self.k8s_monitor = k8s_monitor.K8sMonitor(self.context, self.cluster) self.mesos_monitor = mesos_monitor.MesosMonitor( self.context, self.cluster) p = mock.patch( 'magnum.drivers.swarm_fedora_atomic_v1.monitor.' 'SwarmMonitor.metrics_spec', new_callable=mock.PropertyMock) self.mock_metrics_spec = p.start() self.mock_metrics_spec.return_value = self.test_metrics_spec self.addCleanup(p.stop) p2 = mock.patch( 'magnum.drivers.swarm_fedora_atomic_v2.monitor.' 'SwarmMonitor.metrics_spec', new_callable=mock.PropertyMock) self.mock_metrics_spec_v2 = p2.start() self.mock_metrics_spec_v2.return_value = self.test_metrics_spec self.addCleanup(p2.stop)
def test_get_cluster_list_with_filters(self): ct1 = utils.get_test_cluster_template(id=1, uuid=uuidutils.generate_uuid()) ct2 = utils.get_test_cluster_template(id=2, uuid=uuidutils.generate_uuid()) self.dbapi.create_cluster_template(ct1) self.dbapi.create_cluster_template(ct2) cluster1 = utils.create_test_cluster( name='cluster-one', uuid=uuidutils.generate_uuid(), cluster_template_id=ct1['uuid'], status=cluster_status.CREATE_IN_PROGRESS) cluster2 = utils.create_test_cluster( name='cluster-two', uuid=uuidutils.generate_uuid(), cluster_template_id=ct2['uuid'], node_count=1, master_count=1, status=cluster_status.UPDATE_IN_PROGRESS) cluster3 = utils.create_test_cluster( name='cluster-three', node_count=2, master_count=5, status=cluster_status.DELETE_IN_PROGRESS) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct1['uuid']}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct2['uuid']}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'cluster-one'}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'bad-cluster'}) self.assertEqual([], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) filters = {'status': [cluster_status.CREATE_IN_PROGRESS, cluster_status.DELETE_IN_PROGRESS]} res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual([cluster1.id, cluster3.id], [r.id for r in res])
def setUp(self): super(TestClusterTemplateObject, self).setUp() self.fake_cluster_template = utils.get_test_cluster_template()
def setup_poll_test(self, mock_driver, mock_openstack_client, cfg, mock_retrieve_cluster_template, default_stack_status=None, status_reason=None, stack_params=None, stack_missing=False): cfg.CONF.cluster_heat.max_attempts = 10 if default_stack_status is None: default_stack_status = cluster_status.CREATE_COMPLETE cluster = mock.MagicMock(nodegroups=list()) def_worker = self._create_nodegroup(cluster, 'worker_ng', 'stack1', name='worker_ng', role='worker', is_default=True, stack_status=default_stack_status, status_reason=status_reason, stack_params=stack_params, stack_missing=stack_missing) def_master = self._create_nodegroup(cluster, 'master_ng', 'stack1', name='master_ng', role='master', is_default=True, stack_status=default_stack_status, status_reason=status_reason, stack_params=stack_params, stack_missing=stack_missing) cluster.default_ng_worker = def_worker cluster.default_ng_master = def_master self.def_ngs = [def_worker, def_master] def get_ng_stack(stack_id, resolve_outputs=False): try: return self.mock_stacks[stack_id] except KeyError: # In this case we intentionally didn't add the stack # to the mock_stacks dict to simulte a not found error. # For this reason raise heat NotFound exception. raise heatexc.NotFound("stack not found") cluster_template_dict = utils.get_test_cluster_template( coe='kubernetes') mock_heat_client = mock.MagicMock() mock_heat_client.stacks.get = get_ng_stack mock_openstack_client.heat.return_value = mock_heat_client cluster_template = objects.ClusterTemplate(self.context, **cluster_template_dict) mock_retrieve_cluster_template.return_value = cluster_template mock_driver.return_value = k8s_atomic_dr.Driver() poller = heat_driver.HeatPoller(mock_openstack_client, mock.MagicMock(), cluster, k8s_atomic_dr.Driver()) poller.get_version_info = mock.MagicMock() return (cluster, poller)
def test_get_cluster_list_with_filters(self): ct1 = utils.get_test_cluster_template(id=1, uuid=uuidutils.generate_uuid()) ct2 = utils.get_test_cluster_template(id=2, uuid=uuidutils.generate_uuid()) self.dbapi.create_cluster_template(ct1) self.dbapi.create_cluster_template(ct2) cluster1 = utils.create_test_cluster( name='cluster-one', uuid=uuidutils.generate_uuid(), cluster_template_id=ct1['uuid'], status=cluster_status.CREATE_IN_PROGRESS) cluster2 = utils.create_test_cluster( name='cluster-two', uuid=uuidutils.generate_uuid(), cluster_template_id=ct2['uuid'], node_count=1, master_count=1, status=cluster_status.UPDATE_IN_PROGRESS) cluster3 = utils.create_test_cluster( name='cluster-three', node_count=2, master_count=5, status=cluster_status.DELETE_IN_PROGRESS) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct1['uuid']}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct2['uuid']}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'cluster-one'}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'bad-cluster'}) self.assertEqual([], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) filters = { 'status': [ cluster_status.CREATE_IN_PROGRESS, cluster_status.DELETE_IN_PROGRESS ] } res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual([cluster1.id, cluster3.id], [r.id for r in res])
def test_get_cluster_list_with_filters(self): ct1 = utils.get_test_cluster_template(id=1, uuid=uuidutils.generate_uuid()) ct2 = utils.get_test_cluster_template(id=2, uuid=uuidutils.generate_uuid()) self.dbapi.create_cluster_template(ct1) self.dbapi.create_cluster_template(ct2) uuid1 = uuidutils.generate_uuid() cluster1 = utils.create_test_cluster( name='cluster-one', uuid=uuid1, cluster_template_id=ct1['uuid'], status=cluster_status.CREATE_IN_PROGRESS) utils.create_nodegroups_for_cluster(cluster_id=uuid1) uuid2 = uuidutils.generate_uuid() cluster2 = utils.create_test_cluster( name='cluster-two', uuid=uuid2, cluster_template_id=ct2['uuid'], status=cluster_status.UPDATE_IN_PROGRESS) utils.create_nodegroups_for_cluster(cluster_id=uuid2, node_count=1, master_count=1) cluster3 = utils.create_test_cluster( name='cluster-three', status=cluster_status.DELETE_IN_PROGRESS) utils.create_nodegroups_for_cluster(node_count=2, master_count=5) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct1['uuid']}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct2['uuid']}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'cluster-one'}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'bad-cluster'}) self.assertEqual([], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) # Check that both filters have to be valid filters = {'master_count': 1, 'node_count': 1} res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual([cluster2.id], [r.id for r in res]) filters = {'master_count': 1, 'node_count': 2} res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual(0, len(res)) filters = { 'status': [ cluster_status.CREATE_IN_PROGRESS, cluster_status.DELETE_IN_PROGRESS ] } res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual([cluster1.id, cluster3.id], [r.id for r in res])
def test_get_cluster_list_with_filters(self): ct1 = utils.get_test_cluster_template(id=1, uuid=uuidutils.generate_uuid()) ct2 = utils.get_test_cluster_template(id=2, uuid=uuidutils.generate_uuid()) self.dbapi.create_cluster_template(ct1) self.dbapi.create_cluster_template(ct2) uuid1 = uuidutils.generate_uuid() cluster1 = utils.create_test_cluster( name='cluster-one', uuid=uuid1, cluster_template_id=ct1['uuid'], status=cluster_status.CREATE_IN_PROGRESS) utils.create_nodegroups_for_cluster(cluster_id=uuid1) uuid2 = uuidutils.generate_uuid() cluster2 = utils.create_test_cluster( name='cluster-two', uuid=uuid2, cluster_template_id=ct2['uuid'], status=cluster_status.UPDATE_IN_PROGRESS) utils.create_nodegroups_for_cluster( cluster_id=uuid2, node_count=1, master_count=1) cluster3 = utils.create_test_cluster( name='cluster-three', status=cluster_status.DELETE_IN_PROGRESS) utils.create_nodegroups_for_cluster( node_count=2, master_count=5) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct1['uuid']}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list( self.context, filters={'cluster_template_id': ct2['uuid']}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'cluster-one'}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'name': 'bad-cluster'}) self.assertEqual([], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'node_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 3}) self.assertEqual([cluster1.id], [r.id for r in res]) res = self.dbapi.get_cluster_list(self.context, filters={'master_count': 1}) self.assertEqual([cluster2.id], [r.id for r in res]) # Check that both filters have to be valid filters = {'master_count': 1, 'node_count': 1} res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual([cluster2.id], [r.id for r in res]) filters = {'master_count': 1, 'node_count': 2} res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual(0, len(res)) filters = {'status': [cluster_status.CREATE_IN_PROGRESS, cluster_status.DELETE_IN_PROGRESS]} res = self.dbapi.get_cluster_list(self.context, filters=filters) self.assertEqual([cluster1.id, cluster3.id], [r.id for r in res])
def cluster_template_post_data(**kw): cluster_template = utils.get_test_cluster_template(**kw) internal = cluster_tmp_ctrl.ClusterTemplatePatchType.internal_attrs() return remove_internal(cluster_template, internal)
def baymodel_post_data(**kw): baymodel = utils.get_test_cluster_template(**kw) internal = baymodel_controller.BayModelPatchType.internal_attrs() return remove_internal(baymodel, internal)
def test_get_bay_list_with_filters(self): ct1 = utils.get_test_cluster_template(id=1, uuid=uuidutils.generate_uuid()) ct2 = utils.get_test_cluster_template(id=2, uuid=uuidutils.generate_uuid()) self.dbapi.create_cluster_template(ct1) self.dbapi.create_cluster_template(ct2) bay1 = utils.create_test_bay( name='bay-one', uuid=uuidutils.generate_uuid(), baymodel_id=ct1['uuid'], status=bay_status.CREATE_IN_PROGRESS) bay2 = utils.create_test_bay( name='bay-two', uuid=uuidutils.generate_uuid(), baymodel_id=ct2['uuid'], node_count=1, master_count=1, status=bay_status.UPDATE_IN_PROGRESS) bay3 = utils.create_test_bay( name='bay-three', node_count=2, master_count=5, status=bay_status.DELETE_IN_PROGRESS) res = self.dbapi.get_bay_list(self.context, filters={'baymodel_id': ct1['uuid']}) self.assertEqual([bay1.id], [r.id for r in res]) res = self.dbapi.get_bay_list(self.context, filters={'baymodel_id': ct2['uuid']}) self.assertEqual([bay2.id], [r.id for r in res]) res = self.dbapi.get_bay_list(self.context, filters={'name': 'bay-one'}) self.assertEqual([bay1.id], [r.id for r in res]) res = self.dbapi.get_bay_list(self.context, filters={'name': 'bad-bay'}) self.assertEqual([], [r.id for r in res]) res = self.dbapi.get_bay_list(self.context, filters={'node_count': 3}) self.assertEqual([bay1.id], [r.id for r in res]) res = self.dbapi.get_bay_list(self.context, filters={'node_count': 1}) self.assertEqual([bay2.id], [r.id for r in res]) res = self.dbapi.get_bay_list(self.context, filters={'master_count': 3}) self.assertEqual([bay1.id], [r.id for r in res]) res = self.dbapi.get_bay_list(self.context, filters={'master_count': 1}) self.assertEqual([bay2.id], [r.id for r in res]) filters = {'status': [bay_status.CREATE_IN_PROGRESS, bay_status.DELETE_IN_PROGRESS]} res = self.dbapi.get_bay_list(self.context, filters=filters) self.assertEqual([bay1.id, bay3.id], [r.id for r in res])