Bump hacking
hacking 3.1.x is too old. Change-Id: I7c7686c36cedb9d88caea2fd74880d138fa00c8e Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
This commit is contained in:
@@ -167,7 +167,7 @@ class HorizonMiddleware(object):
|
||||
"""
|
||||
if http_utils.is_ajax(request) and hasattr(request, 'horizon'):
|
||||
queued_msgs = request.horizon['async_messages']
|
||||
if type(response) == http.HttpResponseRedirect:
|
||||
if isinstance(response, http.HttpResponseRedirect):
|
||||
# Drop our messages back into the session as per usual so they
|
||||
# don't disappear during the redirect. Not that we explicitly
|
||||
# use django's messages methods here.
|
||||
|
@@ -20,8 +20,9 @@ import os
|
||||
import socket
|
||||
|
||||
from horizon.defaults import * # noqa: F401,F403,H303
|
||||
from openstack_auth.defaults import * # noqa: F401,F403,H303
|
||||
from openstack_dashboard.utils import settings as settings_utils
|
||||
|
||||
from openstack_auth.defaults import * # noqa: F401,F403,H303,I100
|
||||
from openstack_dashboard.utils import settings as settings_utils # noqa: I100
|
||||
|
||||
socket.setdefaulttimeout(1)
|
||||
|
||||
|
@@ -167,4 +167,4 @@ def extract_angular(fileobj, keywords, comment_tags, options):
|
||||
parser.feed(encodeutils.safe_decode(line))
|
||||
|
||||
for string in parser.strings:
|
||||
yield(string)
|
||||
yield string
|
||||
|
@@ -91,7 +91,7 @@ class Service(base.APIDictWrapper):
|
||||
self.region = region
|
||||
|
||||
def __str__(self):
|
||||
if(self.type == "identity"):
|
||||
if self.type == "identity":
|
||||
return _("%(type)s (%(backend)s backend)") \
|
||||
% {"type": self.type, "backend": keystone_backend_name()}
|
||||
return self.type
|
||||
|
@@ -46,7 +46,7 @@ class Networks(generic.View):
|
||||
result = api.neutron.network_list_for_tenant(
|
||||
request, tenant_id,
|
||||
include_pre_auto_allocate=True)
|
||||
return{'items': [n.to_dict() for n in result]}
|
||||
return {'items': [n.to_dict() for n in result]}
|
||||
|
||||
@rest_utils.ajax(data_required=True)
|
||||
def post(self, request):
|
||||
@@ -92,7 +92,7 @@ class Subnets(generic.View):
|
||||
|
||||
"""
|
||||
result = api.neutron.subnet_list(request, **request.GET.dict())
|
||||
return{'items': [n.to_dict() for n in result]}
|
||||
return {'items': [n.to_dict() for n in result]}
|
||||
|
||||
@rest_utils.ajax(data_required=True)
|
||||
def post(self, request):
|
||||
|
@@ -169,7 +169,7 @@ def swift_get_containers(request, marker=None, prefix=None):
|
||||
prefix=prefix,
|
||||
full_listing=True)
|
||||
container_objs = [Container(c) for c in containers]
|
||||
if(len(container_objs) > limit):
|
||||
if len(container_objs) > limit:
|
||||
return (container_objs[0:-1], True)
|
||||
return (container_objs, False)
|
||||
|
||||
@@ -270,7 +270,7 @@ def swift_get_objects(request, container_name, prefix=None, marker=None,
|
||||
**kwargs)
|
||||
object_objs = _objectify(objects, container_name)
|
||||
|
||||
if(len(object_objs) > limit):
|
||||
if len(object_objs) > limit:
|
||||
return (object_objs[0:-1], True)
|
||||
return (object_objs, False)
|
||||
|
||||
|
@@ -54,7 +54,7 @@ def openstack(request):
|
||||
regions = {'support': len(available_regions) > 1,
|
||||
'current': {'endpoint': request.session.get('region_endpoint'),
|
||||
'name': request.session.get('region_name')},
|
||||
'available': [{'endpoint': region[0], 'name':region[1]} for
|
||||
'available': [{'endpoint': region[0], 'name': region[1]} for
|
||||
region in available_regions]}
|
||||
|
||||
# K2K Federation Service Providers context/support
|
||||
|
@@ -1005,7 +1005,7 @@ class NetworkTests(test.BaseAdminViewTests):
|
||||
url = reverse('horizon:admin:networks:create')
|
||||
res = self.client.get(url)
|
||||
physical_network = res.context['form'].fields['physical_network']
|
||||
self.assertEqual(type(physical_network), forms.CharField)
|
||||
self.assertIsInstance(physical_network, forms.CharField)
|
||||
|
||||
self.mock_tenant_list.assert_called_once_with(test.IsHttpRequest())
|
||||
self._check_is_extension_supported(
|
||||
@@ -1029,7 +1029,7 @@ class NetworkTests(test.BaseAdminViewTests):
|
||||
url = reverse('horizon:admin:networks:create')
|
||||
res = self.client.get(url)
|
||||
physical_network = res.context['form'].fields['physical_network']
|
||||
self.assertEqual(type(physical_network), forms.ThemableChoiceField)
|
||||
self.assertIsInstance(physical_network, forms.ThemableChoiceField)
|
||||
self.assertListEqual(list(physical_network.choices),
|
||||
[('default', 'default'), ('test', 'test')])
|
||||
|
||||
|
@@ -1156,7 +1156,7 @@ class NetworkViewTests(test.TestCase, NetworkStubMixin):
|
||||
networks = res.context['networks_table'].data
|
||||
|
||||
button = find_button_fn(res)
|
||||
self.assertFalse('disabled' in button.classes,
|
||||
self.assertNotIn('disabled', button.classes,
|
||||
"The create button should not be disabled")
|
||||
|
||||
self._check_net_list()
|
||||
|
@@ -1221,7 +1221,7 @@ class RouterViewTests(RouterMixin, test.TestCase):
|
||||
self.assertCountEqual(routers, self.routers.list())
|
||||
|
||||
create_action = self.getAndAssertTableAction(res, 'routers', 'create')
|
||||
self.assertFalse('disabled' in create_action.classes,
|
||||
self.assertNotIn('disabled', create_action.classes,
|
||||
'Create button should not be disabled')
|
||||
self.assertEqual('Create Router',
|
||||
create_action.verbose_name)
|
||||
|
@@ -104,7 +104,7 @@ class MetadatadefinitionsPage(basepage.BaseNavigationPage):
|
||||
return bool(self._get_row_with_namespace_name(name))
|
||||
|
||||
def is_public_set_correct(self, name, exp_value, row=None):
|
||||
if type(exp_value) != bool:
|
||||
if not isinstance(exp_value, bool):
|
||||
raise ValueError('Expected value "exp_value" is not boolean')
|
||||
if not row:
|
||||
row = self._get_row_with_namespace_name(name)
|
||||
@@ -112,7 +112,7 @@ class MetadatadefinitionsPage(basepage.BaseNavigationPage):
|
||||
return self._is_text_visible(cell, self.boolean_mapping[exp_value])
|
||||
|
||||
def is_protected_set_correct(self, name, exp_value, row=None):
|
||||
if type(exp_value) != bool:
|
||||
if not isinstance(exp_value, bool):
|
||||
raise ValueError('Expected value "exp_value" is not boolean')
|
||||
if not row:
|
||||
row = self._get_row_with_namespace_name(name)
|
||||
|
@@ -322,6 +322,7 @@ class TestImagesAdvancedAngular(helpers.TestCase):
|
||||
return InstancesPage(self.driver, self.CONFIG)
|
||||
|
||||
"""Login as demo user"""
|
||||
|
||||
def test_create_volume_from_image(self):
|
||||
"""This test case checks create volume from image functionality:
|
||||
|
||||
|
@@ -21,6 +21,7 @@ class TestLogin(helpers.BaseTestCase):
|
||||
* logs in as a regular user
|
||||
* checks that the user home page loads without error
|
||||
"""
|
||||
|
||||
def test_login(self):
|
||||
login_pg = loginpage.LoginPage(self.driver, self.CONFIG)
|
||||
login_pg.go_to_login_page()
|
||||
|
@@ -85,7 +85,7 @@ def change_page_size(driver, config, page_size):
|
||||
driver.find_element_by_css_selector(
|
||||
f"#id_pagesize[value='{page_size}']")
|
||||
break
|
||||
except(exceptions.NoSuchElementException):
|
||||
except exceptions.NoSuchElementException:
|
||||
time.sleep(3)
|
||||
|
||||
|
||||
|
@@ -56,10 +56,10 @@ def test_download_rc_file_admin(login, driver, config, openstack_admin,
|
||||
project_id = re.search(
|
||||
r'export OS_PROJECT_ID=(.+)', content).group(1)
|
||||
|
||||
assert(config.identity.admin_username == username and
|
||||
config.identity.admin_home_project == project_name and
|
||||
openstack_admin.identity.find_project(
|
||||
config.identity.admin_home_project).id == project_id)
|
||||
assert (config.identity.admin_username == username and
|
||||
config.identity.admin_home_project == project_name and
|
||||
openstack_admin.identity.find_project(
|
||||
config.identity.admin_home_project).id == project_id)
|
||||
|
||||
|
||||
def test_download_rc_file_demo(login, driver, config, openstack_admin,
|
||||
@@ -88,7 +88,7 @@ def test_download_rc_file_demo(login, driver, config, openstack_admin,
|
||||
project_id = re.search(
|
||||
r'export OS_PROJECT_ID=(.+)', content).group(1)
|
||||
|
||||
assert(config.identity.username == username and
|
||||
config.identity.home_project == project_name and
|
||||
openstack_admin.identity.find_project(
|
||||
config.identity.home_project).id == project_id)
|
||||
assert (config.identity.username == username and
|
||||
config.identity.home_project == project_name and
|
||||
openstack_admin.identity.find_project(
|
||||
config.identity.home_project).id == project_id)
|
||||
|
@@ -65,10 +65,10 @@ def test_update_compute_defaults(login, driver, openstack_admin, config,
|
||||
defaults_form.find_element_by_id("id_cores").send_keys(number_of_cores)
|
||||
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Success: Default quotas updated.' in messages
|
||||
assert 'Success: Default quotas updated.' in messages
|
||||
new_quotas = openstack_admin.compute.get(
|
||||
"/os-quota-class-sets/default").json()
|
||||
assert(
|
||||
assert (
|
||||
new_quotas["quota_class_set"]["instances"] == number_of_instances and
|
||||
new_quotas["quota_class_set"]["cores"] == number_of_cores)
|
||||
|
||||
@@ -94,8 +94,8 @@ def test_update_volume_defaults(login, driver, openstack_admin, config,
|
||||
number_of_snapshots)
|
||||
defaults_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Success: Default quotas updated.' in messages
|
||||
assert 'Success: Default quotas updated.' in messages
|
||||
new_quotas = openstack_admin.block_storage.get(
|
||||
"/os-quota-class-sets/default").json()
|
||||
assert(new_quotas["quota_class_set"]["volumes"] == number_of_volumes and
|
||||
new_quotas["quota_class_set"]["snapshots"] == number_of_snapshots)
|
||||
assert (new_quotas["quota_class_set"]["volumes"] == number_of_volumes and
|
||||
new_quotas["quota_class_set"]["snapshots"] == number_of_snapshots)
|
||||
|
@@ -20,8 +20,8 @@ from openstack_dashboard.test.selenium import widgets
|
||||
|
||||
@pytest.fixture
|
||||
def floatingip_description():
|
||||
return('horizon_floatingip_description_%s'
|
||||
% uuidutils.generate_uuid(dashed=False))
|
||||
return ('horizon_floatingip_description_%s'
|
||||
% uuidutils.generate_uuid(dashed=False))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -100,8 +100,8 @@ def test_release_floatingip(login, driver, openstack_demo, config,
|
||||
widgets.select_from_dropdown(actions_column, "Release Floating IP")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Released Floating IP: "
|
||||
f"{new_floating_ip.floating_ip_address}" in messages)
|
||||
assert (f"Success: Released Floating IP: "
|
||||
f"{new_floating_ip.floating_ip_address}" in messages)
|
||||
assert openstack_demo.network.find_ip(
|
||||
new_floating_ip.floating_ip_address) is None
|
||||
|
||||
@@ -129,10 +129,11 @@ def test_associate_floatingip(login, driver, openstack_demo, new_floating_ip,
|
||||
f"{instance_name}: {new_instance_demo.private_v4}")
|
||||
associateip_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: IP address {new_floating_ip.floating_ip_address}"
|
||||
f" associated." in messages)
|
||||
assert(new_instance_demo.id == openstack_demo.network.find_ip(
|
||||
new_floating_ip.floating_ip_address).port_details['device_id'])
|
||||
assert (f"Success: IP address {new_floating_ip.floating_ip_address}"
|
||||
f" associated." in messages)
|
||||
assert (new_instance_demo.id == openstack_demo.network.find_ip(
|
||||
new_floating_ip.floating_ip_address).port_details['device_id'])
|
||||
|
||||
|
||||
@pytest.mark.parametrize('new_instance_demo', [(1, True)],
|
||||
indirect=True)
|
||||
@@ -156,8 +157,8 @@ def test_disassociate_floatingip(login, driver, openstack_demo, config,
|
||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Successfully disassociated Floating IP: "
|
||||
f"{instance_auto_ip}" in messages)
|
||||
assert (f"Success: Successfully disassociated Floating IP: "
|
||||
f"{instance_auto_ip}" in messages)
|
||||
instance_sdk = openstack_demo.compute.find_server(new_instance_demo.id)
|
||||
assert (len(instance_sdk.addresses['default_test_network']) == 1)
|
||||
assert (instance_sdk.addresses['default_test_network']
|
||||
|
@@ -52,8 +52,8 @@ def test_create_group(login, driver, group_name, openstack_admin, config,
|
||||
group_form.find_element_by_id("id_name").send_keys(group_name)
|
||||
group_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Group "{group_name}" was successfully created.'
|
||||
in messages)
|
||||
assert (f'Success: Group "{group_name}" was successfully created.'
|
||||
in messages)
|
||||
assert openstack_admin.identity.find_group(group_name) is not None
|
||||
|
||||
|
||||
@@ -99,9 +99,9 @@ def test_edit_group_name_and_description(login, driver, group_name,
|
||||
f"EDITED_Description for: {group_name}")
|
||||
group_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Success: Group has been updated successfully." in messages
|
||||
assert(openstack_admin.identity.find_group(
|
||||
f"EDITED_{group_name}") is not None)
|
||||
assert(openstack_admin.identity.find_group(
|
||||
f"EDITED_{group_name}").description ==
|
||||
f"EDITED_Description for: {group_name}")
|
||||
assert "Success: Group has been updated successfully." in messages
|
||||
assert (openstack_admin.identity.find_group(
|
||||
f"EDITED_{group_name}") is not None)
|
||||
assert (openstack_admin.identity.find_group(
|
||||
f"EDITED_{group_name}").description ==
|
||||
f"EDITED_Description for: {group_name}")
|
||||
|
@@ -52,10 +52,10 @@ def test_create_grouptype(login, driver, grouptype_name, openstack_admin,
|
||||
grouptype_form.find_element_by_id("id_name").send_keys(grouptype_name)
|
||||
grouptype_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Successfully created group type: {grouptype_name}'
|
||||
in messages)
|
||||
assert(openstack_admin.block_storage.find_group_type(grouptype_name)
|
||||
is not None)
|
||||
assert (f'Success: Successfully created group type: {grouptype_name}'
|
||||
in messages)
|
||||
assert (openstack_admin.block_storage.find_group_type(grouptype_name)
|
||||
is not None)
|
||||
|
||||
|
||||
def test_delete_grouptype(login, driver, grouptype_name, openstack_admin,
|
||||
|
@@ -66,8 +66,8 @@ def test_create_host_aggregate(login, driver, openstack_admin, config,
|
||||
host_aggregate_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Host Aggregate']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Created new host aggregate "{host_aggregate_name}".'
|
||||
in messages)
|
||||
assert (f'Success: Created new host aggregate "{host_aggregate_name}".'
|
||||
in messages)
|
||||
is_host_aggregate_created_sdk = False
|
||||
host_aggregates_sdk = openstack_admin.compute.get(
|
||||
"/os-aggregates").json()['aggregates']
|
||||
@@ -94,8 +94,8 @@ def test_delete_host_aggregate(login, driver, openstack_admin, config,
|
||||
widgets.select_from_dropdown(actions_column, "Delete Host Aggregate")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Deleted Host Aggregate: "
|
||||
f"{new_host_aggregate['aggregate']['name']}" in messages)
|
||||
assert (f"Success: Deleted Host Aggregate: "
|
||||
f"{new_host_aggregate['aggregate']['name']}" in messages)
|
||||
is_host_aggregate_deleted_sdk = True
|
||||
host_aggregates_sdk = openstack_admin.compute.get(
|
||||
"/os-aggregates").json()['aggregates']
|
||||
|
@@ -164,8 +164,8 @@ def test_image_create_from_local_file_demo(login, driver, image_names,
|
||||
"[label='QCOW2 - QEMU Emulator']").click()
|
||||
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Image {image_name} was successfully"
|
||||
f" created." in messages)
|
||||
assert (f"Success: Image {image_name} was successfully"
|
||||
f" created." in messages)
|
||||
assert openstack_demo.compute.find_image(image_name) is not None
|
||||
|
||||
|
||||
@@ -263,8 +263,8 @@ def test_image_create_from_local_file_admin(login, driver, image_names,
|
||||
"[label='QCOW2 - QEMU Emulator']").click()
|
||||
wizard.find_element_by_css_selector("button.btn-primary.finish").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Image {image_name} was successfully"
|
||||
f" created." in messages)
|
||||
assert (f"Success: Image {image_name} was successfully"
|
||||
f" created." in messages)
|
||||
assert openstack_admin.compute.find_image(image_name) is not None
|
||||
|
||||
|
||||
@@ -387,7 +387,7 @@ def test_remove_protected_image_admin(login, driver, image_names,
|
||||
if option.text == "Delete Image":
|
||||
pytest.fail("Delete option should not exist")
|
||||
actions_column.find_element_by_xpath(
|
||||
f".//*[normalize-space()='Edit Image']").click()
|
||||
".//*[normalize-space()='Edit Image']").click()
|
||||
wait_for_angular_readiness(driver)
|
||||
image_form = driver.find_element_by_css_selector(".ng-wizard")
|
||||
image_form.find_element_by_xpath(".//label[text()='No']").click()
|
||||
@@ -475,7 +475,7 @@ def test_update_image_metadata_admin(login, driver,
|
||||
image_form.find_element_by_xpath(
|
||||
"//button[@ng-click='modal.save()']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Success: Metadata was successfully updated." in messages
|
||||
assert "Success: Metadata was successfully updated." in messages
|
||||
image_id = new_image_admin.id
|
||||
for name, value in new_metadata.items():
|
||||
assert (openstack_admin.compute.get(f"/images/{image_id}").json(
|
||||
@@ -522,7 +522,7 @@ def test_launch_instance_from_image_admin(complete_default_test_network, login,
|
||||
wizard.find_element_by_css_selector(
|
||||
"button.btn-primary.finish").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Info: Scheduled creation of 1 instance." in messages
|
||||
assert "Info: Scheduled creation of 1 instance." in messages
|
||||
assert openstack_admin.compute.find_server(instance_name) is not None
|
||||
|
||||
|
||||
@@ -547,8 +547,8 @@ def test_create_volume_from_image_admin(login, driver, volume_name,
|
||||
name_field.clear()
|
||||
name_field.send_keys(volume_name)
|
||||
create_vol_btn = WebDriverWait(driver, config.selenium.page_timeout).until(
|
||||
EC.element_to_be_clickable((By.XPATH, f"//button[@class='btn "
|
||||
f"btn-primary finish']")))
|
||||
EC.element_to_be_clickable(
|
||||
(By.XPATH, "//button[@class='btn btn-primary finish']")))
|
||||
create_vol_btn.click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Info: Creating volume {volume_name}" in messages
|
||||
|
@@ -105,7 +105,7 @@ def apply_instance_name_filter(driver, config, name_pattern):
|
||||
driver.find_element_by_css_selector(
|
||||
f".table_search input[value='{name_pattern}']")
|
||||
break
|
||||
except(exceptions.NoSuchElementException):
|
||||
except (exceptions.NoSuchElementException):
|
||||
time.sleep(3)
|
||||
|
||||
|
||||
|
@@ -58,8 +58,8 @@ def test_create_keypair_demo(login, driver, openstack_demo, clear_keypair_demo,
|
||||
type_options.find_element_by_css_selector('option[label="SSH Key"]').click()
|
||||
keypair_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Key pair {keypair_name} was successfully created.'
|
||||
in messages)
|
||||
assert (f'Success: Key pair {keypair_name} was successfully created.'
|
||||
in messages)
|
||||
assert openstack_demo.compute.find_keypair(keypair_name) is not None
|
||||
|
||||
|
||||
|
@@ -19,8 +19,8 @@ from openstack_dashboard.test.selenium import widgets
|
||||
|
||||
@pytest.fixture
|
||||
def metadata_namespace_name():
|
||||
return('horizon_metadata_namespace_%s' %
|
||||
uuidutils.generate_uuid(dashed=False))
|
||||
return ('horizon_metadata_namespace_%s' %
|
||||
uuidutils.generate_uuid(dashed=False))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -78,8 +78,8 @@ def test_create_metadata_namespace(login, driver, metadata_namespace_name,
|
||||
namespace_form.find_element_by_id("id_direct_input").send_keys(namespace)
|
||||
namespace_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Namespace {metadata_namespace_name} "
|
||||
f"has been created." in messages)
|
||||
assert (f"Success: Namespace {metadata_namespace_name} "
|
||||
f"has been created." in messages)
|
||||
try:
|
||||
openstack_admin.image.get_metadef_namespace(metadata_namespace_name)
|
||||
assert True
|
||||
@@ -105,8 +105,8 @@ def test_delete_metadata_namespace(login, driver, new_metadata_namespace,
|
||||
widgets.select_from_dropdown(actions_column, "Delete Namespace")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Deleted Namespace: "
|
||||
f"{new_metadata_namespace.namespace}" in messages)
|
||||
assert (f"Success: Deleted Namespace: "
|
||||
f"{new_metadata_namespace.namespace}" in messages)
|
||||
try:
|
||||
openstack_admin.image.get_metadef_namespace(
|
||||
new_metadata_namespace.namespace)
|
||||
|
@@ -77,7 +77,7 @@ def ensure_checkbox(required_state, element):
|
||||
current_state = element.is_selected()
|
||||
if required_state != current_state:
|
||||
element.find_element_by_xpath(
|
||||
f".//following-sibling::label").click() # noqa: E231
|
||||
".//following-sibling::label").click() # noqa: E231
|
||||
|
||||
|
||||
def test_create_network_without_subnet_demo(login, openstack_demo, driver,
|
||||
|
@@ -126,7 +126,7 @@ def test_add_member_to_project(login, driver, project_name, openstack_admin,
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Success: Modified project "{project_name}".' in messages
|
||||
assert(openstack_admin.identity.validate_user_has_project_role(
|
||||
assert (openstack_admin.identity.validate_user_has_project_role(
|
||||
project=new_project,
|
||||
user=openstack_admin.identity.find_user(admin_name).id,
|
||||
role=openstack_admin.identity.find_role(regular_role_name).id,)
|
||||
@@ -157,9 +157,9 @@ def test_add_role_to_project_member(login, driver, openstack_admin, config,
|
||||
project_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Modified project '
|
||||
f'"{new_project_with_admin.name}".' in messages)
|
||||
assert(openstack_admin.identity.validate_user_has_project_role(
|
||||
assert (f'Success: Modified project '
|
||||
f'"{new_project_with_admin.name}".' in messages)
|
||||
assert (openstack_admin.identity.validate_user_has_project_role(
|
||||
project=new_project_with_admin,
|
||||
user=openstack_admin.identity.find_user(admin_name).id,
|
||||
role=openstack_admin.identity.find_role(regular_role_name).id,) and
|
||||
@@ -194,7 +194,7 @@ def test_add_group_to_project(login, driver, openstack_admin,
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Success: Modified project "{new_project.name}".' in messages
|
||||
assert(openstack_admin.identity.validate_group_has_project_role(
|
||||
assert (openstack_admin.identity.validate_group_has_project_role(
|
||||
project=new_project,
|
||||
group=openstack_admin.identity.find_group(group_name).id,
|
||||
role=openstack_admin.identity.find_role(regular_role_name).id,)
|
||||
@@ -226,9 +226,9 @@ def test_add_role_to_project_group(login, driver, openstack_admin, config,
|
||||
project_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Save']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Modified project '
|
||||
f'"{new_project_with_group.name}".' in messages)
|
||||
assert(openstack_admin.identity.validate_group_has_project_role(
|
||||
assert (f'Success: Modified project '
|
||||
f'"{new_project_with_group.name}".' in messages)
|
||||
assert (openstack_admin.identity.validate_group_has_project_role(
|
||||
project=new_project_with_group,
|
||||
group=openstack_admin.identity.find_group(group_name).id,
|
||||
role=openstack_admin.identity.find_role(regular_role_name).id,) and
|
||||
|
@@ -110,8 +110,8 @@ def test_create_router_demo(login, driver, router_name, openstack_demo,
|
||||
router_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Router']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Router {router_name} was successfully created.'
|
||||
in messages)
|
||||
assert (f'Success: Router {router_name} was successfully created.'
|
||||
in messages)
|
||||
assert openstack_demo.network.find_router(router_name) is not None
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ def test_router_delete_interface_demo(login, driver, router_name,
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Success: Deleted Interface: {extracted_port_name}" in messages
|
||||
assert(openstack_demo.network.find_port(
|
||||
assert (openstack_demo.network.find_port(
|
||||
new_interface['port_id']) is None)
|
||||
|
||||
|
||||
@@ -223,21 +223,21 @@ def test_router_set_gateway_demo(login, driver, new_router_demo,
|
||||
f"/routers/{new_router_demo.id}"
|
||||
f"?fields=id&fields=name&fields="
|
||||
f"external_gateway_info").json()['router']
|
||||
assert(router_sdk["external_gateway_info"] is None)
|
||||
assert (router_sdk["external_gateway_info"] is None)
|
||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||
gateway_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
widgets.select_from_specific_dropdown_in_form(
|
||||
gateway_form, 'id_network_id', config.network.external_network)
|
||||
gateway_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Success: Gateway interface is added" in messages
|
||||
assert "Success: Gateway interface is added" in messages
|
||||
router_sdk = openstack_demo.network.get(
|
||||
f"/routers/{new_router_demo.id}"
|
||||
f"?fields=id&fields=name&fields="
|
||||
f"external_gateway_info").json()['router']
|
||||
assert(router_sdk["external_gateway_info"]["network_id"] ==
|
||||
openstack_demo.network.find_network(
|
||||
config.network.external_network).id)
|
||||
assert (router_sdk["external_gateway_info"]["network_id"] ==
|
||||
openstack_demo.network.find_network(
|
||||
config.network.external_network).id)
|
||||
|
||||
|
||||
def test_router_clear_gateway_demo(login, driver, new_router_with_gateway,
|
||||
@@ -257,19 +257,19 @@ def test_router_clear_gateway_demo(login, driver, new_router_with_gateway,
|
||||
f"/routers/{new_router_with_gateway.id}"
|
||||
f"?fields=id&fields=name&fields="
|
||||
f"external_gateway_info").json()['router']
|
||||
assert(router_sdk["external_gateway_info"]["network_id"] ==
|
||||
openstack_demo.network.find_network(
|
||||
config.network.external_network).id)
|
||||
assert (router_sdk["external_gateway_info"]["network_id"] ==
|
||||
openstack_demo.network.find_network(
|
||||
config.network.external_network).id)
|
||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Cleared Gateway: {new_router_with_gateway.name}" in
|
||||
messages)
|
||||
assert (f"Success: Cleared Gateway: {new_router_with_gateway.name}" in
|
||||
messages)
|
||||
router_sdk = openstack_demo.network.get(
|
||||
f"/routers/{new_router_with_gateway.id}"
|
||||
f"?fields=id&fields=name&fields="
|
||||
f"external_gateway_info").json()['router']
|
||||
assert(router_sdk["external_gateway_info"] is None)
|
||||
assert (router_sdk["external_gateway_info"] is None)
|
||||
|
||||
|
||||
def test_create_router_admin(login, driver, router_name, openstack_admin,
|
||||
@@ -291,8 +291,8 @@ def test_create_router_admin(login, driver, router_name, openstack_admin,
|
||||
router_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Router']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Router {router_name} was successfully created.'
|
||||
in messages)
|
||||
assert (f'Success: Router {router_name} was successfully created.'
|
||||
in messages)
|
||||
assert openstack_admin.network.find_router(router_name) is not None
|
||||
|
||||
|
||||
|
@@ -67,10 +67,10 @@ def test_create_sec_group_demo(login, driver, config, sec_group_name,
|
||||
sec_group_form.find_element_by_id("id_name").send_keys(sec_group_name)
|
||||
sec_group_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Successfully created security group: {sec_group_name}'
|
||||
in messages)
|
||||
assert(openstack_demo.network.find_security_group(sec_group_name)
|
||||
is not None)
|
||||
assert (f'Success: Successfully created security group: {sec_group_name}'
|
||||
in messages)
|
||||
assert (openstack_demo.network.find_security_group(sec_group_name)
|
||||
is not None)
|
||||
|
||||
|
||||
def test_delete_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
||||
@@ -109,13 +109,13 @@ def test_add_rule_sec_group_demo(login, driver, sec_group_name, openstack_demo,
|
||||
rule_form.find_element_by_id("id_port").send_keys(rule_port)
|
||||
rule_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Successfully added rule: ALLOW IPv4 {rule_port}"
|
||||
f"/tcp from 0.0.0.0/0" in messages)
|
||||
assert (f"Success: Successfully added rule: ALLOW IPv4 {rule_port}"
|
||||
f"/tcp from 0.0.0.0/0" in messages)
|
||||
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
||||
sec_group_name).security_group_rules
|
||||
rule_port_found = False
|
||||
for rule_sdk in sec_group_rules_sdk:
|
||||
if(rule_sdk['port_range_min'] == rule_port and
|
||||
if (rule_sdk['port_range_min'] == rule_port and
|
||||
rule_sdk['port_range_max'] == rule_port):
|
||||
rule_port_found = True
|
||||
assert rule_port_found
|
||||
@@ -139,8 +139,8 @@ def test_delete_rule_sec_group_demo(login, driver, sec_group_name,
|
||||
rows[0].find_element_by_css_selector("td.actions_column").click()
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Deleted Rule: ALLOW IPv4 {rule_port}/tcp from 0.0.0.0/0"
|
||||
in messages)
|
||||
assert (f"Success: Deleted Rule: ALLOW IPv4 {rule_port}/tcp from 0.0.0.0/0"
|
||||
in messages)
|
||||
sec_group_rules_sdk = openstack_demo.network.find_security_group(
|
||||
sec_group_name).security_group_rules
|
||||
rule_port_found = False
|
||||
@@ -148,4 +148,4 @@ def test_delete_rule_sec_group_demo(login, driver, sec_group_name,
|
||||
if (rule_sdk['port_range_min'] == rule_port and
|
||||
rule_sdk['port_range_max'] == rule_port):
|
||||
rule_port_found = True
|
||||
assert not(rule_port_found)
|
||||
assert not (rule_port_found)
|
||||
|
@@ -51,7 +51,7 @@ def test_create_user_credential_totp(login, driver, openstack_admin, config,
|
||||
))
|
||||
driver.get(url)
|
||||
credentials_sdk_before = list(openstack_admin.identity.credentials())
|
||||
assert(len(credentials_sdk_before) == 0)
|
||||
assert (len(credentials_sdk_before) == 0)
|
||||
driver.find_element_by_link_text("Create User Credential").click()
|
||||
user_credential_form = driver.find_element_by_css_selector(
|
||||
".modal-dialog form")
|
||||
@@ -59,10 +59,10 @@ def test_create_user_credential_totp(login, driver, openstack_admin, config,
|
||||
user_credential_form, 'id_cred_type', 'TOTP')
|
||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Success: User credential created successfully.' in messages
|
||||
assert 'Success: User credential created successfully.' in messages
|
||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||
assert(len(credentials_sdk_after) == 1 and
|
||||
credentials_sdk_after[0]['type'] == 'totp')
|
||||
assert (len(credentials_sdk_after) == 1 and
|
||||
credentials_sdk_after[0]['type'] == 'totp')
|
||||
|
||||
|
||||
def test_create_user_credential_ec2(login, driver, openstack_admin, config,
|
||||
@@ -75,7 +75,7 @@ def test_create_user_credential_ec2(login, driver, openstack_admin, config,
|
||||
))
|
||||
driver.get(url)
|
||||
credentials_sdk_before = list(openstack_admin.identity.credentials())
|
||||
assert(len(credentials_sdk_before) == 0)
|
||||
assert (len(credentials_sdk_before) == 0)
|
||||
driver.find_element_by_link_text("Create User Credential").click()
|
||||
user_credential_form = driver.find_element_by_css_selector(
|
||||
".modal-dialog form")
|
||||
@@ -88,14 +88,14 @@ def test_create_user_credential_ec2(login, driver, openstack_admin, config,
|
||||
user_credential_form, 'id_project', 'admin')
|
||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Success: User credential created successfully.' in messages
|
||||
assert 'Success: User credential created successfully.' in messages
|
||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||
assert(len(credentials_sdk_after) == 1 and
|
||||
credentials_sdk_after[0]['type'] == 'ec2' and
|
||||
(credentials_sdk_after[0]['blob'] ==
|
||||
'{"access": "acs", "secret": "scrt"}') and
|
||||
(credentials_sdk_after[0]['project_id'] ==
|
||||
openstack_admin.identity.find_project('admin').id))
|
||||
assert (len(credentials_sdk_after) == 1 and
|
||||
credentials_sdk_after[0]['type'] == 'ec2' and
|
||||
(credentials_sdk_after[0]['blob'] ==
|
||||
'{"access": "acs", "secret": "scrt"}') and
|
||||
(credentials_sdk_after[0]['project_id'] ==
|
||||
openstack_admin.identity.find_project('admin').id))
|
||||
|
||||
|
||||
def test_delete_user_credential(login, driver, openstack_admin, config,
|
||||
@@ -114,10 +114,10 @@ def test_delete_user_credential(login, driver, openstack_admin, config,
|
||||
widgets.select_from_dropdown(actions_column, "Delete User Credential")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Deleted User Credential: {user_credential_blob}" in
|
||||
messages)
|
||||
assert (f"Success: Deleted User Credential: {user_credential_blob}" in
|
||||
messages)
|
||||
credentials_sdk_after = list(openstack_admin.identity.credentials())
|
||||
assert(len(credentials_sdk_after) == 0)
|
||||
assert (len(credentials_sdk_after) == 0)
|
||||
|
||||
|
||||
def test_edit_user_credential(login, driver, openstack_admin, config,
|
||||
@@ -140,10 +140,10 @@ def test_edit_user_credential(login, driver, openstack_admin, config,
|
||||
f"EDITED_{user_credential_blob}")
|
||||
user_credential_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: User credential updated successfully." in messages)
|
||||
assert ("Success: User credential updated successfully." in messages)
|
||||
credentials_sdk = list(openstack_admin.identity.credentials())
|
||||
assert(len(credentials_sdk) == 1 and
|
||||
credentials_sdk[0]['blob'] == f'EDITED_{user_credential_blob}')
|
||||
assert (len(credentials_sdk) == 1 and
|
||||
credentials_sdk[0]['blob'] == f'EDITED_{user_credential_blob}')
|
||||
|
||||
|
||||
def test_user_credential_filtration(login, driver, openstack_admin,
|
||||
@@ -163,12 +163,12 @@ def test_user_credential_filtration(login, driver, openstack_admin,
|
||||
try:
|
||||
driver.find_element_by_xpath(
|
||||
"//td[text()='No items to display.']")
|
||||
except(exceptions.NoSuchElementException):
|
||||
except exceptions.NoSuchElementException:
|
||||
assert False, "Message 'No items to display' not found"
|
||||
filter_input_field = driver.find_element_by_css_selector(".form-control")
|
||||
filter_input_field.clear()
|
||||
filter_input_field.send_keys('admin')
|
||||
driver.find_element_by_id("credentialstable__action_filter").click()
|
||||
rows = driver.find_elements_by_css_selector(
|
||||
f"table#credentialstable tr[data-display]")
|
||||
"table#credentialstable tr[data-display]")
|
||||
assert len(rows) == 1
|
||||
|
@@ -102,4 +102,4 @@ def test_change_user_password(login, driver, user_name, new_user, config):
|
||||
"id_confirm_password").send_keys(new_password)
|
||||
password_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Success: User password has been updated successfully." in messages
|
||||
assert "Success: User password has been updated successfully." in messages
|
||||
|
@@ -164,8 +164,8 @@ def test_create_volume_snapshot_demo(login, driver, volume_name,
|
||||
volume_snapshot_name)
|
||||
create_snap_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||
in messages)
|
||||
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||
in messages)
|
||||
assert (openstack_demo.block_storage.find_snapshot(volume_snapshot_name)
|
||||
is not None)
|
||||
|
||||
@@ -188,8 +188,8 @@ def test_delete_volume_snapshot_demo(login, driver, volume_snapshot_names,
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{volume_snapshot_name}" in messages)
|
||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{volume_snapshot_name}" in messages)
|
||||
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
||||
assert (openstack_demo.block_storage.find_snapshot(volume_snapshot_name)
|
||||
is None)
|
||||
@@ -217,9 +217,9 @@ def test_edit_volume_snapshot_description_demo(login, driver, openstack_demo,
|
||||
f"EDITED_Description for: {new_volume_snapshot_demo.name}")
|
||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Info: Updating volume snapshot '
|
||||
f'"{new_volume_snapshot_demo.name}"' in messages)
|
||||
assert(openstack_demo.block_storage.find_snapshot(
|
||||
assert (f'Info: Updating volume snapshot '
|
||||
f'"{new_volume_snapshot_demo.name}"' in messages)
|
||||
assert (openstack_demo.block_storage.find_snapshot(
|
||||
new_volume_snapshot_demo.name).description ==
|
||||
f"EDITED_Description for: {new_volume_snapshot_demo.name}")
|
||||
|
||||
@@ -247,8 +247,8 @@ def test_create_volume_from_volume_snapshot_demo(login, driver, openstack_demo,
|
||||
volume_from_snapshot_name)
|
||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Info: Creating volume "{volume_from_snapshot_name}"' in messages)
|
||||
assert(openstack_demo.block_storage.find_volume(
|
||||
assert (f'Info: Creating volume "{volume_from_snapshot_name}"' in messages)
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
volume_from_snapshot_name) is not None)
|
||||
|
||||
|
||||
@@ -270,12 +270,12 @@ def test_delete_volume_from_volume_snapshot_demo(login, driver, openstack_demo,
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Info: Scheduled deletion of Volume: "
|
||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||
assert (f"Info: Scheduled deletion of Volume: "
|
||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||
test_volumes.wait_for_volume_is_deleted(
|
||||
openstack_demo, new_volume_from_snapshot_demo.name)
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
new_volume_from_snapshot_demo.name)is None)
|
||||
new_volume_from_snapshot_demo.name) is None)
|
||||
|
||||
|
||||
def test_delete_snapshot_before_volume_demo(login, driver, openstack_demo,
|
||||
@@ -303,8 +303,8 @@ def test_delete_snapshot_before_volume_demo(login, driver, openstack_demo,
|
||||
"Delete Volume Snapshot")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{volume_snapshot_name}" in messages)
|
||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{volume_snapshot_name}" in messages)
|
||||
wait_for_volume_snapshot_is_deleted(openstack_demo, volume_snapshot_name)
|
||||
assert (openstack_demo.block_storage.find_snapshot(volume_snapshot_name)
|
||||
is None)
|
||||
@@ -323,8 +323,8 @@ def test_delete_snapshot_before_volume_demo(login, driver, openstack_demo,
|
||||
widgets.select_from_dropdown(actions_column_volume, "Delete Volume")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Info: Scheduled deletion of Volume: "
|
||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||
assert (f"Info: Scheduled deletion of Volume: "
|
||||
f"{new_volume_from_snapshot_demo.name}" in messages)
|
||||
test_volumes.wait_for_volume_is_deleted(
|
||||
openstack_demo, new_volume_from_snapshot_demo.name)
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
@@ -426,8 +426,8 @@ def test_create_volume_snapshot_admin(login, driver, new_volume_admin,
|
||||
volume_snapshot_name)
|
||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||
in messages)
|
||||
assert (f'Info: Creating volume snapshot "{volume_snapshot_name}".'
|
||||
in messages)
|
||||
assert (openstack_admin.block_storage.find_snapshot(volume_snapshot_name)
|
||||
is not None)
|
||||
|
||||
@@ -449,12 +449,12 @@ def test_delete_volume_snapshot_admin(login, driver, openstack_admin,
|
||||
widgets.select_from_dropdown(actions_column, "Delete Volume Snapshot")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{new_volume_snapshot_admin.name}" in messages)
|
||||
assert (f"Success: Scheduled deletion of Volume Snapshot: "
|
||||
f"{new_volume_snapshot_admin.name}" in messages)
|
||||
wait_for_volume_snapshot_is_deleted(openstack_admin,
|
||||
new_volume_snapshot_admin.name)
|
||||
assert (openstack_admin.block_storage.find_snapshot(
|
||||
new_volume_snapshot_admin.name)is None)
|
||||
new_volume_snapshot_admin.name) is None)
|
||||
|
||||
|
||||
def test_edit_volume_snapshot_description_admin(login, driver, openstack_admin,
|
||||
@@ -479,9 +479,9 @@ def test_edit_volume_snapshot_description_admin(login, driver, openstack_admin,
|
||||
f"EDITED_Description for: {new_volume_snapshot_admin.name}")
|
||||
snapshot_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Info: Updating volume snapshot '
|
||||
f'"{new_volume_snapshot_admin.name}"' in messages)
|
||||
assert(openstack_admin.block_storage.find_snapshot(
|
||||
assert (f'Info: Updating volume snapshot '
|
||||
f'"{new_volume_snapshot_admin.name}"' in messages)
|
||||
assert (openstack_admin.block_storage.find_snapshot(
|
||||
new_volume_snapshot_admin.name).description ==
|
||||
f"EDITED_Description for: {new_volume_snapshot_admin.name}")
|
||||
|
||||
|
@@ -144,8 +144,8 @@ def test_edit_volume_description_demo(login, driver, volume_name, config,
|
||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Info: Updating volume "{volume_name}"' in messages
|
||||
assert(openstack_demo.block_storage.find_volume(
|
||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||
|
||||
|
||||
def test_extend_volume_demo(login, driver, openstack_demo, new_volume_demo,
|
||||
@@ -161,7 +161,7 @@ def test_extend_volume_demo(login, driver, openstack_demo, new_volume_demo,
|
||||
f"table#volumes tr[data-display='{new_volume_demo.name}']"
|
||||
)
|
||||
assert len(rows) == 1
|
||||
assert(openstack_demo.block_storage.find_volume(
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
new_volume_demo.name).size == 1)
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Extend Volume")
|
||||
@@ -172,7 +172,7 @@ def test_extend_volume_demo(login, driver, openstack_demo, new_volume_demo,
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Info: Extending volume: "{new_volume_demo.name}"' in messages
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
assert(openstack_demo.block_storage.find_volume(
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
new_volume_demo.name).size == 2)
|
||||
|
||||
|
||||
@@ -218,7 +218,7 @@ def test_volume_launch_as_instance_demo(login, driver, openstack_demo,
|
||||
WebDriverWait(driver, config.selenium.page_timeout).until(
|
||||
EC.invisibility_of_element_located(actions_column))
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
assert(openstack_demo.block_storage.find_volume(
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
new_volume_demo.name).attachments[0]['server_id'] ==
|
||||
openstack_demo.compute.find_server(instance_name).id)
|
||||
|
||||
@@ -245,8 +245,8 @@ def test_volume_upload_to_image_demo(login, driver, openstack_demo,
|
||||
volume_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Upload']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Info: Successfully sent the request to upload volume to image for '
|
||||
f'volume: "{new_volume_demo.name}"' in messages)
|
||||
assert ('Info: Successfully sent the request to upload volume to image for '
|
||||
f'volume: "{new_volume_demo.name}"' in messages)
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
assert openstack_demo.compute.find_image(image_names[0]) is not None
|
||||
|
||||
@@ -346,10 +346,10 @@ def test_manage_volume_attachments(login, driver, openstack_demo,
|
||||
attach_to_instance_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Attach Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Info: Attaching volume {new_volume_demo.name} to instance "
|
||||
f"{new_instance_demo.name} on /dev/vdb." in messages)
|
||||
assert (f"Info: Attaching volume {new_volume_demo.name} to instance "
|
||||
f"{new_instance_demo.name} on /dev/vdb." in messages)
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
assert(openstack_demo.block_storage.find_volume(
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
new_volume_demo.id).attachments[0]['server_id'] ==
|
||||
new_instance_demo.id)
|
||||
|
||||
@@ -369,10 +369,10 @@ def test_manage_volume_attachments(login, driver, openstack_demo,
|
||||
driver.find_element_by_xpath(
|
||||
".//a[normalize-space()='Detach Volume']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Detaching Volume: Volume {new_volume_demo.name} "
|
||||
f"on instance {new_instance_demo.name}" in messages)
|
||||
assert (f"Success: Detaching Volume: Volume {new_volume_demo.name} "
|
||||
f"on instance {new_instance_demo.name}" in messages)
|
||||
wait_for_steady_state_of_volume(openstack_demo, new_volume_demo.name)
|
||||
assert(openstack_demo.block_storage.find_volume(
|
||||
assert (openstack_demo.block_storage.find_volume(
|
||||
new_volume_demo.id).attachments == [])
|
||||
|
||||
|
||||
@@ -470,8 +470,8 @@ def test_edit_volume_description_admin(login, driver, volume_name, config,
|
||||
volume_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Info: Updating volume "{volume_name}"' in messages
|
||||
assert(openstack_admin.block_storage.find_volume(
|
||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||
assert (openstack_admin.block_storage.find_volume(
|
||||
volume_name).description == f"EDITED_Description for: {volume_name}")
|
||||
|
||||
|
||||
@pytest.mark.parametrize('volume_name', [3], indirect=True)
|
||||
|
@@ -108,8 +108,8 @@ def test_create_volume_type(login, driver, volume_type_name, openstack_admin,
|
||||
volume_type_form.find_element_by_id("id_name").send_keys(volume_type_name)
|
||||
volume_type_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Successfully created volume '
|
||||
f'type: {volume_type_name}' in messages)
|
||||
assert (f'Success: Successfully created volume '
|
||||
f'type: {volume_type_name}' in messages)
|
||||
assert openstack_admin.block_storage.find_type(volume_type_name) is not None
|
||||
|
||||
|
||||
@@ -151,9 +151,9 @@ def test_volume_type_create_encryption(login, driver, openstack_admin, config,
|
||||
volume_type_form.find_element_by_css_selector(
|
||||
".btn-primary[value='Create Volume Type Encryption']").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Successfully created encryption for "
|
||||
f"volume type: {new_volume_type.name}" in messages)
|
||||
assert(openstack_admin.block_storage.get_type_encryption(
|
||||
assert (f"Success: Successfully created encryption for "
|
||||
f"volume type: {new_volume_type.name}" in messages)
|
||||
assert (openstack_admin.block_storage.get_type_encryption(
|
||||
new_volume_type.id).provider == 'plain')
|
||||
|
||||
|
||||
@@ -170,16 +170,16 @@ def test_volume_type_delete_encryption(login, driver, openstack_admin, config,
|
||||
f"table#volume_types tr[data-display="
|
||||
f"'{new_volume_type_with_encryption.name}']")
|
||||
assert len(rows) == 1
|
||||
assert(openstack_admin.block_storage.get_type_encryption(
|
||||
assert (openstack_admin.block_storage.get_type_encryption(
|
||||
new_volume_type_with_encryption.id).provider == 'plain')
|
||||
rows[0].find_element_by_css_selector(".data-table-action")
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
widgets.select_from_dropdown(actions_column, "Delete Encryption")
|
||||
widgets.confirm_modal(driver)
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f"Success: Deleted Encryption: "
|
||||
f"{new_volume_type_with_encryption.name}" in messages)
|
||||
assert(openstack_admin.block_storage.get_type_encryption(
|
||||
assert (f"Success: Deleted Encryption: "
|
||||
f"{new_volume_type_with_encryption.name}" in messages)
|
||||
assert (openstack_admin.block_storage.get_type_encryption(
|
||||
new_volume_type_with_encryption.id).provider is None)
|
||||
|
||||
|
||||
@@ -197,12 +197,12 @@ def test_create_qos_spec(login, driver, qos_spec_name, openstack_admin,
|
||||
volume_qos_form.find_element_by_id("id_name").send_keys(qos_spec_name)
|
||||
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert(f'Success: Successfully created QoS '
|
||||
f'Spec: {qos_spec_name}' in messages)
|
||||
assert (f'Success: Successfully created QoS '
|
||||
f'Spec: {qos_spec_name}' in messages)
|
||||
qos_specs = openstack_admin.block_storage.get(
|
||||
"/qos-specs").json()['qos_specs']
|
||||
assert(len([spec for spec in qos_specs if qos_spec_name ==
|
||||
spec['name']]) > 0)
|
||||
assert (len([spec for spec in qos_specs if qos_spec_name ==
|
||||
spec['name']]) > 0)
|
||||
|
||||
|
||||
def test_delete_qos_spec(login, driver, qos_spec_name, openstack_admin,
|
||||
@@ -224,8 +224,8 @@ def test_delete_qos_spec(login, driver, qos_spec_name, openstack_admin,
|
||||
assert f"Success: Deleted QoS Spec: {qos_spec_name}" in messages
|
||||
qos_specs = openstack_admin.block_storage.get(
|
||||
"/qos-specs").json()['qos_specs']
|
||||
assert(len([spec for spec in qos_specs if qos_spec_name ==
|
||||
spec['name']]) == 0)
|
||||
assert (len([spec for spec in qos_specs if qos_spec_name ==
|
||||
spec['name']]) == 0)
|
||||
|
||||
|
||||
def test_edit_qos_spec_consumer(login, driver, openstack_admin, config,
|
||||
@@ -240,7 +240,7 @@ def test_edit_qos_spec_consumer(login, driver, openstack_admin, config,
|
||||
rows = driver.find_elements_by_css_selector(
|
||||
f"table#qos_specs tr[data-display='{new_qos_spec['name']}']")
|
||||
assert len(rows) == 1
|
||||
assert(openstack_admin.block_storage.get(
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['consumer'] ==
|
||||
'back-end')
|
||||
actions_column = rows[0].find_element_by_css_selector("td.actions_column")
|
||||
@@ -249,8 +249,8 @@ def test_edit_qos_spec_consumer(login, driver, openstack_admin, config,
|
||||
widgets.select_from_dropdown(volume_qos_form, 'front-end')
|
||||
volume_qos_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Success: Successfully modified QoS Spec consumer." in messages
|
||||
assert(openstack_admin.block_storage.get(
|
||||
assert "Success: Successfully modified QoS Spec consumer." in messages
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['consumer'] ==
|
||||
'front-end')
|
||||
|
||||
@@ -275,8 +275,8 @@ def test_qos_spec_create_extra_specs(login, driver, openstack_admin, config,
|
||||
extra_specs_form.find_element_by_id("id_value").send_keys(20)
|
||||
extra_specs_form.find_element_by_css_selector(".btn-primary").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f'Success: Created spec "minIOPS".' in messages
|
||||
assert(openstack_admin.block_storage.get(
|
||||
assert 'Success: Created spec "minIOPS".' in messages
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec['id']}").json()['qos_specs']['specs'] ==
|
||||
{'minIOPS': '20'})
|
||||
|
||||
@@ -294,13 +294,13 @@ def test_qos_spec_delete_extra_specs(login, driver, openstack_admin, config,
|
||||
f'table#qos_specs tr[data-display="'
|
||||
f'{new_qos_spec_with_extra_specs["name"]}"]')
|
||||
assert len(rows) == 1
|
||||
assert(openstack_admin.block_storage.get(
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec_with_extra_specs['id']}").json()
|
||||
['qos_specs']['specs'] == {'maxIOPS': '5000'})
|
||||
rows[0].find_element_by_css_selector(".data-table-action").click()
|
||||
volume_qos_form = driver.find_element_by_css_selector(".modal-dialog form")
|
||||
rows_extra = volume_qos_form.find_elements_by_css_selector(
|
||||
f"table#specs tr[data-display='maxIOPS']")
|
||||
"table#specs tr[data-display='maxIOPS']")
|
||||
assert len(rows_extra) == 1
|
||||
actions_column = rows_extra[0].find_element_by_css_selector(
|
||||
"td.actions_column")
|
||||
@@ -308,7 +308,7 @@ def test_qos_spec_delete_extra_specs(login, driver, openstack_admin, config,
|
||||
driver.find_element_by_css_selector(
|
||||
".modal-dialog .modal-footer .btn-danger").click()
|
||||
messages = widgets.get_and_dismiss_messages(driver)
|
||||
assert f"Success: Deleted Spec: maxIOPS" in messages
|
||||
assert(openstack_admin.block_storage.get(
|
||||
assert "Success: Deleted Spec: maxIOPS" in messages
|
||||
assert (openstack_admin.block_storage.get(
|
||||
f"/qos-specs/{new_qos_spec_with_extra_specs['id']}").json()
|
||||
['qos_specs']['specs'] == {})
|
||||
|
@@ -61,9 +61,10 @@ def test_delete_multiple_instance_rows(live_server, driver, dashboard_data,
|
||||
def test_delete_multiple_images_rows(live_server, driver, dashboard_data,
|
||||
user):
|
||||
with mock.patch.object(
|
||||
api.glance, 'image_list_detailed') as mocked_i_l_d,\
|
||||
api.glance, 'image_list_detailed') as mocked_i_l_d, \
|
||||
mock.patch.object(
|
||||
api.glance, 'metadefs_namespace_full_list') as mocked_m_n_f_l,\
|
||||
api.glance,
|
||||
'metadefs_namespace_full_list') as mocked_m_n_f_l, \
|
||||
mock.patch.object(
|
||||
api.glance, 'image_delete') as mocked_i_d:
|
||||
mocked_i_l_d.return_value = (
|
||||
|
@@ -52,26 +52,26 @@ def test_vcpu_pcpu_data_display(live_server, driver, user, dashboard_data):
|
||||
|
||||
driver.get(live_server.url + '/admin/hypervisors')
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='vCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
f"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
f"span[1]").text == str(p['vcpus_used']))
|
||||
"//*[normalize-space()='vCPU Usage']/"
|
||||
"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
"span[1]").text == str(p['vcpus_used']))
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='vCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
f"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
f"span[2]").text == str(p['vcpus_capacity']))
|
||||
"//*[normalize-space()='vCPU Usage']/"
|
||||
"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
"span[2]").text == str(p['vcpus_capacity']))
|
||||
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='pCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
f"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
f"span[1]").text == str(p['pcpus_used']))
|
||||
"//*[normalize-space()='pCPU Usage']/"
|
||||
"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
"span[1]").text == str(p['pcpus_used']))
|
||||
assert (driver.find_element_by_xpath(
|
||||
f"//*[normalize-space()='pCPU Usage']/"
|
||||
f"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
f"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
f"span[2]").text == str(p['pcpus_capacity']))
|
||||
"//*[normalize-space()='pCPU Usage']/"
|
||||
"ancestor::div[contains(@class,'d3_quota_bar')]" # noqa: E231
|
||||
"/div[contains(@class,'h6')]/" # noqa: E231
|
||||
"span[2]").text == str(p['pcpus_capacity']))
|
||||
|
||||
driver.find_element_by_link_text("Resource Provider").click()
|
||||
resource_provider_tab = driver.find_element_by_id(
|
||||
|
@@ -37,7 +37,8 @@ def test_switch_to_material_theme(live_server, driver, user, config):
|
||||
driver.find_element_by_css_selector(".navbar-default")))
|
||||
options = user_dropdown_menu.find_element_by_css_selector(
|
||||
"ul.dropdown-menu[id='editor_list']")
|
||||
options.find_element_by_xpath(f".//*[normalize-space()='Material']").click()
|
||||
options.find_element_by_xpath(
|
||||
".//*[normalize-space()='Material']").click()
|
||||
WebDriverWait(driver, config.selenium.page_timeout).until(
|
||||
EC.visibility_of_element_located((By.CSS_SELECTOR, '.material-header')))
|
||||
user_dropdown_menu = driver.find_element_by_css_selector(
|
||||
|
@@ -11,6 +11,7 @@
|
||||
# under the License.
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
from selenium.common import exceptions
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
|
8
tox.ini
8
tox.ini
@@ -18,7 +18,7 @@ deps =
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
-r{toxinidir}/requirements.txt
|
||||
# Unit test for a local hacking rule requires hacking.
|
||||
hacking>=3.0.1,<3.1.0 # Apache-2.0
|
||||
hacking>=7.0.0,<7.1.0 # Apache-2.0
|
||||
commands =
|
||||
dj42: pip install django>=4.2,<4.3
|
||||
find . -type f -name "*.pyc" -delete
|
||||
@@ -30,7 +30,7 @@ commands = {posargs}
|
||||
[testenv:pep8]
|
||||
deps =
|
||||
{[testenv]deps}
|
||||
flake8-import-order==0.12 # LGPLv3
|
||||
flake8-import-order>=0.18.0,<0.19.0 # LGPLv3
|
||||
pylint==3.3.1 # GPLv2
|
||||
bandit[baseline]>=1.7.7 # Apache-2.0
|
||||
setenv =
|
||||
@@ -198,7 +198,9 @@ exclude = .git,.tox,dist,*lib/python*,*egg,build,panel_template,dash_template,lo
|
||||
# Existing codes follows W503, so we disable W504.)
|
||||
# F405 TEMPLATES may be undefined, or defined from star imports
|
||||
# (because it is not easy to avoid this in openstack_dashboard.test.settings)
|
||||
ignore = W504,F405
|
||||
# I201 Missing newline between import groups.
|
||||
# I202 Additional newline in a group of imports.
|
||||
ignore = W504,F405,I201,I202
|
||||
# Enable the following hacking rules which are disabled by default
|
||||
# H106 Do not put vim configuration in source files.
|
||||
# H203 Use assertIs(Not)None to check for None.
|
||||
|
Reference in New Issue
Block a user