deploy: ipmi adapter: Add <port> config support. 29/14529/5
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Mon, 23 May 2016 20:09:41 +0000 (22:09 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 26 May 2016 12:50:43 +0000 (14:50 +0200)
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: Ibff1309b17733af1a6fc8c5008495f42d7ef084a

patches/opnfv-fuel/0030-deploy-ipmi-adapter-Add-port-config-support.patch [new file with mode: 0644]

diff --git a/patches/opnfv-fuel/0030-deploy-ipmi-adapter-Add-port-config-support.patch b/patches/opnfv-fuel/0030-deploy-ipmi-adapter-Add-port-config-support.patch
new file mode 100644 (file)
index 0000000..4b5a893
--- /dev/null
@@ -0,0 +1,74 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 23 May 2016 22:06:09 +0200
+Subject: [PATCH] deploy: ipmi adapter: Add <port> config support.
+
+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`.
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ deploy/dha_adapters/hp_adapter.py   | 2 +-
+ deploy/dha_adapters/ipmi_adapter.py | 7 +++++--
+ deploy/reap.py                      | 2 ++
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/deploy/dha_adapters/hp_adapter.py b/deploy/dha_adapters/hp_adapter.py
+index 13bb349..6434da8 100644
+--- a/deploy/dha_adapters/hp_adapter.py
++++ b/deploy/dha_adapters/hp_adapter.py
+@@ -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):
+diff --git a/deploy/dha_adapters/ipmi_adapter.py b/deploy/dha_adapters/ipmi_adapter.py
+index 283bd57..f4f2e6a 100644
+--- a/deploy/dha_adapters/ipmi_adapter.py
++++ b/deploy/dha_adapters/ipmi_adapter.py
+@@ -30,12 +30,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):
+diff --git a/deploy/reap.py b/deploy/reap.py
+index 6feaf17..9933d1d 100755
+--- a/deploy/reap.py
++++ b/deploy/reap.py
+@@ -59,6 +59,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]