Support OS_PROJECT_* env variables
OS_TENANT_NAME and OS_TENANT_ID are legacy variables. so OS_PROJECT_NAME and OS_PROJECT_ID should be supported. Change-Id: Ibdfa0e14d80313b8087670ccd0bd9bdbf5ba364d Closes-Bug: #1591027
This commit is contained in:
parent
9b6d7321c7
commit
c9eabe965c
@ -124,7 +124,14 @@ class BaseAuthPlugin(object):
|
|||||||
"auth_system",
|
"auth_system",
|
||||||
"username",
|
"username",
|
||||||
"password",
|
"password",
|
||||||
|
"tenant_id",
|
||||||
"tenant_name",
|
"tenant_name",
|
||||||
|
"project_id",
|
||||||
|
"project_name",
|
||||||
|
"user_domain_id",
|
||||||
|
"user_domain_name",
|
||||||
|
"project_domain_id",
|
||||||
|
"project_domain_name",
|
||||||
"token",
|
"token",
|
||||||
"auth_url",
|
"auth_url",
|
||||||
]
|
]
|
||||||
|
@ -271,31 +271,6 @@ class OpenStackMagnumShell(object):
|
|||||||
# type=positive_non_zero_float,
|
# type=positive_non_zero_float,
|
||||||
# help="Set HTTP call timeout (in seconds)")
|
# help="Set HTTP call timeout (in seconds)")
|
||||||
|
|
||||||
parser.add_argument('--os-tenant-id',
|
|
||||||
metavar='<auth-tenant-id>',
|
|
||||||
default=cliutils.env('OS_TENANT_ID'),
|
|
||||||
help='Defaults to env[OS_TENANT_ID].')
|
|
||||||
|
|
||||||
parser.add_argument('--os-user-domain-id',
|
|
||||||
metavar='<auth-user-domain-id>',
|
|
||||||
default=cliutils.env('OS_USER_DOMAIN_ID'),
|
|
||||||
help='Defaults to env[OS_USER_DOMAIN_ID].')
|
|
||||||
|
|
||||||
parser.add_argument('--os-user-domain-name',
|
|
||||||
metavar='<auth-user-domain-name>',
|
|
||||||
default=cliutils.env('OS_USER_DOMAIN_NAME'),
|
|
||||||
help='Defaults to env[OS_USER_DOMAIN_NAME].')
|
|
||||||
|
|
||||||
parser.add_argument('--os-project-domain-id',
|
|
||||||
metavar='<auth-project-domain-id>',
|
|
||||||
default=cliutils.env('OS_PROJECT_DOMAIN_ID'),
|
|
||||||
help='Defaults to env[OS_PROJECT_DOMAIN_ID].')
|
|
||||||
|
|
||||||
parser.add_argument('--os-project-domain-name',
|
|
||||||
metavar='<auth-project-domain-name>',
|
|
||||||
default=cliutils.env('OS_PROJECT_DOMAIN_NAME'),
|
|
||||||
help='Defaults to env[OS_PROJECT_DOMAIN_NAME].')
|
|
||||||
|
|
||||||
parser.add_argument('--service-type',
|
parser.add_argument('--service-type',
|
||||||
metavar='<service-type>',
|
metavar='<service-type>',
|
||||||
help='Defaults to container for all '
|
help='Defaults to container for all '
|
||||||
@ -459,18 +434,23 @@ class OpenStackMagnumShell(object):
|
|||||||
self.do_bash_completion(args)
|
self.do_bash_completion(args)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
(os_username, os_tenant_name, os_tenant_id,
|
(os_username, os_project_name, os_project_id,
|
||||||
|
os_tenant_id, os_tenant_name,
|
||||||
os_user_domain_id, os_user_domain_name,
|
os_user_domain_id, os_user_domain_name,
|
||||||
os_project_domain_id, os_project_domain_name,
|
os_project_domain_id, os_project_domain_name,
|
||||||
os_auth_url, os_auth_system, endpoint_type,
|
os_auth_url, os_auth_system, endpoint_type,
|
||||||
service_type, bypass_url, insecure) = (
|
service_type, bypass_url, insecure) = (
|
||||||
(args.os_username, args.os_tenant_name, args.os_tenant_id,
|
(args.os_username, args.os_project_name, args.os_project_id,
|
||||||
|
args.os_tenant_id, args.os_tenant_name,
|
||||||
args.os_user_domain_id, args.os_user_domain_name,
|
args.os_user_domain_id, args.os_user_domain_name,
|
||||||
args.os_project_domain_id, args.os_project_domain_name,
|
args.os_project_domain_id, args.os_project_domain_name,
|
||||||
args.os_auth_url, args.os_auth_system, args.endpoint_type,
|
args.os_auth_url, args.os_auth_system, args.endpoint_type,
|
||||||
args.service_type, args.bypass_url, args.insecure)
|
args.service_type, args.bypass_url, args.insecure)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
os_project_id = (os_project_id or os_tenant_id)
|
||||||
|
os_project_name = (os_project_name or os_tenant_name)
|
||||||
|
|
||||||
if os_auth_system and os_auth_system != "keystone":
|
if os_auth_system and os_auth_system != "keystone":
|
||||||
auth_plugin = auth.load_plugin(os_auth_system)
|
auth_plugin = auth.load_plugin(os_auth_system)
|
||||||
else:
|
else:
|
||||||
@ -499,11 +479,11 @@ class OpenStackMagnumShell(object):
|
|||||||
"via either --os-username or "
|
"via either --os-username or "
|
||||||
"env[OS_USERNAME]")
|
"env[OS_USERNAME]")
|
||||||
|
|
||||||
if not os_tenant_name and not os_tenant_id:
|
if not os_project_name and not os_project_id:
|
||||||
raise exc.CommandError("You must provide a tenant name "
|
raise exc.CommandError("You must provide a project name "
|
||||||
"or tenant id via --os-tenant-name, "
|
"or project id via --os-project-name, "
|
||||||
"--os-tenant-id, env[OS_TENANT_NAME] "
|
"--os-project-id, env[OS_PROJECT_NAME] "
|
||||||
"or env[OS_TENANT_ID]")
|
"or env[OS_PROJECT_ID]")
|
||||||
|
|
||||||
if not os_auth_url:
|
if not os_auth_url:
|
||||||
if os_auth_system and os_auth_system != 'keystone':
|
if os_auth_system and os_auth_system != 'keystone':
|
||||||
@ -552,8 +532,8 @@ class OpenStackMagnumShell(object):
|
|||||||
|
|
||||||
self.cs = client.Client(username=os_username,
|
self.cs = client.Client(username=os_username,
|
||||||
api_key=os_password,
|
api_key=os_password,
|
||||||
project_id=os_tenant_id,
|
project_id=os_project_id,
|
||||||
project_name=os_tenant_name,
|
project_name=os_project_name,
|
||||||
user_domain_id=os_user_domain_id,
|
user_domain_id=os_user_domain_id,
|
||||||
user_domain_name=os_user_domain_name,
|
user_domain_name=os_user_domain_name,
|
||||||
project_domain_id=os_project_domain_id,
|
project_domain_id=os_project_domain_id,
|
||||||
|
@ -27,22 +27,22 @@ from magnumclient.tests import utils
|
|||||||
|
|
||||||
FAKE_ENV = {'OS_USERNAME': 'username',
|
FAKE_ENV = {'OS_USERNAME': 'username',
|
||||||
'OS_PASSWORD': 'password',
|
'OS_PASSWORD': 'password',
|
||||||
'OS_TENANT_NAME': 'tenant_name',
|
'OS_PROJECT_NAME': 'project_name',
|
||||||
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
||||||
|
|
||||||
FAKE_ENV2 = {'OS_USER_ID': 'user_id',
|
FAKE_ENV2 = {'OS_USER_ID': 'user_id',
|
||||||
'OS_PASSWORD': 'password',
|
'OS_PASSWORD': 'password',
|
||||||
'OS_TENANT_ID': 'tenant_id',
|
'OS_PROJECT_ID': 'project_id',
|
||||||
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
||||||
|
|
||||||
FAKE_ENV3 = {'OS_USERNAME': 'username',
|
FAKE_ENV3 = {'OS_USERNAME': 'username',
|
||||||
'OS_PASSWORD': 'password',
|
'OS_PASSWORD': 'password',
|
||||||
'OS_TENANT_ID': 'tenant_id',
|
'OS_PROJECT_ID': 'project_id',
|
||||||
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
||||||
|
|
||||||
FAKE_ENV4 = {'OS_USERNAME': 'username',
|
FAKE_ENV4 = {'OS_USERNAME': 'username',
|
||||||
'OS_PASSWORD': 'password',
|
'OS_PASSWORD': 'password',
|
||||||
'OS_TENANT_ID': 'tenant_id',
|
'OS_PROJECT_ID': 'project_id',
|
||||||
'OS_USER_DOMAIN_NAME': 'Default',
|
'OS_USER_DOMAIN_NAME': 'Default',
|
||||||
'OS_PROJECT_DOMAIN_NAME': 'Default',
|
'OS_PROJECT_DOMAIN_NAME': 'Default',
|
||||||
'OS_AUTH_URL': 'http://no.where/v3'}
|
'OS_AUTH_URL': 'http://no.where/v3'}
|
||||||
@ -72,9 +72,9 @@ class ParserTest(utils.TestCase):
|
|||||||
class ShellTest(utils.TestCase):
|
class ShellTest(utils.TestCase):
|
||||||
AUTH_URL = utils.FAKE_ENV['OS_AUTH_URL']
|
AUTH_URL = utils.FAKE_ENV['OS_AUTH_URL']
|
||||||
|
|
||||||
_msg_no_tenant_project = ("You must provide a tenant name or tenant id"
|
_msg_no_tenant_project = ("You must provide a project name or project id"
|
||||||
" via --os-tenant-name, --os-tenant-id,"
|
" via --os-project-name, --os-project-id,"
|
||||||
" env[OS_TENANT_NAME] or env[OS_TENANT_ID]")
|
" env[OS_PROJECT_NAME] or env[OS_PROJECT_ID]")
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(ShellTest, self).setUp()
|
super(ShellTest, self).setUp()
|
||||||
@ -149,9 +149,9 @@ class ShellTest(utils.TestCase):
|
|||||||
else:
|
else:
|
||||||
self.fail('CommandError not raised')
|
self.fail('CommandError not raised')
|
||||||
|
|
||||||
def test_no_tenant_name(self):
|
def test_no_project_name(self):
|
||||||
required = self._msg_no_tenant_project
|
required = self._msg_no_tenant_project
|
||||||
self.make_env(exclude='OS_TENANT_NAME')
|
self.make_env(exclude='OS_PROJECT_NAME')
|
||||||
try:
|
try:
|
||||||
self.shell('bay-list')
|
self.shell('bay-list')
|
||||||
except exceptions.CommandError as message:
|
except exceptions.CommandError as message:
|
||||||
@ -159,9 +159,9 @@ class ShellTest(utils.TestCase):
|
|||||||
else:
|
else:
|
||||||
self.fail('CommandError not raised')
|
self.fail('CommandError not raised')
|
||||||
|
|
||||||
def test_no_tenant_id(self):
|
def test_no_project_id(self):
|
||||||
required = self._msg_no_tenant_project
|
required = self._msg_no_tenant_project
|
||||||
self.make_env(exclude='OS_TENANT_ID', fake_env=FAKE_ENV3)
|
self.make_env(exclude='OS_PROJECT_ID', fake_env=FAKE_ENV3)
|
||||||
try:
|
try:
|
||||||
self.shell('bay-list')
|
self.shell('bay-list')
|
||||||
except exceptions.CommandError as message:
|
except exceptions.CommandError as message:
|
||||||
@ -234,7 +234,7 @@ class ShellTest(utils.TestCase):
|
|||||||
mock_client.assert_called_once_with(
|
mock_client.assert_called_once_with(
|
||||||
username='username', api_key='password',
|
username='username', api_key='password',
|
||||||
endpoint_type='publicURL', project_id='',
|
endpoint_type='publicURL', project_id='',
|
||||||
project_name='tenant_name', auth_url=self.AUTH_URL,
|
project_name='project_name', auth_url=self.AUTH_URL,
|
||||||
service_type='container-infra', region_name=expected_region_name,
|
service_type='container-infra', region_name=expected_region_name,
|
||||||
project_domain_id='', project_domain_name='',
|
project_domain_id='', project_domain_name='',
|
||||||
user_domain_id='', user_domain_name='',
|
user_domain_id='', user_domain_name='',
|
||||||
@ -261,7 +261,7 @@ class ShellTest(utils.TestCase):
|
|||||||
mock_client.assert_called_once_with(
|
mock_client.assert_called_once_with(
|
||||||
username='username', api_key='password',
|
username='username', api_key='password',
|
||||||
endpoint_type='publicURL', project_id='',
|
endpoint_type='publicURL', project_id='',
|
||||||
project_name='tenant_name', auth_url=self.AUTH_URL,
|
project_name='project_name', auth_url=self.AUTH_URL,
|
||||||
service_type='container-infra', region_name=None,
|
service_type='container-infra', region_name=None,
|
||||||
project_domain_id='', project_domain_name='',
|
project_domain_id='', project_domain_name='',
|
||||||
user_domain_id='', user_domain_name='',
|
user_domain_id='', user_domain_name='',
|
||||||
@ -274,7 +274,7 @@ class ShellTest(utils.TestCase):
|
|||||||
mock_client.assert_called_once_with(
|
mock_client.assert_called_once_with(
|
||||||
username='username', api_key='password',
|
username='username', api_key='password',
|
||||||
endpoint_type='internalURL', project_id='',
|
endpoint_type='internalURL', project_id='',
|
||||||
project_name='tenant_name', auth_url=self.AUTH_URL,
|
project_name='project_name', auth_url=self.AUTH_URL,
|
||||||
service_type='container-infra', region_name=None,
|
service_type='container-infra', region_name=None,
|
||||||
project_domain_id='', project_domain_name='',
|
project_domain_id='', project_domain_name='',
|
||||||
user_domain_id='', user_domain_name='',
|
user_domain_id='', user_domain_name='',
|
||||||
@ -303,7 +303,7 @@ class ShellTestKeystoneV3(ShellTest):
|
|||||||
self.shell('--endpoint-type publicURL bay-list')
|
self.shell('--endpoint-type publicURL bay-list')
|
||||||
mock_client.assert_called_once_with(
|
mock_client.assert_called_once_with(
|
||||||
username='username', api_key='password',
|
username='username', api_key='password',
|
||||||
endpoint_type='publicURL', project_id='tenant_id',
|
endpoint_type='publicURL', project_id='project_id',
|
||||||
project_name='', auth_url=self.AUTH_URL,
|
project_name='', auth_url=self.AUTH_URL,
|
||||||
service_type='container-infra', region_name=None,
|
service_type='container-infra', region_name=None,
|
||||||
project_domain_id='', project_domain_name='Default',
|
project_domain_id='', project_domain_name='Default',
|
||||||
|
@ -27,7 +27,7 @@ from magnumclient import shell
|
|||||||
|
|
||||||
FAKE_ENV = {'OS_USERNAME': 'username',
|
FAKE_ENV = {'OS_USERNAME': 'username',
|
||||||
'OS_PASSWORD': 'password',
|
'OS_PASSWORD': 'password',
|
||||||
'OS_TENANT_NAME': 'tenant_name',
|
'OS_PROJECT_NAME': 'project_name',
|
||||||
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
'OS_AUTH_URL': 'http://no.where/v2.0'}
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ from magnumclient.tests import utils
|
|||||||
|
|
||||||
FAKE_ENV = {'OS_USERNAME': 'username',
|
FAKE_ENV = {'OS_USERNAME': 'username',
|
||||||
'OS_PASSWORD': 'password',
|
'OS_PASSWORD': 'password',
|
||||||
'OS_TENANT_NAME': 'tenant_name',
|
'OS_PROJECT_NAME': 'project_name',
|
||||||
'OS_AUTH_URL': 'http://no.where/v2.0',
|
'OS_AUTH_URL': 'http://no.where/v2.0',
|
||||||
'BYPASS_URL': 'http://magnum'}
|
'BYPASS_URL': 'http://magnum'}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user