[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