def _validate_interfaces(self, node_id): self.logger.debug("Validating network interfaces check") mgmt = get_pillar_data(f'cluster/{node_id}/network/mgmt/interfaces') private_data = get_pillar_data( f'cluster/{node_id}/network/data/private_interfaces') # noqa: E501 public_data = get_pillar_data( f'cluster/{node_id}/network/data/public_interfaces') # noqa: E501 if not mgmt or mgmt is MISSED: raise CortxSetupError("Mgmt interfaces are not provided") if not private_data or private_data is MISSED: raise CortxSetupError("Private data interfaces are not provided") if not public_data or public_data is MISSED: raise CortxSetupError("Public data interfaces are not provided") for interface in mgmt: if interface in private_data or interface in public_data: raise CortxSetupError( "Same interface provided for mgmt and data") for interface in private_data: if interface in public_data: raise CortxSetupError( f"Same interface provided for public_data " f"{public_data}& private_data: {private_data}") interfaces(mgmt + private_data + public_data) self.logger.debug("Network interfaces check: Success")
def _validate_health_map(self): self.logger.debug("Validating node health check") resource_paths = [HEALTH_PATH, MANIFEST_PATH] for resource in resource_paths: path = get_pillar_data(resource) if not path or path is MISSED: raise CortxSetupError(f"{resource} resource is not configured") path = path.split('://')[1] if not Path(path).is_file(): raise CortxSetupError(f"Validation failed: " f"File not present {path}") self.logger.debug("Node health check: Success")
def _validate_server_type(self, node_id): self.logger.debug("Validating server type check") server_type = get_pillar_data(f'cluster/{node_id}/type') if not server_type or server_type is MISSED: raise CortxSetupError("Server type is not provided") self.logger.debug("Server type check: Success") return server_type
def run(self, certificate=None): self.logger.debug(f"Ceritifact path: {certificate}") CERT_PATH.mkdir(parents=True, exist_ok=True) if certificate: try: end_date = None # pyOpenSSL will not be available by default # on centos JIRA: EOS-21290 res = run_subprocess_cmd( f"openssl x509 -enddate -noout -in {certificate}") if not res.returncode: res = res.stdout end_date = res.split('=')[1] ed = datetime.strptime(end_date.strip(), '%b %d %H:%M:%S %Y %Z') current_d = datetime.now() if current_d > ed: raise CortxSetupError( f"Certificate {certificate} is expired " f"End date: {ed}") except Exception as exc: self.logger.error(f"Invalida ceritificate file {certificate}\n" f"Error: {exc}") raise self.logger.debug(f"Copy certificate to {str(CERT_PATH)}") run_subprocess_cmd(f"cp -rf {certificate} {str(CERT_PATH)}") self.logger.debug("Done")
def _validate_devices(self, node_id, s_type): self.logger.debug("Validating cvg devices check") cvgs = get_pillar_data(f'cluster/{node_id}/storage/cvg') if not cvgs or cvgs is MISSED: raise CortxSetupError("Devices are not provided") for cvg in cvgs: meta_data = cvg.get('metadata_devices') data = cvg.get('data_devices') if not meta_data or not data: raise CortxSetupError("metadata or data devices are missing") for meta in meta_data: if meta in data: raise CortxSetupError( f"{meta} is common in metadata and data device list") disk_devices(s_type, data + meta_data) self.logger.debug("Cvg devices check: Success")
def _validate_cert_installation(self): self.logger.debug("Validating certificate installtion check") cert_file = None cert_file = Path(CERT_PATH / 'stx.pem') if not cert_file.is_file(): raise CortxSetupError("Validation failed: " f"Cert file not present {cert_file}") self.logger.debug("Certificate installtion check: Success")
def get_node_manifest(self, resource_type=None): retries = RETRIES status = "" self.logger.debug("Running resource manifest command") request_id = Discovery.generate_node_manifest(rpath=resource_type) self.logger.debug(f"Requestid for manifest - {request_id}") while retries > 0: status = Discovery.get_gen_node_manifest_status(request_id) if "Success" in status: break elif "Failed" in status: raise CortxSetupError(status) retries -= 1 time.sleep(WAIT) else: if retries == 0 and "Success" not in status: raise CortxSetupError( "Timed out error." "Generation of node manifest is taking longer than expected.") return Discovery.get_node_manifest(request_id)