def METHOD_NAME(self):      
    FAN_STATE_REMOVE = 0
    FAN_STATE_INSERT = 1
    FAN_STATUS_FAULT = 1
    FAN_STATUS_NORMAL = 0
    global fan_state
    global fan_status_state
    for idx in range (0, self.fan_num):           
        node = self.fan_path + self.present[idx]
        try:
            val_file = open(node)
        except IOError as e:
            print("Error: unable to open file: %s" % str(e))          
            return False
        content = val_file.readline().rstrip()
        val_file.close()
        # content is a string, either "0" or "1"
        if content == "1":
            if fan_state[idx]!=1:
                fan_state[idx]=FAN_STATE_INSERT
                logging.info("FAN-%d present is detected", idx+1);
        else:
            if fan_state[idx]!=0:
                fan_state[idx]=FAN_STATE_REMOVE
                logging.warning("Alarm for FAN-%d absent is detected", idx+1)  
    for idx in range (0, self.fan_num):           
        node = self.fan_path + self.fault[idx]
        try:
            val_file = open(node)
        except IOError as e:
            print("Error: unable to open file: %s" % str(e))          
            return False
        content = val_file.readline().rstrip()
        val_file.close()
        # content is a string, either "0" or "1"
        if content == "1":
            if fan_status_state[idx]!=FAN_STATUS_FAULT:                    
                if fan_state[idx] == FAN_STATE_INSERT:
                    logging.warning("Alarm for FAN-%d failed is detected", idx+1);
                    fan_status_state[idx]=FAN_STATUS_FAULT
        else:
            fan_status_state[idx]=FAN_STATUS_NORMAL
    return True