def set_value(self, value): value = self.__check_value(value) res = ResultList("Set checkbox [{}] to: [{}]".format( self._element_name, value )) if not self.get_value() == value: res.push( ActionBot().click( self.get_element(), self._element_name, self._type, invisible=True ) ) else: res.push( Result( "The checkbox [{}] already set to: [{}]".format( self._element_name, value ) ) ) return res
def verify_nodes_not_exist(self, *args): rl = ResultList("Verify nodes not exist") for name in args: rl.push( Result("Node [{name}] not exists".format(name=name), self.node.find(name=name).is_not_found())) return rl
def select_nodes(self, *args): rl = ResultList("Select nodes") for name in args: node = Node(Cluster_Nodes_ListView().node.find( name=name).get_element()) rl.push(node.select()) return rl
def verify_nodelists_visibility(self, value, *roles): rl = ResultList("Verify node lists visibility") for role in roles: rl.push(VerifyBot().verify_visibility( self.nodelist.find(role=role).get_element(), value, "'{role}' nodelist")) return rl
def verify_error_contains(self, *args): rl = ResultList("Verify error alert contains") for string in args: rl.push(Result( "String [{string}] exists".format(string=string), self.alertError.get_value().find(string) != -1 )) return rl
def populate(self, name, password, server=None, key=None): rl = ResultList("Populate dialog")\ .push(self.rh_user.set_value(name))\ .push(self.rh_password.set_value(password)) if server is not None: rl.push(self.satellite_server.set_value(server))\ .push(self.activation_key.set_value(key)) return rl
def verify_nodes_not_exist(self, *args): rl = ResultList("Verify nodes not exist") for name in args: rl.push(Result( "Node [{name}] not exists".format(name=name), self.node.find(name=name).is_not_found() )) return rl
def select_nodes(self, *args): rl = ResultList("Select nodes") for name in args: node = Node(self.node.find(name=name).get_element()) rl.push(node.select()) rl.push(self.apply()) WaitBot().wait_for_disappears(By.XPATH, "//div[contains(@class,'nodes-screen')]") WaitBot().wait_for_displays(By.XPATH, "//div[@class='nodes-by-roles-screen']") return rl
def select_environment_mode(self, deploymentMode): rl = ResultList( "Select environment mode [{mode}]".format( mode=deploymentMode) ) rl.push(self.click_deployment_mode()) rl.push(EnvironmentDeploymentModeDialog().populate( deploymentMode=deploymentMode, submit=True )) return rl
def populate(self, name, version, submit=False): environment = Storage.get_current(TD_Cluster.NAME) environment.name = name environment.version = version rl = ResultList("Populate create new Environment dialog") \ .push(self.name.set_value(name)) \ .push(self.version.set_value(version)) if submit: rl.push(self.create()) return rl
def remove_all(self): rl = ResultList("Remove all existing environments") _list = [] for env in self.get_clusters(): _list.append(env.get_name()) rl.info("There is(are) {} environments to remove. Names: {}".format( len(_list), str(_list) )) for name in _list: rl.push(self.remove(name)) rl.info("All environments were removed") return rl
def verify_controls_presence(self, licence): rl = ResultList( "Verify controls presence on form for {}".format(licence)) if licence == "RHSM": rl.push(self.rh_user.verify_visible(True)) \ .push(self.rh_password.verify_visible(True)) \ .push(self.satellite_server.verify_visible(False)) \ .push(self.activation_key.verify_visible(False)) else: rl.push(self.rh_user.verify_visible(True)) \ .push(self.rh_password.verify_visible(True)) \ .push(self.satellite_server.verify_visible(True)) \ .push(self.activation_key.verify_visible(True)) return rl
def verify_error(self, obj, args, value, error_class="error", simple_class=""): rl = ResultList( "Set '{args}' and verify validation".format(args=args)).\ push(obj.set_value(args)) if value: rl.push(obj.verify_attribute("class", simple_class)) else: rl.push(obj.verify_attribute("class", error_class)) return rl
def wait_downloading(self, release_name): rl = ResultList( "Wait release downloading done: {}".format(release_name)) row = self.get_release_row(release_name=release_name) rl.push(self.progress.find(row=row, column=3).verify_visible(True)) rl.info("Release download started") if self.get_wait_bot().wait_for_web_element_disappears( web_element=self.progress.get_element(), timeout=20, poll_frequency=3) is not None: rl.info("Release download done") else: rl.push(Result("Release download failed on timeout", False)) return rl
def verify_controls_presence(self, licence): rl = ResultList( "Verify controls presence on form for {}".format(licence) ) if licence == "RHSM": rl.push(self.rh_user.verify_visible(True)) \ .push(self.rh_password.verify_visible(True)) \ .push(self.satellite_server.verify_visible(False)) \ .push(self.activation_key.verify_visible(False)) else: rl.push(self.rh_user.verify_visible(True)) \ .push(self.rh_password.verify_visible(True)) \ .push(self.satellite_server.verify_visible(True)) \ .push(self.activation_key.verify_visible(True)) return rl
def verify_volume_size_is_identical(self, name): rl = ResultList("Verify volume size is identical everywhere") group_box_size = self.get_volume_group_box(name).size.get_value() group_box_size = group_box_size.encode().replace(' ', '') group_box_size = group_box_size.encode().replace(',', '') group_box_size = float(group_box_size) if (group_box_size > 1024.0): group_box_size = group_box_size / 1024.0 if (group_box_size > 256.0): group_box_size = group_box_size / 1024.0 group_box_size = round(group_box_size, 1) if self.get_volume_group(name).size.get_value().encode() != "": rl.push( self.get_volume_group(name).size.verify_value_contains( str(group_box_size))) return rl
def assign_roles_to_nodes(self, roles, node_names): rl = ResultList("Select nodes and assign roles") rl.push(self.select_nodes(*node_names)) rl.push(self.select_roles(*roles)) rl.push(self.apply()) ActionBot().wait_for_time(2) return rl
def select_environment_mode(self, deploymentMode): rl = ResultList( "Select environment mode [{mode}]".format( mode=deploymentMode) ) rl.push(self.click_deployment_mode()) rl.push(CreateEnvironmentDialog().select_deployment_mode( deploymentMode )) rl.push(CreateEnvironmentDialog().clickNext()) return rl
def verify_error_amount(self, arg_number, value, arg_start_range=1, arg_end_range=None): rl = ResultList("Verify validation of field number of networks" " with value '{args}'".format(args=arg_number)) rl.push( self.vm_networks_vlan_id_range_start.set_value(arg_start_range)) rl.push(self.verify_amount(arg_number, value)) if arg_end_range is not None: rl.push( self.vm_networks_vlan_id_range_end.verify_value(arg_end_range)) return rl
def create_environment(self, settings): """ :param settings: { "name": "", "version": "", "rh": { "mode": "", "username": "", "password": "", "host": "", "activation_key": "" }, "deployment_mode": "", "compute_type": "", "network": "", "storage": { "cinder": "", "glance": "" }, "services":{ "savanna": True, "murano": True } } """ rl = ResultList("Create new environment") rl.push(self.populate(settings, True)) rl.push(self.select_deployment_mode(settings["deployment_mode"])) rl.push(self.clickNext(())) #Set compute type (hypervisor) if "compute_type" in settings: rl.push(self.set_parameter_radio( settings["compute_type"], Radio.VALUE_ON)) rl.push(self.clickNext()) # Set network type if "network" in settings: rl.push(self.set_parameter_radio( settings["network"], Radio.VALUE_ON)) rl.push(self.clickNext()) if "storage" in settings: storage = settings["storage"] # Set cinder backend if "cinder" in storage: rl.push( self.storage_cinder.find(storage["cinder"]) .set_value(Radio.VALUE_ON)) # Set glance backend if "glance" in storage: rl.push( self.storage_glance.find(storage["glance"]) .set_value(Radio.VALUE_ON)) rl.push(self.clickNext()) if "services" in settings: services = settings["services"] if "savanna" in services and services["savanna"]: rl.push(self.set_parameter_checkbox( "Install Savanna", Checkbox.VALUE_ON)) if "murano" in services and services["murano"]: rl.push(self.set_parameter_checkbox( "Install Murano", Checkbox.VALUE_ON)) rl.push(self.clickNext()) rl.push(self.create()) return rl
def click_disk_map(self): rl = ResultList("Click disk map") rl.push(self.disk_map.click()) WaitBot().wait_for_web_element_stop_resizing( self.disk_map.find().get_element()) return rl
def select_roles(self, *roles): rl = ResultList("Select roles") for role in roles: rl.push(RolesPanel().checkbox_role.find(role=role).set_value('on')) return rl
def verify_volume_size_is_identical(self, name): rl = ResultList("Verify volume size is identical everywhere") group_box_size = self.get_volume_group_box(name).size.get_value() rl.push(self.get_volume_group(name).size.verify_value_contains( group_box_size)) return rl
def delete_nodes(self, *args): rl = ResultList("Delete nodes") rl.push(self.select_nodes(*args)) rl.push(self.deleteNodes.click_and_wait()) rl.push(DeleteNodeDialog().delete()) return rl
def click_nodes(self, *args): rl = ResultList("Select nodes") for name in args: node = Node(self.node.find(name=name).get_element()) rl.push(node.select()) return rl
def verify_visibility_vlan_manager_fields(self, value): rl = ResultList("Verify vlan manager fields " "are visible: {value}".format(value=value)) rl.push(VerifyBot().verify_visibility( NetworkSettingsView().vm_networks_number_of_networks.get_element(), value, "Number of networks")) rl.push(VerifyBot().verify_visibility( NetworkSettingsView().vm_networks_size_of_networks.get_element(), value, "Size of networks")) if value: rl.push(VerifyBot().verify_visibility( NetworkSettingsView().vm_networks_vlan_id_range_start. get_element(), value, "Start of VLAN ID range")) rl.push(VerifyBot().verify_visibility( NetworkSettingsView().vm_networks_vlan_id_range_end. get_element(), value, "End of VLAN ID range")) else: rl.push(VerifyBot().verify_visibility( NetworkSettingsView().vm_networks_vlan_id_range_start, value, "Start of VLAN ID range")) rl.push(VerifyBot().verify_visibility( NetworkSettingsView().vm_networks_vlan_id_range_end, value, "End of VLAN ID range")) return rl
def populate(self, settings, clickNext=False): environment = Storage.get_current(TD_Cluster.NAME) environment.name = settings["name"] environment.version = settings["version"] rl = ResultList("Populate create new Environment dialog") rl.push(self.name.set_value(settings["name"])) rl.push(WaitBot().wait_loading()) rl.push(self.version.set_value(settings["version"])) rl.push(self.name.click()) if "rh" in settings and len(settings["rh"]) > 0 and \ self.instruction.is_visible(): rh = settings["rh"] self.wait_loading() rl.push(self.select_download_mode(rh["mode"])) rl.push(self.username.set_value(rh["username"])) rl.push(self.password.set_value(rh["password"])) if rh["mode"] == 'rhn': rl.push(self.serverHostname.set_value(rh["host"])) rl.push(self.activationKey.set_value(rh["activation_key"])) if clickNext: self.wait_loading() rl.push(self.clickNext()) WaitBot().wait_loading() return rl
def remove_all(self): rl = ResultList("Remove all existing environments") for env in self.get_clusters(): rl.push(self.remove(env.get_name())) rl.info("All environments were removed") return rl
def populate(self, deploymentMode, submit=False): rl = ResultList("Populate Environment mode")\ .push(self.select_deployment_mode(deploymentMode)) if submit: rl.push(self.apply()) return rl
def select(self, name): rl = ResultList("Select environment [{}]".format(name)) rl.push(self.environment.find(name=name).click_and_wait()) rl.push(self.get_wait_bot().wait_for_time(2)) return rl