I've keystone and all openstack essex components on one node. Compute nodes are on same network. I'm getting similar issue,
root@openstack-api:~# keystone catalog --service ec2 'Client' object has no attribute 'service_catalog'
root@openstack-api:~# env | grep --perl "^OS|^SERV" SERVICE_ENDPOINT=http://10.43.45.13:35357/v2.0 SERVICE_TOKEN=openstack123
Here's how keystone.conf looks, root@openstack-api:~# cat /etc/keystone/keystone.conf [DEFAULT] bind_host = 0.0.0.0 public_port = 5000 admin_port = 35357 admin_token = openstack123 compute_port = 8774 verbose = True debug = True log_config = /etc/keystone/logging.conf
# ================= Syslog Options ============================ # Send logs to syslog (/dev/log) instead of to file specified # by `log-file` use_syslog = False
# Facility to use. If unset defaults to LOG_USER. # syslog_log_facility = LOG_LOCAL0
[sql] connection = sqlite:////var/lib/keystone/keystone.db idle_timeout = 200
[ldap] #url = ldap://localhost #tree_dn = dc=example,dc=com #user_tree_dn = ou=Users,dc=example,dc=com #role_tree_dn = ou=Roles,dc=example,dc=com #tenant_tree_dn = ou=Groups,dc=example,dc=com #user = dc=Manager,dc=example,dc=com #password = freeipa4all #suffix = cn=example,cn=com
[identity] driver = keystone.identity.backends.sql.Identity
[catalog] driver = keystone.catalog.backends.templated.TemplatedCatalog template_file = /etc/keystone/default_catalog.templates
[token] driver = keystone.token.backends.sql.Token
# Amount of time a token should remain valid (in seconds) expiration = 86400
[policy] driver = keystone.policy.backends.rules.Policy
[ec2] driver = keystone.contrib.ec2.backends.sql.Ec2
[filter:debug] paste.filter_factory = keystone.common.wsgi:Debug.factory
[filter:token_auth] paste.filter_factory = keystone.middleware:TokenAuthMiddleware.factory
[filter:admin_token_auth] paste.filter_factory = keystone.middleware:AdminTokenAuthMiddleware.factory
[filter:xml_body] paste.filter_factory = keystone.middleware:XmlBodyMiddleware.factory
[filter:json_body] paste.filter_factory = keystone.middleware:JsonBodyMiddleware.factory
[filter:crud_extension] paste.filter_factory = keystone.contrib.admin_crud:CrudExtension.factory
[filter:ec2_extension] paste.filter_factory = keystone.contrib.ec2:Ec2Extension.factory
[app:public_service] paste.app_factory = keystone.service:public_app_factory
[app:admin_service] paste.app_factory = keystone.service:admin_app_factory
[pipeline:public_api] pipeline = token_auth admin_token_auth xml_body json_body debug ec2_extension public_service
[pipeline:admin_api] pipeline = token_auth admin_token_auth xml_body json_body debug ec2_extension crud_extension admin_service
[app:public_version_service] paste.app_factory = keystone.service:public_version_app_factory
[app:admin_version_service] paste.app_factory = keystone.service:admin_version_app_factory
[pipeline:public_version_api] pipeline = xml_body public_version_service
[pipeline:admin_version_api] pipeline = xml_body admin_version_service
[composite:main] use = egg:Paste#urlmap /v2.0 = public_api / = public_version_api
[composite:admin] use = egg:Paste#urlmap /v2.0 = admin_api / = admin_version_api
I've keystone and all openstack essex components on one node. Compute nodes are on same network. I'm getting similar issue,
root@openstack- api:~# keystone catalog --service ec2
'Client' object has no attribute 'service_catalog'
root@openstack- api:~# env | grep --perl "^OS|^SERV" 10.43.45. 13:35357/ v2.0 TOKEN=openstack 123
SERVICE_ENDPOINT=http://
SERVICE_
Here's how keystone.conf looks, api:~# cat /etc/keystone/ keystone. conf logging. conf
root@openstack-
[DEFAULT]
bind_host = 0.0.0.0
public_port = 5000
admin_port = 35357
admin_token = openstack123
compute_port = 8774
verbose = True
debug = True
log_config = /etc/keystone/
# ================= Syslog Options ======= ======= ======= =======
# Send logs to syslog (/dev/log) instead of to file specified
# by `log-file`
use_syslog = False
# Facility to use. If unset defaults to LOG_USER.
# syslog_log_facility = LOG_LOCAL0
[sql] ////var/ lib/keystone/ keystone. db
connection = sqlite:
idle_timeout = 200
[ldap] dc=example, dc=com dc=example, dc=com dc=example, dc=com dc=example, dc=com
#url = ldap://localhost
#tree_dn = dc=example,dc=com
#user_tree_dn = ou=Users,
#role_tree_dn = ou=Roles,
#tenant_tree_dn = ou=Groups,
#user = dc=Manager,
#password = freeipa4all
#suffix = cn=example,cn=com
[identity] identity. backends. sql.Identity
driver = keystone.
[catalog] catalog. backends. templated. TemplatedCatalo g default_ catalog. templates
driver = keystone.
template_file = /etc/keystone/
[token] token.backends. sql.Token
driver = keystone.
# Amount of time a token should remain valid (in seconds)
expiration = 86400
[policy] policy. backends. rules.Policy
driver = keystone.
[ec2] contrib. ec2.backends. sql.Ec2
driver = keystone.
[filter:debug] factory = keystone. common. wsgi:Debug. factory
paste.filter_
[filter:token_auth] factory = keystone. middleware: TokenAuthMiddle ware.factory
paste.filter_
[filter: admin_token_ auth] factory = keystone. middleware: AdminTokenAuthM iddleware. factory
paste.filter_
[filter:xml_body] factory = keystone. middleware: XmlBodyMiddlewa re.factory
paste.filter_
[filter:json_body] factory = keystone. middleware: JsonBodyMiddlew are.factory
paste.filter_
[filter: crud_extension] factory = keystone. contrib. admin_crud: CrudExtension. factory
paste.filter_
[filter: ec2_extension] factory = keystone. contrib. ec2:Ec2Extensio n.factory
paste.filter_
[app:public_ service] service: public_ app_factory
paste.app_factory = keystone.
[app:admin_service] service: admin_app_ factory
paste.app_factory = keystone.
[pipeline: public_ api]
pipeline = token_auth admin_token_auth xml_body json_body debug ec2_extension public_service
[pipeline: admin_api]
pipeline = token_auth admin_token_auth xml_body json_body debug ec2_extension crud_extension admin_service
[app:public_ version_ service] service: public_ version_ app_factory
paste.app_factory = keystone.
[app:admin_ version_ service] service: admin_version_ app_factory
paste.app_factory = keystone.
[pipeline: public_ version_ api] version_ service
pipeline = xml_body public_
[pipeline: admin_version_ api] service
pipeline = xml_body admin_version_
[composite:main]
use = egg:Paste#urlmap
/v2.0 = public_api
/ = public_version_api
[composite:admin]
use = egg:Paste#urlmap
/v2.0 = admin_api
/ = admin_version_api