def __init__(self, step, config):
     self.__log = logging.getLogger(ModelsAtRuntimeChange.__name__)
     self.__step = step
     self.__config = config
     self.__client = ModelsAtRuntimeClient(self.__config[Constants['MANIFEST_MODELS_AT_RUNTIME_IP']],
                                           self.__config[Constants['MANIFEST_MODELS_AT_RUNTIME_PORT']],
                                           '- [step %d] ' % self.__step)
class ModelsAtRuntimeChange(object):
    """ This class takes care of enacting a deployment change through the M@R deployer
    """

    def __init__(self, step, config):
        self.__log = logging.getLogger(ModelsAtRuntimeChange.__name__)
        self.__step = step
        self.__config = config
        self.__client = ModelsAtRuntimeClient(self.__config[Constants['MANIFEST_MODELS_AT_RUNTIME_IP']],
                                              self.__config[Constants['MANIFEST_MODELS_AT_RUNTIME_PORT']],
                                              '- [step %d] ' % self.__step)

    def execute(self):
        fd = open(self.__config[Constants['DEPLOYMENT_MODEL']])
        deploymentModel = fd.read()
        fd.close()
        self.__log.info('- [step %d] enacting step %d deployment model ...' % (self.__step , self.__step))
        self.__client.deploy(deploymentModel)
        self.__client.close()
        self.__log.info('- [step %d] deployment completed' % self.__step)

    def done(self):
        if self.__client: self.__client.close()
        self.__client = None