diff options
author | Michal Minar <miminar@redhat.com> | 2014-04-07 10:35:36 +0200 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2014-04-07 10:35:36 +0200 |
commit | f695a051b128f931cf1a85a5dde3180dda1f9eb5 (patch) | |
tree | 959993a67ae19525d26c389ad5f1e7c68d9e5ae9 | |
parent | 0646b07c85502360727f948ce0286c4b8848ecd3 (diff) | |
parent | 4a226cfaa92a4ab927c9e1b2b5eadeeffce41467 (diff) | |
download | openlmi-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__.py | 42 |
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): |