[Bug 1081701] Re: The metadata address mentioned in the preseed is wrong.
Gavin Panella
gavin.panella at canonical.com
Thu Nov 22 17:37:35 UTC 2012
Raphaël and I discussed two options:
1. Render the preseed in the cluster.
2. Send the cluster address to the region during start-up so that it
can render the preseed with the correct address.
We decided that #1 better divides responsibilities, but that we would
go for option #2 for two reasons: it's a lot less work, and it doesn't
preclude doing #1 at a later date and may be useful to that effort.
I made some notes about what it would take to do #1, included below,
which may be worth tracking as a blueprint (Julian, what is the best
way to propose work like this?).
.. -*- mode: rst -*-
Things needed from the region to render a preseed:
==================================================
- From ``maasserver.compose_preseed``:
- Metadata URL: ``absolute_reverse('metadata')``
- Token: ``NodeKey.objects.get_token_for_node(node)``
- Node status: ``node.status`` (only if commissioning or not)
- From ``maasserver.preseed``:
- Node status: ``node.status`` (only if commissioning or not)
- Enum ``PRESEED_TYPE``.
⇒ Move to ``provisioningserver``?
- Setting ``PRESEED_TEMPLATE_LOCATIONS``.
⇒ Move to ``provisioningserver``.
- Config:
- ``commissioning_distro_series``
- ``main_archive``
- ``ports_archive``
- ``http_proxy``
⇒ Can be obtained via API.
- Server host: ``get_maas_facing_server_host`` (used for?)
⇒ Already known on cluster?
- Server URL: ``absolute_reverse('nodes_handler')`` (used for?)
⇒ Already known on cluster?
- Enlistment URL: ``absolute_reverse('enlist')``
- Disable netboot URL::
absolute_reverse(
'metadata-node-by-id',
args=['latest', node.system_id])
- Enlistment preseed URL::
absolute_reverse(
'metadata-enlist-preseed', args=[version],
query={'op': 'get_enlist_preseed'})
⇒ Becomes responsibility of ``provisioningserver``.
- Regular preseed URL::
absolute_reverse(
'metadata-node-by-id', args=[version, node.system_id],
query={'op': 'get_preseed'})
⇒ Becomes responsibility of ``provisioningserver``.
- From ``contrib/preseeds_v2/generic``:
- Node architecture: ``node.architecture``
Which boils down to:
--------------------
Code moves (see below_) and a view that returns:
- Metadata URL: ``absolute_reverse('metadata')``
- Token: ``NodeKey.objects.get_token_for_node(node)``
- Node status: ``node.status`` (only if commissioning or not)
- Node architecture: ``node.architecture``
- Enlistment URL: ``absolute_reverse('enlist')``
- Disable netboot URL::
absolute_reverse(
'metadata-node-by-id', args=['latest', node.system_id])
- *Optional:* return config items (e.g. ``ports_archive``)
.. _below: `Adding rendering server to the provisioning server:`_
Adding rendering server to the provisioning server:
===================================================
- Resurrect HTTP server in ``provisioningserver.plugin``.
- Move code, as detailed earlier_, to ``provisioningserver``, and
perform some moderate refactoring.
- Add handler to the ``provisioningserver`` HTTP server to query the
view_ detailed above, perhaps query the API for config, and call the
render code.
.. _earlier: `Things needed from the region to render a preseed:`_
.. _view: `Which boils down to:`_
Notes:
======
- The ``pxeconfig`` view calculates the preseed URLs. This calculation
no longer needs to happen, and its responsibility passes to the
provisioning server.
--
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to maas in Ubuntu.
https://bugs.launchpad.net/bugs/1081701
Title:
The metadata address mentioned in the preseed is wrong.
To manage notifications about this bug go to:
https://bugs.launchpad.net/maas/+bug/1081701/+subscriptions
More information about the Ubuntu-server-bugs
mailing list