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

Reply via email to