2016-06-06 7 views
-1

Я пытаюсь перечислить все проекты трапецеидальных искажений, присутствующие в моей настройке. В фрагменте я использую только некоторые из них.Список проектов клиента Keystone не отображает все проекты

КОД-1:

from keystoneclient.auth.identity import v3 
from keystoneclient import session 
from keystoneclient.v3 import client as ksclient3 
auth_url = "http://192.16.66.10:5000/v3" 
token = '0112efcb75e9411b965b423edb321827' 
auth = v3.Token(auth_url=auth_url, token=token, unscoped=True) 
sess = session.Session(auth=auth) 
ks = ksclient3.Client(session=sess); 
project_list = [t.name for t in ks.projects.list(user=sess.get_user_id())] 
print project_list 

ВЫХОД

[A', B', C'] 

КОД-2

from keystoneclient import session 
from keystoneclient.v3 import client 
from keystoneclient.auth.identity import v3 
auth = v3.Password(auth_url='http://127.0.0.1:5000/v3',user_id='idm',password='idm',project_id='2545070293684905b9623095768b019d') 
sess = session.Session(auth=auth) 
keystone = client.Client(session=sess) 
keystone.users.list() 

ВЫВОД

keystoneclient.exceptions.Unauthorized: The request you have made requires authentication. (HTTP 401) 

ЗАПЛАНИРОВАННЫЕ

openstack project list 
+----------------------------------+----------------+ 
| ID        | Name   | 
+----------------------------------+----------------+ 
| 3efabc809570458180b2e20ce099ef1a | A  | 
| 546636e4532246f9a440e44deaad82d6 | B | 
| 63494b0b0e164e7e82281c94efc709e4 | C   | 
| 71dbcec67a3e49979a9a9f519409785d | D | 
| 8699a715c6834ac1a42350e593879695 | E | 
| af88b7d76ab44e13ba73b80b39d2644b | F   | 
| b431f905a52448298980a0fe0b7751be | G   | 
| ba3053eb5c534052914f133aa065865d | H  | 
+----------------------------------+----------------+ 

Вещи я хочу понять:

  • Почему КОД-1 показывает некоторые из них из списка
  • Почему КОД -2 не удается
  • Ho ш, чтобы получить трапецеидальных проект IDS из трапецеидальных клиента

ответ

1

Почему КОД-1 показывает несколько из них из списка

Ваш код делает фильтр жильцов, если вы хотели бы видеть весь список жильцов не фильтровать их, как это:

ks.projects.list() 

Ваш фильтр «пользователя = sess.get_user_id()» возвращает всех жильцов, что было создано от текущего пользователя.

Почему КОД-2 не удается

Я предполагаю, что ошибка в аргументах, вы даете user_id = «Idm», если вы используете имя пользователя, то параметр должен быть имя пользователя = «IDM», если вы передаете в агде user_id, то вам нужно передать идентификатор пользователя, например, user_id = «56d88dd0a3ab4c4c8d1d15534352d7de»

вы можете взять идентификатор от горизонта http://localhost/horizon/identity/users/

в исходном коде есть пример создания клиента:

from keystoneauth1.identity import v3 
    from keystoneauth1 import session 
    from keystoneclient.v3 import client 
    auth = v3.Password(user_domain_name=DOMAIN_NAME, 
         username=USER, 
         password=PASS, 
         project_domain_name=PROJECT_DOMAIN_NAME, 
         project_name=PROJECT_NAME, 
         auth_url=KEYSTONE_URL) 
    sess = session.Session(auth=auth) 
    keystone = client.Client(session=sess) 
    keystone.projects.list() 

    user = keystone.users.get(USER_ID) 
    user.delete() 

Как получить трапецеидальный проект IDS от трапецеидальных клиента

Если вы хотите, чтобы увидеть все арендатор идентификаторов (предположат администратор учетных данных)

project_list = [proj.id for proj in ks.projects.list(all_tenants=True)]