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 __init__(self, redis_site, topic_prefix, qs):

        self.topic_prefix = topic_prefix
        query_list = []
        query_list = qs.add_match_relationship(query_list,
                                               relationship="SITE",
                                               label=redis_site["site"])

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

        package_sets, package_sources = qs.match_list(query_list)
        package = package_sources[0]
        generate_handlers = Generate_Handlers(package, qs)
        data_structures = package["data_structures"]
        self.job_queue_client = generate_handlers.construct_job_queue_client(
            data_structures["MQTT_PUBLISH_QUEUE"])
Ejemplo n.º 3
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
Ejemplo n.º 4
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
    def __init__(self, redis_site):

        qs = Query_Support(redis_site)
        query_list = []
        query_list = qs.add_match_relationship(query_list,
                                               relationship="SITE",
                                               label=redis_site["site"])

        query_list = qs.add_match_terminal(
            query_list,
            relationship="PACKAGE",
            property_mask={"name": "MQTT_DEVICES_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)
        self.job_queue_client = generate_handlers.construct_job_queue_client(
            data_structures["MQTT_PUBLISH_QUEUE"])
        self.send_request("REBOOT")
        while 1:
            self.send_request("HEART_BEAT")
            self.send_request("SERVER_CHECK")
            time.sleep(15.)
    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(
            data_structures["IRRIGATION_PENDING"])

    ds_handlers["IRRIGATION_VALVE_TEST"] = generate_handlers.construct_hash(
        data_structures["IRRIGATION_VALVE_TEST"])
Ejemplo n.º 7
0
    package_sets, package_sources = qs.match_list(query_list)
    #print("package sources",package_sources)
    package = package_sources[0]

    #
    #  do verifications of data package
    #
    #
    #
    data_structures = package["data_structures"]

    generate_handlers = Generate_Handlers(package, qs)

    data_structures = package["data_structures"]
    job_queue = generate_handlers.construct_job_queue_client(
        data_structures["IRRIGATION_JOB_SCHEDULING"])
    job_queue.delete_all()

    completion_dictionary = generate_handlers.construct_hash(
        data_structures["SYSTEM_COMPLETION_DICTIONARY"])

    irrigation_control = generate_irrigation_control(redis_site, qs)
    sched = Irrigation_Schedule_Monitoring(file_server_library,
                                           completion_dictionary, job_queue,
                                           irrigation_control)
    action = System_Monitoring(file_server_library, completion_dictionary,
                               job_queue)

    ntpd = Ntpd()
    #
    # Adding chains
Ejemplo n.º 8
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)