Ejemplo n.º 1
0
def chk_log_time_length(control_attr, control_path):
    """
  Check the log time length resides in the Max and Mini range

  Args:
    control_attr: dictionary which stores attributes in contorl file
  Return:
    True/False
  """
    try:
        now = datetime.datetime.now().replace(second=0, microsecond=0)
        recent = datetime.datetime.strptime(control_attr["MostRecentTime"], "%m/%d/%Y %H:%M:%S")
        now_ts = time.mktime(now.timetuple())
        recent_ts = time.mktime(recent.timetuple())
        diff_in_min = int(now_ts - recent_ts) / 60
        if diff_in_min > int(control_attr["MaxDuration"]):
            Logger.info(
                "ErcJobProcessor.chk_log_time_length",
                "range: " + str(now) + "-" + str(recent) + " Max: " + control_attr["MaxDuration"],
            )
            fix_recent_time_marker(control_attr, control_path)
            return True
        elif diff_in_min < int(control_attr["MinDuration"]):
            Logger.error(
                "ErcJobProcessor.chk_log_time_length",
                "range: " + str(now) + "," + str(recent) + " Min: " + control_attr["MinDuration"],
            )
            ErcTrapGenerator.generate_erc_trap("Invalid log period: " + str(recent) + "->" + str(now), "")
            return False
    except Exception as e:
        Logger.error("ErcJobProcessor.chk_log_time_length", str(e))
        return False
    return True
Ejemplo n.º 2
0
 def create_ondemand_control_file(self, job):
     try:
         with open(self.config_attr["ondemand_control_tmp"], "r") as f1:
             with open(self.config_attr["ondemand_control_path"], "w") as f2:
                 for line in f1:
                     if line.startswith("StartTime:"):
                         f2.write("StartTime: " + job.start_time + "\n")
                     elif line.startswith("EndTime"):
                         f2.write("EndTime: " + job.end_time + "\n")
                     else:
                         f2.write(line)
         return True
     except Exception as e:
         Logger.error("ErcJobProcessor.create_ondemand_control_file", str(e))
         ErcTrapGenerator.generate_erc_trap(
             "On demand control file create failed.", self.config_attr["trap_drop_dir"]
         )
         return False
Ejemplo n.º 3
0
    def execute_chmm_crm(self, control_file_path):
        """
    Run crm app to communicate with CHMM, get the log files and generate state file

    Args:

    Return:
      True/False
    """
        try:
            Logger.info("ErcJobProcessor.execute_chmm_crm", "Start log fetching job.")
            process = Popen([self.config_attr["crm_path"], control_file_path], stdout=PIPE, stderr=PIPE)
            out, err = process.communicate()
            Logger.info("ErcJobProcessor.execute_chmm_crm, ", ",Err: " + str(err))
            return True
        except Exception as e:
            Logger.error("ErcJobProcessor.execute_chmm_crm", str(e))
            ErcTrapGenerator.generate_erc_trap("Execute CRM failed.", self.config_attr["trap_drop_dir"])
            return False
Ejemplo n.º 4
0
    def get_control_file_attrs(self, job):
        """
    get attrs from control file

    Args:

    Return:
      True/False
    """
        try:
            is_valid_file, control_attr = ErcFileHandler().init_chmm_file(self.config_attr["control_path"], "CONTROL")
            if not is_valid_file:
                Logger.error("ErcJobProcessor.get_control_file_attrs", "Invalid control file.")
                raise
            if job.type == "recent":
                if not chk_log_time_length(control_attr, self.config_attr["control_path"]):
                    return False
            if not os.path.exists(self.config_attr["log_path"]):
                os.mkdir(self.config_attr["log_path"])
            return True
        except Exception as e:
            Logger.error("ErcJobProcessor.get_control_file_attrs", str(e))
            ErcTrapGenerator.generate_erc_trap("Invalid CRM control file.", self.config_attr["trap_drop_dir"])
            return False