summaryrefslogtreecommitdiffstats
path: root/opensteak/tools/opensteak/virsh.py
diff options
context:
space:
mode:
Diffstat (limited to 'opensteak/tools/opensteak/virsh.py')
-rw-r--r--opensteak/tools/opensteak/virsh.py174
1 files changed, 0 insertions, 174 deletions
diff --git a/opensteak/tools/opensteak/virsh.py b/opensteak/tools/opensteak/virsh.py
deleted file mode 100644
index 594b842..0000000
--- a/opensteak/tools/opensteak/virsh.py
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/python3
-# -*- coding: utf-8 -*-
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-#
-# Authors:
-# @author: David Blaisonneau <david.blaisonneau@orange.com>
-# @author: Arnaud Morin <arnaud1.morin@orange.com>
-
-"""
-Virsh library
-"""
-
-import subprocess
-import os
-
-class OpenSteakVirsh:
-
- virsh = "/usr/bin/virsh"
- genisoimage = "/usr/bin/genisoimage"
- environment = ""
-
- ###
- # INIT
- ###
- def __init__(self):
- self.environment = dict(os.environ) # Copy current environment
- self.environment['LANG'] = 'en_US.UTF-8'
-
-
- ###
- # VOLUMES
- ###
- def volumeList(self, pool="default"):
- """
- Return all volumes from a pool
- """
- p = subprocess.Popen([self.virsh, "-q", "vol-list", pool], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- # Split lines
- lines = stdout.splitlines()
-
- # Foreach line, split with space and construct a dictionnary
- newLines = {}
- for line in lines:
- name, path = line.split(maxsplit=1)
- newLines[name.strip()] = path.strip()
-
- return newLines
-
- def volumeDelete(self, path):
- """
- Delete a volume
- """
- p = subprocess.Popen([self.virsh, "-q", "vol-delete", path], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- def volumeClone(self, origin, name, pool="default"):
- """
- Clone a volume
- """
- p = subprocess.Popen([self.virsh, "-q", "vol-clone", "--pool", pool, origin, name], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- def volumeResize(self, name, size, pool="default"):
- """
- Resize a volume
- """
- p = subprocess.Popen([self.virsh, "-q", "vol-resize", "--pool", pool, name, size], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- ###
- # POOLS
- ###
- def poolRefresh(self, pool="default"):
- """
- Refresh a pool
- """
- p = subprocess.Popen([self.virsh, "-q", "pool-refresh", pool], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- ###
- # DOMAINS
- ###
- def domainList(self):
- """
- Return all domains (VM)
- """
- p = subprocess.Popen([self.virsh, "-q", "list", "--all"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- # Split lines
- lines = stdout.splitlines()
-
- # Foreach line, split with space and construct a dictionnary
- newLines = {}
- for line in lines:
- id, name, status = line.split(maxsplit=2)
- newLines[name.strip()] = status.strip()
-
- return newLines
-
- def domainDefine(self, xml):
- """
- Define a domain (create a VM)
- """
- p = subprocess.Popen([self.virsh, "-q", "define", xml], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- def domainUndefine(self, name):
- """
- Undefine a domain (delete a VM)
- """
- p = subprocess.Popen([self.virsh, "-q", "undefine", name], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- def domainStart(self, name):
- """
- Define a domain (create a VM)
- """
- p = subprocess.Popen([self.virsh, "-q", "start", name], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- def domainDestroy(self, name):
- """
- Destroy a domain (stop a VM)
- """
- p = subprocess.Popen([self.virsh, "-q", "destroy", name], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-
- ###
- # ISO
- ###
- def generateConfiguration(self, name, files):
- """
- Generate an ISO file
- """
-
- commandArray = [self.genisoimage, "-quiet", "-o", "/var/lib/libvirt/images/{0}-configuration.iso".format(name), "-volid", "cidata", "-joliet", "-rock"]
- for k, f in files.items():
- commandArray.append(f)
-
- # Generate the iso file
- p = subprocess.Popen(commandArray, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, env=self.environment)
- stdout, stderr = p.communicate()
-
- return {"stdout":stdout, "stderr":stderr}
-