Comment 0 for bug 1525800

Revision history for this message
Sergey Yezhkov (yezhkov) wrote : ceilometer client error when create Alarm

I use OpenStack Liberty deployed by instruction for CentOS7 from docs.openstack.org
I'm trying to create OS::Ceilometer::Alarm resource

In heat-engine.log i have error

2015-12-14 12:59:00.696 6672 ERROR heat.engine.resource BadRequest: Expecting to find domain in project - the server could not comply with the request since it is either malformed or otherwise incorrect. The client is assumed to be in error. (HTTP 400) (Request-ID: req-3d4ab42b-213b-4141-bd28-f8dbb2b79e96)

environment
[root@controller ~]# yum list installed | grep heat
openstack-heat-api.noarch 1:5.0.0-1.el7 @centos-openstack-liberty
openstack-heat-api-cfn.noarch 1:5.0.0-1.el7 @centos-openstack-liberty
openstack-heat-common.noarch 1:5.0.0-1.el7 @centos-openstack-liberty
openstack-heat-engine.noarch 1:5.0.0-1.el7 @centos-openstack-liberty
python-heatclient.noarch 0.8.0-1.el7 @centos-openstack-liberty
[root@controller ~]# yum list installed | grep ceilometer
openstack-ceilometer-alarm.noarch
openstack-ceilometer-api.noarch 1:5.0.0-1.el7 @centos-openstack-liberty
python-ceilometer.noarch 1:5.0.0-1.el7 @centos-openstack-liberty
python-ceilometerclient.noarch 1.5.0-1.el7 @centos-openstack-liberty

my suggestion, bug in
heat/engine/clients/os/ceilometer.py

class CeilometerClientPlugin(client_plugin.ClientPlugin):

    ...

    def _create(self):
    ...
   args = {
            'auth_url': con.auth_url,
            'service_type': self.METERING,
            'project_name': con.tenant, <--- HERE!!!
            'token': lambda: self.auth_token,
            'endpoint_type': endpoint_type,
            'os_endpoint': endpoint,
            'cacert': self._get_client_option('ceilometer', 'ca_file'),
            'cert_file': self._get_client_option('ceilometer', 'cert_file'),
            'key_file': self._get_client_option('ceilometer', 'key_file'),
            'insecure': self._get_client_option('ceilometer', 'insecure')
        }

if use
       'project_id': con.tenant_id,
instead
      'project_name': con.tenant,
it works fine