To save some time on my maas rebuild, I opted to omit i386/generic from from ARCHES /etc/maas/import_pxe_files.
All was well until I tried to pxeboot my amd64 VMS, I got complaints from PXE rom that pxelinux.cfg/default was missing.
A quick look at pserv.log showed this. It looks like it's expecting i386, even though it doesn't need it, and bails, failing to
create the defaults file for my amd64 node.
2013-10-10 17:01:02-0400 [HTTPPageGetter,client] Logged OOPS id OOPS-67ced7fa52e4ffbe27bae426618330fb: No exception type: No exception value
2013-10-10 17:01:02-0400 [HTTPPageGetter,client] Logged OOPS id OOPS-1b75bdad891dc01270df3c261b64c914: EphemeralImagesDirectoryNotFound: The directory containing the ephemeral images/info is missing (u'/var/lib/maas/ephemeral/quantal/ephemeral/i386'). Make sure to run the script 'maas-import-pxe-files'.
2013-10-10 17:01:16-0400 [TFTP (UDP)] Datagram received from ('10.193.36.108', 49162): <RRQDatagram(filename=pxelinux.cfg/default, mode=octet, options={'tsize': '0', 'blksize': '1408'})>
2013-10-10 17:01:16-0400 [TFTP (UDP)] Datagram received from ('10.193.36.108', 49162): <RRQDatagram(filename=pxelinux.cfg/default, mode=octet, options={'tsize': '0', 'blksize': '1408'})>
2013-10-10 17:01:16-0400 [-] Starting factory <HTTPClientFactory: http://localhost/MAAS/api/1.0/pxeconfig/?cluster_uuid=3840f443-8be7-4982-8af4-f49482b373be&local=10.193.36.102&remote=10.193.36.108>
2013-10-10 17:01:16-0400 [-] Starting factory <HTTPClientFactory: http://localhost/MAAS/api/1.0/pxeconfig/?cluster_uuid=3840f443-8be7-4982-8af4-f49482b373be&local=10.193.36.102&remote=10.193.36.108>
2013-10-10 17:01:16-0400 [HTTPPageGetter,client] Unhandled error in Deferred:
2013-10-10 17:01:16-0400 [HTTPPageGetter,client] Unhandled Error
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 381, in callback
self._startRunCallbacks(result)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 489, in _startRunCallbacks
self._runCallbacks()
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 576, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1127, in gotResult
_inlineCallbacks(r, g, deferred)
--- <exception caught here> ---
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1069, in _inlineCallbacks
result = result.throwExceptionIntoGenerator(g)
File "/usr/lib/python2.7/dist-packages/twisted/python/failure.py", line 389, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/usr/lib/python2.7/dist-packages/tftp/protocol.py", line 67, in _startSession
context, self.backend.get_reader, datagram.filename)
File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 576, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/usr/lib/python2.7/dist-packages/provisioningserver/tftp.py", line 171, in generate_config
kernel_params=kernel_params, **params)
File "/usr/lib/python2.7/dist-packages/provisioningserver/pxe/config.py", line 108, in render_pxe_config
return template.substitute(namespace)
File "/usr/lib/python2.7/dist-packages/tempita/__init__.py", line 173, in substitute
result, defs, inherit = self._interpret(ns)
File "/usr/lib/python2.7/dist-packages/tempita/__init__.py", line 184, in _interpret
self._interpret_codes(self._parsed, ns, out=parts, defs=defs)
File "/usr/lib/python2.7/dist-packages/tempita/__init__.py", line 212, in _interpret_codes
self._interpret_code(item, ns, out, defs)
File "/usr/lib/python2.7/dist-packages/tempita/__init__.py", line 235, in _interpret_code
base = func(base)
File "/usr/lib/python2.7/dist-packages/provisioningserver/pxe/config.py", line 100, in kernel_command
return compose_kernel_command_line(params)
File "/usr/lib/python2.7/dist-packages/provisioningserver/kernel_opts.py", line 176, in compose_kernel_command_line
options += compose_purpose_opts(params)
File "/usr/lib/python2.7/dist-packages/provisioningserver/kernel_opts.py", line 130, in compose_purpose_opts
get_ephemeral_name(params.release, params.arch))
File "/usr/lib/python2.7/dist-packages/provisioningserver/kernel_opts.py", line 107, in get_ephemeral_name
"'maas-import-pxe-files'." % root)
provisioningserver.kernel_opts.EphemeralImagesDirectoryNotFound: The directory containing the ephemeral images/info is missing (u'/var/lib/maas/ephemeral/quantal/ephemeral/i386'). Make sure to run the script 'maas-import-pxe-files'.
2013-10-10 17:01:16-0400 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: http://localhost/MAAS/api/1.0/pxeconfig/?cluster_uuid=3840f443-8be7-4982-8af4-f49482b373be&local=10.193.36.102&remote=10.193.36.108>
2013-10-10 17:01:16-0400 [HTTPPageGetter,client] Stopping factory <HTTPClientFactory: http://localhost/MAAS/api/1.0/pxeconfig/?cluster_uuid=3840f443-8be7-4982-8af4-f49482b373be&local=10.193.36.102&remote=10.193.36.108>
2013-10-10 17:01:16-0400 [HTTPPageGetter,client] Logged OOPS id OOPS-7d52be27ea02de2c8e8ea2491a41b4b9: No exception type: No exception value
2013-10-10 17:01:16-0400 [HTTPPageGetter,client] Logged OOPS id OOPS-9191fa7be768b716d85f62f76faba947: EphemeralImagesDirectoryNotFound: The directory containing the ephemeral images/info is missing (u'/var/lib/maas/ephemeral/quantal/ephemeral/i386'). Make sure to run the script 'maas-import-pxe-files'.
The node in question is:
ppetraki@quark:~/sandbox$ maas-cli maas nodes list
[
{
"status": 1,
"macaddress_set": [
{
"resource_uri": "/MAAS/api/1.0/nodes/node-8011c0e4-31ee-11e3-aef3-5254004769e2/macs/52:54:00:05:2f:bf/",
"mac_address": "52:54:00:05:2f:bf"
}
],
"netboot": true,
"hostname": "nightbird.farm",
"power_type": "virsh",
"system_id": "node-8011c0e4-31ee-11e3-aef3-5254004769e2",
"architecture": "amd64/generic",
"tag_names": [],
"resource_uri": "/MAAS/api/1.0/nodes/node-8011c0e4-31ee-11e3-aef3-5254004769e2/"
}
]