Run pyupgrade to clean up Python 2 syntaxes

Update all .py source files by
 $ pyupgrade --py3-only $(git ls-files | grep ".py$")
to modernize the code according to Python 3 syntaxes.

pep8 errors are fixed by
 $ autopep8 --select=E127,E128,E501 --max-line-length 79 -r \
    --in-place os_collect_config
and a few manual adjustments.

Change-Id: Idaa7c70cf341d2ad28106d03d06eee5341507733
This commit is contained in:
Takashi Kajinami 2024-10-19 23:34:10 +09:00
parent 1e70bac696
commit 6d4ca22394
23 changed files with 240 additions and 238 deletions

View File

@ -57,7 +57,7 @@ opts = [
name = 'cfn' name = 'cfn'
class Collector(object): class Collector:
def __init__(self, requests_impl=common.requests): def __init__(self, requests_impl=common.requests):
self._requests_impl = requests_impl self._requests_impl = requests_impl
@ -128,15 +128,15 @@ class Collector(object):
value = json.loads(sub_element.text) value = json.loads(sub_element.text)
except ValueError as e: except ValueError as e:
logger.warn( logger.warn(
'Path %s failed to parse as json. (%s)' % (path, e)) 'Path {} failed to parse as json. ({})'.format(path, e))
raise exc.CfnMetadataNotAvailable raise exc.CfnMetadataNotAvailable
if sub_path: if sub_path:
for subkey in sub_path.split('.'): for subkey in sub_path.split('.'):
try: try:
value = value[subkey] value = value[subkey]
except KeyError: except KeyError:
logger.warn( logger.warn('Sub-key {} does not exist. ({})'.format(
'Sub-key %s does not exist. (%s)' % (subkey, path)) subkey, path))
raise exc.CfnMetadataNotAvailable raise exc.CfnMetadataNotAvailable
final_content.update(value) final_content.update(value)
final_list = merger.merged_list_from_content( final_list = merger.merged_list_from_content(

View File

@ -234,7 +234,7 @@ def getfilehash(files):
with open(filename) as fp: with open(filename) as fp:
data = fp.read() data = fp.read()
m.update(data.encode('utf-8')) m.update(data.encode('utf-8'))
except IOError: except OSError:
pass pass
return m.hexdigest() return m.hexdigest()

View File

@ -26,7 +26,7 @@ logger = log.getLogger('os-collect-config')
PROC_MOUNTS_PATH = '/proc/mounts' PROC_MOUNTS_PATH = '/proc/mounts'
class BlockDevice(object): class BlockDevice:
devname = None devname = None
@ -75,7 +75,7 @@ class BlockDevice(object):
'''Finds an existing mountpoint or mounts to a temp directory.''' '''Finds an existing mountpoint or mounts to a temp directory.'''
self.unmount = False self.unmount = False
# check if already mounted, if so use that # check if already mounted, if so use that
with open(PROC_MOUNTS_PATH, 'r') as f: with open(PROC_MOUNTS_PATH) as f:
for line in f.read().splitlines(): for line in f.read().splitlines():
values = line.split() values = line.split()
if values[0] == self.devname: if values[0] == self.devname:
@ -87,7 +87,8 @@ class BlockDevice(object):
# otherwise mount readonly to a temp directory # otherwise mount readonly to a temp directory
self.mountpoint = tempfile.mkdtemp(prefix='config-2-') self.mountpoint = tempfile.mkdtemp(prefix='config-2-')
cmd = ['mount', self.devname, self.mountpoint, '-o', 'ro'] cmd = ['mount', self.devname, self.mountpoint, '-o', 'ro']
logger.debug('Mounting %s at : %s' % (self.devname, self.mountpoint)) logger.debug('Mounting {} at : {}'.format(
self.devname, self.mountpoint))
try: try:
subprocess.check_output(cmd) subprocess.check_output(cmd)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
@ -129,7 +130,7 @@ class BlockDevice(object):
if not os.path.isfile(md_path): if not os.path.isfile(md_path):
logger.warn('No expected file at path: %s' % md_path) logger.warn('No expected file at path: %s' % md_path)
return {} return {}
with open(md_path, 'r') as f: with open(md_path) as f:
return json.load(f) return json.load(f)
except Exception as e: except Exception as e:
logger.error('Problem getting metadata: %s', e) logger.error('Problem getting metadata: %s', e)
@ -138,9 +139,9 @@ class BlockDevice(object):
self.cleanup() self.cleanup()
def __repr__(self): def __repr__(self):
return '%s: TYPE="%s" LABEL="%s"' % (self.devname, return '{}: TYPE="{}" LABEL="{}"'.format(self.devname,
self.type, self.type,
self.label) self.label)
def all_block_devices(): def all_block_devices():

View File

@ -38,7 +38,7 @@ opts = [
name = 'ec2' name = 'ec2'
class Collector(object): class Collector:
def __init__(self, requests_impl=common.requests): def __init__(self, requests_impl=common.requests):
self._requests_impl = requests_impl self._requests_impl = requests_impl
self.session = requests_impl.Session() self.session = requests_impl.Session()

View File

@ -43,7 +43,7 @@ opts = [
name = 'heat' name = 'heat'
class Collector(object): class Collector:
def __init__(self, def __init__(self,
keystoneclient=keystoneclient, keystoneclient=keystoneclient,
heatclient=heatclient, heatclient=heatclient,

View File

@ -33,7 +33,7 @@ name = 'heat_local'
logger = log.getLogger(__name__) logger = log.getLogger(__name__)
class Collector(object): class Collector:
def __init__(self, requests_impl=None): def __init__(self, requests_impl=None):
pass pass
@ -45,7 +45,8 @@ class Collector(object):
try: try:
value = json.loads(metadata.read()) value = json.loads(metadata.read())
except ValueError as e: except ValueError as e:
logger.info('%s is not valid JSON (%s)' % (path, e)) logger.info(
'{} is not valid JSON ({})'.format(path, e))
continue continue
if final_content: if final_content:
final_content.update(value) final_content.update(value)

View File

@ -32,7 +32,7 @@ opts = [
] ]
class Keystone(object): class Keystone:
'''A keystone wrapper class. '''A keystone wrapper class.
This wrapper is used to encapsulate any keystone related operations This wrapper is used to encapsulate any keystone related operations

View File

@ -51,7 +51,7 @@ def _dest_looks_insecure(local_path):
return looks_insecure return looks_insecure
class Collector(object): class Collector:
def __init__(self, requests_impl=None): def __init__(self, requests_impl=None):
pass pass
@ -84,7 +84,7 @@ class Collector(object):
value = json.loads(metadata.read()) value = json.loads(metadata.read())
except ValueError as e: except ValueError as e:
logger.error( logger.error(
'%s is not valid JSON (%s)' % (data_file, e)) '{} is not valid JSON ({})'.format(data_file, e))
raise exc.LocalMetadataNotAvailable raise exc.LocalMetadataNotAvailable
basename = os.path.basename(data_file) basename = os.path.basename(data_file)
final_content.append((basename, value)) final_content.append((basename, value))

View File

@ -30,7 +30,7 @@ def merged_list_from_content(final_content, deployment_keys, collector_name):
'list.' % (depkey,)) 'list.' % (depkey,))
continue continue
logger.debug( logger.debug(
'Deployment found for %s' % (depkey,)) 'Deployment found for {}'.format(depkey))
for deployment in deployments: for deployment in deployments:
if 'name' not in deployment: if 'name' not in deployment:
logger.warn( logger.warn(

View File

@ -37,7 +37,7 @@ opts = [
name = 'request' name = 'request'
class Collector(object): class Collector:
def __init__(self, requests_impl=common.requests): def __init__(self, requests_impl=common.requests):
self._requests_impl = requests_impl self._requests_impl = requests_impl
self._session = requests_impl.Session() self._session = requests_impl.Session()

View File

@ -23,9 +23,9 @@ from testtools import matchers
from os_collect_config import cache from os_collect_config import cache
class DummyConf(object): class DummyConf:
def __init__(self, cachedir): def __init__(self, cachedir):
class CONFobj(object): class CONFobj:
def __init__(self, cachedir): def __init__(self, cachedir):
self.cachedir = cachedir self.cachedir = cachedir
self.CONF = CONFobj(cachedir) self.CONF = CONFobj(cachedir)
@ -33,14 +33,14 @@ class DummyConf(object):
class TestCache(testtools.TestCase): class TestCache(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestCache, self).setUp() super().setUp()
cache_root = self.useFixture(fixtures.TempDir()) cache_root = self.useFixture(fixtures.TempDir())
self.cache_dir = os.path.join(cache_root.path, 'cache') self.cache_dir = os.path.join(cache_root.path, 'cache')
self.useFixture(fixtures.MonkeyPatch('os_collect_config.cache.cfg', self.useFixture(fixtures.MonkeyPatch('os_collect_config.cache.cfg',
DummyConf(self.cache_dir))) DummyConf(self.cache_dir)))
def tearDown(self): def tearDown(self):
super(TestCache, self).tearDown() super().tearDown()
def test_cache(self): def test_cache(self):
# Never seen, so changed is expected. # Never seen, so changed is expected.
@ -85,8 +85,8 @@ class TestCache(testtools.TestCase):
self.assertIn(path, list_list) self.assertIn(path, list_list)
def test_cache_ignores_json_inequality(self): def test_cache_ignores_json_inequality(self):
content1 = u'{"a": "value-a", "b": "value-b"}' content1 = '{"a": "value-a", "b": "value-b"}'
content2 = u'{"b": "value-b", "a": "value-a"}' content2 = '{"b": "value-b", "a": "value-a"}'
value1 = json.loads(content1) value1 = json.loads(content1)
value2 = json.loads(content2) value2 = json.loads(content2)
self.assertEqual(value1, value2) self.assertEqual(value1, value2)

View File

@ -30,80 +30,80 @@ from os_collect_config import collect
from os_collect_config import exc from os_collect_config import exc
META_DATA = {u'int1': 1, META_DATA = {'int1': 1,
u'strfoo': u'foo', 'strfoo': 'foo',
u'map_ab': { 'map_ab': {
u'a': 'apple', 'a': 'apple',
u'b': 'banana', 'b': 'banana',
}} }}
SOFTWARE_CONFIG_DATA = { SOFTWARE_CONFIG_DATA = {
u'old-style': u'value', 'old-style': 'value',
u'deployments': [ 'deployments': [
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'group': 'Heat::Ungrouped', 'group': 'Heat::Ungrouped',
u'name': 'dep-name1', 'name': 'dep-name1',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config1': 'value1' 'config1': 'value1'
} }
}, },
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'group': 'os-apply-config', 'group': 'os-apply-config',
u'name': 'dep-name2', 'name': 'dep-name2',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config2': 'value2' 'config2': 'value2'
} }
}, },
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'name': 'dep-name3', 'name': 'dep-name3',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config3': 'value3' 'config3': 'value3'
} }
}, },
{ {
u'inputs': [], 'inputs': [],
u'group': 'ignore_me', 'group': 'ignore_me',
u'name': 'ignore_me_name', 'name': 'ignore_me_name',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': 'ignore_me_config' 'config': 'ignore_me_config'
} }
] ]
} }
SOFTWARE_CONFIG_IMPOSTER_DATA = { SOFTWARE_CONFIG_IMPOSTER_DATA = {
u'old-style': u'value', 'old-style': 'value',
u'deployments': { 'deployments': {
u"not": u"a list" "not": "a list"
} }
} }
@ -116,7 +116,7 @@ class FakeResponse(dict):
pass pass
class FakeReqSession(object): class FakeReqSession:
SESSION_META_DATA = META_DATA SESSION_META_DATA = META_DATA
@ -151,7 +151,7 @@ class FakeReqSession(object):
return FakeResponse(etree.tostring(root)) return FakeResponse(etree.tostring(root))
class FakeRequests(object): class FakeRequests:
exceptions = requests.exceptions exceptions = requests.exceptions
def __init__(self, testcase, expected_netloc='192.0.2.1:8000'): def __init__(self, testcase, expected_netloc='192.0.2.1:8000'):
@ -186,21 +186,21 @@ class FakeRequestsConfigImposter(FakeRequestsSoftwareConfig):
FAKE_SESSION = FakeReqSessionConfigImposter FAKE_SESSION = FakeReqSessionConfigImposter
class FakeFailRequests(object): class FakeFailRequests:
exceptions = requests.exceptions exceptions = requests.exceptions
class Session(object): class Session:
def get(self, url, params, headers, verify=None, timeout=None): def get(self, url, params, headers, verify=None, timeout=None):
raise requests.exceptions.HTTPError(403, 'Forbidden') raise requests.exceptions.HTTPError(403, 'Forbidden')
class TestCfnBase(testtools.TestCase): class TestCfnBase(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestCfnBase, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.NestedTempfile())
self.hint_file = tempfile.NamedTemporaryFile() self.hint_file = tempfile.NamedTemporaryFile()
self.hint_file.write(u'http://192.0.2.1:8000'.encode('utf-8')) self.hint_file.write(b'http://192.0.2.1:8000')
self.hint_file.flush() self.hint_file.flush()
self.addCleanup(self.hint_file.close) self.addCleanup(self.hint_file.close)
collect.setup_conf() collect.setup_conf()
@ -266,8 +266,8 @@ class TestCfn(TestCfnBase):
self.assertThat(content, matchers.IsInstance(list)) self.assertThat(content, matchers.IsInstance(list))
self.assertEqual('cfn', content[0][0]) self.assertEqual('cfn', content[0][0])
content = content[0][1] content = content[0][1]
self.assertIn(u'b', content) self.assertIn('b', content)
self.assertEqual(u'banana', content[u'b']) self.assertEqual('banana', content['b'])
def test_collect_cfn_metadata_url_overrides_hint(self): def test_collect_cfn_metadata_url_overrides_hint(self):
cfg.CONF.cfn.metadata_url = 'http://127.0.1.1:8000/v1/' cfg.CONF.cfn.metadata_url = 'http://127.0.1.1:8000/v1/'
@ -285,7 +285,7 @@ class TestCfnSoftwareConfig(TestCfnBase):
self.assertEqual('cfn', cfn_md[0][0]) self.assertEqual('cfn', cfn_md[0][0])
cfn_config = cfn_md[0][1] cfn_config = cfn_md[0][1]
self.assertThat(cfn_config, matchers.IsInstance(dict)) self.assertThat(cfn_config, matchers.IsInstance(dict))
self.assertEqual(set(['old-style', 'deployments']), self.assertEqual({'old-style', 'deployments'},
set(cfn_config.keys())) set(cfn_config.keys()))
self.assertIn('deployments', cfn_config) self.assertIn('deployments', cfn_config)
self.assertThat(cfn_config['deployments'], matchers.IsInstance(list)) self.assertThat(cfn_config['deployments'], matchers.IsInstance(list))

View File

@ -59,7 +59,7 @@ def _setup_local_metadata(test_case):
class TestCollect(testtools.TestCase): class TestCollect(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestCollect, self).setUp() super().setUp()
self.useFixture(fixtures.FakeLogger()) self.useFixture(fixtures.FakeLogger())
collect.setup_conf() collect.setup_conf()
self.addCleanup(cfg.CONF.reset) self.addCleanup(cfg.CONF.reset)
@ -357,7 +357,7 @@ class TestCollect(testtools.TestCase):
class TestCollectAll(testtools.TestCase): class TestCollectAll(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestCollectAll, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
collect.setup_conf() collect.setup_conf()
self.cache_dir = self.useFixture(fixtures.TempDir()) self.cache_dir = self.useFixture(fixtures.TempDir())
@ -422,8 +422,8 @@ class TestCollectAll(testtools.TestCase):
(changed_keys, paths) = self._call_collect_all( (changed_keys, paths) = self._call_collect_all(
store=True, collector_kwargs_map=collector_kwargs_map) store=True, collector_kwargs_map=collector_kwargs_map)
if expected_changed is None: if expected_changed is None:
expected_changed = set(['heat_local', 'cfn', 'ec2', expected_changed = {'heat_local', 'cfn', 'ec2',
'heat', 'local', 'request', 'zaqar']) 'heat', 'local', 'request', 'zaqar'}
self.assertEqual(expected_changed, changed_keys) self.assertEqual(expected_changed, changed_keys)
self.assertThat(paths, matchers.IsInstance(list)) self.assertThat(paths, matchers.IsInstance(list))
for path in paths: for path in paths:
@ -450,9 +450,9 @@ class TestCollectAll(testtools.TestCase):
'discover_class': test_heat.FakeKeystoneDiscover 'discover_class': test_heat.FakeKeystoneDiscover
}, },
} }
expected_changed = set(( expected_changed = {
'heat_local', 'ec2', 'cfn', 'heat', 'local', 'request', 'heat_local', 'ec2', 'cfn', 'heat', 'local', 'request',
'dep-name1', 'dep-name2', 'dep-name3', 'zaqar')) 'dep-name1', 'dep-name2', 'dep-name3', 'zaqar'}
self._test_collect_all_store(collector_kwargs_map=soft_config_map, self._test_collect_all_store(collector_kwargs_map=soft_config_map,
expected_changed=expected_changed) expected_changed=expected_changed)
@ -563,7 +563,7 @@ class TestConf(testtools.TestCase):
class TestHup(testtools.TestCase): class TestHup(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestHup, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
def fake_closerange(low, high): def fake_closerange(low, high):
@ -588,7 +588,7 @@ class TestHup(testtools.TestCase):
class TestFileHash(testtools.TestCase): class TestFileHash(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestFileHash, self).setUp() super().setUp()
# Deletes tempfiles during teardown # Deletes tempfiles during teardown
self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.NestedTempfile())

View File

@ -38,7 +38,7 @@ TYPE=xfs
class TestConfigDrive(testtools.TestCase): class TestConfigDrive(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestConfigDrive, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
@mock.patch.object(subprocess, 'check_output') @mock.patch.object(subprocess, 'check_output')
@ -74,7 +74,7 @@ class TestConfigDrive(testtools.TestCase):
self.assertEqual(('foo', 'bar'), psv('foo=bar')) self.assertEqual(('foo', 'bar'), psv('foo=bar'))
self.assertEqual(('foo', 'bar=baz'), psv('foo=bar=baz')) self.assertEqual(('foo', 'bar=baz'), psv('foo=bar=baz'))
self.assertEqual(('foo', 'bar baz'), psv('foo=bar baz')) self.assertEqual(('foo', 'bar baz'), psv('foo=bar baz'))
self.assertEqual(('foo', 'bar baz'), psv('foo=bar\ baz')) self.assertEqual(('foo', 'bar baz'), psv(r'foo=bar\ baz'))
self.assertEqual(('foo', ''), psv('foo=')) self.assertEqual(('foo', ''), psv('foo='))
self.assertEqual((None, None), psv('foo')) self.assertEqual((None, None), psv('foo'))
self.assertEqual((None, None), psv(None)) self.assertEqual((None, None), psv(None))
@ -116,7 +116,7 @@ class TestConfigDrive(testtools.TestCase):
mountpoint = self.useFixture(fixtures.TempDir()).path mountpoint = self.useFixture(fixtures.TempDir()).path
config_drive.PROC_MOUNTS_PATH = os.path.join(proc.path, 'mount') config_drive.PROC_MOUNTS_PATH = os.path.join(proc.path, 'mount')
with open(config_drive.PROC_MOUNTS_PATH, 'w') as md: with open(config_drive.PROC_MOUNTS_PATH, 'w') as md:
md.write('%s %s r 0 0\n' % (bd.devname, mountpoint)) md.write('{} {} r 0 0\n'.format(bd.devname, mountpoint))
self.assertIsNone(bd.mountpoint) self.assertIsNone(bd.mountpoint)
self.assertFalse(bd.unmount) self.assertFalse(bd.unmount)

View File

@ -86,10 +86,10 @@ class FakeResponse(dict):
pass pass
class FakeRequests(object): class FakeRequests:
exceptions = requests.exceptions exceptions = requests.exceptions
class Session(object): class Session:
def get(self, url, timeout=None): def get(self, url, timeout=None):
url = urlparse.urlparse(url) url = urlparse.urlparse(url)
@ -104,17 +104,17 @@ class FakeRequests(object):
return FakeResponse(META_DATA[path]) return FakeResponse(META_DATA[path])
class FakeFailRequests(object): class FakeFailRequests:
exceptions = requests.exceptions exceptions = requests.exceptions
class Session(object): class Session:
def get(self, url, timeout=None): def get(self, url, timeout=None):
raise requests.exceptions.HTTPError(403, 'Forbidden') raise requests.exceptions.HTTPError(403, 'Forbidden')
class TestEc2(testtools.TestCase): class TestEc2(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestEc2, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
@mock.patch.object(config_drive, 'config_drive') @mock.patch.object(config_drive, 'config_drive')

View File

@ -23,31 +23,31 @@ from os_collect_config import exc
from os_collect_config import heat from os_collect_config import heat
META_DATA = {u'int1': 1, META_DATA = {'int1': 1,
u'strfoo': u'foo', 'strfoo': 'foo',
u'map_ab': { 'map_ab': {
u'a': 'apple', 'a': 'apple',
u'b': 'banana', 'b': 'banana',
}} }}
SOFTWARE_CONFIG_DATA = { SOFTWARE_CONFIG_DATA = {
u'old-style': u'value', 'old-style': 'value',
u'deployments': [ 'deployments': [
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'group': 'Heat::Ungrouped', 'group': 'Heat::Ungrouped',
u'name': 'dep-name1', 'name': 'dep-name1',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config1': 'value1' 'config1': 'value1'
} }
} }
] ]
@ -55,14 +55,14 @@ SOFTWARE_CONFIG_DATA = {
SOFTWARE_CONFIG_IMPOSTER_DATA = { SOFTWARE_CONFIG_IMPOSTER_DATA = {
u'old-style': u'value', 'old-style': 'value',
u'deployments': { 'deployments': {
u"not": u"a list" "not": "a list"
} }
} }
class FakeKeystoneDiscover(object): class FakeKeystoneDiscover:
def __init__(self, auth_url): def __init__(self, auth_url):
pass pass
@ -71,7 +71,7 @@ class FakeKeystoneDiscover(object):
return 'http://192.0.2.1:5000/v3' return 'http://192.0.2.1:5000/v3'
class FakeKeystoneClient(object): class FakeKeystoneClient:
def __init__(self, testcase, configs=None): def __init__(self, testcase, configs=None):
self._test = testcase self._test = testcase
@ -103,7 +103,7 @@ class FakeFailKeystoneClient(FakeKeystoneClient):
raise ks_exc.AuthorizationFailure('Forbidden') raise ks_exc.AuthorizationFailure('Forbidden')
class FakeHeatClient(object): class FakeHeatClient:
def __init__(self, testcase): def __init__(self, testcase):
self._test = testcase self._test = testcase
self.resources = self self.resources = self
@ -128,7 +128,7 @@ class FakeHeatClientSoftwareConfig(FakeHeatClient):
class TestHeatBase(testtools.TestCase): class TestHeatBase(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestHeatBase, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.NestedTempfile())
collect.setup_conf() collect.setup_conf()

View File

@ -27,17 +27,17 @@ from os_collect_config import exc
from os_collect_config import heat_local from os_collect_config import heat_local
META_DATA = {u'localstrA': u'A', META_DATA = {'localstrA': 'A',
u'localint9': 9, 'localint9': 9,
u'localmap_xy': { 'localmap_xy': {
u'x': 42, 'x': 42,
u'y': 'foo', 'y': 'foo',
}} }}
class TestHeatLocal(testtools.TestCase): class TestHeatLocal(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestHeatLocal, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
collect.setup_conf() collect.setup_conf()
self.orig_cfg_CONF = cfg.CONF self.orig_cfg_CONF = cfg.CONF
@ -45,7 +45,7 @@ class TestHeatLocal(testtools.TestCase):
def tearDown(self): def tearDown(self):
cfg.CONF = self.orig_cfg_CONF cfg.CONF = self.orig_cfg_CONF
cfg.CONF.reset() cfg.CONF.reset()
super(TestHeatLocal, self).tearDown() super().tearDown()
def _call_collect(self, *temp_name): def _call_collect(self, *temp_name):
cfg.CONF.heat_local.path = list(temp_name) cfg.CONF.heat_local.path = list(temp_name)
@ -83,7 +83,7 @@ class TestHeatLocal(testtools.TestCase):
def test_collect_heat_local_with_invalid_metadata(self): def test_collect_heat_local_with_invalid_metadata(self):
with tempfile.NamedTemporaryFile() as md: with tempfile.NamedTemporaryFile() as md:
md.write("{'invalid' => 'INVALID'}".encode('utf-8')) md.write(b"{'invalid' => 'INVALID'}")
md.flush() md.flush()
self.assertRaises(exc.HeatLocalMetadataNotAvailable, self.assertRaises(exc.HeatLocalMetadataNotAvailable,
self._call_collect, md.name) self._call_collect, md.name)

View File

@ -44,7 +44,7 @@ class FakeKeystoneDiscoverBase(test_heat.FakeKeystoneDiscover):
class KeystoneTest(testtools.TestCase): class KeystoneTest(testtools.TestCase):
def setUp(self): def setUp(self):
super(KeystoneTest, self).setUp() super().setUp()
self.addCleanup(cfg.CONF.reset) self.addCleanup(cfg.CONF.reset)
collect.setup_conf() collect.setup_conf()
self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.NestedTempfile())
@ -73,7 +73,7 @@ class KeystoneTest(testtools.TestCase):
self.assertIsNotNone(ks.cache) self.assertIsNotNone(ks.cache)
def _make_ks(self, client): def _make_ks(self, client):
class Configs(object): class Configs:
auth_url = 'http://192.0.2.1:5000/' auth_url = 'http://192.0.2.1:5000/'
user_id = 'auser' user_id = 'auser'
password = 'apassword' password = 'apassword'

View File

@ -28,19 +28,19 @@ from os_collect_config import exc
from os_collect_config import local from os_collect_config import local
META_DATA = {u'localstrA': u'A', META_DATA = {'localstrA': 'A',
u'localint9': 9, 'localint9': 9,
u'localmap_xy': { 'localmap_xy': {
u'x': 42, 'x': 42,
u'y': 'foo', 'y': 'foo',
}} }}
META_DATA2 = {u'localstrA': u'Z', META_DATA2 = {'localstrA': 'Z',
u'localint9': 9} 'localint9': 9}
class TestLocal(testtools.TestCase): class TestLocal(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestLocal, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.NestedTempfile())
self.tdir = tempfile.mkdtemp() self.tdir = tempfile.mkdtemp()

View File

@ -18,74 +18,74 @@ import testtools
from os_collect_config import merger from os_collect_config import merger
META_DATA = {u'int1': 1, META_DATA = {'int1': 1,
u'strfoo': u'foo', 'strfoo': 'foo',
u'map_ab': { 'map_ab': {
u'a': 'apple', 'a': 'apple',
u'b': 'banana', 'b': 'banana',
}} }}
SOFTWARE_CONFIG_DATA = { SOFTWARE_CONFIG_DATA = {
u'old-style': u'value', 'old-style': 'value',
u'deployments': [ 'deployments': [
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'group': 'Heat::Ungrouped', 'group': 'Heat::Ungrouped',
u'name': 'dep-name1', 'name': 'dep-name1',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config1': 'value1' 'config1': 'value1'
} }
}, },
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'group': 'os-apply-config', 'group': 'os-apply-config',
u'name': 'dep-name2', 'name': 'dep-name2',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config2': 'value2' 'config2': 'value2'
} }
}, },
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'name': 'dep-name3', 'name': 'dep-name3',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config3': 'value3' 'config3': 'value3'
} }
}, },
{ {
u'inputs': [], 'inputs': [],
u'group': 'ignore_me', 'group': 'ignore_me',
u'name': 'ignore_me_name', 'name': 'ignore_me_name',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': 'ignore_me_config' 'config': 'ignore_me_config'
}, },
{ {
u'inputs': [], # to test missing name 'inputs': [], # to test missing name
} }
] ]
} }

View File

@ -28,71 +28,71 @@ from os_collect_config import exc
from os_collect_config import request from os_collect_config import request
META_DATA = {u'int1': 1, META_DATA = {'int1': 1,
u'strfoo': u'foo', 'strfoo': 'foo',
u'map_ab': { 'map_ab': {
u'a': 'apple', 'a': 'apple',
u'b': 'banana', 'b': 'banana',
}} }}
SOFTWARE_CONFIG_DATA = { SOFTWARE_CONFIG_DATA = {
u'old-style': u'value', 'old-style': 'value',
u'deployments': [ 'deployments': [
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'group': 'Heat::Ungrouped', 'group': 'Heat::Ungrouped',
u'name': 'dep-name1', 'name': 'dep-name1',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config1': 'value1' 'config1': 'value1'
} }
}, },
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'group': 'os-apply-config', 'group': 'os-apply-config',
u'name': 'dep-name2', 'name': 'dep-name2',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config2': 'value2' 'config2': 'value2'
} }
}, },
{ {
u'inputs': [ 'inputs': [
{ {
u'type': u'String', 'type': 'String',
u'name': u'input1', 'name': 'input1',
u'value': u'value1' 'value': 'value1'
} }
], ],
u'name': 'dep-name3', 'name': 'dep-name3',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': { 'config': {
u'config3': 'value3' 'config3': 'value3'
} }
}, },
{ {
u'inputs': [], 'inputs': [],
u'group': 'ignore_me', 'group': 'ignore_me',
u'name': 'ignore_me_name', 'name': 'ignore_me_name',
u'outputs': None, 'outputs': None,
u'options': None, 'options': None,
u'config': 'ignore_me_config' 'config': 'ignore_me_config'
} }
] ]
} }
@ -107,10 +107,10 @@ class FakeResponse(dict):
pass pass
class FakeRequests(object): class FakeRequests:
exceptions = requests.exceptions exceptions = requests.exceptions
class Session(object): class Session:
def get(self, url, timeout=None): def get(self, url, timeout=None):
return FakeResponse(json.dumps(META_DATA)) return FakeResponse(json.dumps(META_DATA))
@ -120,10 +120,10 @@ class FakeRequests(object):
"%a, %d %b %Y %H:%M:%S %Z", time.gmtime())}) "%a, %d %b %Y %H:%M:%S %Z", time.gmtime())})
class FakeFailRequests(object): class FakeFailRequests:
exceptions = requests.exceptions exceptions = requests.exceptions
class Session(object): class Session:
def get(self, url, timeout=None): def get(self, url, timeout=None):
raise requests.exceptions.HTTPError(403, 'Forbidden') raise requests.exceptions.HTTPError(403, 'Forbidden')
@ -131,9 +131,9 @@ class FakeFailRequests(object):
raise requests.exceptions.HTTPError(403, 'Forbidden') raise requests.exceptions.HTTPError(403, 'Forbidden')
class FakeRequestsSoftwareConfig(object): class FakeRequestsSoftwareConfig:
class Session(object): class Session:
def get(self, url, timeout=None): def get(self, url, timeout=None):
return FakeResponse(json.dumps(SOFTWARE_CONFIG_DATA)) return FakeResponse(json.dumps(SOFTWARE_CONFIG_DATA))
@ -145,7 +145,7 @@ class FakeRequestsSoftwareConfig(object):
class TestRequestBase(testtools.TestCase): class TestRequestBase(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestRequestBase, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
collect.setup_conf() collect.setup_conf()
cfg.CONF.request.metadata_url = 'http://192.0.2.1:8000/my_metadata' cfg.CONF.request.metadata_url = 'http://192.0.2.1:8000/my_metadata'

View File

@ -47,7 +47,7 @@ class FakeKeystoneClientWebsocket(test_heat.FakeKeystoneClient):
return 'ws://127.0.0.1:9000/' return 'ws://127.0.0.1:9000/'
class FakeZaqarClient(object): class FakeZaqarClient:
def __init__(self, testcase): def __init__(self, testcase):
self._test = testcase self._test = testcase
@ -63,7 +63,7 @@ class FakeZaqarClient(object):
return FakeQueue() return FakeQueue()
class FakeZaqarWebsocketClient(object): class FakeZaqarWebsocketClient:
def __init__(self, options, messages=None, testcase=None): def __init__(self, options, messages=None, testcase=None):
self._messages = messages self._messages = messages
@ -88,14 +88,14 @@ class FakeZaqarWebsocketClient(object):
pass pass
class FakeQueue(object): class FakeQueue:
def pop(self): def pop(self):
return iter([message.Message( return iter([message.Message(
queue=self, ttl=10, age=10, body=test_heat.META_DATA, href='')]) queue=self, ttl=10, age=10, body=test_heat.META_DATA, href='')])
class FakeZaqarClientSoftwareConfig(object): class FakeZaqarClientSoftwareConfig:
def __init__(self, testcase): def __init__(self, testcase):
self._test = testcase self._test = testcase
@ -111,7 +111,7 @@ class FakeZaqarClientSoftwareConfig(object):
return FakeQueueSoftwareConfig() return FakeQueueSoftwareConfig()
class FakeQueueSoftwareConfig(object): class FakeQueueSoftwareConfig:
def pop(self): def pop(self):
return iter([message.Message( return iter([message.Message(
@ -121,7 +121,7 @@ class FakeQueueSoftwareConfig(object):
class TestZaqar(testtools.TestCase): class TestZaqar(testtools.TestCase):
def setUp(self): def setUp(self):
super(TestZaqar, self).setUp() super().setUp()
self.log = self.useFixture(fixtures.FakeLogger()) self.log = self.useFixture(fixtures.FakeLogger())
self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.NestedTempfile())
collect.setup_conf() collect.setup_conf()

View File

@ -53,7 +53,7 @@ opts = [
name = 'zaqar' name = 'zaqar'
class Collector(object): class Collector:
def __init__(self, def __init__(self,
keystoneclient=keystoneclient, keystoneclient=keystoneclient,
zaqarclient=zaqarclient, zaqarclient=zaqarclient,