Class: Jerakia::Schema

Inherits:
Object
  • Object
show all
Defined in:
lib/jerakia/schema.rb

Instance Method Summary collapse

Constructor Details

#initialize(request, opts) ⇒ Schema

Returns a new instance of Schema.



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/jerakia/schema.rb', line 3

def initialize(request,opts)
  schema_datasource=datasource(opts)
  schema_request=Jerakia::Request.new(
    :metadata   => request.,
    :key        => request.key,
    :namespace  => request.namespace,
    :use_schema => false,
  )

  schema_lookup = Jerakia::Launcher.new(schema_request) do
    policy :schema do
      lookup :schema do
        datasource *schema_datasource
      end
    end
  end

  @schema_data = schema_lookup.answer.payload || {}
  Jerakia.log.debug("Schema returned #{@schema_data}")

  if salias = @schema_data["alias"]
    Jerakia.log.debug("Schema alias found to #{@schema_data["alias"]}")
    request.namespace=Array(salias["namespace"]) if salias["namespace"]
    request.key = salias["key"] if salias["key"]
  end


  if @schema_data["cascade"]
    Jerakia.log.debug("Overriding lookup_type from #{request.lookup_type} to :cascade")
    request.lookup_type= :cascade
  end

  if ["array", "hash", "deep_hash"].include?(@schema_data["merge"])
    request.merge = @schema_data["merge"].to_sym
  end

end

Instance Method Details

#datasource(opts = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/jerakia/schema.rb', line 41

def datasource(opts={})
  [ 
    :file, {
      :docroot        => opts["docroot"] || "/var/lib/jerakia/schema",
      :format         => opts["format"]  || :json,
      :enable_caching => opts["enable_caching"] || true,
      :searchpath     => [ '' ],
    }
  ] 
end