← Back to team overview

cloud-init-dev team mailing list archive

[Merge] ~aromito/cloud-init:cloud-init-BZ_1673170 into cloud-init:master

 

Antonio Romito has proposed merging ~aromito/cloud-init:cloud-init-BZ_1673170 into cloud-init:master.

Commit message:
I had a look to the /usr/lib/python2.7/site-packages/cloudinit/cmd/main.py script and I found that it fail in the following part of code:

~~~
...
    if mode == "modules-final":
        # write the 'finished' file
        errors = []
        for m in modes:
            if v1[m]['errors']:                                          <<<--- Unhandled exception 
                errors.extend(v1[m].get('errors', []))
...
~~~

The for cycle loop into modes list that contains ('init', 'init-local', 'modules-init', 'modules-config', 'modules-final'):

The v1 array do not contains "modules-init" key and for this reason if generate an exception.





Requested reviews:
  cloud-init commiters (cloud-init-dev)

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

Applying the following patch the script make a double check on the keys present into the array before the if statement.

[root@rhvm ~]# diff -u /usr/lib/python2.7/site-packages/cloudinit/cmd/main.py /usr/lib/python2.7/site-packages/cloudinit/cmd/main.py.fixed 
--- /usr/lib/python2.7/site-packages/cloudinit/cmd/main.py	2018-03-27 14:49:38.000000000 -0400
+++ /usr/lib/python2.7/site-packages/cloudinit/cmd/main.py.fixed	2019-02-06 15:17:45.128944937 -0500
@@ -676,8 +676,9 @@
         # write the 'finished' file
         errors = []
         for m in modes:
-            if v1[m]['errors']:
-                errors.extend(v1[m].get('errors', []))
+            if m in v1:
+                if v1[m]['errors']:
+                    errors.extend(v1[m].get('errors', []))
 
         atomic_helper.write_json(
             result_path, {'v1': {'datasource': v1['datasource'],

-- 
Your team cloud-init commiters is requested to review the proposed merge of ~aromito/cloud-init:cloud-init-BZ_1673170 into cloud-init:master.
diff --git a/cloudinit/cmd/main.py b/cloudinit/cmd/main.py
index 933c019..a8e645a 100644
--- a/cloudinit/cmd/main.py
+++ b/cloudinit/cmd/main.py
@@ -673,8 +673,9 @@ def status_wrapper(name, args, data_d=None, link_d=None):
         # write the 'finished' file
         errors = []
         for m in modes:
-            if v1[m]['errors']:
-                errors.extend(v1[m].get('errors', []))
+            if m in v1:
+                if v1[m]['errors']:
+                    errors.extend(v1[m].get('errors', []))
 
         atomic_helper.write_json(
             result_path, {'v1': {'datasource': v1['datasource'],

Follow ups