migrated code using dict that was no longer compatible with python3
iteritems() was removed in python3, see https://wiki.python.org/moin/Python3.0#Built-In_Changes work related to Bug 3315 - make simpaweb django app a packageable application
This commit is contained in:
parent
66fb58148d
commit
b5c2c886f1
|
@ -127,7 +127,7 @@ class ClusterController:
|
|||
idleMachines = self.m_clusterStatus.getIdleMachines()
|
||||
# logInfo('idleMachines :')
|
||||
self.m_machinesThatNeedToSleep = []
|
||||
for machineName, idleMachine in idleMachines.iteritems():
|
||||
for machineName, idleMachine in idleMachines.items():
|
||||
if idleMachine.getPowerState() == PowerState.ON:
|
||||
# logInfo('\t%s' % machineName)
|
||||
if idleMachine.getName() != 'simpatix10': # never put simpatix10 to sleep because it's the sge master and is also server for other things
|
||||
|
@ -152,7 +152,7 @@ class ClusterController:
|
|||
pendingJobs = self.m_clusterStatus.getPendingJobs()
|
||||
"""
|
||||
logInfo('pending jobs :')
|
||||
for job in pendingJobs.itervalues():
|
||||
for job in pendingJobs.values():
|
||||
logInfo('\t%d' % job.getId().asStr())
|
||||
"""
|
||||
if len(pendingJobs) != 0:
|
||||
|
@ -252,7 +252,7 @@ class ClusterController:
|
|||
iNumMachines = len(self.m_clusterStatus.m_clusterNodes)
|
||||
iNumMachinesOn = 0
|
||||
iNumSleepingMachines = 0
|
||||
for machine in self.m_clusterStatus.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterStatus.m_clusterNodes.values():
|
||||
ePowerState = machine.getPowerState()
|
||||
if ePowerState == PowerState.ON:
|
||||
iNumMachinesOn+=1
|
||||
|
@ -284,7 +284,7 @@ def storeClusterNodeStatus( clusterNodeStatus ):
|
|||
r=conn.store_result()
|
||||
print r.fetch_row()[0]
|
||||
'''
|
||||
for key, sensor in clusterNodeStatus.m_sensors.iteritems():
|
||||
for key, sensor in clusterNodeStatus.m_sensors.items():
|
||||
sensorId = clusterNodeStatus.m_clusterNodeName + '_' + sensor.m_name
|
||||
if sensor.typeName() == 'Fan':
|
||||
sqlCommand = """INSERT INTO `fan_rpm_logs` (`fan_id`, `rpm`, `date`) VALUES ('"""+sensorId+"""', """+str(sensor.m_rpms)+""", NOW());"""
|
||||
|
|
|
@ -40,7 +40,7 @@ class ClusterStatus:
|
|||
def setControlOnMachine(self, machineName, bControl):
|
||||
if bControl:
|
||||
# add machineName under control of ClusterController
|
||||
for k, v in self.m_clusterNodes.iteritems():
|
||||
for k, v in self.m_clusterNodes.items():
|
||||
if v.getName() == machineName :
|
||||
return # nothing to do : machineName is already under the control of ClusterController
|
||||
|
||||
|
@ -64,12 +64,12 @@ class ClusterStatus:
|
|||
return self.m_clusterNodes
|
||||
|
||||
def startReadingThreads( self ):
|
||||
for k, v in self.m_clusterNodes.iteritems():
|
||||
for k, v in self.m_clusterNodes.items():
|
||||
v.m_machineStatusUpdater.start()
|
||||
self.m_jobsStateUpdater.start()
|
||||
|
||||
def stopReadingThreads( self ):
|
||||
for k, v in self.m_clusterNodes.iteritems():
|
||||
for k, v in self.m_clusterNodes.items():
|
||||
v.m_machineStatusUpdater.m_bStop = True
|
||||
v.m_machineStatusUpdater.join()
|
||||
self.m_jobsStateUpdater.m_bStop = True
|
||||
|
@ -86,7 +86,7 @@ class ClusterStatus:
|
|||
return self.m_jobsState.getJobsOnMachine( machineName )
|
||||
|
||||
def isReady( self ):
|
||||
for k, v in self.m_clusterNodes.iteritems():
|
||||
for k, v in self.m_clusterNodes.items():
|
||||
if not v.isReady():
|
||||
logInfo( 'ClusterStatus::isReady : not ready because of ' + v.getName() )
|
||||
return False
|
||||
|
@ -108,7 +108,7 @@ class ClusterStatus:
|
|||
logError('ClusterStatus::getIdleMachines : age of jobs state is too old (%f s). This is bug 00000009.' % (fJobsStateAge))
|
||||
assert( False )
|
||||
idleMachines = {}
|
||||
for machineName, machine in self.m_clusterNodes.iteritems():
|
||||
for machineName, machine in self.m_clusterNodes.items():
|
||||
if machine.getPowerState() == PowerState.ON:
|
||||
jobsOnThisMachine = self.getJobsOnMachine( machineName )
|
||||
if len(jobsOnThisMachine) == 0:
|
||||
|
@ -137,7 +137,7 @@ class ClusterStatus:
|
|||
returns an estimate of the energy consumption since the start of the cluster controller (in joules)
|
||||
"""
|
||||
fEnergyConsumption = 0.0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
if machine.isReady(): # there are cases where the machine is not ready yet (for example, it's just been added to clustercontroller's control)
|
||||
fEnergyConsumption += machine.getEnergyConsumption()
|
||||
return fEnergyConsumption
|
||||
|
@ -147,21 +147,21 @@ class ClusterStatus:
|
|||
returns an estimate of the energy saving since the start of the cluster controller (in joules)
|
||||
"""
|
||||
fEnergySavings = 0.0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
if machine.isReady():
|
||||
fEnergySavings += machine.getEnergySavings()
|
||||
return fEnergySavings
|
||||
|
||||
def getCurrentPowerConsumption( self ):
|
||||
fPowerConsumption = 0.0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
if machine.isReady():
|
||||
fPowerConsumption += machine.getPowerConsumption()
|
||||
return fPowerConsumption
|
||||
|
||||
def getCurrentPowerSavings( self ):
|
||||
fPowerSavings = 0.0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
if machine.isReady():
|
||||
fPowerSavings += machine.getPowerConsumptionForPowerState( PowerState.ON ) - machine.getPowerConsumption()
|
||||
return fPowerSavings
|
||||
|
@ -169,7 +169,7 @@ class ClusterStatus:
|
|||
def getNumControlledSlots( self ):
|
||||
self.m_lock.acquire()
|
||||
iNumControlledSlots = 0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
queueMachine = self.m_jobsState.getQueueMachine( machine.getName() )
|
||||
iNumControlledSlots += queueMachine.getNumSlots()
|
||||
self.m_lock.release()
|
||||
|
@ -178,7 +178,7 @@ class ClusterStatus:
|
|||
def getNumUsedSlots( self ):
|
||||
self.m_lock.acquire()
|
||||
iNumUsedSlots = 0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
queueMachine = self.m_jobsState.getQueueMachine( machine.getName() )
|
||||
iNumUsedSlotsOnThisMachine = queueMachine.getNumSlots() - self.m_jobsState.getNumFreeSlotsOnQueueMachine(queueMachine)
|
||||
assert(iNumUsedSlotsOnThisMachine >= 0)
|
||||
|
@ -189,7 +189,7 @@ class ClusterStatus:
|
|||
def getNumWastedSlots( self ):
|
||||
self.m_lock.acquire()
|
||||
iNumWastedSlots = 0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
if machine.getPowerState() == PowerState.ON:
|
||||
queueMachine = self.m_jobsState.getQueueMachine( machine.getName() )
|
||||
iNumWastedSlots += self.m_jobsState.getNumFreeSlotsOnQueueMachine(queueMachine)
|
||||
|
@ -199,7 +199,7 @@ class ClusterStatus:
|
|||
def getNumSleepingSlots( self ):
|
||||
self.m_lock.acquire()
|
||||
iNumSleepingSlots = 0
|
||||
for machine in self.m_clusterNodes.itervalues():
|
||||
for machine in self.m_clusterNodes.values():
|
||||
if machine.getPowerState() == PowerState.SLEEP:
|
||||
queueMachine = self.m_jobsState.getQueueMachine( machine.getName() )
|
||||
iNumSleepingSlots += self.m_jobsState.getNumFreeSlotsOnQueueMachine(queueMachine)
|
||||
|
|
|
@ -38,8 +38,8 @@ class JobsState:
|
|||
|
||||
def getJobsOnMachine( self, machineName ):
|
||||
jobsOnMachine = {}
|
||||
for jobId, job in self.m_jobs.iteritems():
|
||||
for queueMachineName, numSlots in job.getSlots().iteritems():
|
||||
for jobId, job in self.m_jobs.items():
|
||||
for queueMachineName, numSlots in job.getSlots().items():
|
||||
jobMachineName = queueMachineName.split('@')[1]
|
||||
if jobMachineName == machineName:
|
||||
jobsOnMachine[ jobId ] = job
|
||||
|
@ -48,7 +48,7 @@ class JobsState:
|
|||
def getNumFreeSlotsOnQueueMachine( self, queueMachine ):
|
||||
#logInfo('getNumFreeSlotsOnQueueMachine : looking for free slots on queuemachine %s' % queueMachine.getName() )
|
||||
numUsedSlots = 0
|
||||
for job in self.m_jobs.itervalues():
|
||||
for job in self.m_jobs.values():
|
||||
numUsedSlotsByThisJob = job.getSlots().get( queueMachine.getName() )
|
||||
if numUsedSlotsByThisJob != None:
|
||||
#logInfo('getNumFreeSlotsOnQueueMachine : job %d uses %d slots' % (job.getId().asStr(), numUsedSlotsByThisJob) )
|
||||
|
@ -68,7 +68,7 @@ class JobsState:
|
|||
finds the queue machine associated with a machine
|
||||
"""
|
||||
queueMachine = None
|
||||
for qmName, qm in self.m_queueMachines.iteritems():
|
||||
for qmName, qm in self.m_queueMachines.items():
|
||||
if qm.m_machineName == machineName:
|
||||
assert( queueMachine == None ) # to be sure that no more than one queue machine is on a given machine
|
||||
queueMachine = qm
|
||||
|
@ -79,7 +79,7 @@ class JobsState:
|
|||
|
||||
def getPendingJobs( self ):
|
||||
pendingJobs = {}
|
||||
for jobId, job in self.m_jobs.iteritems():
|
||||
for jobId, job in self.m_jobs.items():
|
||||
if job.isPending():
|
||||
pendingJobs[ job.getId() ] = job
|
||||
return pendingJobs
|
||||
|
|
|
@ -25,13 +25,13 @@ class SimpleSlotAllocator( SlotAllocator ):
|
|||
highestPriorityPendingJob = pendingJobs.values()[0]
|
||||
logInfo('SimpleSlotAllocator::getMachinesThatNeedWakeUp : looking for free slots for job ' + highestPriorityPendingJob.getId().asStr() )
|
||||
numFreeSlots = {} # contains the number of free slots for each queueMachine
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().itervalues():
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().values():
|
||||
numFreeSlots[ queueMachine ] = clusterState.getJobsState().getNumFreeSlotsOnQueueMachine( queueMachine )
|
||||
logInfo('SimpleSlotAllocator::getMachinesThatNeedWakeUp : init numFreeSlots[ %s ] with %d ' % (queueMachine.getName(), numFreeSlots[ queueMachine ]) )
|
||||
remainingNumSlotsToAllocate = highestPriorityPendingJob.m_jobRequirements.m_numSlots
|
||||
logInfo('SimpleSlotAllocator::getMachinesThatNeedWakeUp : still %d slots to find' % remainingNumSlotsToAllocate )
|
||||
# first look in running machines if there are available slots
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().itervalues():
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().values():
|
||||
logInfo('SimpleSlotAllocator::getMachinesThatNeedWakeUp : examining queueMachine %s ' % queueMachine.getName() )
|
||||
machine = clusterState.getMachines()[ queueMachine.getMachineName() ]
|
||||
if machine.getPowerState() == PowerState.ON:
|
||||
|
@ -47,7 +47,7 @@ class SimpleSlotAllocator( SlotAllocator ):
|
|||
break
|
||||
if remainingNumSlotsToAllocate > 0:
|
||||
# now look into machines that are asleep
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().itervalues():
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().values():
|
||||
logInfo('SimpleSlotAllocator::getMachinesThatNeedWakeUp : examining queueMachine %s ' % queueMachine.getName() )
|
||||
machine = clusterState.getMachines()[ queueMachine.getMachineName() ]
|
||||
if machine.getPowerState() == PowerState.SLEEP:
|
||||
|
@ -100,7 +100,7 @@ class DecoupledSlotAllocator( SlotAllocator ):
|
|||
print 'id(oldJobs) : ', id(oldJobs)
|
||||
print 'id(newJobs) : ', id(newJobs)
|
||||
"""
|
||||
for newJob in newJobs.itervalues():
|
||||
for newJob in newJobs.values():
|
||||
#logDebug('DecoupledSlotAllocator::jobsStateHasChanged newJob id=%s' % newJob.getId().asStr())
|
||||
if newJob.getId() in oldJobs:
|
||||
#logDebug('DecoupledSlotAllocator::jobsStateHasChanged job id=%d is in old jobs' % newJob.getId())
|
||||
|
@ -110,7 +110,7 @@ class DecoupledSlotAllocator( SlotAllocator ):
|
|||
logInfo('A new job (jobId =%s) has been detected ' % newJob.getId().asStr() )
|
||||
bJobsHaveChanged = True
|
||||
if len(oldJobsOnly) != 0:
|
||||
for oldJob in oldJobsOnly.itervalues():
|
||||
for oldJob in oldJobsOnly.values():
|
||||
logInfo('Job (jobId =%s) has finished' % oldJob.getId().asStr() )
|
||||
# at least one old job has finished, freeing some slots
|
||||
bJobsHaveChanged = True
|
||||
|
@ -129,7 +129,7 @@ class DecoupledSlotAllocator( SlotAllocator ):
|
|||
logInfo('DecoupledSlotAllocator::getMachinesThatNeedWakeUp : waking up machines that are asleep because jobs state has changed')
|
||||
else:
|
||||
logInfo('DecoupledSlotAllocator::getMachinesThatNeedWakeUp : waking up machines that are asleep for periodic check (to be sure pending jobs get a chance to start)')
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().itervalues():
|
||||
for queueMachine in clusterState.getJobsState().getQueueMachines().values():
|
||||
if queueMachine.getMachineName() in clusterState.getMachines():
|
||||
# this means that the machine is under the cluster controller's control
|
||||
machine = clusterState.getMachines()[ queueMachine.getMachineName() ]
|
||||
|
|
|
@ -24,7 +24,7 @@ class SunGridEngine:
|
|||
|
||||
# read the requirements for pending jobs (which parallel environment, which queue, which architecture) from sge
|
||||
if False: # no need for job details at the moment and since it's very slow, it's been disabled
|
||||
for unused_jobId, job in jobsState.getPendingJobs().iteritems():
|
||||
for unused_jobId, job in jobsState.getPendingJobs().items():
|
||||
(returnCode, stdout, stderr) = executeProgram( ['qstat', '-j', job.getId().asStr()] )
|
||||
assert returnCode != 0, 'prout'
|
||||
QstatParser().parseJobDetails( stdout, job )
|
||||
|
|
|
@ -47,7 +47,7 @@ class MyHandler(BaseHTTPRequestHandler):
|
|||
controlledMachinesElement = doc.createElement("ControlledMachines")
|
||||
doc.appendChild(controlledMachinesElement)
|
||||
|
||||
for machine in self.server.m_clusterController.m_clusterStatus.m_clusterNodes.itervalues():
|
||||
for machine in self.server.m_clusterController.m_clusterStatus.m_clusterNodes.values():
|
||||
# Create the main <card> element
|
||||
controlledMachineElement = doc.createElement("Machine")
|
||||
controlledMachineElement.setAttribute("name", machine.getName())
|
||||
|
|
|
@ -18,7 +18,7 @@ class ClusterNodeSensorsReadings:
|
|||
def addSensor(self, sensor):
|
||||
self.m_sensors[sensor.m_name] = sensor
|
||||
def dump(self):
|
||||
for key,sensor in self.m_sensors.iteritems():
|
||||
for key,sensor in self.m_sensors.items():
|
||||
sensor.dump()
|
||||
return
|
||||
#def getPowerState(self):
|
||||
|
@ -27,7 +27,7 @@ class ClusterNodeSensorsReadings:
|
|||
#log('ClusterNodeSensorsReadings::getLowestTemperature : start')
|
||||
lowestTemperature = 0.0
|
||||
lowestTemperatureIsDefined = False
|
||||
for key,sensor in self.m_sensors.iteritems():
|
||||
for key,sensor in self.m_sensors.items():
|
||||
#log('ClusterNodeSensorsReadings::getLowestTemperature : start')
|
||||
if sensor.typeName() == 'Temperature':
|
||||
sensor.m_temperature
|
||||
|
|
|
@ -68,7 +68,7 @@ class Machine(object):
|
|||
powered_machines[self.name] = self
|
||||
for conn in self.get_outgoing_connections():
|
||||
conn_powered_machines = conn.to_plug.machine.get_powered_machines()
|
||||
for machine in conn_powered_machines.itervalues():
|
||||
for machine in conn_powered_machines.values():
|
||||
if machine not in powered_machines.keys():
|
||||
powered_machines[machine.name] = machine
|
||||
return powered_machines
|
||||
|
@ -82,7 +82,7 @@ class Machine(object):
|
|||
if worst_case_scenario:
|
||||
# this machine has to provide the full power to all machine it powers, assuming all the power backup providers are dead
|
||||
power_consumption = 0.0
|
||||
for machine in self.get_powered_machines().itervalues():
|
||||
for machine in self.get_powered_machines().values():
|
||||
power_consumption += machine.power_consumption
|
||||
else:
|
||||
power_consumption = self.power_consumption
|
||||
|
@ -171,7 +171,7 @@ class Connection(object):
|
|||
my_power_provider = self.get_power_provider()
|
||||
# find the first sibling cable that has the same provider as self
|
||||
first_cable_with_same_provider = None
|
||||
for input_plug in to_machine.input_plugs.itervalues():
|
||||
for input_plug in to_machine.input_plugs.values():
|
||||
sibling_cable = input_plug.get_incoming_connection()
|
||||
if sibling_cable.get_power_provider() == my_power_provider:
|
||||
first_cable_with_same_provider = sibling_cable
|
||||
|
@ -209,7 +209,7 @@ class Connection(object):
|
|||
power_consumption = to_machine.get_power_consumption(worst_case_scenario)
|
||||
else:
|
||||
num_input_cables = 0
|
||||
for input_plug in to_machine.input_plugs.itervalues():
|
||||
for input_plug in to_machine.input_plugs.values():
|
||||
input_cable = input_plug.get_incoming_connection()
|
||||
assert input_cable
|
||||
num_input_cables += 1
|
||||
|
@ -447,7 +447,7 @@ def power_config_to_svg(power_config, svg_file_path, worst_case_scenario=True):
|
|||
if machine.name not in rack['machines']:
|
||||
rack['machines'].append(machine)
|
||||
|
||||
for machine in power_config.machines.itervalues():
|
||||
for machine in power_config.machines.values():
|
||||
graph.add_node(machine.name)
|
||||
node = graph.get_node(machine.name)
|
||||
machine_total_power_consumption = int(machine.get_power_consumption(worst_case_scenario=worst_case_scenario))
|
||||
|
@ -465,7 +465,7 @@ def power_config_to_svg(power_config, svg_file_path, worst_case_scenario=True):
|
|||
|
||||
if False:
|
||||
x = 0.0
|
||||
for rack in racks.itervalues():
|
||||
for rack in racks.values():
|
||||
y = 0.0
|
||||
for machine in rack['machines']:
|
||||
node = graph.get_node(machine.name)
|
||||
|
@ -498,7 +498,7 @@ def power_config_to_svg(power_config, svg_file_path, worst_case_scenario=True):
|
|||
# graph.add_edge(con.from_plug.machine.name, con.to_plug.machine.name, color="%s:%s" % (color, wsc_color), label=label, penwidth="%s:%s" % (penwidth, penwidth))
|
||||
graph.add_edge(con.from_plug.machine.name, con.to_plug.machine.name, color=color, label=label, penwidth=penwidth)
|
||||
|
||||
for rack_id, rack in racks.iteritems():
|
||||
for rack_id, rack in racks.items():
|
||||
# sub = graph.add_subgraph(rack, name='cluster_%s' % rack_id, rank='same')
|
||||
machine_names = list(machine.name for machine in rack['machines'])
|
||||
sub = graph.add_subgraph(machine_names, name='cluster_%s' % rack_id, style='rounded')
|
||||
|
|
|
@ -110,12 +110,12 @@ def get_computer_value_over_time(inventory, computer_id, time_value, flops_price
|
|||
# """
|
||||
# # matplot 1.1.1 doesn't have the stackplot method in Axes
|
||||
# if 'toto_stackplot' in dir(ax):
|
||||
# ax.stackplot(x_signal, list(y_signals.itervalues()) )
|
||||
# ax.stackplot(x_signal, list(y_signals.values()) )
|
||||
# plt.legend(list(y_signals.keys()))
|
||||
# else:
|
||||
# colors = ['blue', 'orange', 'green', 'purple', 'yellow']
|
||||
# # emulating missing Axes.stackplot method
|
||||
# y = np.row_stack(list(y_signals.itervalues()))
|
||||
# y = np.row_stack(list(y_signals.values()))
|
||||
# # this call to 'cumsum' (cumulative sum), passing in your y data,
|
||||
# # is necessary to avoid having to manually order the datasets
|
||||
# y_stack = np.cumsum(y, axis=0) # a 3x10 array
|
||||
|
@ -236,7 +236,7 @@ def draw_cluster_value_over_time_graph(inventory, from_date, to_date, graph_type
|
|||
|
||||
fig, ax = plt.subplots()
|
||||
ax.set_title(graph_type)
|
||||
# for dept, cluster_value_for_dept in cluster_value.iteritems():
|
||||
# for dept, cluster_value_for_dept in cluster_value.items():
|
||||
# ax.plot(time_value, cluster_value_for_dept)
|
||||
|
||||
stackplot(ax, time_value, cluster_value, legend_location='upper left')
|
||||
|
|
Loading…
Reference in New Issue