395 lines
14 KiB
Diff
395 lines
14 KiB
Diff
|
From f565382b5291409ac1ab4a96494c566cd9a4dfd4 Mon Sep 17 00:00:00 2001
|
||
|
From: Jan Dobes <jdobes@redhat.com>
|
||
|
Date: Wed, 18 Oct 2017 13:18:24 +0200
|
||
|
Subject: [PATCH 15/17] relative imports don't work on both Python 2 and 3
|
||
|
|
||
|
(cherry picked from commit a2339d3a544c0cfbec6cfc5437942a79abe4bd30)
|
||
|
|
||
|
Conflicts:
|
||
|
koan/app.py
|
||
|
koan/utils.py
|
||
|
koan/virtinstall.py
|
||
|
---
|
||
|
koan/app.py | 34 +++++++++-------------------------
|
||
|
koan/imagecreate.py | 7 ++++---
|
||
|
koan/qcreate.py | 11 ++++++-----
|
||
|
koan/register.py | 6 +++---
|
||
|
koan/utils.py | 6 ++++--
|
||
|
koan/virtinstall.py | 27 ++++++++++++++-------------
|
||
|
koan/vmwcreate.py | 4 ++--
|
||
|
koan/xencreate.py | 7 ++++---
|
||
|
scripts/cobbler-register | 2 +-
|
||
|
scripts/koan | 2 +-
|
||
|
10 files changed, 48 insertions(+), 58 deletions(-)
|
||
|
|
||
|
diff --git a/koan/app.py b/koan/app.py
|
||
|
index 4ae4c90..f5af5e9 100755
|
||
|
--- a/koan/app.py
|
||
|
+++ b/koan/app.py
|
||
|
@@ -41,7 +41,7 @@ try: #python2
|
||
|
except ImportError: #python3
|
||
|
import xmlrpc.client as xmlrpclib
|
||
|
import re
|
||
|
-from . import utils
|
||
|
+from koan import utils
|
||
|
|
||
|
COBBLER_REQUIRED = 1.300
|
||
|
|
||
|
@@ -228,22 +228,6 @@ def main():
|
||
|
#=======================================================
|
||
|
|
||
|
|
||
|
-class KoanException(Exception):
|
||
|
-
|
||
|
- def __init__(self, value, *args):
|
||
|
- self.value = value % args
|
||
|
- # this is a hack to work around some odd exception handling
|
||
|
- # in older pythons
|
||
|
- self.from_koan = 1
|
||
|
-
|
||
|
- def __str__(self):
|
||
|
- return repr(self.value)
|
||
|
-
|
||
|
-
|
||
|
-class KX(KoanException):
|
||
|
- pass
|
||
|
-
|
||
|
-
|
||
|
class InfoException(Exception):
|
||
|
"""
|
||
|
Custom exception for tracking of fatal errors.
|
||
|
@@ -1145,9 +1129,9 @@ class Koan:
|
||
|
"""
|
||
|
pd = profile_data
|
||
|
# importing can't throw exceptions any more, don't put it in a sub-method
|
||
|
- from . import xencreate
|
||
|
- from . import qcreate
|
||
|
- from . import imagecreate
|
||
|
+ from koan import xencreate
|
||
|
+ from koan import qcreate
|
||
|
+ from koan import imagecreate
|
||
|
|
||
|
arch = self.safe_load(pd,'arch','x86')
|
||
|
kextra = self.calc_kernel_args(pd)
|
||
|
@@ -1232,11 +1216,11 @@ class Koan:
|
||
|
if (self.image is not None) and (pd["image_type"] == "virt-clone"):
|
||
|
fullvirt = True
|
||
|
uuid = None
|
||
|
- from . import imagecreate
|
||
|
+ from koan import imagecreate
|
||
|
creator = imagecreate.start_install
|
||
|
elif self.virt_type in [ "xenpv", "xenfv" ]:
|
||
|
uuid = self.get_uuid(self.calc_virt_uuid(pd))
|
||
|
- from . import xencreate
|
||
|
+ from koan import xencreate
|
||
|
creator = xencreate.start_install
|
||
|
if self.virt_type == "xenfv":
|
||
|
fullvirt = True
|
||
|
@@ -1244,15 +1228,15 @@ class Koan:
|
||
|
elif self.virt_type == "qemu":
|
||
|
fullvirt = True
|
||
|
uuid = None
|
||
|
- from . import qcreate
|
||
|
+ from koan import qcreate
|
||
|
creator = qcreate.start_install
|
||
|
can_poll = "qemu"
|
||
|
elif self.virt_type == "vmware":
|
||
|
- from . import vmwcreate
|
||
|
+ from koan import vmwcreate
|
||
|
uuid = None
|
||
|
creator = vmwcreate.start_install
|
||
|
elif self.virt_type == "vmwarew":
|
||
|
- from . import vmwwcreate
|
||
|
+ from koan import vmwwcreate
|
||
|
uuid = None
|
||
|
creator = vmwwcreate.start_install
|
||
|
else:
|
||
|
diff --git a/koan/imagecreate.py b/koan/imagecreate.py
|
||
|
index d70d519..9b98f74 100644
|
||
|
--- a/koan/imagecreate.py
|
||
|
+++ b/koan/imagecreate.py
|
||
|
@@ -23,9 +23,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||
|
02110-1301 USA
|
||
|
"""
|
||
|
|
||
|
-from . import utils
|
||
|
-from . import virtinstall
|
||
|
+from koan.utils import subprocess_call
|
||
|
+from koan import virtinstall
|
||
|
+
|
||
|
|
||
|
def start_install(*args, **kwargs):
|
||
|
cmd = virtinstall.build_commandline("import", *args, **kwargs)
|
||
|
- utils.subprocess_call(cmd)
|
||
|
+ subprocess_call(cmd)
|
||
|
diff --git a/koan/qcreate.py b/koan/qcreate.py
|
||
|
index d0bafae..73b6abb 100755
|
||
|
--- a/koan/qcreate.py
|
||
|
+++ b/koan/qcreate.py
|
||
|
@@ -23,10 +23,11 @@ module for creating fullvirt guests via KVM/kqemu/qemu
|
||
|
requires python-virtinst-0.200 (or virt-install in later distros).
|
||
|
"""
|
||
|
|
||
|
-from . import utils
|
||
|
-from . import virtinstall
|
||
|
from xml.dom.minidom import parseString
|
||
|
-from . import app as koan
|
||
|
+from koan.utils import subprocess_call
|
||
|
+from koan import virtinstall
|
||
|
+from koan import app
|
||
|
+
|
||
|
|
||
|
def start_install(*args, **kwargs):
|
||
|
# See http://post-office.corp.redhat.com/archives/satellite-dept-list/2013-December/msg00039.html for discussion on this hack.
|
||
|
@@ -37,7 +38,7 @@ def start_install(*args, **kwargs):
|
||
|
try:
|
||
|
import libvirt
|
||
|
except:
|
||
|
- raise koan.InfoException("package libvirt is required for installing virtual guests")
|
||
|
+ raise app.InfoException("package libvirt is required for installing virtual guests")
|
||
|
conn = libvirt.openReadOnly(None)
|
||
|
# See http://libvirt.org/formatcaps.html
|
||
|
capabilities = parseString(conn.getCapabilities())
|
||
|
@@ -49,4 +50,4 @@ def start_install(*args, **kwargs):
|
||
|
|
||
|
virtinstall.create_image_file(*args, **kwargs)
|
||
|
cmd = virtinstall.build_commandline("qemu:///system", *args, **kwargs)
|
||
|
- utils.subprocess_call(cmd)
|
||
|
+ subprocess_call(cmd)
|
||
|
diff --git a/koan/register.py b/koan/register.py
|
||
|
index a69f2d1..8ce7db3 100755
|
||
|
--- a/koan/register.py
|
||
|
+++ b/koan/register.py
|
||
|
@@ -30,7 +30,7 @@ try: #python2
|
||
|
except ImportError: #python3
|
||
|
import xmlrpc.client as xmlrpclib
|
||
|
import socket
|
||
|
-from . import utils
|
||
|
+from koan.utils import connect_to_server, get_network_info
|
||
|
|
||
|
# usage: cobbler-register [--server=server] [--hostname=hostname] --profile=foo
|
||
|
|
||
|
@@ -127,10 +127,10 @@ class Register:
|
||
|
raise InfoException("root access is required to register")
|
||
|
|
||
|
print("- preparing to koan home")
|
||
|
- self.conn = utils.connect_to_server(self.server, self.port)
|
||
|
+ self.conn = connect_to_server(self.server, self.port)
|
||
|
reg_info = {}
|
||
|
print("- gathering network info")
|
||
|
- netinfo = utils.get_network_info()
|
||
|
+ netinfo = get_network_info()
|
||
|
reg_info["interfaces"] = netinfo
|
||
|
print("- checking hostname")
|
||
|
sysname = ""
|
||
|
diff --git a/koan/utils.py b/koan/utils.py
|
||
|
index 12ec718..607db1f 100644
|
||
|
--- a/koan/utils.py
|
||
|
+++ b/koan/utils.py
|
||
|
@@ -44,6 +44,7 @@ VIRT_STATE_NAME_MAP = {
|
||
|
6 : "crashed"
|
||
|
}
|
||
|
|
||
|
+
|
||
|
class InfoException(Exception):
|
||
|
"""
|
||
|
Custom exception for tracking of fatal errors.
|
||
|
@@ -54,6 +55,7 @@ class InfoException(Exception):
|
||
|
def __str__(self):
|
||
|
return repr(self.value)
|
||
|
|
||
|
+
|
||
|
def setupLogging(appname):
|
||
|
"""
|
||
|
set up logging ... code borrowed/adapted from virt-manager
|
||
|
@@ -253,7 +255,7 @@ def nfsmount(input_path):
|
||
|
rc = sub_process.call(mount_cmd)
|
||
|
if not rc == 0:
|
||
|
shutil.rmtree(tempdir, ignore_errors=True)
|
||
|
- raise koan.InfoException("nfs mount failed: %s" % dirpath)
|
||
|
+ raise InfoException("nfs mount failed: %s" % dirpath)
|
||
|
# NOTE: option for a blocking install might be nice, so we could do this
|
||
|
# automatically, if supported by virt-install
|
||
|
print("after install completes, you may unmount and delete %s" % tempdir)
|
||
|
@@ -333,7 +335,7 @@ def os_release():
|
||
|
return (make,float(t))
|
||
|
except ValueError:
|
||
|
pass
|
||
|
- raise koan.KX("failed to detect local OS version from /etc/redhat-release")
|
||
|
+ raise InfoException("failed to detect local OS version from /etc/redhat-release")
|
||
|
|
||
|
elif check_dist() == "debian":
|
||
|
fd = open("/etc/debian_version")
|
||
|
diff --git a/koan/virtinstall.py b/koan/virtinstall.py
|
||
|
index 5359b2a..ce6c425 100644
|
||
|
--- a/koan/virtinstall.py
|
||
|
+++ b/koan/virtinstall.py
|
||
|
@@ -30,15 +30,15 @@ import os
|
||
|
import re
|
||
|
import shlex
|
||
|
|
||
|
-from . import app as koan
|
||
|
-from . import utils
|
||
|
+from koan import app
|
||
|
+from koan.utils import subprocess_get_response, nfsmount, make_floppy
|
||
|
|
||
|
# The virtinst module will no longer be availabe to import in some
|
||
|
# distros. We need to get all the info we need from the virt-install
|
||
|
# command line tool. This should work on both old and new variants,
|
||
|
# as the virt-install command line tool has always been provided by
|
||
|
# python-virtinst (and now the new virt-install rpm).
|
||
|
-rc, response = utils.subprocess_get_response(
|
||
|
+rc, response = subprocess_get_response(
|
||
|
shlex.split('virt-install --version'), True)
|
||
|
if rc == 0:
|
||
|
virtinst_version = response
|
||
|
@@ -63,7 +63,7 @@ try:
|
||
|
supported_variants.add(variant)
|
||
|
except:
|
||
|
try:
|
||
|
- rc, response = utils.subprocess_get_response(
|
||
|
+ rc, response = subprocess_get_response(
|
||
|
shlex.split('virt-install --os-variant list'))
|
||
|
variants = response.split('\n')
|
||
|
for variant in variants:
|
||
|
@@ -90,7 +90,7 @@ def _sanitize_disks(disks):
|
||
|
if d[1] != 0 or d[0].startswith("/dev"):
|
||
|
ret.append((d[0], d[1], driver_type))
|
||
|
else:
|
||
|
- raise koan.InfoException("this virtualization type does not work without a disk image, set virt-size in Cobbler to non-zero")
|
||
|
+ raise app.InfoException("this virtualization type does not work without a disk image, set virt-size in Cobbler to non-zero")
|
||
|
|
||
|
return ret
|
||
|
|
||
|
@@ -128,7 +128,7 @@ def _sanitize_nics(nics, bridge, profile_bridge, network_count):
|
||
|
intf_bridge = intf["virt_bridge"]
|
||
|
if intf_bridge == "":
|
||
|
if profile_bridge == "":
|
||
|
- raise koan.InfoException("virt-bridge setting is not defined in cobbler")
|
||
|
+ raise app.InfoException("virt-bridge setting is not defined in cobbler")
|
||
|
intf_bridge = profile_bridge
|
||
|
|
||
|
else:
|
||
|
@@ -151,7 +151,8 @@ def create_image_file(disks=None, **kwargs):
|
||
|
continue
|
||
|
if str(size) == "0":
|
||
|
continue
|
||
|
- utils.create_qemu_image_file(path, size, driver_type)
|
||
|
+ # This method doesn't exist and this functionality is probably broken
|
||
|
+ # create_qemu_image_file(path, size, driver_type)
|
||
|
|
||
|
def build_commandline(uri,
|
||
|
name=None,
|
||
|
@@ -230,12 +231,12 @@ def build_commandline(uri,
|
||
|
if is_import:
|
||
|
importpath = profile_data.get("file")
|
||
|
if not importpath:
|
||
|
- raise koan.InfoException("Profile 'file' required for image "
|
||
|
+ raise app.InfoException("Profile 'file' required for image "
|
||
|
"install")
|
||
|
|
||
|
elif "file" in profile_data:
|
||
|
if is_xen:
|
||
|
- raise koan.InfoException("Xen does not work with --image yet")
|
||
|
+ raise app.InfoException("Xen does not work with --image yet")
|
||
|
|
||
|
# this is an image based installation
|
||
|
input_path = profile_data["file"]
|
||
|
@@ -244,7 +245,7 @@ def build_commandline(uri,
|
||
|
# this is not an NFS path
|
||
|
cdrom = input_path
|
||
|
else:
|
||
|
- (tempdir, filename) = utils.nfsmount(input_path)
|
||
|
+ (tempdir, filename) = nfsmount(input_path)
|
||
|
cdrom = os.path.join(tempdir, filename)
|
||
|
|
||
|
kickstart = profile_data.get("kickstart","")
|
||
|
@@ -252,11 +253,11 @@ def build_commandline(uri,
|
||
|
# we have a (windows?) answer file we have to provide
|
||
|
# to the ISO.
|
||
|
print("I want to make a floppy for %s" % kickstart)
|
||
|
- floppy = utils.make_floppy(kickstart)
|
||
|
+ floppy = make_floppy(kickstart)
|
||
|
elif is_qemu or is_xen:
|
||
|
# images don't need to source this
|
||
|
if not "install_tree" in profile_data:
|
||
|
- raise koan.InfoException("Cannot find install source in kickstart file, aborting.")
|
||
|
+ raise app.InfoException("Cannot find install source in kickstart file, aborting.")
|
||
|
|
||
|
if not profile_data["install_tree"].endswith("/"):
|
||
|
profile_data["install_tree"] = profile_data["install_tree"] + "/"
|
||
|
@@ -277,7 +278,7 @@ def build_commandline(uri,
|
||
|
bridge = profile_data["virt_bridge"]
|
||
|
|
||
|
if bridge == "":
|
||
|
- raise koan.InfoException("virt-bridge setting is not defined in cobbler")
|
||
|
+ raise app.InfoException("virt-bridge setting is not defined in cobbler")
|
||
|
nics = [(bridge, None)]
|
||
|
|
||
|
|
||
|
diff --git a/koan/vmwcreate.py b/koan/vmwcreate.py
|
||
|
index 33c5819..1b90a27 100755
|
||
|
--- a/koan/vmwcreate.py
|
||
|
+++ b/koan/vmwcreate.py
|
||
|
@@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||
|
import os
|
||
|
import random
|
||
|
|
||
|
-from . import app as koan
|
||
|
+from koan import app
|
||
|
|
||
|
IMAGE_DIR = "/var/lib/vmware/images"
|
||
|
VMX_DIR = "/var/lib/vmware/vmx"
|
||
|
@@ -127,7 +127,7 @@ def start_install(name=None,
|
||
|
virt_auto_boot=False):
|
||
|
|
||
|
if "file" in profile_data:
|
||
|
- raise koan.InfoException("vmware does not work with --image yet")
|
||
|
+ raise app.InfoException("vmware does not work with --image yet")
|
||
|
|
||
|
mac = None
|
||
|
if not "interfaces" in profile_data:
|
||
|
diff --git a/koan/xencreate.py b/koan/xencreate.py
|
||
|
index 7eda3e6..18b2969 100755
|
||
|
--- a/koan/xencreate.py
|
||
|
+++ b/koan/xencreate.py
|
||
|
@@ -26,9 +26,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||
|
02110-1301 USA
|
||
|
"""
|
||
|
|
||
|
-from . import utils
|
||
|
-from . import virtinstall
|
||
|
+from koan.utils import subprocess_call
|
||
|
+from koan import virtinstall
|
||
|
+
|
||
|
|
||
|
def start_install(*args, **kwargs):
|
||
|
cmd = virtinstall.build_commandline("xen:///", *args, **kwargs)
|
||
|
- utils.subprocess_call(cmd)
|
||
|
+ subprocess_call(cmd)
|
||
|
diff --git a/scripts/cobbler-register b/scripts/cobbler-register
|
||
|
index ed97cfc..3f2ffb1 100755
|
||
|
--- a/scripts/cobbler-register
|
||
|
+++ b/scripts/cobbler-register
|
||
|
@@ -15,5 +15,5 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
|
"""
|
||
|
|
||
|
import sys
|
||
|
-import koan.register as register
|
||
|
+from koan import register
|
||
|
sys.exit(register.main() or 0)
|
||
|
diff --git a/scripts/koan b/scripts/koan
|
||
|
index aeccb0e..9c3f445 100755
|
||
|
--- a/scripts/koan
|
||
|
+++ b/scripts/koan
|
||
|
@@ -15,5 +15,5 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
|
"""
|
||
|
|
||
|
import sys
|
||
|
-import koan.app as app
|
||
|
+from koan import app
|
||
|
sys.exit(app.main() or 0)
|
||
|
--
|
||
|
2.5.5
|
||
|
|