tiller 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2d1e95b4ed6d8c7c7e65adbf5787aaff5d30fe8b
4
- data.tar.gz: 28ab01c02e3c27788fcf6e5b66f4e108cc446abe
3
+ metadata.gz: de1c0f1f8381638d2568818134f335b4184a0b1c
4
+ data.tar.gz: 3613aa2b175fa801b671fab200b234153bfc698b
5
5
  SHA512:
6
- metadata.gz: c2425f1fc476a59129657a3e14e91b1d25550f3c78444f05e7a3bea813c3c01fd7f990f3a54238ac0b9c47f702ca6761626b9e2de53764d04fbf8cf76a186e0b
7
- data.tar.gz: 6ed9f45e89fcb49380d1e1889d91caf238a59d2241b9359185f81f6e424b3885dacf9a28a65ffb453f479a429febf20669417c8eb68dfeafe0f686f2b5a2de2f
6
+ metadata.gz: ff24474771f4041cede5a6fdedf6ee47c63f43288a57e9fa77a67f2472257f55d9e14cd496469ecf2f78a596b5f964a9d859721363f9f957c0c18b0d20a42039
7
+ data.tar.gz: de08322c4b9ecbf1cc2976e0a65fea61a1b8971c26caf3b01c0b90b3e7ae7dce35946b20b44e79b7ff3ad96fc391432ea8b2d5692ed996da31c0ba0a5ef0a8b9
data/bin/tiller CHANGED
@@ -1,10 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
- # Tiller - Dynamic configuration generator, intended for use in Dockerfiles
2
+ # A tool to create configuration files from a variety of sources, particularly
3
+ # useful for Docker containers. See https://github.com/markround/tiller for
4
+ # examples and documentation.
5
+ #
3
6
  # Named from the first ship-building (Docker) related term I could find that
4
7
  # didn't have an existing gem named after it!
8
+ #
5
9
  # Mark Dastmalchi-Round <github@markround.com>
6
10
 
7
- VERSION = '0.6.0'
11
+ VERSION = '0.6.1'
8
12
 
9
13
  require 'erb'
10
14
  require 'ostruct'
@@ -0,0 +1,23 @@
1
+ require 'pp'
2
+ require 'httpclient'
3
+ require 'timeout'
4
+ require 'tiller/http.rb'
5
+
6
+
7
+ class HttpDataSource < Tiller::DataSource
8
+
9
+ include Tiller::HttpCommon
10
+
11
+ def values(template_name)
12
+ parse(get_uri(@http_config['uri'] + @http_config['values']['template'], :template => template_name))
13
+ end
14
+
15
+ def global_values
16
+ parse(get_uri(@http_config['uri'] + @http_config['values']['global']))
17
+ end
18
+
19
+ def target_values(template_name)
20
+ parse(get_uri(@http_config['uri'] + @http_config['values']['target'], :template => template_name))
21
+ end
22
+
23
+ end
@@ -32,3 +32,23 @@ module Tiller::Zookeeper
32
32
 
33
33
  end
34
34
 
35
+
36
+ # Defaults for the HTTP data and template sources
37
+ module Tiller::Http
38
+
39
+ Defaults = {
40
+ 'timeout' => 5,
41
+ 'proxy' => '',
42
+ 'templates' => '/tiller/environments/%e/templates',
43
+ 'template_content' => '/tiller/templates/%t/content',
44
+ 'parser' => 'json',
45
+
46
+ 'values' => {
47
+ 'global' => '/tiller/globals',
48
+ 'template' => '/tiller/templates/%t/values/%e',
49
+ 'target' => '/tiller/templates/%t/target_values/%e'
50
+ }
51
+ }
52
+
53
+ end
54
+
@@ -0,0 +1,64 @@
1
+ # Common methods for HTTP plugins
2
+
3
+ require 'httpclient'
4
+ require 'timeout'
5
+ require 'pp'
6
+ require 'tiller/defaults.rb'
7
+ require 'json'
8
+
9
+ module Tiller::HttpCommon
10
+
11
+ def setup
12
+ # Set our defaults if not specified
13
+ @http_config = Tiller::Http::Defaults
14
+
15
+ raise 'No HTTP configuration block' unless @config.has_key?('http')
16
+ @http_config.merge!(@config['http'])
17
+
18
+ # Sanity check
19
+ ['uri'].each {|c| raise "HTTP: Missing HTTP configuration #{c}" unless @http_config.has_key?(c)}
20
+
21
+ # Create the client used for all requests
22
+ @client = HTTPClient.new(@http_config['proxy'])
23
+
24
+ # Basic auth for resource
25
+ if @http_config.has_key?('username')
26
+ puts 'HTTP: Using basic authentication' if @config[:debug]
27
+ raise 'HTTP: Missing password for authentication' unless @http_config.has_key?('password')
28
+ @client.set_auth(nil, @http_config['username'], @http_config['password'])
29
+ end
30
+
31
+ # Basic auth for proxy
32
+ if @http_config.has_key?('proxy_username')
33
+ puts 'HTTP: Using proxy basic authentication' if @config[:debug]
34
+ raise 'HTTP: Missing password for proxy authentication' unless @http_config.has_key?('proxy_password')
35
+ @client.set_proxy_auth(@http_config['proxy_username'], @http_config['proxy_password'])
36
+ end
37
+ end
38
+
39
+
40
+ # Interpolate the placeholders and return content from a URI
41
+ def get_uri(uri, interpolate={})
42
+ uri.gsub!('%e', @config[:environment])
43
+ uri.gsub!('%t', interpolate[:template]) if interpolate[:template]
44
+
45
+ puts "HTTP: Fetching #{uri}" if @config[:debug]
46
+ resp = @client.get(uri, :follow_redirect => true)
47
+ raise "HTTP: Server responded with status #{resp.status} for #{uri}" if resp.status != 200
48
+ resp.body
49
+ end
50
+
51
+
52
+ # Wrap parsing here, so we can implement XML and other parsers later
53
+ def parse(content)
54
+ case @http_config['parser']
55
+ when 'json'
56
+ puts 'HTTP: Using JSON parser' if @config[:debug]
57
+ JSON.parse(content)
58
+ else
59
+ raise "HTTP: Unsupported parser '#{@http_config['parser']}'"
60
+ end
61
+ end
62
+
63
+
64
+ end
@@ -6,6 +6,9 @@ def parse_options(config)
6
6
  opts.on('-v', '--verbose', 'Display verbose output') do
7
7
  config[:verbose] = true
8
8
  end
9
+ opts.on('-d', '--debug', 'Display debug output') do
10
+ config[:debug] = true
11
+ end
9
12
  opts.on('-a', '--api', 'Enable HTTP API') do
10
13
  config['api_enable'] = true
11
14
  end
@@ -0,0 +1,20 @@
1
+ require 'pp'
2
+ require 'httpclient'
3
+ require 'timeout'
4
+ require 'tiller/http.rb'
5
+
6
+
7
+
8
+ class HttpTemplateSource < Tiller::TemplateSource
9
+
10
+ include Tiller::HttpCommon
11
+
12
+ def templates
13
+ parse(get_uri(@http_config['uri'] + @http_config['templates']))
14
+ end
15
+
16
+ def template(template_name)
17
+ get_uri(@http_config['uri'] + @http_config['template_content'], :template => template_name)
18
+ end
19
+
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiller
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Dastmalchi-Round
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-20 00:00:00.000000000 Z
11
+ date: 2015-07-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A tool to create configuration files from a variety of sources, particularly
14
14
  useful for Docker containers. See https://github.com/markround/tiller for examples
@@ -55,14 +55,17 @@ files:
55
55
  - lib/tiller/data/environment.rb
56
56
  - lib/tiller/data/environment_json.rb
57
57
  - lib/tiller/data/file.rb
58
+ - lib/tiller/data/http.rb
58
59
  - lib/tiller/data/random.rb
59
60
  - lib/tiller/data/zookeeper.rb
60
61
  - lib/tiller/datasource.rb
61
62
  - lib/tiller/defaults.rb
63
+ - lib/tiller/http.rb
62
64
  - lib/tiller/json.rb
63
65
  - lib/tiller/loader.rb
64
66
  - lib/tiller/options.rb
65
67
  - lib/tiller/template/file.rb
68
+ - lib/tiller/template/http.rb
66
69
  - lib/tiller/template/zookeeper.rb
67
70
  - lib/tiller/templatesource.rb
68
71
  - lib/tiller/util.rb