def run(ceph_cluster, **kw): """ test module to manage client operations Args: ceph_cluster (ceph.ceph.Ceph): Ceph cluster object kw: test data kw: config: command: add id: client.1 # client Id (<type>.<Id>) node: client1 # client node install_packages: - ceph_common # install ceph common packages copy_admin_keyring: true # Copy admin keyring to node caps: # authorize client capabilities mon: "allow *" osd: "allow *" mds: "allow *" mgr: "allow *" """ config = kw["config"] build = config.get("build", config.get("rhbuild")) ceph_cluster.rhcs_version = build # Manage Ceph using ceph-admin orchestration command = config.pop("command") log.info("Executing client %s" % command) orch = Orch(cluster=ceph_cluster, **config) method = MAP_[command] method(orch, config) return 0
def run(ceph_cluster, **kw): """ Executing the service operation using cephadm ceph orch remove|restart|start|stop|reconfigure|redeploy <service name>. Args: ceph_cluster kw: command and service are passed from the test case. Example: Testing ceph orch restart mon config: command: restart service: mon Returns: output, error returned by the command. """ config = kw.get("config") # Manage Ceph using ceph-admin orchestration command = config.pop("command") log.info("Executing service %s service" % command) orch = Orch(cluster=ceph_cluster, **config) try: method = fetch_method(orch, command) method(config) finally: # Get cluster state get_cluster_state(orch) return 0
def run(ceph_cluster, **kwargs) -> int: """ Upgrade the cluster to latest version and verify the status Args: ceph_cluster: Ceph cluster object kwargs: Key/value pairs of configuration information to be used in the test. Returns: int - 0 when the execution is successful else 1 (for failure). Example: - test: name: Upgrade cluster desc: Upgrade to latest version config: command: start service: upgrade base_cmd_args: verbose: true Since image are part of main config, no need of any args here. """ log.info("Upgrade Ceph cluster...") config = kwargs["config"] config["overrides"] = kwargs.get("test_data", {}).get("custom-config") orch = Orch(cluster=ceph_cluster, **config) client = ceph_cluster.get_nodes(role="client")[0] clients = ceph_cluster.get_nodes(role="client") executor = None # ToDo: Switch between the supported IO providers if config.get("benchmark"): executor = RadosBench(mon_node=client, clients=clients) try: # Initiate thread pool to run rados bench if executor: executor.run(config=config["benchmark"]) # Set repo to newer RPMs orch.set_tool_repo() # Install cephadm orch.install() # Check service versions vs available and target containers orch.upgrade_check(image=config.get("container_image")) # Start Upgrade config.update({"args": {"image": "latest"}}) orch.start_upgrade(config) # Monitor upgrade status, till completion orch.monitor_upgrade_status() if config.get("verify_cluster_health"): if orch.cluster.check_health( rhbuild=config.get("rhbuild"), client=orch.installer ): raise UpgradeFailure("Cluster is in HEALTH_ERR state") except BaseException as be: # noqa log.error(be, exc_info=True) return 1 finally: if executor: executor.teardown() # Get cluster state orch.get_cluster_state( [ "ceph status", "ceph versions", "ceph orch ps -f yaml", "ceph orch ls -f yaml", "ceph orch upgrade status", "ceph mgr dump", # https://bugzilla.redhat.com/show_bug.cgi?id=2033165#c2 "ceph mon stat", ] ) return 0
def run(ceph_cluster, **kwargs) -> int: """ Upgrade the cluster to latest version and verify the status Args: ceph_cluster: Ceph cluster object kwargs: Key/value pairs of configuration information to be used in the test. Returns: int - 0 when the execution is successful else 1 (for failure). Example: - test: name: Upgrade cluster desc: Upgrade to latest version config: command: start service: upgrade base_cmd_args: verbose: true Since image are part of main config, no need of any args here. """ LOG.info("Upgrade Ceph cluster...") config = kwargs["config"] orch = Orch(cluster=ceph_cluster, **config) try: # Set repo to newer RPMs orch.set_tool_repo() # Install cephadm orch.install() # Check service versions vs available and target containers orch.upgrade_check(image=config.get("container_image")) # Start Upgrade config.update({"args": {"image": "latest"}}) orch.start_upgrade(config) # Monitor upgrade status, till completion orch.monitor_upgrade_status() if config.get("verify_cluster_health"): orch.cluster.check_health( rhbuild=config.get("rhbuild"), client=orch.installer ) except BaseException as be: # noqa LOG.error(be, exc_info=True) return 1 finally: # Get cluster state orch.get_cluster_state( [ "ceph status", "ceph versions", "ceph orch ps -f yaml", "ceph orch ls -f yaml", "ceph orch upgrade status", ] ) return 0