Ejemplo n.º 1
0
def config_check(config):
    validate.value('top level', config, 'object')
    environments = validate.obj_field('top level', config, 'environments', 'object')

    # Check environments
    environments = config.get('environments')
    if not isinstance(environments, dict):
        raise validate.ConfigError('Must have an object in $.environments.')
    for env_name, env in environments.iteritems():
        kind_name = validate.obj_field('environment %s' % env_name, env, 'kind', 'string')
        compiler = service_compilers.get(kind_name)
        if not compiler:
            raise validate.ConfigError('Unrecognized kind "%s" in environment %s' % (kind_name, env_name))
        
        compiler.validateEnvironment(env_name, env)

    # Check services
    for service_name, service in services(config):
        config_check_service(environments, [], service_name, service)
Ejemplo n.º 2
0
    def validateEnvironment(self, env_name, env):
        ctx = 'Environment "%s"' % env_name
        fields = ['kind', 'project', 'region', 'sshUser', 'serviceAccount']
        validate.obj_only(ctx, env, fields)
        validate.obj_field(ctx, env, 'project', 'string')
        validate.obj_field(ctx, env, 'region', 'string')
        validate.obj_field(ctx, env, 'sshUser', 'string')

        acc = validate.obj_field(ctx, env, 'serviceAccount', validate.is_type('object'))
        validate.obj_field(ctx + ' serviceAccount', acc, 'client_email', 'string')
        validate.obj_field(ctx + ' serviceAccount', acc, 'private_key', 'string')
        validate.obj_field_opt(ctx + ' serviceAccount', acc, 'type', validate.is_value('service_account'))
        validate.obj_field_opt(ctx + ' serviceAccount', acc, 'client_id', 'string')
        validate.obj_field_opt(ctx + ' serviceAccount', acc, 'private_key_id', 'string')
        fields = ['client_email', 'private_key', 'type', 'client_id', 'private_key_id']
        validate.obj_only(ctx + ' serviceAccount', acc, fields)