]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
lock: Fix import cycle breakage 10/head
authorSam Lang <sam.lang@inktank.com>
Fri, 12 Apr 2013 17:55:54 +0000 (12:55 -0500)
committerSam Lang <sam.lang@inktank.com>
Fri, 12 Apr 2013 17:57:33 +0000 (12:57 -0500)
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 <sam.lang@inktank.com>
teuthology/lock.py
teuthology/lockstatus.py [new file with mode: 0644]
teuthology/misc.py
teuthology/task/internal.py

index eb698c2aba80f380e79bc9be5acaf752e9065002..51cb71a94899c99dc7a1f400443aa6cec9db71e5 100644 (file)
@@ -1,5 +1,4 @@
 import argparse
-import httplib2
 import json
 import logging
 import subprocess
@@ -7,29 +6,17 @@ import urllib
 import yaml
 import re
 import collections
-import os
 import tempfile
 
+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,
@@ -49,7 +36,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)
@@ -60,7 +47,7 @@ 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)
@@ -68,14 +55,8 @@ def unlock(ctx, name, user=None):
         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
@@ -90,7 +71,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
@@ -283,7 +264,7 @@ Lock, unlock, or query lock status of machines.
         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)
         vmachines = []
@@ -295,7 +276,7 @@ Lock, unlock, or query lock status of machines.
         if vmachines:
             scan_for_locks(ctx, vmachines)
             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:
@@ -349,7 +330,7 @@ Lock, unlock, or query lock status of machines.
                     return ret
             else:
                 machines_to_update.append(machine)
-                status_info = get_status(ctx,machine)
+                status_info = ls.get_status(ctx,machine)
                 if status_info['vpshost']:
                     do_create(ctx, machine, status_info['vpshost'])
     elif ctx.unlock:
@@ -360,7 +341,7 @@ Lock, unlock, or query lock status of machines.
                     return ret
             else:
                 machines_to_update.append(machine)
-                status_info = get_status(ctx,machine)
+                status_info = ls.get_status(ctx,machine)
                 if status_info['vpshost']:
                     do_destroy(machine, status_info['vpshost'])
     elif ctx.num_to_lock:
diff --git a/teuthology/lockstatus.py b/teuthology/lockstatus.py
new file mode 100644 (file)
index 0000000..9e63614
--- /dev/null
@@ -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
+
+
index 55ea95408a4cd33b4685198541db15eb8336403b..9113797f5e8f7b8471c7bfe7e8b4e66e93ef6f8c 100644 (file)
@@ -13,7 +13,7 @@ import yaml
 import json
 
 from teuthology import safepath
-from teuthology import lock
+from teuthology import lockstatus
 from .orchestra import run
 
 log = logging.getLogger(__name__)
@@ -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:
index c3ed1c42eada1735bc8f8587967d196d99618733..3785f9ab69f1293f7d39af4b6a4c29467323e025 100644 (file)
@@ -8,6 +8,7 @@ import yaml
 import re
 import subprocess
 
+from teuthology import lockstatus
 from teuthology import lock
 from teuthology import misc as teuthology
 from teuthology.parallel import parallel
@@ -124,7 +125,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)