FYI - in upgrading a previously happy Trusty MAAS test enviro, we can reproduce this issue.
$ sudo apt-get update && sudo apt-get upgrade
...
Setting up maas-cluster-controller (1.5+bzr2227-0ubuntu1) ...
Installing new version of config file /etc/maas/templates/power/sm15k.template ...
* Restarting web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.17.17.200. Set the 'ServerName' directive globally to suppress this message
...done.
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/dist-packages/provisioningserver/__main__.py", line 42, in <module>
main()
File "/usr/lib/python2.7/dist-packages/provisioningserver/utils/__init__.py", line 592, in __call__
self.execute(argv)
File "/usr/lib/python2.7/dist-packages/provisioningserver/utils/__init__.py", line 587, in execute
args.handler.run(args)
File "/usr/lib/python2.7/dist-packages/provisioningserver/upgrade_cluster.py", line 210, in run
hook()
File "/usr/lib/python2.7/dist-packages/provisioningserver/upgrade_cluster.py", line 185, in generate_boot_resources_config
rewrite_boot_resources_config(config_file)
File "/usr/lib/python2.7/dist-packages/provisioningserver/upgrade_cluster.py", line 168, in rewrite_boot_resources_config
tftproot = Config.load_from_cache()['tftp']['root']
File "/usr/lib/python2.7/dist-packages/provisioningserver/config.py", line 240, in load_from_cache
cls._cache[filename] = cls.parse(stream)
File "/usr/lib/python2.7/dist-packages/provisioningserver/config.py", line 183, in parse
return cls.to_python(yaml.safe_load(stream))
File "/usr/lib/python2.7/dist-packages/formencode/api.py", line 439, in to_python
value = tp(value, state)
File "/usr/lib/python2.7/dist-packages/formencode/schema.py", line 161, in _to_python
value_dict, state)
formencode.api.Invalid: The input field 'boot' was not expected.
FYI - in upgrading a previously happy Trusty MAAS test enviro, we can reproduce this issue.
$ sudo apt-get update && sudo apt-get upgrade controller (1.5+bzr2227- 0ubuntu1) ... templates/ power/sm15k. template ... python2. 7/runpy. py", line 162, in _run_module_as_main python2. 7/runpy. py", line 72, in _run_code python2. 7/dist- packages/ provisioningser ver/__main_ _.py", line 42, in <module> python2. 7/dist- packages/ provisioningser ver/utils/ __init_ _.py", line 592, in __call__ execute( argv) python2. 7/dist- packages/ provisioningser ver/utils/ __init_ _.py", line 587, in execute handler. run(args) python2. 7/dist- packages/ provisioningser ver/upgrade_ cluster. py", line 210, in run python2. 7/dist- packages/ provisioningser ver/upgrade_ cluster. py", line 185, in generate_ boot_resources_ config boot_resources_ config( config_ file) python2. 7/dist- packages/ provisioningser ver/upgrade_ cluster. py", line 168, in rewrite_ boot_resources_ config load_from_ cache() ['tftp' ]['root' ] python2. 7/dist- packages/ provisioningser ver/config. py", line 240, in load_from_cache _cache[ filename] = cls.parse(stream) python2. 7/dist- packages/ provisioningser ver/config. py", line 183, in parse python( yaml.safe_ load(stream) ) python2. 7/dist- packages/ formencode/ api.py" , line 439, in to_python python2. 7/dist- packages/ formencode/ schema. py", line 161, in _to_python api.Invalid: The input field 'boot' was not expected.
...
Setting up maas-cluster-
Installing new version of config file /etc/maas/
* Restarting web server apache2
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.17.17.200. Set the 'ServerName' directive globally to suppress this message
...done.
Traceback (most recent call last):
File "/usr/lib/
"__main__", fname, loader, pkg_name)
File "/usr/lib/
exec code in run_globals
File "/usr/lib/
main()
File "/usr/lib/
self.
File "/usr/lib/
args.
File "/usr/lib/
hook()
File "/usr/lib/
rewrite_
File "/usr/lib/
tftproot = Config.
File "/usr/lib/
cls.
File "/usr/lib/
return cls.to_
File "/usr/lib/
value = tp(value, state)
File "/usr/lib/
value_dict, state)
formencode.
* Process never completes, user has to break out.