import socket import gevent import requests from functools import wraps from consul import Consul from flask import jsonify, request, Blueprint, send_file, safe_join, Response from ooi_instrument_agent.client import TimeoutException, ParameterException from ooi_instrument_agent.common import get_sniffer_socket, stopwatch from ooi_instrument_agent.lock import LockManager, Locked from ooi_instrument_agent.utils import list_drivers, get_client, get_port_agent, get_from_request, get_timeout page = Blueprint('instrument', __name__) page.lock_manager = None page.consul = None log = logging.getLogger(__name__) sniff_sockfile = get_sniffer_socket() def lockout(func): """ Decorator which requires that the target instrument be unlocked or the supplied key matches the lock holder """ @wraps(func) def inner(driver_id): key = get_from_request('key') locker = page.lock_manager[driver_id] if locker is None or locker == key: