onceover-lookup 0.1.0 → 0.1.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
  SHA256:
3
- metadata.gz: 338db64a91beffef6d50d429661d801d1f9f0faa576c5237ebf393e25a9698c2
4
- data.tar.gz: ec7bdfbbc369929e9866769cf9bee4fc167b4db6255f0348bc49dc6faeece441
3
+ metadata.gz: 23e3381ff67b431966f5eda0d964fffc58ce890c41a837cf129f664bea571544
4
+ data.tar.gz: 1ebe6755ee36b60d59c14ee8f23ea7d196b9afe1386b3467b694994c527500ab
5
5
  SHA512:
6
- metadata.gz: 2223de384ef4df55d59bd130b9f208b3329b8b449c5f7f43324460429243a75de015af131e1b0588edf3d5fc3947432c745a11d3b656f12a0d75581fbc286873
7
- data.tar.gz: '08d7163321d03f761ffee1651d7b6ced916bab05aefadd0fdcab8cba92e205a6a169c1d11780a36fb8a23bd811ed2d637a9c8ae3b2f9336f0fb07eaa6eb97cdf'
6
+ metadata.gz: 644d575c15a0b764a80b37ab78c91254232cfa62190400d7c1726b51ad8849c6f2af732eac38932b1bd864325d18ca4af49e363cce4b5dec125fc17eb7f086c0
7
+ data.tar.gz: 9e1f2f741915e2ff7e97a4a9c53104615277f15f996c6e3d052bab3bb7a1e2a89c2049912b54cfe54c4cdf79b7e8b13ce0ca995f9703049f1b3035eaefd415f7
@@ -9,7 +9,7 @@ class Onceover
9
9
  @cmd ||= Cri::Command.define do
10
10
  name 'lookup'
11
11
  usage 'lookup [--name NAME]'
12
- summary "Hello, World! plugin for Onceover"
12
+ summary "Do a hiera lookup"
13
13
  description <<-DESCRIPTION
14
14
  Run the `puppet lookup` command to use onceover configuration
15
15
  DESCRIPTION
@@ -5,8 +5,9 @@ require "json"
5
5
  class Onceover
6
6
  module Lookup
7
7
  module Lookup
8
- PUPPET_CONF = ".puppet.conf.onceover"
9
- LOOKUP_TMP_DIR = ".onceover/tmp"
8
+ PUPPET_CONF = ".puppet.conf.onceover"
9
+ LOOKUP_TMP_DIR = ".onceover/tmp"
10
+ ENVIRONMENT_CONF = ".onceover/etc/puppetlabs/code/environments/production/environment.conf"
10
11
 
11
12
  # Figure out what hiera.yaml we should be using. If there isn't a custom
12
13
  # one, then fallback to the per-environment one. We don't care if this
@@ -46,53 +47,85 @@ class Onceover
46
47
  end
47
48
  end
48
49
 
49
- def self.run(passthru, factset)
50
- if factset
51
- if factset.include? "/"
52
- # relative path - use this
53
- input_factset = factset
54
- else
55
- # resolve factset from Onceover's built-in facts
56
- # https://stackoverflow.com/a/10083594/3441106
57
- spec = Gem::Specification.find_by_name("onceover")
58
- gem_root = spec.gem_dir
59
-
60
- input_factset = File.join(gem_root, "factsets", "#{factset}.json")
61
- end
50
+ def self.fix_environment_conf
51
+ environment_conf = File.readlines(ENVIRONMENT_CONF)
52
+ environment_conf_clean = environment_conf.reject { |e| e =~ /^config_version/ }
62
53
 
63
- logger.info "Extracting factset #{factset}..."
64
- begin
65
- data_hash = JSON.parse(File.read(input_factset))
66
-
67
- # must give file extension or puppet will:
68
- # Error: Could not parse application options: undefined method `[]' for nil:NilClass
69
- factset_tempfile = Tempfile.new(["facts", ".json"])
70
- factset_tempfile.write(data_hash["values"].to_json)
71
- factset_tempfile.close
72
- rescue Errno::ENOENT => e
73
- raise("File not found reading: #{input_factset}: #{e.message}")
54
+ if environment_conf != environment_conf_clean
55
+ File.open(ENVIRONMENT_CONF, "w") do |f|
56
+ f.puts(environment_conf_clean)
74
57
  end
75
- else
76
- input_factset = nil
77
58
  end
59
+ end
78
60
 
79
- cmd = "bundle exec puppet lookup --config #{PUPPET_CONF} #{passthru}"
80
- if input_factset
81
- if passthru =~ /--facts/
82
- raise "You cannot specify both `--facts` and `--factsets`"
83
- end
84
- cmd += " --facts #{factset_tempfile.path}"
61
+ def self.check_setup
62
+ status = true
63
+ if ! File.exist? PUPPET_CONF
64
+ logger.error "#{PUPPET_CONF} does not exist, please run `onceover run lookup setup` to create it"
65
+ status = false
85
66
  end
86
67
 
87
- if ! Dir.exist? LOOKUP_TMP_DIR
88
- logger.info "creating #{LOOKUP_TMP_DIR}"
89
- FileUtils.mkdir_p LOOKUP_TMP_DIR
68
+ if ! File.exist? ENVIRONMENT_CONF
69
+ logger.error "#{ENVIRONMENT_CONF} does not exist, please run `onceover run spec ...` to create it"
70
+ status = false
90
71
  end
91
72
 
92
- logger.info "running command: #{cmd}"
93
- system(cmd)
73
+ status
94
74
  end
95
75
 
76
+ def self.run(passthru, factset)
77
+ if check_setup
78
+ if factset
79
+ if factset.include? "/"
80
+ # relative path - use this
81
+ input_factset = factset
82
+ else
83
+ # resolve factset from Onceover's built-in facts
84
+ # https://stackoverflow.com/a/10083594/3441106
85
+ spec = Gem::Specification.find_by_name("onceover")
86
+ gem_root = spec.gem_dir
87
+
88
+ input_factset = File.join(gem_root, "factsets", "#{factset}.json")
89
+ end
90
+
91
+ logger.info "Extracting factset #{factset}..."
92
+ begin
93
+ data_hash = JSON.parse(File.read(input_factset))
94
+
95
+ # must give file extension or puppet will:
96
+ # Error: Could not parse application options: undefined method `[]' for nil:NilClass
97
+ factset_tempfile = Tempfile.new(["facts", ".json"])
98
+ factset_tempfile.write(data_hash["values"].to_json)
99
+ factset_tempfile.close
100
+ rescue Errno::ENOENT => e
101
+ raise("File not found reading: #{input_factset}: #{e.message}")
102
+ end
103
+ else
104
+ input_factset = nil
105
+ end
106
+
107
+ # Fix environment.conf on windows by removing any `config_version`
108
+ # since the script cant run on windows it errors the whole run. Do this
109
+ # on all platforms since it does nothing useful on Linux either
110
+ fix_environment_conf
111
+
112
+ cmd = "bundle exec puppet lookup --config #{PUPPET_CONF} #{passthru}"
113
+ if input_factset
114
+ if passthru =~ /--facts/
115
+ raise "You cannot specify both `--facts` and `--factsets`"
116
+ end
117
+ cmd += " --facts #{factset_tempfile.path}"
118
+ end
119
+
120
+ if ! Dir.exist? LOOKUP_TMP_DIR
121
+ logger.info "creating #{LOOKUP_TMP_DIR}"
122
+ FileUtils.mkdir_p LOOKUP_TMP_DIR
123
+ end
124
+
125
+ logger.info "running command: #{cmd}"
126
+ system(cmd)
127
+ end
128
+ end
96
129
  end
97
130
  end
98
131
  end
@@ -1,5 +1,5 @@
1
1
  class Onceover
2
2
  module Lookup
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onceover-lookup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Declarative Systems
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-13 00:00:00.000000000 Z
11
+ date: 2018-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler