def test_api_20_workflows(self):
        data_payload = {
            "name": "Graph.noop-example",
            "options": {
                "defaults": {
                    "graphOptions": {
                        "target": None
                    }
                }
            }
        }
        graph_uui = None

        api_data = test_common.taskgraphapi("/api/2.0/workflows", action="post", payload=data_payload)
        graph_uui = api_data['json']['context']['graphId']
        self.assertEqual(api_data['status'], 201,
                         'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))

        api_data = test_common.taskgraphapi("/api/2.0/workflows")
        self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
        for item in api_data['json']:
            # check required fields
            for subitem in ["id", "name","injectableName", "instanceId", "tasks", "context"]:
                self.assertIn(subitem, item, subitem + ' field error')


        api_data = test_common.taskgraphapi("/api/2.0/workflows/" + graph_uui, action="delete")
        self.assertEqual(api_data['status'], 403,
                         'Incorrect HTTP return code, expected 403, got:' + str(api_data['status']))
示例#2
0
    def test_api_20_tasks_bootstraps(self):
        node = {
            "identifiers": ["ff:ff:ff:ff:ff:ff"],
            "name": "NodeName",
            "relations": [],
            "tags": [],
            "type": "compute"
        }

        lookup = {
            "node": None,
            "macAddress": "ff:ff:ff:ff:ff:ff",
            "ipAddress": "127.0.0.1"
        }

        client = MongoClient('127.0.0.1', 27017)
        db = client.pxe

        insertedNode = db.nodes.insert(node)
        lookup["node"] = ObjectId(insertedNode)
        insertedLookup = db.lookups.insert(lookup)
        computeNode = db.nodes.find_one({"_id": insertedNode})
        mac = computeNode["identifiers"][0]

        #Expecting a valid content
        api_data = test_common.taskgraphapi("/api/2.0/tasks/bootstrap.js"+"?macAddress=" + mac)
        self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status']))
        self.assertNotEqual(api_data['text'], "Not Found", "Was expecting a valid content")

        # Expecting an invalid content
        api_data = test_common.taskgraphapi("/api/2.0/tasks/invalidContent"+"?macAddress=" + mac)
        self.assertEqual(api_data['status'], 404, "Was expecting code 404. Got " + str(api_data['status']))

        db.nodes.remove({"_id": insertedNode})
        db.lookups.remove({"_id": insertedLookup})
 def test_api_20_workflows_put_ipmi(self):
     data_payload = \
         {
             "friendlyName": "TestIPMI",
             "injectableName": 'Graph.Obm.Ipmi.CreateSettings.Test',
             "options": {
                 "obm-ipmi-task":{
                     "user": "******",
                     "password": "******"
                 }
             },
             "tasks": [
                 {
                     "label": "obm-ipmi-task",
                     "taskName": "Task.Obm.Ipmi.CreateSettings"
                 }
         ]
     }
     api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs",
                                         action="put",
                                         payload=data_payload)
     self.assertEqual(
         api_data['status'], 201,
         'Incorrect HTTP return code, expected 201, got:' +
         str(api_data['status']))
     api_data = test_common.taskgraphapi(
         "/api/2.0/workflows/graphs/" +
         'Graph.Obm.Ipmi.CreateSettings.Test')
     self.assertEqual(
         api_data['status'], 200,
         'Incorrect HTTP return code, expected 200, got:' +
         str(api_data['status']))
 def test_api_20_workflows_put_get_delete_tasks_WithInjectableName(self):
     api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks/Task.Linux.Commands.Hwtest", action="get")
     self.assertEqual(api_data['status'], 200,
                      'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
     api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks/Task.Linux.Commands.Hwtest", action="delete")
     self.assertEqual(api_data['status'], 204,
                      'Incorrect HTTP return code, expected 204, got:' + str(api_data['status']))
    def test_api_20_workflows_action(self):
        data_payload = {
            "name": "Graph.noop-example",
            "options": {
                "defaults": {
                    "graphOptions": {
                        "target": None
                    },
                    "delay":10000
                }
            }
        }
        cancel_payload = {
            "command":"cancel"
        }

        graph_uui = None
        api_data = test_common.taskgraphapi("/api/2.0/workflows", action="post", payload=data_payload)
        graph_uui = api_data['json']['context']['graphId']

        api_data = test_common.taskgraphapi("/api/2.0/workflows/"+graph_uui+"/action", action="put", payload=cancel_payload)
        self.assertEqual(api_data['status'], 202,
                         'Incorrect HTTP return code, expected 202, got:' + str(api_data['status']))
        api_data = test_common.taskgraphapi("/api/2.0/workflows/" + graph_uui , action="get")
        self.assertEqual(api_data['json']['_status'], "cancelled",
                         'Incorrect HTTP return code, expected cancelled, got:' + str(api_data['json']['_status']))
 def test_api_20_templates_library_ID_put_get_delete(self):
     # this test creates a dummy template called 'testid', checks it, then deletes it
     api_data = test_common.taskgraphapi("/api/2.0/templates/library/testid?scope=global", action="text-put", payload="null")
     self.assertEqual(api_data['status'], 201, "Was expecting code 201. Got " + str(api_data['status']))
     api_data = test_common.taskgraphapi("/api/2.0/templates/library/testid")
     self.assertEqual(api_data['text'], "null", "Data 'null' was not returned.")
     self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status']))
     api_data = test_common.taskgraphapi("/api/2.0/templates/library/testid", action="delete")
     self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status']))
 def test_api_20_templates_metadata_ID(self):
     api_data = test_common.taskgraphapi("/api/2.0/templates/metadata")
     self.assertEqual(api_data['status'], 200, "Was expecting code 200. Got " + str(api_data['status']))
     for item in api_data['json']:
         lib_data = test_common.taskgraphapi("/api/2.0/templates/metadata/" + item['name'])
         self.assertEqual(lib_data['status'], 200, "Was expecting code 200. Got " + str(lib_data['status']))
         # check required fields
         for subitem in ['hash', 'id', 'name', 'scope']:
             self.assertGreater(len(item[subitem]), 0, subitem + ' field error')
    def test_api_20_post_get_notification_progress(self):
        global task_uui
        data_payload = {
        }

        api_data = test_common.taskgraphapi(
            '/api/2.0/notification/progress?taskId=' + task_uui + '&maximum=100&value=10&description="Wsman requester"',
            action="post", payload=data_payload)
        self.assertEqual(api_data['status'], 200,
                         'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
        api_data = test_common.taskgraphapi(
            '/api/2.0/notification/progress?taskId=' + task_uui + '&maximum=100&value=10&description="Wsman requester"')
        self.assertEqual(api_data['status'], 200,
                         'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
 def test_api_20_profiles_metadata_ID(self):
     api_data = test_common.taskgraphapi("/api/2.0/profiles/metadata")
     self.assertEqual(
         api_data['status'], 200,
         "Was expecting code 200. Got " + str(api_data['status']))
     for item in api_data['json']:
         lib_data = test_common.taskgraphapi("/api/2.0/profiles/metadata/" +
                                             item['name'])
         self.assertEqual(
             lib_data['status'], 200,
             "Was expecting code 200. Got " + str(lib_data['status']))
         # check required fields
         for subitem in ['hash', 'id', 'name', 'scope']:
             self.assertGreater(len(item[subitem]), 0,
                                subitem + ' field error')
 def test_api_20_profiles_library_ID_put_get_delete(self):
     payload = "ddd"
     # this test creates a dummy template called 'testid', checks it, then deletes it
     api_data = test_common.taskgraphapi(
         "/api/2.0/profiles/library/testid?scope=global",
         action="text-put",
         payload="null")
     self.assertEqual(
         api_data['status'], 200,
         "Was expecting code 201. Got " + str(api_data['status']))
     api_data = test_common.taskgraphapi("/api/2.0/profiles/library/testid")
     self.assertEqual(api_data['text'], "null",
                      "Data 'null' was not returned.")
     self.assertEqual(
         api_data['status'], 200,
         "Was expecting code 200. Got " + str(api_data['status']))
示例#11
0
 def test_api_20_workflows(self):
     api_data = test_common.taskgraphapi("/api/2.0/workflows")
     self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
     for item in api_data['json']:
         # check required fields
         for subitem in ["id", "name","injectableName", "instanceId", "tasks"]:
             self.assertIn(subitem, item, subitem + ' field error')
    def test_api_20_notification(self):
        global  task_uui
        data_payload = {
        }

        api_workflow_data = test_common.taskgraphapi('/api/2.0/workflows')
        workflows=api_workflow_data['json']
        for workflow in workflows:
            if workflow["injectableName"]==self.workflow_name:
                tasks = workflow["tasks"]
                for task in tasks:
                    if tasks[task]["friendlyName"]==self.task_name :
                        task_uui = tasks[task]["instanceId"]

        api_data = test_common.taskgraphapi('/api/2.0/notification?taskId='+task_uui+'&maximum=100&value=10&description="Wsman requester"', action="post", payload=data_payload)
        self.assertEqual(api_data['status'], 201,
                         'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))
 def test_api_20_workflows_graphs_get(self):
     api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs")
     self.assertEqual(api_data['status'], 200,
                      'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
     for item in api_data['json']:
         # check required fields
         for subitem in ["friendlyName", "injectableName", "tasks"]:
             self.assertIn(subitem, item, subitem + ' field error')
示例#14
0
    def test_api_20_tasks_bootstraps(self):
        node = {
            "identifiers": ["ff:ff:ff:ff:ff:ff"],
            "name": "NodeName",
            "relations": [],
            "tags": [],
            "type": "compute"
        }

        lookup = {
            "node": None,
            "macAddress": "ff:ff:ff:ff:ff:ff",
            "ipAddress": "127.0.0.1"
        }

        client = MongoClient('127.0.0.1', 27017)
        db = client.pxe

        insertedNode = db.nodes.insert(node)
        lookup["node"] = ObjectId(insertedNode)
        insertedLookup = db.lookups.insert(lookup)
        computeNode = db.nodes.find_one({"_id": insertedNode})
        mac = computeNode["identifiers"][0]

        #Expecting a valid content
        api_data = test_common.taskgraphapi("/api/2.0/tasks/bootstrap.js" +
                                            "?macAddress=" + mac)
        self.assertEqual(
            api_data['status'], 200,
            "Was expecting code 200. Got " + str(api_data['status']))
        self.assertNotEqual(api_data['text'], "Not Found",
                            "Was expecting a valid content")

        # Expecting an invalid content
        api_data = test_common.taskgraphapi("/api/2.0/tasks/invalidContent" +
                                            "?macAddress=" + mac)
        self.assertEqual(
            api_data['status'], 404,
            "Was expecting code 404. Got " + str(api_data['status']))

        db.nodes.remove({"_id": insertedNode})
        db.lookups.remove({"_id": insertedLookup})
 def test_api_20_workflows_put_get_delete_tasks(self):
     data_payload = {
         "friendlyName": "Shell commands hwtest",
         "injectableName": "Task.Linux.Commands.Hwtest",
         "implementsTask": "Task.Base.Linux.Commands",
         "options": {
             "commands": [
                 {"command": "sudo /opt/test/hwtest",
                  "format": "json", "source": "hwtest"}
             ]
         },
         "properties": {"type": "hwtestRun"}
     }
     api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks", action="put", payload=data_payload)
     self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))
     api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks", action="get", payload=data_payload)
     self.assertEqual(api_data['status'], 200,'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
     for item in api_data['json']:
     # check required fields
         for subitem in ["friendlyName", "injectableName", "implementsTask", "options", "properties"]:
             self.assertIn(subitem, item, subitem + ' field error')
示例#16
0
 def test_api_20_workflows_put_ipmi(self):
     data_payload = \
         {
             "friendlyName": "TestIPMI",
             "injectableName": 'Graph.Obm.Ipmi.CreateSettings.Test',
             "options": {
                 "obm-ipmi-task":{
                     "user": "******",
                     "password": "******"
                 }
             },
             "tasks": [
                 {
                     "label": "obm-ipmi-task",
                     "taskName": "Task.Obm.Ipmi.CreateSettings"
                 }
         ]
     }
     api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs", action="put", payload=data_payload)
     self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))
     api_data = test_common.taskgraphapi("/api/2.0/workflows/graphs/" + 'Graph.Obm.Ipmi.CreateSettings.Test')
     self.assertEqual(api_data['status'], 200, 'Incorrect HTTP return code, expected 200, got:' + str(api_data['status']))
示例#17
0
 def test_api_20_workflows_tasks(self):
     data_payload = {
         "friendlyName": "Shell commands hwtest",
         "injectableName": "Task.Linux.Commands.Hwtest",
         "implementsTask": "Task.Base.Linux.Commands",
         "options": {
             "commands": [
                 {"command": "sudo /opt/test/hwtest",
                  "format": "json", "source": "hwtest"}
             ]
         },
         "properties": {"type": "hwtestRun"}
     }
     api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks", action="put", payload=data_payload)
     self.assertEqual(api_data['status'], 201, 'Incorrect HTTP return code, expected 201, got:' + str(api_data['status']))
示例#18
0
 def test_api_20_workflows_tasks(self):
     data_payload = {
         "friendlyName": "Shell commands hwtest",
         "injectableName": "Task.Linux.Commands.Hwtest",
         "implementsTask": "Task.Base.Linux.Commands",
         "options": {
             "commands": [{
                 "command": "sudo /opt/test/hwtest",
                 "format": "json",
                 "source": "hwtest"
             }]
         },
         "properties": {
             "type": "hwtestRun"
         }
     }
     api_data = test_common.taskgraphapi("/api/2.0/workflows/tasks",
                                         action="put",
                                         payload=data_payload)
     self.assertEqual(
         api_data['status'], 201,
         'Incorrect HTTP return code, expected 201, got:' +
         str(api_data['status']))
示例#19
0
 def test_api_20_tasks_identifier(self):
     api_data = test_common.taskgraphapi("/api/2.0/tasks/InvalidTaskID")
     self.assertEqual(api_data['status'], 404, "Was expecting code 404. Got " + str(api_data['status']))
 def setUp(self):
     # this clears out any existing instance of 'testid' template
     test_common.taskgraphapi("/api/2.0/profiles/library/testid",
                              action="delete")
示例#21
0
 def test_api_20_tasks_identifier(self):
     api_data = test_common.taskgraphapi("/api/2.0/tasks/InvalidTaskID")
     self.assertEqual(
         api_data['status'], 404,
         "Was expecting code 404. Got " + str(api_data['status']))
 def setUp(self):
     # this clears out any existing instance of 'testid' template
     test_common.taskgraphapi("/api/2.0/templates/library/testid", action="delete")