Fix AttributeError in `get_config`

Change-Id: I52bdc44800da6c1393a69c4faf96375235ef98bb
Closes-Bug: #1627690
This commit is contained in:
Jordan Pittier 2016-09-26 17:22:27 +02:00
parent 7d401cd5a6
commit 0a3e056cce
3 changed files with 38 additions and 2 deletions

View File

@ -26,7 +26,7 @@ __version__ = pbr.version.VersionInfo('os_client_config').version_string()
def get_config(service_key=None, options=None, **kwargs):
config = OpenStackConfig()
if options:
config.register_argparse_options(options, sys.argv, service_key)
config.register_argparse_arguments(options, sys.argv, service_key)
parsed_options = options.parse_known_args(sys.argv)
else:
parsed_options = None

View File

@ -641,7 +641,7 @@ class OpenStackConfig(object):
# completely broken
return cloud
def register_argparse_arguments(self, parser, argv, service_keys=[]):
def register_argparse_arguments(self, parser, argv, service_keys=None):
"""Register all of the common argparse options needed.
Given an argparse parser, register the keystoneauth Session arguments,
@ -660,6 +660,9 @@ class OpenStackConfig(object):
is requested
"""
if service_keys is None:
service_keys = []
# Fix argv in place - mapping any keys with embedded _ in them to -
_fix_argv(argv)

View File

@ -0,0 +1,33 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import argparse
import os_client_config
from os_client_config.tests import base
class TestInit(base.TestCase):
def test_get_config_without_arg_parser(self):
cloud_config = os_client_config.get_config(options=None)
self.assertIsInstance(
cloud_config,
os_client_config.cloud_config.CloudConfig
)
def test_get_config_with_arg_parser(self):
cloud_config = os_client_config.get_config(
options=argparse.ArgumentParser())
self.assertIsInstance(
cloud_config,
os_client_config.cloud_config.CloudConfig
)