summaryrefslogtreecommitdiffstats
path: root/testapi/testapi-client/testapiclient/cli
diff options
context:
space:
mode:
Diffstat (limited to 'testapi/testapi-client/testapiclient/cli')
-rw-r--r--testapi/testapi-client/testapiclient/cli/deployresults.py98
-rw-r--r--testapi/testapi-client/testapiclient/cli/pods.py12
-rw-r--r--testapi/testapi-client/testapiclient/cli/projects.py15
-rw-r--r--testapi/testapi-client/testapiclient/cli/results.py97
-rw-r--r--testapi/testapi-client/testapiclient/cli/scenarios.py603
-rw-r--r--testapi/testapi-client/testapiclient/cli/testcases.py114
6 files changed, 929 insertions, 10 deletions
diff --git a/testapi/testapi-client/testapiclient/cli/deployresults.py b/testapi/testapi-client/testapiclient/cli/deployresults.py
new file mode 100644
index 0000000..1ca0bef
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/cli/deployresults.py
@@ -0,0 +1,98 @@
+import json
+
+from testapiclient.utils import command
+from testapiclient.utils import urlparse
+from testapiclient.models import deployresult
+
+
+def deployresults_url():
+ return urlparse.resource_join('deployresults')
+
+
+def deployresult_url(parsed_args):
+ return urlparse.path_join(deployresults_url(), parsed_args.deployresult_id)
+
+
+class DeployresultGet(command.Lister):
+
+ def get_parser(self, prog_name):
+ parser = super(DeployresultGet, self).get_parser(prog_name)
+ parser.add_argument('-build-id',
+ help='Search deployresults using build tag')
+ parser.add_argument('-from',
+ help='Search deployresults using from date')
+ parser.add_argument('-scenario',
+ help='Search deployresults using scenario')
+ parser.add_argument('-period',
+ help='Search deployresults using period')
+ parser.add_argument('-page',
+ help='Search deployresults using page')
+ parser.add_argument('-to',
+ help='Search deployresults using to')
+ parser.add_argument('---version',
+ help='Search deployresults using version')
+ parser.add_argument('-last',
+ help='Search deployresults using last date')
+ parser.add_argument('-pod-name',
+ help='Search deployresults using pod')
+ parser.add_argument('-criteria',
+ help='Search deployresults using version')
+ parser.add_argument('-installer',
+ help='Search deployresults using installer')
+ parser.add_argument('-job-name',
+ help='Search deployresults using project')
+
+ return parser
+
+ def take_action(self, parsed_args):
+ columns = (
+ '_id',
+ 'pod_name',
+ 'version',
+ 'criteria',
+ 'start_date',
+ 'stop_date',
+ 'scenario',
+ 'installer',
+
+ )
+ data = self.app.client_manager.get(
+ urlparse.query_by(deployresults_url(),
+ ['build_id', 'from', 'last',
+ 'scenario', 'period', 'job_name',
+ 'to', 'version',
+ 'criteria', 'installer', 'pod_name', 'page'],
+ parsed_args))
+ return self.format_output(columns, data.get('deployresults', []))
+
+
+class DeployresultGetOne(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(DeployresultGetOne, self).get_parser(prog_name)
+ parser.add_argument('deployresult_id',
+ help='Search deployresult by deployresult id')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.get(deployresult_url(parsed_args)))
+
+
+class DeployresultCreate(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(DeployresultCreate, self).get_parser(prog_name)
+ parser.add_argument('deployresult',
+ type=json.loads,
+ help='Deployresult create request format:\n'
+ '\'{}\''.format(json.dumps(
+ deployresult.DeployResultCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.post(
+ deployresults_url(), parsed_args.deployresult))
diff --git a/testapi/testapi-client/testapiclient/cli/pods.py b/testapi/testapi-client/testapiclient/cli/pods.py
index 8d0970b..a7706f6 100644
--- a/testapi/testapi-client/testapiclient/cli/pods.py
+++ b/testapi/testapi-client/testapiclient/cli/pods.py
@@ -1,7 +1,9 @@
import json
+from testapiclient.client import pods
from testapiclient.utils import command
from testapiclient.utils import urlparse
+from testapiclient.models import pods as pm
def pods_url():
@@ -60,15 +62,17 @@ class PodCreate(command.ShowOne):
parser.add_argument('pod',
type=json.loads,
help='Pod create request format :\n'
- '\'{"role": "", "name": "", "details": "", '
- '"mode": ""}\',\n role should be either '
+ '\'{}\''.format(json.dumps(
+ pm.PodCreateRequest().__dict__
+ )) +
+ '\n role should be either '
'"community-ci" or "production-ci", and '
'mode should be either "metal" or "virtual.')
return parser
def take_action(self, parsed_args):
- return self.format_output(
- self.app.client_manager.post(pods_url(), parsed_args.pod))
+ client = pods.PodsClient(client_manager=self.app.client_manager)
+ return self.format_output(client.create(parsed_args.pod))
class PodDelete(command.Command):
diff --git a/testapi/testapi-client/testapiclient/cli/projects.py b/testapi/testapi-client/testapiclient/cli/projects.py
index 510acc8..2fa5b5b 100644
--- a/testapi/testapi-client/testapiclient/cli/projects.py
+++ b/testapi/testapi-client/testapiclient/cli/projects.py
@@ -2,6 +2,7 @@ import json
from testapiclient.utils import command
from testapiclient.utils import urlparse
+from testapiclient.models import project
def projects_url():
@@ -51,9 +52,10 @@ class ProjectCreate(command.ShowOne):
parser = super(ProjectCreate, self).get_parser(prog_name)
parser.add_argument('project',
type=json.loads,
- help='Project create request format :{'
- ' "name": (required)"", '
- '"description": (optional)""}')
+ help='Project create request format :\n'
+ '\'{}\''.format(json.dumps(
+ project.ProjectCreateRequest().__dict__
+ )))
return parser
def take_action(self, parsed_args):
@@ -83,9 +85,10 @@ class ProjectPut(command.ShowOne):
help='Update project by name')
parser.add_argument('project',
type=json.loads,
- help='Project Update request format :{'
- '"name": (required)"", '
- '"description": (optional)""}')
+ help='Project Update request format :\n'
+ '\'{}\''.format(json.dumps(
+ project.ProjectCreateRequest().__dict__
+ )))
return parser
def take_action(self, parsed_args):
diff --git a/testapi/testapi-client/testapiclient/cli/results.py b/testapi/testapi-client/testapiclient/cli/results.py
new file mode 100644
index 0000000..5500501
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/cli/results.py
@@ -0,0 +1,97 @@
+import json
+
+from testapiclient.utils import command
+from testapiclient.utils import urlparse
+from testapiclient.models import result
+
+
+def results_url():
+ return urlparse.resource_join('results')
+
+
+def result_url(parsed_args):
+ return urlparse.path_join(results_url(), parsed_args.result_id)
+
+
+class ResultGet(command.Lister):
+
+ def get_parser(self, prog_name):
+ parser = super(ResultGet, self).get_parser(prog_name)
+ parser.add_argument('-case',
+ help='Search results using tesetcase')
+ parser.add_argument('-build-tag',
+ help='Search results using build tag')
+ parser.add_argument('-from',
+ help='Search results using from date')
+ parser.add_argument('-last',
+ help='Search results using last date')
+ parser.add_argument('-scenario',
+ help='Search results using scenario')
+ parser.add_argument('-period',
+ help='Search results using period')
+ parser.add_argument('-project',
+ help='Search results using project')
+ parser.add_argument('-to',
+ help='Search results using to')
+ parser.add_argument('---version',
+ help='Search results using version')
+ parser.add_argument('-criteria',
+ help='Search results using version')
+ parser.add_argument('-installer',
+ help='Search results using installer')
+ parser.add_argument('-pod',
+ help='Search results using pod')
+ parser.add_argument('-page',
+ help='Search results using page')
+ return parser
+
+ def take_action(self, parsed_args):
+ columns = (
+ '_id',
+ 'pod_name',
+ 'project_name',
+ 'case_name',
+ 'installer',
+ 'version',
+ 'scenario',
+ 'criteria',
+ 'start_date'
+ )
+ data = self.app.client_manager.get(
+ urlparse.query_by(results_url(),
+ ['case', 'build_tag', 'from', 'last',
+ 'scenario', 'period', 'project',
+ 'to', 'version',
+ 'criteria', 'installer', 'pod', 'page'],
+ parsed_args))
+ return self.format_output(columns, data.get('results', []))
+
+
+class ResultGetOne(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(ResultGetOne, self).get_parser(prog_name)
+ parser.add_argument('result_id',
+ help='Search result by result id')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.get(result_url(parsed_args)))
+
+
+class ResultCreate(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(ResultCreate, self).get_parser(prog_name)
+ parser.add_argument('result',
+ type=json.loads,
+ help='Result create request format:\n'
+ '\'{}\''.format(json.dumps(
+ result.ResultCreateRequest().__dict__)))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.post(
+ results_url(), parsed_args.result))
diff --git a/testapi/testapi-client/testapiclient/cli/scenarios.py b/testapi/testapi-client/testapiclient/cli/scenarios.py
new file mode 100644
index 0000000..197ee0c
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/cli/scenarios.py
@@ -0,0 +1,603 @@
+import json
+
+from testapiclient.utils import command
+from testapiclient.utils import urlparse
+from testapiclient.models import scenario
+
+
+def scenarios_url():
+ return urlparse.resource_join('scenarios')
+
+
+def scenario_url(parsed_args):
+ return urlparse.path_join(scenarios_url(), parsed_args.name)
+
+
+def resources_url(name, resuorce):
+ return urlparse.resource_join('scenarios', name, resuorce)
+
+
+class ScenarioGet(command.Lister):
+
+ def get_parser(self, prog_name):
+ parser = super(ScenarioGet, self).get_parser(prog_name)
+ parser.add_argument('-name',
+ help='Search scenarios using name')
+ parser.add_argument('-installer',
+ help='Search scenarios using installer')
+ parser.add_argument('---version',
+ help='Search scenarios using version')
+ parser.add_argument('-project',
+ help='Search scenarios using project')
+ return parser
+
+ def take_action(self, parsed_args):
+ columns = (
+ 'name',
+ '_id',
+ 'creator',
+ 'creation_date'
+ )
+ data = self.app.client_manager.get(
+ urlparse.query_by(scenarios_url(),
+ ['name', 'installer', 'version', 'project'],
+ parsed_args))
+ return self.format_output(columns, data.get('scenarios', []))
+
+
+class ScenarioGetOne(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(ScenarioGetOne, self).get_parser(prog_name)
+ parser.add_argument('name',
+ help='Search scenario by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.get(scenario_url(parsed_args)))
+
+
+class ScenarioCreate(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(ScenarioCreate, self).get_parser(prog_name)
+ parser.add_argument('scenario',
+ type=json.loads,
+ help='Scenario create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioCreateRequest(
+ ).__dict__
+ )) +
+ '\n Intaller create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioInstallerCreateRequest(
+ ).__dict__
+ )) +
+ '\n Version create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioVersionCreateRequest(
+ ).__dict__
+ )) +
+ '\n Project create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioProjectCreateRequest(
+ ).__dict__
+ )) +
+ '\n Custom create request format :\n'
+ '\'["asf","saf"]\',\n'
+ '\n Score create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioScoreCreateRequest(
+ ).__dict__
+ )) +
+ '\nTrustIndicator create request format:\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioTICreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.post(
+ scenarios_url(), parsed_args.scenario))
+
+
+class ScenarioDelete(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(ScenarioDelete, self).get_parser(prog_name)
+ parser.add_argument('name',
+ type=str,
+ help='Delete scenario by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.delete(scenario_url(parsed_args))
+
+
+class ScenarioPut(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(ScenarioPut, self).get_parser(prog_name)
+ parser.add_argument('name',
+ type=str,
+ help='Update scenario by name')
+ parser.add_argument('scenario',
+ type=json.loads,
+ help='Scenario create request format :\n' +
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioCreateRequest(
+ ).__dict__
+ )) +
+ '\n Intaller create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioInstallerCreateRequest(
+ ).__dict__
+ )) +
+ '\n Version create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioVersionCreateRequest(
+ ).__dict__
+ )) +
+ '\n Project create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioProjectCreateRequest(
+ ).__dict__
+ )) +
+ '\n Custom create request format :\n'
+ '\'["asf","saf"]\',\n'
+ '\n Score create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioScoreCreateRequest(
+ ).__dict__
+ )) +
+ '\nTrustIndicator create request format:\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioTICreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.put(
+ scenario_url(parsed_args), parsed_args.scenario))
+
+
+class InstallerCreate(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(InstallerCreate, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ required=True,
+ help='Create installer under scenario name')
+ parser.add_argument('installer',
+ type=json.loads,
+ help='Intaller create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioInstallerCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.post(
+ resources_url(
+ parsed_args.scenario_name,
+ 'installers'), parsed_args.installer)
+
+
+class InstallerDelete(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(InstallerDelete, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ required=True,
+ type=str,
+ help='Delete installer by scenario name')
+ parser.add_argument('name',
+ nargs='+',
+ help='Delete installer by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.delete(
+ resources_url(
+ parsed_args.scenario_name,
+ 'installers'), parsed_args.name)
+
+
+class InstallerPut(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(InstallerPut, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Update installer by scenario name')
+ parser.add_argument('installer',
+ type=json.loads,
+ help='Intaller create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioInstallerCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.put(
+ resources_url(
+ parsed_args.scenario_name,
+ 'installers'), parsed_args.installer)
+
+
+class VersionCreate(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(VersionCreate, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ required=True,
+ help='Create version under scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create version under scenario name')
+ parser.add_argument('version',
+ type=json.loads,
+ help='version create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioVersionCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.post(
+ urlparse.query_by(
+ resources_url(parsed_args.scenario_name, 'versions'),
+ 'installer',
+ parsed_args), parsed_args.version)
+
+
+class VersionDelete(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(VersionDelete, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ required=True,
+ type=str,
+ help='Delete version by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create version under scenario name')
+ parser.add_argument('name',
+ nargs='+',
+ help='Delete version by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.delete(
+ urlparse.query_by(
+ resources_url(parsed_args.scenario_name, 'versions'),
+ 'installer',
+ parsed_args), parsed_args.name)
+
+
+class VersionPut(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(VersionPut, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Update installer by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Update version under installer name')
+ parser.add_argument('version',
+ type=json.loads,
+ help='version update request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioVersionCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.put(
+ urlparse.query_by(
+ resources_url(parsed_args.scenario_name, 'versions'),
+ 'installer',
+ parsed_args), parsed_args.version)
+
+
+class VersionOwnerPut(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(VersionOwnerPut, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Update version by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Update version under scenario name')
+ parser.add_argument('--version',
+ required=True,
+ help='Update version under scenario name')
+ parser.add_argument('owner',
+ type=json.loads,
+ help='Intaller create request format :\n'
+ '\'{"owner": ""}\',\n')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.put(
+ urlparse.query_by(
+ resources_url(parsed_args.scenario_name, 'owner'),
+ ['installer', 'version'],
+ parsed_args), parsed_args.owner)
+
+
+class ProjectCreate(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(ProjectCreate, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Create project by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create project under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Create project under version name')
+ parser.add_argument('project',
+ type=json.loads,
+ help='Project create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioProjectCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.post(
+ urlparse.query_by(
+ resources_url(parsed_args.scenario_name, 'projects'),
+ ['installer', 'version'],
+ parsed_args), parsed_args.project)
+
+
+class ProjectDelete(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(ProjectDelete, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ required=True,
+ type=str,
+ help='Delete projects by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Delete projects under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Delete projects under version name')
+ parser.add_argument('name',
+ nargs='+',
+ help='Delete projects by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.delete(
+ urlparse.query_by(
+ resources_url(parsed_args.scenario_name, 'projects'),
+ ['installer', 'version'],
+ parsed_args), parsed_args.name)
+
+
+class ProjectPut(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(ProjectPut, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Update project by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Update project under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Update project under version name')
+ parser.add_argument('project',
+ type=json.loads,
+ help='Project update request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioProjectCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.put(
+ urlparse.query_by(
+ resources_url(parsed_args.scenario_name, 'projects'),
+ ['installer', 'version'],
+ parsed_args), parsed_args.project)
+
+
+class CustomCreate(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(CustomCreate, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Create custom by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create custom under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Create custom under version name')
+ parser.add_argument('--project',
+ required=True,
+ help='Create custom under project name')
+ parser.add_argument('custom',
+ nargs='+',
+ help='Space sperated strings')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.post(
+ urlparse.query_by(
+ resources_url(
+ parsed_args.scenario_name,
+ 'customs'),
+ ['installer', 'version', 'project'],
+ parsed_args),
+ parsed_args.custom)
+
+
+class CustomDelete(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(CustomDelete, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ required=True,
+ type=str,
+ help='Delete custom by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create custom under scenario name')
+ parser.add_argument('--version',
+ required=True,
+ help='Create custom under scenario name')
+ parser.add_argument('--project',
+ required=True,
+ help='Create custom under scenario name')
+ parser.add_argument('name',
+ nargs='+',
+ help='Delete custom by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.delete(
+ urlparse.query_by(
+ resources_url(
+ parsed_args.scenario_name,
+ 'customs'),
+ ['installer', 'version', 'project'],
+ parsed_args),
+ parsed_args.name)
+
+
+class CustomPut(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(CustomPut, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Update custom by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Update custom under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Update custom under version name')
+ parser.add_argument('--project',
+ required=True,
+ help='Update custom under project name')
+ parser.add_argument('custom',
+ nargs='+',
+ help='space sperated strings')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.put(
+ urlparse.query_by(
+ resources_url(
+ parsed_args.scenario_name,
+ 'customs'),
+ ['installer', 'version', 'project'],
+ parsed_args),
+ parsed_args.custom)
+
+
+class TrustIndicatorCreate(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(TrustIndicatorCreate, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Create trust indicator by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create trustindicator under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Create trust indicator under version name')
+ parser.add_argument('--project',
+ required=True,
+ help='Create trust indicator under project name')
+ parser.add_argument('trust_indicator',
+ type=json.loads,
+ help='trust indicator create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioTICreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ print parsed_args
+ return self.app.client_manager.post(
+ urlparse.query_by(
+ resources_url(
+ parsed_args.scenario_name,
+ 'trust_indicators'),
+ ['installer', 'version', 'project'],
+ parsed_args),
+ parsed_args.trust_indicator)
+
+
+class ScoreCreate(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(ScoreCreate, self).get_parser(prog_name)
+ parser.add_argument('--scenario-name',
+ type=str,
+ required=True,
+ help='Create score by scenario name')
+ parser.add_argument('--installer',
+ required=True,
+ help='Create score under installer name')
+ parser.add_argument('--version',
+ required=True,
+ help='Create score under version name')
+ parser.add_argument('--project',
+ required=True,
+ help='Create score under project name')
+ parser.add_argument('score',
+ type=json.loads,
+ help='score create request format :\n'
+ '\'{}\''.format(json.dumps(
+ scenario.ScenarioScoreCreateRequest(
+ ).__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.post(
+ urlparse.query_by(
+ resources_url(
+ parsed_args.scenario_name,
+ 'scores'),
+ ['installer', 'version', 'project'],
+ parsed_args),
+ parsed_args.score)
diff --git a/testapi/testapi-client/testapiclient/cli/testcases.py b/testapi/testapi-client/testapiclient/cli/testcases.py
new file mode 100644
index 0000000..3052c18
--- /dev/null
+++ b/testapi/testapi-client/testapiclient/cli/testcases.py
@@ -0,0 +1,114 @@
+import json
+
+from testapiclient.utils import command
+from testapiclient.utils import urlparse
+from testapiclient.models import testcase
+
+
+def testcases_url(name):
+ return urlparse.resource_join('projects', name, 'cases')
+
+
+def testcase_url(parsed_args):
+ return urlparse.path_join(
+ testcases_url(parsed_args.project_name), parsed_args.name)
+
+
+class TestcaseGet(command.Lister):
+
+ def get_parser(self, prog_name):
+ parser = super(TestcaseGet, self).get_parser(prog_name)
+ parser.add_argument('--project-name',
+ required=True,
+ help='Search testcases by project name')
+ return parser
+
+ def take_action(self, parsed_args):
+ columns = (
+ 'name',
+ '_id',
+ 'creator',
+ 'creation_date'
+ )
+ data = self.app.client_manager.get(
+ testcases_url(parsed_args.project_name))
+ return self.format_output(columns, data.get('testcases', []))
+
+
+class TestcaseGetOne(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(TestcaseGetOne, self).get_parser(prog_name)
+ parser.add_argument('--project-name',
+ required=True,
+ help='Search testcase by project name')
+ parser.add_argument('name',
+ help='Search testcase by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.get(testcase_url(parsed_args)))
+
+
+class TestcaseCreate(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(TestcaseCreate, self).get_parser(prog_name)
+ parser.add_argument('--project-name',
+ required=True,
+ help='Create testcase under project name')
+ parser.add_argument('testcase',
+ type=json.loads,
+ help='Testcase create request format:\n'
+ '\'{}\''.format(json.dumps(
+ testcase.TestCaseCreateRequest().__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.post(
+ testcases_url(parsed_args.project_name), parsed_args.testcase))
+
+
+class TestcaseDelete(command.Command):
+
+ def get_parser(self, prog_name):
+ parser = super(TestcaseDelete, self).get_parser(prog_name)
+ parser.add_argument('--project-name',
+ required=True,
+ type=str,
+ help='Delete testcase by project name')
+ parser.add_argument('name',
+ type=str,
+ help='Delete testcase by name')
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.app.client_manager.delete(testcase_url(parsed_args))
+
+
+class TestcasePut(command.ShowOne):
+
+ def get_parser(self, prog_name):
+ parser = super(TestcasePut, self).get_parser(prog_name)
+ parser.add_argument('--project-name',
+ type=str,
+ required=True,
+ help='Update testcase by project name')
+ parser.add_argument('name',
+ type=str,
+ help='Update testcase by name')
+ parser.add_argument('testcase',
+ type=json.loads,
+ help='Testcase Update request format:\n'
+ '\'{}\''.format(json.dumps(
+ testcase.TestCaseCreateRequest().__dict__
+ )))
+ return parser
+
+ def take_action(self, parsed_args):
+ return self.format_output(
+ self.app.client_manager.put(
+ testcase_url(parsed_args), parsed_args.testcase))