{"id":29342851,"url":"https://github.com/jbrt/devicewwn","last_synced_at":"2025-07-08T11:08:02.744Z","repository":{"id":62567851,"uuid":"56182257","full_name":"jbrt/devicewwn","owner":"jbrt","description":"Manipulating Fibre Channel WWN easily with decoding capabilities","archived":false,"fork":false,"pushed_at":"2020-10-06T18:07:56.000Z","size":33,"stargazers_count":2,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-09T10:54:22.497Z","etag":null,"topics":["emc","fibrechannel","ibm","netapp","wwn"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbrt.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-13T20:05:33.000Z","updated_at":"2020-12-02T00:07:27.000Z","dependencies_parsed_at":"2022-11-03T17:00:42.911Z","dependency_job_id":null,"html_url":"https://github.com/jbrt/devicewwn","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/jbrt/devicewwn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbrt%2Fdevicewwn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbrt%2Fdevicewwn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbrt%2Fdevicewwn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbrt%2Fdevicewwn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbrt","download_url":"https://codeload.github.com/jbrt/devicewwn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbrt%2Fdevicewwn/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264257674,"owners_count":23580469,"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":["emc","fibrechannel","ibm","netapp","wwn"],"created_at":"2025-07-08T11:07:58.884Z","updated_at":"2025-07-08T11:08:02.739Z","avatar_url":"https://github.com/jbrt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"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   \u003e\u003e\u003e from devicewwn.factory import WWNFactory\n   \u003e\u003e\u003e factory = WWNFactory()\n   \u003e\u003e\u003e wwn1 = factory.create(\"10000000c9907a92\")\n   \u003e\u003e\u003e wwn1\n   \u003cWWN(10:00:00:00:c9:90:7a:92)\u003e\n   \u003e\u003e\u003e\n   \u003e\u003e\u003e\n   \u003e\u003e\u003e wwn2 = factory.create(\"50:00:09:72:08:13:49:AD\")\n   \u003e\u003e\u003e wwn2\n   \u003cEmcVmaxWWN(50:00:09:72:08:13:49:ad)\u003e\n\n**You can use ‘:’ 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 ‘Device WWN’\n(compliant IEEE NAA6) used to identify a specific LUN in many devices.\n\n::\n\n   \u003e\u003e\u003e from devicewwn.vendors.EMC.Symmetrix import EmcVmaxWWN\n   \u003e\u003e\u003e wwn = EmcVmaxWWN('6006048000018790064853594d353844')\n   \u003e\u003e\u003e wwn\n   \u003cEmcDmxWWN(60:06:04:80:00:01:87:90:06:48:53:59:4d:35:38:44)\u003e\n   \u003e\u003e\u003e\n\nCompare WWN\n-----------\n\nThe comparison between WWN is also possible (even between an WWN object\nand a string) :\n\n::\n\n   \u003e\u003e\u003e from devicewwn.factory import WWNFactory\n   \u003e\u003e\u003e factory = WWNFactory()\n   \u003e\u003e\u003e wwn1 = factory.create('50000972081349AD')\n   \u003e\u003e\u003e wwn2 = factory.create('50000972081349AD')\n   \u003e\u003e\u003e wwn1 == wwn2\n   True\n   \u003e\u003e\u003e wwn1 == '50000972081349AD'\n   True\n   \u003e\u003e\u003e\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 ‘decode’ of the WWN class is used to extract these\ninformations (if available)\n\n::\n\n   \u003e\u003e\u003e from devicewwn.factory import WWNFactory\n   \u003e\u003e\u003e factory = WWNFactory()\n   \u003e\u003e\u003e wwn = factory.create('50000972081349AD')\n   \u003e\u003e\u003e 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   \u003e\u003e\u003e from devicewwn.vendors.EMC.Symmetrix import EmcVmaxWWN\n   \u003e\u003e\u003e wwn = EmcVmaxWWN('60000970000292605199533030384638')\n   \u003e\u003e\u003e wwn.decode\n   'VMAX S/N:000292605199 HVE:08F8'\n   \u003e\u003e\u003e\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 ‘:’ in the string\n-  wwn_to_binary : convert the WWN to binary form\n\n::\n\n   \u003e\u003e\u003e wwn.oui\n   '00:60:48'\n   \u003e\u003e\u003e wwn.wwn_nodots\n   '5006048accc86a32'\n   \u003e\u003e\u003e wwn.wwn_to_binary\n   '101000000000110000001001000101011001100110010000110101000110010'\n\nLicense\n-------\n\nSee LICENSE file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbrt%2Fdevicewwn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbrt%2Fdevicewwn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbrt%2Fdevicewwn/lists"}