def test_api_20_workflow_ucs_pollers(self): """ Tests the UCS Poller workflow in rackHD :return: """ data_payload = { "name": "Graph.Ucs.Discovery", "options": { "defaults": { "username": ucs_common.UCSM_USER, "password": ucs_common.UCSM_PASS, "ucs": ucs_common.UCSM_IP, "uri": ucs_common.UCS_SERVICE_URI }, "when-discover-physical-ucs": { "discoverPhysicalServers": "true", }, "when-discover-logical-ucs": { "discoverLogicalServer": "false" }, "when-catalog-ucs": { "autoCatalogUcs": "false" } } } header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) id = api_data["json"]["context"]["graphId"] status = ucs_common.wait_utility(str(id), 0, "Ucs Discovery") self.assertEqual(status, 'succeeded', 'Ucs Discovery graph returned status {}'.format(status)) self.get_ucs_node_list() errNodes = '' errGraphs = '' for node in self.NODELIST: postUrl = '/api/2.0/nodes/' + node + "/workflows?name=Graph.Ucs.Poller" header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi(postUrl, headers=header, action="post", payload={}) if api_data['status'] != 201: errNodes += 'POST for node {} returned {}, '.format(node, api_data['status']) status = ucs_common.wait_utility(api_data["json"]["instanceId"], 0, "Poller") if status != 'succeeded': errGraphs += 'graph id {} finished with status: {}, '.format(api_data["json"]["instanceId"], status) logs.info_1("Posted URL: {0} with status: {1}".format(postUrl, api_data['status'])) self.assertEqual(len(errNodes), 0, errNodes) self.assertEqual(len(errGraphs), 0, errGraphs)
def test_api_20_ucs_discover_and_catalog_all(self): """ Tests the UCS Discovery and Catalon All workflow in rackHD :return: """ # delete all previously discovered nodes and catalogs self.assertTrue(ucs_common.restore_node_utility(), "failed to restore nodes") self.assertTrue(ucs_common.restore_obms_utility(), "failed to restore obms") initialNodeCount = len(self.get_ucs_node_list()) expected_ucs_logical_nodes = ucs_common.get_service_profile_count() expected_ucs_physical_nodes = ucs_common.get_physical_server_count() data_payload = { "name": "Graph.Ucs.Discovery", "options": { "defaults": { "username": ucs_common.UCSM_USER, "password": ucs_common.UCSM_PASS, "ucs": ucs_common.UCSM_IP, "uri": ucs_common.UCS_SERVICE_URI }, "when-discover-physical-ucs": { "discoverPhysicalServers": "true", }, "when-discover-logical-ucs": { "discoverLogicalServer": "true" }, "when-catalog-ucs": { "autoCatalogUcs": "true" } } } header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) id = api_data["json"]["context"]["graphId"] self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) status = ucs_common.wait_utility(str(id), 0, "Discovery", 240) self.assertEqual(status, 'succeeded', 'Discovery graph returned status {}'.format(status)) newNodeCount = len(self.get_ucs_node_list()) logs.info_1("Found {0} Nodes after cataloging the UCS".format(len(api_data['json']))) self.assertEqual(newNodeCount - initialNodeCount, expected_ucs_physical_nodes + expected_ucs_logical_nodes, 'Expected to discover {0} UCS nodes, got: {1}' .format(expected_ucs_physical_nodes + expected_ucs_logical_nodes, newNodeCount - initialNodeCount))
def test_api_20_ucs_discovery(self): """ Tests the UCS Discovery workflow in rackHD :return: """ initialNodeCount = len(ucs_common.get_ucs_node_list()) data_payload = { "name": "Graph.Ucs.Discovery", "options": { "defaults": { "username": ucs_common.UCSM_USER, "password": ucs_common.UCSM_PASS, "ucs": ucs_common.UCSM_IP, "uri": ucs_common.UCS_SERVICE_URI }, "when-discover-logical-ucs": { "discoverLogicalServer": "false" } } } expected_ucs_physical_nodes = ucs_common.get_physical_server_count() header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) id = api_data["json"]["context"]["graphId"] self.assertEqual( api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) status = ucs_common.wait_utility(str(id), 0, "Discovery") self.assertEqual(status, 'succeeded', 'Discovery graph returned status {}'.format(status)) newNodeCount = len(ucs_common.get_ucs_node_list()) logs.info_1("Found {0} Nodes after cataloging the UCS".format( len(api_data['json']))) self.assertEqual( newNodeCount - initialNodeCount, expected_ucs_physical_nodes, 'Expected to discover {0} UCS nodes, got: {1}'.format( expected_ucs_physical_nodes, newNodeCount - initialNodeCount))
def test_api_20_ucs_discovery(self): """ Tests the UCS Discovery workflow in rackHD :return: """ initialNodeCount = len(ucs_common.get_ucs_node_list()) data_payload = { "name": "Graph.Ucs.Discovery", "options": { "defaults": { "username": ucs_common.UCSM_USER, "password": ucs_common.UCSM_PASS, "ucs": ucs_common.UCSM_IP, "uri": ucs_common.UCS_SERVICE_URI }, "when-discover-logical-ucs": { "discoverLogicalServer": "false" } } } expected_ucs_physical_nodes = ucs_common.get_physical_server_count() header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) id = api_data["json"]["context"]["graphId"] self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) status = ucs_common.wait_utility(str(id), 0, "Discovery") self.assertEqual(status, 'succeeded', 'Discovery graph returned status {}'.format(status)) newNodeCount = len(ucs_common.get_ucs_node_list()) logs.info_1("Found {0} Nodes after cataloging the UCS".format(len(api_data['json']))) self.assertEqual(newNodeCount - initialNodeCount, expected_ucs_physical_nodes, 'Expected to discover {0} UCS nodes, got: {1}' .format(expected_ucs_physical_nodes, newNodeCount - initialNodeCount))
def test_api_20_ucs_serviceProfile_discovery(self): """ Tests the UCS Service Profile Discovery workflow in rackHD :return: """ # delete all previously discovered nodes and catalogs self.assertTrue(ucs_common.restore_node_utility(), "failed to restore nodes") self.assertTrue(ucs_common.restore_obms_utility(), "failed to restore obms") expected_ucs_logical_nodes = ucs_common.get_service_profile_count() if (expected_ucs_logical_nodes == 0): raise unittest.SkipTest("No Service Profiles Defined") initialNodeCount = len(self.get_ucs_node_list()) data_payload = { "name": "Graph.Ucs.Discovery", "options": { "defaults": { "username": ucs_common.UCSM_USER, "password": ucs_common.UCSM_PASS, "ucs": ucs_common.UCSM_IP, "uri": ucs_common.UCS_SERVICE_URI }, "when-discover-physical-ucs": { "discoverPhysicalServers": "false", }, "when-discover-logical-ucs": { "discoverLogicalServer": "true" }, "when-catalog-ucs": { "autoCatalogUcs": "false" } } } header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) self.assertEqual( api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) id = api_data["json"]["context"]["graphId"] status = ucs_common.wait_utility(str(id), 0, "Service Profile Discovery") self.assertEqual( status, 'succeeded', 'Service Profile Discovery graph returned status {}'.format( status)) newNodeCount = len(self.get_ucs_node_list()) self.assertEqual( newNodeCount - initialNodeCount, expected_ucs_logical_nodes, 'Expected to discover {0} UCS nodes, got: {1}'.format( expected_ucs_logical_nodes, newNodeCount - initialNodeCount)) logs.info_1("Found {0} UCS nodes {1}".format( len(self.UCS_COMPUTE_NODES), self.UCS_COMPUTE_NODES)) # rerun discovery graph and verify duplicate nodes are not created api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) id = api_data["json"]["context"]["graphId"] self.assertEqual( api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) status = ucs_common.wait_utility(str(id), 0, "Service Profile Discovery") self.assertEqual( status, 'succeeded', 'Service Profile Discovery graph returned status {}'.format( status)) newNodeCount = len(self.get_ucs_node_list()) self.assertGreaterEqual( newNodeCount - initialNodeCount, 0, 'Expected to discover {0} UCS nodes, got: {1}'.format( 0, newNodeCount - initialNodeCount))
def test_api_20_workflow_ucs_catalogs(self): """ Tests the UCS Poller workflow in rackHD :return: """ data_payload = { "name": "Graph.Ucs.Discovery", "options": { "defaults": { "username": ucs_common.UCSM_USER, "password": ucs_common.UCSM_PASS, "ucs": ucs_common.UCSM_IP, "uri": ucs_common.UCS_SERVICE_URI }, "when-discover-physical-ucs": { "discoverPhysicalServers": "true", }, "when-discover-logical-ucs": { "discoverLogicalServer": "false" }, "when-catalog-ucs": { "autoCatalogUcs": "false" } } } header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) self.assertEqual( api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) id = api_data["json"]["context"]["graphId"] status = ucs_common.wait_utility(str(id), 0, "Ucs Discovery") self.assertEqual( status, 'succeeded', 'Ucs Discovery graph returned status {}'.format(status)) self.get_ucs_node_list() errNodes = '' errGraphs = '' for node in self.NODELIST: postUrl = '/api/2.0/nodes/' + node + "/workflows?name=Graph.Ucs.Catalog" header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi(postUrl, headers=header, action="post", payload={}) if api_data['status'] != 201: errNodes += 'POST for node {} returned {}, '.format( node, api_data['status']) status = ucs_common.wait_utility(api_data["json"]["instanceId"], 0, "Catalog") if status != 'succeeded': errGraphs += 'graph id {} finished with status: {}, '.format( api_data["json"]["instanceId"], status) logs.info_1("Posted URL: {0} with status: {1}".format( postUrl, api_data['status'])) self.assertEqual(len(errNodes), 0, errNodes) self.assertEqual(len(errGraphs), 0, errGraphs)
def test_api_20_ucs_serviceProfile_discovery(self): """ Tests the UCS Service Profile Discovery workflow in rackHD :return: """ # delete all previously discovered nodes and catalogs self.assertTrue(ucs_common.restore_node_utility(), "failed to restore nodes") self.assertTrue(ucs_common.restore_obms_utility(), "failed to restore obms") expected_ucs_logical_nodes = ucs_common.get_service_profile_count() if (expected_ucs_logical_nodes == 0): raise unittest.SkipTest("No Service Profiles Defined") initialNodeCount = len(self.get_ucs_node_list()) data_payload = { "name": "Graph.Ucs.Discovery", "options": { "defaults": { "username": ucs_common.UCSM_USER, "password": ucs_common.UCSM_PASS, "ucs": ucs_common.UCSM_IP, "uri": ucs_common.UCS_SERVICE_URI }, "when-discover-physical-ucs": { "discoverPhysicalServers": "false", }, "when-discover-logical-ucs": { "discoverLogicalServer": "true" }, "when-catalog-ucs": { "autoCatalogUcs": "false" } } } header = {"Content-Type": "application/json"} api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) id = api_data["json"]["context"]["graphId"] status = ucs_common.wait_utility(str(id), 0, "Service Profile Discovery") self.assertEqual(status, 'succeeded', 'Service Profile Discovery graph returned status {}'.format(status)) newNodeCount = len(self.get_ucs_node_list()) self.assertEqual(newNodeCount - initialNodeCount, expected_ucs_logical_nodes, 'Expected to discover {0} UCS nodes, got: {1}' .format(expected_ucs_logical_nodes, newNodeCount - initialNodeCount)) logs.info_1("Found {0} UCS nodes {1}".format(len(self.UCS_COMPUTE_NODES), self.UCS_COMPUTE_NODES)) # rerun discovery graph and verify duplicate nodes are not created api_data = fit_common.rackhdapi("/api/2.0/workflows", action="post", headers=header, payload=data_payload) id = api_data["json"]["context"]["graphId"] self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status'])) status = ucs_common.wait_utility(str(id), 0, "Service Profile Discovery") self.assertEqual(status, 'succeeded', 'Service Profile Discovery graph returned status {}'.format(status)) newNodeCount = len(self.get_ucs_node_list()) self.assertGreaterEqual(newNodeCount - initialNodeCount, 0, 'Expected to discover {0} UCS nodes, got: {1}' .format(0, newNodeCount - initialNodeCount))