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