Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-junos-eznc for 
openSUSE:Factory checked in at 2024-04-21 20:26:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-junos-eznc (Old)
 and      /work/SRC/openSUSE:Factory/.python-junos-eznc.new.26366 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-junos-eznc"

Sun Apr 21 20:26:15 2024 rev:16 rq:1169283 version:2.7.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-junos-eznc/python-junos-eznc.changes      
2024-02-12 18:55:45.414184083 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-junos-eznc.new.26366/python-junos-eznc.changes
   2024-04-21 20:27:27.518312271 +0200
@@ -1,0 +2,8 @@
+Wed Apr 17 12:37:53 UTC 2024 - Markéta Machová <[email protected]>
+
+- Update to 2.7.1
+  * Added customer juniper paramiko module as a dependency which 
+    supported aes128 and aes257 cipher #1299
+- Create no-six.patch to get rid of six dependency.
+
+-------------------------------------------------------------------

Old:
----
  python-junos-eznc-2.7.0.tar.gz

New:
----
  no-six.patch
  python-junos-eznc-2.7.1.tar.gz

BETA DEBUG BEGIN:
  New:    supported aes128 and aes257 cipher #1299
- Create no-six.patch to get rid of six dependency.
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-junos-eznc.spec ++++++
--- /var/tmp/diff_new_pack.wRpYDx/_old  2024-04-21 20:27:28.278340162 +0200
+++ /var/tmp/diff_new_pack.wRpYDx/_new  2024-04-21 20:27:28.282340309 +0200
@@ -19,7 +19,7 @@
 
 %define skip_python2 1
 Name:           python-junos-eznc
-Version:        2.7.0
+Version:        2.7.1
 Release:        0
 Summary:        Junos 'EZ' automation for non-programmers
 License:        Apache-2.0
@@ -32,6 +32,8 @@
 Patch3:         python-junos-eznc-no-mock.patch
 # PATCH-FIX-OPENSUSE python-311.patch gh#Juniper/py-junos-eznc#1236
 Patch4:         python-311.patch
+# PATCH-FIX-UPSTREAM gh#Juniper/py-junos-eznc#1307 Don't require six
+Patch5:         no-six.patch
 BuildRequires:  %{python_module Jinja2 >= 2.7.1}
 BuildRequires:  %{python_module PyYAML >= 5.1}
 BuildRequires:  %{python_module lxml >= 3.2.4}
@@ -45,7 +47,6 @@
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module scp >= 0.7.0}
 BuildRequires:  %{python_module setuptools}
-BuildRequires:  %{python_module six}
 BuildRequires:  %{python_module transitions}
 BuildRequires:  %{python_module yamlloader}
 BuildRequires:  fdupes
@@ -58,7 +59,6 @@
 Requires:       python-pyparsing
 Requires:       python-pyserial
 Requires:       python-scp >= 0.7.0
-Requires:       python-six
 Requires:       python-transitions
 BuildArch:      noarch
 %python_subpackages

++++++ no-six.patch ++++++
Index: py-junos-eznc-2.7.1/lib/jnpr/junos/jxml.py
===================================================================
--- py-junos-eznc-2.7.1.orig/lib/jnpr/junos/jxml.py
+++ py-junos-eznc-2.7.1/lib/jnpr/junos/jxml.py
@@ -1,7 +1,6 @@
 from ncclient import manager
 from ncclient.xml_ import NCElement
 from lxml import etree
-import six
 
 """
   These are Junos XML 'helper' definitions use for generic XML processing
@@ -226,8 +225,7 @@ def cscript_conf(reply):
 
 
 # xslt to remove prefix like junos:ns
-strip_namespaces_prefix = six.b(
-    """<?xml version="1.0" encoding="UTF-8" ?>
+strip_namespaces_prefix = b"""<?xml version="1.0" encoding="UTF-8" ?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
   <xsl:output method="xml" indent="no" omit-xml-declaration="no" />
 
@@ -249,4 +247,3 @@ strip_namespaces_prefix = six.b(
         </xsl:attribute>
     </xsl:template>
 </xsl:stylesheet>"""
-)
Index: py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_netconf.py
===================================================================
--- py-junos-eznc-2.7.1.orig/lib/jnpr/junos/transport/tty_netconf.py
+++ py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_netconf.py
@@ -11,23 +11,22 @@ from lxml.etree import XMLSyntaxError
 from datetime import datetime, timedelta
 from ncclient.operations.rpc import RPCReply, RPCError
 from ncclient.xml_ import to_ele
-import six
 from ncclient.transport.session import HelloHandler
 
 
 class PY6:
-    NEW_LINE = six.b("\n")
-    EMPTY_STR = six.b("")
-    NETCONF_EOM = six.b("]]>]]>")
-    STARTS_WITH = six.b("<!--")
+    NEW_LINE = b"\n"
+    EMPTY_STR = b""
+    NETCONF_EOM = b"]]>]]>"
+    STARTS_WITH = b"<!--"
 
 
 __all__ = ["xmlmode_netconf"]
 
-_NETCONF_EOM = six.b("]]>]]>")
-_xmlns = re.compile(six.b("xmlns=[^>]+"))
+_NETCONF_EOM = b"]]>]]>"
+_xmlns = re.compile(b"xmlns=[^>]+")
 _xmlns_strip = lambda text: _xmlns.sub(PY6.EMPTY_STR, text)
-_junosns = re.compile(six.b("junos:"))
+_junosns = re.compile(b"junos:")
 _junosns_strip = lambda text: _junosns.sub(PY6.EMPTY_STR, text)
 
 logger = logging.getLogger("jnpr.junos.tty_netconf")
@@ -116,7 +115,7 @@ class tty_netconf(object):
         """
         if not cmd.startswith("<"):
             cmd = "<{}/>".format(cmd)
-        rpc = six.b("<rpc>{}</rpc>".format(cmd))
+        rpc = "<rpc>{}</rpc>".format(cmd).encode('utf-8')
         logger.info("Calling rpc: %s" % rpc)
         self._tty.rawwrite(rpc)
 
Index: py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_ssh.py
===================================================================
--- py-junos-eznc-2.7.1.orig/lib/jnpr/junos/transport/tty_ssh.py
+++ py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_ssh.py
@@ -6,7 +6,6 @@ import sys
 from time import sleep, time
 
 import paramiko
-import six
 
 from jnpr.junos.transport.tty import Terminal
 
@@ -15,14 +14,14 @@ logger = logging.getLogger("jnpr.junos.t
 # -------------------------------------------------------------------------
 # Terminal connection over SSH CONSOLE
 # -------------------------------------------------------------------------
-_PROMPT = re.compile(six.b("|").join([six.b(i) for i in Terminal._RE_PAT]))
+_PROMPT = re.compile(b"|".join([i.encode('utf-8') for i in Terminal._RE_PAT]))
 
 
 class PY6:
-    NEW_LINE = six.b("\n")
-    EMPTY_STR = six.b("")
-    NETCONF_EOM = six.b("]]>]]>")
-    IN_USE = six.b("in use")
+    NEW_LINE = b"\n"
+    EMPTY_STR = b""
+    NETCONF_EOM = b"]]>]]>"
+    IN_USE = b"in use"
 
 
 class SSH(Terminal):
@@ -136,7 +135,7 @@ class SSH(Terminal):
     def write(self, content):
         """write content + <ENTER>"""
         logger.debug("Write: %s" % content)
-        self._ssh.sendall(six.b((content + "\n")))
+        self._ssh.sendall(bytes(content + "\n", 'utf-8'))
 
     def rawwrite(self, content):
         """write content as-is"""
@@ -152,13 +151,13 @@ class SSH(Terminal):
         if sys.version >= "3":
             content = content.decode("utf-8")
         for char in content:
-            self._ssh.sendall(six.b(char))
+            self._ssh.sendall(bchar)
             wtime = 10 / float(self.baud)
             sleep(wtime)  # do not remove
 
     def read(self):
         """read a single line"""
-        rxb = six.b("")
+        rxb = b""
         while True:
             data = self._ssh.recv(self.RECVSZ)
             if data is None or len(data) <= 0:
@@ -180,7 +179,7 @@ class SSH(Terminal):
         regular-expression group. If a timeout occurs, then return
         the tuple(None,None).
         """
-        rxb = six.b("")
+        rxb = b""
         timeout = time() + self.READ_PROMPT_DELAY
 
         while time() < timeout:
@@ -199,7 +198,7 @@ class SSH(Terminal):
         return rxb, found.lastgroup
 
     def _read_until(self, match, timeout=None):
-        rxb = six.b("")
+        rxb = b""
         timeout = time() + self.READ_PROMPT_DELAY
 
         while time() < timeout:
Index: py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_telnet.py
===================================================================
--- py-junos-eznc-2.7.1.orig/lib/jnpr/junos/transport/tty_telnet.py
+++ py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_telnet.py
@@ -2,7 +2,6 @@ from time import sleep
 import telnetlib
 import logging
 import sys
-import six
 
 from jnpr.junos.transport.tty import Terminal
 
@@ -14,10 +13,10 @@ logger = logging.getLogger("jnpr.junos.t
 
 
 class PY6:
-    NEW_LINE = six.b("\n")
-    EMPTY_STR = six.b("")
-    NETCONF_EOM = six.b("]]>]]>")
-    IN_USE = six.b("in use")
+    NEW_LINE = b"\n"
+    EMPTY_STR = b""
+    NETCONF_EOM = b"]]>]]>"
+    IN_USE = b"in use"
 
 
 class Telnet(Terminal):
@@ -81,7 +80,7 @@ class Telnet(Terminal):
     def write(self, content):
         """write content + <ENTER>"""
         logger.debug("Write: %s" % content)
-        self._tn.write(six.b((content + "\n")))
+        self._tn.write(bytes(content + "\n", 'utf-8'))
 
     def rawwrite(self, content):
         """write content as-is"""
@@ -97,7 +96,7 @@ class Telnet(Terminal):
         if sys.version >= "3":
             content = content.decode("utf-8")
         for char in content:
-            self._tn.write(six.b(char))
+            self._tn.write(char.encode("utf-8"))
             wtime = 10 / float(self.baud)
             sleep(wtime)  # do not remove
 
@@ -106,7 +105,7 @@ class Telnet(Terminal):
         return self._tn.read_until(PY6.NEW_LINE, self.EXPECT_TIMEOUT)
 
     def read_prompt(self):
-        _RE_PAT = [six.b(i) for i in Terminal._RE_PAT]
+        _RE_PAT = [i.encode('utf-8') for i in Terminal._RE_PAT]
         got = self._tn.expect(_RE_PAT, self.EXPECT_TIMEOUT)
         if PY6.IN_USE in got[2]:
             raise RuntimeError("open_fail: port already in use")
Index: py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_serial.py
===================================================================
--- py-junos-eznc-2.7.1.orig/lib/jnpr/junos/transport/tty_serial.py
+++ py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_serial.py
@@ -1,6 +1,5 @@
 import serial
 import re
-import six
 from time import sleep
 from datetime import datetime, timedelta
 
@@ -10,7 +9,7 @@ from jnpr.junos.transport.tty import Ter
 # Terminal connection over SERIAL CONSOLE
 # -------------------------------------------------------------------------
 
-_PROMPT = re.compile(six.b("|").join([six.b(i) for i in Terminal._RE_PAT]))
+_PROMPT = re.compile(b"|".join([i.encode('utf-8') for i in Terminal._RE_PAT]))
 
 
 class Serial(Terminal):
@@ -56,7 +55,7 @@ class Serial(Terminal):
 
     def write(self, content):
         """write content + <RETURN>"""
-        self._ser.write(six.b(content + "\n"))
+        self._ser.write(bytes(content + "\n", 'utf-8'))
         self._ser.flush()
 
     def rawwrite(self, content):
@@ -75,7 +74,7 @@ class Serial(Terminal):
         regular-expression group. If a timeout occurs, then return
         the tuple(None,None).
         """
-        rxb = six.b("")
+        rxb = b""
         mark_start = datetime.now()
         mark_end = mark_start + timedelta(seconds=self.EXPECT_TIMEOUT)
 
Index: py-junos-eznc-2.7.1/tests/unit/test_console.py
===================================================================
--- py-junos-eznc-2.7.1.orig/tests/unit/test_console.py
+++ py-junos-eznc-2.7.1/tests/unit/test_console.py
@@ -9,7 +9,6 @@ import re
 import sys
 import os
 from lxml import etree
-import six
 import socket
 
 from jnpr.junos.console import Console
@@ -40,16 +39,16 @@ class TestConsole(unittest.TestCase):
     def setUp(self, mock_write, mock_expect, mock_open):
         tty_netconf.open = MagicMock()
         mock_expect.side_effect = [
-            (1, re.search("(?P<login>ogin:\s*$)", "login: "), six.b("\r\r\n 
ogin:")),
+            (1, re.search("(?P<login>ogin:\s*$)", "login: "), b"\r\r\n ogin:"),
             (
                 2,
                 re.search("(?P<passwd>assword:\s*$)", "password: "),
-                six.b("\r\r\n password:"),
+                b"\r\r\n password:",
             ),
             (
                 3,
                 re.search("(?P<shell>%|#\s*$)", "junos % "),
-                six.b("\r\r\nroot@device:~ # "),
+                b"\r\r\nroot@device:~ # ",
             ),
         ]
         self.dev = Console(host="1.1.1.1", user="lab", password="lab123", 
mode="Telnet")
@@ -87,16 +86,16 @@ class TestConsole(unittest.TestCase):
     def test_login_bad_password(self, mock_write, mock_expect, mock_open):
         tty_netconf.open = MagicMock()
         mock_expect.side_effect = [
-            (1, re.search("(?P<login>ogin:\s*$)", "login: "), six.b("\r\r\n 
ogin:")),
+            (1, re.search("(?P<login>ogin:\s*$)", "login: "), b"\r\r\n ogin:"),
             (
                 2,
                 re.search("(?P<passwd>assword:\s*$)", "password: "),
-                six.b("\r\r\n password:"),
+                b"\r\r\n password:",
             ),
             (
                 3,
                 re.search("(?P<badpasswd>ogin incorrect)", "login incorrect"),
-                six.b("\r\r\nlogin incorrect"),
+                b"\r\r\nlogin incorrect",
             ),
         ]
         self.dev = Console(host="1.1.1.1", user="lab", password="lab123", 
mode="Telnet")
@@ -110,16 +109,16 @@ class TestConsole(unittest.TestCase):
         tty_netconf.open = MagicMock()
 
         mock_expect.side_effect = [
-            (1, re.search("(?P<login>ogin:\s*$)", "login: "), six.b("\r\r\n 
ogin:")),
+            (1, re.search("(?P<login>ogin:\s*$)", "login: "), b"\r\r\n ogin:"),
             (
                 2,
                 re.search("(?P<passwd>assword:\s*$)", "password: "),
-                six.b("\r\r\n password:"),
+                b"\r\r\n password:",
             ),
             (
                 3,
                 re.search("(?P<shell>%|#\s*$)", "junos % "),
-                six.b("\r\r\nroot@device:~ # "),
+                b"\r\r\nroot@device:~ # ",
             ),
         ]
         with Console(
@@ -175,9 +174,9 @@ class TestConsole(unittest.TestCase):
     def test_console_serial(self, mock_write, mock_expect, mock_open):
         tty_netconf.open = MagicMock()
         mock_expect.side_effect = [
-            six.b("\r\r\n Login:"),
-            six.b("\r\r\n password:"),
-            six.b("\r\r\nroot@device:~ # "),
+            b"\r\r\n Login:",
+            b"\r\r\n password:",
+            b"\r\r\nroot@device:~ # ",
         ]
         self.dev = Console(host="1.1.1.1", user="lab", password="lab123", 
mode="serial")
         self.dev.open()
@@ -258,15 +257,13 @@ class TestConsole(unittest.TestCase):
                 </policy-statement>
                 </policy-options>"""
 
-        mock_read_until.return_value = six.b(
-            """
+        mock_read_until.return_value = b"""
         <rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" 
xmlns:junos="http://xml.juniper.net/junos/15.2I0/junos";>
             <load-configuration-results>
             <ok/>
             </load-configuration-results>
             </rpc-reply>
             ]]>]]>"""
-        )
         cu = Config(self.dev)
         op = cu.load(xml, format="xml")
         cu.commit()
Index: py-junos-eznc-2.7.1/tests/unit/transport/test_serial.py
===================================================================
--- py-junos-eznc-2.7.1.orig/tests/unit/transport/test_serial.py
+++ py-junos-eznc-2.7.1/tests/unit/transport/test_serial.py
@@ -5,7 +5,6 @@ except ImportError:
 import nose2
 from unittest.mock import MagicMock, patch
 import sys
-import six
 
 from jnpr.junos.console import Console
 
@@ -90,12 +89,9 @@ class TestSerialWin(unittest.TestCase):
             ("shell", "shell"),
         ]
         mock_serial_read.side_effect = [
-            six.b(
-                "<!-- No zombies were killed during the creation of this user 
interface -->"
-            ),
-            six.b(""),
-            six.b(
-                """<!-- user root, class super-user -->
+            b"<!-- No zombies were killed during the creation of this user 
interface -->",
+            b"",
+            b"""<!-- user root, class super-user -->
 <hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
   <capabilities>
     <capability>urn:ietf:params:netconf:base:1.0</capability>
@@ -114,9 +110,8 @@ class TestSerialWin(unittest.TestCase):
   </capabilities>
   <session-id>7478</session-id>
 </hello>
-]]>]]>"""
-            ),
-            six.b(""),
+]]>]]>""",
+            b"",
         ]
         self.dev.open()
 
@@ -144,7 +139,7 @@ class TestSerialWin(unittest.TestCase):
         self.dev._tty.read = MagicMock()
         self.dev._tty.rawwrite = MagicMock()
         self.dev._tty.read.side_effect = [
-            six.b(
+            bytes(
                 '<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"'
                 ' xmlns:junos="http://xml.juniper.net/junos/15.1X49/junos";>'
                 '<route-engine-information xmlns="http://xml.juniper.net/ju'
@@ -170,7 +165,8 @@ class TestSerialWin(unittest.TestCase):
                 "-reason><load-average-one>0.12</load-average-one><load-ave"
                 "rage-five>0.08</load-average-five><load-average-fifteen>0."
                 "06</load-average-fifteen></route-engine></route-engine-inf"
-                "ormation></rpc-reply>]]>]]>"
+                "ormation></rpc-reply>]]>]]>",
+                'utf-8'
             )
         ]
         res = self.dev.rpc.get_route_engine_information()
Index: py-junos-eznc-2.7.1/tests/unit/transport/test_tty_netconf.py
===================================================================
--- py-junos-eznc-2.7.1.orig/tests/unit/transport/test_tty_netconf.py
+++ py-junos-eznc-2.7.1/tests/unit/transport/test_tty_netconf.py
@@ -7,7 +7,6 @@ from unittest.mock import MagicMock, pat
 
 from jnpr.junos.transport.tty_netconf import tty_netconf
 
-import six
 import os
 import select
 import socket
@@ -43,7 +42,7 @@ class TestTTYNetconf(unittest.TestCase):
     @patch("jnpr.junos.transport.tty_netconf.timedelta")
     def test_open_RuntimeError(self, mock_delta, mock_rcv):
         mock_rcv.return_value = "]]>]]>"
-        self.tty_net._tty.read.return_value = six.b("testing")
+        self.tty_net._tty.read.return_value = b"testing"
         from datetime import timedelta
 
         mock_delta.return_value = timedelta(seconds=0.5)
@@ -56,7 +55,7 @@ class TestTTYNetconf(unittest.TestCase):
         mock_rcv.return_value = "]]>]]>"
         self.tty_net.rpc("get-interface-information")
         self.tty_net._tty.rawwrite.assert_called_with(
-            six.b("<rpc><get-interface-information/></rpc>")
+            b"<rpc><get-interface-information/></rpc>"
         )
 
     @patch("jnpr.junos.transport.tty_netconf.tty_netconf._receive")
@@ -103,7 +102,7 @@ class TestTTYNetconf(unittest.TestCase):
     @patch("jnpr.junos.transport.tty_netconf.select.select")
     def test_tty_netconf_receive_empty_line(self, mock_select):
         rx = MagicMock()
-        rx.read_until.side_effect = iter([six.b(""), six.b("]]>]]>")])
+        rx.read_until.side_effect = iter([b"", b"]]>]]>"])
         mock_select.return_value = ([rx], [], [])
         self.assertEqual(self.tty_net._receive().tag, "error-in-receive")
 
@@ -117,7 +116,7 @@ class TestTTYNetconf(unittest.TestCase):
     @patch("jnpr.junos.transport.tty_netconf.select.select")
     def test_tty_netconf_receive_splited_eom(self, mock_select):
         rx = MagicMock()
-        rx.read_until.side_effect = iter([six.b(i) for i in ["testing]", "]>", 
"]]>"]])
+        rx.read_until.side_effect = iter([i.encode('utf-8') for i in 
["testing]", "]>", "]]>"]])
         mock_select.return_value = ([rx], [], [])
         self.assertEqual(self.tty_net._receive().tag, "error-in-receive")
 
@@ -126,30 +125,30 @@ class TestTTYNetconf(unittest.TestCase):
         rx = MagicMock()
 
         rx.read_until.side_effect = iter(
-            [six.b("<rpc-reply>ok<dummy></rpc-reply>"), six.b("\n]]>]]>")]
+            [b"<rpc-reply>ok<dummy></rpc-reply>", b"\n]]>]]>"]
         )
         mock_select.return_value = ([rx], [], [])
         self.assertEqual(
-            self.tty_net._receive(), six.b("<rpc-reply>ok<dummy/></rpc-reply>")
+            self.tty_net._receive(), b"<rpc-reply>ok<dummy/></rpc-reply>"
         )
 
     @patch("jnpr.junos.transport.tty_netconf.select.select")
     def test_tty_netconf_receive_XMLSyntaxError_eom_in_center(self, 
mock_select):
         rx = MagicMock()
         rx.read_until.side_effect = iter(
-            [six.b("<rpc-reply>ok</rpc-reply>"), six.b("]]>]]>\ndummy")]
+            [b"<rpc-reply>ok</rpc-reply>", b"]]>]]>\ndummy"]
         )
         mock_select.return_value = ([rx], [], [])
-        self.assertEqual(self.tty_net._receive(), 
six.b("<rpc-reply>ok</rpc-reply>"))
+        self.assertEqual(self.tty_net._receive(), b"<rpc-reply>ok</rpc-reply>")
 
     @patch("jnpr.junos.transport.tty_netconf.select.select")
     def test_tty_netconf_receive_xmn_error(self, mock_select):
         rx = MagicMock()
         rx.read_until.side_effect = iter(
             [
-                six.b("<message>ok</message>"),
-                six.b("\n</xnm:error>\n"),
-                six.b("]]>]]>\ndummy"),
+                b"<message>ok</message>",
+                b"\n</xnm:error>\n",
+                b"]]>]]>\ndummy",
             ]
         )
         mock_select.return_value = ([rx], [], [])
Index: py-junos-eznc-2.7.1/tests/unit/transport/test_tty_telnet.py
===================================================================
--- py-junos-eznc-2.7.1.orig/tests/unit/transport/test_tty_telnet.py
+++ py-junos-eznc-2.7.1/tests/unit/transport/test_tty_telnet.py
@@ -7,7 +7,6 @@ except ImportError:
 import nose2
 from unittest.mock import MagicMock, patch
 from jnpr.junos.transport.tty_telnet import Telnet
-import six
 
 
 class TestTTYTelnet(unittest.TestCase):
@@ -62,7 +61,7 @@ class TestTTYTelnet(unittest.TestCase):
         self.tel_conn._tn.expect.return_value = (
             None,
             None,
-            six.b("port already in use"),
+            b"port already in use",
         )
         self.assertRaises(RuntimeError, self.tel_conn._login_state_machine)
 
Index: py-junos-eznc-2.7.1/lib/jnpr/junos/device.py
===================================================================
--- py-junos-eznc-2.7.1.orig/lib/jnpr/junos/device.py
+++ py-junos-eznc-2.7.1/lib/jnpr/junos/device.py
@@ -1,6 +1,5 @@
 # stdlib
 import os
-import six
 import types
 import platform
 import warnings
@@ -665,7 +664,7 @@ class _Connection(object):
         command = command.strip()
         # Get the equivalent RPC
         rpc = self.display_xml_rpc(command)
-        if isinstance(rpc, six.string_types):
+        if isinstance(rpc, str):
             # No RPC is available.
             return None
         rpc_string = "rpc.%s(" % (rpc.tag.replace("-", "_"))
Index: py-junos-eznc-2.7.1/lib/jnpr/junos/utils/start_shell.py
===================================================================
--- py-junos-eznc-2.7.1.orig/lib/jnpr/junos/utils/start_shell.py
+++ py-junos-eznc-2.7.1/lib/jnpr/junos/utils/start_shell.py
@@ -3,7 +3,6 @@ import re
 import datetime
 from jnpr.junos.utils.ssh_client import open_ssh_client
 import subprocess
-import six
 from threading import Thread
 import time
 
Index: py-junos-eznc-2.7.1/requirements.txt
===================================================================
--- py-junos-eznc-2.7.1.orig/requirements.txt
+++ py-junos-eznc-2.7.1/requirements.txt
@@ -4,7 +4,6 @@ ncclient>=0.6.15
 scp>=0.7.0
 jinja2>=2.7.1
 PyYAML>=5.1
-six
 pyserial
 yamlordereddictloader
 pyparsing
Index: py-junos-eznc-2.7.1/tests/unit/facts/test_swver.py
===================================================================
--- py-junos-eznc-2.7.1.orig/tests/unit/facts/test_swver.py
+++ py-junos-eznc-2.7.1/tests/unit/facts/test_swver.py
@@ -1,8 +1,6 @@
 __author__ = "Stacy Smith"
 __credits__ = "Jeremy Schulman, Nitin Kumar"
 
-import six
-
 try:
     import unittest2 as unittest
 except:
@@ -13,9 +11,6 @@ from jnpr.junos.facts.swver import versi
 
 
 class TestVersionInfo(unittest.TestCase):
-    if six.PY2:
-        assertCountEqual = unittest.TestCase.assertItemsEqual
-
     def test_version_info_after_type_len_else(self):
         self.assertEqual(version_info("12.1X46-D10").build, None)
 
Index: py-junos-eznc-2.7.1/tests/unit/utils/test_scp.py
===================================================================
--- py-junos-eznc-2.7.1.orig/tests/unit/utils/test_scp.py
+++ py-junos-eznc-2.7.1/tests/unit/utils/test_scp.py
@@ -1,5 +1,5 @@
 import sys
-from six import StringIO
+from io import StringIO
 from contextlib import contextmanager
 
 import unittest
Index: py-junos-eznc-2.7.1/tests/unit/utils/test_sw.py
===================================================================
--- py-junos-eznc-2.7.1.orig/tests/unit/utils/test_sw.py
+++ py-junos-eznc-2.7.1/tests/unit/utils/test_sw.py
@@ -1,7 +1,7 @@
 from __future__ import print_function
 import os
 import sys
-from six import StringIO
+from io import StringIO
 
 try:
     import unittest2 as unittest

++++++ python-junos-eznc-2.7.0.tar.gz -> python-junos-eznc-2.7.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/RELEASE-NOTES.md 
new/py-junos-eznc-2.7.1/RELEASE-NOTES.md
--- old/py-junos-eznc-2.7.0/RELEASE-NOTES.md    2024-01-12 07:52:30.000000000 
+0100
+++ new/py-junos-eznc-2.7.1/RELEASE-NOTES.md    2024-04-12 07:38:33.000000000 
+0200
@@ -1,3 +1,8 @@
+## Release 2.7.1 - 12 APR 2024
+## Features Added
+- Added customer juniper paramiko module as a dependency  which supported 
aes128 and aes257 cipher #1299 
+## Bugs Fixed
+
 ## Release 2.7.0 - 12 JAN 2024
 ## Features Added
 -  Support added for Python 3.10 and above version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/_version.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/_version.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/_version.py  2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/_version.py  2024-04-12 
07:38:33.000000000 +0200
@@ -25,9 +25,9 @@
     # setup.py/versioneer.py will grep for the variable names, so they must
     # each be defined on a line of their own. _version.py will just call
     # get_keywords().
-    git_refnames = " (tag: 2.7.0)"
-    git_full = "0ef907116a035a84520a711ef09123076fe9ace0"
-    git_date = "2024-01-12 12:22:30 +0530"
+    git_refnames = " (HEAD -> master, tag: 2.7.1)"
+    git_full = "32b16cd249e174f5319d554536896c50192b4420"
+    git_date = "2024-04-12 11:08:33 +0530"
     keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
     return keywords
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/cfg/phyport/base.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/cfg/phyport/base.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/cfg/phyport/base.py  2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/cfg/phyport/base.py  2024-04-12 
07:38:33.000000000 +0200
@@ -6,7 +6,6 @@
 
 
 class PhyPortBase(Resource):
-
     """
     [edit interfaces <name>]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/cfg/user.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/cfg/user.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/cfg/user.py  2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/cfg/user.py  2024-04-12 
07:38:33.000000000 +0200
@@ -8,7 +8,6 @@
 
 
 class User(Resource):
-
     """
     [edit system login user <name>]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/cfg/user_ssh_key.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/cfg/user_ssh_key.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/cfg/user_ssh_key.py  2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/cfg/user_ssh_key.py  2024-04-12 
07:38:33.000000000 +0200
@@ -7,7 +7,6 @@
 
 
 class UserSSHKey(Resource):
-
     """
     [edit system login user <name> authentication <key-type> <key-value> ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/device.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/device.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/device.py    2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/device.py    2024-04-12 
07:38:33.000000000 +0200
@@ -54,7 +54,6 @@
 
 
 class _MyTemplateLoader(jinja2.BaseLoader):
-
     """
     Create a jinja2 template loader class that can be used to
     load templates from all over the filesystem, but defaults
@@ -1023,7 +1022,6 @@
 
 
 class DeviceSessionListener(SessionListener):
-
     """
     Listens to Session class of Netconf Transport
     and detects errors in the transport.
@@ -1045,7 +1043,6 @@
 
 
 class Device(_Connection):
-
     """
     Junos Device class.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/exception.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/exception.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/exception.py 2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/exception.py 2024-04-12 
07:38:33.000000000 +0200
@@ -14,7 +14,6 @@
 
 
 class RpcError(Exception):
-
     """
     Parent class for all junos-pyez RPC Exceptions
     """
@@ -87,7 +86,6 @@
 
 
 class CommitError(RpcError):
-
     """
     Generated in response to a commit-check or a commit action.
     """
@@ -107,7 +105,6 @@
 
 
 class ConfigLoadError(RpcError):
-
     """
     Generated in response to a failure when loading a configuration.
     """
@@ -127,7 +124,6 @@
 
 
 class LockError(RpcError):
-
     """
     Generated in response to attempting to take an exclusive
     lock on the configuration database.
@@ -138,7 +134,6 @@
 
 
 class UnlockError(RpcError):
-
     """
     Generated in response to attempting to unlock the
     configuration database.
@@ -149,7 +144,6 @@
 
 
 class PermissionError(RpcError):
-
     """
     Generated in response to invoking an RPC for which the
     auth user does not have user-class permissions.
@@ -164,7 +158,6 @@
 
 
 class RpcTimeoutError(RpcError):
-
     """
     Generated in response to a RPC execution timeout.
     """
@@ -181,7 +174,6 @@
 
 
 class SwRollbackError(RpcError):
-
     """
     Generated in response to a SW rollback error.
     """
@@ -208,7 +200,6 @@
 
 
 class ConnectError(Exception):
-
     """
     Parent class for all connection related exceptions
     """
@@ -249,7 +240,6 @@
 
 
 class ProbeError(ConnectError):
-
     """
     Generated if auto_probe is enabled and the probe action fails
     """
@@ -258,7 +248,6 @@
 
 
 class ConnectAuthError(ConnectError):
-
     """
     Generated if the user-name, password is invalid
     """
@@ -267,7 +256,6 @@
 
 
 class ConnectTimeoutError(ConnectError):
-
     """
     Generated if the NETCONF session fails to connect, could
     be due to the fact the device is not ip reachable; bad
@@ -278,7 +266,6 @@
 
 
 class ConnectUnknownHostError(ConnectError):
-
     """
     Generated if the specific hostname does not DNS resolve
     """
@@ -287,7 +274,6 @@
 
 
 class ConnectRefusedError(ConnectError):
-
     """
     Generated if the specified host denies the NETCONF; could
     be that the services is not enabled, or the host has
@@ -298,7 +284,6 @@
 
 
 class ConnectNotMasterError(ConnectError):
-
     """
     Generated if the connection is made to a non-master
     routing-engine.  This could be a backup RE on an MX
@@ -309,7 +294,6 @@
 
 
 class ConnectClosedError(ConnectError):
-
     """
     Generated if connection unexpectedly closed
     """
@@ -320,7 +304,6 @@
 
 
 class JSONLoadError(Exception):
-
     """
     Generated if json content of rpc reply fails to load
     """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/cmdview.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/cmdview.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/cmdview.py   2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/cmdview.py   2024-04-12 
07:38:33.000000000 +0200
@@ -1,5 +1,4 @@
 class CMDView(object):
-
     """
     View is the base-class that makes extracting values from XML
     data appear as objects with attributes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/factory_loader.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/factory_loader.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/factory_loader.py    
2024-01-12 07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/factory_loader.py    
2024-04-12 07:38:33.000000000 +0200
@@ -4,6 +4,7 @@
 originate from any kind of source: YAML, JSON, program.  For examples of YAML
 refer to the .yml files in this jnpr.junos.op directory.
 """
+
 # stdlib
 from copy import deepcopy
 import re
@@ -29,7 +30,6 @@
 
 
 class FactoryLoader(object):
-
     """
     Used to load a <dict> of data that contains Table and View definitions.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/state_machine.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/state_machine.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/state_machine.py     
2024-01-12 07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/state_machine.py     
2024-04-12 07:38:33.000000000 +0200
@@ -810,9 +810,9 @@
                             val, 
result[list(self._view.REGEX.keys()).index(key)], re.I
                         )
                         if obj and len(obj.groups()) >= 1:
-                            result[
-                                list(self._view.REGEX.keys()).index(key)
-                            ] = obj.groups()[0]
+                            result[list(self._view.REGEX.keys()).index(key)] = 
(
+                                obj.groups()[0]
+                            )
                 items = convert_to_data_type(result)
                 tmp_dict = dict(zip(self._view.REGEX.keys(), items))
                 if len(tmp_dict) > 0:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/view.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/view.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/view.py      2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/view.py      2024-04-12 
07:38:33.000000000 +0200
@@ -11,7 +11,6 @@
 
 
 class View(object):
-
     """
     View is the base-class that makes extracting values from XML
     data appear as objects with attributes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/viewfields.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/viewfields.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/factory/viewfields.py        
2024-01-12 07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/factory/viewfields.py        
2024-04-12 07:38:33.000000000 +0200
@@ -1,5 +1,4 @@
 class ViewFields(object):
-
     """
     Used to dynamically create a field dictionary used with the
     RunstatView class
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/facts/__init__.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/facts/__init__.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/facts/__init__.py    2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/facts/__init__.py    2024-04-12 
07:38:33.000000000 +0200
@@ -31,6 +31,7 @@
 The following dictionary keys represent the available facts and their meaning:
 
 """
+
 import sys
 
 import jnpr.junos.facts.current_re
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/ofacts/session.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/ofacts/session.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/ofacts/session.py    2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/ofacts/session.py    2024-04-12 
07:38:33.000000000 +0200
@@ -1,6 +1,7 @@
 """
   facts['HOME'] = login home directory
 """
+
 from lxml.builder import E
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/op/phyport.yml 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/op/phyport.yml
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/op/phyport.yml       2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/op/phyport.yml       2024-04-12 
07:38:33.000000000 +0200
@@ -42,8 +42,12 @@
   fields_ts:
     rx_bytes: { input-bytes: int }
     rx_packets: { input-packets: int }
+    rx_bps: { input-bps: int }
+    rx_pps: { input-pps: int }
     tx_bytes: { output-bytes: int }
     tx_packets: { output-packets: int }
+    tx_bps: { output-bps: int }
+    tx_pps: { output-pps: int }
 
   fields_rxerrs:
     rx_err_input: { input-errors: int }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/autosys.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/autosys.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/autosys.py 2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/autosys.py 2024-04-12 
07:38:33.000000000 +0200
@@ -1,6 +1,7 @@
 """
 Pythonifier for AutoSys Table/View
 """
+
 from jnpr.junos.factory import loadyaml
 from os.path import splitext
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/bgp.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/bgp.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/bgp.py     2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/bgp.py     2024-04-12 
07:38:33.000000000 +0200
@@ -1,6 +1,7 @@
 """
 Pythonifier for BGP Table/View
 """
+
 from jnpr.junos.factory import loadyaml
 from os.path import splitext
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/interface.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/interface.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/interface.py       
2024-01-12 07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/interface.py       
2024-04-12 07:38:33.000000000 +0200
@@ -1,6 +1,7 @@
 """
 Pythonifier for interface table/view
 """
+
 from jnpr.junos.factory import loadyaml
 from os.path import splitext
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/staticroutes.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/staticroutes.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/staticroutes.py    
2024-01-12 07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/staticroutes.py    
2024-04-12 07:38:33.000000000 +0200
@@ -1,6 +1,7 @@
 """
 Pythonifier for Static route Table/View
 """
+
 from jnpr.junos.factory import loadyaml
 from os.path import splitext
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/syslog.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/syslog.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/syslog.py  2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/syslog.py  2024-04-12 
07:38:33.000000000 +0200
@@ -1,6 +1,7 @@
 """
 Pythonifier for Syslog Table/View
 """
+
 from jnpr.junos.factory import loadyaml
 from os.path import splitext
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/user.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/user.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/resources/user.py    2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/resources/user.py    2024-04-12 
07:38:33.000000000 +0200
@@ -1,6 +1,7 @@
 """
 Pythonifier for User Table/View
 """
+
 from jnpr.junos.factory import loadyaml
 from os.path import splitext
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/transport/tty.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/transport/tty.py     2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty.py     2024-04-12 
07:38:33.000000000 +0200
@@ -14,7 +14,6 @@
 
 
 class Terminal(object):
-
     """
     Terminal is used to bootstrap Junos New Out of the Box (NOOB) device
     over the CONSOLE port. The general use-case is to setup the minimal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/transport/tty_netconf.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_netconf.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/transport/tty_netconf.py     
2024-01-12 07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/transport/tty_netconf.py     
2024-04-12 07:38:33.000000000 +0200
@@ -38,7 +38,6 @@
 
 
 class tty_netconf(object):
-
     """
     Basic Junos XML API for bootstraping through the TTY
     """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/utils/fs.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/utils/fs.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/utils/fs.py  2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/utils/fs.py  2024-04-12 
07:38:33.000000000 +0200
@@ -7,7 +7,6 @@
 
 
 class FS(Util):
-
     """
     Filesystem (FS) utilities:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/py-junos-eznc-2.7.0/lib/jnpr/junos/utils/start_shell.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/utils/start_shell.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/utils/start_shell.py 2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/utils/start_shell.py 2024-04-12 
07:38:33.000000000 +0200
@@ -14,7 +14,6 @@
 
 
 class StartShell(object):
-
     """
     Junos shell execution utility.  This utility is written to
     support the "context manager" design pattern.  For example::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/utils/sw.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/utils/sw.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/utils/sw.py  2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/utils/sw.py  2024-04-12 
07:38:33.000000000 +0200
@@ -1131,13 +1131,12 @@
             elif self._mixed_VC is True:
                 cmd.append(E("all-members"))
         elif (
-            self._multi_VC_nsync is True
-            or self._multi_VC is True
-            and member_id is not None
-        ):
+            self._multi_VC_nsync is True or self._multi_VC is True
+        ) and member_id is not None:
             cmd.append(E("member", str(member_id)))
         if in_min >= 0 and at is None:
-            cmd.append(E("in", str(in_min)))
+            if vmhost is not True:
+                cmd.append(E("in", str(in_min)))
         elif at is not None:
             cmd.append(E("at", str(at)))
         try:
@@ -1232,7 +1231,9 @@
     # -------------------------------------------------------------------------
     # poweroff - system shutdown
     # -------------------------------------------------------------------------
-    def poweroff(self, in_min=0, at=None, on_node=None, all_re=True, 
other_re=False):
+    def poweroff(
+        self, in_min=0, at=None, on_node=None, all_re=True, other_re=False, 
vmhost=False
+    ):
         """
         Perform a system shutdown, with optional delay (in minutes) .
 
@@ -1254,6 +1255,8 @@
         :param str other_re: If the system has dual Routing Engines and this 
option is C(true),
             then the action is performed on the other REs in the system.
 
+        :param str vmhost: If the device is vmhost device then the shutdown 
will be performed on the device
+
         :returns:
             * power-off message (string) if command successful
 
@@ -1267,12 +1270,13 @@
             else:
                 cmd = E("request-node-power-off")
                 cmd.append(E("node", on_node))
+        elif vmhost is True:
+            cmd = E("request-vmhost-poweroff")
+            all_re = False
         else:
             cmd = E("request-power-off")
         try:
-            return self._system_operation(
-                cmd, in_min, at, all_re, other_re, vmhost=False
-            )
+            return self._system_operation(cmd, in_min, at, all_re, other_re, 
vmhost)
         except Exception as err:
             if err.rsp.findtext(".//error-severity") != "warning":
                 raise err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/lib/jnpr/junos/version.py 
new/py-junos-eznc-2.7.1/lib/jnpr/junos/version.py
--- old/py-junos-eznc-2.7.0/lib/jnpr/junos/version.py   2024-01-12 
07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/lib/jnpr/junos/version.py   2024-04-12 
07:38:33.000000000 +0200
@@ -1,5 +1,5 @@
-VERSION = "2.7.0"
-DATE = "2024-Jan-12"
+VERSION = "2.7.1"
+DATE = "2024-Apr-12"
 
 # Augment with the internal version if present
 try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/requirements.txt 
new/py-junos-eznc-2.7.1/requirements.txt
--- old/py-junos-eznc-2.7.0/requirements.txt    2024-01-12 07:52:30.000000000 
+0100
+++ new/py-junos-eznc-2.7.1/requirements.txt    2024-04-12 07:38:33.000000000 
+0200
@@ -1,7 +1,6 @@
 lxml>=3.2.4
 # ncclient version 0.6.10 has issues with PyEZ(junos-eznc) and needs to be 
avoided
 ncclient>=0.6.15
-paramiko>=1.15.2
 scp>=0.7.0
 jinja2>=2.7.1
 PyYAML>=5.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/py-junos-eznc-2.7.0/setup.py 
new/py-junos-eznc-2.7.1/setup.py
--- old/py-junos-eznc-2.7.0/setup.py    2024-01-12 07:52:30.000000000 +0100
+++ new/py-junos-eznc-2.7.1/setup.py    2024-04-12 07:38:33.000000000 +0200
@@ -1,6 +1,9 @@
 from setuptools import setup, find_packages
 import versioneer
+import os
 
+# Install customer paramiko
+os.system("pip install 
git+https://github.com/Juniper/[email protected]";)
 # parse requirements
 req_lines = [line.strip() for line in open("requirements.txt").readlines()]
 install_reqs = list(filter(None, req_lines))

Reply via email to