diff --git a/watcherclient/tests/v1/test_audit_shell.py b/watcherclient/tests/v1/test_audit_shell.py index 94a29a0..4692da3 100644 --- a/watcherclient/tests/v1/test_audit_shell.py +++ b/watcherclient/tests/v1/test_audit_shell.py @@ -49,6 +49,7 @@ AUDIT_1 = { 'updated_at': None, 'deleted_at': None, 'parameters': None, + 'interval': None, } AUDIT_2 = { @@ -62,6 +63,21 @@ AUDIT_2 = { 'updated_at': None, 'deleted_at': None, 'parameters': None, + 'interval': None, +} + +AUDIT_3 = { + 'uuid': '43199d0e-0712-1213-9674-5ae2af8dhgte', + 'deadline': None, + 'audit_type': 'CONTINUOUS', + 'audit_template_uuid': 'f8e47706-efcf-49a4-a5c4-af604eb492f2', + 'audit_template_name': 'at1', + 'state': 'PENDING', + 'created_at': datetime.datetime.now().isoformat(), + 'updated_at': None, + 'deleted_at': None, + 'parameters': None, + 'interval': 3600, } @@ -297,3 +313,21 @@ class AuditShellTest(base.CommandTestCase): audit_template_uuid='f8e47706-efcf-49a4-a5c4-af604eb492f2', audit_type='ONESHOT', parameters={'para1': 10, 'para2': 20}) + + def test_do_audit_create_with_type_continuous(self): + audit = resource.Audit(mock.Mock(), AUDIT_3) + audit_template = resource.AuditTemplate(mock.Mock(), AUDIT_TEMPLATE_1) + self.m_audit_template_mgr.get.return_value = audit_template + self.m_audit_mgr.create.return_value = audit + + exit_code, result = self.run_cmd( + 'audit create -a at1 -t CONTINUOUS -i 3600') + + self.assertEqual(0, exit_code) + self.assertEqual( + self.resource_as_dict(audit, self.FIELDS, self.FIELD_LABELS), + result) + self.m_audit_mgr.create.assert_called_once_with( + audit_template_uuid='f8e47706-efcf-49a4-a5c4-af604eb492f2', + audit_type='CONTINUOUS', + interval='3600') diff --git a/watcherclient/v1/audit.py b/watcherclient/v1/audit.py index 0dd7aaa..2d467ae 100644 --- a/watcherclient/v1/audit.py +++ b/watcherclient/v1/audit.py @@ -18,8 +18,9 @@ from watcherclient.common import base from watcherclient.common import utils from watcherclient import exceptions as exc -CREATION_ATTRIBUTES = ['audit_template_uuid', 'deadline', 'audit_type', - 'parameters'] + +CREATION_ATTRIBUTES = ['audit_template_uuid', 'deadline', + 'audit_type', 'parameters', 'interval'] class Audit(base.Resource): diff --git a/watcherclient/v1/audit_shell.py b/watcherclient/v1/audit_shell.py index 5f81bc0..295b034 100644 --- a/watcherclient/v1/audit_shell.py +++ b/watcherclient/v1/audit_shell.py @@ -139,13 +139,20 @@ class CreateAudit(command.ShowOne): action='append', help=_("Record strategy parameter/value metadata. " "Can be specified multiple times.")) + parser.add_argument( + '-i', '--interval', + dest='interval', + metavar='', + help=_("Audit interval.")) return parser def take_action(self, parsed_args): client = getattr(self.app.client_manager, "infra-optim") - field_list = ['audit_template_uuid', 'audit_type', 'deadline', - 'parameters'] + + field_list = ['audit_template_uuid', 'audit_type', + 'deadline', 'parameters', 'interval'] + fields = dict((k, v) for (k, v) in vars(parsed_args).items() if k in field_list and v is not None) fields = common_utils.args_array_to_dict(fields, 'parameters') diff --git a/watcherclient/v1/resource_fields.py b/watcherclient/v1/resource_fields.py index d796137..b5ecc14 100644 --- a/watcherclient/v1/resource_fields.py +++ b/watcherclient/v1/resource_fields.py @@ -35,11 +35,11 @@ AUDIT_TEMPLATE_SHORT_LIST_FIELD_LABELS = ['UUID', 'Name', 'Goal', 'Strategy'] # Audit AUDIT_FIELDS = ['uuid', 'created_at', 'updated_at', 'deleted_at', 'deadline', 'state', 'audit_type', 'audit_template_uuid', - 'audit_template_name', 'parameters'] + 'audit_template_name', 'parameters', 'interval'] AUDIT_FIELD_LABELS = ['UUID', 'Created At', 'Updated At', 'Deleted At', 'Deadline', 'State', 'Audit Type', 'Audit Template uuid', - 'Audit Template Name', 'Parameters'] + 'Audit Template Name', 'Parameters', 'Interval'] AUDIT_SHORT_LIST_FIELDS = [ 'uuid', 'audit_type', 'audit_template_name', 'state']