OS-7676: Add topo method to determine occupant status

Details

Issue Type:New Feature
Priority:4 - Normal
Status:Resolved
Created at:2019-03-20T21:53:20.275Z
Updated at:2019-05-01T19:24:55.145Z

People

Created by:Former user
Reported by:Former user
Assigned to:Former user

Resolution

Fixed: A fix for this issue is checked into the tree and tested.
(Resolution Date: 2019-03-29T20:52:06.694Z)

Fix Versions

2019-04-11 Pete Hornberger (Release Date: 2019-04-11)

Description

There are a number of topo node types that represent FRU containers. For example. "bay" and "slot" nodes. It would be useful if there was a node method one could invoke on such nodes to determine whether or not the FRU occupant was present.

One use case involves code which manages drive bay indicators (LEDs). It's common for drive bay indicators to not be controllable when the drive bay is not occupied. Thus it would be useful to have a method one could invoke on a "bay" node to determine if that bay was occupied. before attempting to set the drive bay indicator states.

This ticket it to cover adding a new method TOPO_METH_OCCUPIED which can be registered onto FRU container nodes.

As part of this work we will also extend the "-S" option fmtopo to invoke this method and print the result on each node as it walks the tree.

Finally we'll add a new API - topo_node_occupied() - which wraps the code to invoke TOPO_METH_OCCUPIED on a node.

We will also update various enumerator modules to register this new method onto nodes, where appropriate.

Comments

Comment by Former user
Created at 2019-03-28T03:41:25.649Z
Updated at 2019-03-29T01:22:12.221Z

Testing

I built a PI with this change and booted it on sky1. I verified that the topology before and after the change was the same. I exercised the new method (hc_occupied) and the api wrapper for it (topo_node_occupied()) by running "fmtopo -S" and verifying that the following three assertions:

1) The new method is only registered on nodes that represent FRU containers (bay, port, receptable and slot). When the method is not registered, fmtopo out not output anything related to the value of Occupied. If topo_node_occupied() returns any other kind of error, fmtopo will display simply "-" for the value of Occupied.

2) If there are no non-facility node (i.e. sensor or indicator) chlldren of the node then Occupied should be "false"

3) If this are non-facility node chlldren of the node then Occupied should be "true"

fmtopo -S output is below:

[root@sky1 /var/tmp/rejohnst]# ./fmtopo -S
TIME                 UUID
Mar 29 01:15:57 b811dd7a-91c6-e263-984a-97703f84c485

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=ZM17AS025211:revision=1.01/motherboard=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=0/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=0/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=1/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=1/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=2
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=2/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=2/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=3/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=3/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=4
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=4/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=4/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=5
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=5/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=5/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=6
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=6/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=6/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=8
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=8/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=8/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=9
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=9/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=9/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=10
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=10/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=10/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=11
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=11/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=11/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=12
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=12/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=12/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=13
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=13/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=13/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=14
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=14/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e82ecd695e2c518d/motherboard=0/chip=0/core=14/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=0/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=0/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=1/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=1/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=2
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=2/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=2/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=3/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=3/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=4
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=4/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=4/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=5
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=5/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=5/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=6
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=6/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=6/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=8
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=8/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=8/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=9
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=9/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=9/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=10
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=10/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=10/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=11
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=11/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=11/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=12
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=12/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=12/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=13
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=13/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=13/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=14
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=14/strand=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992:serial=iv0-INTC-50654-e8d0f0d7a4fbec8d/motherboard=0/chip=1/core=14/strand=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=0/pciexrc=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1/pciexrc=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1/pciexrc=1/pciexbus=2
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1/pciexrc=1/pciexbus=2/pciexdev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1/pciexrc=1/pciexbus=2/pciexdev=0/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1/pciexrc=1/pciexbus=2/pciexdev=0/pciexfn=0/pcibus=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1/pciexrc=1/pciexbus=2/pciexdev=0/pciexfn=0/pcibus=3/pcidev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=1/pciexrc=1/pciexbus=2/pciexdev=0/pciexfn=0/pcibus=3/pcidev=0/pcifn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3/pciexfn=0/pciexbus=26
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3/pciexfn=0/pciexbus=26/pciexdev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3/pciexfn=0/pciexbus=26/pciexdev=0/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3/pciexfn=0/pciexbus=26/pciexdev=0/pciexfn=0/port=0
        Present: true
        Unusable: false
        Occupied: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3/pciexfn=0/pciexbus=26/pciexdev=0/pciexfn=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=2/pciexrc=2/pciexbus=24/pciexdev=0/pciexfn=0/pciexbus=25/pciexdev=3/pciexfn=0/pciexbus=26/pciexdev=0/pciexfn=1/port=0
        Present: true
        Unusable: false
        Occupied: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3/pciexrc=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=59
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=59/pciexdev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=59/pciexdev=0/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=59/pciexdev=0/pciexfn=0/port=0
        Present: true
        Unusable: false
        Occupied: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=59/pciexdev=0/pciexfn=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=3/pciexrc=3/pciexbus=59/pciexdev=0/pciexfn=1/port=0
        Present: true
        Unusable: false
        Occupied: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=4
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=4/pciexrc=4
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=4/pciexrc=4/pciexbus=94
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=4/pciexrc=4/pciexbus=94/pciexdev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=4/pciexrc=4/pciexbus=94/pciexdev=0/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=4/pciexrc=4/pciexbus=94/pciexdev=0/pciexfn=0/iport=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=0/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=1/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=2
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=2/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=3/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=4
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=4/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=5
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=5/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=6
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=6/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=7
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=7/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=5/pciexrc=5/pciexbus=134/pciexdev=0/pciexfn=0/iport=8
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=0/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=1
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=1/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=2
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=2/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=3
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=3/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=4
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=4/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=5
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=5/scsi-device=0
        Present: true
        Unusable: false

hc://:product-id=Joyent-M12G5:server-id=sky1:chassis-id=S287109X8231992/motherboard=0/hostbridge=6/pciexrc=6/pciexbus=216/pciexdev=0/pciexfn=0/iport=6
        Present: true
 

Comment by Jira Bot
Created at 2019-03-29T20:44:51.439Z

illumos-joyent commit e6c7580c6215121cdb3e00cf18843f8010beda6c (branch master, by Rob Johnston)

OS-7676 Add topo method to determine occupant status
Reviewed by: Robert Mustacchi <rm@joyent.com>
Approved by: Jordan Hendricks <jordan.hendricks@joyent.com>