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:

    wait0_handle:
      type: AWS::CloudFormation::WaitConditionHandle
 
    wait0:
      type: AWS::CloudFormation::WaitCondition
      properties:
        Handle: {get_resource: wait0_handle}
        Timeout: 1800
 
    instance0:
      type: OS::Nova::Server
      properties:
        flavor: {get_param: flavor}
        image: {get_param: image}
        key_name: { get_param: key_name }
        networks:
          - port: { get_resource: instance0_eth0 }
        user_data:
          str_replace:
            template: |
              #!/bin/sh
              
              cat > /root/wait-url.txt <<EOF
              WAIT_URL
              EOF
            params:
              WAIT_URL: {"Ref": wait0_handle}

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

    
http://192.168.200.1:8000/v1/waitcondition/arn%3Aopenstack%3Aheat%3A%3A28a490a259974817b88ce490a74df8d2%3Astacks%2Fs0%2F36b013ca-1e46-4340-bf0e-44a609ae6758%2Fresources%2Fwait0_handle?Timestamp=2014-01-31T02%3A09%3A16Z&SignatureMethod=HmacSHA256&AWSAccessKeyId=cd6fbf4ebaed4ea1886ead9f98451f5a&SignatureVersion=2&Signature=9c2bvEYoedkm3uQwVOAcIA5xxy3x9q%2BO1KncY8Eeo%2BQ%3D

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 <l...@redhat.com> | larsks @ irc
Cloud Engineering / OpenStack          | "   "  @ twitter

Attachment: pgp8V8FiAvkw_.pgp
Description: PGP signature

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to