From 938e9175aa0649917bdd0edb0fe9094e6d854f9b Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Wed, 24 Jun 2020 12:31:57 +0200 Subject: [PATCH 1/4] small pep fixes --- otcextensions/tests/functional/osclient/nat/v2/common.py | 1 - tox.ini | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/otcextensions/tests/functional/osclient/nat/v2/common.py b/otcextensions/tests/functional/osclient/nat/v2/common.py index 8a943a617..e96737ca0 100644 --- a/otcextensions/tests/functional/osclient/nat/v2/common.py +++ b/otcextensions/tests/functional/osclient/nat/v2/common.py @@ -50,7 +50,6 @@ def create_nat_gateway(self, name=None): name=name, router_id=self.ROUTER_ID, net_id=self.NETWORK_ID, - description='OTCE Lib Test', spec=1) )) self.assertIsNotNone(json_output) diff --git a/tox.ini b/tox.ini index 28b0062a1..a10573c81 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] minversion = 3.1 -envlist = py27,py36,py37,pep8 +envlist = py36,py37,pep8 skipsdist = True ignore_basepython_conflict = True @@ -8,7 +8,6 @@ ignore_basepython_conflict = True usedevelop = True install_command = pip install {opts} {packages} passenv = OS_* OPENSTACKSDK_* -basepython = {env:OPENSTACKSDK_TOX_PYTHON:python3} setenv = VIRTUAL_ENV={envdir} LANG=en_US.UTF-8 From f089d2aaf5dd069a11742c09bb82fffa2271c7c9 Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Mon, 6 Jul 2020 15:07:20 +0200 Subject: [PATCH 2/4] move from time.clock to time.time --- otcextensions/tests/unit/osclient/anti_ddos/v1/fakes.py | 8 ++++---- otcextensions/tests/unit/osclient/cts/v1/fakes.py | 4 ++-- otcextensions/tests/unit/osclient/dns/v2/fakes.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/otcextensions/tests/unit/osclient/anti_ddos/v1/fakes.py b/otcextensions/tests/unit/osclient/anti_ddos/v1/fakes.py index 08ca91950..d949a9cc6 100644 --- a/otcextensions/tests/unit/osclient/anti_ddos/v1/fakes.py +++ b/otcextensions/tests/unit/osclient/anti_ddos/v1/fakes.py @@ -89,8 +89,8 @@ class FakeFloatingIPEvent(test_base.Fake): def generate(cls): object_info = { 'floating_ip_id': uuid.uuid4().hex, - 'start_time': time.clock() * 1000, - 'end_time': time.clock() * 1000, + 'start_time': time.time() * 1000, + 'end_time': time.time() * 1000, 'trigger_bps': random.randint(1, 5), 'trigger_pps': random.randint(1, 5), 'trigger_http_pps': random.randint(1, 5), @@ -107,7 +107,7 @@ class FakeFloatingIPStatDay(test_base.Fake): def generate(cls): object_info = { 'floating_ip_id': uuid.uuid4().hex, - 'period_start': time.clock() * 1000, + 'period_start': time.time() * 1000, 'bps_in': random.randint(1, 5), 'bps_attack': random.randint(1, 5), 'total_bps': random.randint(1, 5), @@ -126,7 +126,7 @@ class FakeFloatingIPStatWeek(test_base.Fake): def generate(cls): object_info = { 'weekdata': [({ - 'period_start': time.clock() * 1000, + 'period_start': time.time() * 1000, 'ddos_intercept_times': random.randint(1, 5), 'ddos_blackhole_times': random.randint(1, 5), 'max_attack_bps': random.randint(1, 5), diff --git a/otcextensions/tests/unit/osclient/cts/v1/fakes.py b/otcextensions/tests/unit/osclient/cts/v1/fakes.py index 221c736ac..a292c664f 100644 --- a/otcextensions/tests/unit/osclient/cts/v1/fakes.py +++ b/otcextensions/tests/unit/osclient/cts/v1/fakes.py @@ -44,7 +44,7 @@ def generate(cls): 'name': uuid.uuid4().hex, 'level': uuid.uuid4().hex, 'type': uuid.uuid4().hex, - 'time': time.clock() * 1000, + 'time': time.time() * 1000, 'user': uuid.uuid4().hex, 'code': random.randint(1, 600), 'service_type': uuid.uuid4().hex, @@ -52,7 +52,7 @@ def generate(cls): 'resource_name': uuid.uuid4().hex, 'resource_id': uuid.uuid4().hex, 'source_ip': uuid.uuid4().hex, - 'record_time': time.clock() * 1000, + 'record_time': time.time() * 1000, 'request': uuid.uuid4().hex, 'response': uuid.uuid4().hex, } diff --git a/otcextensions/tests/unit/osclient/dns/v2/fakes.py b/otcextensions/tests/unit/osclient/dns/v2/fakes.py index 115533f27..3ca763762 100644 --- a/otcextensions/tests/unit/osclient/dns/v2/fakes.py +++ b/otcextensions/tests/unit/osclient/dns/v2/fakes.py @@ -61,7 +61,7 @@ def generate(cls): 'serial': random.randint(1, 600), 'status': uuid.uuid4().hex, 'ttl': random.randint(1, 600), - 'updated_at': time.clock() * 1000, + 'updated_at': time.time() * 1000, 'zone_type': uuid.uuid4().hex, } obj = zone.Zone.existing(**object_info) From da53fd9cb0a2a6d5f944b1837f59a7b72e083596 Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Mon, 6 Jul 2020 15:08:16 +0200 Subject: [PATCH 3/4] add another git ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index cad5c2103..267e4101b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.swo *.swp *~ +otcextensions-*/ .coverage .idea .stestr/ From 15aadb74d8107305d2e5303e46653f7daaa06aa9 Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Mon, 6 Jul 2020 15:19:27 +0200 Subject: [PATCH 4/4] introduce cloud layer --- otcextensions/osclient/rds/v3/instance.py | 201 +--- otcextensions/sdk/__init__.py | 14 +- otcextensions/sdk/cloud/__init__.py | 0 otcextensions/sdk/cloud/rds.py | 266 ++++++ otcextensions/tests/unit/base.py | 23 + .../unit/osclient/rds/v3/test_instance.py | 779 +-------------- otcextensions/tests/unit/sdk/base.py | 46 + .../tests/unit/sdk/cloud/__init__.py | 0 .../tests/unit/sdk/cloud/test_rds.py | 885 ++++++++++++++++++ requirements.txt | 2 +- 10 files changed, 1304 insertions(+), 912 deletions(-) create mode 100644 otcextensions/sdk/cloud/__init__.py create mode 100644 otcextensions/sdk/cloud/rds.py create mode 100644 otcextensions/tests/unit/base.py create mode 100644 otcextensions/tests/unit/sdk/base.py create mode 100644 otcextensions/tests/unit/sdk/cloud/__init__.py create mode 100644 otcextensions/tests/unit/sdk/cloud/test_rds.py diff --git a/otcextensions/osclient/rds/v3/instance.py b/otcextensions/osclient/rds/v3/instance.py index b03f0f863..5b1fc6e40 100644 --- a/otcextensions/osclient/rds/v3/instance.py +++ b/otcextensions/osclient/rds/v3/instance.py @@ -179,14 +179,15 @@ def get_parser(self, prog_name): help=_("Name of the instance.") ) parser.add_argument( - 'flavor_ref', - metavar='', + 'flavor', + metavar='', help=_("Flavor spec_code") ) disk_group = parser.add_argument_group('Disk data') disk_group.add_argument( '--size', metavar='', + dest='volume_size', type=int, required=True, help=_("Size of the instance disk volume in GB. ") @@ -196,6 +197,7 @@ def get_parser(self, prog_name): metavar='{' + ','.join(DISK_TYPE_CHOICES) + '}', type=lambda s: s.upper(), required=True, + dest='volume_type', choices=[s.upper() for s in DISK_TYPE_CHOICES], help=_("Volume type. (COMMON, ULTRAHIGH).") ) @@ -224,7 +226,7 @@ def get_parser(self, prog_name): ) parser.add_argument( '--configuration', - dest='configuration_id', + dest='configuration', metavar='', default=None, help=_("ID of the configuration group to attach to the instance.") @@ -253,16 +255,18 @@ def get_parser(self, prog_name): new_instance_group.add_argument( '--router-id', metavar='', + dest='router', help=_('ID of a Router the DB should be connected to') ) new_instance_group.add_argument( '--network-id', metavar='', + dest='network', help=_('ID of a Neutron network the DB should be connected to.') ) new_instance_group.add_argument( '--security-group-id', - dest='security_group_id', + dest='security_group', metavar='', help=_('Security group ID') ) @@ -301,6 +305,17 @@ def get_parser(self, prog_name): metavar='', help=_('Backup ID or Name to create new instance from.') ) + create_from_group.add_argument( + '--backup-keepdays', + metavar='', + help=_('Specifies the retention days for specific backup files.') + ) + create_from_group.add_argument( + '--backup-timeframe', + metavar='', + help=_('Specifies the backup time window. Automated backups will ' + 'be triggered during the backup time window.') + ) create_from_group.add_argument( '--restore-time', metavar='