Module: KongSchema::Schema

Extended by:
Schema
Included in:
Schema
Defined in:
lib/kong_schema/schema.rb

Instance Method Summary collapse

Instance Method Details

#commit(config, directives) ⇒ Object

Commit changes to Kong’s database through its REST API.

Parameters:

  • config (Object)
  • changes (Array<Change>)

Returns:

  • NilClass



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/kong_schema/schema.rb', line 43

def commit(config, directives)
  Client.connect(config) do |client|
    directives.each do |d|
      begin
        d.apply(client, config)
      rescue StandardError
        e = $ERROR_INFO
        raise e, "#{e}\nSource:\n#{YAML.dump(d)}", e.backtrace
      end
    end
  end
end

#scan(config) ⇒ Array<Change>

Scan for changes between Kong’s database and the configuration. To commit the changes (if any) use #commit with the results.

Parameters:

  • config (Object)

    The configuration directives as explain in README.

Returns:

  • (Array<Change>)


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/kong_schema/schema.rb', line 21

def scan(config)
  Client.connect(config) do
    [
      scan_in(model: Resource::Api, directives: Array(config['apis'])),

      scan_in(model: Resource::Plugin, directives: Array(config['plugins'])),

      # order matters in some of the resources; Upstream directives must be
      # handled before Target ones
      scan_in(model: Resource::Upstream, directives: Array(config['upstreams'])),

      scan_in(model: Resource::Target, directives: Array(config['targets']))
    ].flatten
  end
end