def deployment_with_ui(self): """ Deployment OCS Operator via OpenShift Console """ setup_ui = login_ui() deployment_obj = DeploymentUI(setup_ui) if config.DEPLOYMENT.get("local_storage"): deployment_obj.mode = "lso" else: deployment_obj.mode = "internal" if config.ENV_DATA["platform"].lower() == constants.VSPHERE_PLATFORM: deployment_obj.storage_class_type = "thin_sc" elif config.ENV_DATA["platform"].lower() == constants.AWS_PLATFORM: deployment_obj.storage_class_type = "gp2_sc" device_size = str(config.ENV_DATA.get("device_size")) if device_size in ("512", "2048", "4096"): deployment_obj.osd_size = device_size else: deployment_obj.osd_size = "512" deployment_obj.is_wide_encryption = config.ENV_DATA.get("encryption_at_rest") deployment_obj.is_class_encryption = False deployment_obj.is_use_kms = False deployment_obj.install_ocs_ui() close_browser(setup_ui)
def deployment_with_ui(self): """ Deployment OCS Operator via OpenShift Console """ setup_ui = login_ui() deployment_obj = DeploymentUI(setup_ui) deployment_obj.install_ocs_ui() close_browser(setup_ui)
def ocs_odf_upgrade_ui(): """ Function to upgrade OCS 4.8 to ODF 4.9 via UI on OCP 4.9 Pass proper versions and upgrade_ui.yaml while running this function for validation to pass """ setup_ui = login_ui() val_obj = ValidationUI(setup_ui) pagenav_obj = ValidationUI(setup_ui) dep_obj = DeploymentUI(setup_ui) dep_obj.operator = ODF_OPERATOR dep_obj.install_ocs_operator() original_ocs_version = config.ENV_DATA.get("ocs_version") upgrade_in_current_source = config.UPGRADE.get("upgrade_in_current_source", False) upgrade_ocs = OCSUpgrade( namespace=config.ENV_DATA["cluster_namespace"], version_before_upgrade=original_ocs_version, ocs_registry_image=config.UPGRADE.get("upgrade_ocs_registry_image"), upgrade_in_current_source=upgrade_in_current_source, ) logger.info( "Click on Storage System under Provided APIs on Installed Operators Page" ) val_obj.do_click( upgrade_ocs.validation_loc["storage-system-on-installed-operators"]) logger.info( "Click on 'ocs-storagecluster-storagesystem' on Operator details page") val_obj.do_click( upgrade_ocs.validation_loc["ocs-storagecluster-storgesystem"], enable_screenshot=True, ) logger.info("Click on Resources") val_obj.do_click(upgrade_ocs.validation_loc["resources-tab"], enable_screenshot=True) logger.info("Storage Cluster Status Check") storage_cluster_status_check = val_obj.wait_until_expected_text_is_found( locator=("//*[text()= 'Ready']", By.XPATH), expected_text="Ready", timeout=1200) assert ( storage_cluster_status_check ), "Storage Cluster Status reported on UI is not 'Ready', Timeout 1200 seconds exceeded" logger.info( "Storage Cluster Status reported on UI is 'Ready', verification successful" ) logger.info("Click on 'ocs-storagecluster") val_obj.do_click(upgrade_ocs.validation_loc["ocs-storagecluster"]) val_obj.take_screenshot() pagenav_obj.odf_overview_ui() pagenav_obj.odf_storagesystems_ui()
def deployment_with_ui(self): """ Deployment OCS Operator via OpenShift Console """ from ocs_ci.ocs.ui.base_ui import login_ui, close_browser from ocs_ci.ocs.ui.deployment_ui import DeploymentUI create_catalog_source() setup_ui = login_ui() deployment_obj = DeploymentUI(setup_ui) deployment_obj.install_ocs_ui() close_browser(setup_ui)
def login_to_acm(): """ Login to ACM console and validate by its title Returns: driver (Selenium WebDriver) """ url = get_acm_url() log.info(f"URL: {url}") driver = login_ui(url) validate_page_title(driver, title=ACM_PAGE_TITLE) return driver
def ui_add_capacity(osd_size_capacity_requested): """ Add Capacity via UI Args: osd_size_capacity_requested (int): Requested osd size capacity Returns: new_storage_devices_sets_count (int) : Returns True if all OSDs are in Running state """ osd_size_existing = get_osd_size() device_sets_required = int(osd_size_capacity_requested / osd_size_existing) old_storage_devices_sets_count = get_deviceset_count() new_storage_devices_sets_count = int(device_sets_required + old_storage_devices_sets_count) logger.info("Add capacity via UI") setup_ui = login_ui() add_ui_obj = AddReplaceDeviceUI(setup_ui) add_ui_obj.add_capacity_ui() close_browser(setup_ui) return new_storage_devices_sets_count
def add_capacity(osd_size_capacity_requested): """ Add storage capacity to the cluster Args: osd_size_capacity_requested(int): Requested osd size capacity Returns: new storage device set count (int) : Returns True if all OSDs are in Running state Note: "StoragedeviceSets->count" represents the set of 3 OSDs. That is, if there are 3 OSDs in the system then count will be 1. If there are 6 OSDs then count is 2 and so on. By changing this value,we can add extra devices to the cluster. For example, if we want to expand the cluster by 3 more osds in a cluster that already has 3 osds, we can set count as 2. So, with each increase of count by 1, we get 3 OSDs extra added to the cluster. This is how we are going to 'add capacity' via automation. As we know that OCS has 3 way replica. That is, same data is placed in 3 OSDs. Because of this, the total usable capacity for apps from 3 OSDs will be the size of one OSD (all osds are of same size). If we want to add more capacity to the cluster then we need to add 3 OSDs of same size as that of the original OSD. add_capacity needs to accept the 'capacity_to_add' as an argument. From this we need to arrive at storagedeviceSets -> count and then "Patch" this count to get the required capacity to add. To do so, we use following formula: storageDeviceSets->count = (capacity reqested / osd capacity ) + existing count storageDeviceSets """ osd_size_existing = get_osd_size() device_sets_required = int(osd_size_capacity_requested / osd_size_existing) old_storage_devices_sets_count = get_deviceset_count() new_storage_devices_sets_count = int(device_sets_required + old_storage_devices_sets_count) lvpresent = localstorage.check_local_volume() ocp_version = get_ocp_version() platform = config.ENV_DATA.get("platform", "").lower() is_lso = config.DEPLOYMENT.get("local_storage") if (ocp_version == "4.7" and (platform == constants.AWS_PLATFORM or platform == constants.VSPHERE_PLATFORM) and (not is_lso)): logging.info("Add capacity via UI") setup_ui = login_ui() add_ui_obj = AddReplaceDeviceUI(setup_ui) add_ui_obj.add_capacity_ui() close_browser(setup_ui) else: if lvpresent: ocp_obj = OCP(kind="localvolume", namespace=config.ENV_DATA["local_storage_namespace"]) localvolume_data = ocp_obj.get(resource_name="local-block") device_list = localvolume_data["spec"]["storageClassDevices"][0][ "devicePaths"] final_device_list = localstorage.get_new_device_paths( device_sets_required, osd_size_capacity_requested) device_list.sort() final_device_list.sort() if device_list == final_device_list: raise ResourceNotFoundError("No Extra device found") param = f"""[{{ "op": "replace", "path": "/spec/storageClassDevices/0/devicePaths", "value": {final_device_list}}}]""" log.info(f"Final device list : {final_device_list}") lvcr = localstorage.get_local_volume_cr() log.info("Patching Local Volume CR...") lvcr.patch( resource_name=lvcr.get()["items"][0]["metadata"]["name"], params=param.strip("\n"), format_type="json", ) localstorage.check_pvs_created( int(len(final_device_list) / new_storage_devices_sets_count)) sc = get_storage_cluster() # adding the storage capacity to the cluster params = f"""[{{ "op": "replace", "path": "/spec/storageDeviceSets/0/count", "value": {new_storage_devices_sets_count}}}]""" sc.patch( resource_name=sc.get()["items"][0]["metadata"]["name"], params=params.strip("\n"), format_type="json", ) return new_storage_devices_sets_count