本文整理汇总了Python中wok.plugins.kimchi.model.storagepools.StoragePoolModel类的典型用法代码示例。如果您正苦于以下问题:Python StoragePoolModel类的具体用法?Python StoragePoolModel怎么用?Python StoragePoolModel使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了StoragePoolModel类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: StorageServersModel
class StorageServersModel(object):
def __init__(self, **kargs):
self.conn = kargs['conn']
self.pool = StoragePoolModel(**kargs)
self.pools = StoragePoolsModel(**kargs)
def get_list(self, _target_type=None):
if not _target_type:
target_type = STORAGE_SERVERS
else:
target_type = [_target_type]
pools = self.pools.get_list()
server_list = []
for pool in pools:
try:
pool_info = self.pool.lookup(pool)
if (pool_info['type'] in target_type and
pool_info['source']['addr'] not in server_list):
# Avoid to add same server for multiple times
# if it hosts more than one storage type
server_list.append(pool_info['source']['addr'])
except NotFoundError:
pass
return server_list
示例2: StorageServerModel
class StorageServerModel(object):
def __init__(self, **kargs):
self.conn = kargs['conn']
self.pool = StoragePoolModel(**kargs)
def lookup(self, server):
conn = self.conn.get()
pools = conn.listStoragePools()
pools += conn.listDefinedStoragePools()
for pool in pools:
try:
pool_info = self.pool.lookup(pool)
if (pool_info['type'] in STORAGE_SERVERS and
pool_info['source']['addr'] == server):
info = dict(host=server)
if (pool_info['type'] == "iscsi" and
'port' in pool_info['source']):
info["port"] = pool_info['source']['port']
return info
except NotFoundError:
# Avoid inconsistent pool result because of lease between list
# lookup
pass
raise NotFoundError("KCHSR0001E", {'server': server})
示例3: _create_volume_with_capacity
def _create_volume_with_capacity(self, cb, params):
pool_name = params.pop('pool')
vol_xml = """
<volume>
<name>%(name)s</name>
<allocation unit='bytes'>%(allocation)s</allocation>
<capacity unit='bytes'>%(capacity)s</capacity>
<source>
</source>
<target>
<format type='%(format)s'/>
</target>
</volume>
"""
allocation = 0
if params['pool_type'] == "logical":
allocation = params['capacity']
params.setdefault('allocation', allocation)
params.setdefault('format', 'qcow2')
name = params['name']
try:
pool = StoragePoolModel.get_storagepool(pool_name, self.conn)
xml = vol_xml % params
except KeyError, item:
raise MissingParameter("KCHVOL0004E", {'item': str(item),
'volume': name})
示例4: get_list
def get_list(self, pool_name):
pool = StoragePoolModel.get_storagepool(pool_name, self.conn)
if not pool.isActive():
raise InvalidOperation("KCHVOL0006E", {'pool': pool_name})
try:
pool.refresh(0)
except Exception, e:
wok_log.error("Pool refresh failed: %s" % str(e))
示例5: get_list
def get_list(self, pool_name):
pool = StoragePoolModel.get_storagepool(pool_name, self.conn)
if not pool.isActive():
raise InvalidOperation('KCHVOL0006E', {'pool': pool_name})
try:
pool.refresh(0)
except Exception as e:
wok_log.error(f'Pool refresh failed: {e}')
return sorted(pool.listVolumes())
示例6: __init__
def __init__(self, **kargs):
self.conn = kargs['conn']
self.objstore = kargs['objstore']
self.task = TaskModel(**kargs)
self.storagevolumes = StorageVolumesModel(**kargs)
self.storagepool = StoragePoolModel(**kargs)
if self.conn.get() is not None:
self.libvirt_user = UserTests().probe_user()
else:
self.libvirt_user = None
示例7: _clone_task
def _clone_task(self, cb, params):
"""Asynchronous function which performs the clone operation.
This function copies all the data inside the original volume into the
new one.
Arguments:
cb -- A callback function to signal the Task's progress.
params -- A dict with the following values:
"pool": The name of the original pool.
"name": The name of the original volume.
"new_pool": The name of the destination pool.
"new_name": The name of the new volume.
"""
orig_pool_name = params['pool']
orig_vol_name = params['name']
new_pool_name = params['new_pool']
new_vol_name = params['new_name']
try:
cb('setting up volume cloning')
orig_vir_vol = StorageVolumeModel.get_storagevolume(
orig_pool_name, orig_vol_name, self.conn
)
orig_vol = self.lookup(orig_pool_name, orig_vol_name)
new_vir_pool = StoragePoolModel.get_storagepool(
new_pool_name, self.conn)
cb('building volume XML')
root_elem = E.volume()
root_elem.append(E.name(new_vol_name))
root_elem.append(E.capacity(
str(orig_vol['capacity']), unit='bytes'))
target_elem = E.target()
target_elem.append(E.format(type=orig_vol['format']))
root_elem.append(target_elem)
new_vol_xml = ET.tostring(
root_elem, encoding='utf-8', pretty_print=True
).decode('utf-8')
cb('cloning volume')
new_vir_pool.createXMLFrom(new_vol_xml, orig_vir_vol, 0)
except (InvalidOperation, NotFoundError, libvirt.libvirtError) as e:
raise OperationFailed(
'KCHVOL0023E',
{
'name': orig_vol_name,
'pool': orig_pool_name,
'err': e.get_error_message(),
},
)
self.lookup(new_pool_name, new_vol_name)
cb('OK', True)
示例8: get_list
def get_list(self, pool_name):
pool = StoragePoolModel.get_storagepool(pool_name, self.conn)
if not pool.isActive():
raise InvalidOperation("KCHVOL0006E", {'pool': pool_name})
try:
pool.refresh(0)
return sorted(map(lambda x: x.decode('utf-8'), pool.listVolumes()))
except libvirt.libvirtError as e:
raise OperationFailed("KCHVOL0008E",
{'pool': pool_name,
'err': e.get_error_message()})
示例9: get_storagevolume
def get_storagevolume(poolname, name, conn):
pool = StoragePoolModel.get_storagepool(poolname, conn)
if not pool.isActive():
raise InvalidOperation("KCHVOL0006E", {"name": pool})
try:
return pool.storageVolLookupByName(name.encode("utf-8"))
except libvirt.libvirtError as e:
if e.get_error_code() == libvirt.VIR_ERR_NO_STORAGE_VOL:
raise NotFoundError("KCHVOL0002E", {"name": name, "pool": poolname})
else:
raise
示例10: get_storagevolume
def get_storagevolume(poolname, name, conn):
pool = StoragePoolModel.get_storagepool(poolname, conn)
if not pool.isActive():
raise InvalidOperation('KCHVOL0006E', {'pool': poolname})
try:
return pool.storageVolLookupByName(name)
except libvirt.libvirtError as e:
if e.get_error_code() == libvirt.VIR_ERR_NO_STORAGE_VOL:
raise NotFoundError(
'KCHVOL0002E', {'name': name, 'pool': poolname})
else:
raise
示例11: _create_volume_with_capacity
def _create_volume_with_capacity(self, cb, params):
pool_name = params.pop('pool')
vol_xml = """
<volume>
<name>%(name)s</name>
<allocation unit='bytes'>%(allocation)s</allocation>
<capacity unit='bytes'>%(capacity)s</capacity>
<source>
</source>
<target>
<format type='%(format)s'/>
</target>
</volume>
"""
allocation = 0
if params['pool_type'] == 'logical':
allocation = params['capacity']
params.setdefault('allocation', allocation)
params.setdefault('format', 'qcow2')
name = params['name']
try:
pool = StoragePoolModel.get_storagepool(pool_name, self.conn)
xml = vol_xml % params
except KeyError as item:
raise MissingParameter(
'KCHVOL0004E', {'item': str(item), 'volume': name})
try:
pool.createXML(xml, 0)
except libvirt.libvirtError as e:
raise OperationFailed(
'KCHVOL0007E',
{'name': name, 'pool': pool_name, 'err': e.get_error_message()},
)
vol_info = StorageVolumeModel(conn=self.conn, objstore=self.objstore).lookup(
pool_name, name
)
vol_path = vol_info['path']
if params.get('upload', False):
upload_volumes[vol_path] = {
'lock': threading.Lock(),
'offset': 0,
'cb': cb,
'expected_vol_size': params['capacity'],
}
cb('ready for upload')
else:
cb('OK', True)
示例12: get_list
def get_list(self):
iso_volumes = []
conn = self.conn.get()
pools = conn.listStoragePools()
pools += conn.listDefinedStoragePools()
for pool_name in pools:
try:
pool = StoragePoolModel.get_storagepool(pool_name, self.conn)
pool.refresh(0)
volumes = pool.listVolumes()
except Exception, e:
# Skip inactive pools
wok_log.debug("Shallow scan: skipping pool %s because of " "error: %s", (pool_name, e.message))
continue
for volume in volumes:
res = self.storagevolume.lookup(pool_name, volume.decode("utf-8"))
if res["format"] == "iso" and res["bootable"]:
res["name"] = "%s" % volume
iso_volumes.append(res)
示例13: _clone_task
def _clone_task(self, cb, params):
"""Asynchronous function which performs the clone operation.
This function copies all the data inside the original volume into the
new one.
Arguments:
cb -- A callback function to signal the Task's progress.
params -- A dict with the following values:
"pool": The name of the original pool.
"name": The name of the original volume.
"new_pool": The name of the destination pool.
"new_name": The name of the new volume.
"""
orig_pool_name = params["pool"]
orig_vol_name = params["name"]
new_pool_name = params["new_pool"]
new_vol_name = params["new_name"]
try:
cb("setting up volume cloning")
orig_vir_vol = StorageVolumeModel.get_storagevolume(orig_pool_name, orig_vol_name, self.conn)
orig_vol = self.lookup(orig_pool_name, orig_vol_name)
new_vir_pool = StoragePoolModel.get_storagepool(new_pool_name, self.conn)
cb("building volume XML")
root_elem = E.volume()
root_elem.append(E.name(new_vol_name))
root_elem.append(E.capacity(unicode(orig_vol["capacity"]), unit="bytes"))
target_elem = E.target()
target_elem.append(E.format(type=orig_vol["format"]))
root_elem.append(target_elem)
new_vol_xml = ET.tostring(root_elem, encoding="utf-8", pretty_print=True)
cb("cloning volume")
new_vir_pool.createXMLFrom(new_vol_xml, orig_vir_vol, 0)
except (InvalidOperation, NotFoundError, libvirt.libvirtError), e:
raise OperationFailed(
"KCHVOL0023E", {"name": orig_vol_name, "pool": orig_pool_name, "err": e.get_error_message()}
)
示例14: _create_volume_with_capacity
def _create_volume_with_capacity(self, cb, params):
pool_name = params.pop("pool")
vol_xml = """
<volume>
<name>%(name)s</name>
<allocation unit='bytes'>%(allocation)s</allocation>
<capacity unit='bytes'>%(capacity)s</capacity>
<source>
</source>
<target>
<format type='%(format)s'/>
</target>
</volume>
"""
params.setdefault("allocation", 0)
params.setdefault("format", "qcow2")
name = params["name"]
try:
pool = StoragePoolModel.get_storagepool(pool_name, self.conn)
xml = vol_xml % params
except KeyError, item:
raise MissingParameter("KCHVOL0004E", {"item": str(item), "volume": name})
示例15: __init__
def __init__(self, **kargs):
self.conn = kargs['conn']
self.objstore = kargs['objstore']
self.task = TaskModel(**kargs)
self.storagevolumes = StorageVolumesModel(**kargs)
self.storagepool = StoragePoolModel(**kargs)