New Upstream Release - python-hpilo

Ready changes

Summary

Merged new upstream version: 4.4.3 (was: 4.3).

Resulting package

Built on 2022-03-14T10:48 (took 5m57s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases python-hpilo-docapt install -t fresh-releases python3-hpilo

Lintian Result

Diff

diff --git a/CHANGES b/CHANGES
index 658a23e..10e4adb 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,18 @@
+Version 4.4.3, 2021-01-16
+
+* Fixes compatibility with OpenSSL v1.1.0+
+
+Version 4.4.2, 2020-11-19
+
+* Python 3.9 compatibility fix
+
+Version 4.4, 2020-10-06
+Version 4.4.1, 2020-10-06
+
+* Support HPE fwpkg firmware packaging
+* Bugfixes in delete_sso_server and get_generic_ldap_enabled
+* Fix in the firmware mirror script
+
 Version 4.3, 2018-08-23
 
 * Backwards compatibility with code that uses the ssl_version parameter
diff --git a/COPYING b/COPYING
index 033e813..207662a 100644
--- a/COPYING
+++ b/COPYING
@@ -1,5 +1,5 @@
 python-hpilo - Manage iLO interfaces from python code
-Copyright (C) 2011-2018 Dennis Kaarsemaker <dennis@kaarsemaker.net>
+Copyright (C) 2011-2021 Dennis Kaarsemaker <dennis@kaarsemaker.net>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of (at your option) either the Apache License,
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..e5aac22
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,16 @@
+include docs/*rst
+include docs/_static/*
+include docs/output/*
+include docs/Makefile
+include docs/*.py
+include examples/elasticsearch/hpilo_es_import
+include examples/elasticsearch/hpilo_es_dump
+include examples/elasticsearch/servers.py.example
+include examples/elasticsearch/kibana-dashboard.json
+include examples/firmwareupdater/hpilo_firmware_update
+include examples/ca/hpilo_ca
+recursive-include examples/puppet *.rb *.pp *.erb
+include ilo.conf.example
+include COPYING
+include CHANGES
+include README.md
diff --git a/PKG-INFO b/PKG-INFO
index 8e27afb..10b978d 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: python-hpilo
-Version: 4.3
+Version: 4.4.3
 Summary: iLO automation from python or shell
 Home-page: http://github.com/seveas/python-hpilo
 Author: Dennis Kaarsemaker
diff --git a/README.md b/README.md
index 7da1393..ece923d 100644
--- a/README.md
+++ b/README.md
@@ -52,7 +52,7 @@ machine you run this code on, not the managed server.
 
 Author and license
 ------------------
-This software is (c) 2011-2018 Dennis Kaarsemaker <dennis@kaarsemaker.net>
+This software is (c) 2011-2021 Dennis Kaarsemaker <dennis@kaarsemaker.net>
 
 This program is free software: you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free Software
diff --git a/debian/changelog b/debian/changelog
index 12243de..5990a44 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-python-hpilo (4.3-4) UNRELEASED; urgency=medium
+python-hpilo (4.4.3-1) UNRELEASED; urgency=medium
 
   [ Ondřej Nový ]
   * Bump Standards-Version to 4.4.1.
@@ -8,7 +8,10 @@ python-hpilo (4.3-4) UNRELEASED; urgency=medium
   [ Sandro Tosi ]
   * Use the new Debian Python Team contact name and address
 
- -- Sandro Tosi <morph@debian.org>  Mon, 04 Jan 2021 17:05:04 -0500
+  [ Debian Janitor ]
+  * New upstream release.
+
+ -- Sandro Tosi <morph@debian.org>  Mon, 14 Mar 2022 10:43:18 -0000
 
 python-hpilo (4.3-3) unstable; urgency=medium
 
diff --git a/docs/conf.py b/docs/conf.py
index ce23476..d5d8012 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -43,16 +43,16 @@ master_doc = 'index'
 
 # General information about the project.
 project = u'python-hpilo'
-copyright = u'2011-2018, Dennis Kaarsemaker'
+copyright = u'2011-2020, Dennis Kaarsemaker'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = '4.3'
+version = '4.4.3'
 # The full version, including alpha/beta/rc tags.
-release = '4.3'
+release = '4.4.3'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/docs/firmware.rst b/docs/firmware.rst
index 91e5a78..63198dd 100644
--- a/docs/firmware.rst
+++ b/docs/firmware.rst
@@ -2,8 +2,14 @@ Dealing with iLO firmware updates
 =================================
 
 One of the key features of python_hpilo is that it makes iLO firmware updates
-painless. It can download the firmware for you, or you can feed it the .bin or
-.scexe files HP ships.
+painless. It can download the firmware for you, or you can feed it the .bin,
+.scexe or .fwpkg files HP ships.
+
+Note that the newest versions of the firmware, as of August 2020, are shipped
+in a new format and you will need to use python-hpilo 4.4 or newer to extract
+and use them. If you cannot upgrade, you can manually extract the .bin file
+from the .fwpkg file (just open it with anything that can open zip files) and
+pass the .bin file to python-hpilo.
 
 From the CLI
 ------------
@@ -28,7 +34,7 @@ that too::
     hpilo_cli download_rib_firmware ilo4 all   # Download all firmware versions for iLO 4
     hpilo_cli download_rib_firmware all all    # Download all firmware versions for all iLO types
 
-.. _`firmware.conf`: https://raw.githubusercontent.com/seveas/python-hpilo/master/firmware.conf
+.. _`firmware.conf`: https://seveas.github.io/python-hpilo/firmware.conf
 
 Using the API
 -------------
@@ -89,7 +95,7 @@ auto-update via cron) such a mirror with a simple shellscript::
     #!/bin/sh
 
     cd /var/www/html/ilo-firmware
-    wget -q https://raw.githubusercontent.com/seveas/python-hpilo/master/firmware.conf
+    wget -q https://seveas.github.io/python-hpilo/firmware.conf
     hpilo_cli -c /dev/null download_rib_firmware all all
 
 This will download and extract the necessary files to
diff --git a/docs/index.rst b/docs/index.rst
index 35a7359..adec4af 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -118,7 +118,7 @@ Development information
 
 Author and license
 ==================
-This software is (c) 2011-2018 Dennis Kaarsemaker <dennis@kaarsemaker.net>
+This software is (c) 2011-2021 Dennis Kaarsemaker <dennis@kaarsemaker.net>
 
 This program is free software: you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free Software
diff --git a/docs/install.rst b/docs/install.rst
index a73ace0..c475e23 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -27,44 +27,19 @@ Sometimes needed:
 Installing the latest release
 -----------------------------
 
-When using Ubuntu, Debian, Fedora, CentOS or RHEL, it is advisable to use the
-deb or rpm packages I create for every release, so you get automatic updates
-whenever a new release is issued.
+The easiest way is to install with pip::
 
-Users of Ubuntu releases that Canonical still supports can use my launchpad
-PPA:
+``pip3 install python-hpilo``
 
-.. code-block:: console
+You can also download the package from `PyPI`_ and install it manually like any
+other application by unpacking it and running ``python setup.py install``.
 
-   $ sudo add-apt-repository ppa:dennis/python
-   $ sudo apt-get update
-   $ sudo apt-get install python-hpilo
+.. _`PyPI`: http://pypi.python.org/packages/source/p/python-hpilo/, extract it and run
 
-Users of supported Fedora and RHEL/CentOS releases can ue my COPR repository:
+Users of supported Fedora and RHEL/CentOS releases can also use my COPR repository:
 
 .. code-block:: console
 
    $ sudo dnf install dnf-plugins-core
    $ sudo dnf copr enable seveas/python-hpilo
    $ sudo dnf install python-hpilo
-
-Or for older releases, using yum:
-
-.. code-block:: console
-
-   $ sudo yum install yum-plugin-copr
-   $ sudo yum copr enable seveas/python-hpilo
-   $ sudo yum install python-hpilo
-
-And for even older releases, where yum-plugin-copr isn't available, you can
-download a .repo file from `COPR`_ to copy to ``/etc/yum.repos.d``.
-
-.. _`COPR`: https://copr.fedorainfracloud.org/coprs/seveas/python-hpilo/
-
-If you can not, or do not want to use these packages (for example, if you use
-windows or osx, or if you want to install into a virtualenv) you can download
-the package from `PyPI`_ and install it manually like any other application by
-unpacking it and running ``python setup.py install``. Or use ``pip`` to install
-it: ``pip install python-hpilo``
-
-.. _`PyPI`: http://pypi.python.org/packages/source/p/python-hpilo/, extract it and run
diff --git a/docs/shell.rst b/docs/shell.rst
index 0fa2719..a0d67e1 100644
--- a/docs/shell.rst
+++ b/docs/shell.rst
@@ -58,7 +58,7 @@ file is a simple ini file that should look like this
 Using such a file is recommended over using the login/password commandline
 arguments.
 
-Many methods that can be called requier arguments. These arguments must be
+Many methods that can be called require arguments. These arguments must be
 specified as :data:`key=value` pairs on the command-line. These parameters can
 also point to arbitrary configuration variables using the
 :attr:`key='$section.option'` syntax.
diff --git a/docs/troubleshooting.rst b/docs/troubleshooting.rst
index db170c1..bdb2d7e 100644
--- a/docs/troubleshooting.rst
+++ b/docs/troubleshooting.rst
@@ -38,6 +38,9 @@ so it's always a good idea to start with a firmware update::
 
   hpilo_cli example-server.int.kaarsemaker.net update_rib_firmware version=latest
 
+If this fails to extract the firmware, try upgrading python-hpilo as newer
+firmware versions are shipped in a different, incompatible format.
+
 Syntax error: Line #0
 ---------------------
 Occasionally you might see this error at the end of a traceback::
@@ -88,6 +91,15 @@ first update to 1.28 and then update to a later version::
   hpilo_cli example-server.int.kaarsemaker.net update_rib_firmware version=1.28
   hpilo_cli example-server.int.kaarsemaker.net update_rib_firmware version=latest
 
+Failure to update iLO5 firmware
+-------------------------------
+The early firmware versions of iLO3 had quite a few issues. To update from
+anything older than 1.40 to 1.50 or newer, you need to update in two steps:
+first update to 1.40 and then update to a later version::
+
+  hpilo_cli example-server.int.kaarsemaker.net update_rib_firmware version=1.40
+  hpilo_cli example-server.int.kaarsemaker.net update_rib_firmware version=latest
+
 `hpilo.IloError: Error reading configuration`
 ---------------------------------------------
 This error might occur in delayed mode when one of the calls causes a reset of
diff --git a/hpilo.py b/hpilo.py
index ca5335b..4239ccd 100644
--- a/hpilo.py
+++ b/hpilo.py
@@ -1,7 +1,7 @@
-# (c) 2011-2018 Dennis Kaarsemaker <dennis@kaarsemaker.net>
+# (c) 2011-2021 Dennis Kaarsemaker <dennis@kaarsemaker.net>
 # see COPYING for license details
 
-__version__ = "4.3"
+__version__ = "4.4.3"
 
 import codecs
 import io
@@ -395,10 +395,14 @@ class Ilo(object):
             raise IloCommunicationError("Unable to resolve %s" % self.hostname)
 
         try:
-            if self.ssl_context:
-                return self.ssl_context.wrap_socket(sock, server_hostname=self.hostname)
-            else:
-                return ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_TLS)
+            if not self.ssl_context:
+                self.ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
+                # Even more sadly, some iLOs are still using RC4-SHA
+                # which was dropped from the default cipher suite in
+                # Python 2.7.10 and Python 3.4.4. Add it back here :(
+                self.ssl_context.set_ciphers(ssl._DEFAULT_CIPHERS + ":RC4-SHA")
+            return self.ssl_context.wrap_socket(
+                sock, server_hostname=self.hostname)
         except ssl.SSLError as exc:
             raise IloCommunicationError("Cannot establish ssl session with %s:%d: %s" % (self.hostname, self.port, str(exc)))
 
@@ -554,6 +558,11 @@ class Ilo(object):
 
         if '<RIBCL VERSION="2.22"/>' in data:
             data = data.replace('<RIBCL VERSION="2.22"/>', '<RIBCL VERSION="2.22">')
+
+        # Remove binary 01 in xml output. This bug was seen on a faulty PSU.
+        if '\x01' in data:
+            data = data.replace('\x01', '')
+        
         # Quite a few unescaped quotation mark bugs keep appearing. Let's try
         # to fix up the XML by replacing the last occurence of a quotation mark
         # *before* the position of the error.
@@ -675,7 +684,7 @@ class Ilo(object):
             retval[key.lower()] = self._coerce(val)
         if list(element):
             fields = []
-            for child in element.getchildren():
+            for child in element:
                 if child.tag == 'FIELD':
                     fields.append(self._element_to_dict(child))
             if fields:
@@ -906,7 +915,8 @@ class Ilo(object):
 
     def delete_sso_server(self, index):
         """Delete an SSO server by index"""
-        return self._control_tag('SSO_INFO', 'DELETE_SERVER', index)
+        return self._control_tag('SSO_INFO', 'DELETE_SERVER',
+                                 attrib={'INDEX': str(index)})
 
     def delete_user(self, user_login):
         """Delete the specified user from the ilo"""
@@ -1452,7 +1462,8 @@ class Ilo(object):
             rawvsp_port=None, vsp_software_flow_control=None,
             terminal_services_port=None,
             shared_console_enable=None, shared_console_port=None, remote_console_acquire=None,
-            telnet_enable=None, ssl_empty_records_enable=None,
+            telnet_enable=None, ssl_empty_records_enable=None, remote_console_status=None,
+            ribcl_status=None, virtual_media_status=None, webgui_status=None, webserver_status=None,
 
             # Security settings
             min_password=None, enforce_aes=None, authentication_failure_logging=None,
@@ -1464,6 +1475,8 @@ class Ilo(object):
             remote_syslog_enable=None, remote_syslog_server_address=None, remote_syslog_port=None,
             alertmail_enable=None, alertmail_email_address=None,
             alertmail_sender_domain=None, alertmail_smtp_server=None, alertmail_smtp_port=None,
+            alertmail_smtp_auth_enable=None, alertmail_smtp_auth_username=None,
+            alertmail_smtp_secure_enable=None,
 
             # Console capturing
             vsp_log_enable=None,
@@ -1482,7 +1495,46 @@ class Ilo(object):
            many settings only work on certain iLO models and firmware versions"""
         vars = dict(locals())
         del vars['self']
-        dont_map = ['authentication_failure_logging', 'authentication_failures_before_delay', 'serial_cli_speed']
+
+        # even though a get_global_settings returns the actual speed we have to use
+        # numerical values between 0 (unchanged) and 6 to represent speed
+        serial_cli_speed_options = {
+            '9600':   1,
+            '19200':  2,
+            '38400':  3,
+            '57600':  4,
+            '115200': 5,
+        }
+
+        # same with serial_cli_status
+        serial_cli_status_options = {
+            'Disabled':                        1,
+            'Enabled-No Authentication':       2,
+            'Enabled-Authentication Required': 3,
+        }
+
+        # and authentication_failure_logging
+        authentication_failure_logging_options = {
+            'Disabled':                  0,
+            'Enabled-every failure':     1,
+            'Enabled-every 2nd failure': 2,
+            'Enabled-every 3rd failure': 3,
+            'Enabled-every 5th failure': 5,
+        }
+
+        vars_mappings = {
+            "serial_cli_speed": serial_cli_speed_options,
+            "serial_cli_status": serial_cli_status_options,
+            "authentication_failure_logging": authentication_failure_logging_options
+        }
+
+        for var_name, var_mappings in vars_mappings.items():
+            if vars.get(var_name, None) is not None:
+                var_value = str(vars.get(var_name))
+                vars[var_name] = str(var_mappings.get(var_value,var_value))
+
+        dont_map = ['authentication_failure_logging', 'authentication_failures_before_delay', 'serial_cli_speed',
+                    'min_password', 'session_timeout', "serial_cli_status"]
         elements = [etree.Element(x.upper(), VALUE=str({True: 'Yes', False: 'No'}.get(vars[x], vars[x])))
                     for x in vars if vars[x] is not None and x not in dont_map] + \
                    [etree.Element(x.upper(), VALUE=str(vars[x]))
@@ -1509,7 +1561,7 @@ class Ilo(object):
             dhcpv6_stateful_enable=None, dhcpv6_stateless_enable=None, dhcpv6_sntp_settings=None,
             dhcpv6_domain_name=None, ilo_nic_auto_select=None, ilo_nic_auto_snp_scan=None,
             ilo_nic_auto_delay=None, ilo_nic_fail_over=None, gratuitous_arp=None,
-            ilo_nic_fail_over_delay=None):
+            ilo_nic_fail_over_delay=None, snp_port=None):
         """Configure the network settings for the iLO card. The static route arguments require
            dicts as arguments. The necessary keys in these dicts are dest,
            gateway and mask all in dotted-quad form"""
@@ -1519,8 +1571,12 @@ class Ilo(object):
         # For the ipv4 route elements, {'dest': XXX, 'gateway': XXX}
         # ipv6 routes are ipv6_dest, prefixlen, ipv6_gateway
         # IPv6 addresses may specify prefixlength as /64 (default 64)
+        dont_map = ['prefixlen', 'ilo_nic_auto_snp_scan', 'ilo_nic_auto_delay', 'ilo_nic_fail_over_delay', 'snp_port', 'vlan_id']
         elements = [etree.Element(x.upper(), VALUE=str({True: 'Yes', False: 'No'}.get(vars[x], vars[x])))
-                    for x in vars if vars[x] is not None and 'static_route_' not in x]
+                    for x in vars if vars[x] is not None and 'static_route_' not in x and x not in dont_map] + \
+                   [etree.Element(x.upper(), VALUE=str(vars[x]))
+                    for x in vars if vars[x] is not None and 'static_route_' not in x and x in dont_map]
+
         for key in vars:
             if 'static_route_' not in key or not vars[key]:
                 continue
@@ -1538,6 +1594,10 @@ class Ilo(object):
                     element.attrib.update({'VALUE': addr, 'PREFIXLEN': plen})
                 if 'PREFIXLEN' not in element.attrib:
                     element.attrib['PREFIXLEN'] = '64'
+            if "IPV6_STATIC_ROUTE_" in element.tag:
+                plen = element.attrib['PREFIXLEN']
+                if not isinstance(plen, basestring):
+                    element.attrib['PREFIXLEN'] = str(plen)
         return self._control_tag('RIB_INFO', 'MOD_NETWORK_SETTINGS', elements=elements)
     mod_network_settings.requires_dict = ['static_route_1', 'static_route_2', 'static_route_3',
         'ipv6_static_route_1', 'ipv6_static_route_2', 'ipv6_static_route_3']
@@ -1556,6 +1616,7 @@ class Ilo(object):
             dir_kerberos_enabled=None,dir_kerberos_realm=None,
             dir_kerberos_kdc_address=None,dir_kerberos_kdc_port=None,
             dir_kerberos_keytab=None,
+            dir_generic_ldap_enabled=None,
             dir_grpacct1_name=None,dir_grpacct1_sid=None,
             dir_grpacct1_priv=None,dir_grpacct2_name=None,
             dir_grpacct2_sid=None,dir_grpacct2_priv=None,
diff --git a/hpilo_cli b/hpilo_cli
index 144aad8..fce19e0 100755
--- a/hpilo_cli
+++ b/hpilo_cli
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 #
-# (c) 2011-2018 Dennis Kaarsemaker <dennis@kaarsemaker.net>
+# (c) 2011-2020 Dennis Kaarsemaker <dennis@kaarsemaker.net>
 # see COPYING for license details
 
 import hpilo
diff --git a/hpilo_fw.py b/hpilo_fw.py
index e7df8c2..c7df6fd 100644
--- a/hpilo_fw.py
+++ b/hpilo_fw.py
@@ -1,12 +1,13 @@
-# Downloader / extracter for latest iLO2 / iLO3 / iLO4 firmware
+# Downloader / extracter for latest iLO2 / iLO3 / iLO4 / iLO5 firmware
 #
-# (c) 2011-2018 Dennis Kaarsemaker <dennis@kaarsemaker.net>
+# (c) 2011-2020 Dennis Kaarsemaker <dennis@kaarsemaker.net>
 # see COPYING for license details
 
 import tarfile
 import io
 import os
 import sys
+from zipfile import ZipFile
 PY3 = sys.version_info[0] >= 3
 
 if PY3:
@@ -25,7 +26,7 @@ def config(mirror=None):
         if mirror:
             conf = _download(mirror + 'firmware.conf')
         else:
-            conf = _download('https://raw.githubusercontent.com/seveas/python-hpilo/master/firmware.conf')
+            conf = _download('https://seveas.github.io/python-hpilo/firmware.conf')
         conf = conf.decode('ascii')
         parser = ConfigParser.ConfigParser()
         parser.readfp(io.StringIO(conf))
@@ -48,8 +49,11 @@ def download(ilo, path=None, progress = lambda txt: None):
         progress(msg)
         data = _download(conf[ilo]['url'], lambda txt: progress('%s %s' % (msg, txt)))
         if conf[ilo]['url'].endswith('.bin'):
-            with open(os.path.join(path, conf[ilo]['file']), 'w') as fd:
+            with open(os.path.join(path, conf[ilo]['file']), 'wb') as fd:
                 fd.write(data)
+        elif conf[ilo]['url'].endswith('.fwpkg'):
+            with ZipFile(io.BytesIO(data)) as zipObj:
+                zipObj.extract(conf[ilo]['file'], path)
         else:
             _parse(data, path, conf[ilo]['file'])
         return True
diff --git a/python_hpilo.egg-info/PKG-INFO b/python_hpilo.egg-info/PKG-INFO
new file mode 100644
index 0000000..10b978d
--- /dev/null
+++ b/python_hpilo.egg-info/PKG-INFO
@@ -0,0 +1,20 @@
+Metadata-Version: 1.1
+Name: python-hpilo
+Version: 4.4.3
+Summary: iLO automation from python or shell
+Home-page: http://github.com/seveas/python-hpilo
+Author: Dennis Kaarsemaker
+Author-email: dennis@kaarsemaker.net
+License: UNKNOWN
+Description: UNKNOWN
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: System Administrators
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: System :: Hardware
+Classifier: Topic :: System :: Systems Administration
+Classifier: Topic :: System :: Networking
diff --git a/python_hpilo.egg-info/SOURCES.txt b/python_hpilo.egg-info/SOURCES.txt
new file mode 100644
index 0000000..fca5c21
--- /dev/null
+++ b/python_hpilo.egg-info/SOURCES.txt
@@ -0,0 +1,125 @@
+CHANGES
+COPYING
+MANIFEST.in
+README.md
+hpilo.py
+hpilo_cli
+hpilo_fw.py
+ilo.conf.example
+setup.py
+docs/Makefile
+docs/ahs.rst
+docs/authentication.rst
+docs/autofirmware.rst
+docs/boot.rst
+docs/ca.rst
+docs/conf.py
+docs/contributing.rst
+docs/elasticsearch.rst
+docs/federation.rst
+docs/firmware.rst
+docs/health.rst
+docs/ilodoc.py
+docs/index.rst
+docs/info.rst
+docs/input.rst
+docs/install.rst
+docs/license.rst
+docs/log.rst
+docs/media.rst
+docs/networksettings.rst
+docs/power.rst
+docs/profile.rst
+docs/puppet.rst
+docs/python.rst
+docs/security.rst
+docs/shell.rst
+docs/snmp.rst
+docs/troubleshooting.rst
+docs/xmldata.rst
+docs/_static/kibana.png
+docs/_static/python-hpilo.png
+docs/output/get_ahs_status
+docs/output/get_all_languages
+docs/output/get_all_licenses
+docs/output/get_all_user_info
+docs/output/get_all_users
+docs/output/get_asset_tag
+docs/output/get_asset_tag_1
+docs/output/get_cert_subject_info
+docs/output/get_critical_temp_remain_off
+docs/output/get_current_boot_mode
+docs/output/get_dir_config
+docs/output/get_dir_test_results
+docs/output/get_embedded_health
+docs/output/get_encrypt_settings
+docs/output/get_ers_settings
+docs/output/get_federation_all_groups
+docs/output/get_federation_all_groups_info
+docs/output/get_federation_group
+docs/output/get_federation_multicast
+docs/output/get_fips_status
+docs/output/get_fw_version
+docs/output/get_global_settings
+docs/output/get_host_data
+docs/output/get_host_power_saver_status
+docs/output/get_host_power_status
+docs/output/get_host_pwr_micro_ver
+docs/output/get_hotkey_config
+docs/output/get_ilo_event_log
+docs/output/get_language
+docs/output/get_network_settings
+docs/output/get_oa_info
+docs/output/get_one_time_boot
+docs/output/get_pending_boot_mode
+docs/output/get_pers_mouse_keyboard_enabled
+docs/output/get_persistent_boot
+docs/output/get_power_cap
+docs/output/get_power_readings
+docs/output/get_product_name
+docs/output/get_pwreg
+docs/output/get_rack_settings
+docs/output/get_sdcard_status
+docs/output/get_security_msg
+docs/output/get_server_auto_pwr
+docs/output/get_server_event_log
+docs/output/get_server_fqdn
+docs/output/get_server_name
+docs/output/get_server_power_on_time
+docs/output/get_smh_fqdn
+docs/output/get_snmp_im_settings
+docs/output/get_spatial
+docs/output/get_sso_settings
+docs/output/get_supported_boot_mode
+docs/output/get_tpm_status
+docs/output/get_twofactor_settings
+docs/output/get_uid_status
+docs/output/get_user
+docs/output/get_vm_status
+docs/output/xmldata
+docs/output/xmldata_1
+examples/ca/hpilo_ca
+examples/elasticsearch/hpilo_es_dump
+examples/elasticsearch/hpilo_es_import
+examples/elasticsearch/kibana-dashboard.json
+examples/elasticsearch/servers.py.example
+examples/firmwareupdater/hpilo_firmware_update
+examples/puppet/modules/ilo/lib/puppet/provider/ilo.rb
+examples/puppet/modules/ilo/lib/puppet/provider/ilo_firmware/ilo_firmware.rb
+examples/puppet/modules/ilo/lib/puppet/provider/ilo_license/ilo_license.rb
+examples/puppet/modules/ilo/lib/puppet/provider/ilo_settings/ilo_settings.rb
+examples/puppet/modules/ilo/lib/puppet/provider/ilo_user/ilo_user.rb
+examples/puppet/modules/ilo/lib/puppet/type/ilo_firmware.rb
+examples/puppet/modules/ilo/lib/puppet/type/ilo_license.rb
+examples/puppet/modules/ilo/lib/puppet/type/ilo_settings.rb
+examples/puppet/modules/ilo/lib/puppet/type/ilo_user.rb
+examples/puppet/modules/ilo/lib/puppet/util/network_device/ilo.rb
+examples/puppet/modules/ilo/lib/puppet/util/network_device/ilo/device.rb
+examples/puppet/modules/ilo/lib/puppet/util/network_device/ilo/facts.rb
+examples/puppet/modules/ilo/lib/puppet/util/network_device/ilo/transport.rb
+examples/puppet/modules/ilo/manifests/init.pp
+examples/puppet/modules/ilo/templates/ilo-device.erb
+python_hpilo.egg-info/PKG-INFO
+python_hpilo.egg-info/SOURCES.txt
+python_hpilo.egg-info/dependency_links.txt
+python_hpilo.egg-info/top_level.txt
\ No newline at end of file
diff --git a/python_hpilo.egg-info/dependency_links.txt b/python_hpilo.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/python_hpilo.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/python_hpilo.egg-info/top_level.txt b/python_hpilo.egg-info/top_level.txt
new file mode 100644
index 0000000..8fd83f0
--- /dev/null
+++ b/python_hpilo.egg-info/top_level.txt
@@ -0,0 +1,2 @@
+hpilo
+hpilo_fw
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..8bfd5a1
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,4 @@
+[egg_info]
+tag_build = 
+tag_date = 0
+
diff --git a/setup.py b/setup.py
index 6831500..eb2e9ba 100755
--- a/setup.py
+++ b/setup.py
@@ -1,9 +1,9 @@
 #!/usr/bin/python
 
-from distutils.core import setup
+from setuptools import setup
 
 setup(name = "python-hpilo",
-      version = "4.3",
+      version = "4.4.3",
       author = "Dennis Kaarsemaker",
       author_email = "dennis@kaarsemaker.net",
       url = "http://github.com/seveas/python-hpilo",

More details

Full run details