Skip to content

Commit

Permalink
lock: Fix import cycle breakage
Browse files Browse the repository at this point in the history
fa2049f caused an import cycle between lock.py and misc.py.  Move the
needed functions from lock.py to lockstatus.py so that we can avoid the
import cycle.

Signed-off-by: Sam Lang <[email protected]>

Conflicts:
	teuthology/lock.py
  • Loading branch information
6uv1s committed Apr 17, 2013
1 parent 72cbf11 commit b37f43d
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 29 deletions.
33 changes: 7 additions & 26 deletions teuthology/lock.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import argparse
import httplib2
import json
import logging
import subprocess
Expand All @@ -8,26 +7,15 @@
import re
import collections

from teuthology import lockstatus as ls
from teuthology import misc as teuthology

log = logging.getLogger(__name__)

def _lock_url(ctx):
return ctx.teuthology_config['lock_server']

def send_request(method, url, body=None, headers=None):
http = httplib2.Http()
resp, content = http.request(url, method=method, body=body, headers=headers)
if resp.status == 200:
return (True, content, resp.status)
log.info("%s request to '%s' with body '%s' failed with response code %d",
method, url, body, resp.status)
return (False, None, resp.status)

def lock_many(ctx, num, machinetype, user=None, description=None):
if user is None:
user = teuthology.get_user()
success, content, status = send_request('POST', _lock_url(ctx),
success, content, status = ls.send_request('POST', ls._lock_url(ctx),
urllib.urlencode(dict(
user=user,
num=num,
Expand All @@ -47,7 +35,7 @@ def lock_many(ctx, num, machinetype, user=None, description=None):
def lock(ctx, name, user=None):
if user is None:
user = teuthology.get_user()
success, _, _ = send_request('POST', _lock_url(ctx) + '/' + name,
success, _, _ = ls.send_request('POST', ls._lock_url(ctx) + '/' + name,
urllib.urlencode(dict(user=user)))
if success:
log.debug('locked %s as %s', name, user)
Expand All @@ -58,22 +46,16 @@ def lock(ctx, name, user=None):
def unlock(ctx, name, user=None):
if user is None:
user = teuthology.get_user()
success, _ , _ = send_request('DELETE', _lock_url(ctx) + '/' + name + '?' + \
success, _ , _ = ls.send_request('DELETE', ls._lock_url(ctx) + '/' + name + '?' + \
urllib.urlencode(dict(user=user)))
if success:
log.debug('unlocked %s', name)
else:
log.error('failed to unlock %s', name)
return success

def get_status(ctx, name):
success, content, _ = send_request('GET', _lock_url(ctx) + '/' + name)
if success:
return json.loads(content)
return None

def list_locks(ctx):
success, content, _ = send_request('GET', _lock_url(ctx))
success, content, _ = ls.send_request('GET', ls._lock_url(ctx))
if success:
return json.loads(content)
return None
Expand All @@ -88,7 +70,7 @@ def update_lock(ctx, name, description=None, status=None, sshpubkey=None):
updated['sshpubkey'] = sshpubkey

if updated:
success, _, _ = send_request('PUT', _lock_url(ctx) + '/' + name,
success, _, _ = ls.send_request('PUT', ls._lock_url(ctx) + '/' + name,
body=urllib.urlencode(updated),
headers={'Content-type': 'application/x-www-form-urlencoded'})
return success
Expand Down Expand Up @@ -276,10 +258,9 @@ def main():
assert ctx.desc is None, '--desc does nothing with --list'

if machines:
statuses = [get_status(ctx, machine) for machine in machines]
statuses = [ls.get_status(ctx, machine) for machine in machines]
else:
statuses = list_locks(ctx)

if statuses:
if not machines and ctx.owner is None and not ctx.all:
ctx.owner = teuthology.get_user()
Expand Down
25 changes: 25 additions & 0 deletions teuthology/lockstatus.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import json
import httplib2
import logging

log = logging.getLogger(__name__)

def _lock_url(ctx):
return ctx.teuthology_config['lock_server']

def send_request(method, url, body=None, headers=None):
http = httplib2.Http()
resp, content = http.request(url, method=method, body=body, headers=headers)
if resp.status == 200:
return (True, content, resp.status)
log.info("%s request to '%s' with body '%s' failed with response code %d",
method, url, body, resp.status)
return (False, None, resp.status)

def get_status(ctx, name):
success, content, _ = send_request('GET', _lock_url(ctx) + '/' + name)
if success:
return json.loads(content)
return None


4 changes: 2 additions & 2 deletions teuthology/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import json

from teuthology import safepath
from teuthology import lock
from teuthology import lockstatus
from .orchestra import run

log = logging.getLogger(__name__)
Expand All @@ -37,7 +37,7 @@ def get_testdir(ctx):
if not checked_jobid:
jobids = {}
for machine in ctx.config['targets'].iterkeys():
status = lock.get_status(ctx, machine)
status = lockstatus.get_status(ctx, machine)
jid = status['description'].split('/')[-1]
jobids[jid] = 1
if len(jobids) > 1:
Expand Down
3 changes: 2 additions & 1 deletion teuthology/task/internal.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import time
import yaml

from teuthology import lockstatus
from teuthology import lock
from teuthology import misc as teuthology
from ..orchestra import run
Expand Down Expand Up @@ -121,7 +122,7 @@ def check_lock(ctx, config):
return
log.info('Checking locks...')
for machine in ctx.config['targets'].iterkeys():
status = lock.get_status(ctx, machine)
status = lockstatus.get_status(ctx, machine)
log.debug('machine status is %s', repr(status))
assert status is not None, \
'could not read lock status for {name}'.format(name=machine)
Expand Down

0 comments on commit b37f43d

Please sign in to comment.