[openstack-dev] [heat] Keystone errors trying to signal a WaitCondition

Lars Kellogg-Stedman lars at redhat.com
Fri Jan 31 02:46:09 UTC 2014

I'm getting an error from Keystone whenever I try to signal a Heat
WaitCondition.  I'm trying to figure out if this is a bug or me simply
not understanding how everything is supposed to communicate.

When trying to signal a WaitConditionHandle,  I see in api-cfn.log
that Heat gets as far as:

    DEBUG urllib3.connectionpool [-] "POST /v2.0/ec2tokens HTTP/1.1" 500 183 _make_request /usr/lib/python2.7/site-packages/urllib3/connectionpool.py:330

At this point, Keystone logs the following:

    ERROR keystone.common.wsgi [-] 'unicode' object has no attribute 'get'
    TRACE keystone.common.wsgi Traceback (most recent call last):
    TRACE keystone.common.wsgi   File "/usr/lib/python2.7/site-packages/keystone/common/wsgi.py", line 238, in __call__
    TRACE keystone.common.wsgi     result = method(context, **params)
    TRACE keystone.common.wsgi   File "/usr/lib/python2.7/site-packages/keystone/contrib/ec2/controllers.py", line 96, in authenticate
    TRACE keystone.common.wsgi     creds_ref = self._get_credentials(credentials['access'])
    TRACE keystone.common.wsgi   File "/usr/lib/python2.7/site-packages/keystone/contrib/ec2/controllers.py", line 237, in _get_credentials
    TRACE keystone.common.wsgi     return self._convert_v3_to_ec2_credential(creds)
    TRACE keystone.common.wsgi   File "/usr/lib/python2.7/site-packages/keystone/contrib/ec2/controllers.py", line 222, in _convert_v3_to_ec2_credential
    TRACE keystone.common.wsgi     'access': blob.get('access'),
    TRACE keystone.common.wsgi AttributeError: 'unicode' object has no attribute 'get'
    TRACE keystone.common.wsgi 

The HOT template looks (partially) like this:

      type: AWS::CloudFormation::WaitConditionHandle
      type: AWS::CloudFormation::WaitCondition
        Handle: {get_resource: wait0_handle}
        Timeout: 1800
      type: OS::Nova::Server
        flavor: {get_param: flavor}
        image: {get_param: image}
        key_name: { get_param: key_name }
          - port: { get_resource: instance0_eth0 }
            template: |
              cat > /root/wait-url.txt <<EOF
              WAIT_URL: {"Ref": wait0_handle}

And I end up with a URL that looks like this:

I've tried signaling this both using cfn-signal and using the
generated curl commandline directly.  I'm using a recent (sometime
this past week) Heat master, and Keystone 2013.2.1.

Lars Kellogg-Stedman <lars at redhat.com> | larsks @ irc
Cloud Engineering / OpenStack          | "   "  @ twitter

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140130/a07ebbd8/attachment.pgp>

More information about the OpenStack-dev mailing list