def test_parse_v20(self): res = ucs.parse(getpath('../tests/response/clispec-sample-2.0.xml')) self.assertEqual('svc', res.array_type) self.assertEqual([('svc', '6.3')], res.array_infos) self.assertEqual(['CMMV', 'EFFSG', 'EFFST'], res.errors) self.assertEqual(sorted(['for_test2', 'for_test3', 'sainfo', 'satask', 'svcinfo', 'svcinfo_0', 'svcinfo_1', 'svctask', 'svctask_0', 'svctask_1']), sorted(dir(res))) cmd_lscluster = res.svcinfo.lscluster self.assertEqual(['filtervalue', 'nohdr', 'bytes', 'delim', 'filtervalue_0', 'cluster_id_or_name'], list(cmd_lscluster.params.keys())) self.assertEqual('filtervalue_0', cmd_lscluster.params[ 'filtervalue_0'].name) self.assertEqual( '-filtervalue?', cmd_lscluster.params['filtervalue_0'].realname) self.assertEqual(False, cmd_lscluster.params[ 'cluster_id_or_name'].with_name) self.assertEqual(True, cmd_lscluster.params[ 'cluster_id_or_name'].with_value) cmd_mkhost = res.svctask.mkhost self.assertEqual(['name', 'hbawwpn', 'iscsiname', 'iogrp', 'mask', 'force', 'type'], list(cmd_mkhost.params.keys())) self.assertEqual(['hbawwpn', 'iscsiname'], [ p.name for p in cmd_mkhost.param_choices[0].params]) self.assertEqual(True, cmd_mkhost.param_choices[0].required) self.assertEqual(False, cmd_mkhost.params['iogrp'].required) self.assertEqual(True, cmd_mkhost.params['force'].with_name) self.assertEqual(False, cmd_mkhost.params['force'].with_value) self.assertEqual(['hpux', 'tpgs', 'generic'], cmd_mkhost.params['type'].options)
def test_parse_empty_param_name(self): self.assertRaisesEx(ucs.CLISpecError, ucs.parse, StringIO(SPEC_EMPTY_PARAM_NAME)) expect_ = ucs.parse(StringIO(SPEC_EMPTY_PARAM_NAME), flexible=True) self.assertEqual( 5, len(expect_.cmds['svcinfo'].cmds['lscluster'].params)) self.assertEqual(0, len(expect_.cmds['svcinfo'].cmds[ 'lscluster'].param_choices))
def test_parse_v20_cmd(self): res = ucs.parse(getpath('../tests/response/clispec-sample-2.0.xml')) cmd = res.svcinfo.lscluster self.assertEqual(ucs.SVCCommand, type(cmd)) self.assertTrue(ucr.is_svc_response(cmd.resp_helper)) expect_ = r'''Help on lscluster(**kwargs): Returns a concise list or a detailed view of a cluster. >>- svcinfo -- -- lscluster -- --> >-- It is wrapper for CLI "svcinfo lscluster". Parameters: filtervalue: nohdr: bytes: delim: filtervalue_0: cluster_id_or_name:''' self.assertEqual(expect_, cmd.__doc__) cmd = res.svctask.mkhost self.assertEqual(ucs.SVCCommand, type(cmd)) self.assertTrue(ucr.is_svc_response(cmd.resp_helper)) cmd = res.for_test2.cmd1 self.assertEqual(ucs.CLICommand, type(cmd)) self.assertEqual(None, cmd.resp_helper) self.assertEqual(['optiontype', 'optiontype_0', 'force', 'noforce'], list(cmd.params.keys())) self.assertEqual( 'for_test2 cmd1 --optiontype?? o1', cmd(nothing, { 'optiontype': 'o1', 'xsf.check_return_code': False })) self.assertEqual( 'for_test2 cmd1 --optiontype tryonce', cmd(nothing, { 'optiontype_0': 'tryonce', 'xsf.check_return_code': False })) self.assertRaisesEx(ucs.CLISpecError, cmd, nothing, dict(optiontype_0='bad')) cmd = res.for_test3 self.assertEqual(ucs.CLICommand, type(cmd)) self.assertEqual(None, cmd.resp_helper) self.assertEqual(['network', 'interface', 'g', 'force'], list(cmd.params.keys())) self.assertEqual( 'for_test3 n1 inf1 -g g1 --force %s' % ucs.show_return_code_if_fail(), cmd(nothing, dict(network='n1', interface='inf1', g='g1', force=None))) self.assertRaisesEx(ucs.CLISpecError, cmd, nothing, dict(interface='inf1', g='g1'))
def test_cmd_input(self): res = ucs.parse(getpath('../tests/response/svc-6.3.xml')) cmd = res.svcinfo.lsnode self.assertEqual(ucs.SVCCommand, type(cmd)) self.assertTrue(ucr.is_svc_response(cmd.resp_helper)) self.assertEqual('svcinfo lsnode -delim , 1 %s' % ucs.show_return_code_if_fail(), cmd(nothing, dict(object='1'))) self.assertEqual('svcinfo lsnode -delim , 1 %s' % ucs.show_return_code_if_fail(), cmd(nothing, {'object': '1', 'xsf.ignore': '1'})) self.assertEqual('svcinfo lsnode -delim , 1 %s' % ucs.show_return_code_if_fail(), cmd(nothing, {'object': '1', 'badparam': '1', 'xsf.flexible': True})) self.assertRaisesEx(ucs.CLISpecError, cmd, nothing, dict(object='1', badparam='1'))
def test_parse_svc_5_1(self): res = ucs.parse(getpath('../tests/response/svc-5.1.xml')) self.assertEqual('svc', res.array_type) self.assertEqual([('svc', '5.1')], res.array_infos) self.assertEqual(['CMMV', 'EFFSG', 'EFFST'], res.errors) self.assertEqual(sorted(['svcservicemodeinfo', 'svcservicemodetask', 'svcinfo', 'svctask']), sorted(dir(res))) self.assertEqual(14, len(dir(res.svcservicemodeinfo))) self.assertEqual(6, len(dir(res.svcservicemodetask))) self.assertEqual(88, len(dir(res.svcinfo))) self.assertEqual(122, len(dir(res.svctask))) self.assertEqual(ucr.SVCResponse, res.svcinfo.lscluster.resp_helper) self.assertEqual(['-filtervalue', '-nohdr', '-bytes', '-delim', 'cluster', 'cluster_id', 'cluster_name'], [v.realname for _, v in res.svcinfo.lscluster.params.items()]) self.assertEqual(ucr.SVCResponse, res.svctask.mkmdiskgrp.resp_helper)
def test_parse_empty_cmd_name(self): self.assertRaisesEx(ucs.CLISpecError, ucs.parse, StringIO(SPEC_EMPTY_CMD_NAME)) expect_ = ucs.parse(StringIO(SPEC_EMPTY_CMD_NAME), flexible=True) self.assertFalse(expect_.cmds['svcinfo'].cmds)
def test_parse_no_cmd_name(self): self.assertRaisesEx(ucs.CLISpecError, ucs.parse, StringIO(SPEC_NO_CMD_NAME)) expect_ = ucs.parse(StringIO(SPEC_NO_CMD_NAME), flexible=True) self.assertTrue(expect_.cmds['svcinfo'].cmds['lscluster'])
def test_parse_no_exe_name(self): self.assertRaisesEx(ucs.CLISpecError, ucs.parse, StringIO(SPEC_NO_EXE_NAME)) expect_ = ucs.parse(StringIO(SPEC_NO_EXE_NAME), flexible=True) self.assertFalse(expect_.cmds)
def test_parse_no_error(self): res = ucs.parse(StringIO(SPEC_NO_ERROR)) self.assertEqual([''], res.errors)
def test_parse_no_array_type(self): self.assertRaisesEx(ucs.CLISpecError, ucs.parse, StringIO(SPEC_NO_ARRAY_TYPE)) expect_ = ucs.parse(StringIO(SPEC_NO_ARRAY_TYPE), flexible=True) self.assertTrue(expect_.cmds)
def test_parse_no_version(self): self.assertRaisesEx(ucs.CLISpecError, ucs.parse, StringIO(SPEC_NO_VERSION)) expect_ = ucs.parse(StringIO(SPEC_NO_VERSION), flexible=True) self.assertTrue(expect_.cmds)
def parse_cli_spec(conn, source): spec = parse(source, flexible=conn.flexible) # make sure there is CLI command defined in CLI spec return spec if spec and spec.cmds else None