本文整理汇总了Python中wok.utils.add_task函数的典型用法代码示例。如果您正苦于以下问题:Python add_task函数的具体用法?Python add_task怎么用?Python add_task使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了add_task函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: create
def create(self, vmid, params):
dev_name = params['name']
self._passthrough_device_validate(dev_name)
dev_info = DeviceModel(conn=self.conn).lookup(dev_name)
if dev_info['device_type'] == 'pci':
taskid = add_task(u'/plugins/kimchi/vms/%s/hostdevs/' %
VMModel.get_vm(vmid, self.conn).name(),
self._attach_pci_device, self.objstore,
{'vmid': vmid, 'dev_info': dev_info})
return self.task.lookup(taskid)
with RollbackContext() as rollback:
try:
dev = self.conn.get().nodeDeviceLookupByName(dev_name)
dev.dettach()
except Exception:
raise OperationFailed('KCHVMHDEV0005E', {'name': dev_name})
else:
rollback.prependDefer(dev.reAttach)
rollback.commitAll()
taskid = add_task(u'/plugins/kimchi/vms/%s/hostdevs/' %
VMModel.get_vm(vmid, self.conn).name(),
'_attach_%s_device' % dev_info['device_type'],
self.objstore, {'vmid': vmid, 'dev_info': dev_info})
return self.task.lookup(taskid)
示例2: test_tasks
def test_tasks(self):
id1 = add_task('/plugins/ginger/tasks/1', self._async_op,
model._objstore)
id2 = add_task('/plugins/ginger/tasks/2', self._except_op,
model._objstore)
id3 = add_task('/plugins/ginger/tasks/3', self._intermid_op,
model._objstore)
target_uri = urllib2.quote('^/plugins/ginger/tasks/*', safe="")
filter_data = 'status=running&target_uri=%s' % target_uri
tasks = json.loads(
self.request('/plugins/ginger/tasks?%s' % filter_data).read()
)
self.assertEquals(3, len(tasks))
tasks = json.loads(self.request('/plugins/ginger/tasks').read())
tasks_ids = [int(t['id']) for t in tasks]
self.assertEquals(set([id1, id2, id3]) - set(tasks_ids), set([]))
wait_task(self._task_lookup, id2)
foo2 = json.loads(
self.request('/plugins/ginger/tasks/%s' % id2).read()
)
keys = ['id', 'status', 'message', 'target_uri']
self.assertEquals(sorted(keys), sorted(foo2.keys()))
self.assertEquals('failed', foo2['status'])
wait_task(self._task_lookup, id3)
foo3 = json.loads(
self.request('/plugins/ginger/tasks/%s' % id3).read()
)
self.assertEquals('in progress', foo3['message'])
self.assertEquals('running', foo3['status'])
示例3: test_async_tasks
def test_async_tasks(self):
class task_except(Exception):
pass
def quick_op(cb, message):
cb(message, True)
def long_op(cb, params):
time.sleep(params.get('delay', 3))
cb(params.get('message', ''), params.get('result', False))
def abnormal_op(cb, params):
try:
raise task_except
except:
cb("Exception raised", False)
def continuous_ops(cb, params):
cb("step 1 OK")
time.sleep(2)
cb("step 2 OK")
time.sleep(2)
cb("step 3 OK", params.get('result', True))
inst = model.Model('test:///default',
objstore_loc=self.tmp_store)
taskid = add_task('', quick_op, inst.objstore, 'Hello')
inst.task_wait(taskid)
self.assertEquals(1, taskid)
self.assertEquals('finished', inst.task_lookup(taskid)['status'])
self.assertEquals('Hello', inst.task_lookup(taskid)['message'])
taskid = add_task('', long_op, inst.objstore,
{'delay': 3, 'result': False,
'message': 'It was not meant to be'})
self.assertEquals(2, taskid)
self.assertEquals('running', inst.task_lookup(taskid)['status'])
self.assertEquals('OK', inst.task_lookup(taskid)['message'])
inst.task_wait(taskid)
self.assertEquals('failed', inst.task_lookup(taskid)['status'])
self.assertEquals('It was not meant to be',
inst.task_lookup(taskid)['message'])
taskid = add_task('', abnormal_op, inst.objstore, {})
inst.task_wait(taskid)
self.assertEquals('Exception raised',
inst.task_lookup(taskid)['message'])
self.assertEquals('failed', inst.task_lookup(taskid)['status'])
taskid = add_task('', continuous_ops, inst.objstore,
{'result': True})
self.assertEquals('running', inst.task_lookup(taskid)['status'])
inst.task_wait(taskid, timeout=10)
self.assertEquals('finished', inst.task_lookup(taskid)['status'])
示例4: test_async_tasks
def test_async_tasks(self):
class task_except(Exception):
pass
def quick_op(cb, message):
cb(message, True)
def long_op(cb, params):
time.sleep(params.get("delay", 3))
cb(params.get("message", ""), params.get("result", False))
def abnormal_op(cb, params):
try:
raise task_except
except:
cb("Exception raised", False)
def continuous_ops(cb, params):
cb("step 1 OK")
time.sleep(2)
cb("step 2 OK")
time.sleep(2)
cb("step 3 OK", params.get("result", True))
inst = model.Model("test:///default", objstore_loc=self.tmp_store)
taskid = add_task("", quick_op, inst.objstore, "Hello")
inst.task_wait(taskid)
self.assertEquals(1, taskid)
self.assertEquals("finished", inst.task_lookup(taskid)["status"])
self.assertEquals("Hello", inst.task_lookup(taskid)["message"])
taskid = add_task(
"", long_op, inst.objstore, {"delay": 3, "result": False, "message": "It was not meant to be"}
)
self.assertEquals(2, taskid)
self.assertEquals("running", inst.task_lookup(taskid)["status"])
self.assertEquals("OK", inst.task_lookup(taskid)["message"])
inst.task_wait(taskid)
self.assertEquals("failed", inst.task_lookup(taskid)["status"])
self.assertEquals("It was not meant to be", inst.task_lookup(taskid)["message"])
taskid = add_task("", abnormal_op, inst.objstore, {})
inst.task_wait(taskid)
self.assertEquals("Exception raised", inst.task_lookup(taskid)["message"])
self.assertEquals("failed", inst.task_lookup(taskid)["status"])
taskid = add_task("", continuous_ops, inst.objstore, {"result": True})
self.assertEquals("running", inst.task_lookup(taskid)["status"])
inst.task_wait(taskid, timeout=10)
self.assertEquals("finished", inst.task_lookup(taskid)["status"])
示例5: create
def create(self, vm_name, params={}):
"""Create a snapshot with the current domain state.
The VM must be stopped and contain only disks with format 'qcow2';
otherwise an exception will be raised.
Parameters:
vm_name -- the name of the VM where the snapshot will be created.
params -- a dict with the following values:
"name": The snapshot name (optional). If omitted, a default value
based on the current time will be used.
Return:
A Task running the operation.
"""
vir_dom = VMModel.get_vm(vm_name, self.conn)
if DOM_STATE_MAP[vir_dom.info()[0]] != u'shutoff':
raise InvalidOperation('KCHSNAP0001E', {'vm': vm_name})
# if the VM has a non-CDROM disk with type 'raw', abort.
for storage_name in self.vmstorages.get_list(vm_name):
storage = self.vmstorage.lookup(vm_name, storage_name)
type = storage['type']
format = storage['format']
if type != u'cdrom' and format != u'qcow2':
raise InvalidOperation('KCHSNAP0010E', {'vm': vm_name,
'format': format})
name = params.get('name', unicode(int(time.time())))
task_params = {'vm_name': vm_name, 'name': name}
taskid = add_task(u'/plugins/kimchi/vms/%s/snapshots/%s' % (vm_name,
name), self._create_task, self.objstore, task_params)
return self.task.lookup(taskid)
示例6: clone
def clone(self, pool, name, new_pool=None, new_name=None):
"""Clone a storage volume.
Arguments:
pool -- The name of the original pool.
name -- The name of the original volume.
new_pool -- The name of the destination pool (optional). If omitted,
the new volume will be created on the same pool as the
original one.
new_name -- The name of the new volume (optional). If omitted, a new
value based on the original volume's name will be used.
Return:
A Task running the clone operation.
"""
# the same pool will be used if no pool is specified
if new_pool is None:
new_pool = pool
# a default name based on the original name will be used if no name
# is specified
if new_name is None:
base, ext = os.path.splitext(name)
new_name = get_next_clone_name(self.storagevolumes.get_list(pool),
base, ext)
params = {'pool': pool,
'name': name,
'new_pool': new_pool,
'new_name': new_name}
taskid = add_task(u'/plugins/kimchi/storagepools/%s/storagevolumes/%s'
% (pool, new_name), self._clone_task, self.objstore,
params)
return self.task.lookup(taskid)
示例7: create
def create(self, params):
uuid_uuid4 = uuid.uuid4()
if isinstance(uuid_uuid4, unicode):
uuid_uuid4 = uuid_uuid4.encode('utf-8')
archive_id = str(uuid_uuid4)
stamp = int(time.mktime(time.localtime()))
# Though formally we ask front-end to not send "include" at all when
# it's empty, but in implementation we try to be tolerant.
# Front-end can also send [] to indicate the "include" is empty.
include = params.get('include')
exclude = params.get('exclude', [])
if not include:
include = self._default_include
if not exclude:
exclude = self._default_exclude
ar_params = {'identity': archive_id,
'include': include,
'exclude': exclude,
'description': params.get('description', ''),
'checksum': {},
'timestamp': stamp,
'file': ''}
taskid = add_task(u'/backup/create/%s' % (archive_id),
self._create_task, self._objstore, ar_params)
return self.task.lookup(taskid)
示例8: _gen_debugreport_file
def _gen_debugreport_file(self, name):
gen_cmd = self.get_system_report_tool()
if gen_cmd is not None:
return add_task("/plugins/gingerbase/debugreports/%s" % name, gen_cmd, self.objstore, name)
raise OperationFailed("GGBDR0002E")
示例9: _mock_vmsnapshots_create
def _mock_vmsnapshots_create(self, vm_name, params):
name = params.get('name', unicode(int(time.time())))
params = {'vm_name': vm_name, 'name': name}
taskid = add_task(u'/plugins/kimchi/vms/%s/snapshots/%s' %
(vm_name, name), self._vmsnapshots_create_task,
self.objstore, params)
return self.task_lookup(taskid)
示例10: trigger
def trigger(self, name):
"""
Trigger LUN scanning
"""
taskid = add_task('/plugins/gingers390/lunscan/trigger',
utils.trigger_lun_scan, self.objstore, {})
return self.task.lookup(taskid)
示例11: _gen_debugreport_file
def _gen_debugreport_file(self, name):
gen_cmd = self.get_system_report_tool()
if gen_cmd is not None:
return add_task('/plugins/kimchi/debugreports/%s' % name, gen_cmd,
self.objstore, name)
raise OperationFailed("KCHDR0002E")
示例12: lookup
def lookup(self, *name):
try:
swupdate = SoftwareUpdate()
except:
raise OperationFailed('GGBPKGUPD0004E')
taskid = add_task('/plugins/gingerbase/host/swupdateprogress',
swupdate.tailUpdateLogs, self.objstore, None)
return self.task.lookup(taskid)
示例13: format
def format(self, name, fstype):
if utils._is_mntd(name):
raise OperationFailed('GINPART00004E')
task_params = {'name': name, 'fstype': fstype}
taskid = add_task(u'/partitions/%s/fstype%s' % (name, fstype),
self._format_task, self.objstore, task_params)
return self.task.lookup(taskid)
示例14: create
def create(self, pool_name, params):
vol_source = ["url", "capacity"]
name = params.get("name")
index_list = list(i for i in range(len(vol_source)) if vol_source[i] in params)
if len(index_list) != 1:
raise InvalidParameter("KCHVOL0018E", {"param": ",".join(vol_source)})
create_param = vol_source[index_list[0]]
# Verify if the URL is valid
if create_param == "url":
url = params["url"]
try:
urllib2.urlopen(url).close()
except:
raise InvalidParameter("KCHVOL0022E", {"url": url})
all_vol_names = self.get_list(pool_name)
if name is None:
# the methods listed in 'REQUIRE_NAME_PARAMS' cannot have
# 'name' == None
if create_param in REQUIRE_NAME_PARAMS:
raise InvalidParameter("KCHVOL0016E")
# if 'name' is omitted - except for the methods listed in
# 'REQUIRE_NAME_PARAMS' - the default volume name will be the
# file/URL basename.
if create_param == "url":
name = os.path.basename(params["url"])
else:
name = "upload-%s" % int(time.time())
name = get_unique_file_name(all_vol_names, name)
params["name"] = name
try:
create_func = getattr(self, "_create_volume_with_%s" % create_param)
except AttributeError:
raise InvalidParameter("KCHVOL0019E", {"param": create_param})
pool_info = StoragePoolModel(conn=self.conn, objstore=self.objstore).lookup(pool_name)
if pool_info["type"] in READONLY_POOL_TYPE:
raise InvalidParameter("KCHVOL0012E", {"type": pool_info["type"]})
if pool_info["state"] == "inactive":
raise InvalidParameter("KCHVOL0003E", {"pool": pool_name, "volume": name})
if name in all_vol_names:
raise InvalidParameter("KCHVOL0001E", {"name": name})
params["pool"] = pool_name
targeturi = "/plugins/kimchi/storagepools/%s/storagevolumes/%s" % (pool_name, name)
taskid = add_task(targeturi, create_func, self.objstore, params)
return self.task.lookup(taskid)
示例15: create
def create(self, params):
if 'pv_name' not in params:
raise MissingParameter("GINPV00001E")
pvname = params['pv_name']
taskid = add_task(u'/pvs/pv_name/%s' % (pvname),
self._create_task, self.objstore, params)
return self.task.lookup(taskid)