summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2014-04-07 10:35:36 +0200
committerMichal Minar <miminar@redhat.com>2014-04-07 10:35:36 +0200
commitf695a051b128f931cf1a85a5dde3180dda1f9eb5 (patch)
tree959993a67ae19525d26c389ad5f1e7c68d9e5ae9
parent0646b07c85502360727f948ce0286c4b8848ecd3 (diff)
parent4a226cfaa92a4ab927c9e1b2b5eadeeffce41467 (diff)
downloadopenlmi-scripts-f695a051b128f931cf1a85a5dde3180dda1f9eb5.tar.gz
openlmi-scripts-f695a051b128f931cf1a85a5dde3180dda1f9eb5.tar.xz
openlmi-scripts-f695a051b128f931cf1a85a5dde3180dda1f9eb5.zip
Merge pull request #77 from rnovacek/fixes
networking: fix setting activation/deactivation without device specified
-rw-r--r--commands/networking/lmi/scripts/networking/__init__.py42
1 files changed, 33 insertions, 9 deletions
diff --git a/commands/networking/lmi/scripts/networking/__init__.py b/commands/networking/lmi/scripts/networking/__init__.py
index fba143b..893ca29 100644
--- a/commands/networking/lmi/scripts/networking/__init__.py
+++ b/commands/networking/lmi/scripts/networking/__init__.py
@@ -30,6 +30,7 @@
"""
LMI networking provider client library.
"""
+import time
from lmi.scripts.common.errors import LmiFailed, LmiInvalidOptions
from lmi.scripts.common import get_logger
@@ -364,6 +365,33 @@ def activate(ns, setting, device=None):
:type device: LMI_IPNetworkConnection or None
'''
service = ns.LMI_IPConfigurationService.first_instance()
+ if (setting.classname in ('LMI_BridgingMasterSettingData', 'LMI_BondingMasterSettingData')
+ and device is None):
+
+ if setting.classname == 'LMI_BridgingMasterSettingData':
+ slave_class = 'LMI_BridgingSlaveSettingData'
+ elif setting.classname == 'LMI_BondingMasterSettingData':
+ slave_class = 'LMI_BondingSlaveSettingData'
+
+ # Autodetect and activate slaves
+ for slave_setting in setting.associators(AssocClass='LMI_OrderedIPAssignmentComponent', ResultClass=slave_class):
+ device = slave_setting.first_associator(AssocClass="LMI_IPElementSettingData")
+ LOG().debug('Activating setting %s on device %s', setting.Caption, device.ElementName)
+ result = service.SyncApplySettingToIPNetworkConnection(SettingData=slave_setting,
+ IPNetworkConnection=device,
+ Mode=service.ApplySettingToIPNetworkConnection.ModeValues.Mode32768)
+ if result.errorstr:
+ raise LmiFailed("Unable to activate setting: %s" % result.errorstr)
+ # TODO: rework using indications
+ isCurrent = False
+ while not isCurrent:
+ for esd in setting.references(ResultClass="LMI_IPElementSettingData"):
+ if esd.IsCurrent == ns.LMI_IPElementSettingData.IsCurrentValues.IsCurrent:
+ isCurrent = True
+ break
+ time.sleep(1)
+ return 0
+
devices = []
if device is not None:
devices.append(device)
@@ -391,22 +419,18 @@ def deactivate(ns, setting, device=None):
:type device: LMI_IPNetworkConnection or None
'''
service = ns.LMI_IPConfigurationService.first_instance()
- devices = []
if device is not None:
- devices.append(device)
- else:
- devices = get_applicable_devices(ns, setting)
-
- if len(devices) == 0:
- raise LmiFailed("No device is associated with given connection.")
-
- for device in devices:
LOG().debug('Deactivating setting %s on device %s', setting.Caption, device.ElementName)
result = service.SyncApplySettingToIPNetworkConnection(SettingData=setting,
IPNetworkConnection=device,
Mode=service.ApplySettingToIPNetworkConnection.ModeValues.Mode32769)
if result.errorstr:
raise LmiFailed("Unable to deactivate setting: %s" % result.errorstr)
+ else:
+ result = service.SyncApplySettingToIPNetworkConnection(SettingData=setting,
+ Mode=service.ApplySettingToIPNetworkConnection.ModeValues.Mode32769)
+ if result.errorstr:
+ raise LmiFailed("Unable to deactivate setting: %s" % result.errorstr)
return 0
def enslave(ns, master_setting, device):