本文整理汇总了Python中mcvirt.system.System.runCommand方法的典型用法代码示例。如果您正苦于以下问题:Python System.runCommand方法的具体用法?Python System.runCommand怎么用?Python System.runCommand使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mcvirt.system.System
的用法示例。
在下文中一共展示了System.runCommand方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: createBackupSnapshot
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def createBackupSnapshot(self):
"""Creates a snapshot of the logical volume for backing up and locks the VM"""
self._ensure_exists()
# Ensure the user has permission to delete snapshot backups
self._get_registered_object('auth').assert_permission(
PERMISSIONS.BACKUP_VM,
self.vm_object
)
# Ensure VM is registered locally
self.vm_object.ensureRegisteredLocally()
# Obtain logical volume names/paths
backup_volume_path = self._getLogicalVolumePath(
self._getBackupLogicalVolume())
snapshot_logical_volume = self._getBackupSnapshotLogicalVolume()
# Determine if logical volume already exists
if self._checkLogicalVolumeActive(snapshot_logical_volume):
raise BackupSnapshotAlreadyExistsException(
'The backup snapshot for \'%s\' already exists: %s' %
(backup_volume_path, snapshot_logical_volume)
)
# Lock the VM
self.vm_object._setLockState(LockStates.LOCKED)
try:
System.runCommand(['lvcreate', '--snapshot', backup_volume_path,
'--name', self._getBackupSnapshotLogicalVolume(),
'--size', self.SNAPSHOT_SIZE])
return self._getLogicalVolumePath(snapshot_logical_volume)
except:
self.vm_object._setLockState(LockStates.UNLOCKED)
raise
示例2: _removeLogicalVolume
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def _removeLogicalVolume(self, name, ignore_non_existent=False,
perform_on_nodes=False):
"""Removes a logical volume from the node/cluster"""
# Create command arguments
command_args = ['lvremove', '-f', self._getLogicalVolumePath(name)]
try:
# Determine if logical volume exists before attempting to remove it
if (not (ignore_non_existent and
not self._checkLogicalVolumeExists(name))):
System.runCommand(command_args)
if perform_on_nodes and self._is_cluster_master:
def remoteCommand(node):
remote_disk = self.get_remote_object(remote_node=node, registered=False)
remote_disk.removeLogicalVolume(
name=name, ignore_non_existent=ignore_non_existent
)
cluster = self._get_registered_object('cluster')
cluster.run_remote_command(callback_method=remoteCommand,
nodes=self.vm_object._get_remote_nodes())
except MCVirtCommandException, e:
raise ExternalStorageCommandErrorException(
"Error whilst removing disk logical volume:\n" + str(e)
)
示例3: _zeroLogicalVolume
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def _zeroLogicalVolume(self, name, size, perform_on_nodes=False):
"""Blanks a logical volume by filling it with null data"""
# Obtain the path of the logical volume
lv_path = self._getLogicalVolumePath(name)
# Create command arguments
command_args = ['dd', 'if=/dev/zero', 'of=%s' % lv_path, 'bs=1M', 'count=%s' % size,
'conv=fsync', 'oflag=direct']
try:
# Create logical volume on local node
System.runCommand(command_args)
if perform_on_nodes and self._is_cluster_master:
def remoteCommand(node):
remote_disk = self.get_remote_object(remote_node=node, registered=False)
remote_disk.zeroLogicalVolume(name=name, size=size)
cluster = self._get_registered_object('cluster')
cluster.run_remote_command(callback_method=remoteCommand,
nodes=self.vm_object._get_remote_nodes())
except MCVirtCommandException, e:
raise ExternalStorageCommandErrorException(
"Error whilst zeroing logical volume:\n" + str(e)
)
示例4: resize
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def resize(self, size, increase=True, _f=None):
"""Reszie volume"""
self._get_registered_object('auth').assert_user_type('ClusterUser',
allow_indirect=True)
# Ensure volume exists
self.ensure_exists()
# Get size of current disk, to be able to roll back to current size
_f.add_undo_argument(original_size=self.get_size())
# If increasing disk size, prepend with plus (+)
if increase:
size = '+%s' % size
# Compile arguments for resize
command_args = ['/sbin/lvresize', '--size', '%sB' % size,
self.get_path()]
try:
# Create on local node
System.runCommand(command_args)
except MCVirtCommandException, exc:
raise ExternalStorageCommandErrorException(
"Error whilst resizing disk:\n" + str(exc)
)
示例5: increaseSize
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def increaseSize(self, increase_size):
"""Increases the size of a VM hard drive, given the size to increase the drive by"""
self._get_registered_object('auth').assert_permission(
PERMISSIONS.MODIFY_VM, self.vm_object
)
# Ensure disk exists
self._ensure_exists()
# Ensure VM is stopped
from mcvirt.virtual_machine.virtual_machine import PowerStates
if (self.vm_object._getPowerState() is not PowerStates.STOPPED):
raise VmAlreadyStartedException('VM must be stopped before increasing disk size')
# Ensure that VM has not been cloned and is not a clone
if (self.vm_object.getCloneParent() or self.vm_object.getCloneChildren()):
raise VmIsCloneException('Cannot increase the disk of a cloned VM or a clone.')
command_args = ('lvextend', '-L', '+%sM' % increase_size,
self._getDiskPath())
try:
System.runCommand(command_args)
except MCVirtCommandException, e:
raise ExternalStorageCommandErrorException(
"Error whilst extending logical volume:\n" + str(e)
)
示例6: _drbdOverwritePeer
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def _drbdOverwritePeer(self):
"""Force Drbd to overwrite the data on the peer"""
System.runCommand([NodeDrbd.DrbdADM,
'--',
'--overwrite-data-of-peer',
'primary',
self.resource_name])
示例7: _drbdSetPrimary
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def _drbdSetPrimary(self, allow_two_primaries=False):
"""Performs a Drbd 'primary' on the hard drive Drbd resource"""
local_role_state, remote_role_state = self._drbdGetRole()
# Check Drbd status
self._checkDrbdStatus()
# Ensure that role states are not unknown
if (local_role_state is DrbdRoleState.UNKNOWN or
(remote_role_state is DrbdRoleState.UNKNOWN and
not self._ignore_drbd)):
raise DrbdStateException('Drbd role is unknown for resource %s' %
self.resource_name)
# Ensure remote role is secondary
if (not allow_two_primaries and
remote_role_state is not DrbdRoleState.SECONDARY and
not (DrbdRoleState.UNKNOWN and
self._ignore_drbd)):
raise DrbdStateException(
'Cannot make local Drbd primary if remote Drbd is not secondary: %s' %
self.resource_name)
# Set Drbd resource to primary
System.runCommand([NodeDrbd.DrbdADM, 'primary', self.resource_name])
示例8: _createLogicalVolume
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def _createLogicalVolume(self, name, size, perform_on_nodes=False):
"""Creates a logical volume on the node/cluster"""
volume_group = self._getVolumeGroup()
# Create command list
command_args = ['/sbin/lvcreate', volume_group, '--name', name, '--size', '%sM' % size]
try:
# Create on local node
System.runCommand(command_args)
if perform_on_nodes and self._is_cluster_master:
def remoteCommand(node):
remote_disk = self.get_remote_object(remote_node=node, registered=False)
remote_disk.createLogicalVolume(name=name, size=size)
cluster = self._get_registered_object('cluster')
cluster.run_remote_command(callback_method=remoteCommand,
nodes=self.vm_object._get_remote_nodes())
except MCVirtCommandException, e:
# Remove any logical volumes that had been created if one of them fails
self._removeLogicalVolume(
name,
ignore_non_existent=True,
perform_on_nodes=perform_on_nodes)
raise ExternalStorageCommandErrorException(
"Error whilst creating disk logical volume:\n" + str(e)
)
示例9: client_key_file
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def client_key_file(self):
"""Obtain the private key for the client key"""
path = self._get_certificate_path('clientkey.pem')
if not self._ensure_exists(path, assert_raise=False):
System.runCommand([self.OPENSSL, 'genrsa', '-out', path, '2048'])
return path
示例10: _drbdDown
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def _drbdDown(self):
"""Performs a Drbd 'down' on the hard drive Drbd resource"""
try:
System.runCommand([NodeDrbd.DrbdADM, 'down', self.resource_name])
except MCVirtCommandException:
# If the Drbd down fails, attempt to wait 5 seconds and try again
time.sleep(5)
System.runCommand([NodeDrbd.DrbdADM, 'down', self.resource_name])
示例11: ca_key_file
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def ca_key_file(self):
"""Return/generate the CA prviate key."""
if not self.is_local:
raise CACertificateNotFoundException('CA key file not available for remote node')
path = self._get_certificate_path('capriv.pem')
if not self._ensure_exists(path, assert_raise=False):
System.runCommand([self.OPENSSL, 'genrsa', '-out', path, '4096'])
return path
示例12: server_key_file
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def server_key_file(self):
"""Obtain the server private key file"""
if not self.is_local:
raise CACertificateNotFoundException('Server key file not available for remote node')
path = self._get_certificate_path('serverkey.pem')
if not self._ensure_exists(path, assert_raise=False):
# Generate new SSL private key
System.runCommand([self.OPENSSL, 'genrsa', '-out', path, '2048'])
return path
示例13: _drbdSetSecondary
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def _drbdSetSecondary(self):
"""Performs a Drbd 'secondary' on the hard drive Drbd resource"""
# Attempt to set the disk as secondary
set_secondary_command = [NodeDrbd.DrbdADM, 'secondary',
self.resource_name]
try:
System.runCommand(set_secondary_command)
except MCVirtCommandException:
# If this fails, wait for 5 seconds, and attempt once more
time.sleep(5)
System.runCommand(set_secondary_command)
示例14: snapshot
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def snapshot(self, destination_volume, size):
"""Snapshot volume"""
# Ensure volume exists
self.ensure_exists()
try:
System.runCommand(['lvcreate', '--snapshot', self.get_path(),
'--name', destination_volume.name,
'--size', str(size)])
except MCVirtCommandException, exc:
raise ExternalStorageCommandErrorException(
"Error whilst snapshotting disk:\n" + str(exc)
)
示例15: dh_params_file
# 需要导入模块: from mcvirt.system import System [as 别名]
# 或者: from mcvirt.system.System import runCommand [as 别名]
def dh_params_file(self):
"""Return the path to the DH parameters file, and create it if it does not exist"""
if not self.is_local:
raise CACertificateNotFoundException('DH params file not available for remote node')
path = self._get_certificate_path('dh_params')
if not self._ensure_exists(path, assert_raise=False):
# Generate new DH parameters
Syslogger.logger().info('Generating DH parameters file')
System.runCommand([self.OPENSSL, 'dhparam', '-out', path, '2048'])
Syslogger.logger().info('DH parameters file generated')
return path