mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 17:22:49 +01:00
add libs
This commit is contained in:
60
salt/hypervisor/tools/sbin/so_vm_utils.py
Normal file
60
salt/hypervisor/tools/sbin/so_vm_utils.py
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
|
||||
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
|
||||
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||
# Elastic License 2.0.
|
||||
|
||||
import sys
|
||||
import time
|
||||
import libvirt
|
||||
import logging
|
||||
|
||||
def stop_vm(conn, vm_name, logger):
|
||||
"""
|
||||
Stops the specified virtual machine if it is running.
|
||||
|
||||
Parameters:
|
||||
conn (libvirt.virConnect): The libvirt connection object.
|
||||
vm_name (str): The name of the virtual machine.
|
||||
logger (logging.Logger): The logger object.
|
||||
|
||||
Returns:
|
||||
libvirt.virDomain: The domain object of the VM.
|
||||
|
||||
Raises:
|
||||
SystemExit: If the VM cannot be found or an error occurs.
|
||||
"""
|
||||
try:
|
||||
dom = conn.lookupByName(vm_name)
|
||||
if dom.isActive():
|
||||
logger.info(f"Shutting down VM '{vm_name}'...")
|
||||
dom.shutdown()
|
||||
# Wait for the VM to shut down
|
||||
while dom.isActive():
|
||||
time.sleep(1)
|
||||
logger.info(f"VM '{vm_name}' has been stopped.")
|
||||
else:
|
||||
logger.info(f"VM '{vm_name}' is already stopped.")
|
||||
return dom
|
||||
except libvirt.libvirtError as e:
|
||||
logger.error(f"Failed to stop VM '{vm_name}': {e}")
|
||||
sys.exit(1)
|
||||
|
||||
def start_vm(dom, logger):
|
||||
"""
|
||||
Starts the specified virtual machine.
|
||||
|
||||
Parameters:
|
||||
dom (libvirt.virDomain): The domain object of the VM.
|
||||
logger (logging.Logger): The logger object.
|
||||
|
||||
Raises:
|
||||
SystemExit: If the VM cannot be started.
|
||||
"""
|
||||
try:
|
||||
dom.create()
|
||||
logger.info(f"VM '{dom.name()}' started successfully.")
|
||||
except libvirt.libvirtError as e:
|
||||
logger.error(f"Failed to start VM '{dom.name()}': {e}")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user