There is an update to the HPC software stack, bringing xCAT to 2.14.5.lenovo1, based on 2.14.5, and confluent is brought to 2.2.0.

Here are some of the highlighted changes:

nodersync command

Like nodeshell does for ssh commands, nodersync supervises using rsync to push a file or directory to multiple nodes.

nodestorage command

Ability to create and delete volumes and arrays through the xClarity Controller. Examples:

$ nodestorage d5 show
d5: Disk drive_0 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_0 State: unconfigured
d5: Disk drive_0 FRU: 00LF039
d5: Disk drive_0 Serial Number: S470YV16
d5: Disk drive_1 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_1 State: unconfigured
d5: Disk drive_1 FRU: 00LF039
d5: Disk drive_1 Serial Number: S470RYXR
d5: Disk drive_2 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_2 State: unconfigured
d5: Disk drive_2 FRU: 00LF039
d5: Disk drive_2 Serial Number: S470Z5QA
d5: Disk drive_3 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_3 State: unconfigured
d5: Disk drive_3 FRU: 00LF039
d5: Disk drive_3 Serial Number: S470XWRZ
d5: Disk m.2-0 Description: 128GB M.2 SATA SSD
d5: Disk m.2-0 State: unconfigured
d5: Disk m.2-0 FRU: 00LF428
d5: Disk m.2-0 Serial Number: H688001Y
d5: Disk m.2-1 Description: 128GB M.2 SATA SSD
d5: Disk m.2-1 State: unconfigured
d5: Disk m.2-1 FRU: 00LF428
d5: Disk m.2-1 Serial Number: H688001Z
$ nodestorage d5 create -r 0 -d drive_0,drive_1,drive_2,drive_3 -n data
d5: Volume data: Size: 3.811 TB
d5: Volume data: State: Optimal
d5: Volume data: Array 1-4
$ nodestorage d5 create -r 1 -d rest -n os
d5: Volume os: Size: 122.040 GB
d5: Volume os: State: Optimal
d5: Volume os: Array 0-0
$ nodestorage d5 show
d5: Disk drive_0 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_0 State: online
d5: Disk drive_0 FRU: 00LF039
d5: Disk drive_0 Serial Number: S470YV16
d5: Disk drive_0 Array: 1-4
d5: Disk drive_1 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_1 State: online
d5: Disk drive_1 FRU: 00LF039
d5: Disk drive_1 Serial Number: S470RYXR
d5: Disk drive_1 Array: 1-4
d5: Disk drive_2 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_2 State: online
d5: Disk drive_2 FRU: 00LF039
d5: Disk drive_2 Serial Number: S470Z5QA
d5: Disk drive_2 Array: 1-4
d5: Disk drive_3 Description: 1.00TB 7.2K 6Gbps SATA 2.5" HDD
d5: Disk drive_3 State: online
d5: Disk drive_3 FRU: 00LF039
d5: Disk drive_3 Serial Number: S470XWRZ
d5: Disk drive_3 Array: 1-4
d5: Disk m.2-0 Description: 128GB M.2 SATA SSD
d5: Disk m.2-0 State: online
d5: Disk m.2-0 FRU: 00LF428
d5: Disk m.2-0 Serial Number: H688001Y
d5: Disk m.2-0 Array: 0-0
d5: Disk m.2-1 Description: 128GB M.2 SATA SSD
d5: Disk m.2-1 State: online
d5: Disk m.2-1 FRU: 00LF428
d5: Disk m.2-1 Serial Number: H688001Z
d5: Disk m.2-1 Array: 0-0
d5: Array 1-4 Available Capacity: 0.000 MB
d5: Array 1-4 Total Capacity: 3.811 TB
d5: Array 1-4 RAID: RAID 0
d5: Array 1-4 Disks: drive_0,drive_1,drive_2,drive_3
d5: Array 1-4 Volumes: data
d5: Array 0-0 Available Capacity: 0.000 MB
d5: Array 0-0 Total Capacity: 131.072 GB
d5: Array 0-0 RAID: RAID 1
d5: Array 0-0 Disks: m.2-0,m.2-1
d5: Array 0-0 Volumes: os
d5: Volume data: Size: 3.811 TB
d5: Volume data: State: Optimal
d5: Volume data: Array 1-4
d5: Volume os: Size: 122.040 GB
d5: Volume os: State: Optimal
d5: Volume os: Array 0-0
$ nodestorage d5 delete -n data
Deleted: data

Revamped nodediscover command behavior

Fields can now be selected and the results can be ordered by any requested field. New fields include switch, port, otherip, and bay.

$ nodediscover list -o node -f node,serial,model,type,switch,port,bay -t lenovo-xcc
  Node|   Serial|      Model|       Type| Switch|       Port| Bay
------|---------|-----------|-----------|-------|-----------|----
      | J30001C1| 7X83CTO3WW| lenovo-xcc|   r8e1| Ethernet48|    
      | J30008VD| 7X02CTO1WW| lenovo-xcc|   r8e1| Ethernet48|    
    d1| DVJJ1086| 7X2106Z009| lenovo-xcc|   r8e1| Ethernet35|   1
    d2| J1001PNG| 7X21CTO1WW| lenovo-xcc|   r8e1| Ethernet35|   2
    d3| DVJJ1042| 7X2104Z000| lenovo-xcc|   r8e1| Ethernet35|   3
    d4| DVJJ1022| 7X2104Z000| lenovo-xcc|   r8e1| Ethernet35|   4
    d5| J1001PNF| 7X21CTO1WW| lenovo-xcc|   r8e1| Ethernet37|   1
    d6| J1001PNE| 7X21CTO1WW| lenovo-xcc|   r8e1| Ethernet37|   2
    d7| 00000864| 7X2104Z023| lenovo-xcc|   r8e1| Ethernet37|   3
    d8| DVJJ1003| 7X2104Z000| lenovo-xcc|   r8e1| Ethernet37|   4
 r8u32| J30002HG| 7X07CTO1WW| lenovo-xcc|   r8e1| Ethernet32|    
 r8u33| J30002H3| 7X03CTO1WW| lenovo-xcc|   r8e1| Ethernet33|    

switches may now be added directly and indirectly

Switches previously could only be indirectly referenced to appear in the /networking apis, now setting a node with type=’switch’ will cause it to be included even if it has no nodes.

$ nodedefine r8t1 type=switch
r8t1: created

Default autofill of collective.manager on discovery

If in a collective, confluent now by default selects the node that performs discovery as the collective manager. It continues to honor manually indicated collective.manager, this only changes the behavior if confluent is in a collective, a node is discovered, and no collective.manager is set. collective.manager still must be manually set if bypassing the discovery facility in a collective configuration.

confluent2lxca, confluent2xcat, and confluent2ansible

Commands to generate import data for xClarity Administrator, xCAT, and ansible from confluent attributes.

$ confluent2xcat d3-d6 -m mac.csv
$ cat mac.csv
#node,mac
d3,08:94:ef:3f:e1:32
d4,08:94:ef:41:01:f0
d5,08:94:ef:50:be:c2
d6,08:94:ef:50:23:60
$ confluent2xcat d3-d6 -o nodes.stanza
$ cat nodes.stanza 
d3:
   objtype=node
   arch=x86_64
   netboot=xnba
   mgt=ipmi
   bmc=fe80::a94:efff:fe3f:e0af%eth1
   mac=08:94:ef:3f:e1:32
   slotid=3
   groups=everything,hoplite,dense,compute
   mpa=smm1

d4:
   objtype=node
   arch=x86_64
   netboot=xnba
   mgt=ipmi
   bmc=fe80::a94:efff:fe41:1b5%eth1
   mac=08:94:ef:41:01:f0
   slotid=4
   groups=everything,dense,compute
   mpa=smm1

d5:
   objtype=node
   arch=x86_64
   netboot=xnba
   mgt=ipmi
   bmc=fe80::a94:efff:fe50:b75d%eth1
   mac=08:94:ef:50:be:c2
   slotid=1
   groups=everything,dense,compute
   mpa=smm2

d6:
   objtype=node
   arch=x86_64
   netboot=xnba
   mgt=ipmi
   bmc=fe80::a94:efff:fe50:1c6b%eth1
   mac=08:94:ef:50:23:60
   slotid=2
   groups=everything,dense,compute
   mpa=smm2

PAM enabled by default, usable alongside internal database

PAM passwords for confluent accounts is new enabled by default. Unlike before, internal accounts can be used while PAM is also enabled. Performance is also improved with PAM authentication.

nodeconsole can now open terminals tiled

nodeconsole -t can be used to open a noderange of consoles in a terminal, using tmux to share the screen

nodeconfig now accepts batch scripts

The batch files can mix and match three syntaxes:

$ cat settings.batch 
set Processors.HyperThreading Disable
Processors.IntelVirtualizationTechnology: Disable
Processors.SNC=Enable
$ nodeconfig d3 -b settings.batch
$ nodeconfig d3 processors.hyperthreading processors.intelvirtualizationtechnology processors.snc
d3: Processors.HyperThreading: Disable
d3: Processors.IntelVirtualizationTechnology: Disable
d3: Processors.SNC: Enable

Improved performance of nodesensors/nodehealth

IPMI SDR caches are now retained across restarts of the service.

nodelicense command now available to manage firmware license keys

nodemedia can now take a parameterized filename to be unique per node

$ nodemedia d4,d6 attach http://172.30.0.254/install/isos/{node}.iso
d6: http://172.30.0.254/install/isos/d6.iso (insecure)
d4: http://172.30.0.254/install/isos/d4.iso (insecure)

Discovery process can now relax reuse and complexity password policies

A commonly requested set of behaviors is shown:

$ nodeattrib d3 discovery.passwordrules=expiration=no,loginfailures=no,reuse=0,complexity=no
d3: expiration=no,loginfailures=no,reuse=0,complexity=no

collate now alows selection of the base for comparison

collate -d -b <node> indicates to collate that is the base of comparison for `-d` diff behavior

nodeattrib now provides some error checking of select attributes

$ nodeattrib d3 discovery.policy=invalid
Error: Bad Request - Attribute discovery.policy does not accept list member invalid (valid values would be manual,permissive,pxe,open)

nodeattrib and nodegroupattrib now provide tab completion for attribute names

Tab may now be pressed while entering attribute names into the nodeattrib and nodegroupattrib commands.

nodefirmware and nodeinventory provide more detail about PSUs in ThinkSystem servers

$ nodefirmware r8u32|grep PSU
r8u32: PSU 1 FSF055: 2.50
r8u32: PSU 2 FSF055: 2.50
$ nodeinventory r8u32|grep PSU
r8u32: PSU 1 Board model: SP50L09195
r8u32: PSU 1 Wattage: 750
r8u32: PSU 1 Board manufacturer: ACBE
r8u32: PSU 1 FRU Number: 01GV266
r8u32: PSU 1 Board product name: LENOVO Product
r8u32: PSU 1 Board manufacture date: 2017-01-02T12:00
r8u32: PSU 1 Board serial number: A1DB7131023
r8u32: PSU 1 Revision: 
r8u32: PSU 2 Board model: SP50L09195
r8u32: PSU 2 Wattage: 750
r8u32: PSU 2 Board manufacturer: ACBE
r8u32: PSU 2 FRU Number: 01GV266
r8u32: PSU 2 Board product name: LENOVO Product
r8u32: PSU 2 Board manufacture date: 2017-01-02T12:00
r8u32: PSU 2 Board serial number: A1DB7131052
r8u32: PSU 2 Revision: 

noderanges may now operate against wildcard attrib names (net.*hwaddr)

$ nodeattrib net.*hwaddr=08:94:ef:3f:e1:32 net.*hwaddr
d3: net.hwaddr:
d3: net.pxe.hwaddr: 08:94:ef:3f:e1:32

New CNOS plugin for nodehealth on Lenovo NE series switches

$ nodedefine r8t1 hardwaremanagement.method=cnos
r8t1: created
$ nodehealth r8t1
r8t1: critical (Power Supply 1:12V Output Fail)

Various fixes and minor enhancements