Source code for stepler.horizon.steps.flavors

"""
-------------
Flavors steps
-------------
"""

# 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 hamcrest import assert_that, equal_to  # noqa H301

from stepler.horizon.steps import base
from stepler.third_party import steps_checker
from stepler.third_party import utils


[docs]class FlavorsSteps(base.BaseSteps): """Flavors steps.""" def _page_flavors(self): """Open flavors page if it isn't opened.""" return self._open(self.app.page_flavors) @steps_checker.step
[docs] def create_flavor(self, flavor_name=None, cpu_count=1, ram=1024, root_disk=1, check=True): """Step to create flavor.""" flavor_name = flavor_name or next(utils.generate_ids('flavor')) page_flavors = self._page_flavors() page_flavors.button_create_flavor.click() with page_flavors.form_create_flavor as form: form.field_name.value = flavor_name form.field_vcpus.value = cpu_count form.field_ram.value = ram form.field_root_disk.value = root_disk form.submit() if check: self.close_notification('success') page_flavors.table_flavors.row( name=flavor_name).wait_for_presence() return flavor_name
@steps_checker.step
[docs] def delete_flavor(self, flavor_name, check=True): """Step to delete flavor.""" page_flavors = self._page_flavors() with page_flavors.table_flavors.row( name=flavor_name).dropdown_menu as menu: menu.button_toggle.click() menu.item_delete.click() page_flavors.form_confirm.submit() if check: self.close_notification('success') page_flavors.table_flavors.row( name=flavor_name).wait_for_absence()
@steps_checker.step
[docs] def delete_flavors(self, flavor_names, check=True): """Step to delete flavors as batch.""" page_flavors = self._page_flavors() for flavor_name in flavor_names: page_flavors.table_flavors.row( name=flavor_name).checkbox.select() page_flavors.button_delete_flavors.click() page_flavors.form_confirm.submit() if check: self.close_notification('success') for flavor_name in flavor_names: page_flavors.table_flavors.row( name=flavor_name).wait_for_absence()
@steps_checker.step
[docs] def update_flavor(self, flavor_name, new_flavor_name=None, check=True): """Step to update flavor.""" page_flavors = self._page_flavors() page_flavors.table_flavors.row( name=flavor_name).dropdown_menu.item_default.click() with page_flavors.form_update_flavor as form: form.label_info.click() if new_flavor_name: form.field_name.value = new_flavor_name form.submit() if check: self.close_notification('success') page_flavors.table_flavors.row( name=new_flavor_name or flavor_name).wait_for_presence()
@steps_checker.step
[docs] def update_metadata(self, flavor_name, metadata, check=True): """Step to update flavor metadata.""" page_flavors = self._page_flavors() with page_flavors.table_flavors.row( name=flavor_name).dropdown_menu as menu: menu.button_toggle.click() menu.item_update_metadata.click() with page_flavors.form_update_metadata as form: for metadata_name, metadata_value in metadata.items(): form.field_metadata_name.value = metadata_name form.button_add_metadata.click() form.list_metadata.row( metadata_name).field_metadata_value.value = metadata_value form.submit() if check: page_flavors.table_flavors.row( name=flavor_name).wait_for_presence() flavor_metadata = self.get_metadata(flavor_name) assert_that(flavor_metadata, equal_to(metadata))
@steps_checker.step
[docs] def get_metadata(self, flavor_name): """Step to get flavor metadata.""" metadata = {} page_flavors = self._page_flavors() with page_flavors.table_flavors.row( name=flavor_name).dropdown_menu as menu: menu.button_toggle.click() menu.item_update_metadata.click() for row in page_flavors.form_update_metadata.list_metadata.rows: metadata[row.field_metadata_name.value] = \ row.field_metadata_value.value page_flavors.form_update_metadata.cancel() return metadata
@steps_checker.step
[docs] def modify_access(self, flavor_name, project, check=True): """Step to modify flavor access.""" page_flavors = self._page_flavors() with page_flavors.table_flavors.row( name=flavor_name).dropdown_menu as menu: menu.button_toggle.click() menu.item_modify_access.click() with page_flavors.form_update_flavor as form: form.label_access.click() form.list_available_projects.row(project).button_add.click() form.submit() if check: self.close_notification('success') page_flavors.table_flavors.row( name=flavor_name).wait_for_presence()