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"])
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 )
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"])
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
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
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)