Validation for cpc_object_id config option

This patch uses the newly created DPMObjectId config object to
introduce validation for the cpc_object_id config option.

The config option still accepts both, upper and lower case, but
takes care of converting that value to lower case when used in the
code. The HMC web services only supports lower case object-ids.

Change-Id: I63bd5cdc699bde64151a7bf047e1349a7f509f3f
Closes-Bug: #1663369
This commit is contained in:
Andreas Scheuring 2017-03-08 09:49:12 +01:00
parent b66d960537
commit 5e74551f60
2 changed files with 30 additions and 7 deletions

View File

@ -14,6 +14,7 @@
from oslo_config import cfg
from os_dpm.config.cfg import DPMObjectIdOpt
DPM_GROUP = cfg.OptGroup('dpm',
title='DPM options',
@ -33,7 +34,7 @@ COMMON_DPM_OPTS = [
User name for connection to the HMC"""),
cfg.StrOpt('hmc_password', secret=True, help="""
Password for connection to the HMC"""),
cfg.StrOpt('cpc_object_id', help="""
DPMObjectIdOpt('cpc_object_id', help="""
DPM Object-id of the target CPC"""),
]

View File

@ -18,19 +18,41 @@ from oslo_config.fixture import Config
from oslotest import base
from os_dpm.config import config
from os_dpm.tests.unit.config.test_types import VALID_DPM_OBJECT_ID
from os_dpm.tests.unit.config.test_types import VALID_DPM_OBJECT_ID_UC
class TestConfig(base.BaseTestCase):
def setUp(self):
super(TestConfig, self).setUp()
self.conf = Config()
def test_register_opts(self):
conf = Config()
conf.load_raw_values(group="dpm", hmc='host')
conf.load_raw_values(group="dpm", hmc_username='username')
conf.load_raw_values(group="dpm", hmc_password='password')
conf.load_raw_values(group="dpm", cpc_object_id='uuid')
self.conf.load_raw_values(group="dpm", hmc='host')
self.conf.load_raw_values(group="dpm", hmc_username='username')
self.conf.load_raw_values(group="dpm", hmc_password='password')
self.conf.load_raw_values(group="dpm",
cpc_object_id=VALID_DPM_OBJECT_ID)
config.register_opts()
self.assertEqual('host', cfg.CONF.dpm.hmc)
self.assertEqual('username', cfg.CONF.dpm.hmc_username)
self.assertEqual('password', cfg.CONF.dpm.hmc_password)
self.assertEqual('uuid', cfg.CONF.dpm.cpc_object_id)
self.assertEqual(VALID_DPM_OBJECT_ID, cfg.CONF.dpm.cpc_object_id)
def test_register_opts_cpc_object_id_upper_case(self):
self.conf.load_raw_values(group="dpm",
cpc_object_id=VALID_DPM_OBJECT_ID_UC)
config.register_opts()
self.assertEqual(VALID_DPM_OBJECT_ID, cfg.CONF.dpm.cpc_object_id)
def test_invalid_opt(self):
self.conf.load_raw_values(group="dpm", cpc_object_id="foo")
config.register_opts()
# self.assertRaises can only be used with method calls
try:
cfg.CONF.dpm.cpc_object_id
self.fail()
except ValueError:
pass