Esempio n. 1
0
def check_capsule_template(tpl):
    # TODO(kevinz): add volume spec check
    tpl_json = tpl
    if isinstance(tpl, six.string_types):
        try:
            tpl_json = jsonutils.loads(tpl)
        except Exception as e:
            raise exception.FailedParseStringToJson(e)

        validator = validators.SchemaValidator(
            parameter_types.capsule_template)
        validator.validate(tpl_json)

    kind_field = tpl_json.get('kind')
    if kind_field not in ['capsule', 'Capsule']:
        raise exception.InvalidCapsuleTemplate("kind fields need to be "
                                               "set as capsule or Capsule")

    spec_field = tpl_json.get('spec')
    if spec_field is None:
        raise exception.InvalidCapsuleTemplate("No Spec found")
    # Align the Capsule restartPolicy with container restart_policy
    # Also change the template filed name from Kubernetes type to OpenStack
    # type.
    if 'restartPolicy' in spec_field.keys():
        spec_field['restartPolicy'] = \
            utils.VALID_CAPSULE_RESTART_POLICY[spec_field['restartPolicy']]
        spec_field[utils.VALID_CAPSULE_FIELD['restartPolicy']] = \
            spec_field.pop('restartPolicy')
    if spec_field.get('containers') is None:
        raise exception.InvalidCapsuleTemplate("No valid containers field")
    return spec_field, tpl_json
Esempio n. 2
0
def validated(request_body_schema):
    """Register a schema to validate a resource reference.

    Registered schema will be used for validating a request body just before
    API method execution.

    :param request_body_schema: a schema to validate the resource reference
    """
    schema_validator = validators.SchemaValidator(request_body_schema,
                                                  is_body=True)

    def add_validator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            schema_validator.validate(kwargs)
            return func(*args, **kwargs)
        return wrapper
    return add_validator
Esempio n. 3
0
def validate_query_param(req, query_param_schema):
    """Register a schema to validate a resource reference.

    Registered schema will be used for validating a request query params
    just before API method execution.

    :param req: the request object
    :param query_param_schema: a schema to validate the resource reference
    """

    schema_validator = validators.SchemaValidator(query_param_schema,
                                                  is_body=False)

    def add_validator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            schema_validator.validate(req.params.mixed())
            return func(*args, **kwargs)
        return wrapper
    return add_validator
Esempio n. 4
0
 def setUp(self):
     super(TestSchemaValidations, self).setUp()
     self.schema_validator = validators.SchemaValidator(CONTAINER_CREATE)
Esempio n. 5
0
 def setUp(self):
     super(TestCapsuleSchemaValidations, self).setUp()
     self.schema_validator = validators.SchemaValidator(CAPSULE_CREATE)