Ejemplo n.º 1
0
    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")
Ejemplo n.º 2
0
 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")
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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")
Ejemplo n.º 5
0
    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")
Ejemplo n.º 6
0
 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")
Ejemplo n.º 7
0
    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)