The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/3206
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === Closes #3143 Signed-off-by: Stéphane Graber <[email protected]>
From 8644747f8ac41900328643855dec177b64520661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Graber?= <[email protected]> Date: Fri, 21 Apr 2017 18:26:17 -0400 Subject: [PATCH] Allow for stable host interface names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #3143 Signed-off-by: Stéphane Graber <[email protected]> --- doc/containers.md | 21 +++++++++++---------- lxd/container_lxc.go | 8 +++++++- shared/container.go | 4 ++++ 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/doc/containers.md b/doc/containers.md index b0e9c3d..af2f354 100644 --- a/doc/containers.md +++ b/doc/containers.md @@ -54,16 +54,17 @@ user.\* | string | - | n/a The following volatile keys are currently internally used by LXD: -Key | Type | Default | Description -:-- | :--- | :------ | :---------- -volatile.\<name\>.hwaddr | string | - | Network device MAC address (when no hwaddr property is set on the device itself) -volatile.\<name\>.name | string | - | Network device name (when no name propery is set on the device itself) -volatile.apply\_template | string | - | The name of a template hook which should be triggered upon next startup -volatile.base\_image | string | - | The hash of the image the container was created from, if any. -volatile.idmap.base | integer | - | The first id in the container's primary idmap range -volatile.idmap.next | string | - | The idmap to use next time the container starts -volatile.last\_state.idmap | string | - | Serialized container uid/gid map -volatile.last\_state.power | string | - | Container state as of last host shutdown +Key | Type | Default | Description +:-- | :--- | :------ | :---------- +volatile.\<name\>.hwaddr | string | - | Network device MAC address (when no hwaddr property is set on the device itself) +volatile.\<name\>.name | string | - | Network device name (when no name propery is set on the device itself) +volatile.\<name\>.host\_name | string | - | Network device name on the host (for nictype=bridged or nictype=p2p) +volatile.apply\_template | string | - | The name of a template hook which should be triggered upon next startup +volatile.base\_image | string | - | The hash of the image the container was created from, if any. +volatile.idmap.base | integer | - | The first id in the container's primary idmap range +volatile.idmap.next | string | - | The idmap to use next time the container starts +volatile.last\_state.idmap | string | - | Serialized container uid/gid map +volatile.last\_state.power | string | - | Container state as of last host shutdown Additionally, those user keys have become common with images (support isn't guaranteed): diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go index 4ed8847..a897c7a 100644 --- a/lxd/container_lxc.go +++ b/lxd/container_lxc.go @@ -5832,7 +5832,7 @@ func (c *containerLXC) fillNetworkDevice(name string, m types.Device) (types.Dev newDevice["hwaddr"] = volatileHwaddr } - // File in the name + // Fill in the name if m["name"] == "" { configKey := fmt.Sprintf("volatile.%s.name", name) volatileName := c.localConfig[configKey] @@ -5862,6 +5862,12 @@ func (c *containerLXC) fillNetworkDevice(name string, m types.Device) (types.Dev newDevice["name"] = volatileName } + // Fill in the host name (but don't generate a static one ourselves) + if m["host_name"] == "" && shared.StringInSlice(m["nictype"], []string{"bridged", "p2p"}) { + configKey := fmt.Sprintf("volatile.%s.host_name", name) + newDevice["host_name"] = c.localConfig[configKey] + } + return newDevice, nil } diff --git a/shared/container.go b/shared/container.go index 038a7cb..11e78fd 100644 --- a/shared/container.go +++ b/shared/container.go @@ -211,6 +211,10 @@ func ConfigKeyChecker(key string) (func(value string) error, error) { if strings.HasSuffix(key, ".name") { return IsAny, nil } + + if strings.HasSuffix(key, ".host_name") { + return IsAny, nil + } } if strings.HasPrefix(key, "environment.") {
_______________________________________________ lxc-devel mailing list [email protected] http://lists.linuxcontainers.org/listinfo/lxc-devel
