← Back to team overview

cloud-init-dev team mailing list archive

[Merge] ~raharper/cloud-init:ubuntu-devel-new-artful-release-v7 into cloud-init:ubuntu/devel

 

Ryan Harper has proposed merging ~raharper/cloud-init:ubuntu-devel-new-artful-release-v7 into cloud-init:ubuntu/devel.

Requested reviews:
  Server Team CI bot (server-team-bot): continuous-integration
  cloud-init commiters (cloud-init-dev)
Related bugs:
  Bug #1721157 in cloud-init: "netplan render drops bridge_stp setting"
  https://bugs.launchpad.net/cloud-init/+bug/1721157

For more details, see:
https://code.launchpad.net/~raharper/cloud-init/+git/cloud-init/+merge/331892

cloud-init (17.1-16-g6eb4dc24-0ubuntu1) artful; urgency=medium

  * New upstream snapshot.
    - tools: Give specific --abbrev=8 to "git describe"
    - network: bridge_stp value not always correct [Ryan Harper] (LP: #1721157)
    - tests: re-enable tox with nocloud-kvm support [Joshua Powers]

 -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx>  Thu, 05 Oct 2017 13:46:43 -0500

-- 
Your team cloud-init commiters is requested to review the proposed merge of ~raharper/cloud-init:ubuntu-devel-new-artful-release-v7 into cloud-init:ubuntu/devel.
diff --git a/cloudinit/net/eni.py b/cloudinit/net/eni.py
index bb80ec0..c6a71d1 100644
--- a/cloudinit/net/eni.py
+++ b/cloudinit/net/eni.py
@@ -95,6 +95,9 @@ def _iface_add_attrs(iface, index):
         ignore_map.append('mac_address')
 
     for key, value in iface.items():
+        # convert bool to string for eni
+        if type(value) == bool:
+            value = 'on' if iface[key] else 'off'
         if not value or key in ignore_map:
             continue
         if key in multiline_keys:
diff --git a/cloudinit/net/netplan.py b/cloudinit/net/netplan.py
index 3b06fbf..d3788af 100644
--- a/cloudinit/net/netplan.py
+++ b/cloudinit/net/netplan.py
@@ -244,9 +244,9 @@ class Renderer(renderer.Renderer):
 
         for config in network_state.iter_interfaces():
             ifname = config.get('name')
-            # filter None entries up front so we can do simple if key in dict
+            # filter None (but not False) entries up front
             ifcfg = dict((key, value) for (key, value) in config.items()
-                         if value)
+                         if value is not None)
 
             if_type = ifcfg.get('type')
             if if_type == 'physical':
@@ -318,6 +318,7 @@ class Renderer(renderer.Renderer):
                             (port, cost) = costval.split()
                             newvalue[port] = int(cost)
                         br_config.update({newname: newvalue})
+
                 if len(br_config) > 0:
                     bridge.update({'parameters': br_config})
                 _extract_addresses(ifcfg, bridge)
diff --git a/cloudinit/net/network_state.py b/cloudinit/net/network_state.py
index 6faf01b..890dbf8 100644
--- a/cloudinit/net/network_state.py
+++ b/cloudinit/net/network_state.py
@@ -48,6 +48,7 @@ NET_CONFIG_TO_V2 = {
                'bridge_maxwait': None,
                'bridge_pathcost': 'path-cost',
                'bridge_portprio': None,
+               'bridge_stp': 'stp',
                'bridge_waitport': None}}
 
 
@@ -465,6 +466,18 @@ class NetworkStateInterpreter(object):
         for param, val in command.get('params', {}).items():
             iface.update({param: val})
 
+        # convert value to boolean
+        bridge_stp = iface.get('bridge_stp')
+        if bridge_stp and type(bridge_stp) != bool:
+            if bridge_stp in ['on', '1', 1]:
+                bridge_stp = True
+            elif bridge_stp in ['off', '0', 0]:
+                bridge_stp = False
+            else:
+                raise ValueError("Cannot convert bridge_stp value"
+                                 "(%s) to boolean", bridge_stp)
+            iface.update({'bridge_stp': bridge_stp})
+
         interfaces.update({iface['name']: iface})
 
     @ensure_command_keys(['address'])
@@ -525,8 +538,8 @@ class NetworkStateInterpreter(object):
         v2_command = {
           br0: {
             'interfaces': ['interface0', 'interface1'],
-            'fd': 0,
-            'stp': 'off',
+            'forward-delay': 0,
+            'stp': False,
             'maxwait': 0,
           }
         }
diff --git a/debian/changelog b/debian/changelog
index d2207b6..0a5901c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+cloud-init (17.1-16-g6eb4dc24-0ubuntu1) artful; urgency=medium
+
+  * New upstream snapshot.
+    - tools: Give specific --abbrev=8 to "git describe"
+    - network: bridge_stp value not always correct [Ryan Harper] (LP: #1721157)
+    - tests: re-enable tox with nocloud-kvm support [Joshua Powers]
+
+ -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx>  Thu, 05 Oct 2017 13:46:43 -0500
+
 cloud-init (17.1-13-g7fd04255-0ubuntu1) artful; urgency=medium
 
   * debian/copyright: dep5 updates, reorganize, add Apache 2.0 license.
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
index f249615..17c9342 100644
--- a/tests/unittests/test_net.py
+++ b/tests/unittests/test_net.py
@@ -756,6 +756,7 @@ pre-down route del -net 10.0.0.0 netmask 255.0.0.0 gw 11.0.0.1 metric 3 || true
                                 eth3: 50
                                 eth4: 75
                             priority: 22
+                            stp: false
                         routes:
                         -   to: ::/0
                             via: 2001:4800:78ff:1b::1
@@ -820,7 +821,7 @@ pre-down route del -net 10.0.0.0 netmask 255.0.0.0 gw 11.0.0.1 metric 3 || true
                 NM_CONTROLLED=no
                 ONBOOT=yes
                 PRIO=22
-                STP=off
+                STP=no
                 TYPE=Bridge
                 USERCTL=no"""),
             'ifcfg-eth0': textwrap.dedent("""\
@@ -1296,7 +1297,7 @@ pre-down route del -net 10.0.0.0 netmask 255.0.0.0 gw 11.0.0.1 metric 3 || true
                 NM_CONTROLLED=no
                 ONBOOT=yes
                 PRIO=22
-                STP=off
+                STP=no
                 TYPE=Bridge
                 USERCTL=no
                 """),
diff --git a/tools/make-tarball b/tools/make-tarball
index 91c4562..3197689 100755
--- a/tools/make-tarball
+++ b/tools/make-tarball
@@ -35,7 +35,7 @@ while [ $# -ne 0 ]; do
 done
 
 rev=${1:-HEAD}
-version=$(git describe "--match=[0-9]*" ${long_opt} $rev)
+version=$(git describe --abbrev=8 "--match=[0-9]*" ${long_opt} $rev)
 
 archive_base="cloud-init-$version"
 if [ -z "$output" ]; then
diff --git a/tools/read-version b/tools/read-version
index ddb2838..d9ed30d 100755
--- a/tools/read-version
+++ b/tools/read-version
@@ -56,7 +56,7 @@ if os.path.isdir(os.path.join(_tdir, ".git")) and which("git"):
     flags = []
     if use_tags:
         flags = ['--tags']
-    cmd = ['git', 'describe', '--match=[0-9]*'] + flags
+    cmd = ['git', 'describe', '--abbrev=8', '--match=[0-9]*'] + flags
 
     version = tiny_p(cmd).strip()
 
diff --git a/tox.ini b/tox.ini
index aef1f84..9223220 100644
--- a/tox.ini
+++ b/tox.ini
@@ -132,3 +132,5 @@ commands = {envpython} -m tests.cloud_tests {posargs}
 passenv = HOME
 deps =
     pylxd==2.2.4
+    paramiko==2.3.1
+    bzr+lp:simplestreams