FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo Documentation

 
 
LinkBack Thread Tools
 
Old 06-01-2010, 09:10 AM
Hans de Goede
 
Default Set NM_CONTROLLED=no iscsi for storage devices only on system (#598070)

Hi Radek,

Looks good, but we still want to set NM_CONTROLLED=no before invoking
nm-c-e for FCoE devices, iow for devices where there is a storage device
storageDev for which the following is true:

isinstance(storageDev, storage.devices.NetworkStorageDevice) and
storageDev.nic == self.iface

As we don't want NM / nm-c-e touching those (this should not cause
NM to bring them down like with interfaces used for IP traffic, as
NM is not controlling them to begin with).

Regards,

Hans



On 06/01/2010 10:46 AM, Radek Vykydal wrote:

Not in anaconda environment - that can bring down device used
to get packages.
---
instdata.py | 4 +++-
network.py | 40 ++++++++++++++++++++++++++--------------
yuminstall.py | 2 +-
3 files changed, 30 insertions(+), 16 deletions(-)

diff --git a/instdata.py b/instdata.py
index c23cec9..aefad18 100644
--- a/instdata.py
+++ b/instdata.py
@@ -149,8 +149,10 @@ class InstallData:
except RuntimeError, msg:
log.error("Error running %s: %s", args, msg)

- self.network.write(anaconda=self.anaconda)
+ self.network.write()
self.network.copyConfigToPath(instPath=self.anacon da.rootPath)
+ self.network.disableNMForStorageDevices(self.anaco nda,
+ instPath=self.anaconda.rootPath)
self.firewall.write (self.anaconda.rootPath)
self.security.write (self.anaconda.rootPath)
self.desktop.write(self.anaconda.rootPath)
diff --git a/network.py b/network.py
index 8b0d109..02f1ff2 100644
--- a/network.py
+++ b/network.py
@@ -307,6 +307,17 @@ class NetworkDevice(IfcfgFile):
lf.close()
f.close()

+ def isStorageDevice(self, anaconda):
+ import storage
+ rootdev = anaconda.id.storage.rootDevice
+ # FIXME: use d.host_address to only add "NM_CONTROLLED=no"
+ # for interfaces actually used enroute to the device
+ for d in anaconda.id.storage.devices:
+ if isinstance(d, storage.devices.NetworkStorageDevice) and
+ (rootdev.dependsOn(d) or d.nic == self.iface):
+ return True
+ return False
+

class Network:

@@ -540,7 +551,21 @@ class Network:
self._copyFileToPath("/etc/udev/rules.d/70-persistent-net.rules",
instPath, overwrite=flags.livecdInstall)

- def write(self, anaconda=None):
+ def disableNMForStorageDevices(self, anaconda, instPath='):
+ for devName, device in self.netdevices.items():
+ if device.isStorageDevice(anaconda):
+ dev = NetworkDevice(instPath + netscriptsDir, devName)
+ if os.access(dev.path, os.R_OK):
+ dev.loadIfcfgFile()
+ dev.set(('NM_CONTROLLED', 'no'))
+ dev.writeIfcfgFile()
+ log.info("network device %s used by storage will not be "
+ "controlled by NM" % device.path)
+ else:
+ log.warning("disableNMForStorageDevices: %s file not found" %
+ device.path)
+
+ def write(self):

devices = self.netdevices.values()

@@ -557,19 +582,6 @@ class Network:
self.overrideDHCPhostname):
dev.set(('DHCP_HOSTNAME', self.hostname))

- # tell NetworkManager not to touch any interfaces used during
- # installation when / is on a network backed device.
- if anaconda is not None:
- import storage
- rootdev = anaconda.id.storage.rootDevice
- # FIXME: use d.host_address to only add "NM_CONTROLLED=no"
- # for interfaces actually used enroute to the device
- for d in anaconda.id.storage.devices:
- if isinstance(d, storage.devices.NetworkStorageDevice) and
- (rootdev.dependsOn(d) or d.nic == device):
- dev.set(('NM_CONTROLLED', 'no'))
- break
-
dev.writeIfcfgFile()

# XXX: is this necessary with NetworkManager?
diff --git a/yuminstall.py b/yuminstall.py
index 8c1aab0..68bf681 100644
--- a/yuminstall.py
+++ b/yuminstall.py
@@ -1643,7 +1643,7 @@ debuglevel=10
if os.access("/etc/modprobe.d/anaconda.conf", os.R_OK):
shutil.copyfile("/etc/modprobe.d/anaconda.conf",
anaconda.rootPath + "/etc/modprobe.d/anaconda.conf")
- anaconda.id.network.write(anaconda=anaconda)
+ anaconda.id.network.write()
anaconda.id.network.copyConfigToPath(instPath=anac onda.rootPath)
anaconda.id.storage.write(anaconda.rootPath)
if not anaconda.id.isHeadless:


_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 10:42 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org