{"id":20110716,"url":"https://github.com/dell/pyu4v","last_synced_at":"2025-04-04T13:13:55.846Z","repository":{"id":34616103,"uuid":"66067761","full_name":"dell/PyU4V","owner":"dell","description":"PyU4V is a Python module that simplifies interaction with the Unisphere for PowerMax REST API. It wraps REST calls with simple APIs that abstracts the HTTP request and response handling.","archived":false,"fork":false,"pushed_at":"2024-10-17T16:06:34.000Z","size":12000,"stargazers_count":41,"open_issues_count":0,"forks_count":37,"subscribers_count":18,"default_branch":"master","last_synced_at":"2024-10-19T20:20:24.321Z","etag":null,"topics":["api","powermax","python","rest-api","unisphere","vmax"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dell.png","metadata":{"files":{"readme":"README.rst","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-19T08:48:09.000Z","updated_at":"2024-10-17T14:42:48.000Z","dependencies_parsed_at":"2024-04-09T10:46:50.901Z","dependency_job_id":"40beb490-7d54-4207-9f17-8d8a4246092a","html_url":"https://github.com/dell/PyU4V","commit_stats":{"total_commits":443,"total_committers":15,"mean_commits":"29.533333333333335","dds":0.5191873589164786,"last_synced_commit":"7debe47bc1b671aad8e30061ace5125b1e618301"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2FPyU4V","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2FPyU4V/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2FPyU4V/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dell%2FPyU4V/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dell","download_url":"https://codeload.github.com/dell/PyU4V/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247182420,"owners_count":20897381,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","powermax","python","rest-api","unisphere","vmax"],"created_at":"2024-11-13T18:13:26.676Z","updated_at":"2025-04-04T13:13:55.831Z","avatar_url":"https://github.com/dell.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Welcome to PyU4V 10.2\n=====================\n\n| |Maintenance| |OpenSource| |AskUs| |License| |Test| |Build| |Docs|\n| |Language| |PyVersions| |Unisphere| |Platform| |DTotal| |DMonth| |DWeek|\n\nOverview\n--------\n\nPyU4V is a Python module that simplifies interaction with the Unisphere for\nPowerMax REST API.  It wraps REST calls with simple APIs that abstract the HTTP\nrequest and response handling.\n\nFull documentation and user guides can be found in PyU4V's ReadTheDocs_.\n\nNote\n   You can get the Unisphere for PowerMax REST documentation by\n   navigating to a URL in your local instance of Unisphere for PowerMax.\n   Navigate to ``https://{ip-address}:{port}/univmax/restapi/docs``\n   where ``{ip-address}`` is the IP address of your Unisphere server and\n   ``{port}`` is the port it is listening on.\n\nPyU4V Version 10.2\n------------------\n\n+-------------------------------+----------------------------+\n| **Author**                    | Dell EMC                   |\n+-------------------------------+----------------------------+\n| **PyU4V Version**             | 10.2.0.2                   |\n+-------------------------------+----------------------------+\n| **Minimum Unisphere Version** | 10.2.0                     |\n+-------------------------------+----------------------------+\n| **Array Model**               | VMAX-3, VMAX AFA, PowerMax |\n+-------------------------------+----------------------------+\n| **Array uCode**               | HyperMax OS, PowerMax OS   |\n+-------------------------------+----------------------------+\n| **Platforms**                 | Linux, Windows             |\n+-------------------------------+----------------------------+\n| **Python**                    | 3.6, 3.7, 3.8, 3.9         |\n+-------------------------------+----------------------------+\n| **Requires**                  | Requests_, Six_, urllib3_  |\n+-------------------------------+----------------------------+\n\nNote\n    If you want to continue to use Unisphere 8.4.x or 9.0.x with PyU4V you will\n    need to remain on PyU4V 3.1.x. There is no support for PyU4V 9.x with any\n    version of Unisphere older than 9.1.x\n\nNote\n    PyU4V version 10.2 is compatible with scripts written for PyU4V versions\n    \u003e= 9.2. Please ensure to check change log to ensure that you are not\n    using functions that have been marked as depreciated.\n\nInstallation\n------------\n\nNote\n    A full installation guide can be found in PyU4V's ReadTheDocs_ which\n    includes additional configuration options around PyU4V logging.\n\nPyU4V can be installed from source, via ``pip``, or run directly from the\nsource directory. To clone PyU4V from source use ``git``::\n\n    $ git clone https://github.com/dell/PyU4V\n\nTo install from source navigate into the new ``PyU4V`` directory and use\n``pip``::\n\n    $ cd PyU4V/\n    $ pip install .\n\nInstalling via ``pip`` without cloning from source can be achieved by\nspecifying ``PyU4V`` as the install package for ``pip``::\n\n    $ pip install PyU4V\n    # Install a specific version\n    $ pip install PyU4V==10.2.0.1\n\nCopy the sample ``PyU4V.conf`` provided with PyU4V to either your working\ndirectory or within a directory named ``.PyU4V`` in your current users home\ndirectory. The ``.sample`` suffix has to be removed for the configuration file\nto become valid for loading by PyU4V::\n\n    $ mkdir ~/.PyU4V\n    $ cp PyU4V/PyU4V.conf.sample ~/.PyU4V/PyU4V.conf\n\nNote\n    If ``PyU4V.conf`` is present in both the current working directory and the\n    current user's home directory, the version of ``PyU4V.conf`` in the current\n    working directory will take precedence.\n\nEdit PyU4V configuration settings in ``PyU4V.conf`` under the ``[setup]``\nheading, these setting will need to reflect your environment configuration::\n\n    [setup]\n    username=pyu4v-user\n    password=secret-pass\n    server_ip=10.0.0.75\n    port=8443\n    array=00012345678\n    verify=/path-to-file/server_hostname.pem\n\nAlternatively, you can pass some or all of these details on initialisation.\nEnvironment configuration values ``password``, ``username``, ``server_ip``,\n``port``, and ``array`` **must** be set either in the config file or on\ninitialisation. SSL verification as indicated by the ``verify`` key in\n``PyU4V.conf`` is discussed in the next section.\n\nSSL CONFIGURATION\n-----------------\n\nIn order to enable SSL enabled communication between your host and the\nUnisphere server there are some additional steps required. First you must\nextract the CA certificate from Unisphere then either add it to the system\ncertificate bundle or specify the path to the cert in ``PyU4V.conf``. We will\ndemonstrate both approaches here.\n\nGet the CA certificate of the Unisphere server::\n\n    $ openssl s_client -showcerts -connect {server_hostname}:8443 \\\n    \u003c/dev/null 2\u003e/dev/null|openssl x509 -outform PEM \u003e {cert_name}.pem\n\n    # Example\n    $ openssl s_client -showcerts -connect 10.0.0.75:8443 \\\n    \u003c/dev/null 2\u003e/dev/null|openssl x509 -outform PEM \u003e unisphere91.pem\n\nWhere ``{server_host_ip}`` is the hostname or IP address of your Unisphere\nserver and ``{cert_name}`` is the name for your CA cert. This pulls the CA cert\nfile from the instance of Unisphere at ``10.0.0.75:8443`` and saves it as a\n``.pem`` file.\n\nTo add the cert to a CA certificate bundle, copy the ``.pem`` file to the\nsystem certificate directory and update the CA certificate database::\n\n    # cp {cert_name}.pem /usr/share/ca-certificates/{cert_name}.crt\n    # dpkg-reconfigure ca-certificates\n    # update-ca-certificates\n\nOnce the above steps are complete you will need to specify ``verify=True`` in\n``PyU4V.conf`` for PyU4V to load the required Unisphere CA cert from the system\ncertificate bundle::\n\n    [setup]\n    verify=True\n\nAlternatively you can skip adding the certificate to a certificate bundle and\npass it directly on PyU4V initialisation or specify the path to the certificate\ndirectly in ``PyU4V.conf``::\n\n    [setup]\n    verify=/path/to/file/{cert_name}.pem\n\nInitialise PyU4V Connection\n---------------------------\n\nInitialising PyU4V in your Python scripts is as simple as importing the library\nand initialising the connection (assuming you have ``PyU4V.conf`` configured as\noutlined in the previous section).\n\n.. code-block:: python\n\n    import PyU4V\n\n    conn = PyU4V.U4VConn()\n    conn.common.get_unisphere_version()\n    \u003e\u003e {'version': '10.2.0.2'}\n\nIf you wish to query another array without changing the configuration file,\ncall the connection ``set_array_id()`` function:\n\n.. code-block:: python\n\n    conn.set_array_id('000197123456')\n\nThe various types of functionality provided by PyU4V is separated into logical\nsections such as ``replication``, ``provisioning``, and ``performance``. For a\nfull API breakdown by section and some usage example please refer to the\nPyU4V ReadTheDocs_.\n\nSupport, Bugs, Issues\n---------------------\n\nPlease file support requests, bugs, and issues on the PyU4V GitHub-Issues_\npage for this project. For further information on opening an issue and\nrecommended issue templates please see the PyU4V ReadTheDocs_.\n\nFor questions asked on StackOverFlow_, please tag them with ``Dell``,\n``Dell EMC``, ``PowerMax``, and ``PyU4V`` to maximise the chances of the\ncorrect community members assisting.\n\nContributing\n------------\n\nPyU4V is built to be used openly by everyone, and in doing so we encourage\neveryone to submit anything they may deem to be an improvement, addition, bug\nfix, or other change which may benefit other users of PyU4V.\n\nThere are some requirements when submitting for PyU4V, such as coding\nstandards, building unit tests and continuous integration tests, and going\nthrough a formal code review process, however anyone familiar with open source\ndevelopment will be familiar with this process.  There are a number of core\nPyU4V reviewers and once a submission has approvals from two or more core\nreviewers and all tests are running cleanly then the request will be merged\nwith the upstream PyU4V repo.\n\nFor a full breakdown of contribution requirements, coding standards, submitting\nand everything else in between please refer to PyU4V ReadTheDocs_.\n\nTools\n-----\n\nPlease refer to the Tools section of ReadTheDocs_ for OpenStack functionality\nto migrate volumes to the new REST masking view structure.\n\nDisclaimer\n----------\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the Apache 2.0 License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n\n.. BadgeLinks\n\n.. |Maintenance| image:: https://img.shields.io/badge/Maintained-Yes-blue\n   :target: https://github.com/dell/PyU4V/commits/master\n.. |OpenSource| image:: https://img.shields.io/badge/Open%20Source-Yes-blue\n   :target: https://github.com/dell/PyU4V\n.. |AskUs| image:: https://img.shields.io/badge/Ask%20Us...-Anything-blue\n   :target: https://github.com/dell/PyU4V/issues\n.. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue\n   :target: https://github.com/dell/PyU4V/blob/master/LICENSE\n.. |Test| image:: https://img.shields.io/badge/Tests-Passing-blue\n.. |Build| image:: https://img.shields.io/badge/Build-Passing-blue\n.. |Docs| image:: https://img.shields.io/badge/Docs-Passing-blue\n.. |Language| image:: https://img.shields.io/badge/Language-Python%20-blue\n   :target: https://www.python.org/\n.. |PyVersions| image:: https://img.shields.io/badge/Python-3.6%20%7C%203.7%20%7C%203.8%20%7C%203.9-blue\n   :target: https://github.com/dell/PyU4V/blob/master/README.rst\n.. |Platform| image:: https://img.shields.io/badge/Platform-Linux%20%7C%20Windows-blue\n   :target: https://github.com/dell/PyU4V/blob/master/README.rst\n.. |Unisphere| image:: https://img.shields.io/badge/Unisphere-10.0-blue\n   :target: https://www.dell.com/support/home/us/en/19/product-support/product/unisphere-powermax/overview\n.. |DTotal| image:: https://pepy.tech/badge/pyu4v\n   :target: https://pepy.tech/project/pyu4v\n.. |DMonth| image:: https://pepy.tech/badge/pyu4v/month\n   :target: https://pepy.tech/project/pyu4v/month\n.. |DWeek| image:: https://pepy.tech/badge/pyu4v/week\n   :target: https://pepy.tech/project/pyu4v/week\n\n.. README URL Links\n\n.. _Requests: https://realpython.com/python-requests/\n.. _Six: https://six.readthedocs.io/\n.. _urllib3: https://urllib3.readthedocs.io/en/latest/\n.. _ReadTheDocs: https://pyu4v.readthedocs.io/en/latest/\n.. _GitHub-Issues: https://github.com/dell/PyU4V/issues\n.. _StackOverFlow: https://stackoverflow.com/search?q=PyU4V\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdell%2Fpyu4v","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdell%2Fpyu4v","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdell%2Fpyu4v/lists"}