[swift][python3] InterpolationSyntaxError: '%' must be followed by '%' or '(', found: '%SWIFT_HASH_PATH_SUFFIX%'

Bug #1836572 reported by yatin
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
High
yatin

Bug Description

Swift is being converted to python3 in https://review.rdoproject.org/r/#/c/16478/.

While testing python3-swift with tripleo standalone, faced below Error during standalone deploy:-

"<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: Traceback (most recent call last):",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/bin/swift-ring-builder\", line 20, in <module>",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: from swift.cli.ringbuilder import main",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/lib/python3.6/site-packages/swift/cli/ringbuilder.py\", line 35, in <module>",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: from swift.common import exceptions",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/lib/python3.6/site-packages/swift/common/exceptions.py\", line 17, in <module>",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: import swift.common.utils",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/lib/python3.6/site-packages/swift/common/utils.py\", line 261, in <module>",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: validate_hash_conf()",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/lib/python3.6/site-packages/swift/common/utils.py\", line 243, in validate_hash_conf",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: 'swift_hash_path_suffix')",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/lib64/python3.6/configparser.py\", line 800, in get",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: d)",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/lib64/python3.6/configparser.py\", line 394, in before_get",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: self._interpolate_some(parser, option, L, value, section, defaults, 1)",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: File \"/usr/lib64/python3.6/configparser.py\", line 444, in _interpolate_some",
        "<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: \"found: %r\" % (rest,))",
"<13>Jul 15 09:16:17 puppet-user: Notice: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: '%SWIFT_HASH_PATH_SUFFIX%'",
        "<13>Jul 15 09:16:17 puppet-user: Error: 'swift-ring-builder /etc/swift/object.builder create 10 1 1' returned 1 instead of one of [0]",
        "<13>Jul 15 09:16:17 puppet-user: Error: /Stage[main]/Tripleo::Profile::Base::Swift::Ringbuilder/Swift::Ringbuilder::Create[object]/Exec[create_object]/returns: change from 'notrun' to ['0'] failed: 'swift-ring-builder /etc/swift/object.builder create 10 1 1' returned 1 instead of one of [0]".

NOTE: Issue is seen in python3 only because:-
Swift is using ConfigParser:- https://github.com/openstack/swift/blob/dca658103a63d212bdf9195fcde6038557c13401/swift/common/utils.py#L2988,

ConfigParser in python >= 3.2 is changed to SafConfigParser https://github.com/python/cpython/blob/master/Lib/configparser.py#L1224-L1234, so the issue is seen only in Python3.

The swift.conf shipped with swift package:- https://github.com/rdo-packages/swift-distgit/blob/rpm-master/swift.conf#L2 contains %SWIFT_HASH_PATH_SUFFIX%, reading it fails in python3.

The values containing %...% needs to be set by deployment tools before using services.

puppet_config for swift_ringbuilder has missing config tag(swift_config) and hence the package defaults are not overridden and hence issue is seen:- https://github.com/openstack/tripleo-heat-templates/blob/master/deployment/swift/swift-ringbuilder-container-puppet.yaml#L107

yatin (yatinkarel)
Changed in tripleo:
milestone: none → train-2
status: New → Triaged
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to tripleo-heat-templates (master)

Fix proposed to branch: master
Review: https://review.opendev.org/671220

Changed in tripleo:
assignee: nobody → yatin (yatinkarel)
status: Triaged → In Progress
Changed in tripleo:
importance: Undecided → High
tags: added: stein-backport-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-heat-templates (master)

Reviewed: https://review.opendev.org/671220
Committed: https://git.openstack.org/cgit/openstack/tripleo-heat-templates/commit/?id=a23aa80c40bdf76fd5a6dd112f8fda35078caa29
Submitter: Zuul
Branch: master

commit a23aa80c40bdf76fd5a6dd112f8fda35078caa29
Author: yatinkarel <email address hidden>
Date: Wed Jul 17 14:41:03 2019 +0530

    Add swift_config puppet-tag for swift-ringbuilder

    ConfigParser in python3 is not happy with the default
    config(contain %%) shipped with swift package[1]. So while applying
    puppet manifest for swift-ringbuilder default config from
    package is used(as swift_config tag doesn't exist in puppet-tags),
    this patch adds it, so swift-ringbuilder uses the generated config
    instead of package defaults.

    [1] https://github.com/rdo-packages/swift-distgit/blob/rpm-master/swift.conf

    Closes-Bug: #1836572
    Change-Id: I737b85393e9ce13bda279dc0388bf27bd979af42

Changed in tripleo:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/tripleo-heat-templates 11.1.0

This issue was fixed in the openstack/tripleo-heat-templates 11.1.0 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.