Merge "Replace dict.iteritems() with six.iteritems(dict)"

This commit is contained in:
Jenkins 2014-07-28 14:45:51 +00:00 committed by Gerrit Code Review
commit 2746db1570
18 changed files with 44 additions and 28 deletions

View File

@ -20,6 +20,7 @@
import collections import collections
import itertools import itertools
import six
from six.moves.urllib import parse as urlparse from six.moves.urllib import parse as urlparse
from stevedore import extension from stevedore import extension
@ -137,7 +138,7 @@ class AgentManager(os_service.Service):
def start(self): def start(self):
self.pipeline_manager = pipeline.setup_pipeline() self.pipeline_manager = pipeline.setup_pipeline()
for interval, task in self.setup_polling_tasks().iteritems(): for interval, task in six.iteritems(self.setup_polling_tasks()):
self.tg.add_timer(interval, self.tg.add_timer(interval,
self.interval_task, self.interval_task,
task=task) task=task)

View File

@ -23,6 +23,7 @@ from nova import notifications
from nova.openstack.common import log as logging from nova.openstack.common import log as logging
from nova.openstack.common.notifier import api as notifier_api from nova.openstack.common.notifier import api as notifier_api
from nova import utils from nova import utils
import six
from stevedore import extension from stevedore import extension
# HACK(dhellmann): Insert the nova version of openstack.common into # HACK(dhellmann): Insert the nova version of openstack.common into
@ -96,7 +97,7 @@ class Instance(object):
can pass it to the pollsters. can pass it to the pollsters.
""" """
def __init__(self, context, info): def __init__(self, context, info):
for k, v in info.iteritems(): for k, v in six.iteritems(info):
if k == 'name': if k == 'name':
setattr(self, 'OS-EXT-SRV-ATTR:instance_name', v) setattr(self, 'OS-EXT-SRV-ATTR:instance_name', v)
elif k == 'metadata': elif k == 'metadata':

View File

@ -19,6 +19,7 @@ import datetime
from keystoneclient import exceptions from keystoneclient import exceptions
from oslo.config import cfg from oslo.config import cfg
import requests import requests
import six
from ceilometer.central import plugin from ceilometer.central import plugin
from ceilometer.openstack.common.gettextutils import _ from ceilometer.openstack.common.gettextutils import _
@ -45,7 +46,7 @@ class KwapiClient(object):
request = requests.get(probes_url, headers=headers) request = requests.get(probes_url, headers=headers)
message = request.json() message = request.json()
probes = message['probes'] probes = message['probes']
for key, value in probes.iteritems(): for key, value in six.iteritems(probes):
probe_dict = value probe_dict = value
probe_dict['id'] = key probe_dict['id'] = key
yield probe_dict yield probe_dict

View File

@ -21,6 +21,7 @@ import datetime
import inspect import inspect
import math import math
import six
from six import moves from six import moves
from ceilometer.openstack.common import timeutils from ceilometer.openstack.common import timeutils
@ -108,7 +109,7 @@ class Model(object):
def __init__(self, **kwds): def __init__(self, **kwds):
self.fields = list(kwds) self.fields = list(kwds)
for k, v in kwds.iteritems(): for k, v in six.iteritems(kwds):
setattr(self, k, v) setattr(self, k, v)
def as_dict(self): def as_dict(self):

View File

@ -29,6 +29,7 @@ import sys
import bson.code import bson.code
import bson.objectid import bson.objectid
import pymongo import pymongo
import six
from ceilometer.openstack.common import log from ceilometer.openstack.common import log
from ceilometer.openstack.common import timeutils from ceilometer.openstack.common import timeutils
@ -266,7 +267,7 @@ class Connection(pymongo_base.Connection):
q['resource_id'] = resource q['resource_id'] = resource
# Add resource_ prefix so it matches the field in the db # Add resource_ prefix so it matches the field in the db
q.update(dict(('resource_' + k, v) q.update(dict(('resource_' + k, v)
for (k, v) in metaquery.iteritems())) for (k, v) in six.iteritems(metaquery)))
if start_timestamp or end_timestamp: if start_timestamp or end_timestamp:
# Look for resources matching the above criteria and with # Look for resources matching the above criteria and with

View File

@ -31,6 +31,7 @@ import bson.code
import bson.objectid import bson.objectid
from oslo.config import cfg from oslo.config import cfg
import pymongo import pymongo
import six
from ceilometer.openstack.common import log from ceilometer.openstack.common import log
from ceilometer.openstack.common import timeutils from ceilometer.openstack.common import timeutils
@ -698,7 +699,7 @@ class Connection(pymongo_base.Connection):
# Add resource_ prefix so it matches the field in the db # Add resource_ prefix so it matches the field in the db
query.update(dict(('resource_' + k, v) query.update(dict(('resource_' + k, v)
for (k, v) in metaquery.iteritems())) for (k, v) in six.iteritems(metaquery)))
# FIXME(dhellmann): This may not perform very well, # FIXME(dhellmann): This may not perform very well,
# but doing any better will require changing the database # but doing any better will require changing the database
@ -753,7 +754,7 @@ class Connection(pymongo_base.Connection):
query['_id'] = resource query['_id'] = resource
query.update(dict((k, v) query.update(dict((k, v)
for (k, v) in metaquery.iteritems())) for (k, v) in six.iteritems(metaquery)))
keys = base._handle_sort_key('resource') keys = base._handle_sort_key('resource')
sort_keys = ['last_sample_timestamp' if i == 'timestamp' else i sort_keys = ['last_sample_timestamp' if i == 'timestamp' else i

View File

@ -22,6 +22,7 @@ import operator
import os import os
from oslo.config import cfg from oslo.config import cfg
import six
from sqlalchemy import and_ from sqlalchemy import and_
from sqlalchemy import distinct from sqlalchemy import distinct
from sqlalchemy import func from sqlalchemy import func
@ -105,7 +106,7 @@ def apply_metaquery_filter(session, query, metaquery):
:param query: Query instance :param query: Query instance
:param metaquery: dict with metadata to match on. :param metaquery: dict with metadata to match on.
""" """
for k, value in metaquery.iteritems(): for k, value in six.iteritems(metaquery):
key = k[9:] # strip out 'metadata.' prefix key = k[9:] # strip out 'metadata.' prefix
try: try:
_model = sql_utils.META_TYPE_MAP[type(value)] _model = sql_utils.META_TYPE_MAP[type(value)]
@ -795,7 +796,7 @@ class Connection(base.Connection):
models.TraitType.id, models.TraitType.id,
models.TraitType.desc == trait_name] models.TraitType.desc == trait_name]
for key, value in trait_filter.iteritems(): for key, value in six.iteritems(trait_filter):
if key == 'string': if key == 'string':
conditions.append(models.Trait.t_string == value) conditions.append(models.Trait.t_string == value)
elif key == 'integer': elif key == 'integer':

View File

@ -23,6 +23,7 @@ import time
from oslo.config import cfg from oslo.config import cfg
import pymongo import pymongo
import six
import weakref import weakref
from ceilometer.openstack.common.gettextutils import _ from ceilometer.openstack.common.gettextutils import _
@ -89,7 +90,7 @@ def make_events_query_from_filter(event_filter):
for trait_filter in event_filter.traits_filter: for trait_filter in event_filter.traits_filter:
op = trait_filter.pop('op', 'eq') op = trait_filter.pop('op', 'eq')
dict_query = {} dict_query = {}
for k, v in trait_filter.iteritems(): for k, v in six.iteritems(trait_filter):
if v is not None: if v is not None:
# All parameters in EventFilter['traits'] are optional, so # All parameters in EventFilter['traits'] are optional, so
# we need to check if they are in the query or no. # we need to check if they are in the query or no.
@ -149,7 +150,7 @@ def make_query_from_filter(sample_filter, require_meter=True):
# so the samples call metadata resource_metadata, so we convert # so the samples call metadata resource_metadata, so we convert
# to that. # to that.
q.update(dict(('resource_%s' % k, v) q.update(dict(('resource_%s' % k, v)
for (k, v) in sample_filter.metaquery.iteritems())) for (k, v) in six.iteritems(sample_filter.metaquery)))
return q return q

View File

@ -19,6 +19,7 @@ SQLAlchemy models for Ceilometer data.
import json import json
import six
from sqlalchemy import (Column, Integer, String, ForeignKey, Index, from sqlalchemy import (Column, Integer, String, ForeignKey, Index,
UniqueConstraint, BigInteger, join) UniqueConstraint, BigInteger, join)
from sqlalchemy import Float, Boolean, Text, DateTime from sqlalchemy import Float, Boolean, Text, DateTime
@ -91,7 +92,7 @@ class CeilometerBase(object):
def update(self, values): def update(self, values):
"""Make the model object behave like a dict.""" """Make the model object behave like a dict."""
for k, v in values.iteritems(): for k, v in six.iteritems(values):
setattr(self, k, v) setattr(self, k, v)

View File

@ -25,6 +25,7 @@ import uuid
import mock import mock
import oslo.messaging.conffixture import oslo.messaging.conffixture
import six
from six import moves from six import moves
from ceilometer.alarm.storage import models from ceilometer.alarm.storage import models
@ -386,7 +387,7 @@ class TestAlarms(v2.FunctionalTest,
'combination_rule': {} 'combination_rule': {}
} }
} }
for field, json in jsons.iteritems(): for field, json in six.iteritems(jsons):
resp = self.post_json('/alarms', params=json, expect_errors=True, resp = self.post_json('/alarms', params=json, expect_errors=True,
status=400, headers=self.auth_headers) status=400, headers=self.auth_headers)
self.assertEqual("Invalid input for field/attribute %s." self.assertEqual("Invalid input for field/attribute %s."
@ -965,7 +966,7 @@ class TestAlarms(v2.FunctionalTest,
'period': 180, 'period': 180,
} }
} }
for aspect, id in identifiers.iteritems(): for aspect, id in six.iteritems(identifiers):
json['%s_id' % aspect] = id json['%s_id' % aspect] = id
return json return json
@ -1640,13 +1641,13 @@ class TestAlarms(v2.FunctionalTest,
status=204) status=204)
def _assert_is_subset(self, expected, actual): def _assert_is_subset(self, expected, actual):
for k, v in expected.iteritems(): for k, v in six.iteritems(expected):
self.assertEqual(v, actual.get(k), 'mismatched field: %s' % k) self.assertEqual(v, actual.get(k), 'mismatched field: %s' % k)
self.assertIsNotNone(actual['event_id']) self.assertIsNotNone(actual['event_id'])
def _assert_in_json(self, expected, actual): def _assert_in_json(self, expected, actual):
actual = jsonutils.dumps(jsonutils.loads(actual), sort_keys=True) actual = jsonutils.dumps(jsonutils.loads(actual), sort_keys=True)
for k, v in expected.iteritems(): for k, v in six.iteritems(expected):
fragment = jsonutils.dumps({k: v}, sort_keys=True)[1:-1] fragment = jsonutils.dumps({k: v}, sort_keys=True)[1:-1]
self.assertTrue(fragment in actual, self.assertTrue(fragment in actual,
'%s not in %s' % (fragment, actual)) '%s not in %s' % (fragment, actual))

View File

@ -20,6 +20,7 @@
import datetime import datetime
import mock import mock
import six
import webtest.app import webtest.app
from ceilometer.openstack.common import timeutils from ceilometer.openstack.common import timeutils
@ -172,4 +173,4 @@ class TestListEvents(v2.FunctionalTest,
('not_ignored_list', "['returned']"), ('not_ignored_list', "['returned']"),
('tag', 'self.sample'), ('tag', 'self.sample'),
], ],
list(sorted(sample['resource_metadata'].iteritems()))) list(sorted(six.iteritems(sample['resource_metadata']))))

View File

@ -476,7 +476,7 @@ class TestListResources(v2.FunctionalTest,
(u'display_name', u'test-server'), (u'display_name', u'test-server'),
(u'not_ignored_list', u"['returned']"), (u'not_ignored_list', u"['returned']"),
(u'tag', u'self.sample')], (u'tag', u'self.sample')],
list(sorted(metadata.iteritems()))) list(sorted(six.iteritems(metadata))))
def test_resource_meter_links(self): def test_resource_meter_links(self):
sample1 = sample.Sample( sample1 = sample.Sample(

View File

@ -20,6 +20,7 @@
""" """
import mock import mock
import six
from ceilometer.compute import manager from ceilometer.compute import manager
from ceilometer.compute.pollsters import util from ceilometer.compute.pollsters import util
@ -81,7 +82,7 @@ class TestLocationMetadata(test.BaseTestCase):
def test_metadata(self): def test_metadata(self):
md = util._get_metadata_from_object(self.instance) md = util._get_metadata_from_object(self.instance)
for prop, value in self.INSTANCE_PROPERTIES.iteritems(): for prop, value in six.iteritems(self.INSTANCE_PROPERTIES):
if prop not in ("metadata"): if prop not in ("metadata"):
# Special cases # Special cases
if prop == 'name': if prop == 'name':

View File

@ -18,6 +18,7 @@ import datetime
from keystoneclient import exceptions from keystoneclient import exceptions
import mock import mock
import six
from ceilometer.central import manager from ceilometer.central import manager
from ceilometer.energy import kwapi from ceilometer.energy import kwapi
@ -88,7 +89,7 @@ class TestEnergyPollster(test.BaseTestCase):
@staticmethod @staticmethod
def fake_iter_probes(ksclient, cache): def fake_iter_probes(ksclient, cache):
probes = PROBE_DICT['probes'] probes = PROBE_DICT['probes']
for key, value in probes.iteritems(): for key, value in six.iteritems(probes):
probe_dict = value probe_dict = value
probe_dict['id'] = key probe_dict['id'] = key
yield probe_dict yield probe_dict
@ -148,7 +149,7 @@ class TestPowerPollster(test.BaseTestCase):
@staticmethod @staticmethod
def fake_iter_probes(ksclient, cache): def fake_iter_probes(ksclient, cache):
probes = PROBE_DICT['probes'] probes = PROBE_DICT['probes']
for key, value in probes.iteritems(): for key, value in six.iteritems(probes):
probe_dict = value probe_dict = value
probe_dict['id'] = key probe_dict['id'] = key
yield probe_dict yield probe_dict

View File

@ -79,7 +79,7 @@ class Namespace(object):
def __init__(self, seed): def __init__(self, seed):
self.__dict__ = collections.defaultdict(lambda: Namespace({})) self.__dict__ = collections.defaultdict(lambda: Namespace({}))
self.__dict__.update(seed) self.__dict__.update(seed)
for k, v in self.__dict__.iteritems(): for k, v in six.iteritems(self.__dict__):
if isinstance(v, dict): if isinstance(v, dict):
self.__dict__[k] = Namespace(v) self.__dict__[k] = Namespace(v)

View File

@ -20,6 +20,8 @@ import keyword
import math import math
import re import re
import six
from ceilometer.openstack.common.gettextutils import _ from ceilometer.openstack.common.gettextutils import _
from ceilometer.openstack.common import log from ceilometer.openstack.common import log
from ceilometer import sample from ceilometer import sample
@ -69,7 +71,7 @@ class ArithmeticTransformer(transformer.TransformerBase):
def _calculate(self, resource_id): def _calculate(self, resource_id):
"""Evaluate the expression and return a new sample if successful.""" """Evaluate the expression and return a new sample if successful."""
ns_dict = dict((m, s.as_dict()) for m, s ns_dict = dict((m, s.as_dict()) for m, s
in self.cache[resource_id].iteritems()) in six.iteritems(self.cache[resource_id]))
ns = transformer.Namespace(ns_dict) ns = transformer.Namespace(ns_dict)
try: try:
new_volume = eval(self.expr_escaped, {}, ns) new_volume = eval(self.expr_escaped, {}, ns)

View File

@ -32,7 +32,7 @@ from ceilometer.openstack.common import units
def recursive_keypairs(d, separator=':'): def recursive_keypairs(d, separator=':'):
"""Generator that produces sequence of keypairs for nested dictionaries.""" """Generator that produces sequence of keypairs for nested dictionaries."""
for name, value in sorted(d.iteritems()): for name, value in sorted(six.iteritems(d)):
if isinstance(value, dict): if isinstance(value, dict):
for subname, subvalue in recursive_keypairs(value, separator): for subname, subvalue in recursive_keypairs(value, separator):
yield ('%s%s%s' % (name, separator, subname), subvalue) yield ('%s%s%s' % (name, separator, subname), subvalue)
@ -107,7 +107,7 @@ def stringify_timestamps(data):
"""Stringify any datetimes in given dict.""" """Stringify any datetimes in given dict."""
isa_timestamp = lambda v: isinstance(v, datetime.datetime) isa_timestamp = lambda v: isinstance(v, datetime.datetime)
return dict((k, v.isoformat() if isa_timestamp(v) else v) return dict((k, v.isoformat() if isa_timestamp(v) else v)
for (k, v) in data.iteritems()) for (k, v) in six.iteritems(data))
def dict_to_keyval(value, key_base=None): def dict_to_keyval(value, key_base=None):
@ -118,7 +118,7 @@ def dict_to_keyval(value, key_base=None):
""" """
val_iter, key_func = None, None val_iter, key_func = None, None
if isinstance(value, dict): if isinstance(value, dict):
val_iter = value.iteritems() val_iter = six.iteritems(value)
key_func = lambda k: key_base + '.' + k if key_base else k key_func = lambda k: key_base + '.' + k if key_base else k
elif isinstance(value, (tuple, list)): elif isinstance(value, (tuple, list)):
val_iter = enumerate(value) val_iter = enumerate(value)
@ -155,7 +155,7 @@ def update_nested(original_dict, updates):
Updates occur without replacing entire sub-dicts. Updates occur without replacing entire sub-dicts.
""" """
dict_to_update = copy.deepcopy(original_dict) dict_to_update = copy.deepcopy(original_dict)
for key, value in updates.iteritems(): for key, value in six.iteritems(updates):
if isinstance(value, dict): if isinstance(value, dict):
sub_dict = update_nested(dict_to_update.get(key, {}), value) sub_dict = update_nested(dict_to_update.get(key, {}), value)
dict_to_update[key] = sub_dict dict_to_update[key] = sub_dict

View File

@ -20,6 +20,7 @@ from __future__ import print_function
import sys import sys
from oslo.config import cfg from oslo.config import cfg
import six
from ceilometer import storage from ceilometer import storage
@ -38,7 +39,7 @@ def show_resources(db, args):
print(u) print(u)
for resource in db.get_resources(user=u): for resource in db.get_resources(user=u):
print(' %(resource_id)s %(timestamp)s' % resource) print(' %(resource_id)s %(timestamp)s' % resource)
for k, v in sorted(resource['metadata'].iteritems()): for k, v in sorted(six.iteritems(resource['metadata'])):
print(' %-10s : %s' % (k, v)) print(' %-10s : %s' % (k, v))
for meter in resource['meter']: for meter in resource['meter']:
totals = db.get_statistics(storage.SampleFilter( totals = db.get_statistics(storage.SampleFilter(