Make end date optional for list-entities command
Change-Id: I2e1969d4922f4922ece2a7a63aa38949848e52dc
This commit is contained in:
		| @@ -25,12 +25,12 @@ class ListEntityCommand(Lister): | ||||
|         parser = super().get_parser(prog_name) | ||||
|         parser.add_argument('tenant_id', help='Tenant ID') | ||||
|         parser.add_argument('start', help='Start Date') | ||||
|         parser.add_argument('end', help='End Date') | ||||
|         parser.add_argument('--end', help='End Date') | ||||
|         return parser | ||||
|  | ||||
|     def take_action(self, parsed_args): | ||||
|         start = parser.parse(parsed_args.start) | ||||
|         end = parser.parse(parsed_args.end) | ||||
|         end = parser.parse(parsed_args.end) if parsed_args.end else None | ||||
|         entities = self.app.get_client().get_tenant_entities(parsed_args.tenant_id, start, end) | ||||
|         return self.columns, self._format_rows(entities) | ||||
|  | ||||
|   | ||||
| @@ -86,7 +86,7 @@ class AlmanachApp(app.App): | ||||
|                             help='Keystone V3 URL (Env: OS_AUTH_URL).') | ||||
|  | ||||
|         parser.add_argument('--os-region-name', | ||||
|                             default=os.environ.get('`'), | ||||
|                             default=os.environ.get('OS_REGION_NAME'), | ||||
|                             help='OpenStack region name (Env: OS_REGION_NAME).') | ||||
|  | ||||
|         parser.add_argument('--os-password', | ||||
|   | ||||
| @@ -47,3 +47,17 @@ class TestListEntityCommand(base.TestCase): | ||||
|         self.client.get_tenant_entities.assert_called_once_with(self.args.tenant_id, | ||||
|                                                                 datetime.datetime(2017, 1, 1, 0, 0), | ||||
|                                                                 datetime.datetime(2017, 1, 30, 0, 0)) | ||||
|  | ||||
|     def test_execute_command_without_end_date(self): | ||||
|         self.args.tenant_id = 'some uuid' | ||||
|         self.args.start = '2017-01-01' | ||||
|         self.client.get_tenant_entities.return_value = [{'entity_id': 'some uuid', 'project_id': 'tenant id'}] | ||||
|  | ||||
|         expected = (('Entity ID', 'Type', 'Name', 'Start', 'End', 'Properties'), | ||||
|                     [('some uuid', None, None, None, None, None)]) | ||||
|  | ||||
|         self.assertEqual(expected, self.command.take_action(self.args)) | ||||
|  | ||||
|         self.client.get_tenant_entities.assert_called_once_with(self.args.tenant_id, | ||||
|                                                                 datetime.datetime(2017, 1, 1, 0, 0), | ||||
|                                                                 None) | ||||
|   | ||||
| @@ -76,6 +76,23 @@ class TestClient(base.TestCase): | ||||
|                                          params=params, | ||||
|                                          headers=self.headers) | ||||
|  | ||||
|     @mock.patch('requests.get') | ||||
|     def test_get_tenant_entities_without_end_date(self, requests): | ||||
|         expected = [mock.Mock()] | ||||
|  | ||||
|         requests.return_value = self.response | ||||
|         self.response.json.return_value = expected | ||||
|         self.response.status_code = 200 | ||||
|  | ||||
|         start = datetime.now() | ||||
|         params = dict(start=start.strftime(Client.DATE_FORMAT_QS)) | ||||
|  | ||||
|         self.assertEqual(expected, self.client.get_tenant_entities('my_tenant_id', start)) | ||||
|  | ||||
|         requests.assert_called_once_with('{}{}'.format(self.url, '/v1/project/my_tenant_id/entities'), | ||||
|                                          params=params, | ||||
|                                          headers=self.headers) | ||||
|  | ||||
|     @mock.patch('requests.get') | ||||
|     def test_get_entity(self, requests): | ||||
|         expected = [mock.Mock()] | ||||
|   | ||||
| @@ -253,7 +253,7 @@ class Client(HttpClient): | ||||
|         url = '{}/{}/entity/{}'.format(self.url, self.api_version, entity_id) | ||||
|         return self._get(url) | ||||
|  | ||||
|     def get_tenant_entities(self, tenant_id, start, end): | ||||
|     def get_tenant_entities(self, tenant_id, start, end=None): | ||||
|         """List instances and volumes for a tenant. | ||||
|  | ||||
|         :arg str tenant_id: Tenant UUID | ||||
| @@ -263,7 +263,11 @@ class Client(HttpClient): | ||||
|         :rtype: list | ||||
|         """ | ||||
|         url = '{}/{}/project/{}/entities'.format(self.url, self.api_version, tenant_id) | ||||
|         params = {'start': self._format_qs_datetime(start), 'end': self._format_qs_datetime(end)} | ||||
|         params = {'start': self._format_qs_datetime(start)} | ||||
|  | ||||
|         if end: | ||||
|             params['end'] = self._format_qs_datetime(end) | ||||
|  | ||||
|         return self._get(url, params) | ||||
|  | ||||
|     def update_instance_entity(self, instance_id, **kwargs): | ||||
|   | ||||
| @@ -48,7 +48,7 @@ Usage: :code:`almanach endpoint` | ||||
| Get Tenant Entities | ||||
| ------------------- | ||||
|  | ||||
| Usage: :code:`almanach list-entities <tenant_id> <start> <end>` | ||||
| Usage: :code:`almanach list-entities <tenant_id> <start> --end <end>` | ||||
|  | ||||
| .. code:: bash | ||||
|  | ||||
| @@ -66,7 +66,7 @@ Arguments: | ||||
|  | ||||
| * :code:`tenant_id`: Tenant ID (UUID) | ||||
| * :code:`start`: Start date (ISO8601 format) | ||||
| * :code:`end`: End date (ISO8601 format) | ||||
| * :code:`end`: End date (ISO8601 format), optional | ||||
|  | ||||
| Get one Entity | ||||
| -------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Frédéric Guillot
					Frédéric Guillot