Add api bindings for datasource request-request trigger

Change-Id: Ib045e0a92fdfba454bda5e48531091a56656b289
This commit is contained in:
Aaron Rosen 2015-03-31 14:13:29 -07:00
parent b520516b87
commit 8c31d3fa29
5 changed files with 54 additions and 0 deletions

5
NEWS
View File

@ -1,3 +1,8 @@
1.0.4 - XXXX-XX-XX
------------------
- Add new CLI command to trigger a datasource to poll
- congress datasource request-refresh Trigger a datasource to poll.
1.0.3 - 2015-03-30
------------------

View File

@ -279,3 +279,25 @@ class DeleteDatasource(command.Command):
datasource_id = utils.get_resource_id_from_name(
parsed_args.datasource, results)
client.delete_datasource(datasource_id)
class DatasourceRequestRefresh(command.Command):
"""Trigger a datasource to poll."""
log = logging.getLogger(__name__ + '.DatasourceRequestRefresh')
def get_parser(self, prog_name):
parser = super(DatasourceRequestRefresh, self).get_parser(prog_name)
parser.add_argument(
'datasource',
metavar="<datasource-name>",
help="Name of the datasource to poll")
return parser
def take_action(self, parsed_args):
self.log.debug('take_action(%s)' % parsed_args)
client = self.app.client_manager.congressclient
results = client.list_datasources()
datasource_id = utils.get_resource_id_from_name(
parsed_args.datasource, results)
client.request_refresh(datasource_id, {})

View File

@ -264,3 +264,23 @@ class TestDeleteDatasourceDriver(common.TestCongressBase):
result = cmd.take_action(parsed_args)
mocker.assert_called_with("id")
self.assertEqual(None, result)
class TestDatasourceRequestRefresh(common.TestCongressBase):
def test_datasource_request_refresh(self):
driver = 'neutronv2'
arglist = [driver]
verifylist = [('datasource', driver), ]
mocker = mock.Mock(return_value=None)
self.app.client_manager.congressclient.request_refresh = mocker
self.app.client_manager.congressclient.list_datasources = mock.Mock()
cmd = datasource.DatasourceRequestRefresh(self.app, self.namespace)
parsed_args = self.check_parser(cmd, arglist, verifylist)
with mock.patch.object(utils, "get_resource_id_from_name",
return_value="id"):
result = cmd.take_action(parsed_args)
mocker.assert_called_with("id", {})
self.assertEqual(None, result)

View File

@ -175,3 +175,9 @@ class Client(object):
resp, body = self.httpclient.get(self.driver_path %
(driver))
return body
def request_refresh(self, driver, body=None):
resp, body = self.httpclient.post(self.datasource_path %
(driver) + "?action=request-refresh",
body=body)
return body

View File

@ -42,6 +42,7 @@ openstack.congressclient.v1 =
congress_datasource_list = congressclient.osc.v1.datasource:ListDatasources
congress_datasource_create = congressclient.osc.v1.datasource:CreateDatasource
congress_datasource_delete = congressclient.osc.v1.datasource:DeleteDatasource
congress_datasource_request-refresh = congressclient.osc.v1.datasource:DatasourceRequestRefresh
congress_datasource_table_list = congressclient.osc.v1.datasource:ListDatasourceTables
congress_datasource_row_list = congressclient.osc.v1.datasource:ListDatasourceRows
congress_datasource_status_show = congressclient.osc.v1.datasource:ShowDatasourceStatus