Files
JIMRI/jython/operations/OperationsRemoveCarKernels.py
T
2026-06-17 14:00:51 +02:00

48 lines
1.6 KiB
Python

# Used in operations.
# Sample script to remove car kernels created by operation scripts.
# Use this script after terminating a train that services kernels created by operation scripts.
#
# Author: Daniel Boudreau, copyright 2015, 2024
#
import jmri
class RemoveCarKernels(jmri.jmrit.automat.AbstractAutomaton):
def init(self):
# used when creating kernel names
self.regex = "_$_"
print ('Script to remove operation created kernels starts now!')
return
def handle(self):
# get the car manager
carManager = jmri.InstanceManager.getDefault(jmri.jmrit.operations.rollingstock.cars.CarManager)
# get the kernel manager
kernelManager = jmri.InstanceManager.getDefault(jmri.jmrit.operations.rollingstock.cars.KernelManager)
# get a list of cars
carList = carManager.getByIdList()
for car in carList:
if car.getKernel() == None:
continue
# only delete kernels created by scripts
if not self.regex in car.getKernel().getName():
continue
# only delete kernels that don't have a train assignment or final destination
if not car.getTrain() == None or not car.getFinalDestination() == None:
continue
print ('Car ({}) type ({}) is part of kernel ({})'.format(car.toString(), car.getTypeName(), car.getKernel().getName()))
# delete the kernel
kernelManager.deleteKernel(car.getKernel().getName())
print ('Done')
return False # all done, don't repeat again
RemoveCarKernels().start() # create one of these, and start it running