diff --git a/ansible/install/group_vars/all.yml b/ansible/install/group_vars/all.yml index 593517cf2..f6143ee54 100644 --- a/ansible/install/group_vars/all.yml +++ b/ansible/install/group_vars/all.yml @@ -37,7 +37,7 @@ browbeat_venv: "{{browbeat_path}}/.browbeat-venv" rally_venv: "{{browbeat_path}}/.rally-venv" # Rally version to install -rally_openstack_version: 1.6.0 +rally_openstack_version: 2.2.0 # The default Shaker venv shaker_venv: "{{browbeat_path}}/.shaker-venv" diff --git a/browbeat-config.yaml b/browbeat-config.yaml index 6fb00887d..bff51bced 100644 --- a/browbeat-config.yaml +++ b/browbeat-config.yaml @@ -175,7 +175,6 @@ workloads: file: rally/neutron/neutron-create-update-network-cc.yml network_update_args: admin_state_up: False - name: "_updated" - name: create-delete-network enabled: false file: rally/neutron/neutron-create-delete-network-cc.yml @@ -192,7 +191,6 @@ workloads: admin_state_up: False device_id: "dummy_id" device_owner: "dummy_owner" - name: "_port_updated" - name: create-delete-port enabled: false file: rally/neutron/neutron-create-delete-port-cc.yml @@ -212,7 +210,6 @@ workloads: router_create_args: {} router_update_args: admin_state_up: False - name: "_router_updated" - name: create-delete-router enabled: false file: rally/neutron/neutron-create-delete-router-cc.yml @@ -236,7 +233,6 @@ workloads: subnets_per_network: 2 subnet_update_args: enable_dhcp: true - name: "_subnet_updated" - name: create-delete-subnets enabled: false file: rally/neutron/neutron-create-delete-subnet-cc.yml diff --git a/rally/rally-plugins/cinder/boot_vm_attach_volume_list.py b/rally/rally-plugins/cinder/boot_vm_attach_volume_list.py index b48020195..4c690041c 100644 --- a/rally/rally-plugins/cinder/boot_vm_attach_volume_list.py +++ b/rally/rally-plugins/cinder/boot_vm_attach_volume_list.py @@ -11,9 +11,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.cinder import utils as cinder_utils -from rally_openstack.scenarios.nova import utils as nova_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.cinder import utils as cinder_utils +from rally_openstack.task.scenarios.nova import utils as nova_utils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/dynamic-workloads/dynamic_utils.py b/rally/rally-plugins/dynamic-workloads/dynamic_utils.py index 8a0b842c8..041566128 100644 --- a/rally/rally-plugins/dynamic-workloads/dynamic_utils.py +++ b/rally/rally-plugins/dynamic-workloads/dynamic_utils.py @@ -14,10 +14,10 @@ import time from rally.common import cfg -from rally.common import sshutils +from rally.utils import sshutils -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils from rally.task import atomic from rally.task import utils diff --git a/rally/rally-plugins/dynamic-workloads/dynamic_workload.py b/rally/rally-plugins/dynamic-workloads/dynamic_workload.py index c5067e70b..232783cd3 100644 --- a/rally/rally-plugins/dynamic-workloads/dynamic_workload.py +++ b/rally/rally-plugins/dynamic-workloads/dynamic_workload.py @@ -12,7 +12,7 @@ import os -from rally_openstack import consts +from rally_openstack.common import consts from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/dynamic-workloads/dynamic_workload_min.py b/rally/rally-plugins/dynamic-workloads/dynamic_workload_min.py index ead64a5b6..b4f28c7e7 100644 --- a/rally/rally-plugins/dynamic-workloads/dynamic_workload_min.py +++ b/rally/rally-plugins/dynamic-workloads/dynamic_workload_min.py @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts +from rally_openstack.common import consts from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/dynamic-workloads/octavia.py b/rally/rally-plugins/dynamic-workloads/octavia.py index d74e90bae..360f6e7d0 100644 --- a/rally/rally-plugins/dynamic-workloads/octavia.py +++ b/rally/rally-plugins/dynamic-workloads/octavia.py @@ -13,9 +13,9 @@ import io import time import random -from rally.common import sshutils +from rally.utils import sshutils -from rally_openstack.scenarios.octavia import utils as octavia_utils +from rally_openstack.task.scenarios.octavia import utils as octavia_utils from octaviaclient.api import exceptions import dynamic_utils diff --git a/rally/rally-plugins/dynamic-workloads/provider_network.py b/rally/rally-plugins/dynamic-workloads/provider_network.py index 07d2bb336..1fac66630 100644 --- a/rally/rally-plugins/dynamic-workloads/provider_network.py +++ b/rally/rally-plugins/dynamic-workloads/provider_network.py @@ -14,7 +14,7 @@ import os import subprocess -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils import dynamic_utils from rally.task import atomic diff --git a/rally/rally-plugins/dynamic-workloads/rally_context.py b/rally/rally-plugins/dynamic-workloads/rally_context.py index b7adf8e8f..e3411b06c 100644 --- a/rally/rally-plugins/dynamic-workloads/rally_context.py +++ b/rally/rally-plugins/dynamic-workloads/rally_context.py @@ -14,8 +14,8 @@ from rally.common import logging from rally.common import utils from rally import consts -from rally_openstack import osclients -from rally_openstack.wrappers import network as network_wrapper +from rally_openstack.common import osclients +from rally_openstack.common.wrappers import network as network_wrapper import subprocess diff --git a/rally/rally-plugins/glance/glance_create_boot_delete.py b/rally/rally-plugins/glance/glance_create_boot_delete.py index e9d633da1..8d442d0ae 100644 --- a/rally/rally-plugins/glance/glance_create_boot_delete.py +++ b/rally/rally-plugins/glance/glance_create_boot_delete.py @@ -10,11 +10,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack import scenario -from rally_openstack.scenarios.glance.images import GlanceBasic -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.nova import utils as nova_utils +from rally_openstack.common import consts +from rally_openstack.task import scenario +from rally_openstack.task.scenarios.glance.images import GlanceBasic +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.nova import utils as nova_utils from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot.py b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot.py index 7d26a22a9..deb63723f 100644 --- a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot.py +++ b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot.py @@ -10,9 +10,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.nova import utils as nova_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.nova import utils as nova_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping.py b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping.py index b55b915db..e30ab2b66 100644 --- a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping.py +++ b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping.py @@ -10,9 +10,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.vm import utils as vm_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.vm import utils as vm_utils from rally.task import atomic from rally.task import scenario from rally.task import types diff --git a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping_sec_groups.py b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping_sec_groups.py index fce39972a..01df8cb8d 100644 --- a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping_sec_groups.py +++ b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_fip_ping_sec_groups.py @@ -11,9 +11,9 @@ # limitations under the License. from random import randint -from rally_openstack import consts -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.vm import utils as vm_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.vm import utils as vm_utils from rally.task import atomic from rally.task import scenario from rally.task import types @@ -140,3 +140,22 @@ def _create_router(self, router_create_args): :returns: neutron router dict """ return self.admin_clients("neutron").create_router({"router": router_create_args}) + + @atomic.action_timer("neutron.create_security_group_rule") + def _create_security_group_rule(self, security_group_id, + **security_group_rule_args): + """Create Neutron security-group-rule. + + :param security_group_id: id of neutron security_group + :param security_group_rule_args: dict, POST + /v2.0/security-group-rules request options + :returns: dict, neutron security-group-rule + """ + security_group_rule_args["security_group_id"] = security_group_id + if "direction" not in security_group_rule_args: + security_group_rule_args["direction"] = "ingress" + if "protocol" not in security_group_rule_args: + security_group_rule_args["protocol"] = "tcp" + + return self.clients("neutron").create_security_group_rule( + {"security_group_rule": security_group_rule_args}) diff --git a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_test_metadata.py b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_test_metadata.py index 817ca8df7..0dfc6e95c 100644 --- a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_test_metadata.py +++ b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_test_metadata.py @@ -12,9 +12,9 @@ import logging -from rally_openstack import consts -from rally_openstack.scenarios.vm import utils as vm_utils -from rally.common import sshutils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally.utils import sshutils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_vms_on_single_network.py b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_vms_on_single_network.py index ef7f05376..1fd83d361 100644 --- a/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_vms_on_single_network.py +++ b/rally/rally-plugins/netcreate-boot/netcreate_nova_boot_vms_on_single_network.py @@ -10,9 +10,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.nova import utils as nova_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.nova import utils as nova_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/netcreate-boot/provider_netcreate_nova_boot_ping.py b/rally/rally-plugins/netcreate-boot/provider_netcreate_nova_boot_ping.py index f66cefe40..159fd9522 100644 --- a/rally/rally-plugins/netcreate-boot/provider_netcreate_nova_boot_ping.py +++ b/rally/rally-plugins/netcreate-boot/provider_netcreate_nova_boot_ping.py @@ -14,9 +14,9 @@ import os import subprocess -from rally_openstack import consts -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.vm import utils as vm_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.vm import utils as vm_utils from rally.task import atomic from rally.task import scenario from rally.task import types diff --git a/rally/rally-plugins/netcreate-boot/trunk_network_simulation.py b/rally/rally-plugins/netcreate-boot/trunk_network_simulation.py index e38062164..113d5a398 100644 --- a/rally/rally-plugins/netcreate-boot/trunk_network_simulation.py +++ b/rally/rally-plugins/netcreate-boot/trunk_network_simulation.py @@ -13,11 +13,11 @@ import time from rally.common import logging -from rally.common import sshutils +from rally.utils import sshutils -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack import consts +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.common import consts from rally.task import scenario from rally.task import validation diff --git a/rally/rally-plugins/neutron/neutron.py b/rally/rally-plugins/neutron/neutron.py deleted file mode 100644 index f6e08dbbd..000000000 --- a/rally/rally-plugins/neutron/neutron.py +++ /dev/null @@ -1,59 +0,0 @@ -# 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. - -from rally.common import logging -from rally_openstack import consts -from rally_openstack.contexts.network import networks -from rally.task import context - -LOG = logging.getLogger(__name__) - - -@context.configure(name="browbeat_persist_network", order=350) -class BrowbeatPersistNetwork(networks.Network): - """Create networking resources but does not clean them up - at the conclusion to allow resources to persist. - """ - - CONFIG_SCHEMA = { - "type": "object", - "$schema": consts.JSON_SCHEMA, - "properties": { - "start_cidr": { - "type": "string" - }, - "networks_per_tenant": { - "type": "integer", - "minimum": 1 - }, - "subnets_per_network": { - "type": "integer", - "minimum": 1 - }, - "network_create_args": { - "type": "object", - "additionalProperties": True - }, - "dns_nameservers": { - "type": "array", - "items": {"type": "string"}, - "uniqueItems": True - } - }, - "additionalProperties": True - } - - def setup(self): - super(BrowbeatPersistNetwork, self).setup() - - def cleanup(self): - pass diff --git a/rally/rally-plugins/neutron/port_create_assoicate.py b/rally/rally-plugins/neutron/port_create_assoicate.py index b71e974ff..5aa6060ee 100644 --- a/rally/rally-plugins/neutron/port_create_assoicate.py +++ b/rally/rally-plugins/neutron/port_create_assoicate.py @@ -10,8 +10,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.neutron import utils as neutron_utils from rally.task import scenario from rally.task import validation import subprocess diff --git a/rally/rally-plugins/neutron/router_subnet_create_delete.py b/rally/rally-plugins/neutron/router_subnet_create_delete.py index 9fc5e214b..78c58e670 100644 --- a/rally/rally-plugins/neutron/router_subnet_create_delete.py +++ b/rally/rally-plugins/neutron/router_subnet_create_delete.py @@ -10,8 +10,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.neutron import utils as neutron_utils from rally.task import scenario from rally.task import validation diff --git a/rally/rally-plugins/neutron/securitygroup_port.py b/rally/rally-plugins/neutron/securitygroup_port.py index 38a8d135a..05772f6d5 100644 --- a/rally/rally-plugins/neutron/securitygroup_port.py +++ b/rally/rally-plugins/neutron/securitygroup_port.py @@ -10,8 +10,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.neutron import utils as neutron_utils from rally.task import scenario from rally.task import validation diff --git a/rally/rally-plugins/nova/nova.py b/rally/rally-plugins/nova/nova.py index 34c20e107..47ec9e96e 100644 --- a/rally/rally-plugins/nova/nova.py +++ b/rally/rally-plugins/nova/nova.py @@ -10,10 +10,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from rally_openstack import consts -from rally_openstack.scenarios.cinder import utils as cinder_utils -from rally_openstack.scenarios.nova import utils as nova_utils -from rally_openstack.scenarios.vm import utils as vm_utils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.cinder import utils as cinder_utils +from rally_openstack.task.scenarios.nova import utils as nova_utils +from rally_openstack.task.scenarios.vm import utils as vm_utils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/octavia/octavia-create-loadabalancer-listeners-pools-members.py b/rally/rally-plugins/octavia/octavia-create-loadabalancer-listeners-pools-members.py index ba674b00b..8b72f573f 100644 --- a/rally/rally-plugins/octavia/octavia-create-loadabalancer-listeners-pools-members.py +++ b/rally/rally-plugins/octavia/octavia-create-loadabalancer-listeners-pools-members.py @@ -14,11 +14,11 @@ import time import io -from rally.common import sshutils -from rally_openstack import consts -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.octavia import utils as octavia_utils +from rally.utils import sshutils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.octavia import utils as octavia_utils from octaviaclient.api import exceptions from rally.task import scenario diff --git a/rally/rally-plugins/octavia/octavia-create-loadabalancer-resources.py b/rally/rally-plugins/octavia/octavia-create-loadabalancer-resources.py index 68dd56d17..9e620923f 100644 --- a/rally/rally-plugins/octavia/octavia-create-loadabalancer-resources.py +++ b/rally/rally-plugins/octavia/octavia-create-loadabalancer-resources.py @@ -13,11 +13,11 @@ import logging import time -from rally.common import sshutils -from rally_openstack import consts -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.octavia import utils as octavia_utils +from rally.utils import sshutils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.octavia import utils as octavia_utils from rally.task import atomic from rally.task import scenario from rally.task import types diff --git a/rally/rally-plugins/octavia/octavia-fully-populated-loadbalancer.py b/rally/rally-plugins/octavia/octavia-fully-populated-loadbalancer.py index 3cadb2280..dafba7692 100644 --- a/rally/rally-plugins/octavia/octavia-fully-populated-loadbalancer.py +++ b/rally/rally-plugins/octavia/octavia-fully-populated-loadbalancer.py @@ -14,11 +14,11 @@ import logging import time -from rally_openstack import consts -from rally.common import sshutils -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.octavia import utils as octavia_utils +from rally_openstack.common import consts +from rally.utils import sshutils +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.octavia import utils as octavia_utils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/workloads/abench.py b/rally/rally-plugins/workloads/abench.py index f48eaa7d0..f9c7453f6 100644 --- a/rally/rally-plugins/workloads/abench.py +++ b/rally/rally-plugins/workloads/abench.py @@ -12,11 +12,11 @@ import logging import time -from rally.common import sshutils -from rally_openstack import consts -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.octavia import utils as octavia_utils +from rally.utils import sshutils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.octavia import utils as octavia_utils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/workloads/pbench-uperf.py b/rally/rally-plugins/workloads/pbench-uperf.py index 13794fcbe..5da35d508 100644 --- a/rally/rally-plugins/workloads/pbench-uperf.py +++ b/rally/rally-plugins/workloads/pbench-uperf.py @@ -19,10 +19,10 @@ import browbeat.elastic import six -from rally.common import sshutils -from rally_openstack import consts -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils +from rally.utils import sshutils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/workloads/stress-ng.py b/rally/rally-plugins/workloads/stress-ng.py index 33471dea6..c718613ec 100644 --- a/rally/rally-plugins/workloads/stress-ng.py +++ b/rally/rally-plugins/workloads/stress-ng.py @@ -12,10 +12,10 @@ import logging -from rally_openstack import consts -from rally_openstack.scenarios.vm import utils as vm_utils -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally.common import sshutils +from rally_openstack.common import consts +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally.utils import sshutils from rally.task import scenario from rally.task import types from rally.task import validation diff --git a/rally/rally-plugins/workloads/sysbench.py b/rally/rally-plugins/workloads/sysbench.py index a29581a65..f03dad3f0 100644 --- a/rally/rally-plugins/workloads/sysbench.py +++ b/rally/rally-plugins/workloads/sysbench.py @@ -12,13 +12,13 @@ import logging -from rally_openstack.scenarios.neutron import utils as neutron_utils -from rally_openstack.scenarios.vm import utils as vm_utils -from rally.common import sshutils +from rally_openstack.task.scenarios.neutron import utils as neutron_utils +from rally_openstack.task.scenarios.vm import utils as vm_utils +from rally.utils import sshutils from rally.task import scenario from rally.task import types from rally.task import validation -from rally_openstack import consts +from rally_openstack.common import consts LOG = logging.getLogger(__name__)