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)
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)