summaryrefslogtreecommitdiffstats
path: root/testapi/testapi-client/testapiclient/cli/scenarios.py
diff options
context:
space:
mode:
Diffstat (limited to 'testapi/testapi-client/testapiclient/cli/scenarios.py')
-rw-r--r--testapi/testapi-client/testapiclient/cli/scenarios.py603
1 files changed, 603 insertions, 0 deletions
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)