def _validate_and_parse_config(self, validator_suppressors, validation_failure_level, config_text=None): """ Perform syntactic and semantic validation and return parsed config. :param config_text: config to parse, self.source_config_text will be used if not specified. """ cluster_config_dict = parse_config(config_text or self.source_config_text) try: LOGGER.info("Validating cluster configuration...") Cluster._load_additional_instance_type_data(cluster_config_dict) config = self._load_config(cluster_config_dict) validation_failures = config.validate(validator_suppressors) if any(f.level.value >= FailureLevel( validation_failure_level).value for f in validation_failures): raise ConfigValidationError( "Invalid cluster configuration.", validation_failures=validation_failures) LOGGER.info("Validation succeeded.") except ConfigValidationError as e: raise e except Exception as e: raise ConfigValidationError(f"Invalid cluster configuration: {e}") return config, validation_failures
def config(self) -> BaseClusterConfig: """Return ClusterConfig object.""" if not self.__config: try: self.__config = self._load_config( parse_config(self.source_config_text)) except ConfigValidationError as exc: raise exc except Exception as e: raise _cluster_error_mapper( e, f"Unable to parse configuration file. {e}") return self.__config
def configure_aws_region_from_config(region: Union[None, str], config_str: str): """Set the region based on either the configuration or theregion parameter.""" # Allow parsing errors to pass through as they will be caught by later functions # which can provide more specific error text based on the operation. try: config_region = parse_config(config_str).get("Region") except Exception: config_region = None if region and config_region and region != config_region: raise BadRequestException( "region is set in both parameter and configuration and conflicts.") _set_region(region or config_region or boto3.Session().region_name)
def config(self): """Return ImageBuilder Config object, only called by build image process.""" if not self.__config and self.__source_config_text: self.__config = ImageBuilderSchema().load(parse_config(self.__source_config_text)) return self.__config