[openlmi-scripts/f20] fixed few networking issues

Michal Minar miminar at fedoraproject.org
Thu Mar 6 12:09:48 UTC 2014


commit 7002d181e14cd9ca6ecf4e98b7632c5b5e1d4237
Author: Michal Minar <miminar at redhat.com>
Date:   Wed Mar 5 08:01:24 2014 +0100

    fixed few networking issues

 openlmi-scripts-0.2.7-networking_fixes.patch |  120 ++++++++++++++++++++++++++
 openlmi-scripts.spec                         |    7 ++-
 2 files changed, 126 insertions(+), 1 deletions(-)
---
diff --git a/openlmi-scripts-0.2.7-networking_fixes.patch b/openlmi-scripts-0.2.7-networking_fixes.patch
new file mode 100644
index 0000000..6a8f3d4
--- /dev/null
+++ b/openlmi-scripts-0.2.7-networking_fixes.patch
@@ -0,0 +1,120 @@
+diff --git a/commands/networking/lmi/scripts/networking/__init__.py b/commands/networking/lmi/scripts/networking/__init__.py
+index 8202342..fba143b 100644
+--- a/commands/networking/lmi/scripts/networking/__init__.py
++++ b/commands/networking/lmi/scripts/networking/__init__.py
+@@ -129,6 +129,31 @@ def get_ip_addresses(ns, device):
+         elif endpoint.ProtocolIFType == ns.LMI_IPProtocolEndpoint.ProtocolIFTypeValues.IPv6:
+             yield (endpoint.IPv6Address, endpoint.IPv6SubnetPrefixLength)
+ 
++def get_ipv4_addresses(ns, device):
++    '''
++    Get a list of IPv4 addresses assigned to given device
++
++    :param LMI_IPNetworkConnection device: network device
++    :return: IPv4 addresses with subnet masks that is assigned to the device.
++    :rtype: list of tuple (IPAddress, SubnetMask)
++    '''
++    for endpoint in device.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_IPProtocolEndpoint"):
++        if endpoint.ProtocolIFType == ns.LMI_IPProtocolEndpoint.ProtocolIFTypeValues.IPv4:
++            yield (endpoint.IPv4Address, endpoint.SubnetMask)
++
++def get_ipv6_addresses(ns, device):
++    '''
++    Get a list of IPv6 addresses assigned to given device
++
++    :param LMI_IPNetworkConnection device: network device
++    :return: IPv6 addresses with prefixes that is assigned to the device.
++    :rtype: list of tuple (IPAddress, Prefix)
++    '''
++    for endpoint in device.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_IPProtocolEndpoint"):
++        if endpoint.ProtocolIFType == ns.LMI_IPProtocolEndpoint.ProtocolIFTypeValues.IPv6:
++            yield (endpoint.IPv6Address, endpoint.IPv6SubnetPrefixLength)
++
++
+ def get_default_gateways(ns, device):
+     '''
+     Get a list of default gateways assigned to given device
+@@ -447,7 +472,10 @@ def add_ip_address(ns, setting, address, prefix, gateway=None):
+     protocol = ns.LMI_IPAssignmentSettingData.ProtocolIFTypeValues.values_dict()["IPv%s" % version]
+     found = False
+     for settingData in setting.associators(AssocClass="LMI_OrderedIPAssignmentComponent"):
+-        if int(settingData.ProtocolIFType) == protocol and hasattr(settingData, "IPAddresses"):
++        if (settingData.ProtocolIFType is not None and
++                int(settingData.ProtocolIFType) == protocol and
++                hasattr(settingData, "IPAddresses")):
++
+             settingData.IPAddresses.append(address)
+             if version == 4:
+                 settingData.SubnetMasks.append(util.netmask_from_prefix(prefix))
+@@ -475,7 +503,10 @@ def remove_ip_address(ns, setting, address):
+     protocol = ns.LMI_IPAssignmentSettingData.ProtocolIFTypeValues.values_dict()["IPv%s" % version]
+     found = False
+     for settingData in setting.associators(AssocClass="LMI_OrderedIPAssignmentComponent"):
+-        if int(settingData.ProtocolIFType) == protocol and hasattr(settingData, "IPAddresses"):
++        if (settingData.ProtocolIFType is not None and
++                int(settingData.ProtocolIFType) == protocol and
++                hasattr(settingData, "IPAddresses")):
++
+             i = 0
+             while i < len(settingData.IPAddresses):
+                 if util.compare_address(settingData.IPAddresses[i], address):
+@@ -509,7 +540,10 @@ def replace_ip_address(ns, setting, address, prefix, gateway=None):
+     protocol = ns.LMI_IPAssignmentSettingData.ProtocolIFTypeValues.values_dict()["IPv%s" % version]
+     found = False
+     for settingData in setting.associators(AssocClass="LMI_OrderedIPAssignmentComponent"):
+-        if int(settingData.ProtocolIFType) == protocol and hasattr(settingData, "IPAddresses"):
++        if (settingData.ProtocolIFType is not None and
++                int(settingData.ProtocolIFType) == protocol and
++                hasattr(settingData, "IPAddresses")):
++
+             settingData.IPAddresses = [address]
+             if version == 4:
+                 settingData.SubnetMasks = [util.netmask_from_prefix(prefix)]
+@@ -551,7 +585,7 @@ def add_static_route(ns, setting, address, prefix, metric=None, next_hop=None):
+         result = setting.LMI_AddStaticIPRoute(
+                 AddressType=setting.LMI_AddStaticIPRoute.AddressTypeValues.IPv6,
+                 DestinationAddress=address,
+-                PrefixLength=str(prefix))
++                PrefixLength=prefix)
+     else:
+         raise LmiInvalidOptions("Invalid IP address: %s" % address)
+     if result.rval != 0:
+diff --git a/commands/networking/lmi/scripts/networking/cmd.py b/commands/networking/lmi/scripts/networking/cmd.py
+index d94adf5..f639243 100644
+--- a/commands/networking/lmi/scripts/networking/cmd.py
++++ b/commands/networking/lmi/scripts/networking/cmd.py
+@@ -64,8 +64,10 @@ def cmd_show_devices(ns, device_names=None):
+         yield fcmd.NewTableCommand(title="Device %s" % device.ElementName)
+         yield ("Operating Status", ns.LMI_IPNetworkConnection.OperatingStatusValues.value_name(device.OperatingStatus))
+         yield ("MAC Address", get_mac(ns, device))
+-        for ip, prefix_or_mask in get_ip_addresses(ns, device):
+-            yield ("IP Address", "%s/%s" % (ip, prefix_or_mask))
++        for ip, prefix in get_ipv4_addresses(ns, device):
++            yield ("IPv4 Address", "%s/%s" % (ip, prefix))
++        for ip, mask in get_ipv6_addresses(ns, device):
++            yield ("IPv6 Address", "%s/%s" % (ip, mask))
+         for gw in get_default_gateways(ns, device):
+             yield ("Default Gateway", gw)
+         for dns in get_dns_servers(ns, device):
+@@ -307,7 +309,7 @@ class CreateSetting(command.LmiCheckResult):
+         if _ipv4 not in SETTING_IPv4_METHODS:
+             raise errors.LmiInvalidOptions("Invalid --ipv4 option: %s" % _ipv4)
+         if _ipv6 not in SETTING_IPv6_METHODS:
+-            raise errors.LmiInvalidOptions("Invalid --ipv6 option: %s" % _ipv4)
++            raise errors.LmiInvalidOptions("Invalid --ipv6 option: %s" % _ipv6)
+ 
+         ipv4_method = SETTING_IPv4_METHODS[_ipv4]
+         ipv6_method = SETTING_IPv6_METHODS[_ipv6]
+diff --git a/commands/networking/test/test_net.sh b/commands/networking/test/test_net.sh
+index b9b8c89..6390f77 100644
+--- a/commands/networking/test/test_net.sh
++++ b/commands/networking/test/test_net.sh
+@@ -134,7 +134,7 @@ rlPhaseStartTest "Test static settings"
+     rlRun "$LMI net setting delete 'XXX Test Static'"
+     rlRun -s "$LMI net setting list"
+     rlAssertNotGrep "XXX Test Static" $rlRun_LOG
+-rlPhaseStartCleanup
++rlPhaseEnd
+ 
+ rlPhaseStartTest "Test DHCP(v6) settings"
+     rlLogInfo "Create setting with IPv4 DHCP"
diff --git a/openlmi-scripts.spec b/openlmi-scripts.spec
index c0f6ac4..297f27e 100644
--- a/openlmi-scripts.spec
+++ b/openlmi-scripts.spec
@@ -6,7 +6,7 @@
 
 Name:           openlmi-scripts
 Version:        %{openlmi_scripts_version}
-Release:        6%{?dist}
+Release:        7%{?dist}
 Summary:        Client-side python modules and command line utilities
 
 License:        BSD
@@ -33,6 +33,7 @@ Patch2:         openlmi-scripts-0.2.7-service_error_handling.patch
 Patch3:         openlmi-scripts-0.2.7-doc_built-ins.patch
 Patch4:         openlmi-scripts-0.2.7-storage_thinlv_checks.patch
 Patch5:         openlmi-scripts-0.2.7-software_search.patch
+Patch6:         openlmi-scripts-0.2.7-networking_fixes.patch
 
 %description
 Client-side python modules and command line utilities.
@@ -135,6 +136,7 @@ provider and command line wrapper.
 %patch3 -p1 -b .doc_built-ins
 %patch4 -p1 -b .storage_thinlv_checks
 %patch5 -p1 -b .software_search
+%patch6 -p1 -b .networking_fixes
 
 %build
 %{__python} setup.py build
@@ -247,6 +249,9 @@ install -m 644 README.md COPYING Changelog $RPM_BUILD_ROOT/%{_docdir}/%{name}
 %{python_sitelib}/openlmi_scripts_powermanagement-*
 
 %changelog
+* Wed Mar 05 2014 Michal Minar <miminar at redhat.com> 0.2.7-7
+- Fixed few networking bugs.
+
 * Tue Mar 04 2014 Michal Minar <miminar at redhat.com> 0.2.7-6
 - Fixed search command of software scripts.
 


More information about the scm-commits mailing list