From 7bedd167e9dace1698fa11cb5ce2fb890b8dc6f3 Mon Sep 17 00:00:00 2001 From: Kevin Carter Date: Wed, 24 Jul 2019 19:07:33 -0500 Subject: [PATCH] Correct jinja loop logic for role_networks The `_role_networks` variable in network loops was being defined and then potentially redefined in a larger loop. If this option is first populated with a None type and then later discovers a hash the deployment will fail with a stack trace: 'None' has no attribute 'append' A full traceback from the error can be seen here[0]. To reolsve this issue the empty array, `_role_networks` has been moved into the `role.networks` case statement which will ensure the option is type safe for every round. [0] - https://pasted.tech/pastes/edba7903977c841901c0e655850d4f8b08b32e6c.raw Closes-Bug: #1831885 Change-Id: I480786ed4d6b0a5544535ce232ae8206d04299b1 Signed-off-by: Kevin Carter (cherry picked from commit 8833c2da2dcd7c78282d0d5494bb6280f03dd115) --- environments/network-isolation-no-tunneling.j2.yaml | 6 +++--- environments/network-isolation-v6.j2.yaml | 6 +++--- environments/network-isolation.j2.yaml | 6 +++--- network/config/2-linux-bonds-vlans/role.role.j2.yaml | 6 +++--- network/config/bond-with-vlans/role.role.j2.yaml | 6 +++--- network/config/multiple-nics/role.role.j2.yaml | 6 +++--- .../config/single-nic-linux-bridge-vlans/role.role.j2.yaml | 6 +++--- network/config/single-nic-vlans/role.role.j2.yaml | 6 +++--- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/environments/network-isolation-no-tunneling.j2.yaml b/environments/network-isolation-no-tunneling.j2.yaml index df978de6f7..0f44bc7d14 100644 --- a/environments/network-isolation-no-tunneling.j2.yaml +++ b/environments/network-isolation-no-tunneling.j2.yaml @@ -26,10 +26,10 @@ resource_registry: {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %} diff --git a/environments/network-isolation-v6.j2.yaml b/environments/network-isolation-v6.j2.yaml index 3d6a311dc7..86b2d1eddb 100644 --- a/environments/network-isolation-v6.j2.yaml +++ b/environments/network-isolation-v6.j2.yaml @@ -33,10 +33,10 @@ resource_registry: {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %} diff --git a/environments/network-isolation.j2.yaml b/environments/network-isolation.j2.yaml index 8ea377a692..fbc560d512 100644 --- a/environments/network-isolation.j2.yaml +++ b/environments/network-isolation.j2.yaml @@ -22,10 +22,10 @@ resource_registry: {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %} diff --git a/network/config/2-linux-bonds-vlans/role.role.j2.yaml b/network/config/2-linux-bonds-vlans/role.role.j2.yaml index 77a8d3ccf4..19949f01ac 100644 --- a/network/config/2-linux-bonds-vlans/role.role.j2.yaml +++ b/network/config/2-linux-bonds-vlans/role.role.j2.yaml @@ -1,10 +1,10 @@ {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %} diff --git a/network/config/bond-with-vlans/role.role.j2.yaml b/network/config/bond-with-vlans/role.role.j2.yaml index 9dbcf4dec3..0256a1d8fb 100644 --- a/network/config/bond-with-vlans/role.role.j2.yaml +++ b/network/config/bond-with-vlans/role.role.j2.yaml @@ -1,10 +1,10 @@ {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %} diff --git a/network/config/multiple-nics/role.role.j2.yaml b/network/config/multiple-nics/role.role.j2.yaml index 4502397841..ef8edb57ea 100644 --- a/network/config/multiple-nics/role.role.j2.yaml +++ b/network/config/multiple-nics/role.role.j2.yaml @@ -1,10 +1,10 @@ {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %} diff --git a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml index f17d0204e2..70454f6103 100644 --- a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml +++ b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml @@ -1,10 +1,10 @@ {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %} diff --git a/network/config/single-nic-vlans/role.role.j2.yaml b/network/config/single-nic-vlans/role.role.j2.yaml index 9743c92509..ad26d8e713 100644 --- a/network/config/single-nic-vlans/role.role.j2.yaml +++ b/network/config/single-nic-vlans/role.role.j2.yaml @@ -1,10 +1,10 @@ {#- Convert net map or net list to internal list of networks #} {#- NOTE(hjensas): For backward compatibility support role data with both #} {#- networks map (new schema) and network list (old schema). #} -{%- set _role_networks = [] %} {%- if role.networks is mapping %} -{%- for key,val in role.networks.items() %} -{%- set _role_networks = _role_networks.append(key) %} +{%- set _role_networks = [] %} +{%- for key, val in role.networks.items() %} +{%- set _ = _role_networks.append(key) %} {%- endfor %} {%- else %} {%- set _role_networks = role.networks %}