Add --active parameter to kingbird sync list.

Currently, python-kingbirdclient doesnt have the option
to list the active jobs.This change introduces a new option
to list the active jobs.
Added test-cases for the same.
Closes-Bug: #1694436

Change-Id: I8938cfa60558c1008614ae8a8472486c1896df34
This commit is contained in:
Goutham Pratapa 2017-05-30 18:55:18 +05:30
parent d0e23eac23
commit 7fdb84c9c6
3 changed files with 46 additions and 3 deletions

View File

@ -43,9 +43,11 @@ class sync_manager(base.ResourceManager):
url = '/%s/os-sync/' % tenant
return self.resource_sync_create(url, data)
def list_sync_jobs(self):
def list_sync_jobs(self, action=None):
tenant = self.http_client.project_id
url = '/%s/os-sync/' % tenant
if action:
url = '/%s/os-sync/%s' % (tenant, action)
return self._resource_sync_list(url)
def sync_job_detail(self, job_id):

View File

@ -148,9 +148,24 @@ class SyncList(base.KingbirdLister):
def _get_format_function(self):
return format
def get_parser(self, parsed_args):
parser = super(SyncList, self).get_parser(parsed_args)
parser.add_argument(
'--active',
action='store_true',
help='View the list of active jobs.'
)
return parser
def _get_resources(self, parsed_args):
active = parsed_args.active
action = None
kingbird_client = self.app.client_manager.sync_engine
return kingbird_client.sync_manager.list_sync_jobs()
if active:
action = 'active'
return kingbird_client.sync_manager.list_sync_jobs(action)
class SyncShow(base.KingbirdLister):

View File

@ -24,7 +24,8 @@ from kingbirdclient.tests import base
TIME_NOW = timeutils.utcnow().isoformat()
ID = uuidutils.generate_uuid()
ID_1 = uuidutils.generate_uuid()
FAKE_STATUS = 'IN_PROGRESS'
FAKE_STATUS = 'SUCCESS'
ACTIVE_FAKE_STATUS = 'IN_PROGRESS'
FAKE_RESOURCE = 'fake_item'
FAKE_SOURCE_REGION = 'fake_region_1'
FAKE_TARGET_REGION = 'fake_region_2'
@ -37,11 +38,23 @@ RESOURCE_DICT = {
'UPDATED_AT': TIME_NOW
}
ACTIVE_RESOURCE_DICT = {
'ID': ID,
'STATUS': ACTIVE_FAKE_STATUS,
'CREATED_AT': TIME_NOW,
'UPDATED_AT': TIME_NOW
}
SYNCMANAGER = sm.Resource(mock, id=RESOURCE_DICT['ID'],
status=RESOURCE_DICT['STATUS'],
created_at=RESOURCE_DICT['CREATED_AT'],
updated_at=RESOURCE_DICT['UPDATED_AT'])
ACTIVE_SYNCMANAGER = sm.Resource(mock, id=ACTIVE_RESOURCE_DICT['ID'],
status=ACTIVE_RESOURCE_DICT['STATUS'],
created_at=ACTIVE_RESOURCE_DICT['CREATED_AT'],
updated_at=ACTIVE_RESOURCE_DICT['UPDATED_AT'])
DETAIL_RESOURCE_DICT = {
'RESOURCE': FAKE_RESOURCE,
'SOURCE_REGION': FAKE_SOURCE_REGION,
@ -80,6 +93,19 @@ class TestCLISyncManagerV1(base.BaseCommandTest):
self.assertEqual((('<none>', '<none>', '<none>', '<none>'),),
actual_call[1])
def test_active_sync_jobs_list(self):
self.client.sync_manager.list_sync_jobs.\
return_value = [ACTIVE_SYNCMANAGER]
actual_call = self.call(sync_cmd.SyncList, app_args=['--active'])
self.assertEqual([(ID, ACTIVE_FAKE_STATUS, TIME_NOW, TIME_NOW)],
actual_call[1])
def test_active_sync_jobs_negative(self):
self.client.sync_manager.list_sync_jobs.\
return_value = [ACTIVE_SYNCMANAGER]
self.assertRaises(SystemExit, self.call,
sync_cmd.SyncList, app_args=['--fake'])
def test_delete_sync_job_with_job_id(self):
self.call(sync_cmd.SyncDelete, app_args=[ID])
self.client.sync_manager.delete_sync_job.\