mirror of
https://github.com/ceph/ceph
synced 2025-03-11 02:39:05 +00:00
Merge pull request #10 from ceph/wip-fix-importcycle
lock: Fix import cycle breakage Reviewed-by: Warren Usui <warren.usui@inktank.com>
This commit is contained in:
commit
35e6db72a1
@ -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:
|
||||
|
25
teuthology/lockstatus.py
Normal file
25
teuthology/lockstatus.py
Normal file
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user