Назад | Перейти на главную страницу

Проблема с ключевым словом OpenStack

У меня проблема с трапецеидальным искажением, трапецеидальное искажение настроено для пользователей nova, glance и admin, а также определены их конечные точки. при выполнении

keystone token-get 

он показывает токен, но для таких команд, как

keystone user-list

его показ

No handlers could be found for logger "keystoneclient.client"
Unable to communicate with identity service: 404 Not Found
The resource could not be found.
 . (HTTP 404)

но после установки этих переменных env он работал

export SERVICE_ENDPOINT=http://192.168.10.15:35357/v2.0
export SERVICE_TOKEN=token

но после этого для keystone token-get его показ

'Client' object has no attribute 'service_catalog'

Почему так? Как исправить любые идеи

Хорошо, это потенциальный ответ. Возможно, это не ответ.

Но мне кажется, что проблема, с которой вы столкнулись, связана с подключением к API-интерфейсу "Admin" Keystone.

Клиент Keystone обычно начинает запрос с получения токена из API «Службы». По умолчанию для этого API используется порт 5000, и его можно настроить в файле конфигурации keystone. Он также получит каталог служб, который будет использовать для поиска конечной точки Admin API.

Затем для выполнения административных функций он будет запрашивать API «Admin». По умолчанию для этого API используется 35357, и его можно настроить в файле conf keystone.

Поэтому, если API-интерфейс администратора был недоступен, это будет проявлять поведение, которое вы наблюдаете.

Есть два способа проверить, есть ли проблема с подключением к доступному вам Admin API.

Самый полезный подход - установить флаг отладки для клиента keystone. Он предоставит дополнительную информацию о сделанных запросах.

Пример (из выброшенного стека разработчиков):

stack@devstack:~/devstack$ keystone --debug user-list
REQ: curl -i http://192.168.122.236:5000/v2.0/tokens -X POST -H "Content-Type:   application/json" -H "User-Agent: python-keystoneclient"
REQ BODY: {"auth": {"tenantName": "demo", "passwordCredentials": {"username": "admin", "password": "stack"}}}

RESP: [200] {'date': 'Wed, 20 Mar 2013 23:25:09 GMT', 'content-type': 'application/json', 'content-length': '5983', 'vary': 'X-Auth-Token'}
RESP BODY: {"access": {"token": {"issued_at": "2013-03-20T23:25:09.917153", "expires": "2013-03-21T23:25:09Z", "id": "MIIKjAYJKoZIhvcNAQcCoIIKfTCCCnkCAQExCTAHBgUrDgMCGjCCCWUGCSqGSIb3DQEHAaCCCVYEgglSeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wMy0yMFQyMzoyNTowOS45MTcxNTMiLCAiZXhwaXJlcyI6ICIyMDEzLTAzLTIxVDIzOjI1OjA5WiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogbnVsbCwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiNDVlN2NkNTdiOWVmNDg3MTg5MWY1M2U3NWFlYjU3MjciLCAibmFtZSI6ICJkZW1vIn19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2Ojg3NzQvdjIvNDVlN2NkNTdiOWVmNDg3MTg5MWY1M2U3NWFlYjU3MjciLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2Ojg3NzQvdjIvNDVlN2NkNTdiOWVmNDg3MTg5MWY1M2U3NWFlYjU3MjciLCAiaWQiOiAiNTZmODI2ZTYxYWY5NGRhYTg4YTJkYmY4YzljZDA3Y2IiLCAicHVibGljVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3NC92Mi80NWU3Y2Q1N2I5ZWY0ODcxODkxZjUzZTc1YWViNTcyNyJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJjb21wdXRlIiwgIm5hbWUiOiAibm92YSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6MzMzMyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6MzMzMyIsICJpZCI6ICI2NjZlNzFiZDkzZjA0YjFjOWFjMDgxZGIwMzc1MGZjYiIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTIyLjIzNjozMzMzIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInMzIiwgIm5hbWUiOiAiczMifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2OjkyOTIiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2OjkyOTIiLCAiaWQiOiAiNWQxZDAyNjkxNzI1NGQ1YWI1YjlkNGQ1NTZlNjgwMGUiLCAicHVibGljVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6OTI5MiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpbWFnZSIsICJuYW1lIjogImdsYW5jZSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3Ni92MS80NWU3Y2Q1N2I5ZWY0ODcxODkxZjUzZTc1YWViNTcyNyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3Ni92MS80NWU3Y2Q1N2I5ZWY0ODcxODkxZjUzZTc1YWViNTcyNyIsICJpZCI6ICIwMmNiYmRjYmNlYTc0ODY3OWZmYTkwMzA1ZmY5NmUxOSIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTIyLjIzNjo4Nzc2L3YxLzQ1ZTdjZDU3YjllZjQ4NzE4OTFmNTNlNzVhZWI1NzI3In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInZvbHVtZSIsICJuYW1lIjogImNpbmRlciJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3My9zZXJ2aWNlcy9BZG1pbiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3My9zZXJ2aWNlcy9DbG91ZCIsICJpZCI6ICI2MjM0ZjM3NjNjNWY0OGVhYTBmNDExNTZhY2U5MGVhMiIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTIyLjIzNjo4NzczL3NlcnZpY2VzL0Nsb3VkIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogImVjMiIsICJuYW1lIjogImVjMiJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6NTAwMC92Mi4wIiwgImlkIjogIjA4MzFiNDVmMmY0YjRhODBhZGEwNzgyMzcyMjU4YjhjIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2OjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjcxYjZlMzYwNGI3NDRiOTBiZGJiOTQ4YjgwYTNlNjc4IiwgInJvbGVzIjogW3sibmFtZSI6ICJhZG1pbiJ9XSwgIm5hbWUiOiAiYWRtaW4ifSwgIm1ldGFkYXRhIjogeyJpc19hZG1pbiI6IDAsICJyb2xlcyI6IFsiMDdhYzQ3NmU4MjkwNGM1ZGJlMWRkODJmMTk4N2YwMTkiXX19fTGB-zCB-AIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVVbnNldDEOMAwGA1UEBxMFVW5zZXQxDjAMBgNVBAoTBVVuc2V0MRgwFgYDVQQDEw93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEgYB1E4lLmIkSot4Yggwjs3p71EXg9vMan0wX4SM5sFgsH6GrJBwJ4LPzG7HQX8wNMYaa6qMN5EWowx6+RktGHYiBOjGxGFPpWIEUcU0loAINa8QkrPMUfDfIvJDuaXR0eTEQQsaujmgqqjD9N5KuZ+t30i324T2dowD8ihdqEjGJKQ==", "tenant": {"description": null, "enabled": true, "id": "45e7cd57b9ef4871891f53e75aeb5727", "name": "demo"}}, "serviceCatalog": [{"endpoints": [{"adminURL": "http://192.168.122.236:8774/v2/45e7cd57b9ef4871891f53e75aeb5727", "region": "RegionOne", "internalURL": "http://192.168.122.236:8774/v2/45e7cd57b9ef4871891f53e75aeb5727", "id": "56f826e61af94daa88a2dbf8c9cd07cb", "publicURL": "http://192.168.122.236:8774/v2/45e7cd57b9ef4871891f53e75aeb5727"}], "endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL": "http://192.168.122.236:3333", "region": "RegionOne", "internalURL": "http://192.168.122.236:3333", "id": "666e71bd93f04b1c9ac081db03750fcb", "publicURL": "http://192.168.122.236:3333"}], "endpoints_links": [], "type": "s3", "name": "s3"}, {"endpoints": [{"adminURL": "http://192.168.122.236:9292", "region": "RegionOne", "internalURL": "http://192.168.122.236:9292", "id": "5d1d026917254d5ab5b9d4d556e6800e", "publicURL": "http://192.168.122.236:9292"}], "endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL": "http://192.168.122.236:8776/v1/45e7cd57b9ef4871891f53e75aeb5727", "region": "RegionOne", "internalURL": "http://192.168.122.236:8776/v1/45e7cd57b9ef4871891f53e75aeb5727", "id": "02cbbdcbcea748679ffa90305ff96e19", "publicURL": "http://192.168.122.236:8776/v1/45e7cd57b9ef4871891f53e75aeb5727"}], "endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints": [{"adminURL": "http://192.168.122.236:8773/services/Admin", "region": "RegionOne", "internalURL": "http://192.168.122.236:8773/services/Cloud", "id": "6234f3763c5f48eaa0f41156ace90ea2", "publicURL": "http://192.168.122.236:8773/services/Cloud"}], "endpoints_links": [], "type": "ec2", "name": "ec2"}, {"endpoints": [{"adminURL": "http://192.168.122.236:35357/v2.0", "region": "RegionOne", "internalURL": "http://192.168.122.236:5000/v2.0", "id": "0831b45f2f4b4a80ada0782372258b8c", "publicURL": "http://192.168.122.236:5000/v2.0"}], "endpoints_links": [], "type": "identity", "name": "keystone"}], "user": {"username": "admin", "roles_links": [], "id": "71b6e3604b744b90bdbb948b80a3e678", "roles": [{"name": "admin"}], "name": "admin"}, "metadata": {"is_admin": 0, "roles": ["07ac476e82904c5dbe1dd82f1987f019"]}}}

REQ: curl -i http://192.168.122.236:35357/v2.0/users -X GET -H "User-Agent: python-keystoneclient" -H "X-Auth-Token: MIIKjAYJKoZIhvcNAQcCoIIKfTCCCnkCAQExCTAHBgUrDgMCGjCCCWUGCSqGSIb3DQEHAaCCCVYEgglSeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wMy0yMFQyMzoyNTowOS45MTcxNTMiLCAiZXhwaXJlcyI6ICIyMDEzLTAzLTIxVDIzOjI1OjA5WiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogbnVsbCwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiNDVlN2NkNTdiOWVmNDg3MTg5MWY1M2U3NWFlYjU3MjciLCAibmFtZSI6ICJkZW1vIn19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2Ojg3NzQvdjIvNDVlN2NkNTdiOWVmNDg3MTg5MWY1M2U3NWFlYjU3MjciLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2Ojg3NzQvdjIvNDVlN2NkNTdiOWVmNDg3MTg5MWY1M2U3NWFlYjU3MjciLCAiaWQiOiAiNTZmODI2ZTYxYWY5NGRhYTg4YTJkYmY4YzljZDA3Y2IiLCAicHVibGljVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3NC92Mi80NWU3Y2Q1N2I5ZWY0ODcxODkxZjUzZTc1YWViNTcyNyJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJjb21wdXRlIiwgIm5hbWUiOiAibm92YSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6MzMzMyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6MzMzMyIsICJpZCI6ICI2NjZlNzFiZDkzZjA0YjFjOWFjMDgxZGIwMzc1MGZjYiIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTIyLjIzNjozMzMzIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInMzIiwgIm5hbWUiOiAiczMifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2OjkyOTIiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2OjkyOTIiLCAiaWQiOiAiNWQxZDAyNjkxNzI1NGQ1YWI1YjlkNGQ1NTZlNjgwMGUiLCAicHVibGljVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6OTI5MiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpbWFnZSIsICJuYW1lIjogImdsYW5jZSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3Ni92MS80NWU3Y2Q1N2I5ZWY0ODcxODkxZjUzZTc1YWViNTcyNyIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3Ni92MS80NWU3Y2Q1N2I5ZWY0ODcxODkxZjUzZTc1YWViNTcyNyIsICJpZCI6ICIwMmNiYmRjYmNlYTc0ODY3OWZmYTkwMzA1ZmY5NmUxOSIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTIyLjIzNjo4Nzc2L3YxLzQ1ZTdjZDU3YjllZjQ4NzE4OTFmNTNlNzVhZWI1NzI3In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogInZvbHVtZSIsICJuYW1lIjogImNpbmRlciJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3My9zZXJ2aWNlcy9BZG1pbiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6ODc3My9zZXJ2aWNlcy9DbG91ZCIsICJpZCI6ICI2MjM0ZjM3NjNjNWY0OGVhYTBmNDExNTZhY2U5MGVhMiIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzE5Mi4xNjguMTIyLjIzNjo4NzczL3NlcnZpY2VzL0Nsb3VkIn1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogImVjMiIsICJuYW1lIjogImVjMiJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xOTIuMTY4LjEyMi4yMzY6NTAwMC92Mi4wIiwgImlkIjogIjA4MzFiNDVmMmY0YjRhODBhZGEwNzgyMzcyMjU4YjhjIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTkyLjE2OC4xMjIuMjM2OjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjcxYjZlMzYwNGI3NDRiOTBiZGJiOTQ4YjgwYTNlNjc4IiwgInJvbGVzIjogW3sibmFtZSI6ICJhZG1pbiJ9XSwgIm5hbWUiOiAiYWRtaW4ifSwgIm1ldGFkYXRhIjogeyJpc19hZG1pbiI6IDAsICJyb2xlcyI6IFsiMDdhYzQ3NmU4MjkwNGM1ZGJlMWRkODJmMTk4N2YwMTkiXX19fTGB-zCB-AIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVVbnNldDEOMAwGA1UEBxMFVW5zZXQxDjAMBgNVBAoTBVVuc2V0MRgwFgYDVQQDEw93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEgYB1E4lLmIkSot4Yggwjs3p71EXg9vMan0wX4SM5sFgsH6GrJBwJ4LPzG7HQX8wNMYaa6qMN5EWowx6+RktGHYiBOjGxGFPpWIEUcU0loAINa8QkrPMUfDfIvJDuaXR0eTEQQsaujmgqqjD9N5KuZ+t30i324T2dowD8ihdqEjGJKQ=="
RESP: [200] {'date': 'Wed, 20 Mar 2013 23:25:09 GMT', 'content-type': 'application/json', 'content-length': '863', 'vary': 'X-Auth-Token'}
RESP BODY: {"users": [{"name": "alt_demo", "id": "00f1ffdaa14f448da11630edc3503e92", "tenantId": null, "enabled": true, "email": "alt_demo@example.com"}, {"name": "demo", "id": "445391568d1d4b619e7919462deeab63", "tenantId": null, "enabled": true, "email": "demo@example.com"}, {"name": "admin", "id": "71b6e3604b744b90bdbb948b80a3e678", "tenantId": null, "enabled": true, "email": "admin@example.com"}, {"name": "glance", "id": "7971cdee1ac0496499ea87828a24309b", "tenantId": "a5c7110f23ac495e805d4ebeefeff0b6", "enabled": true, "email": "glance@example.com"}, {"name": "nova", "id": "a2dda6286156444fa44308b43c934c89", "tenantId": "a5c7110f23ac495e805d4ebeefeff0b6", "enabled": true, "email": "nova@example.com"}, {"name": "cinder", "id":      "c5340dffe39d4ae4b17e2441bf1392d5", "tenantId": "a5c7110f23ac495e805d4ebeefeff0b6", "enabled": true, "email": "cinder@example.com"}]}

+----------------------------------+----------+---------+----------------------+
|                id                |   name   | enabled |        email         |
+----------------------------------+----------+---------+----------------------+
| 71b6e3604b744b90bdbb948b80a3e678 |  admin   |   True  |  admin@example.com   |
| 00f1ffdaa14f448da11630edc3503e92 | alt_demo |   True  | alt_demo@example.com |
| c5340dffe39d4ae4b17e2441bf1392d5 |  cinder  |   True  |  cinder@example.com  |
| 445391568d1d4b619e7919462deeab63 |   demo   |   True  |   demo@example.com   |
| 7971cdee1ac0496499ea87828a24309b |  glance  |   True  |  glance@example.com  |
| a2dda6286156444fa44308b43c934c89 |   nova   |   True  |   nova@example.com   |
+----------------------------------+----------+---------+----------------------+

Преимущество здесь в том, что вы увидите, где он пытается подключиться к Admin API. Он будет запрашивать сервисный API для каталога сервисов при выборе конечной точки API для Admin API. Поэтому убедитесь, что ваш каталог услуг направляет людей к нужной конечной точке API для Admin API keystone.

В качестве альтернативы вы можете просто настроить клиентский запрос Keystone.

Дополнительная информация о различиях в функциональности между сервисом и административным API, доступным для Keystone:

http://docs.openstack.org/developer/keystone/api_curl_examples.html

root@sc9200mit7-kvm:/etc/keystone# keystone --os-username=admin --os-password=Chennai123 --os-auth-url=http://<IPADDRESS>:35357/v2.0 token-get
'Client' object has no attribute 'service_catalog'

После перезапуска служб Keystone проблема была устранена, как показано ниже.

root@sc9200mit7-kvm:~# service keystone restart
keystone stop/waiting
keystone start/running, process 14423

root@sc9200mit7-kvm:~# keystone --os-username=admin --os-password=Chennai123 --os-tenant-name=chennai --os-auth-url=http://<IPADDRESS>:35357/v2.0 token-get
+-----------+----------------------------------+
|  Property |              Value               |
+-----------+----------------------------------+
|  expires  |       2013-11-10T12:22:50Z       |
|     id    | d355c0aeadc2419e929d4d50fcc9b354 |
| tenant_id | a600776ea11a41f2acf4a03e5d3baea0 |
|  user_id  | a8490f832d7243b9a40d576d9c649fa8 |
+-----------+----------------------------------+