{ "info": { "author": "Julien B.", "author_email": "julien@toshokan.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Utilities" ], "description": "Device WWN\n==========\n\n.. image:: https://travis-ci.com/jbrt/devicewwn.svg?branch=master\n :target: https://travis-ci.com/jbrt/devicewwn\n\nThis package provide a simple way to manipulate Fibre Channel WWN in a\nSAN Storage environment with decoding capabilities. Most of storage\nmanufacturers encodes some information in the WWN of their equipment\n(serials numbers, directors names, etc.).\n\nThis package can extract these information for the following devices :\n\n- EMC Symmetrix DMX, VMAX and VMAX3\n- EMC VPLEX\n- NetApp FAS\n- Hitachi (thank you @hille721)\n\n**Pull requests are welcome ! :-)**\n\nCreate a WWN\n------------\n\nYou can create your WWN objects with a dedicated factory method. The\nreturn type will WWN or the specific type of the manufacturer (if\navailable) :\n\n::\n\n >>> from devicewwn.factory import WWNFactory\n >>> factory = WWNFactory()\n >>> wwn1 = factory.create(\"10000000c9907a92\")\n >>> wwn1\n \n >>>\n >>>\n >>> wwn2 = factory.create(\"50:00:09:72:08:13:49:AD\")\n >>> wwn2\n \n\n**You can use \u2018:\u2019 as separator (or not) between the bytes of your WWN**.\nExample: 50000972081349AD or 50:00:09:72:08:13:49:ad are accepted\n\nThis package supports also the use of WWN objects called \u2018Device WWN\u2019\n(compliant IEEE NAA6) used to identify a specific LUN in many devices.\n\n::\n\n >>> from devicewwn.vendors.EMC.Symmetrix import EmcVmaxWWN\n >>> wwn = EmcVmaxWWN('6006048000018790064853594d353844')\n >>> wwn\n \n >>>\n\nCompare WWN\n-----------\n\nThe comparison between WWN is also possible (even between an WWN object\nand a string) :\n\n::\n\n >>> from devicewwn.factory import WWNFactory\n >>> factory = WWNFactory()\n >>> wwn1 = factory.create('50000972081349AD')\n >>> wwn2 = factory.create('50000972081349AD')\n >>> wwn1 == wwn2\n True\n >>> wwn1 == '50000972081349AD'\n True\n >>>\n\nExtract the information encoded in a WWN\n----------------------------------------\n\nSome manufacturers encode information in the WWNs of their equipments.\nThese information are not the same between manufacturers but,\ngenerally, you can obtain the serial number of your device, a port or a\ndirector port number (very useful to identify easily an equipment on\nyour network).\n\nThe property \u2018decode\u2019 of the WWN class is used to extract these\ninformations (if available)\n\n::\n\n >>> from devicewwn.factory import WWNFactory\n >>> factory = WWNFactory()\n >>> wwn = factory.create('50000972081349AD')\n >>> wwn.decode\n 'VMAX-20K S/N:HK192601234 Dir:12G Port:1'\n\nThe decode property can be also used with the WWNs NAA6 to obtain\nspecific informations (very useful with the Symmetrix arrays):\n\n::\n\n >>> from devicewwn.vendors.EMC.Symmetrix import EmcVmaxWWN\n >>> wwn = EmcVmaxWWN('60000970000292605199533030384638')\n >>> wwn.decode\n 'VMAX S/N:000292605199 HVE:08F8'\n >>>\n\nUseful properties\n-----------------\n\nAnother properties are available :\n\n- oui : extract the OUI (Organization Unique Identifier) of the WWN\n- wwn_nodots : display the WWN without \u2018:\u2019 in the string\n- wwn_to_binary : convert the WWN to binary form\n\n::\n\n >>> wwn.oui\n '00:60:48'\n >>> wwn.wwn_nodots\n '5006048accc86a32'\n >>> wwn.wwn_to_binary\n '101000000000110000001001000101011001100110010000110101000110010'\n\nLicense\n-------\n\nSee LICENSE file for more information.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/jbrt/devicewwn", "keywords": "WWN SAN storage emc Symmetrix VMAX netapp Fibre Channel", "license": "GPLv3", "maintainer": "", "maintainer_email": "", "name": "devicewwn", "package_url": "https://pypi.org/project/devicewwn/", "platform": "", "project_url": "https://pypi.org/project/devicewwn/", "project_urls": { "Homepage": "http://github.com/jbrt/devicewwn" }, "release_url": "https://pypi.org/project/devicewwn/0.8.0/", "requires_dist": null, "requires_python": "", "summary": "Manipulating Fibre Channel WWN easily with decoding capabilities", "version": "0.8.0", "yanked": false, "yanked_reason": null }, "last_serial": 8352648, "releases": { "0.5": [ { "comment_text": "", "digests": { "md5": "299a8f4a941939409c90a856516ed7b8", "sha256": "33d482d41466c5ed6d3ab90b29a87f851961c2a634a73e39361287e7dcaf930b" }, "downloads": -1, "filename": "devicewwn-0.5-py3.5.egg", "has_sig": false, "md5_digest": "299a8f4a941939409c90a856516ed7b8", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 20422, "upload_time": "2018-04-14T11:25:30", "upload_time_iso_8601": "2018-04-14T11:25:30.183150Z", "url": "https://files.pythonhosted.org/packages/5f/1e/9b0cdcd0f7a9cffe6d583598bcd0e07122e8e98b6db456a3366f98b80a5d/devicewwn-0.5-py3.5.egg", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d753f9773f5e6219bca6f97d3e9308ff", "sha256": "0ee8ac9b7d6e26008d2970fb43b2625ac26e0a82e84ab5442134ba47890d121d" }, "downloads": -1, "filename": "devicewwn-0.5.tar.gz", "has_sig": false, "md5_digest": "d753f9773f5e6219bca6f97d3e9308ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4808, "upload_time": "2016-04-22T16:10:48", "upload_time_iso_8601": "2016-04-22T16:10:48.144632Z", "url": "https://files.pythonhosted.org/packages/90/7e/37cdb5ae3a26b962da167b34943086258e83ae07bda547fc98e10878bcb7/devicewwn-0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6": [ { "comment_text": "", "digests": { "md5": "a3e0e5f758c4d869466f83518a7f98bb", "sha256": "bc88f6bc208e2af363a47898b71be34dae6ae3f309a9c6232b299d9b8534a147" }, "downloads": -1, "filename": "devicewwn-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "a3e0e5f758c4d869466f83518a7f98bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9761, "upload_time": "2018-04-14T11:25:28", "upload_time_iso_8601": "2018-04-14T11:25:28.819721Z", "url": "https://files.pythonhosted.org/packages/bb/d5/87df9aa29cfc46e86c9a89400492883cfe36859ec2318d84928716ccfe1d/devicewwn-0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fe916f546bc6951f3dd43df5b711e9c4", "sha256": "a1bde161f777141c8651d8f31cf413cd7055d38d4d631543ce59a64e72d5e9af" }, "downloads": -1, "filename": "devicewwn-0.6.tar.gz", "has_sig": false, "md5_digest": "fe916f546bc6951f3dd43df5b711e9c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6058, "upload_time": "2018-04-14T11:25:31", "upload_time_iso_8601": "2018-04-14T11:25:31.871217Z", "url": "https://files.pythonhosted.org/packages/f5/af/957927178733b6c219a88456d77c08ca84091e8932f46833b2c8b40f04cc/devicewwn-0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "17ead950f93e47beea0caa9e5d00fc10", "sha256": "b6e9c5e2f8484b082ff40a1eaeec9f6250b8e7110e43568b3af788d67d3168bf" }, "downloads": -1, "filename": "devicewwn-0.6.3-py3-none-any.whl", "has_sig": false, "md5_digest": "17ead950f93e47beea0caa9e5d00fc10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11930, "upload_time": "2018-04-28T11:37:33", "upload_time_iso_8601": "2018-04-28T11:37:33.008522Z", "url": "https://files.pythonhosted.org/packages/50/d2/7cc520abe94ff472d5fd63d91b09880e2f8b4010341feaad29cd74102a2f/devicewwn-0.6.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c55417314b14a4309d8026e3a957c5c2", "sha256": "11677b4678dee88539d568ec64cbc1f7e5e89f0fdaa7386f695804fe148f841e" }, "downloads": -1, "filename": "devicewwn-0.6.3.tar.gz", "has_sig": false, "md5_digest": "c55417314b14a4309d8026e3a957c5c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6416, "upload_time": "2018-04-28T11:37:34", "upload_time_iso_8601": "2018-04-28T11:37:34.065689Z", "url": "https://files.pythonhosted.org/packages/6a/69/fda653d426b94ea66f390e2e4d2bcb76e0e1ef76177d17ba234d6d12ccd4/devicewwn-0.6.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "4b489c43ad722daed3b14ed60a649ddb", "sha256": "b53fb5fca252a86e840683ce665c828dffa72d6d4c9ed75a3ebde4d1dd38778e" }, "downloads": -1, "filename": "devicewwn-0.6.4.tar.gz", "has_sig": false, "md5_digest": "4b489c43ad722daed3b14ed60a649ddb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7255, "upload_time": "2019-10-27T09:28:04", "upload_time_iso_8601": "2019-10-27T09:28:04.158267Z", "url": "https://files.pythonhosted.org/packages/b1/a1/585192812ea4cd3cdcfb011844ae7739a1f51903ae4e35fab5f4e5c5d979/devicewwn-0.6.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "09376a0e1ec76685c30b57e9c9df826a", "sha256": "d277b113909979a48ed55027680c3fd6cdaa8231107f7f2d29a43d2c18669e03" }, "downloads": -1, "filename": "devicewwn-0.7.0.tar.gz", "has_sig": false, "md5_digest": "09376a0e1ec76685c30b57e9c9df826a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8836, "upload_time": "2020-08-30T07:36:34", "upload_time_iso_8601": "2020-08-30T07:36:34.232686Z", "url": "https://files.pythonhosted.org/packages/8f/42/e45ac0fb6922ea4854ff0d9c628128ec424f3933865166e4bc69c2bfac13/devicewwn-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "edd5327c0662a943f3c60ba755f55f4c", "sha256": "ce2058f1ed311866355ea8f3a9d412da8927448ba4bee0d81c841a20c7ba044a" }, "downloads": -1, "filename": "devicewwn-0.8.0.tar.gz", "has_sig": false, "md5_digest": "edd5327c0662a943f3c60ba755f55f4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9228, "upload_time": "2020-10-06T18:03:49", "upload_time_iso_8601": "2020-10-06T18:03:49.509784Z", "url": "https://files.pythonhosted.org/packages/03/b5/754573268b04f28b987269413adf00417e3b0e452b68bae6e6e01d4a8468/devicewwn-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "edd5327c0662a943f3c60ba755f55f4c", "sha256": "ce2058f1ed311866355ea8f3a9d412da8927448ba4bee0d81c841a20c7ba044a" }, "downloads": -1, "filename": "devicewwn-0.8.0.tar.gz", "has_sig": false, "md5_digest": "edd5327c0662a943f3c60ba755f55f4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9228, "upload_time": "2020-10-06T18:03:49", "upload_time_iso_8601": "2020-10-06T18:03:49.509784Z", "url": "https://files.pythonhosted.org/packages/03/b5/754573268b04f28b987269413adf00417e3b0e452b68bae6e6e01d4a8468/devicewwn-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }