Age | Commit message (Collapse) | Author |
|
a.) do not write systemd link files if we do not have a mac address.
the check is updated to check for value rather than just presense
(ie, 'mac_address': None)
b.) DataSourceNoCloudNet: search in the nocloud seed dir
this is important because NoCloud if dsmode is Net will look only
would pass by, expecting NoCloudNet to pick it up
but NoCloudNet would not look in /var/lib/cloud/seed/nocloud
and thus skip it.
c.) support the disabling of network configuration
via /var/lib/cloud/data/upgraded-network
This is what the package upgrader is writing.
|
|
|
|
This adds support for suppling network configuration on the
kernel command line in 2 ways:
a.) kernel command line includes 'network-config=<base64>'
value of that parameter is base64 encoded json (or yaml)
it is taken as network config yaml.
In order to save space on kernel command line, it can be
base64 encoded gzipped json also.
b.) ip= paired with files authored by klibc's ipconfig tool
When network devices are brought up in the initramfs, klibc's
ipconfig tool writes files are named /run/net-<DEVNAME>.conf.
The best documentation available on that tool is
/usr/share/doc/libklibc/README.ipconfig.gz.
Also changes util.get_cmdline() to return the command line of
pid 1 if it is in a container. That is to make it consistent with
The systemd generator, and allow passing a command line to lxd,
as lxd does not mask /proc/cmdline.
|
|
|
|
net: add render_route comment to document why we added || true to route
statements
DataSourceConfigDrive: Only convert network_json to network_config when
caller reads network_config attr. Cache the conversion.
|
|
|
|
add tests to show this functional.
|
|
|
|
|
|
|
|
|
|
Wesley's loader returned network state, so that got me updating
it, and i implemented as such. Then realized that actually
ipconfig (klibc) has no support for ipv6. So even though
i painfully generalized that, its pointless. next commit will
drop it.
|
|
|
|
|
|
|
|
Tested now with the generated fallback config in an lxc container.
Had to change to return a config rather than a network state.
Also this makes nocloud look in nocloud-net's seed dir.
This way it will read the seed and clame the datasource but
not do anything other than apply networking and the init_modules early.
It is a change in behavior of the time that boothooks woudl run to do
this. May need to change that back.
|
|
|
|
there is no data source that has a populated network_config()
so at this point this doesn't do anything.
|
|
on interfaces with characters between their numbers
|
|
'version' keys
|
|
- Removed systemd .link file generation, as it is not needed right now
- Changed return of generate_fallback_config to be just ns dict
- In distros.debian don't attempt to write .link file
|
|
|
|
not to attempt renaming the network interface to the default interface. Default
interface is controleld by net.DEFAULT_PRIMARY_INTERFACE and is currently set
to eth0 for legacy reasons. By default cloud-init will not attempt to rename
the device as this does not work in some situtations depending on the backing
driver of the device.
|
|
|
|
try/except blocks because there are sometimes read errors on the files and this
should not cause a stacktrace
|
|
on in the event that no network configuration was provided to cloud-init
- Devices in /sys/class/net aside from loopback devices are scanned
- Each device is tested to determine if it has a carrier using
/sys/class/net/DEV/carrier, devices which do are preferred as they are most
likely connected to the outside world
- Devices which do not have a carrier but which might still be connected due
to being in a dormant or down state are used as fallbacks in case no
devices are found which have a carrier
- A network state dictionary is generated to be passed to
render_network_state to write ENI
- A systemd link file is generated that will rename the chosen device to eth0
|
|
|
|
|
|
lp:cloud-initramfs-tools/dyn-netconf/scripts/init-bottom/cloud-initramfs-dyn-netconf
|
|
broadcast, netmask, gateway and hostname if present
|
|
kernel's cmdline during network configuration parsing.
- Search for .conf files in /run with names starting with 'net', as these are
created during early boot if the ip parameter is present
- If any are present and valid they are merged with network configuration
from the current data source
- If the devices affected by the 'ip' parameter are already present in
network configuration, then a subnet entry will be added to the device's
configuration unless an identical entry is already present
- If any of the devices affected are not present then a mostly blank
configuration will be generated for the device and the appropriate subnet
specified
|
|
at this point, this works:
python -m cloudinit.net.network_state examples/network-all.yaml
|
|
just add curtin/net as cloudinit/net
and then copy curtin/udev.py as cloudinit/net/udev.py
|