def __init__(self, machine_config, server_log):
        "Set up machine interface and set up based on the environment."        
        MachineInterface.__init__(self, machine_config, server_log)
        self.status_data    = {}
        self.local_filename = ''
        self.report_info    = ''
        self.default_group  = "root"
        self.exit_code      = FAIL
        self.action_result  = []
        self.state_machine  = self._get_state_machine()
        self.machine_status = MachineStatus(self.server_home, self.machine_name)

        log_re_str = "\d+\-\d+\-\d+\s\d+\:\d+\:\d+\,\d+\|([A-Z]+)\|(.+)\|" 
        self.log_matcher = re.compile(log_re_str) 

        self.trace_matcher = re.compile( "\|\|\>\>\>(.+)" )
        if self.platform.startswith('win'):
            self.python  = '/cygdrive/c/Python25/python.exe'
            self.spkg_dir = '/cygdrive/c/spkg'
        else:
            self.python  = '/usr/bin/python'
            self.spkg_dir = '/opt/spkg'
        if self.data.get("python_path"):
            self.python = self.data.get("python_path")
        if self.data.get("spkg_path"):
            self.spkg_dir = self.data.get("spkg_path")
        self.pull_report = True
 def freshen(self, job_name, require_status):
     "Refresh config data"
     self.set_job(job_name)
     try:
         MachineInterface.freshen(self)
     except MachineUnavailableException:
         self.unset_job()
         raise
     try:
         self.machine_status.freshen()
     except MachineStatusException:
         msg = "Can't find status. Fetching from machine."
         self.polling_log.warning(msg)
         self._get_status_yml()
         try:
             self.machine_status.freshen()
         except MachineStatusException:
             if require_status:
                 self.unset_job()
                 raise
     return OK