def mqtt_trainer(): event_queue = queue.Queue() listen_thread = listener.MQTTSubscribe(event_queue, 'firehose.openstack.org', 'gearman-subunit/#') listen_thread.start() # dstat_model = dstat_data.DstatTrainer('mqtt-dataset') while True: event = event_queue.get() results = gather_results.get_subunit_results(event['build_uuid'], 'mqtt-dataset', '1s', default_db_uri) examples = [] classes = [] labels_list = [] for result in results: vector, status = normalize_example(result) examples = vector classes = status labels_list = labels if vector and labels and status: break run_uuids = [event['build_uuid']] * len(examples) dstat_model = svm_trainer.SVMTrainer(examples, run_uuids, labels_list, classes) dstat_model.train()
def mqtt_predict(db_uri, mqtt_hostname, topic, dataset, sample_interval, build_name, debug, model_dir): event_queue = queue.Queue() if debug: print('Starting MQTT listener') listen_thread = listener.MQTTSubscribe(event_queue, mqtt_hostname, topic) listen_thread.start() if debug: tf.logging.set_verbosity(tf.logging.DEBUG) print('Entering main loop') while True: event = event_queue.get() if debug: print('Received event with build uuid %s' % event['build_uuid']) results = gather_results.get_subunit_results( event['build_uuid'], dataset, sample_interval, db_uri, build_name, data_path=model_dir, use_cache=False) if results: print('Obtained dstat file for %s' % event['build_uuid']) else: print('Build uuid: %s is not of proper build_name, skipping' % event['build_uuid']) for res in results: vector, status, labels = trainer.normalize_example(res) model = svm_trainer.SVMTrainer( vector, [event['build_uuid']] * len(results), labels, [status], dataset_name=dataset, model_path=model_dir) model.predict()