commit 062e66f088960bb250987e671d72c4a941480d3d136f21737950013d7055ebc8 Author: Stephan Kulow Date: Tue Oct 1 06:32:57 2013 +0000 Accepting request 201089 from Cloud:OpenStack:Factory New Package needed for Nexus / OpenStack Neutron integration (also needed for 13.1) OBS-URL: https://build.opensuse.org/request/show/201089 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-ncclient?expand=0&rev=1 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/ncclient-0.3.2.tar.gz b/ncclient-0.3.2.tar.gz new file mode 100644 index 0000000..39e8256 --- /dev/null +++ b/ncclient-0.3.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7749b9ce7f5ad5a702bf312b378ba182d08304324656cb5150c40b45a7ee3fe7 +size 35856 diff --git a/nexus-support.patch b/nexus-support.patch new file mode 100644 index 0000000..ece3e1c --- /dev/null +++ b/nexus-support.patch @@ -0,0 +1,110 @@ +From cc429a1b83b65b4ab39d917774d34603473afcba Mon Sep 17 00:00:00 2001 +From: envydd +Date: Mon, 8 Aug 2011 22:15:13 -0700 +Subject: [PATCH 1/2] This commit has the changes required for ncclient to work + with the Nexus family of devices from Cisco + +Conflicts: + ncclient/operations/rpc.py + ncclient/xml_.py +--- + ncclient/operations/rpc.py | 9 ++++++++- + ncclient/xml_.py | 10 +++++++++- + 2 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/ncclient/operations/rpc.py b/ncclient/operations/rpc.py +index a476e18..d30907b 100644 +--- a/ncclient/operations/rpc.py ++++ b/ncclient/operations/rpc.py +@@ -12,6 +12,9 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + ++# Debojyoti Dutta added some code for interoperability with Cisco's ++# Nexus family of switches. Tested with Nexus 7000 series. ++ + from threading import Event, Lock + from uuid import uuid1 + +@@ -256,7 +259,11 @@ class RPC(object): + + def _wrap(self, subele): + # internal use +- ele = new_ele("rpc", {"message-id": self._id}) ++ ele = new_ele("rpc", {"message-id": self._id}, ++ **{"xmlns":BASE_NS_1_0, ++ "xmlns:nxos":"http://www.cisco.com/nxos:1.0", ++ "xmlns:if":"http://www.cisco.com/nxos:1.0:if_manager" ++ }) + ele.append(subele) + return to_xml(ele) + +diff --git a/ncclient/xml_.py b/ncclient/xml_.py +index 9e94ef0..c22b0f1 100644 +--- a/ncclient/xml_.py ++++ b/ncclient/xml_.py +@@ -13,6 +13,9 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + ++# Debojyoti Dutta added some code for interoperability with Cisco's ++# Nexus family of switches. Tested with Nexus 7000 series. ++ + "Methods for creating, parsing, and dealing with XML and ElementTree objects." + + from cStringIO import StringIO +@@ -29,6 +32,10 @@ class XMLError(NCClientError): pass + + #: Base NETCONF namespace + BASE_NS_1_0 = "urn:ietf:params:xml:ns:netconf:base:1.0" ++# NXOS_1_0 ++NXOS_1_0 = "http://www.cisco.com/nxos:1.0" ++# NXOS_IF ++NXOS_IF = "http://www.cisco.com/nxos:1.0:if_manager" + #: Namespace for Tail-f core data model + TAILF_AAA_1_1 = "http://tail-f.com/ns/aaa/1.1" + #: Namespace for Tail-f execd data model +@@ -51,6 +58,8 @@ register_namespace.func_doc = "ElementTree's namespace map determines the prefix + + for (ns, pre) in { + BASE_NS_1_0: 'nc', ++ NXOS_1_0: 'nxos', ++ NXOS_IF: 'if', + TAILF_AAA_1_1: 'aaa', + TAILF_EXECD_1_1: 'execd', + CISCO_CPI_1_0: 'cpi', +@@ -105,4 +114,3 @@ def validated_element(x, tags=None, attrs=None): + new_ele = lambda tag, attrs={}, **extra: ET.Element(qualify(tag), attrs, **extra) + + sub_ele = lambda parent, tag, attrs={}, **extra: ET.SubElement(parent, qualify(tag), attrs, **extra) +- +-- +1.8.1.4 + +From 71aa03550d34ec45983ec2ceab821a73f7b8278e Mon Sep 17 00:00:00 2001 +From: Edgar Magana +Date: Thu, 24 May 2012 14:56:53 -0700 +Subject: [PATCH 2/2] Changing the subsystem from netconf to xmlagent + +--- + ncclient/transport/ssh.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ncclient/transport/ssh.py b/ncclient/transport/ssh.py +index 14082da..886ac91 100644 +--- a/ncclient/transport/ssh.py ++++ b/ncclient/transport/ssh.py +@@ -204,8 +204,8 @@ class SSHSession(Session): + self._connected = True # there was no error authenticating + + c = self._channel = self._transport.open_session() +- c.set_name("netconf") +- c.invoke_subsystem("netconf") ++ c.set_name("xmlagent") ++ c.invoke_subsystem("xmlagent") + + self._post_connect() + +-- +1.8.1.4 + diff --git a/python-ncclient.changes b/python-ncclient.changes new file mode 100644 index 0000000..537fb7c --- /dev/null +++ b/python-ncclient.changes @@ -0,0 +1,19 @@ +------------------------------------------------------------------- +Mon Aug 26 14:59:37 UTC 2013 - rhafer@suse.com + +- added nexus-support.patch: this is required to make make ncclient + capable of accessing cisco nexus switches (for quantum's nexus + plugin) + +------------------------------------------------------------------- +Thu Aug 8 14:50:07 UTC 2013 - dmueller@suse.com + +- (rpm-wise) downgrade to a released version 0.3.2: + * http://ncclient.grnet.gr/0.3.2/ + +------------------------------------------------------------------- +Mon Jul 29 08:08:56 UTC 2013 - speilicke@suse.com + +- Require python-paramiko (for ssh transport) +- Build HTML documentation + diff --git a/python-ncclient.spec b/python-ncclient.spec new file mode 100644 index 0000000..779d7cf --- /dev/null +++ b/python-ncclient.spec @@ -0,0 +1,61 @@ +# +# spec file for package python-ncclient +# +# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# + + +Name: python-ncclient +Version: 0.3.2 +Release: 0 +Url: https://github.com/CiscoSystems/ncclient +Summary: Python NETCONF protocol library +License: Apache-2.0 +Group: Development/Languages/Python +Source: ncclient-%{version}.tar.gz +# Forward ported from https://github.com/CiscoSystems/ncclient required for the +# quantum nexus plugin to work with nexus switches +Patch0: nexus-support.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: python-base +# Documentation requirements: +BuildRequires: python-Sphinx +Requires: python-paramiko >= 1.7.7.1 +%if 0%{?suse_version} && 0%{?suse_version} <= 1110 +%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} +%else +BuildArch: noarch +%endif + +%description +ncclient is a Python library that facilitates client-side scripting +and application development around the NETCONF protocol. + +%prep +%setup -q -n leopoul-ncclient-3304dc4 +%patch0 -p1 + +%build +python setup.py build +cd docs && make html && rm build/html/.buildinfo + +%install +python setup.py install --prefix=%{_prefix} --root=%{buildroot} + +%files +%defattr(-,root,root) +%doc LICENSE README examples docs/build/html +%{python_sitelib}/* + +%changelog