Joey Boggs has uploaded a new change for review. Change subject: move iscsi initiator operations into storage module ......................................................................
move iscsi initiator operations into storage module Signed-off-by: Joey Boggs <[email protected]> Change-Id: I08db8696b44b228feccb797d6ee323f734318462 --- M scripts/ovirt-auto-install.py M src/Makefile.am M src/ovirt/node/config/defaults.py M src/ovirt/node/setup/core/remote_storage_page.py M src/ovirt/node/utils/storage.py M src/ovirtnode/install.py D src/ovirtnode/iscsi.py M src/ovirtnode/storage.py 8 files changed, 59 insertions(+), 73 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/63/23763/1 diff --git a/scripts/ovirt-auto-install.py b/scripts/ovirt-auto-install.py index 1369625..0ff7f58 100755 --- a/scripts/ovirt-auto-install.py +++ b/scripts/ovirt-auto-install.py @@ -129,6 +129,18 @@ logger.warning("Unknown NFSv4 domain: %s" % \ OVIRT_VARS["OVIRT_NFSV4_DOMAIN"]) +class ConfigureiSCSI(Transaction.Element): + title = "Setting iSCSI Initiator Name" + + def commit(self): + try: + model = defaults.iSCSI() + model.update(name=OVIRT_VARS["OVIRT_ISCSI_NAME"]) + tx = model.transaction() + tx() + except: + logger.warning("Unable to set initiator name: %s" % \ + OVIRT_VARS["OVIRT_ISCSI_NAME"]) class ConfigureLogging(Transaction.Element): title = "Configuring Logging" @@ -227,6 +239,8 @@ tx.append(ConfigureKdump()) + tx.append(ConfigureiSCSI()) + if not is_stateless(): tx.append(InstallBootloader()) diff --git a/src/Makefile.am b/src/Makefile.am index 01919ff..9cbf767 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -40,7 +40,6 @@ pyovirtnode_PYTHON = \ ovirtnode/__init__.py \ ovirtnode/install.py \ - ovirtnode/iscsi.py \ ovirtnode/kdump.py \ ovirtnode/log.py \ ovirtnode/network.py \ diff --git a/src/ovirt/node/config/defaults.py b/src/ovirt/node/config/defaults.py index befacfd..bc5f126 100644 --- a/src/ovirt/node/config/defaults.py +++ b/src/ovirt/node/config/defaults.py @@ -1189,7 +1189,7 @@ >>> data[2:] [('target_name', 'iqn.1992-01.com.example:target'), ('target_port', '42')] """ - keys = ("OVIRT_ISCSI_NODE_NAME", + keys = ("OVIRT_ISCSI_NAME", "OVIRT_ISCSI_TARGET_NAME", "OVIRT_ISCSI_TARGET_IP", "OVIRT_ISCSI_TARGET_PORT") @@ -1205,13 +1205,14 @@ def transaction(self): cfg = dict(self.retrieve()) initiator_name = cfg["name"] - class ConfigureIscsiInitiator(utils.Transaction.Element): title = "Setting the iSCSI initiator name" def commit(self): iscsi = utils.storage.iSCSI() - iscsi.initiator_name(initiator_name) + iscsi.set_iscsi_initiator(initiator_name) + fs.Config().persist(iscsi.configfilename) + system.service("iscsid", "restart") tx = utils.Transaction("Configuring the iSCSI Initiator") tx.append(ConfigureIscsiInitiator()) diff --git a/src/ovirt/node/setup/core/remote_storage_page.py b/src/ovirt/node/setup/core/remote_storage_page.py index d68618c..02b3f74 100644 --- a/src/ovirt/node/setup/core/remote_storage_page.py +++ b/src/ovirt/node/setup/core/remote_storage_page.py @@ -42,7 +42,7 @@ ncfg = defaults.NFSv4().retrieve() model = {} model["iscsi.initiator_name"] = icfg["name"] or \ - self.dry_or(lambda: storage.iSCSI().initiator_name()) + self.dry_or(lambda: storage.iSCSI().set_iscsi_initiator()) model["nfsv4.domain"] = ncfg["domain"] return model diff --git a/src/ovirt/node/utils/storage.py b/src/ovirt/node/utils/storage.py index 8958b70..0f272dc 100644 --- a/src/ovirt/node/utils/storage.py +++ b/src/ovirt/node/utils/storage.py @@ -23,19 +23,30 @@ from ovirt.node.utils import process from ovirt.node.utils.fs import File import os +from ovirt.node.utils.system import service class iSCSI(base.Base): """A class to deal with some external iSCSI related functionality """ - def initiator_name(self, initiator_name=None): - try: - import ovirtnode.iscsi as oiscsi - if initiator_name: - oiscsi.set_iscsi_initiator(initiator_name) - return oiscsi.get_current_iscsi_initiator_name() - except ImportError as e: - self.logger.warning("Failed on import: %s" % e) + configfilename = "/etc/iscsi/initiatorname.iscsi" + + def set_iscsi_initiator(self, initiator_name=None): + if not initiator_name: + initiator_name = process.check_output(["/sbin/iscsi-iname"]) + iscsi_config = open(self.configfilename, "w") + iscsi_config.write("InitiatorName=" + initiator_name + "\n") + iscsi_config.close() + self.logger.info("Initiator name set as: " + initiator_name) + service("iscsid", "restart") + + def get_current_iscsi_initiator_name(self): + iscsi_config = open(self.configfilename) + initiator_name = "" + for line in iscsi_config: + if "InitiatorName" in line: + initiator_name = line.replace("InitiatorName=", "") + return initiator_name.strip() class NFSv4(base.Base): diff --git a/src/ovirtnode/install.py b/src/ovirtnode/install.py index 3b51723..d206bef 100755 --- a/src/ovirtnode/install.py +++ b/src/ovirtnode/install.py @@ -19,7 +19,8 @@ import ovirtnode.ovirtfunctions as _functions import ovirt.node.utils.system as _system -import ovirtnode.iscsi as _iscsi +import ovirt.node.utils.process as _process +from ovirt.node.config import defaults import shutil import traceback import os @@ -614,8 +615,20 @@ return False _functions.disable_firstboot() if _functions.finish_install(): - if _functions.is_firstboot(): - _iscsi.iscsi_auto() + iscsi_name = None + if "OVIRT_ISCSI_NAME" in _functions.OVIRT_VARS: + iscsi_name = _functions.OVIRT_VARS["OVIRT_ISCSI_NAME"] + logger.info("Found! Using iscsi_name %s" % iscsi_name) + try: + if not iscsi_name: + iscsi_name = _process.check_output(["/sbin/iscsi-iname"]) + model = defaults.iSCSI() + model.update(name=iscsi_name) + tx = model.transaction() + tx() + except: + logger.warning("Unable to set initiator name: %s" % \ + iscsi_name) logger.info("Installation of %s Completed" % \ _functions.PRODUCT_SHORT) if reboot is not None and reboot == "Y": diff --git a/src/ovirtnode/iscsi.py b/src/ovirtnode/iscsi.py deleted file mode 100755 index 9dbbaf0..0000000 --- a/src/ovirtnode/iscsi.py +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -# -# iscsi.py - Copyright (C) 2011 Red Hat, Inc. -# Written by Joey Boggs <[email protected]> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301, USA. A copy of the GNU General Public License is -# also available at http://www.gnu.org/copyleft/gpl.html. - -import ovirtnode.ovirtfunctions as _functions -import subprocess - -INITIATOR_FILE = "/etc/iscsi/initiatorname.iscsi" - - -def set_iscsi_initiator(initiator_name): - iscsi_config = open(INITIATOR_FILE, "w") - iscsi_config.write("InitiatorName=" + initiator_name + "\n") - iscsi_config.close() - if _functions.ovirt_store_config(INITIATOR_FILE): - _functions.logger.info("Initiator name set as: " + initiator_name) - else: - _functions.logger.warning("Setting initiator name failed") - _functions.system_closefds("service iscsid restart &> /dev/null") - - -def get_current_iscsi_initiator_name(): - iscsi_config = open(INITIATOR_FILE) - initiator_name = "" - for line in iscsi_config: - if "InitiatorName" in line: - initiator_name = line.replace("InitiatorName=", "") - return initiator_name.strip() - - -def iscsi_auto(): - if "OVIRT_ISCSI_NAME" not in _functions.OVIRT_VARS: - _functions.logger.info("Generating iSCSI IQN") - iscsi_iqn_cmd = _functions.subprocess_closefds("/sbin/iscsi-iname", \ - stdout=subprocess.PIPE) - iscsi_iqn, err = iscsi_iqn_cmd.communicate() - set_iscsi_initiator(iscsi_iqn.strip()) - else: - set_iscsi_initiator(_functions.OVIRT_VARS["OVIRT_ISCSI_NAME"]) diff --git a/src/ovirtnode/storage.py b/src/ovirtnode/storage.py index 2e11997..9ec002e 100644 --- a/src/ovirtnode/storage.py +++ b/src/ovirtnode/storage.py @@ -26,7 +26,7 @@ import logging import subprocess import shlex -from ovirtnode.iscsi import set_iscsi_initiator +from ovirt.node.config import defaults logger = logging.getLogger(__name__) @@ -771,7 +771,10 @@ if _functions.is_iscsi_install(): if "OVIRT_ISCSI_NAME" in _functions.OVIRT_VARS: iscsi_name = _functions.OVIRT_VARS["OVIRT_ISCSI_NAME"] - set_iscsi_initiator(iscsi_name) + model = defaults.iSCSI() + model.update(name=iscsi_name) + tx = model.transaction() + tx() # login to target and setup disk get_targets = ("iscsiadm -m discovery -p %s:%s -t sendtargets" % (_functions.OVIRT_VARS["OVIRT_ISCSI_TARGET_HOST"], -- To view, visit http://gerrit.ovirt.org/23763 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I08db8696b44b228feccb797d6ee323f734318462 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-node Gerrit-Branch: master Gerrit-Owner: Joey Boggs <[email protected]> _______________________________________________ node-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/node-patches
