# $Id$ # # Copyright (c) 2001-2014 NetApp, Inc., All Rights Reserved # Any use, modification, or distribution is prohibited # without prior written consent from NetApp, Inc. # ## @summary StorageShelf ComponentState Module (auto-generated by CGT) ## @author dl-nacl-dev@netapp.com ## @status shared ## @pod here =head1 NAME NACL::CS::StorageShelf =head1 DESCRIPTION C is a derived class of L. It represents the state of an ONTAP StorageShelf. A related class is L, which represents access to an ONTAP StorageShelf. =head1 ATTRIBUTES The individual pieces of data that are part of the state of the StorageShelf element are the attributes of the StorageShelf ComponentState. Additionally, the command_interface used to obtain the ComponentState object is also an attribute of the object. This makes it easier to obtain the component object corresponding to the CS object, using L. =over =item command_interface The command_interface with which the CS object was obtained. (Available in all CS objects regardless of requested_fields and the mode/interface) =item C<< module_fru_id >> Field Replaceable Unit ID (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_fru_id = $obj->module_fru_id(); # $module_fru_id contains a reference to the array of values my @module_fru_id = $obj->module_fru_id(); # @module_fru_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_fru_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< op_status >> Shelf Operational Status possible value(s) are, unknown,normal,warning,error,critical Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_reset_capable >> Power Supply Unit Reset Capability possible value(s) are, true,false (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_reset_capable = $obj->psu_reset_capable(); # $psu_reset_capable contains a reference to the array of values my @psu_reset_capable = $obj->psu_reset_capable(); # @psu_reset_capable contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_reset_capable = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_is_enabled >> Power Supply Unit Enable/Disable Status possible value(s) are, true,false (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_is_enabled = $obj->psu_is_enabled(); # $psu_is_enabled contains a reference to the array of values my @psu_is_enabled = $obj->psu_is_enabled(); # @psu_is_enabled contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_is_enabled = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< target_port >> Target Port (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $target_port = $obj->target_port(); # $target_port contains a reference to the array of values my @target_port = $obj->target_port(); # @target_port contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { target_port = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< target_side_switch_port >> Target Side Switch Port (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $target_side_switch_port = $obj->target_side_switch_port(); # $target_side_switch_port contains a reference to the array of values my @target_side_switch_port = $obj->target_side_switch_port(); # @target_side_switch_port contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { target_side_switch_port = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_is_ambient >> Temperature Reading at Ambient Value possible value(s) are, true,false (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_is_ambient = $obj->temp_is_ambient(); # $temp_is_ambient contains a reference to the array of values my @temp_is_ambient = $obj->temp_is_ambient(); # @temp_is_ambient contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_is_ambient = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< initiator_side_switch_port >> Initiator Side Switch Port (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $initiator_side_switch_port = $obj->initiator_side_switch_port(); # $initiator_side_switch_port contains a reference to the array of values my @initiator_side_switch_port = $obj->initiator_side_switch_port(); # @initiator_side_switch_port contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { initiator_side_switch_port = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_high_critical_threshold >> High Critical Threshold possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_high_critical_threshold = $obj->temp_high_critical_threshold(); # $temp_high_critical_threshold contains a reference to the array of values my @temp_high_critical_threshold = $obj->temp_high_critical_threshold(); # @temp_high_critical_threshold contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_high_critical_threshold = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< voltage_sensor_reading >> Voltage Current Reading (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $voltage_sensor_reading = $obj->voltage_sensor_reading(); # $voltage_sensor_reading contains a reference to the array of values my @voltage_sensor_reading = $obj->voltage_sensor_reading(); # @voltage_sensor_reading contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { voltage_sensor_reading = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< error_severity >> Error Severity possible value(s) are, unknown,notice,warning,error,critical (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $error_severity = $obj->error_severity(); # $error_severity contains a reference to the array of values my @error_severity = $obj->error_severity(); # @error_severity contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { error_severity = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_sensor_location >> Sensor Location (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_sensor_location = $obj->temp_sensor_location(); # $temp_sensor_location contains a reference to the array of values my @temp_sensor_location = $obj->temp_sensor_location(); # @temp_sensor_location contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_sensor_location = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter =item C<< sas_port_id >> Port ID (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $sas_port_id = $obj->sas_port_id(); # $sas_port_id contains a reference to the array of values my @sas_port_id = $obj->sas_port_id(); # @sas_port_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { sas_port_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< shelf_uuid >> Shelf UID Filled in for CMode CLI/ZAPI iter =item C<< module_fw_progress >> Module Firmware Progress possible value(s) are, not-available,ready,in-progress,failed (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_fw_progress = $obj->module_fw_progress(); # $module_fw_progress contains a reference to the array of values my @module_fw_progress = $obj->module_fw_progress(); # @module_fw_progress contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_fw_progress = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_type >> Shelf Module Type possible value(s) are, unknown,atfcx,esh4,iom3,iom6,iom6e Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< sas_port_wwpn >> Port World Wide Port Name (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $sas_port_wwpn = $obj->sas_port_wwpn(); # $sas_port_wwpn contains a reference to the array of values my @sas_port_wwpn = $obj->sas_port_wwpn(); # @sas_port_wwpn contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { sas_port_wwpn = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< fc_port_id >> Fibre Channel Port ID (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $fc_port_id = $obj->fc_port_id(); # $fc_port_id contains a reference to the array of values my @fc_port_id = $obj->fc_port_id(); # @fc_port_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { fc_port_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< connection_type >> Shelf Connection Type possible value(s) are, unknown,fc,sas Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< sas_port_speed >> Port Speed (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $sas_port_speed = $obj->sas_port_speed(); # $sas_port_speed contains a reference to the array of values my @sas_port_speed = $obj->sas_port_speed(); # @sas_port_speed contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { sas_port_speed = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_high_warning_threshold >> High Warning Threshold possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_high_warning_threshold = $obj->temp_high_warning_threshold(); # $temp_high_warning_threshold contains a reference to the array of values my @temp_high_warning_threshold = $obj->temp_high_warning_threshold(); # @temp_high_warning_threshold contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_high_warning_threshold = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< voltage_sensor_id >> Voltage Sensor ID possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $voltage_sensor_id = $obj->voltage_sensor_id(); # $voltage_sensor_id contains a reference to the array of values my @voltage_sensor_id = $obj->voltage_sensor_id(); # @voltage_sensor_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { voltage_sensor_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< sas_port_op_status >> Port Operational Status possible value(s) are, error,normal,off,unknown,byp-bad-term,bad-zone-recovery,byp_clk_thr,byp_comma_los,byp_crc_brst_thr,byp_data_timeout,byp_drv_fault,byp_drv_pcycle,byp_drv_pwr,byp_drv_self,byp_gen,byp_init,byp_lip_brst_thr,byp_lip_f8,byp_lip_rate_thr,byp_lipf7,byp_ltbi,byp_man,byp_no_drive,byp_osc,byp_other_thr,byp_rec_los,byp_rport,byp_stall_thr,byp_wrd_brst_thr,byp_wrd_rate_thr,byp_xmit_fault,diag_transmit,inserted,loopback,status_unknown,warn_high_clk_delta,warn_high_crc_rate,warn_high_lip,warn_high_wrd_rate,term,phy_dis_clk_fault,phy_dis_crc_err,phy_dis_crc_err_burst,phy_dis_disparity,phy_dis_disparity_burst,phy_dis_emulate_reserve,phy_dis_inval_dword,phy_dis_inval_dword_burst,phy_dis_loss_dword,phy_dis_loss_dword_burst,phy_dis_man_smp,phy_dis_manual,phy_dis_mirrored,phy_dis_no_drive,phy_dis_phy_change,phy_dis_phy_change_burst,phy_dis_phy_reset,phy_dis_phy_reset_burst,phy_dis_phy_unused,phy_ena,phy_ena_not_attach,phy_ena_unknown,phy_unknown (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $sas_port_op_status = $obj->sas_port_op_status(); # $sas_port_op_status contains a reference to the array of values my @sas_port_op_status = $obj->sas_port_op_status(); # @sas_port_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { sas_port_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_sensor_id >> Sensor Name possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_sensor_id = $obj->temp_sensor_id(); # $temp_sensor_id contains a reference to the array of values my @temp_sensor_id = $obj->temp_sensor_id(); # @temp_sensor_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_sensor_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_part_number >> Module Part Number (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_part_number = $obj->module_part_number(); # $module_part_number contains a reference to the array of values my @module_part_number = $obj->module_part_number(); # @module_part_number contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_part_number = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< shelf_component >> Shelf component with error (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $shelf_component = $obj->shelf_component(); # $shelf_component contains a reference to the array of values my @shelf_component = $obj->shelf_component(); # @shelf_component contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { shelf_component = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_serial_number >> Power Supply Unit Serial Number (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_serial_number = $obj->psu_serial_number(); # $psu_serial_number contains a reference to the array of values my @psu_serial_number = $obj->psu_serial_number(); # @psu_serial_number contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_serial_number = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< voltage_op_status >> Operational Status possible value(s) are, unknown,normal,over-voltage-critical,under-voltage-critical (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $voltage_op_status = $obj->voltage_op_status(); # $voltage_op_status contains a reference to the array of values my @voltage_op_status = $obj->voltage_op_status(); # @voltage_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { voltage_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< fan_id >> Fan ID possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $fan_id = $obj->fan_id(); # $fan_id contains a reference to the array of values my @fan_id = $obj->fan_id(); # @fan_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { fan_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< node >> Node possible value(s) are, ,local Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_low_critical_threshold >> Low Critical Threshold possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_low_critical_threshold = $obj->temp_low_critical_threshold(); # $temp_low_critical_threshold contains a reference to the array of values my @temp_low_critical_threshold = $obj->temp_low_critical_threshold(); # @temp_low_critical_threshold contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_low_critical_threshold = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< port_speed >> Port Speed possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $port_speed = $obj->port_speed(); # $port_speed contains a reference to the array of values my @port_speed = $obj->port_speed(); # @port_speed contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { port_speed = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_part_number >> Power Supply Unit Part Number (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_part_number = $obj->psu_part_number(); # $psu_part_number contains a reference to the array of values my @psu_part_number = $obj->psu_part_number(); # @psu_part_number contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_part_number = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_low_warning_threshold >> Low Warning Threshold possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_low_warning_threshold = $obj->temp_low_warning_threshold(); # $temp_low_warning_threshold contains a reference to the array of values my @temp_low_warning_threshold = $obj->temp_low_warning_threshold(); # @temp_low_warning_threshold contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_low_warning_threshold = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< bay_type >> Bay Type possible value(s) are, unknown,single-disk,multi-lun (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $bay_type = $obj->bay_type(); # $bay_type contains a reference to the array of values my @bay_type = $obj->bay_type(); # @bay_type contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { bay_type = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< current_sensor_reading >> Current Sensor Reading possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $current_sensor_reading = $obj->current_sensor_reading(); # $current_sensor_reading contains a reference to the array of values my @current_sensor_reading = $obj->current_sensor_reading(); # @current_sensor_reading contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { current_sensor_reading = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< corrective_action >> Corrective Action (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $corrective_action = $obj->corrective_action(); # $corrective_action contains a reference to the array of values my @corrective_action = $obj->corrective_action(); # @corrective_action contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { corrective_action = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< enclosure_type >> Module Enclosure Type (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $enclosure_type = $obj->enclosure_type(); # $enclosure_type contains a reference to the array of values my @enclosure_type = $obj->enclosure_type(); # @enclosure_type contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { enclosure_type = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter =item C<< serial_number >> Shelf Serial Number Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_swap_count >> Module Swap Count possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_swap_count = $obj->module_swap_count(); # $module_swap_count contains a reference to the array of values my @module_swap_count = $obj->module_swap_count(); # @module_swap_count contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_swap_count = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< stack_id >> Stack ID possible value(s) are, ,- Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< fan_rpm >> Fan Rotation Per Minute possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $fan_rpm = $obj->fan_rpm(); # $fan_rpm contains a reference to the array of values my @fan_rpm = $obj->fan_rpm(); # @fan_rpm contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { fan_rpm = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< fan_op_status >> Fan Operational Status possible value(s) are, unknown,normal,off,error (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $fan_op_status = $obj->fan_op_status(); # $fan_op_status contains a reference to the array of values my @fan_op_status = $obj->fan_op_status(); # @fan_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { fan_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< is_monitor_active >> Is Monitor Active? possible value(s) are, true,false (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $is_monitor_active = $obj->is_monitor_active(); # $is_monitor_active contains a reference to the array of values my @is_monitor_active = $obj->is_monitor_active(); # @is_monitor_active contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { is_monitor_active = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_location >> Power Supply Unit Location (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_location = $obj->psu_location(); # $psu_location contains a reference to the array of values my @psu_location = $obj->psu_location(); # @psu_location contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_location = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_op_status >> Operational Status possible value(s) are, unknown,normal,under-temperature,over-temperature (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_op_status = $obj->temp_op_status(); # $temp_op_status contains a reference to the array of values my @temp_op_status = $obj->temp_op_status(); # @temp_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< initiator_wwpn >> Initiator WWPN (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $initiator_wwpn = $obj->initiator_wwpn(); # $initiator_wwpn contains a reference to the array of values my @initiator_wwpn = $obj->initiator_wwpn(); # @initiator_wwpn contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { initiator_wwpn = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< shelf_id >> Shelf ID Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< fan_location >> Fan Location (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $fan_location = $obj->fan_location(); # $fan_location contains a reference to the array of values my @fan_location = $obj->fan_location(); # @fan_location contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { fan_location = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_op_status >> Module Operational Status possible value(s) are, unknown,normal,warning,error (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_op_status = $obj->module_op_status(); # $module_op_status contains a reference to the array of values my @module_op_status = $obj->module_op_status(); # @module_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< bay_has_disk >> Bay Has Disk possible value(s) are, true,false (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $bay_has_disk = $obj->bay_has_disk(); # $bay_has_disk contains a reference to the array of values my @bay_has_disk = $obj->bay_has_disk(); # @bay_has_disk contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { bay_has_disk = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_location >> Module Location (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_location = $obj->module_location(); # $module_location contains a reference to the array of values my @module_location = $obj->module_location(); # @module_location contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_location = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_id >> Power Supply Unit ID possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_id = $obj->psu_id(); # $psu_id contains a reference to the array of values my @psu_id = $obj->psu_id(); # @psu_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< state >> Shelf State possible value(s) are, unknown,no-status,init-required,online,offline,missing Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_fw_revision >> Firmware Revision (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_fw_revision = $obj->module_fw_revision(); # $module_fw_revision contains a reference to the array of values my @module_fw_revision = $obj->module_fw_revision(); # @module_fw_revision contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_fw_revision = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< shelf_uid >> Shelf UID Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< disk_count >> Disk Count possible value(s) are, ,- Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< bay_id >> Bay ID possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $bay_id = $obj->bay_id(); # $bay_id contains a reference to the array of values my @bay_id = $obj->bay_id(); # @bay_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { bay_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_op_status >> Operational Status possible value(s) are, unknown,normal,error,dc-over-voltage,dc-under-voltage,dc-over-current,over-temperature-error,failed,off (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_op_status = $obj->psu_op_status(); # $psu_op_status contains a reference to the array of values my @psu_op_status = $obj->psu_op_status(); # @psu_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< sas_port_type >> Port Type possible value(s) are, unknown,circle,square,sil,disk,in,out,unused,aux1,aux2,hi_ho,a_to_b,b_to_a (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $sas_port_type = $obj->sas_port_type(); # $sas_port_type contains a reference to the array of values my @sas_port_type = $obj->sas_port_type(); # @sas_port_type contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { sas_port_type = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< sas_negotiated_port_speed >> Negotiated Port Speed (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $sas_negotiated_port_speed = $obj->sas_negotiated_port_speed(); # $sas_negotiated_port_speed contains a reference to the array of values my @sas_negotiated_port_speed = $obj->sas_negotiated_port_speed(); # @sas_negotiated_port_speed contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { sas_negotiated_port_speed = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< es_serial_number >> ES Electronics Element Serial Number (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $es_serial_number = $obj->es_serial_number(); # $es_serial_number contains a reference to the array of values my @es_serial_number = $obj->es_serial_number(); # @es_serial_number contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { es_serial_number = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< fc_port_mode >> Fibre Channel Port Mode possible value(s) are, unknown,circle,square,sil,disk,in,out,unused,aux1,aux2,hi_ho,a_to_b,b_to_a (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $fc_port_mode = $obj->fc_port_mode(); # $fc_port_mode contains a reference to the array of values my @fc_port_mode = $obj->fc_port_mode(); # @fc_port_mode contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { fc_port_mode = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< is_local_attach >> Is the Shelf Local to This Cluster? possible value(s) are, true,false Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< current_sensor_id >> Current Sensor ID possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $current_sensor_id = $obj->current_sensor_id(); # $current_sensor_id contains a reference to the array of values my @current_sensor_id = $obj->current_sensor_id(); # @current_sensor_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { current_sensor_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< shelf >> Shelf Name Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< bay_op_status >> Bay Operational Status possible value(s) are, unknown,normal,error (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $bay_op_status = $obj->bay_op_status(); # $bay_op_status contains a reference to the array of values my @bay_op_status = $obj->bay_op_status(); # @bay_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { bay_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< component_location >> Location of component with error (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $component_location = $obj->component_location(); # $component_location contains a reference to the array of values my @component_location = $obj->component_location(); # @component_location contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { component_location = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< product_id >> Shelf Product Identification Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_type >> Power Supply Unit Type (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_type = $obj->psu_type(); # $psu_type contains a reference to the array of values my @psu_type = $obj->psu_type(); # @psu_type contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_type = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< temp_sensor_reading >> Temperature Reading possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $temp_sensor_reading = $obj->temp_sensor_reading(); # $temp_sensor_reading contains a reference to the array of values my @temp_sensor_reading = $obj->temp_sensor_reading(); # @temp_sensor_reading contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { temp_sensor_reading = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< fc_port_op_status >> Fibre Channel Port Operational Status possible value(s) are, error,normal,off,unknown,byp-bad-term,bad-zone-recovery,byp_clk_thr,byp_comma_los,byp_crc_brst_thr,byp_data_timeout,byp_drv_fault,byp_drv_pcycle,byp_drv_pwr,byp_drv_self,byp_gen,byp_init,byp_lip_brst_thr,byp_lip_f8,byp_lip_rate_thr,byp_lipf7,byp_ltbi,byp_man,byp_no_drive,byp_osc,byp_other_thr,byp_rec_los,byp_rport,byp_stall_thr,byp_wrd_brst_thr,byp_wrd_rate_thr,byp_xmit_fault,diag_transmit,inserted,loopback,status_unknown,warn_high_clk_delta,warn_high_crc_rate,warn_high_lip,warn_high_wrd_rate,term,phy_dis_clk_fault,phy_dis_crc_err,phy_dis_crc_err_burst,phy_dis_disparity,phy_dis_disparity_burst,phy_dis_emulate_reserve,phy_dis_inval_dword,phy_dis_inval_dword_burst,phy_dis_loss_dword,phy_dis_loss_dword_burst,phy_dis_man_smp,phy_dis_manual,phy_dis_mirrored,phy_dis_no_drive,phy_dis_phy_change,phy_dis_phy_change_burst,phy_dis_phy_reset,phy_dis_phy_reset_burst,phy_dis_phy_unused,phy_ena,phy_ena_not_attach,phy_ena_unknown,phy_unknown (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $fc_port_op_status = $obj->fc_port_op_status(); # $fc_port_op_status contains a reference to the array of values my @fc_port_op_status = $obj->fc_port_op_status(); # @fc_port_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { fc_port_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< error_type >> Error Type possible value(s) are, unknown,acpp,bay,configuration,current,disk,internal,fan,module,port,power,temperature,voltage (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $error_type = $obj->error_type(); # $error_type contains a reference to the array of values my @error_type = $obj->error_type(); # @error_type contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { error_type = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< sas_port_power_status >> Port Power Status (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $sas_port_power_status = $obj->sas_port_power_status(); # $sas_port_power_status contains a reference to the array of values my @sas_port_power_status = $obj->sas_port_power_status(); # @sas_port_power_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { sas_port_power_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_is_reporting_element >> Is Reporting Element? possible value(s) are, true,false (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_is_reporting_element = $obj->module_is_reporting_element(); # $module_is_reporting_element contains a reference to the array of values my @module_is_reporting_element = $obj->module_is_reporting_element(); # @module_is_reporting_element contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_is_reporting_element = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< current_op_status >> Operational Status possible value(s) are, unknown,normal,over-current-critical,under-current-critical (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $current_op_status = $obj->current_op_status(); # $current_op_status contains a reference to the array of values my @current_op_status = $obj->current_op_status(); # @current_op_status contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { current_op_status = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< voltage_sensor_location >> Voltage Sensor Location (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $voltage_sensor_location = $obj->voltage_sensor_location(); # $voltage_sensor_location contains a reference to the array of values my @voltage_sensor_location = $obj->voltage_sensor_location(); # @voltage_sensor_location contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { voltage_sensor_location = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< current_sensor_location >> Current Sensor Location (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $current_sensor_location = $obj->current_sensor_location(); # $current_sensor_location contains a reference to the array of values my @current_sensor_location = $obj->current_sensor_location(); # @current_sensor_location contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { current_sensor_location = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_id >> Module ID (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_id = $obj->module_id(); # $module_id contains a reference to the array of values my @module_id = $obj->module_id(); # @module_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< controller >> Controller Name possible value(s) are, ,local (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $controller = $obj->controller(); # $controller contains a reference to the array of values my @controller = $obj->controller(); # @controller contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { controller = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< error_text >> Error Text (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $error_text = $obj->error_text(); # $error_text contains a reference to the array of values my @error_text = $obj->error_text(); # @error_text contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { error_text = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< controller_uuid >> Controller UUID (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $controller_uuid = $obj->controller_uuid(); # $controller_uuid contains a reference to the array of values my @controller_uuid = $obj->controller_uuid(); # @controller_uuid contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { controller_uuid = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< psu_fw_version >> Power Supply Unit Firmware Version (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $psu_fw_version = $obj->psu_fw_version(); # $psu_fw_version contains a reference to the array of values my @psu_fw_version = $obj->psu_fw_version(); # @psu_fw_version contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { psu_fw_version = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< iops >> Number IOPS per second on storage shelf possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $iops = $obj->iops(); # $iops contains a reference to the array of values my @iops = $obj->iops(); # @iops contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { iops = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< io_module_type >> Module Type possible value(s) are, unknown,atfcx,esh4,iom3,iom6,iom6e (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $io_module_type = $obj->io_module_type(); # $io_module_type contains a reference to the array of values my @io_module_type = $obj->io_module_type(); # @io_module_type contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { io_module_type = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< error_id >> Error Identifier possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $error_id = $obj->error_id(); # $error_id contains a reference to the array of values my @error_id = $obj->error_id(); # @error_id contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { error_id = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< initiator >> Initiator (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $initiator = $obj->initiator(); # $initiator contains a reference to the array of values my @initiator = $obj->initiator(); # @initiator contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { initiator = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< tpgn >> Target Port Group Number possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $tpgn = $obj->tpgn(); # $tpgn contains a reference to the array of values my @tpgn = $obj->tpgn(); # @tpgn contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { tpgn = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< is_sas_master_module >> Is SAS Expander Master Module? possible value(s) are, true,false (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $is_sas_master_module = $obj->is_sas_master_module(); # $is_sas_master_module contains a reference to the array of values my @is_sas_master_module = $obj->is_sas_master_module(); # @is_sas_master_module contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { is_sas_master_module = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< io_kbps >> Kbytes/sec on storage shelf possible value(s) are, ,- (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $io_kbps = $obj->io_kbps(); # $io_kbps contains a reference to the array of values my @io_kbps = $obj->io_kbps(); # @io_kbps contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { io_kbps = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< module_latest_fw_revision >> Latest Firmware Revision (Array) Note that for array fields, the accessor method can be invoked in either scalar or list context. my $module_latest_fw_revision = $obj->module_latest_fw_revision(); # $module_latest_fw_revision contains a reference to the array of values my @module_latest_fw_revision = $obj->module_latest_fw_revision(); # @module_latest_fw_revision contains the array of values If this field needs to be passed to the filter hash, the value for this field should be passed in as an arrayref # filter => { module_latest_fw_revision = [ value1, value2...] } Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =item C<< vendor >> Shelf Vendor Filled in for CMode CLI/ZAPI iter Mapping for CMode ZAPI iter: =back =cut package NACL::CS::StorageShelf; use strict; use warnings; use Params::Validate qw(validate); use NATE::Log qw(log_global); use NACL::Exceptions::NoElementsFound qw(:try); use NACL::CS::ComponentState::ZapiSkip qw(make_zapi_skip); use NACL::CS::ComponentState::ZapiArray qw(make_zapi_array); use base 'NACL::CS::ComponentState::ONTAP'; use Class::MethodMaker [ array => 'module_fru_id', scalar => 'op_status', array => 'psu_reset_capable', array => 'psu_is_enabled', array => 'target_port', array => 'target_side_switch_port', array => 'temp_is_ambient', array => 'initiator_side_switch_port', array => 'temp_high_critical_threshold', array => 'voltage_sensor_reading', array => 'error_severity', array => 'temp_sensor_location', array => 'sas_port_id', scalar => 'shelf_uuid', array => 'module_fw_progress', scalar => 'module_type', array => 'sas_port_wwpn', array => 'fc_port_id', scalar => 'connection_type', array => 'sas_port_speed', array => 'temp_high_warning_threshold', array => 'voltage_sensor_id', array => 'sas_port_op_status', array => 'temp_sensor_id', array => 'module_part_number', array => 'shelf_component', array => 'psu_serial_number', array => 'voltage_op_status', array => 'fan_id', scalar => 'node', array => 'temp_low_critical_threshold', array => 'port_speed', array => 'psu_part_number', array => 'temp_low_warning_threshold', array => 'bay_type', array => 'current_sensor_reading', array => 'corrective_action', array => 'enclosure_type', scalar => 'serial_number', array => 'module_swap_count', scalar => 'stack_id', array => 'fan_rpm', array => 'fan_op_status', array => 'is_monitor_active', array => 'psu_location', array => 'temp_op_status', array => 'initiator_wwpn', scalar => 'shelf_id', array => 'fan_location', array => 'module_op_status', array => 'bay_has_disk', array => 'module_location', array => 'psu_id', scalar => 'state', array => 'module_fw_revision', scalar => 'shelf_uid', scalar => 'disk_count', array => 'bay_id', array => 'psu_op_status', array => 'sas_port_type', array => 'sas_negotiated_port_speed', array => 'es_serial_number', array => 'fc_port_mode', scalar => 'is_local_attach', array => 'current_sensor_id', scalar => 'shelf', array => 'bay_op_status', array => 'component_location', scalar => 'product_id', array => 'psu_type', array => 'temp_sensor_reading', array => 'fc_port_op_status', array => 'error_type', array => 'sas_port_power_status', array => 'module_is_reporting_element', array => 'current_op_status', array => 'voltage_sensor_location', array => 'current_sensor_location', array => 'module_id', array => 'controller', array => 'error_text', array => 'controller_uuid', array => 'psu_fw_version', array => 'iops', array => 'io_module_type', array => 'error_id', array => 'initiator', array => 'tpgn', array => 'is_sas_master_module', array => 'io_kbps', array => 'module_latest_fw_revision', scalar => 'vendor', ]; my $Log = log_global(); my $may_enter = $Log->may_enter(); my $may_exit = $Log->may_exit(); =head1 METHODS =head2 fetch my $StorageShelf_state = NACL::CS::StorageShelf->fetch(command_interface => $ci, ...); my @StorageShelf_states = NACL::CS::StorageShelf->fetch(command_interface => $ci, ...); (Class method) Discovers which elements are present and returns their state in ComponentState objects. Called in scalar context it returns only one state object, in list context it returns all state objects. See L for a more detailed description along with a complete explanation of the options it accepts. Uses CMode CLI/ZAPI. Invokes storage-shelf-info-get-iter API for CMode ZAPI iter. =over =item Exceptions =over =item C When there are no elements matching the query specified or elements of that type doesn't exist, then this exception will be thrown. =back =back =cut sub fetch { $Log->enter() if $may_enter; my ($pkg, @args) = @_; my @state_objs = $pkg->SUPER::fetch( @args, show_cmd => 'storage shelf show', choices => [ { method => '_fetch_cmode_cli', interface => 'CLI', set => 'CMode', zapi_type => 'none', }, { method => '_fetch_cmode_zapi', interface => 'ZAPI', set => 'CMode', zapi_type => 'iter' }, ], exception_text => 'No matching StorageShelf(s) found', frontend => 'NACL::CS::StorageShelf::fetch', ); $Log->exit() if $may_exit; return wantarray ? @state_objs : $state_objs[0]; } sub _update_state_objs_cmode_zapi { $Log->enter() if $may_enter; my ($pkg, @args) = @_; $pkg->SUPER::_update_state_objs_cmode_zapi( @args, zapi_field_translations => { hyphenate_value => [ qw(op-status error-severity module-fw-progress connection-type voltage-op-status bay-type fan-op-status temp-op-status module-op-status state psu-op-status sas-port-type fc-port-mode bay-op-status error-type current-op-status) ], }, ); $Log->exit() if $may_exit; } sub _fetch_cmode_cli { $Log->enter() if $may_enter; my ($pkg, @args) = @_; my @state_objs = $pkg->SUPER::_fetch_cmode_cli(@args, api => 'storage_shelf_show',); $Log->exit() if $may_exit; return @state_objs; } sub _fetch_cmode_zapi { $Log->enter() if $may_enter; my ($pkg, @args) = @_; my @state_objs = $pkg->SUPER::_fetch_cmode_zapi( @args, copy => [ qw(op-status module-type connection-type serial-number stack-id shelf-id state shelf-uid disk-count is-local-attach shelf ) ], map => { 'module-fru-id' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-fru-id' ], 'psu-reset-capable' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-reset-capable' ], 'psu-is-enabled' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-is-enabled' ], 'target-port' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'target-port' ], 'target-side-switch-port' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'target-side-switch-port' ], 'temp-is-ambient' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'temp-is-ambient' ], 'initiator-side-switch-port' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'initiator-side-switch-port' ], 'temp-high-critical-threshold' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'high-critical-threshold' ], 'voltage-sensor-reading' => [ make_zapi_array('voltage-sensors'), make_zapi_skip('storage-shelf-voltage-sensor-info'), 'voltage-sensor-reading' ], 'error-severity' => [ make_zapi_array('shelf-errors'), make_zapi_skip('storage-shelf-error-info'), 'error-severity' ], 'sas-port-id' => [ make_zapi_array('sas-ports'), make_zapi_skip('storage-shelf-sas-port-info'), 'sas-port-id' ], 'module-fw-progress' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-fw-progress' ], 'fc-port-id' => [ make_zapi_array('fc-ports'), make_zapi_skip('storage-shelf-fc-port-info'), 'fc-port-id' ], 'sas-port-wwpn' => [ make_zapi_array('sas-ports'), make_zapi_skip('storage-shelf-sas-port-info'), 'sas-port-wwpn' ], 'sas-port-speed' => [ make_zapi_array('sas-ports'), make_zapi_skip('storage-shelf-sas-port-info'), 'sas-port-speed' ], 'temp-high-warning-threshold' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'high-warning-threshold' ], 'voltage-sensor-id' => [ make_zapi_array('voltage-sensors'), make_zapi_skip('storage-shelf-voltage-sensor-info'), 'voltage-sensor-id' ], 'temp-sensor-id' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'temp-sensor-id' ], 'sas-port-op-status' => [ make_zapi_array('sas-ports'), make_zapi_skip('storage-shelf-sas-port-info'), 'sas-port-op-status' ], 'module-part-number' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-part-number' ], 'shelf-component' => [ make_zapi_array('shelf-errors'), make_zapi_skip('storage-shelf-error-info'), 'shelf-component' ], 'psu-serial-number' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-serial-number' ], 'voltage-op-status' => [ make_zapi_array('voltage-sensors'), make_zapi_skip('storage-shelf-voltage-sensor-info'), 'voltage-op-status' ], 'fan-id' => [ make_zapi_array('cooling-fans'), make_zapi_skip('storage-shelf-cooling-fan-info'), 'fan-id' ], 'node' => 'node-name', 'temp-low-critical-threshold' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'temp-low-critical-threshold' ], 'port-speed' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'port-speed' ], 'psu-part-number' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-part-number' ], 'temp-low-warning-threshold' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'temp-low-warning-threshold' ], 'corrective-action' => [ make_zapi_array('shelf-errors'), make_zapi_skip('storage-shelf-error-info'), 'corrective-action' ], 'current-sensor-reading' => [ make_zapi_array('current-sensors'), make_zapi_skip('storage-shelf-current-sensor-info'), 'current-sensor-reading' ], 'bay-type' => [ make_zapi_array('shelf-bays'), make_zapi_skip('storage-shelf-bay-info'), 'bay-type' ], 'module-swap-count' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-swap-count' ], 'fan-rpm' => [ make_zapi_array('cooling-fans'), make_zapi_skip('storage-shelf-cooling-fan-info'), 'fan-rpm' ], 'fan-op-status' => [ make_zapi_array('cooling-fans'), make_zapi_skip('storage-shelf-cooling-fan-info'), 'fan-op-status' ], 'psu-location' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-location' ], 'is-monitor-active' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'is-monitor-active' ], 'temp-op-status' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'temp-sens-op-status' ], 'initiator-wwpn' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'initiator-wwpn' ], 'fan-location' => [ make_zapi_array('cooling-fans'), make_zapi_skip('storage-shelf-cooling-fan-info'), 'fan-location' ], 'module-op-status' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-op-status' ], 'bay-has-disk' => [ make_zapi_array('shelf-bays'), make_zapi_skip('storage-shelf-bay-info'), 'bay-has-disk' ], 'module-location' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-location' ], 'psu-id' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-id' ], 'module-fw-revision' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-fw-revision' ], 'bay-id' => [ make_zapi_array('shelf-bays'), make_zapi_skip('storage-shelf-bay-info'), 'bay-id' ], 'psu-op-status' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-op-status' ], 'sas-port-type' => [ make_zapi_array('sas-ports'), make_zapi_skip('storage-shelf-sas-port-info'), 'sas-port-type' ], 'sas-negotiated-port-speed' => [ make_zapi_array('sas-ports'), make_zapi_skip('storage-shelf-sas-port-info'), 'sas-negotiated-port-speed' ], 'es-serial-number' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'es-serial-number' ], 'fc-port-mode' => [ make_zapi_array('fc-ports'), make_zapi_skip('storage-shelf-fc-port-info'), 'fc-port-mode' ], 'current-sensor-id' => [ make_zapi_array('current-sensors'), make_zapi_skip('storage-shelf-current-sensor-info'), 'current-sensor-id' ], 'component-location' => [ make_zapi_array('shelf-errors'), make_zapi_skip('storage-shelf-error-info'), 'component-location' ], 'bay-op-status' => [ make_zapi_array('shelf-bays'), make_zapi_skip('storage-shelf-bay-info'), 'bay-op-status' ], 'psu-type' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-type' ], 'product-id' => 'shelf-model', 'temp-sensor-reading' => [ make_zapi_array('temperature-sensors'), make_zapi_skip('storage-shelf-temperature-sensor-info'), 'temp-sensor-reading' ], 'fc-port-op-status' => [ make_zapi_array('fc-ports'), make_zapi_skip('storage-shelf-fc-port-info'), 'fc-port-op-status' ], 'error-type' => [ make_zapi_array('shelf-errors'), make_zapi_skip('storage-shelf-error-info'), 'error-type' ], 'sas-port-power-status' => [ make_zapi_array('sas-ports'), make_zapi_skip('storage-shelf-sas-port-info'), 'sas-port-power-status' ], 'module-is-reporting-element' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-is-reporting-element' ], 'voltage-sensor-location' => [ make_zapi_array('voltage-sensors'), make_zapi_skip('storage-shelf-voltage-sensor-info'), 'voltage-sensor-location' ], 'current-op-status' => [ make_zapi_array('current-sensors'), make_zapi_skip('storage-shelf-current-sensor-info'), 'current-op-status' ], 'current-sensor-location' => [ make_zapi_array('current-sensors'), make_zapi_skip('storage-shelf-current-sensor-info'), 'current-sensor-location' ], 'module-id' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-id' ], 'controller' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'controller' ], 'error-text' => [ make_zapi_array('shelf-errors'), make_zapi_skip('storage-shelf-error-info'), 'error-text' ], 'controller-uuid' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'controller-uuid' ], 'psu-fw-version' => [ make_zapi_array('power-supply-units'), make_zapi_skip('storage-shelf-power-supply-unit-info'), 'psu-fw-version' ], 'iops' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'iops' ], 'error-id' => [ make_zapi_array('shelf-errors'), make_zapi_skip('storage-shelf-error-info'), 'error-id' ], 'io-module-type' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-type' ], 'initiator' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'initiator' ], 'tpgn' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'tpgn' ], 'is-sas-master-module' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'is-sas-master-module' ], 'io-kbps' => [ make_zapi_array('paths'), make_zapi_skip('storage-shelf-path-info'), 'io-kbps' ], 'module-latest-fw-revision' => [ make_zapi_array('shelf-modules'), make_zapi_skip('storage-shelf-module-info'), 'module-latest-fw-revision' ], 'vendor' => 'vendor-name', }, api => "storage-shelf-info-get-iter", ); $Log->exit() if $may_exit; return @state_objs; } 1;