deploy: ipmi adapter: Add <port> config support. 07/14907/2
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Mon, 23 May 2016 20:06:09 +0000 (22:06 +0200)
committerJonas Bjurel <jonas.bjurel@ericsson.com>
Wed, 15 Jun 2016 08:19:21 +0000 (08:19 +0000)
Sometimes the IPMI lanplus protocol listens on a non-standard
remote port, e.g. when target nodes are interfaced through a
fake IPMI BMC application that listens on multiple ports on the
same IP address.

Therefore, allow setting IPMI port in the DHA using a new
property named `ipmiPort`, and pass it along to `ipmitool` when set.

CHANGE: get_access_info now also supports specifying the IPMI
port to use with `ipmitool` by configuring the `ipmiPort`
property in the DHA.

hp_adapter.py: updated `get_access_info` return signature with
the new (unused there) `ipmiport`.

Change-Id: I620176bd7f466aa460518cf12d15ccbe86a22560
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
deploy/dha_adapters/hp_adapter.py
deploy/dha_adapters/ipmi_adapter.py
deploy/reap.py

index 13bb349..6434da8 100644 (file)
@@ -29,7 +29,7 @@ class HpAdapter(IpmiAdapter):
 
     def node_set_boot_order(self, node_id, boot_order_list):
         log('Set boot order %s on Node %s' % (boot_order_list, node_id))
-        ip, username, password = self.get_access_info(node_id)
+        ip, username, password, ipmiport = self.get_access_info(node_id)
         ssh = SSHClient(ip, username, password)
         with ssh as s:
             for order, dev in enumerate(boot_order_list):
index 8fda4f9..4bd6bd3 100644 (file)
@@ -27,12 +27,15 @@ class IpmiAdapter(HardwareAdapter):
         ip = self.get_node_property(node_id, 'ipmiIp')
         username = self.get_node_property(node_id, 'ipmiUser')
         password = self.get_node_property(node_id, 'ipmiPass')
-        return ip, username, password
+        ipmiport = self.get_node_property(node_id, 'ipmiPort')
+        return ip, username, password, ipmiport
 
     def ipmi_cmd(self, node_id):
-        ip, username, password = self.get_access_info(node_id)
+        ip, username, password, ipmiport = self.get_access_info(node_id)
         cmd = 'ipmitool -I lanplus -A password'
         cmd += ' -H %s -U %s -P %s' % (ip, username, password)
+        if ipmiport:
+            cmd += ' -p %d' % int(ipmiport)
         return cmd
 
     def get_node_pxe_mac(self, node_id):
index c642a42..7624d6f 100644 (file)
@@ -57,6 +57,8 @@ adapter:
 #       ipmiIp
 #       ipmiUser
 #       ipmiPass
+#     and you *MAY* provide (optional, not added by reap.py):
+#       ipmiPort
 #   - libvirt adapter you need to provide:
 #       libvirtName: <whatever>
 #       libvirtTemplate: [libvirt/vms/controller.xml | libvirt/vms/compute.xml]