I would suggest adding code like this to Promenade:
It should be able to handle bad input and error out appropriately to avoid future debugging hang-ups like this.
From: SUGGUNA, NAGA
Sent: Thursday, August 23, 2018 10:16 AM
To: MCEUEN, MATT <MM9745@att.com>; 'airship-discuss@lists.airshipit.org' <airship-discuss@lists.airshipit.org>; SKELS, KASPARS <ks3019@att.com>
Subject: Re: [Airship-discuss] if document.get('schema', '') == SCHEMA_SCHEMA: AttributeError: 'NoneType' object has no attribute 'get'
***Security Advisory: This Message Originated Outside of AT&T ***
Reference http://cso.att.com/EmailSecurity/IDSP.html for more information.
This issue resolved.
One of the document had comments before the beginning of the yaml document (---). After fixing that able to generate genesis bundle.
From: MCEUEN, MATT
Sent: Wednesday, August 22, 2018 7:30 PM
To: SUGGUNA, NAGA <ns156u@att.com>; 'airship-discuss@lists.airshipit.org' <airship-discuss@lists.airshipit.org>; SKELS, KASPARS <ks3019@att.com>
Subject: RE: if document.get('schema', '') == SCHEMA_SCHEMA: AttributeError: 'NoneType' object has no attribute 'get'
Hi Naga, a new set of reference manifests have been added to the airship-treasuremap project. Can you please have a look at those, and compare your manifests to what’s up there? I’m not familiar with that error in this context, but it
looks to be related to loading schema documents from your manifest sets. I suspect comparing to a known-good set of manifests (including schema docs and references to those schemas) may help.
https://github.com/openstack/airship-treasuremap
Thanks,
Matt
From: SUGGUNA, NAGA
Sent: Wednesday, August 22, 2018 2:15 PM
To: 'airship-discuss@lists.airshipit.org' <airship-discuss@lists.airshipit.org>
Subject: [Airship-discuss] if document.get('schema', '') == SCHEMA_SCHEMA: AttributeError: 'NoneType' object has no attribute 'get'
***Security Advisory: This Message Originated Outside of AT&T ***
Reference http://cso.att.com/EmailSecurity/IDSP.html for more information.
While generating promgen I see following error, I verified the site.yaml for empty documents and I found and some, after fixing them also I see the same error.
+ gen_bundle
++ pwd
+ docker run --env http_proxy=http://one.proxy.att.com:8888/ --env https_proxy=http://one.proxy.att.com:8888/ --user 0 --rm -t -w /target -v /root/yaml_builds:/target quay.io/airshipit/promenade:009f3de7ecf6afcdd2783ac7a12470394d7dfab3
promenade build-all --validators -o /target/tars/dellgen10/configs/promenade-bundle '/target/tars/dellgen10/configs/promenade/*.yaml'
+ PORT=9000
+ UWSGI_TIMEOUT=300
+ PROMENADE_THREADS=1
+ PROMENADE_WORKERS=4
+ '[' promenade = server ']'
+ exec promenade build-all --validators -o /target/tars/dellgen10/configs/promenade-bundle /target/tars/dellgen10/configs/promenade/global.yaml /target/tars/dellgen10/configs/promenade/site.yaml
2018-08-22 19:03:15,525 INFO - - - promenade.config:from_streams [ 55] Loading documents from /target/tars/dellgen10/configs/promenade/global.yaml
2018-08-22 19:03:22,244 INFO - - - promenade.config:from_streams [ 59] Successfully loaded 173 documents from /target/tars/dellgen10/configs/promenade/global.yaml
2018-08-22 19:03:22,245 INFO - - - promenade.config:from_streams [ 55] Loading documents from /target/tars/dellgen10/configs/promenade/site.yaml
2018-08-22 19:03:24,975 INFO - - - promenade.config:from_streams [ 59] Successfully loaded 120 documents from /target/tars/dellgen10/configs/promenade/site.yaml
2018-08-22 19:03:24,975 INFO - - - promenade.config:__init__ [ 24] Parsing document schemas.
Traceback (most recent call last):
File "/usr/local/bin/promenade", line 11, in <module>
load_entry_point('promenade', 'console_scripts', 'promenade')()
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/opt/promenade/promenade/cli.py", line 42, in build_all
streams=config_files)
File "/opt/promenade/promenade/config.py", line 62, in from_streams
return cls(documents=documents, **kwargs)
File "/opt/promenade/promenade/config.py", line 25, in __init__
schema_set = validation.load_schemas_from_docs(documents)
File "/opt/promenade/promenade/validation.py", line 95, in load_schemas_from_docs
if document.get('schema', '') == SCHEMA_SCHEMA:
AttributeError: 'NoneType' object has no attribute 'get'