~ubuntu-branches/ubuntu/trusty/python-keystoneclient/trusty-proposed

« back to all changes in this revision

Viewing changes to keystoneclient/shell.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-03-26 14:01:05 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20120326140105-c9ddds5lbchco3ia
Tags: 2012.1~rc1-0ubuntu1
New upstream release. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
        parser = argparse.ArgumentParser(
50
50
            prog='keystone',
51
51
            description=__doc__.strip(),
52
 
            epilog='See "keystone help COMMAND" '\
 
52
            epilog='See "keystone help COMMAND" '
53
53
                   'for help on a specific command.',
54
54
            add_help=False,
55
55
            formatter_class=OpenStackHelpFormatter,
66
66
            action='store_true',
67
67
            help=argparse.SUPPRESS)
68
68
 
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]')
72
72
 
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]')
76
76
 
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]')
80
80
 
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]')
84
84
 
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]')
88
88
 
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]')
92
92
 
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')
96
97
 
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]')
100
101
 
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]')
104
105
 
 
106
        # FIXME(dtroyer): The args below are here for diablo compatibility,
 
107
        #                 remove them in folsum cycle
 
108
 
 
109
        parser.add_argument('--username', metavar='<auth-user-name>',
 
110
            help='Deprecated')
 
111
 
 
112
        parser.add_argument('--password', metavar='<auth-password>',
 
113
            help='Deprecated')
 
114
 
 
115
        parser.add_argument('--tenant_name', metavar='<tenant-name>',
 
116
            help='Deprecated')
 
117
 
 
118
        parser.add_argument('--tenant_id', metavar='<tenant-id>',
 
119
            help='Deprecated')
 
120
 
 
121
        parser.add_argument('--auth_url', metavar='<auth-url>',
 
122
            help='Deprecated')
 
123
 
 
124
        parser.add_argument('--region_name', metavar='<region-name>',
 
125
            help='Deprecated')
 
126
 
105
127
        return parser
106
128
 
107
129
    def get_subcommand_parser(self, version):
153
175
        (options, args) = parser.parse_known_args(argv)
154
176
 
155
177
        # build available subcommands based on version
156
 
        api_version = options.identity_api_version
 
178
        api_version = options.os_identity_api_version
157
179
        subcommand_parser = self.get_subcommand_parser(api_version)
158
180
        self.parser = subcommand_parser
159
181
 
160
182
        # Handle top-level --help/-h before attempting to parse
161
183
        # a command off the command line
162
 
        if options.help:
 
184
        if not argv or options.help:
163
185
            self.do_help(options)
164
186
            return 0
165
187
 
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.
180
202
 
 
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
 
210
 
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]")
186
 
 
187
 
                if not args.password:
188
 
                    raise exc.CommandError("You must provide a password "
189
 
                            "via either --password or env[OS_PASSWORD]")
190
 
 
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'
 
218
                                       '  or credentials, '
 
219
                                       '--os_username or env[OS_USERNAME].')
 
220
 
 
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):
 
225
                if not args.token:
 
226
                    raise exc.CommandError('Expecting a token provided '
 
227
                            'via either --token or env[SERVICE_TOKEN]')
 
228
 
 
229
                if not args.endpoint:
 
230
                    raise exc.CommandError('Expecting an endpoint provided '
 
231
                            'via either --endpoint or env[SERVICE_ENDPOINT]')
 
232
 
 
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
 
237
                             args.os_auth_url)):
 
238
                if not args.os_username:
 
239
                    raise exc.CommandError('Expecting a username provided '
 
240
                            'via either --os_username or env[OS_USERNAME]')
 
241
 
 
242
                if not args.os_password:
 
243
                    raise exc.CommandError('Expecting a password provided '
 
244
                            'via either --os_password or env[OS_PASSWORD]')
 
245
 
 
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]')
194
249
 
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)
197
252
        else:
198
253
            token = None
199
254
            endpoint = None
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,
208
263
                token=token,
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)
213
268
 
214
269
        try:
215
270
            args.func(self.cs, args)