Exemple #1
0
    def assemble_handlers(self):
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])
        query_list = self.qs.add_match_relationship(
            query_list, relationship="MQTT_DEVICES")

        query_list = self.qs.add_match_terminal(query_list,
                                                relationship="PACKAGE",
                                                label="MQTT_DEVICES_DATA")

        package_sets, package_sources = self.qs.match_list(query_list)

        package = package_sources[0]
        generate_handlers = Generate_Handlers(package, self.qs)
        data_structures = package["data_structures"]

        self.handlers = {}
        self.handlers[
            "MQTT_PAST_ACTION_QUEUE"] = generate_handlers.construct_redis_stream_reader(
                data_structures["MQTT_PAST_ACTION_QUEUE"])
        self.handlers["MQTT_CONTACT_LOG"] = generate_handlers.construct_hash(
            data_structures["MQTT_CONTACT_LOG"])
        self.handlers["MQTT_REBOOT_LOG"] = generate_handlers.construct_hash(
            data_structures["MQTT_REBOOT_LOG"])
        self.handlers[
            "MQTT_UNKNOWN_DEVICES"] = generate_handlers.construct_hash(
                data_structures["MQTT_UNKNOWN_DEVICES"])
        self.handlers[
            "MQTT_UNKNOWN_SUBSCRIPTIONS"] = generate_handlers.construct_hash(
                data_structures["MQTT_UNKNOWN_SUBSCRIPTIONS"])
    def assemble_data_structures(self, controller_name):
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])

        query_list = self.qs.add_match_relationship(query_list,
                                                    relationship="PROCESSOR",
                                                    label=controller_name)
        query_list = self.qs.add_match_relationship(
            query_list, relationship="NODE_PROCESSES", label=controller_name)
        query_list = self.qs.add_match_terminal(query_list,
                                                relationship="PACKAGE")

        package_sets, package_sources = self.qs.match_list(query_list)

        package = package_sources[0]
        data_structures = package["data_structures"]
        generate_handlers = Generate_Handlers(package, self.qs)
        handlers = {}
        handlers[
            "ERROR_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["ERROR_STREAM"])
        handlers["ERROR_HASH"] = generate_handlers.construct_hash(
            data_structures["ERROR_HASH"])
        handlers[
            "WEB_COMMAND_QUEUE"] = generate_handlers.construct_job_queue_client(
                data_structures["WEB_COMMAND_QUEUE"])

        handlers["WEB_DISPLAY_DICTIONARY"] = generate_handlers.construct_hash(
            data_structures["WEB_DISPLAY_DICTIONARY"])
        return handlers
    def assemble_handlers(self):
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SYSTEM_MONITOR")

        query_list = self.qs.add_match_terminal(query_list,
                                                relationship="PACKAGE",
                                                label="SYSTEM_MONITOR")

        package_sets, package_sources = self.qs.match_list(query_list)

        package = package_sources[0]
        generate_handlers = Generate_Handlers(package, self.qs)
        data_structures = package["data_structures"]

        self.handlers = {}
        self.handlers["SYSTEM_STATUS"] = generate_handlers.construct_hash(
            data_structures["SYSTEM_STATUS"])
        self.handlers["MONITORING_DATA"] = generate_handlers.construct_hash(
            data_structures["MONITORING_DATA"])
        self.handlers[
            "SYSTEM_ALERTS"] = generate_handlers.construct_redis_stream_reader(
                data_structures["SYSTEM_ALERTS"])
Exemple #4
0
   def __init__(base_self ,self  ):
       
        # from graph get hash tables
       
       query_list = []
       query_list = self.qs.add_match_relationship( query_list,relationship="SITE",label=self.site_data["site"] )
       query_list = self.qs.add_match_terminal( query_list, 
                                        relationship = "WS_STATION" )
                                        
       eto_sets, eto_sources = self.qs.match_list(query_list)                                    
    
       query_list = []
       query_list = self.qs.add_match_relationship( query_list,relationship="SITE",label=self.site_data["site"] )

       query_list = self.qs.add_match_terminal( query_list, 
                                        relationship = "PACKAGE", property_mask={"name":"WEATHER_STATION_DATA"} )
                                           
       package_sets, package_sources = self.qs.match_list(query_list)  
     
       package = package_sources[0] 
       data_structures = package["data_structures"]
       generate_handlers = Generate_Handlers(package,self.qs)
       self.ds_handlers = {}
       self.ds_handlers["EXCEPTION_VALUES"] = generate_handlers.construct_hash(data_structures["EXCEPTION_VALUES"])
       self.ds_handlers["ETO_VALUES"] = generate_handlers.construct_hash(data_structures["ETO_VALUES"])
       self.ds_handlers["RAIN_VALUES"] = generate_handlers.construct_hash(data_structures["RAIN_VALUES"])
       self.ds_handlers["ETO_CONTROL"] = generate_handlers.construct_hash(data_structures["ETO_CONTROL"])
       self.ds_handlers["ETO_HISTORY"] = generate_handlers.construct_redis_stream_reader(data_structures["ETO_HISTORY"])
       self.ds_handlers["RAIN_HISTORY"] = generate_handlers.construct_redis_stream_reader(data_structures["RAIN_HISTORY"] )
       self.ds_handlers["EXCEPTION_LOG"] = generate_handlers.construct_redis_stream_reader(data_structures["EXCEPTION_LOG"] )
       self.ds_handlers["ETO_ACCUMULATION_TABLE"] = generate_handlers.construct_hash(data_structures["ETO_ACCUMULATION_TABLE"])
       
       self.redis_access.add_access_handlers("ETO_VALUES",self.ds_handlers["ETO_VALUES"],"Redis_Hash_Dictionary") 

       
       self.redis_access.add_access_handlers("RAIN_VALUES",self.ds_handlers["RAIN_VALUES"],"Redis_Hash_Dictionary") 


       
       eto_update_table = self.ds_handlers["ETO_ACCUMULATION_TABLE"]
       self.redis_access.add_access_handlers("eto_update_table",eto_update_table,"Redis_Hash_Dictionary") 
  
       
       Load_ETO_Management_Web(self.app, self.auth,request, file_server_library = self.file_server_library,path='eto_py3',url_rule_class=self.url_rule_class,
                  subsystem_name= "ETO_MANAGEMENT",render_template=render_template,redis_access = self.redis_access,eto_update_table = eto_update_table,
                     handlers=self.ds_handlers )    
Exemple #5
0
    def assemble_container_data_structures(self, container_name):

        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])
        query_list = self.qs.add_match_relationship(query_list,
                                                    relationship="CONTAINER",
                                                    label=container_name)
        query_list = self.qs.add_match_terminal(query_list,
                                                relationship="PACKAGE",
                                                label="DATA_STRUCTURES")

        package_sets, package_nodes = self.qs.match_list(query_list)

        #print("package_nodes",package_nodes)

        generate_handlers = Generate_Handlers(package_nodes[0], self.qs)
        data_structures = package_nodes[0]["data_structures"]

        handlers = {}
        handlers[
            "ERROR_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["ERROR_STREAM"])
        handlers["ERROR_HASH"] = generate_handlers.construct_hash(
            data_structures["ERROR_HASH"])
        handlers[
            "WEB_COMMAND_QUEUE"] = generate_handlers.construct_job_queue_client(
                data_structures["WEB_COMMAND_QUEUE"])
        handlers["WEB_DISPLAY_DICTIONARY"] = generate_handlers.construct_hash(
            data_structures["WEB_DISPLAY_DICTIONARY"])
        handlers[
            "PROCESS_VSZ"] = generate_handlers.construct_redis_stream_reader(
                data_structures["PROCESS_VSZ"])
        handlers[
            "PROCESS_RSS"] = generate_handlers.construct_redis_stream_reader(
                data_structures["PROCESS_RSS"])
        handlers[
            "PROCESS_CPU"] = generate_handlers.construct_redis_stream_reader(
                data_structures["PROCESS_CPU"])

        return handlers
    def generate_structures_with_processor_container(self,
                                                     processor_list,
                                                     key_list,
                                                     hash_flag=True):
        processor_ds = {}

        for i in processor_list:
            containers = self.find_containers(i)
            #print("containers",containers)
            container_ds = {}
            for j in containers:

                #print(i,j)
                query_list = []
                query_list = self.qs.add_match_relationship(
                    query_list,
                    relationship="SITE",
                    label=self.site_data["site"])
                query_list = self.qs.add_match_relationship(
                    query_list, relationship="PROCESSOR", label=i)
                query_list = self.qs.add_match_relationship(
                    query_list, relationship="CONTAINER", label=j)
                query_list = self.qs.add_match_terminal(
                    query_list,
                    relationship="PACKAGE",
                    label="DATA_STRUCTURES")
                package_sets, package_sources = self.qs.match_list(query_list)
                package = package_sources[0]
                data_structures = package["data_structures"]
                #print("data_structures",data_structures.keys())
                generate_handlers = Generate_Handlers(package, self.qs)
                temp = {}
                for k in key_list:
                    if hash_flag == True:
                        temp[k] = generate_handlers.construct_hash(
                            data_structures[k])
                    else:
                        temp[
                            k] = generate_handlers.construct_redis_stream_reader(
                                data_structures[k])
                container_ds[j] = temp
            processor_ds[i] = container_ds
        #print("pocessor_ds",processor_ds)

        return processor_ds
    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_structures_with_processor(self,
                                           processor_list,
                                           search_list,
                                           key_list,
                                           hash_flag=True):
        return_value = {}

        for i in processor_list:
            #print(i)
            query_list = []
            query_list = self.qs.add_match_relationship(
                query_list, relationship="SITE", label=self.site_data["site"])

            query_list = self.qs.add_match_relationship(
                query_list, relationship="PROCESSOR", label=i)
            for j in range(0, len(search_list) - 1):
                query_list = self.qs.add_match_relationship(
                    query_list, relationship=search_list[j])
            if type(search_list[-1]) == list:
                query_list = self.qs.add_match_terminal(
                    query_list,
                    relationship=search_list[-1][0],
                    label=search_list[-1][1])
            else:
                query_list = self.qs.add_match_terminal(
                    query_list, relationship=search_list[-1])
            package_sets, package_sources = self.qs.match_list(query_list)
            package = package_sources[0]
            data_structures = package["data_structures"]
            print("data_structures", data_structures.keys())
            generate_handlers = Generate_Handlers(package, self.qs)
            temp = {}
            for k in key_list:
                if hash_flag == True:
                    temp[k] = generate_handlers.construct_hash(
                        data_structures[k])
                else:
                    temp[k] = generate_handlers.construct_redis_stream_reader(
                        data_structures[k])
            return_value[i] = temp

        return return_value
 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"])
Exemple #10
0
    def determine_container_structure(self, processor_name):
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])
        query_list = self.qs.add_match_relationship(query_list,
                                                    relationship="PROCESSOR",
                                                    label=processor_name)
        query_list = self.qs.add_match_relationship(
            query_list, relationship="DOCKER_MONITOR")
        query_list = self.qs.add_match_terminal(query_list,
                                                relationship="PACKAGE",
                                                label="DATA_STRUCTURES")

        package_sets, package_nodes = self.qs.match_list(query_list)

        #print("package_nodes",package_nodes)

        generate_handlers = Generate_Handlers(package_nodes[0], self.qs)

        package_node = package_nodes[0]
        data_structures = package_node["data_structures"]

        #print(data_structures.keys())
        handlers = {}
        handlers[
            "ERROR_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["ERROR_STREAM"])

        handlers[
            "WEB_COMMAND_QUEUE"] = generate_handlers.construct_job_queue_client(
                data_structures["WEB_COMMAND_QUEUE"])
        handlers["WEB_DISPLAY_DICTIONARY"] = generate_handlers.construct_hash(
            data_structures["WEB_DISPLAY_DICTIONARY"])
        queue_name = data_structures["DOCKER_UPDATE_QUEUE"]['queue']
        handlers[
            "DOCKER_UPDATE_QUEUE"] = generate_handlers.construct_rpc_client()
        handlers["DOCKER_UPDATE_QUEUE"].set_rpc_queue(queue_name)
        return handlers
Exemple #11
0
    def assemble_handlers(self):
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])
        query_list = self.qs.add_match_relationship(query_list,
                                                    relationship="CONTAINER",
                                                    label="monitor_redis")

        query_list = self.qs.add_match_terminal(query_list,
                                                relationship="PACKAGE",
                                                label="REDIS_MONITORING")

        package_sets, package_sources = self.qs.match_list(query_list)

        package = package_sources[0]
        generate_handlers = Generate_Handlers(package, self.qs)
        data_structures = package["data_structures"]

        self.handlers = {}
        self.handlers[
            "REDIS_MONITOR_KEY_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["REDIS_MONITOR_KEY_STREAM"])
        self.handlers[
            "REDIS_MONITOR_CLIENT_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["REDIS_MONITOR_CLIENT_STREAM"])
        self.handlers[
            "REDIS_MONITOR_MEMORY_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["REDIS_MONITOR_MEMORY_STREAM"])
        self.handlers[
            "REDIS_MONITOR_CALL_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["REDIS_MONITOR_CALL_STREAM"])
        self.handlers[
            "REDIS_MONITOR_CMD_TIME_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["REDIS_MONITOR_CMD_TIME_STREAM"])
        self.handlers[
            "REDIS_MONITOR_SERVER_TIME"] = generate_handlers.construct_redis_stream_reader(
                data_structures["REDIS_MONITOR_SERVER_TIME"])
    def assemble_processor_monitoring_data_structures(self, controller):
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])

        query_list = self.qs.add_match_relationship(query_list,
                                                    relationship="PROCESSOR",
                                                    label=controller)
        query_list = self.qs.add_match_terminal(
            query_list,
            relationship="PACKAGE",
            property_mask={"name": "SYSTEM_MONITORING"})

        package_sets, package_sources = self.qs.match_list(query_list)

        package = package_sources[0]
        data_structures = package["data_structures"]
        generate_handlers = Generate_Handlers(package, self.qs)
        handlers = {}
        handlers["FREE_CPU"] = generate_handlers.construct_redis_stream_reader(
            data_structures["FREE_CPU"])
        handlers["RAM"] = generate_handlers.construct_redis_stream_reader(
            data_structures["RAM"])
        handlers[
            "DISK_SPACE"] = generate_handlers.construct_redis_stream_reader(
                data_structures["DISK_SPACE"])
        handlers[
            "TEMPERATURE"] = generate_handlers.construct_redis_stream_reader(
                data_structures["TEMPERATURE"])
        handlers[
            "PROCESS_CPU"] = generate_handlers.construct_redis_stream_reader(
                data_structures["PROCESS_CPU"])

        handlers["CPU_CORE"] = generate_handlers.construct_redis_stream_reader(
            data_structures["CPU_CORE"])
        handlers[
            "SWAP_SPACE"] = generate_handlers.construct_redis_stream_reader(
                data_structures["SWAP_SPACE"])
        handlers["IO_SPACE"] = generate_handlers.construct_redis_stream_reader(
            data_structures["IO_SPACE"])
        handlers[
            "BLOCK_DEV"] = generate_handlers.construct_redis_stream_reader(
                data_structures["BLOCK_DEV"])
        handlers[
            "CONTEXT_SWITCHES"] = generate_handlers.construct_redis_stream_reader(
                data_structures["CONTEXT_SWITCHES"])
        handlers[
            "RUN_QUEUE"] = generate_handlers.construct_redis_stream_reader(
                data_structures["RUN_QUEUE"])
        handlers["EDEV"] = generate_handlers.construct_redis_stream_reader(
            data_structures["EDEV"])

        return handlers
Exemple #13
0
    def __init__(base_self, self):
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])

        query_list = self.qs.add_match_terminal(
            query_list,
            relationship="PACKAGE",
            property_mask={"name": "IRRIGIGATION_SCHEDULING_CONTROL_DATA"})

        package_sets, package_sources = self.qs.match_list(query_list)

        package = package_sources[0]
        data_structures = package["data_structures"]
        generate_handlers = Generate_Handlers(package, self.qs)
        ds_handlers = {}
        ds_handlers[
            "IRRIGATION_JOB_SCHEDULING"] = generate_handlers.construct_job_queue_client(
                data_structures["IRRIGATION_JOB_SCHEDULING"])
        ds_handlers[
            "IRRIGATION_PENDING"] = generate_handlers.construct_job_queue_client(
                data_structures["IRRIGATION_PENDING"])
        ds_handlers[
            "IRRIGATION_PAST_ACTIONS"] = generate_handlers.construct_redis_stream_reader(
                data_structures["IRRIGATION_PAST_ACTIONS"])
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])

        query_list = self.qs.add_match_terminal(
            query_list,
            relationship="PACKAGE",
            property_mask={"name": "MQTT_DEVICES_DATA"})

        package_sets, package_sources = self.qs.match_list(query_list)
        package = package_sources[0]
        generate_handlers = Generate_Handlers(package, self.qs)
        data_structures = package["data_structures"]
        ds_handlers[
            "MQTT_SENSOR_QUEUE"] = generate_handlers.construct_redis_stream_reader(
                data_structures["MQTT_SENSOR_QUEUE"])

        irrigation_control = generate_irrigation_control(
            self.site_data, self.qs)
        query_list = []
        query_list = self.qs.add_match_relationship(
            query_list, relationship="SITE", label=self.site_data["site"])
        query_list = self.qs.add_match_relationship(
            query_list, relationship="PLC_MEASUREMENTS")
        query_list = self.qs.add_match_terminal(
            query_list,
            relationship="PACKAGE",
            property_mask={"name": "PLC_MEASUREMENTS_PACKAGE"})

        package_sets, package_sources = self.qs.match_list(query_list)

        package = package_sources[0]

        data_structures = package["data_structures"]
        generate_handlers = Generate_Handlers(package, self.qs)

        ds_handlers[
            "PLC_MEASUREMENTS_STREAM"] = generate_handlers.construct_redis_stream_reader(
                data_structures["PLC_MEASUREMENTS_STREAM"])

        irrigation_control = generate_irrigation_control(
            self.site_data, self.qs)
        Load_Irrigation_Pages(self.app,
                              self.auth,
                              render_template,
                              request,
                              file_server_library=self.file_server_library,
                              handlers=ds_handlers,
                              irrigation_control=irrigation_control,
                              subsystem_name="Irrigation_Control",
                              path="irrigation_control",
                              url_rule_class=self.url_rule_class)