Ejemplo n.º 1
0
def networkPoller():
    print("In network poller")
    multiprocessing.current_process().name = "Network Poller"
    last_cycle = 0

    while True:
        #thingdo
        Base = automap_base()
        engine = create_engine("mysql+pymysql://" + config.db_user + ":" + config.db_password + \
            "@" + config.db_host + ":" + str(config.db_port) + "/" + config.db_name)
        Base.prepare(engine, reflect=True)
        db_session = Session(engine)
        db_session.autoflush = False
        Network = Base.classes.cloud_networks
        Cloud = Base.classes.csv2_group_resources
        cloud_list = db_session.query(Cloud).filter(
            Cloud.cloud_type == "localhost")

        current_cycle = int(time.time())
        for cloud in cloud_list:
            conn = libvirt.open(None)
            if conn is None:
                logging.debug("Failed to open connection to hypervisor")
                continue
            net_list = get_network_data(conn)
            for network in net_list:
                network_dict = {
                    'group_name': cloud.group_name,
                    'cloud_name': cloud.cloud_name,
                    'name': network.name(),
                    'bridge_name': network.bridgeName(),
                    'id': network.UUIDString(),
                    'last_updated': int(time.time())
                }
                network_dict = map_attributes(src="os_networks",
                                              dest="csv2",
                                              attr_dict=network_dict)
                new_network = Network(**network_dict)
                #db_session.merge(new_network)

            #now remove any that were not updated
            net_to_delete = db_session.query(Network).filter(
                Network.last_updated <= last_cycle,
                Network.group_name == cloud.group_name,
                Network.cloud_name == cloud.cloud_name)
            for net in net_to_delete:
                logging.info("Cleaning up network: %s", net)
                #db_session.delete(net)

        #db_session.commit()
        last_cycle = current_cycle
        logging.debug("End of cycle, sleeping...")
        time.sleep(config.network_sleep_interval)

    return None
# 7. Sets the database to autocommit, and autoflush.Since we are using the <code>"sesion.merge"</code> method, this is a convenience for now. Eventually we'll make it a bit more secure.

# <codecell>



engine = create_engine('postgresql+pg8000://vassr:bluedog@localhost:5432/vassr')
meta = MetaData(schema="public")
session = Session(engine)
working_tables = ['person', 'location', 'condition_occurrence', 'care_site', 'observation', 'drug_exposure']
meta.reflect(engine, only=None)
Base = automap_base(metadata=meta)
Base.prepare()
Person, Condition, CareSite, Observation, DrugExposure, Location = Base.classes.person, Base.classes.condition_occurrence, Base.classes.care_site, Base.classes.observation, Base.classes.drug_exposure, Base.classes.location
session.autocommit = True
session.autoflush = True
ins = sa.inspect(engine)

person = Person()
condition = Condition()
caresite = CareSite()
obs = Observation()
drugexp = DrugExposure()
location = Location()


'''

# Old Code:

Base = automap_base()