def generate_data_handlers(self,qs):
      
      data_structures = self.package["data_structures"]
      
      generate_handlers = Generate_Handlers(self.package,qs)
      self.ds_handlers = {}
      self.ds_handlers["MQTT_PAST_ACTION_QUEUE"] = generate_handlers.construct_redis_stream_writer(data_structures["MQTT_PAST_ACTION_QUEUE"])
      self.ds_handlers["MQTT_INPUT_QUEUE"] = generate_handlers.construct_redis_stream_writer(data_structures["MQTT_INPUT_QUEUE"])
      self.ds_handlers["MQTT_DEVICES"] = generate_handlers.construct_hash(data_structures["MQTT_DEVICES"])
      self.ds_handlers["MQTT_SUBSCRIPTIONS"] = generate_handlers.construct_hash(data_structures["MQTT_SUBSCRIPTIONS"])
      self.ds_handlers["MQTT_CONTACT_LOG"] = generate_handlers.construct_hash(data_structures["MQTT_CONTACT_LOG"])
      self.ds_handlers["MQTT_REBOOT_LOG"]       = generate_handlers.construct_hash(data_structures["MQTT_REBOOT_LOG"])
      self.ds_handlers["MQTT_UNKNOWN_DEVICES"] = generate_handlers.construct_hash(data_structures["MQTT_UNKNOWN_DEVICES"])
      self.ds_handlers["MQTT_UNKNOWN_SUBSCRIPTIONS"] = generate_handlers.construct_hash(data_structures["MQTT_UNKNOWN_SUBSCRIPTIONS"])
    def generate_data_handlers(self, package, qs):
        self.handlers = {}
        data_structures = package["data_structures"]
        generate_handlers = Generate_Handlers(package, qs)
        self.ds_handlers = {}
        self.ds_handlers[
            "MQTT_INPUT_QUEUE"] = generate_handlers.construct_redis_stream_reader(
                data_structures["MQTT_INPUT_QUEUE"])
        self.ds_handlers[
            "MQTT_PAST_ACTION_QUEUE"] = generate_handlers.construct_redis_stream_writer(
                data_structures["MQTT_PAST_ACTION_QUEUE"])
        self.ds_handlers[
            "MQTT_SENSOR_QUEUE"] = generate_handlers.construct_redis_stream_writer(
                data_structures["MQTT_SENSOR_QUEUE"])
        self.ds_handlers[
            "MQTT_CONTACT_LOG"] = generate_handlers.construct_hash(
                data_structures["MQTT_CONTACT_LOG"])
        self.ds_handlers["MQTT_REBOOT_LOG"] = generate_handlers.construct_hash(
            data_structures["MQTT_REBOOT_LOG"])
        self.ds_handlers[
            "MQTT_SENSOR_STATUS"] = generate_handlers.construct_hash(
                data_structures["MQTT_SENSOR_STATUS"])
        contact_set = set(self.ds_handlers["MQTT_CONTACT_LOG"].hkeys())
        device_set = set(self.mqtt_devices.keys())
        difference_set = contact_set - device_set
        for i in list(difference_set):
            self.ds_handlers["MQTT_CONTACT_LOG"].hdelete(i)

        return
        contact_set = set(self.ds_handlers["MQTT_CONTACT_LOG"].hkeys())
        difference_set = device_set - contact_set
        print("contact_set", contact_set)
        print("difference_set", difference_set)
        for i in list(difference_set):
            data = {}
            data["time"] = time.time()
            data["status"] = status
            data["name"] = name
            data["device_id"] = name  # redundant with name
            self.ds_handlers["MQTT_PAST_ACTION_QUEUE"].push({
                "action": "Device_Change",
                "device_id": name,
                "status": status
            })
            self.ds_handlers["MQTT_CONTACT_LOG"].hset(name, data)
 def generate_data_handlers(self, qs):
     self.handlers = {}
     data_structures = self.package["data_structures"]
     generate_handlers = Generate_Handlers(self.package, qs)
     self.ds_handlers = {}
     self.ds_handlers[
         "MQTT_INPUT_QUEUE"] = generate_handlers.construct_redis_stream_reader(
             data_structures["MQTT_INPUT_QUEUE"])
     self.ds_handlers[
         "MQTT_PAST_ACTION_QUEUE"] = generate_handlers.construct_redis_stream_writer(
             data_structures["MQTT_PAST_ACTION_QUEUE"])
     self.ds_handlers[
         "MQTT_SENSOR_QUEUE"] = generate_handlers.construct_redis_stream_writer(
             data_structures["MQTT_SENSOR_QUEUE"])
     self.ds_handlers[
         "MQTT_CONTACT_LOG"] = generate_handlers.construct_hash(
             data_structures["MQTT_CONTACT_LOG"])
     self.ds_handlers[
         "MQTT_SENSOR_STATUS"] = generate_handlers.construct_hash(
             data_structures["MQTT_SENSOR_STATUS"])
Exemplo n.º 4
0
 def generate_data_handlers(self,redis_site,qs):
     query_list = []   
     query_list = qs.add_match_relationship( query_list,relationship="SITE",label=redis_site["site"] )
     query_list = qs.add_match_relationship( query_list,relationship="PLC_MEASUREMENTS" )
     query_list = qs.add_match_terminal( query_list, 
                                         relationship = "PACKAGE", 
                                         property_mask={"name":"PLC_MEASUREMENTS_PACKAGE"} )
                                         
     package_sets, package_sources = qs.match_list(query_list)
     
     package = package_sources[0]       
 
      
     data_structures = package["data_structures"]
     generate_handlers = Generate_Handlers(package,qs)
     self.ds_handlers = {}
     self.ds_handlers["PLC_MEASUREMENTS_STREAM"] = generate_handlers.construct_redis_stream_writer(data_structures["PLC_MEASUREMENTS_STREAM"])                
     self.construct_access_class =   Construct_Access_Classes(generate_handlers)
    def generate_data_handlers(self, package, qs):
        self.handlers = {}
        data_structures = package["data_structures"]
        generate_handlers = Generate_Handlers(package, qs)
        self.ds_handlers = {}

        self.ds_handlers[
            "MQTT_PAST_ACTION_QUEUE"] = generate_handlers.construct_redis_stream_writer(
                data_structures["MQTT_PAST_ACTION_QUEUE"])
        self.ds_handlers[
            "MQTT_CONTACT_LOG"] = generate_handlers.construct_hash(
                data_structures["MQTT_CONTACT_LOG"])
        self.ds_handlers["MQTT_REBOOT_LOG"] = generate_handlers.construct_hash(
            data_structures["MQTT_REBOOT_LOG"])

        contact_set = set(self.ds_handlers["MQTT_CONTACT_LOG"].hkeys())
        device_set = set(self.mqtt_devices.keys())
        difference_set = contact_set - device_set
        for i in list(difference_set):
            self.ds_handlers["MQTT_CONTACT_LOG"].hdelete(i)
    query_list = qs.add_match_terminal(
        query_list,
        relationship="PACKAGE",
        property_mask={"name": "IRRIGIGATION_SCHEDULING_CONTROL_DATA"})

    package_sets, package_sources = qs.match_list(query_list)
    package = package_sources[0]
    data_structures = package["data_structures"]

    generate_handlers = Generate_Handlers(package, qs)

    app_files = APP_FILES(qs.get_redis_data_handle(), redis_site)
    sys_files = SYS_FILES(qs.get_redis_data_handle(), redis_site)
    ds_handlers = {}
    ds_handlers[
        "IRRIGATION_PAST_ACTIONS"] = generate_handlers.construct_redis_stream_writer(
            data_structures["IRRIGATION_PAST_ACTIONS"])

    ds_handlers[
        "IRRIGATION_CURRENT_CLIENT"] = generate_handlers.construct_job_queue_client(
            data_structures["IRRIGATION_CURRENT"])
    ds_handlers[
        "IRRIGATION_CURRENT_SERVER"] = generate_handlers.construct_job_queue_server(
            data_structures["IRRIGATION_CURRENT"])
    ds_handlers[
        "IRRIGATION_JOB_SCHEDULING"] = generate_handlers.construct_job_queue_server(
            data_structures["IRRIGATION_JOB_SCHEDULING"])
    ds_handlers[
        "IRRIGATION_PENDING_CLIENT"] = generate_handlers.construct_job_queue_client(
            data_structures["IRRIGATION_PENDING"])
    ds_handlers[
        "IRRIGATION_PENDING_SERVER"] = generate_handlers.construct_job_queue_server(
   if len(initialization_nodes) > 0:
      initialization_list = initialization_nodes[0]["command_list"] 
   else:
      initialization_list= []
   query_list = []
   query_list = qs.add_match_relationship( query_list,relationship="SITE",label=site_data["site"] )
   query_list = qs.add_match_relationship( query_list,relationship="PROCESSOR",label=site_data["local_node"] )
   query_list = qs.add_match_terminal( query_list, 
                                        relationship = "PACKAGE", label = "DATA_STRUCTURES" )
  
   package_sets, package_nodes = qs.match_list(query_list)  
   print(package_nodes)
   data_structures = package_nodes[0]["data_structures"]
   generate_handlers = Generate_Handlers(package_nodes[0],qs)
   ds_handlers = {}
   ds_handlers["ERROR_STREAM"]        = generate_handlers.construct_redis_stream_writer(data_structures["ERROR_STREAM"])
   
   
   ds_handlers["ERROR_STREAM"].push( data = { "script":"Reboot", "error_output" : "Process Manager is Rebooting" } )

   for i in results:
      print(i)
      ds_handlers["ERROR_STREAM"].push( data = { "script":i[1], "error_output" : i[0][1] } )
      
   
   
   for j in  initialization_list:
        i = j["file"]
        results.append( [run_process_to_completion_no_log(i), i])

   for i in results: