Subscribe

How to uniquely identify hardware components using Manage ONTAP 8.3.2 A.P.I.

[ Edited ]

Hi guys,


I'm trying to understand how I could uniquely identify hardware components (fans, power supplies, temperatures, voltages) attached to a shelf, using Manage ONTAP A.P.I. (v8.3.2).


Let's focus on the fans : I know the storage system I'm testing my queries on (which is a cluster) has 4 fans and 2 power supplies attached to its only shelf; it also has 2 nodes.

When I run the following query in ZExplorer :


<storage-shelf-environment-list-info>
    <node-name>node1</node-name>
</storage-shelf-environment-list-info>


here is what I get :


<results status='passed'>
        <shelf-environ-channel-list>
            <shelf-environ-channel-info>
                <channel-name>0a</channel-name>
                <is-channel-monitor-enabled>true</is-channel-monitor-enabled>
                <is-shelf-channel-failure>false</is-shelf-channel-failure>
                <node-name>node1</node-name>
                ...
                <shelf-environ-shelf-list>
                    <shelf-environ-shelf-info>
                        ...
                        <cooling-element-list>
                            <cooling-element-info>
                                <cooling-element-is-error>false</cooling-element-is-error>
                                <cooling-element-number>1</cooling-element-number>
                                <rpm>3000</rpm>
                            </cooling-element-info>
                            <cooling-element-info>
                                <cooling-element-is-error>false</cooling-element-is-error>
                                <cooling-element-number>2</cooling-element-number>
                                <rpm>3000</rpm>
                            </cooling-element-info>
                            <cooling-element-info>
                                <cooling-element-is-error>false</cooling-element-is-error>
                                <cooling-element-number>3</cooling-element-number>
                                <rpm>3000</rpm>
                            </cooling-element-info>
                            <cooling-element-info>
                                <cooling-element-is-error>false</cooling-element-is-error>
                                <cooling-element-number>4</cooling-element-number>
                                <rpm>3000</rpm>
                            </cooling-element-info>
                        </cooling-element-list>
                        ...
                        <is-shelf-monitor-enabled>true</is-shelf-monitor-enabled>
                        <power-supply-list>
                            <power-supply-info>
                                <is-auto-power-reset-enabled>false</is-auto-power-reset-enabled>
                                <power-supply-element-number>1</power-supply-element-number>
                                <power-supply-firmware-revision>020F</power-supply-firmware-revision>
                                <power-supply-is-error>false</power-supply-is-error>
                                <power-supply-part-no>***</power-supply-part-no>
                                <power-supply-serial-no>***</power-supply-serial-no>
                                <power-supply-swap-count>0</power-supply-swap-count>
                                <power-supply-type>9C</power-supply-type>
                            </power-supply-info>
                            <power-supply-info>
                                <is-auto-power-reset-enabled>false</is-auto-power-reset-enabled>
                                <power-supply-element-number>2</power-supply-element-number>
                                <power-supply-firmware-revision>020F</power-supply-firmware-revision>
                                <power-supply-is-error>false</power-supply-is-error>
                                <power-supply-part-no>***</power-supply-part-no>
                                <power-supply-serial-no>***</power-supply-serial-no>
                                <power-supply-swap-count>0</power-supply-swap-count>
                                <power-supply-type>9C</power-supply-type>
                            </power-supply-info>
                        </power-supply-list>
                        ...
                        <shelf-id>0</shelf-id>
                        <shelf-status>normal</shelf-status>
                        <shelf-type>iom6e</shelf-type>
                        <status-reads-attempted>1154193</status-reads-attempted>
                        <status-reads-failed>0</status-reads-failed>
                        ...
                    </shelf-environ-shelf-info>
                </shelf-environ-shelf-list>
                <shelves-present>1</shelves-present>
            </shelf-environ-channel-info>
        </shelf-environ-channel-list>
    </results>


At this point, I have 2 questions :


1) What is a channel (0a in the response) ? Does this term refer to a physical component or a logical component ?


2) The 4 cooling elements are obviously the 4 fans.

     However, my understanding is that the <cooling-element-number> attributes are not identifiers such as the serial numbers we have for the power supplies.

     If I'm correct, how could I reliably discriminate each fan ?




Now, if I run this query :


<storage-shelf-environment-list-info>
    <channel-name>0b</channel-name>
    <node-name>node1</node-name>
</storage-shelf-environment-list-info>



I get the same <cooling-element-list> and <power-supply-list>.


3) Why did the channel 0b not show up in the first response, when I did not specify any channel in the query ?


4) Is channel 0b a redundancy of channel 0a ?




Lastly, if I run the first query, but switch the nodes :


<storage-shelf-environment-list-info>
    <node-name>node2</node-name>
</storage-shelf-environment-list-info>




I still get the same <cooling-element-list> and <power-supply-list>.


5) Do all the nodes have access to the same shelves ?


6) If I have to discover all the hardware components attached to a shelf in a NetApp cluster,

     does it mean I just have to query the first node available, find the first channel available and get its <shelf-environ-shelf-list> ?


7) Same question for a 7-Mode :

     if I have to uniquely identify all the hardware components attached to a shelf, is all I have to do is get the first channel available and then its <shelf-environ-shelf-list> ?



Sorry for the long post, and if my questions are newbie-ish... I hope I made myself clear enough though.


Hopefully someone could help me understand.


Thanks guys !