OpenStackSDK создает экземпляр под конкретный проект
Я пытаюсь создать экземпляры, используя openstacksdk Python API все в порядке, но даже когда я использую:
conn2 = conn.connect_as_project(proj.name)
server = conn2.create_server(......)
сервер создается в рамках свойства администратора проекта, а не проекта, упомянутого в proj.name. Я даже пробовал project.id, но не работал.
1 ответ
Наконец вместо:
conn2 = conn.connect_as_project(project_id)
Я использовал:
conn2 = openstack.connection.Connection(
region_name='RegionOne',
auth=dict(
auth_url='http://controller:5000/v3',
username=u_name,
password=password,
project_id=project_id,
user_domain_id='default'),
compute_api_version='2',
identity_interface='internal')
и это сработало.
Я отлично справился... с той лишь разницей, что это новый проект, и мне нужно предоставить учетные данные пользователю, которого я использовал.
Это было примерно так:
project = sconn.create_project(
name=name, domain_id='default')
user_id = conn.current_user_id
user = conn.get_user(user_id)
roles = conn.list_roles()
for r in roles:
conn.identity.assign_project_role_to_user(
project.id, user.id, r.id
)
# Make sure the roles are correctly assigned to the user before proceed
conn2 = self.conn.connect_as_project(project.name)
После этого все созданное (серверы, пары ключей, сети и т. Д.) Находится в новом проекте.