Files
python-novaclient/novaclient/tests/functional/v2/test_instance_usage_audit_log.py
int32bit d418b5f245 Add CLI to show instance usage audit logs
Currently we can get instance usage audit logs via Nova API,
and the docs also update for it. It is necessary to add that
to our client and CLI.

This patch adds the following command.

nova instance-usage-audit-log [--before <before>]

Co-Authored-by: Takashi Natsume <natsume.takashi@lab.ntt.co.jp>
Change-Id: I4ef8e40c322f1768ee1b5e01e9681cab0e2804bd
2018-01-29 07:39:27 +09:00

88 lines
2.9 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import datetime
from oslo_utils import timeutils
from novaclient.tests.functional import base
class TestInstanceUsageAuditLogCLI(base.ClientTestBase):
COMPUTE_API_VERSION = '2.1'
# NOTE(takashin): By default, 'instance_usage_audit' is False in nova.
# So the instance usage audit log is not recoreded.
# Therefore an empty result can be got.
# But it is tested here to call APIs and get responses normally.
@staticmethod
def _get_begin_end_time():
current = timeutils.utcnow()
end = datetime.datetime(day=1, month=current.month, year=current.year)
year = end.year
if current.month == 1:
year -= 1
month = 12
else:
month = current.month - 1
begin = datetime.datetime(day=1, month=month, year=year)
return (begin, end)
def test_get_os_instance_usage_audit_log(self):
(begin, end) = self._get_begin_end_time()
expected = {
'hosts_not_run': '[]',
'log': '{}',
'num_hosts': '0',
'num_hosts_done': '0',
'num_hosts_not_run': '0',
'num_hosts_running': '0',
'overall_status': 'ALL hosts done. 0 errors.',
'total_errors': '0',
'total_instances': '0',
'period_beginning': str(begin),
'period_ending': str(end)
}
output = self.nova('instance-usage-audit-log')
for key in expected.keys():
self.assertEqual(expected[key],
self._get_value_from_the_table(output, key))
def test_get_os_instance_usage_audit_log_with_before(self):
expected = {
'hosts_not_run': '[]',
'log': '{}',
'num_hosts': '0',
'num_hosts_done': '0',
'num_hosts_not_run': '0',
'num_hosts_running': '0',
'overall_status': 'ALL hosts done. 0 errors.',
'total_errors': '0',
'total_instances': '0',
'period_beginning': '2016-11-01 00:00:00',
'period_ending': '2016-12-01 00:00:00'
}
output = self.nova(
'instance-usage-audit-log --before "2016-12-10 13:59:59.999999"')
for key in expected.keys():
self.assertEqual(expected[key],
self._get_value_from_the_table(output, key))