66
66
action='store_true',
67
67
help=argparse.SUPPRESS)
69
parser.add_argument('--username',
69
parser.add_argument('--os_username', metavar='<auth-user-name>',
70
70
default=env('OS_USERNAME'),
71
71
help='Defaults to env[OS_USERNAME]')
73
parser.add_argument('--password',
73
parser.add_argument('--os_password', metavar='<auth-password>',
74
74
default=env('OS_PASSWORD'),
75
75
help='Defaults to env[OS_PASSWORD]')
77
parser.add_argument('--tenant_name',
77
parser.add_argument('--os_tenant_name', metavar='<auth-tenant-name>',
78
78
default=env('OS_TENANT_NAME'),
79
79
help='Defaults to env[OS_TENANT_NAME]')
81
parser.add_argument('--tenant_id',
82
default=env('OS_TENANT_ID'), dest='os_tenant_id',
81
parser.add_argument('--os_tenant_id', metavar='<tenant-id>',
82
default=env('OS_TENANT_ID'),
83
83
help='Defaults to env[OS_TENANT_ID]')
85
parser.add_argument('--auth_url',
85
parser.add_argument('--os_auth_url', metavar='<auth-url>',
86
86
default=env('OS_AUTH_URL'),
87
87
help='Defaults to env[OS_AUTH_URL]')
89
parser.add_argument('--region_name',
89
parser.add_argument('--os_region_name', metavar='<region-name>',
90
90
default=env('OS_REGION_NAME'),
91
91
help='Defaults to env[OS_REGION_NAME]')
93
parser.add_argument('--identity_api_version',
93
parser.add_argument('--os_identity_api_version',
94
metavar='<identity-api-version>',
94
95
default=env('OS_IDENTITY_API_VERSION', 'KEYSTONE_VERSION'),
95
96
help='Defaults to env[OS_IDENTITY_API_VERSION] or 2.0')
97
parser.add_argument('--token',
98
parser.add_argument('--token', metavar='<service-token>',
98
99
default=env('SERVICE_TOKEN'),
99
100
help='Defaults to env[SERVICE_TOKEN]')
101
parser.add_argument('--endpoint',
102
parser.add_argument('--endpoint', metavar='<service-endpoint>',
102
103
default=env('SERVICE_ENDPOINT'),
103
104
help='Defaults to env[SERVICE_ENDPOINT]')
106
# FIXME(dtroyer): The args below are here for diablo compatibility,
107
# remove them in folsum cycle
109
parser.add_argument('--username', metavar='<auth-user-name>',
112
parser.add_argument('--password', metavar='<auth-password>',
115
parser.add_argument('--tenant_name', metavar='<tenant-name>',
118
parser.add_argument('--tenant_id', metavar='<tenant-id>',
121
parser.add_argument('--auth_url', metavar='<auth-url>',
124
parser.add_argument('--region_name', metavar='<region-name>',
107
129
def get_subcommand_parser(self, version):
178
200
#FIXME(usrleon): Here should be restrict for project id same as
179
201
# for username or apikey but for compatibility it is not.
203
# provide support for legacy args
204
args.os_username = args.os_username or args.username
205
args.os_password = args.os_password or args.password
206
args.os_auth_url = args.os_auth_url or args.auth_url
207
args.os_tenant_name = args.os_tenant_name or args.tenant_name
208
args.os_tenant_id = args.os_tenant_id or args.tenant_id
209
args.os_region_name = args.os_region_name or args.region_name
181
211
if not utils.isunauthenticated(args.func):
182
if not (args.token and args.endpoint):
183
if not args.username:
184
raise exc.CommandError("You must provide a username "
185
"via either --username or env[OS_USERNAME]")
187
if not args.password:
188
raise exc.CommandError("You must provide a password "
189
"via either --password or env[OS_PASSWORD]")
191
if not args.auth_url:
192
raise exc.CommandError("You must provide an auth url "
193
"via either --auth_url or via env[OS_AUTH_URL]")
212
# if the user hasn't provided any auth data
213
if not (args.token or args.endpoint or args.os_username or
214
args.os_password or args.os_auth_url):
215
raise exc.CommandError('Expecting authentication method via \n'
216
' either a service token, '
217
'--token or env[SERVICE_TOKEN], \n'
219
'--os_username or env[OS_USERNAME].')
221
# if it looks like the user wants to provide a service token
222
# but is missing something
223
if args.token or args.endpoint and not (
224
args.token and args.endpoint):
226
raise exc.CommandError('Expecting a token provided '
227
'via either --token or env[SERVICE_TOKEN]')
229
if not args.endpoint:
230
raise exc.CommandError('Expecting an endpoint provided '
231
'via either --endpoint or env[SERVICE_ENDPOINT]')
233
# if it looks like the user wants to provide a credentials
234
# but is missing something
235
if ((args.os_username or args.os_password or args.os_auth_url)
236
and not (args.os_username and args.os_password and
238
if not args.os_username:
239
raise exc.CommandError('Expecting a username provided '
240
'via either --os_username or env[OS_USERNAME]')
242
if not args.os_password:
243
raise exc.CommandError('Expecting a password provided '
244
'via either --os_password or env[OS_PASSWORD]')
246
if not args.os_auth_url:
247
raise exc.CommandError('Expecting an auth URL '
248
'via either --os_auth_url or env[OS_AUTH_URL]')
195
250
if utils.isunauthenticated(args.func):
196
self.cs = shell_generic.CLIENT_CLASS(endpoint=args.auth_url)
251
self.cs = shell_generic.CLIENT_CLASS(endpoint=args.os_auth_url)
200
255
if args.token and args.endpoint:
201
256
token = args.token
202
257
endpoint = args.endpoint
203
api_version = options.identity_api_version
258
api_version = options.os_identity_api_version
204
259
self.cs = self.get_api_class(api_version)(
205
username=args.username,
206
tenant_name=args.tenant_name,
260
username=args.os_username,
261
tenant_name=args.os_tenant_name,
207
262
tenant_id=args.os_tenant_id,
209
264
endpoint=endpoint,
210
password=args.password,
211
auth_url=args.auth_url,
212
region_name=args.region_name)
265
password=args.os_password,
266
auth_url=args.os_auth_url,
267
region_name=args.os_region_name)
215
270
args.func(self.cs, args)