Don't post facts if there are none

Also, post non-facter facts - we have a hybrid system, why not report
all of our facts to puppetdb.

Change-Id: I246c5fd31739921d072edf8614c748dfaa611927
This commit is contained in:
Monty Taylor 2015-11-25 08:31:03 -05:00
parent d049384a82
commit f8c70cb1f2

View File

@ -92,21 +92,29 @@ def main():
for k, v in p['hostvars'].items():
if k.startswith('facter_'):
facts[k[7:]] = v
payload = {
"command": "replace facts",
"version": 3,
"payload": {
"name": fqdn,
"environment": p['environment'],
"producer-timestamp": timestamp,
"values": facts }}
for k, v in p['hostvars'].items():
if not k.startswith('facter_'):
# Go ahead and set the non-facter facts that ansible has gathered
# too - but let facter facts with the same name win
facts.setdefault(k, v)
r = requests.post(endpoint, json=payload, **requests_kwargs)
if r.status_code != 200:
module.fail_json(
rc=r.status_code,
msg="Failed to post facts to {puppetdb}".format(
puppetdb=p['puppetdb']))
if facts:
# Don't post facts update if we don't have facts
payload = {
"command": "replace facts",
"version": 3,
"payload": {
"name": fqdn,
"environment": p['environment'],
"producer-timestamp": timestamp,
"values": facts }}
r = requests.post(endpoint, json=payload, **requests_kwargs)
if r.status_code != 200:
module.fail_json(
rc=r.status_code,
msg="Failed to post facts to {puppetdb}".format(
puppetdb=p['puppetdb']))
log_data = json.load(open(p['logfile'], 'r'))
r = requests.post(endpoint, json=log_data, **requests_kwargs)