meta-phosphor: ipmitool: add tool to update IANA ENs

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Id6b8d58933de41574591eaa83e9929a7ce1a5598
diff --git a/meta-phosphor/recipes-phosphor/ipmi/ipmitool/update-enterprise-numbers b/meta-phosphor/recipes-phosphor/ipmi/ipmitool/update-enterprise-numbers
new file mode 100755
index 0000000..ff66a28
--- /dev/null
+++ b/meta-phosphor/recipes-phosphor/ipmi/ipmitool/update-enterprise-numbers
@@ -0,0 +1,68 @@
+#!/bin/env python3
+
+from sh import curl
+from typing import List
+
+ENTERPRISES = {
+    0: "Reserved",
+    2: "IBM",
+    343: "Intel Corporation",
+    674: "Dell Inc.",
+    1694: "HCL Technologies Limited",
+    2487: "Phoenix Technologies Ltd.",
+    4128: "ARM Ltd.",
+    6569: "INVENTEC CORPORATION",
+    7244: "Quanta Computer Inc.",
+    8554: "Departement Elektrotechnik, ETH Zuerich",
+    11129: "Google, Inc.",
+    11183: "Mitac International Corp.",
+    19046: "Lenovo Enterprise Business Group",
+    20974: "American Megatrends, Inc",
+    33049: "Mellanox Technologies LTD",
+    40092: "Wiwynn Corporation",
+    40981: "Facebook, Inc.",
+    42817: "IBM Platform Firmware Division",
+    45065: "Insyde",
+    48482: "Linaro Ltd",
+    48512: "Inspur Group Co.,Ltd.",
+    49150: "Vertiv Co",
+    49769: "YADRO",
+    51974: "Raptor Computing Systems, LLC",
+    52538: "Ampere Computing",
+}
+
+HEADER = '''\
+This file has been reduced to entities signing CLAs with OpenBMC
+https://drive.google.com/drive/folders/1Ooi0RdTcaOWF1DWFJUAJDdN7tRKde7Nl\
+'''
+
+found_first: bool = False
+org: List[str] = []
+
+for l in curl(
+    "-L", "http://www.iana.org/assignments/enterprise-numbers"
+).splitlines():
+    line = l.rstrip()
+
+    # Look for Reserved/EN-0 as the start of the data.
+    if "0" == line:
+        found_first = True
+
+    # Haven't found EN-0, emit as is.
+    if not found_first:
+        print(line)
+        # Look for magic string.
+        if line.startswith("This file is "):
+            print(HEADER)
+        continue
+
+    # Add line into 'org' set.
+    org.append(line)
+
+    # Every 4 lines (EN, Org, Contact, Email) make an org.
+    if len(org) == 4:
+        if int(org[0]) in ENTERPRISES:
+            for g in org:
+                print(g)
+
+        org = []