py3: nfv wrap dict.items() in list()
In python2 dict.items() returns a list, while in python3 it returns an
iterator. Modifying a dict while iterating over it(insert, delete)
produces a runtime error.
Wrap dict.items() in list() with 2 exceptions:
- the dict is local scoped and no modification while iterating is done
- access is atomic (e.g. using locks)
Story: 2008454
Task: 42727
Signed-off-by: Dan Voiculeasa <dan.voiculeasa@windriver.com>
Change-Id: I3fe93c49b360f86d6a962bbbce2bf30c2555e459
(cherry picked from commit d20aad6935
)
This commit is contained in:
parent
198f87fe57
commit
8a4b7be55e
|
@ -28,7 +28,7 @@ def request(token_id, method, api_cmd, api_cmd_headers=None,
|
|||
request_info.add_header("Accept", "application/json")
|
||||
|
||||
if api_cmd_headers is not None:
|
||||
for header_type, header_value in api_cmd_headers.items():
|
||||
for header_type, header_value in list(api_cmd_headers.items()):
|
||||
request_info.add_header(header_type, header_value)
|
||||
|
||||
if api_cmd_payload is not None:
|
||||
|
|
|
@ -55,33 +55,33 @@ class AlarmHandlers(stevedore.enabled.EnabledExtensionManager):
|
|||
"""
|
||||
Raise an alarm using the handlers
|
||||
"""
|
||||
for handler_type, handler in self._handlers.items():
|
||||
for handler_type, handler in list(self._handlers.items()):
|
||||
handler.obj.raise_alarm(alarm_uuid, alarm_data)
|
||||
|
||||
def clear_alarm(self, alarm_uuid):
|
||||
"""
|
||||
Clear an alarm using the handlers
|
||||
"""
|
||||
for handler_type, handler in self._handlers.items():
|
||||
for handler_type, handler in list(self._handlers.items()):
|
||||
handler.obj.clear_alarm(alarm_uuid)
|
||||
|
||||
def audit_alarms(self):
|
||||
"""
|
||||
Audit alarms using the handlers
|
||||
"""
|
||||
for handler_type, handler in self._handlers.items():
|
||||
for handler_type, handler in list(self._handlers.items()):
|
||||
handler.obj.audit_alarms()
|
||||
|
||||
def initialize(self, config_file):
|
||||
"""
|
||||
Initialize handlers
|
||||
"""
|
||||
for handler_id, handler in self._handlers.items():
|
||||
for handler_id, handler in list(self._handlers.items()):
|
||||
handler.obj.initialize(config_file)
|
||||
|
||||
def finalize(self):
|
||||
"""
|
||||
Finalize handlers
|
||||
"""
|
||||
for handler_id, handler in self._handlers.items():
|
||||
for handler_id, handler in list(self._handlers.items()):
|
||||
handler.obj.finalize()
|
||||
|
|
|
@ -128,7 +128,7 @@ class DebugConfig(object):
|
|||
|
||||
if self._config is not None:
|
||||
try:
|
||||
for name, level_str in self._config.items('debug-loggers'):
|
||||
for name, level_str in list(self._config.items('debug-loggers')):
|
||||
debug_list.append((name, self.debug_level_mapping.get(
|
||||
level_str, DEBUG_LEVEL.NONE)))
|
||||
|
||||
|
|
|
@ -257,7 +257,7 @@ def debug_trace(trace_level):
|
|||
end='', sep='')
|
||||
|
||||
six.print_(" kwargs=", file=Debug().output, end='', sep='')
|
||||
for name, value in kwargs.items():
|
||||
for name, value in list(kwargs.items()):
|
||||
six.print_("{0}={1} ".format(name, value),
|
||||
file=Debug().output, end='', sep='')
|
||||
|
||||
|
|
|
@ -55,19 +55,19 @@ class EventLogHandlers(stevedore.enabled.EnabledExtensionManager):
|
|||
"""
|
||||
Log a particular event using the handlers
|
||||
"""
|
||||
for handler_type, handler in self._handlers.items():
|
||||
for handler_type, handler in list(self._handlers.items()):
|
||||
handler.obj.log(log_data)
|
||||
|
||||
def initialize(self, config_file):
|
||||
"""
|
||||
Initialize handlers
|
||||
"""
|
||||
for handler_id, handler in self._handlers.items():
|
||||
for handler_id, handler in list(self._handlers.items()):
|
||||
handler.obj.initialize(config_file)
|
||||
|
||||
def finalize(self):
|
||||
"""
|
||||
Finalize handlers
|
||||
"""
|
||||
for handler_id, handler in self._handlers.items():
|
||||
for handler_id, handler in list(self._handlers.items()):
|
||||
handler.obj.finalize()
|
||||
|
|
|
@ -17,7 +17,7 @@ def evidence_from_files(files, start_date, end_date, progress=None):
|
|||
file_ctrl = dict()
|
||||
|
||||
total_lines = 0
|
||||
for parser_name, file_name in files.items():
|
||||
for parser_name, file_name in list(files.items()):
|
||||
total_lines += sum(1 for _ in open(file_name))
|
||||
file_ctrl[file_name] = (parser_name, open(file_name), None)
|
||||
|
||||
|
|
|
@ -167,7 +167,7 @@ class Task(object):
|
|||
# target. It is possible to have many task work outstanding at
|
||||
# the same time. Results are returned in the order that task
|
||||
# work was scheduled.
|
||||
for key, (state, task_work) in self._work_list.items():
|
||||
for key, (state, task_work) in list(self._work_list.items()):
|
||||
if Task._READY == state:
|
||||
self._scheduler.schedule_task(self)
|
||||
break
|
||||
|
@ -215,7 +215,7 @@ class Task(object):
|
|||
self._started = True
|
||||
else:
|
||||
# Schedule work that is ready
|
||||
for key, (state, task_work) in self._work_list.items():
|
||||
for key, (state, task_work) in list(self._work_list.items()):
|
||||
if Task._READY == state:
|
||||
scheduled = self._scheduler.schedule_task_work(task_work)
|
||||
if scheduled:
|
||||
|
|
|
@ -83,22 +83,22 @@ class TaskScheduler(object):
|
|||
"""
|
||||
DLOG.debug("Pool %s: Delete Task, name=%s."
|
||||
% (self._task_worker_pool.name, task.name))
|
||||
for timer_id, timer_owner in self._task_timers.items():
|
||||
for timer_id, timer_owner in list(self._task_timers.items()):
|
||||
if timer_owner.id == task.id:
|
||||
timers.timers_delete_timer(timer_id)
|
||||
del self._task_timers[timer_id]
|
||||
|
||||
for timer_id, timer_owner in self._task_work_timers.items():
|
||||
for timer_id, timer_owner in list(self._task_work_timers.items()):
|
||||
if timer_owner.task_id == task.id:
|
||||
timers.timers_delete_timer(timer_id)
|
||||
del self._task_work_timers[timer_id]
|
||||
|
||||
for select_obj, select_obj_owner in self._task_read_selobjs.items():
|
||||
for select_obj, select_obj_owner in list(self._task_read_selobjs.items()):
|
||||
if select_obj_owner.id == task.id:
|
||||
selobj.selobj_del_read_obj(select_obj)
|
||||
del self._task_read_selobjs[select_obj]
|
||||
|
||||
for select_obj, select_obj_owner in self._task_write_selobjs.items():
|
||||
for select_obj, select_obj_owner in list(self._task_write_selobjs.items()):
|
||||
if select_obj_owner.id == task.id:
|
||||
selobj.selobj_del_write_obj(select_obj)
|
||||
del self._task_write_selobjs[select_obj]
|
||||
|
@ -319,7 +319,7 @@ class TaskScheduler(object):
|
|||
|
||||
task_work = worker.get_task_work_result()
|
||||
if task_work is not None:
|
||||
for timer_id, timer_owner in self._task_work_timers.items():
|
||||
for timer_id, timer_owner in list(self._task_work_timers.items()):
|
||||
if timer_owner.id == task_work.id:
|
||||
timers.timers_delete_timer(timer_id)
|
||||
del self._task_work_timers[timer_id]
|
||||
|
|
|
@ -322,7 +322,7 @@ class FaultManagement(alarm_handlers_v1.AlarmHandler):
|
|||
"error=%s." % e)
|
||||
|
||||
# Check for missing alarms needing to be raised
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in self._openstack_alarm_db.items():
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in list(self._openstack_alarm_db.items()):
|
||||
if fm_uuid is None:
|
||||
self.raise_alarm(alarm_uuid, alarm_data)
|
||||
else:
|
||||
|
@ -335,7 +335,7 @@ class FaultManagement(alarm_handlers_v1.AlarmHandler):
|
|||
|
||||
# Check for stale alarms needing to be cleared
|
||||
for fm_alarm in fm_alarms:
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in self._openstack_alarm_db.items():
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in list(self._openstack_alarm_db.items()):
|
||||
if fm_uuid == fm_alarm["uuid"]:
|
||||
break
|
||||
else:
|
||||
|
@ -357,7 +357,7 @@ class FaultManagement(alarm_handlers_v1.AlarmHandler):
|
|||
continue
|
||||
|
||||
# Check for missing alarms needing to be raised
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in self._platform_alarm_db.items():
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in list(self._platform_alarm_db.items()):
|
||||
if alarm_type == alarm_data.alarm_type:
|
||||
if fm_uuid is None:
|
||||
self.raise_alarm(alarm_uuid, alarm_data)
|
||||
|
@ -372,7 +372,7 @@ class FaultManagement(alarm_handlers_v1.AlarmHandler):
|
|||
|
||||
# Check for stale alarms needing to be cleared
|
||||
for fm_fault in fm_faults:
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in self._platform_alarm_db.items():
|
||||
for alarm_uuid, (alarm_data, fm_uuid) in list(self._platform_alarm_db.items()):
|
||||
if fm_uuid == fm_fault.uuid:
|
||||
break
|
||||
else:
|
||||
|
|
|
@ -305,7 +305,7 @@ def _rest_api_request(token_id, method, api_cmd, api_cmd_headers,
|
|||
request_info.add_header("Accept", "application/json")
|
||||
|
||||
if api_cmd_headers is not None:
|
||||
for header_type, header_value in api_cmd_headers.items():
|
||||
for header_type, header_value in list(api_cmd_headers.items()):
|
||||
request_info.add_header(header_type, header_value)
|
||||
|
||||
if api_cmd_payload is not None:
|
||||
|
|
|
@ -231,7 +231,7 @@ class SwUpdateStrategyTestCase(testcase.NFVTestCase):
|
|||
"""
|
||||
member_uuids = []
|
||||
|
||||
for instance_uuid, instance in self._instance_table.items():
|
||||
for instance_uuid, instance in list(self._instance_table.items()):
|
||||
if instance.name in members:
|
||||
member_uuids.append(instance_uuid)
|
||||
|
||||
|
@ -310,7 +310,7 @@ class SwUpdateStrategyTestCase(testcase.NFVTestCase):
|
|||
"""
|
||||
member_uuids = []
|
||||
|
||||
for instance_uuid, instance in self._instance_table.items():
|
||||
for instance_uuid, instance in list(self._instance_table.items()):
|
||||
if instance.name in members:
|
||||
member_uuids.append(instance_uuid)
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ class TestInstance(testcase.NFVTestCase):
|
|||
Create an instance group
|
||||
"""
|
||||
member_uuids = []
|
||||
for instance_uuid, instance in self._instance_table.items():
|
||||
for instance_uuid, instance in list(self._instance_table.items()):
|
||||
if instance.name in members:
|
||||
member_uuids.append(instance_uuid)
|
||||
|
||||
|
@ -230,7 +230,7 @@ class TestInstance(testcase.NFVTestCase):
|
|||
Create a host group
|
||||
"""
|
||||
member_uuids = []
|
||||
for instance_uuid, instance in self._instance_table.items():
|
||||
for instance_uuid, instance in list(self._instance_table.items()):
|
||||
if instance.name in members:
|
||||
member_uuids.append(instance_uuid)
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ def rest_api_request(token, method, url, headers=None, body=None):
|
|||
request_info.get_method = lambda: method
|
||||
|
||||
if headers is not None:
|
||||
for header_type, header_value in headers.items():
|
||||
for header_type, header_value in list(headers.items()):
|
||||
# Allow the Content-Length to be set by urllib
|
||||
if 'Content-Length' != header_type and 'Host' != header_type:
|
||||
request_info.add_header(header_type, header_value)
|
||||
|
|
|
@ -18,7 +18,7 @@ class ObjectData(collections.MutableMapping):
|
|||
super(ObjectData, self).__setattr__('_fields', dict())
|
||||
|
||||
if data is not None:
|
||||
for key, value in data.items():
|
||||
for key, value in list(data.items()):
|
||||
self._do_set(key, value)
|
||||
|
||||
@property
|
||||
|
|
|
@ -180,7 +180,7 @@ class GuestServices(ObjectData):
|
|||
return current_state
|
||||
|
||||
overall_state = None
|
||||
for _, service_state in self._services.items():
|
||||
for _, service_state in list(self._services.items()):
|
||||
overall_state = update_overall_state(overall_state, service_state)
|
||||
|
||||
return overall_state
|
||||
|
@ -321,7 +321,7 @@ class GuestServices(ObjectData):
|
|||
Returns a listing of nfvi guest services and their state
|
||||
"""
|
||||
nfvi_service_names = list()
|
||||
for service_name, service_state in self._services.items():
|
||||
for service_name, service_state in list(self._services.items()):
|
||||
nfvi_name = self._get_nfvi_service_name(service_name)
|
||||
if nfvi_name is not None:
|
||||
nfvi_service_names.append(nfvi_name)
|
||||
|
@ -333,7 +333,7 @@ class GuestServices(ObjectData):
|
|||
Returns a listing of nfvi guest services and their state
|
||||
"""
|
||||
nfvi_services = list()
|
||||
for service_name, service_state in self._services.items():
|
||||
for service_name, service_state in list(self._services.items()):
|
||||
nfvi_name = self._get_nfvi_service_name(service_name)
|
||||
nfvi_admin_state = self._get_nfvi_service_admin_state(service_state)
|
||||
|
||||
|
|
|
@ -193,7 +193,7 @@ class Host(ObjectData):
|
|||
ignore_services = []
|
||||
all_enabled = True
|
||||
at_least_one_failed = False
|
||||
for service, service_state in self._host_service_state.items():
|
||||
for service, service_state in list(self._host_service_state.items()):
|
||||
# Ignore state of kubernetes, plugin as
|
||||
# there is no query function for that sevice.
|
||||
if service == HOST_SERVICES.CONTAINER:
|
||||
|
@ -745,7 +745,7 @@ class Host(ObjectData):
|
|||
"""
|
||||
at_least_one_change = False
|
||||
|
||||
for service, state in self._host_service_state.items():
|
||||
for service, state in list(self._host_service_state.items()):
|
||||
if state != host_service_state:
|
||||
at_least_one_change = True
|
||||
self._host_service_state[service] = host_service_state
|
||||
|
|
|
@ -18,7 +18,7 @@ class ObjectData(collections.MutableMapping):
|
|||
super(ObjectData, self).__setattr__('_fields', dict())
|
||||
|
||||
if data is not None:
|
||||
for key, value in data.items():
|
||||
for key, value in list(data.items()):
|
||||
self._do_set(key, value)
|
||||
|
||||
@property
|
||||
|
|
Loading…
Reference in New Issue