Image building fails when modifying undefined variables

Bug #1809491 reported by Mark Goddard
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
kolla
Fix Released
Medium
Mark Goddard

Bug Description

Odd title, I know. Specific case:

My template overrides file has this:

{% set ironic_inspector_packages_append = ["python-pip"] %}

Normally I build binary/centos images.

kolla-build -t binary

Sometimes however I build a bifrost centos/source image, because bifrost does not support binary images.

kolla-build -t source bifrost

The ironic inspector image does not define ironic_inspector_packages for the source build, since it does not need any.

{% elif install_type == 'source' %}
    {% if base_distro in ['debian', 'ubuntu'] %}
        {% set ironic_inspector_packages = ['iptables'] %}
    {% endif %}

{{ macros.install_packages(ironic_inspector_packages | customizable("packages")) }}

The install_packages macro copes with the undefined variable, unless you customise it via ironic_inspector_packages_append etc.

Two options:
1. Fix this specific case, defining an empty list (tested, works).
2. Make install_packages ignore customised variables that are not defined.

Revision history for this message
Mark Goddard (mgoddard) wrote :
Changed in kolla:
assignee: nobody → Mark Goddard (mgoddard)
importance: Undecided → Medium
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kolla (master)

Reviewed: https://review.openstack.org/627170
Committed: https://git.openstack.org/cgit/openstack/kolla/commit/?id=f8d86969d0c042fd29d29df41ddd4052f687af55
Submitter: Zuul
Branch: master

commit f8d86969d0c042fd29d29df41ddd4052f687af55
Author: Mark Goddard <email address hidden>
Date: Mon Dec 24 09:38:07 2018 +0000

    Ignore undefined values in customizable filter

    When using the customizable filter to modify variables, if a template
    overrides file is shared between multiple sets of images, it is sometimes
    possible that a customised variable does not exist for a set of images.
    A specific example:

    My template overrides file has this:

    {% set ironic_inspector_packages_append = ["python-pip"] %}

    Normally I build binary/centos images.

    kolla-build -t binary

    Sometimes however I build a bifrost centos/source image, because bifrost
    does not support binary images.

    kolla-build -t source bifrost

    The ironic inspector image does not define ironic_inspector_packages for
    the source build, since it does not need any.

    {% elif install_type == 'source' %}
        {% if base_distro in ['debian', 'ubuntu'] %}
            {% set ironic_inspector_packages = ['iptables'] %}
        {% endif %}

    {{ macros.install_packages(ironic_inspector_packages |
            customizable("packages")) }}

    The install_packages macro copes with the undefined variable, however
    the customizable filter does not handle the base variable being
    undefined if a customised example exists.

    This change allows the customizable filter to ignore undefined
    variables, even if they have been customised.

    Change-Id: Ibe2fc91f5b6ceee8f937dd73c235128b2db525b1
    Closes-Bug: #1809491

Changed in kolla:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kolla (stable/rocky)

Fix proposed to branch: stable/rocky
Review: https://review.openstack.org/627501

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kolla (stable/queens)

Fix proposed to branch: stable/queens
Review: https://review.openstack.org/627502

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kolla (stable/pike)

Fix proposed to branch: stable/pike
Review: https://review.openstack.org/627503

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kolla (stable/queens)

Reviewed: https://review.openstack.org/627502
Committed: https://git.openstack.org/cgit/openstack/kolla/commit/?id=3a4374394d7ec64b2c69e789e7a5f636b688fea6
Submitter: Zuul
Branch: stable/queens

commit 3a4374394d7ec64b2c69e789e7a5f636b688fea6
Author: Mark Goddard <email address hidden>
Date: Mon Dec 24 09:38:07 2018 +0000

    Ignore undefined values in customizable filter

    When using the customizable filter to modify variables, if a template
    overrides file is shared between multiple sets of images, it is sometimes
    possible that a customised variable does not exist for a set of images.
    A specific example:

    My template overrides file has this:

    {% set ironic_inspector_packages_append = ["python-pip"] %}

    Normally I build binary/centos images.

    kolla-build -t binary

    Sometimes however I build a bifrost centos/source image, because bifrost
    does not support binary images.

    kolla-build -t source bifrost

    The ironic inspector image does not define ironic_inspector_packages for
    the source build, since it does not need any.

    {% elif install_type == 'source' %}
        {% if base_distro in ['debian', 'ubuntu'] %}
            {% set ironic_inspector_packages = ['iptables'] %}
        {% endif %}

    {{ macros.install_packages(ironic_inspector_packages |
            customizable("packages")) }}

    The install_packages macro copes with the undefined variable, however
    the customizable filter does not handle the base variable being
    undefined if a customised example exists.

    This change allows the customizable filter to ignore undefined
    variables, even if they have been customised.

    Change-Id: Ibe2fc91f5b6ceee8f937dd73c235128b2db525b1
    Closes-Bug: #1809491
    (cherry picked from commit f8d86969d0c042fd29d29df41ddd4052f687af55)

tags: added: in-stable-queens
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kolla (stable/rocky)

Reviewed: https://review.openstack.org/627501
Committed: https://git.openstack.org/cgit/openstack/kolla/commit/?id=ce161f70ae24dabf31e2fefe61633b345b3bd659
Submitter: Zuul
Branch: stable/rocky

commit ce161f70ae24dabf31e2fefe61633b345b3bd659
Author: Mark Goddard <email address hidden>
Date: Mon Dec 24 09:38:07 2018 +0000

    Ignore undefined values in customizable filter

    When using the customizable filter to modify variables, if a template
    overrides file is shared between multiple sets of images, it is sometimes
    possible that a customised variable does not exist for a set of images.
    A specific example:

    My template overrides file has this:

    {% set ironic_inspector_packages_append = ["python-pip"] %}

    Normally I build binary/centos images.

    kolla-build -t binary

    Sometimes however I build a bifrost centos/source image, because bifrost
    does not support binary images.

    kolla-build -t source bifrost

    The ironic inspector image does not define ironic_inspector_packages for
    the source build, since it does not need any.

    {% elif install_type == 'source' %}
        {% if base_distro in ['debian', 'ubuntu'] %}
            {% set ironic_inspector_packages = ['iptables'] %}
        {% endif %}

    {{ macros.install_packages(ironic_inspector_packages |
            customizable("packages")) }}

    The install_packages macro copes with the undefined variable, however
    the customizable filter does not handle the base variable being
    undefined if a customised example exists.

    This change allows the customizable filter to ignore undefined
    variables, even if they have been customised.

    Change-Id: Ibe2fc91f5b6ceee8f937dd73c235128b2db525b1
    Closes-Bug: #1809491
    (cherry picked from commit f8d86969d0c042fd29d29df41ddd4052f687af55)

tags: added: in-stable-rocky
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/kolla 8.0.0.0b1

This issue was fixed in the openstack/kolla 8.0.0.0b1 development milestone.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/kolla 6.1.1

This issue was fixed in the openstack/kolla 6.1.1 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/kolla 7.0.1

This issue was fixed in the openstack/kolla 7.0.1 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kolla (stable/pike)

Reviewed: https://review.openstack.org/627503
Committed: https://git.openstack.org/cgit/openstack/kolla/commit/?id=afac3312e6a03941fe0f5f920bbb3ee49b81dab7
Submitter: Zuul
Branch: stable/pike

commit afac3312e6a03941fe0f5f920bbb3ee49b81dab7
Author: Mark Goddard <email address hidden>
Date: Mon Dec 24 09:38:07 2018 +0000

    Ignore undefined values in customizable filter

    When using the customizable filter to modify variables, if a template
    overrides file is shared between multiple sets of images, it is sometimes
    possible that a customised variable does not exist for a set of images.
    A specific example:

    My template overrides file has this:

    {% set ironic_inspector_packages_append = ["python-pip"] %}

    Normally I build binary/centos images.

    kolla-build -t binary

    Sometimes however I build a bifrost centos/source image, because bifrost
    does not support binary images.

    kolla-build -t source bifrost

    The ironic inspector image does not define ironic_inspector_packages for
    the source build, since it does not need any.

    {% elif install_type == 'source' %}
        {% if base_distro in ['debian', 'ubuntu'] %}
            {% set ironic_inspector_packages = ['iptables'] %}
        {% endif %}

    {{ macros.install_packages(ironic_inspector_packages |
            customizable("packages")) }}

    The install_packages macro copes with the undefined variable, however
    the customizable filter does not handle the base variable being
    undefined if a customised example exists.

    This change allows the customizable filter to ignore undefined
    variables, even if they have been customised.

    Change-Id: Ibe2fc91f5b6ceee8f937dd73c235128b2db525b1
    Closes-Bug: #1809491
    (cherry picked from commit f8d86969d0c042fd29d29df41ddd4052f687af55)

tags: added: in-stable-pike
Mark Goddard (mgoddard)
Changed in kolla:
milestone: none → 8.0.0
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/kolla 5.0.5

This issue was fixed in the openstack/kolla 5.0.5 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.