def create_volume(self, volume_name, description=None, volume_source_type=None, source_name=None, type=None, volume_size=None, availability_zone=None, fail_ok=False): volume_form = self.volumes_table.create_volume() volume_form.name.text = volume_name if description is not None: volume_form.description.text = description if volume_source_type is not None: volume_form.volume_source_type.text = volume_source_type if volume_source_type == 'Image': volume_form.image_source.text = source_name if type is not None: volume_form.type.text = type if volume_source_type == 'Volume': volume_form.volume_source.text = source_name if volume_size is not None: volume_form.size.value = volume_size if availability_zone is not None: volume_form.availability_zone.text = availability_zone volume_form.submit() if not self.find_message_and_dismiss(messages.INFO): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to create volume {}".format(volume_name) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError("No info message found after creating volume {}".format(volume_name)) succ_msg = "Volume {} is successfully created.".format(volume_name) LOG.info(succ_msg) return 0, succ_msg
def edit_dns(self, server1=None, server2=None, server3=None, cancel=False, fail_ok=False): edit_form = self.dns_table.edit_dns() if server1 is not None: edit_form.NAMESERVER_1.text = server1 if server2 is not None: edit_form.NAMESERVER_2.text = server2 if server3 is not None: edit_form.NAMESERVER_3.text = server3 if cancel: edit_form.cancel() else: edit_form.submit() if not self.find_message_and_dismiss(messages.SUCCESS): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to edit DNS" LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError( "No info message found after editing DNS") succ_msg = "DNS is successfully updated." LOG.info(succ_msg) return 0, succ_msg
def check_horizon_displays(self, expt_horizon, table_name): horizon_value = None for horizon_header in expt_horizon: if table_name == self.systems_table.name: horizon_value = self.get_system_info(name=expt_horizon['Name'], header=horizon_header) elif table_name == self.address_pools_table.name: horizon_value = self.get_address_pool_info( name=expt_horizon['Name'], header=horizon_header) elif table_name == self.ptp_table.name: horizon_value = self.get_ptp_info( enabled=expt_horizon['PTP Enabled'], header=horizon_header) elif table_name == self.oam_table.name: horizon_value = self.get_oam_info( subnet=expt_horizon['OAM Subnet'], header=horizon_header) elif table_name == self.controllerfs_table.name: horizon_value = self.get_controllerfs_info( storage_name=expt_horizon['Storage Name'], header=horizon_header) elif table_name == self.ceph_storage_pools_table.name: horizon_value = self.get_ceph_storage_pools_info( tier_name=expt_horizon['Ceph Storage Tier'], header=horizon_header) if str(expt_horizon[horizon_header]) != horizon_value: err_msg = '{} display incorrectly'.format(horizon_header) raise exceptions.HorizonError(err_msg) succ_msg = 'All content display correctly' LOG.info(succ_msg)
def update_address_pool(self, name, new_name=None, new_order=None, new_ranges=None, fail_ok=False): row = self._get_row_with_address_pool_name(name) edit_form = self.address_pools_table.update_address_pool(row) if new_name is not None: edit_form.name.text = new_name if new_order is not None: edit_form.order.text = new_order if new_ranges is not None: edit_form.ranges.text = new_ranges edit_form.submit() if not self.find_message_and_dismiss(messages.INFO): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to update address pool {}".format(name) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError( "No info message found after updating address pool {}". format(name)) succ_msg = "Address pool {} is successfully updated.".format(name) LOG.info(succ_msg) return 0, succ_msg
def create_address_pool(self, name, network, order=None, ranges=None, fail_ok=False): create_form = self.address_pools_table.create_address_pool() create_form.name.text = name create_form.network.text = network if order is not None: create_form.order.text = order if ranges is not None: create_form.ranges.text = ranges create_form.submit() if not self.find_message_and_dismiss(messages.SUCCESS): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to create address pool {}".format(name) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError( "No info message found after creating address pool {}". format(name)) succ_msg = "Address pool {} is successfully created.".format(name) LOG.info(succ_msg) return 0, succ_msg
def edit_volume(self, name, new_name=None, description=None, bootable=None, fail_ok=False): row = self._get_row_with_volume_name(name) volume_edit_form = self.volumes_table.edit_volume(row) if new_name is not None: volume_edit_form.name.text = new_name if description is not None: volume_edit_form.description.text = description if bootable is True: volume_edit_form.bootable.mark() if bootable is False: volume_edit_form.bootable.unmark() volume_edit_form.submit() if not self.find_message_and_dismiss(messages.INFO): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to edit volume {}".format(name) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError("No info message found after " "editing volume {}".format(name)) succ_msg = "Volume {} is successfully edited.".format(name) LOG.info(succ_msg) return 0, succ_msg
def select_element_by_name(self, name): for element in self._get_elements(*self._element_locator): if name == element.text: element.click() return else: raise exceptions.HorizonError('{} not found'.format(name))
def attach_volume_to_instance(self, volume, instance, fail_ok=False): row = self._get_row_with_volume_name(volume) attach_form = self.volumes_table.manage_attachments(row) attach_form.attach_instance(instance) if not self.find_message_and_dismiss(messages.INFO): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to attach volume {}".format(volume) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError("No info message found after attaching volume {}".format(volume)) succ_msg = "Volume {} is successfully attached.".format(volume) LOG.info(succ_msg) return 0, succ_msg
def extend_volume(self, name, new_size, fail_ok=False): row = self._get_row_with_volume_name(name) extend_volume_form = self.volumes_table.extend_volume(row) extend_volume_form.new_size.value = new_size extend_volume_form.submit() if not self.find_message_and_dismiss(messages.INFO): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to extend volume {}".format(name) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError("No info message found after extending volume {}".format(name)) succ_msg = "Volume {} is successfully extended.".format(name) LOG.info(succ_msg) return 0, succ_msg
def delete_volume(self, name, fail_ok=False): row = self._get_row_with_volume_name(name) row.mark() confirm_delete_volumes_form = self.volumes_table.delete_volume() confirm_delete_volumes_form.submit() if not self.find_message_and_dismiss(messages.INFO): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to delete volume {}".format(name) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError("No success message found after deleting volume {}".format(name)) succ_msg = "Volume {} is successfully deleted.".format(name) LOG.info(succ_msg) return 0, succ_msg
def delete_address_pool(self, name, fail_ok=False): row = self._get_row_with_address_pool_name(name) row.mark() confirm_delete_form = self.address_pools_table.delete_address_pool() confirm_delete_form.submit() if not self.find_message_and_dismiss(messages.SUCCESS): found_err = self.find_message_and_dismiss(messages.ERROR) if fail_ok and found_err: err_msg = "Failed to delete address pool {}".format(name) LOG.info(err_msg) return 1, err_msg else: raise exceptions.HorizonError( "No info message found after deleting address pool {}". format(name)) succ_msg = "Address pool {} is successfully deleted.".format(name) LOG.info(succ_msg) return 0, succ_msg