Пример #1
0
    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
Пример #2
0
 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
Пример #3
0
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)
Пример #4
0
 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