Documentation ¶
Overview ¶
MIT License
(C) Copyright [2019-2021] Hewlett Packard Enterprise Development LP
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
MIT License ¶
(C) Copyright [2019-2021] Hewlett Packard Enterprise Development LP
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
MIT License ¶
(C) Copyright [2019-2021] Hewlett Packard Enterprise Development LP
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index ¶
- Constants
- Variables
- func EnableGenTestingPayloads(ep_id_and_title string) error
- func EventRecordMsgId(erec *EventRecord) (registry, version, msgid string)
- func GenTestingPayloads(f *os.File, name, path string, payload []byte) error
- func GetChassisFRUID(c *EpChassis) (fruid string, err error)
- func GetDriveFRUID(d *EpDrive) (fruid string, err error)
- func GetHSNNICFRUID(hmstype, id, manufacturer, partNum, serialNum string) string
- func GetHTTPClientTimeout() int
- func GetHpeDeviceFRUID(d *EpHpeDevice) (fruid string, err error)
- func GetIPAddressString(ip string) string
- func GetManagerFRUID(m *EpManager) (fruid string, err error)
- func GetMemoryFRUID(m *EpMemory) (fruid string, err error)
- func GetNetworkAdapterFRUID(na *EpNetworkAdapter) (fruid string, err error)
- func GetNodeAccelRiserFRUID(r *EpNodeAccelRiser) (fruid string, err error)
- func GetOffsetMACString(mac string, offset int64) (string, error)
- func GetPDUFRUID(p *EpPDU) (fruid string, err error)
- func GetPowerSupplyFRUID(p *EpPowerSupply) (fruid string, err error)
- func GetProcessorArch(p *EpProcessor) (procArch string)
- func GetProcessorFRUID(p *EpProcessor) (fruid string, err error)
- func GetSystemArch(s *EpSystem) string
- func GetSystemFRUID(s *EpSystem) (fruid string, err error)
- func IsManufacturer(mfrCheckStr, mfr string) int
- func IsUnmarshalTypeError(err error) bool
- func MACCompare(mac1, mac2 string) (int, error)
- func NormalizeMAC(mac string) string
- func NormalizeMACIfValid(mac string) string
- func NormalizeVerifyMAC(mac string) (string, error)
- func RfDefaultClient() *hms_certs.HTTPClientPair
- func SetDebug(level int)
- func SetHTTPClientTimeout(timeout int)
- func SetLogger(l *log.Logger)
- func SetVerbose(level int)
- func SplitAddrZone(ipaddr string) (addr, zone string)
- func StringSplitLast(s string, token byte) (prefix, suffix string)
- func VersionFields(vers, delim string, num int) (version string, included int)
- type AccountService
- type ActionFactoryReset
- type ActionNamed
- type ActionPowerControl
- type ActionReset
- type ActionResetBreaker
- type ActionResetStatistics
- type ActionSimpleUpdate
- type ActionTestEvent
- type Alarm
- type AlarmActions
- type AlarmCollection
- type AlarmLinks
- type Assembly
- type Chassis
- type ChassisActions
- type ChassisActionsOEM
- type ChassisCollection
- type ChassisFRUInfoRF
- type ChassisLinks
- type ChassisLocationInfoRF
- type ChassisOEM
- type ChassisOemHpe
- type Circuit
- type CircuitActions
- type CircuitCollection
- type CircuitFRUInfo
- type CircuitLinks
- type CircuitSummary
- type CircuitsLocationInfo
- type ComponentChassisInfo
- type ComponentDescription
- type ComponentManagerInfo
- type ComponentOutletInfo
- type ComponentPDUInfo
- type ComponentSystemInfo
- type ComputerSystem
- type ComputerSystemActions
- type ComputerSystemBoot
- type ComputerSystemLinks
- type ComputerSystemMemorySummary
- type ComputerSystemOEM
- type ComputerSystemOemInsyde
- type ComputerSystemProcessorSummary
- type ContactInfo
- type Control
- type ControlCollection
- type CrayPwrLimit
- type Currents
- type DiscoveryInfo
- type Drive
- type DriveFRUInfoRF
- type DriveLocationInfoRF
- type EnergyReadings
- type EpAccountService
- type EpAssembly
- type EpChassis
- type EpChassisSet
- type EpDrive
- type EpDrives
- type EpEthInterface
- type EpEthInterfaces
- type EpEventService
- type EpHpeDevice
- type EpHpeDevices
- type EpManager
- type EpManagers
- type EpMemory
- type EpMemoryMods
- type EpNetworkAdapter
- type EpNetworkAdapters
- type EpNodeAccelRiser
- type EpNodeAccelRisers
- type EpOutlet
- type EpOutlets
- type EpPDU
- type EpPDUs
- type EpPower
- type EpPowerSupplies
- type EpPowerSupply
- type EpProcessor
- type EpProcessors
- type EpSessionService
- type EpStorage
- type EpStorageCollection
- type EpStorageCollections
- type EpSystem
- type EpSystems
- type EpTaskService
- type EpUpdateService
- type EthernetInterface
- type EthernetInterfaceCollection
- type EthernetNICInfo
- type Event
- type EventDestination
- type EventDestinationCollection
- type EventRecord
- type EventService
- type EventServiceActions
- type GBTProcessorOem
- type GenericCollection
- type HPEAccPowerService
- type HPEPowerLimit
- type HealthRF
- type HpeDevice
- type HpeDeviceCollection
- type HpeDeviceFRUInfoRF
- type HpeDeviceLocationInfoRF
- type HpeOemChassisLinks
- type HttpPushUriApplyTime
- type HttpPushUriOptions
- type IPv4Address
- type IPv6Address
- type IPv6StaticAddress
- type Identifier
- type InsydeOemNcsiCollection
- type InsydeOemNcsiMember
- type InsydeOemNcsiVersionId
- type InsydeOemPackage
- type InsydeOemPackageInfo
- type InventoryData
- type Location
- type Manager
- type ManagerAccount
- type ManagerAccountCollection
- type ManagerAccountLinks
- type ManagerActions
- type ManagerActionsOEM
- type ManagerCollection
- type ManagerFRUInfoRF
- type ManagerLinks
- type ManagerLocationInfoRF
- type Memory
- type MemoryCollection
- type MemoryFRUInfoRF
- type MemoryLocationInfoRF
- type MemoryLocationRF
- type Message
- type NAActionResetToDefault
- type NAActions
- type NAController
- type NAControllerCapabilities
- type NAControllerLinks
- type NADataCenterBridging
- type NAFRUInfoRF
- type NALocationInfoRF
- type NANPIV
- type NASRIOV
- type NAVirtualFunction
- type NAVirtualizationOffload
- type NetworkAdapter
- type NetworkAdapterCollection
- type NodeAccelRiser
- type NodeAccelRiserFRUInfoRF
- type NodeAccelRiserLocationInfoRF
- type NodeAccelRiserOEM
- type OEMPowerInfo
- type OEMPowerInfoHPE
- type Outlet
- type OutletActions
- type OutletCollection
- type OutletFRUInfo
- type OutletLinks
- type OutletLocationInfo
- type PartLocation
- type Placement
- type PostalAddress
- type Power
- type PowerControl
- type PowerCtlInfo
- type PowerDistribution
- type PowerDistributionActions
- type PowerDistributionCollection
- type PowerDistributionFRUInfo
- type PowerDistributionLocationInfo
- type PowerEquipment
- type PowerEquipmentActions
- type PowerEquipmentLinks
- type PowerInfo
- type PowerReadings
- type PowerSupply
- type PowerSupplyFRUInfoRF
- type PowerSupplyLocationInfoRF
- type Processor
- type ProcessorCollection
- type ProcessorFRUInfoRF
- type ProcessorIdRF
- type ProcessorLocationInfoRF
- type ProcessorOEM
- type PwrCtlOEM
- type PwrCtlOEMCray
- type PwrCtlOEMHPE
- type PwrCtlRelatedItem
- type RAParameter
- type RFControl
- type RawRedfishEP
- type RawRedfishEPs
- type RedfishEP
- type RedfishEPDescription
- type RedfishEPDescriptions
- type RedfishEPs
- type RedfishError
- type RedfishErrorContents
- type ResetActionInfo
- type ResourceID
- type ResourceIDSlice
- type Role
- type RoleCollection
- type Sensor
- type SensorActions
- type SensorExcerpt
- type SensorPowerExcerpt
- type SensorsCollection
- type SerialInterfaceCollection
- type ServiceDescription
- type ServiceRoot
- type ServiceRootLinks
- type Session
- type SessionCollection
- type SessionService
- type SimpleStorageCollection
- type StateRF
- type StatusRF
- type Storage
- type StorageCollection
- type SystemCollection
- type SystemFRUInfoRF
- type SystemLocationInfoRF
- type Task
- type TaskCollection
- type TaskService
- type Threshold
- type Thresholds
- type UpdateService
- type UpdateServiceActions
- type VLAN
- type Voltages
Constants ¶
const ( POWER_STATE_ON = "On" POWER_STATE_OFF = "Off" POWER_STATE_POWERING_ON = "PoweringOn" POWER_STATE_POWERING_OFF = "PoweringOff" )
Allowable values for "PowerState" fields.
const ( DiscoveryStarted = "DiscoveryStarted" EndpointInvalid = "EndpointInvalid" EPResponseFailedDecode = "EPResponseFailedDecode" HTTPsGetFailed = "HTTPsGetFailed" HTTPsGetOk = "HTTPsGetOk" NoEthIfacesFound = "NoEthIfacesFound" NotYetQueried = "NotYetQueried" VerifyingData = "VerifyingData" VerificationFailed = "VerificationFailed" ChildVerificationFailed = "ChildVerificationFailed" RedfishSubtypeNoSupport = "RedfishSubtypeNoSupport" EndpointTypeNotSupported = "EndpointTypeNotSupported" EndpointNotEnabled = "EndpointNotEnabled" DiscoverOK = "DiscoverOK" StoreFailed = "StoreFailed" UnexpectedErrorPreStore = "UnexpectedErrorPreStore" )
Error codes for problems obtaining data from remote RF endpoints.
const ( ServiceRootType = "ServiceRoot" ChassisType = "Chassis" ComputerSystemType = "ComputerSystem" EthernetInterfaceType = "EthernetInterface" ManagerType = "Manager" MemoryType = "Memory" ProcessorType = "Processor" DriveType = "Drive" StorageGroupType = "StorageGroup" PowerSupplyType = "PowerSupply" PowerType = "Power" NodeAccelRiserType = "GPUSubsystem" AssemblyType = "Assembly" HpeDeviceType = "HpeDevice" OutletType = "Outlet" PDUType = "PowerDistribution" NetworkAdapterType = "NetworkAdapter" AccountServiceType = "AccountService" EventServiceType = "EventService" LogServiceType = "LogService" SessionServiceType = "SessionService" TaskServiceType = "TaskService" UpdateServiceType = "UpdateService" )
These are types of structures in rfendpoints that are built upon the underlying Redfish type of the same name.
const ( RFSubtypeRack = "Rack" RFSubtypeBlade = "Blade" RFSubtypeEnclosure = "Enclosure" RFSubtypeStandAlone = "StandAlone" RFSubtypeRackMount = "RackMount" RFSubtypeCard = "Card" RFSubtypeCartridge = "Cartridge" RFSubtypeRow = "Row" RFSubtypePod = "Pod" RFSubtypeExpansion = "Expansion" RFSubtypeSidecar = "Sidecar" RFSubtypeZone = "Zone" RFSubtypeSled = "Sled" RFSubtypeShelf = "Shelf" RFSubtypeDrawer = "Drawer" RFSubtypeModule = "Module" RFSubtypeComponent = "Component" RFSubtypeOther = "Other" RFSubtypePhysical = "Physical" RFSubtypeVirtual = "Virtual" RFSubtypeOS = "OS" RFSubtypePhysicallyPartitioned = "PhysicallyPartitioned" RFSubtypeVirtuallyPartitioned = "VirtuallyPartitioned" RFSubtypeManagementController = "ManagementController" RFSubtypeEnclosureManager = "EnclosureManager" RFSubtypeBMC = "BMC" RFSubtypeRackManager = "RackManager" RFSubtypeAuxiliaryController = "AuxiliaryController" // PDU Types RFSubtypeRackPDU = "RackPDU" RFSubtypeFloorPDU = "FloorPDU" RFSubtypeManualTransferSwitch = "ManualTransferSwitch" RFSubtypeAutomaticTransferSwitch = "AutomaticTransferSwitch" // Outlet types RFSubtypeOutNEMA_5_15R = "NEMA_5_15R" RFSubtypeOutNEMA_5_20R = "NEMA_5_20R" RFSubtypeOutNEMA_L5_20R = "NEMA_L5_20R" RFSubtypeOutNEMA_L5_30R = "NEMA_L5_30R" RFSubtypeOutNEMA_L6_20R = "NEMA_L6_20R" RFSubtypeOutNEMA_L6_30R = "NEMA_L6_30R" RFSubtypeOutC13 = "C13" RFSubtypeOutC15 = "C15" RFSubtypeOutC19 = "C19" RFSubtypeOutCEE_7_Type_E = "CEE_7_Type_E" RFSubtypeOutCEE_7_Type_F = "CEE_7_Type_F" RFSubtypeOutSEV_1011_TYPE_12 = "SEV_1011_TYPE_12" RFSubtypeOutSEV_1011_TYPE_23 = "SEV_1011_TYPE_23" RFSubtypeOutBS_1363_Type_G = "BS_1363_Type_G" RFSubtypeUnknown = "Unknown" // Not found/error )
Redfish object subtypes, i.e. {type-name}Type, For example, ChassisType, ManagerType, etc.
const ( EnabledDefault = true UseSSDPDefault = false MACRequiredDefault = false RediscOnUpdateDefault = false )
Defaults for RedfishEndpoint properties
const ( CrayMfr = "Cray" IntelMfr = "Intel" DellMfr = "Dell" GigabyteMfr = "Gigabyte" FoxconnMfr = "Foxconn" )
Parsing manufacturer string
const ( ProcessorArchARM string = "ARM" // ARM ProcessorArchIA64 string = "IA-64" // Intel Itanium ProcessorArchMIPS string = "MIPS" // MIPS ProcessorArchOEM string = "OEM" // OEM-defined ProcessorArchPower string = "Power" // Power ProcessorArchX86 string = "x86" // x86 or x86-64 )
ProcessorArchitecture Enum
const ( ProcessorInstructionSetARMA32 string = "ARM-A32" // ARM 32-bit ProcessorInstructionSetARMA64 string = "ARM-A64" // ARM 64-bit ProcessorInstructionSetIA64 string = "IA-64" // Intel IA-64 ProcessorInstructionSetMIPS32 string = "MIPS32" // MIPS 32-bit ProcessorInstructionSetMIPS64 string = "MIPS64" // MIPS 64-bit ProcessorInstructionSetOEM string = "OEM" // OEM-defined ProcessorInstructionSetPowerISA string = "PowerISA" // PowerISA-64 or PowerISA-32 ProcessorInstructionSetX86 string = "x86" // x86 ProcessorInstructionSetX86_64 string = "x86-64" // x86-64 )
Processor InstructionSet Enum
const FOXCONN_ETH_INT_DESCRIPTION = "Foxconn NCSI Interface"
const FOXCONN_PRIMARY_ETH_INT_FW_NAME = "X550 FW Ver"
const FOXCONN_PRIMARY_ETH_INT_PCIDID_1 = "0x6315"
const FOXCONN_PRIMARY_ETH_INT_PCIDID_2 = "0x1563"
const FOXCONN_PRIMARY_ETH_INT_SUFFIX = "-primary_eth"
const MaxFanout int = 1000
const PKG_VERSION = "0.2"
Variables ¶
var CrayEXDescrArchMap = map[string]string{ "windomnodecard": base.ArchX86.String(), "wnc": base.ArchX86.String(), "cnc": base.ArchX86.String(), "bardpeaknc": base.ArchX86.String(), "grizzlypknodecard": base.ArchX86.String(), "antero": base.ArchX86.String(), "blancapeaknc": base.ArchARM.String(), "parrypeaknc": base.ArchX86.String(), }
Drescription matching strings for Cray EX hardware
var CrayEXModelArchMap = map[string]string{ "ex235": base.ArchX86.String(), "ex420": base.ArchX86.String(), "ex425": base.ArchX86.String(), "ex254": base.ArchARM.String(), "ex255": base.ArchX86.String(), "ex4252": base.ArchX86.String(), }
Model matching strings for Cray EX hardware.
var ErrRFDiscFQDNMissing = errors.New("FQDN unexpectedly empty string")
var ErrRFDiscILOLicenseReq = errors.New("iLO License Required")
var ErrRFDiscURLNotFound = errors.New("URL request returned 404: Not Found")
Functions ¶
func EnableGenTestingPayloads ¶
Turn on dumping of http output with path info, formatted for http mock responses. format is ep_id:ep_title. ep_id is the single endpoint to dump and ep_title(optional) is to be used in variable names to make them unique. If ep_title is not included, the ep_id will be used.
NOTE: Not tread safe. Set once per process before invoking client commands.
func EventRecordMsgId ¶
func EventRecordMsgId(erec *EventRecord) (registry, version, msgid string)
Parse the MessageId field of an eventRecord within an event.
If erec.MessageId: "Registry.1.0.MessageId" (or 1.0.0), Return: 'registry'="Registry", 'version'="1.0", and 'msgid'="MessageId".
If only two fields, 'version' will be "", if only one, 'registry' will be empty as well and it will be returned as 'msgid'.
func GenTestingPayloads ¶
This dumps a particular endpoint in such a way that it can be used as a mock remote endpoint in unit tests. There should be one per type of endpoint (HMS type, manufacturer, base model, major firmware version/vendor etc.). Whenever interesting differences present themselves, basically.
Output is to a file. Note that '>' is used to filter case statement entries so that they can be organized later as a single block (it will be interleaved due to execution order otherwise).
func GetChassisFRUID ¶
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetDriveFRUID ¶
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetHSNNICFRUID ¶
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetHTTPClientTimeout ¶
func GetHTTPClientTimeout() int
Get the HTTP Client timeout in seconds used during Redfish interogation
func GetHpeDeviceFRUID ¶
func GetHpeDeviceFRUID(d *EpHpeDevice) (fruid string, err error)
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetIPAddressString ¶
Return the ip address string, in normalized form for ipv6, or the empty string if it is not a valid ipv4 or ipv6 address. Normalization for ipv6 involves lower-casing, removing leading zeros, and adding'[' ']' brackets, plus anything else net.ParseIP does. If a port is present, it is added after any required bracketing.
func GetManagerFRUID ¶
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetMemoryFRUID ¶
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetNetworkAdapterFRUID ¶
func GetNetworkAdapterFRUID(na *EpNetworkAdapter) (fruid string, err error)
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetNodeAccelRiserFRUID ¶
func GetNodeAccelRiserFRUID(r *EpNodeAccelRiser) (fruid string, err error)
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetOffsetMACString ¶
Given a valid MAC in 12-byte hex format (with/without ":"), return a MAC address that is the original value plus offset, which can be negative.
Returns: New MAC string in ":" hex format (keeping upper/lowercase unless
case is mixed, then defaulting to lower) and err == nil OR Empty-String/Non-NIL-error if MAC string is invalid/bad-format or would over/underflow.
func GetPDUFRUID ¶
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetPowerSupplyFRUID ¶
func GetPowerSupplyFRUID(p *EpPowerSupply) (fruid string, err error)
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetProcessorArch ¶ added in v2.9.0
func GetProcessorArch(p *EpProcessor) (procArch string)
Check the processor's ProcessorArchitecture and InstructionSet fields to determine the architecture.
func GetProcessorFRUID ¶
func GetProcessorFRUID(p *EpProcessor) (fruid string, err error)
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func GetSystemArch ¶ added in v2.9.0
func GetSystemFRUID ¶
Build FRUID using standard fields: <Type>.<Manufacturer>.<PartNumber>.<SerialNumber> else return an error.
func IsManufacturer ¶
This should only return 1 if the RF manufacturer string (mfrCheckStr) is mfr (see above), 0 for not and -1 if mfrCheckStr is blank or non-alpha-numeric. This should be used in combination with other checks ideally.
func IsUnmarshalTypeError ¶
If json.Unmarshal failed with a single-field error or something worse.
func MACCompare ¶
Normalize and compare two MAC strings and report -1 if mac1 is lower, 1 if mac1 is higher, and 0 if they match.
func NormalizeMAC ¶
Normalize the MAC string to be lower case, ":"-separated 6-hex-byte format. If the MAC does not seem to be valid (strange separator, wrong length, etc.) return the ORIGINAL string
func NormalizeMACIfValid ¶
Normalize the MAC string to be lower case, ":"-separated 6-hex-byte format. If the MAC does not seem to be valid (strange separator, wrong length, etc.) return the EMPTY string
func NormalizeVerifyMAC ¶
Normalize the MAC string to be lower case, ":"-separated 6-hex-byte format. If the MAC does not seem to be valid (strange separator, wrong length, etc.) return the EMPTY string AND set err != nil
func RfDefaultClient ¶
func RfDefaultClient() *hms_certs.HTTPClientPair
Returns default-configuration HTTP Client
func SetHTTPClientTimeout ¶
func SetHTTPClientTimeout(timeout int)
Set the HTTP Client timeout in seconds used during Redfish interogation. 0 means no timeout. NOTE: Global, to be called only once at startup.
func SetVerbose ¶
func SetVerbose(level int)
func SplitAddrZone ¶
Split off the portion of the address string following the last '%'
func StringSplitLast ¶
Split a string into two parts at the LAST instance of token. strings functions make this annoying.
func VersionFields ¶
For a version string, e.g. 1.0.0, include only the first 'num' parts. Return 'version' with included fields only, plus the number of fields 'included'. If less are found, 'included' will be less than 'num'.
Example: For vers=1.0.0 and num=2, return "1.0", 2.
Types ¶
type AccountService ¶
type AccountService struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` Status StatusRF `json:"Status"` ServiceEnabled *bool `json:"ServiceEnabled,omitempty"` AuthFailureLoggingThreshold json.Number `json:"AuthFailureLoggingThreshold"` MinPasswordLength json.Number `json:"MinPasswordLength"` AccountLockoutThreshold json.Number `json:"AccountLockoutThreshold"` AccountLockoutDuration json.Number `json:"AccountLockoutDuration"` AccountLockoutCounterResetAfter json.Number `json:"AccountLockoutCounterResetAfter"` Accounts ResourceID `json:"Accounts"` Roles ResourceID `json:"Roles"` }
Redfish account service. This is the top-level object linked via the service root. It configures general account parameters and links to individual accounts and user roles.
type ActionFactoryReset ¶
type ActionFactoryReset struct { AllowableValues []string `json:"FactoryResetType@Redfish.AllowableValues"` Target string `json:"target"` Title string `json:"title,omitempty"` }
FactoryReset - OEM (Cray) only so far
type ActionNamed ¶
type ActionNamed struct { AllowableValues []string `json:"Name@Redfish.AllowableValues"` Target string `json:"target"` Title string `json:"title,omitempty"` }
Action "Name" - OEM (Cray) only so far
type ActionPowerControl ¶
type ActionPowerControl struct { AllowableValues []string `json:"PowerState@Redfish.AllowableValues,omitempty"` Target string `json:"target"` Title string `json:"title,omitempty"` }
PowerControl - Outlet
type ActionReset ¶
type ActionReset struct { AllowableValues []string `json:"ResetType@Redfish.AllowableValues"` RFActionInfo string `json:"@Redfish.ActionInfo"` Target string `json:"target"` Title string `json:"title,omitempty"` }
Action type Reset - May be found under Chassis, System or Manager Actions
type ActionResetBreaker ¶
type ActionResetBreaker struct { AllowableValues []string `json:"ResetBreaker@Redfish.AllowableValues,omitempty"` Target string `json:"target"` Title string `json:"title,omitempty"` }
Action type ResetBreaker - Outlet
type ActionResetStatistics ¶
type ActionResetStatistics struct { AllowableValues []string `json:"ResetStatistics@Redfish.AllowableValues,omitempty"` Target string `json:"target"` Title string `json:"title,omitempty"` }
Action type ResetStatistics - Outlet Is there AllowableValues here? No idea what {type}@ prefix should be then.
type ActionSimpleUpdate ¶
type ActionSimpleUpdate struct { Target string `json:"target,omitempty"` Title string `json:"title,omitempty"` }
UpdateService - Simple update action payload.
type ActionTestEvent ¶
type ActionTestEvent struct { AllowableValues []string `json:"EventType@Redfish.AllowableValues"` Target string `json:"target"` Title string `json:"title,omitempty"` }
EventService - Submit Test Event action payload.
type Alarm ¶
type Alarm struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Description string `json:"Description"` Name string `json:"Name"` Actions *AlarmActions `json:"Actions,omitempty"` AlarmState string `json:"AlarmState"` AutomaticReArm *bool `json:"AutomaticReArm,omitempty"` OEM *json.RawMessage `json:"Oem,omitempty"` Message string `json:"Message"` MessageArgs []string `json:"MessageArgs"` MessageId string `json:"MessageId"` Severity string `json:"Severity"` Links AlarmLinks `json:"Links"` }
Redfish Alarms
DMTF: "An Alarm is an entity that has a latch type behavior. It is designed to be used to persist sensor threshold crossing or to capture the momentary state of another property."
type AlarmActions ¶
type AlarmActions struct {
OEM *json.RawMessage `json:"Oem,omitempty"`
}
Actions for Alarm - OEM only for now
type AlarmCollection ¶
type AlarmCollection GenericCollection
Collection of Sensors, i.e. linked to a parent component, e.g. PDU
type AlarmLinks ¶
type AlarmLinks struct { OEM *json.RawMessage `json:"Oem,omitempty"` RelatedProperty ResourceID `json:"RelatedProperty"` RelatedSensor ResourceID `json:"RelatedSensor"` }
Links for Alarm
type Assembly ¶
type Assembly struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Description string `json:"Description"` Name string `json:"Name"` Id string `json:"Id"` Assemblies []*NodeAccelRiser `json:"Assemblies"` }
JSON decoded struct returned from Redfish for a particular set of ids. Assembly resources deviate from GenericCollections by by using the Assemblies array instead of a Members array Example: /redfish/v1/Chassis/<system_id>/Assembly
type Chassis ¶
type Chassis struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Actions *ChassisActions `json:"Actions,omitempty"` ChassisLocationInfoRF ChassisFRUInfoRF PowerState string `json:"PowerState"` Status StatusRF `json:"Status"` NetworkAdapters ResourceID `json:"NetworkAdapters"` Power ResourceID `json:"Power"` Assembly ResourceID `json:"Assembly"` Thermal ResourceID `json:"Thermal"` Controls ResourceID `json:"Controls"` Links ChassisLinks `json:"Links"` OEM *ChassisOEM `json:"Oem,omitempty"` }
JSON decoded struct returned from the BMC of type "Chassis"
Example: /redfish/v1/Chassis/System.Embedded.1
type ChassisActions ¶
type ChassisActions struct { ChassisReset ActionReset `json:"#Chassis.Reset"` OEM *ChassisActionsOEM `json:"Oem,omitempty"` }
Redfish Actions for Chassis components
type ChassisActionsOEM ¶
type ChassisActionsOEM struct {
ChassisEmergencyPower *ActionReset `json:"#Chassis.EmergencyPower,omitempty"`
}
Redfish Chassis Actions - OEM sub-struct
type ChassisCollection ¶
type ChassisCollection GenericCollection
JSON decoded collection struct returned from Redfish "Chassis" Example: /redfish/v1/Chassis
type ChassisFRUInfoRF ¶
type ChassisFRUInfoRF struct { AssetTag string `json:"AssetTag"` ChassisType string `json:"ChassisType"` Model string `json:"Model"` Manufacturer string `json:"Manufacturer"` PartNumber string `json:"PartNumber"` SerialNumber string `json:"SerialNumber"` SKU string `json:"SKU"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system. TODO: How to version these (as HMS structures)
type ChassisLinks ¶
type ChassisLinks struct { ComputerSystems []ResourceID `json:"ComputerSystems"` // Nodes in chassis Contains []ResourceID `json:"Contains"` // Sub-chassis ids ContainedBy ResourceID `json:"ContainedBy"` // Parent chassis CooledBy []ResourceID `json:"CooledBy"` Drives []ResourceID `json:"Drives"` ManagedBy []ResourceID `json:"ManagedBy"` PoweredBy []ResourceID `json:"PoweredBy"` Storage []ResourceID `json:"Storage"` Switches []ResourceID `json:"Switches"` }
Redfish Chassis - Links section
type ChassisLocationInfoRF ¶
type ChassisLocationInfoRF struct { Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` Hostname string `json:"HostName"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU TODO: How to version these (as HMS structures).
type ChassisOEM ¶
type ChassisOEM struct {
Hpe *ChassisOemHpe `json:"Hpe,omitempty"`
}
type ChassisOemHpe ¶
type ChassisOemHpe struct { // Actions // BayNumber // Firmware Links HpeOemChassisLinks `json:"Links"` }
type Circuit ¶
type Circuit struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` // Embedded structs CircuitsLocationInfo CircuitFRUInfo Actions *CircuitActions `json:"Actions,omitempty"` Id string `json:"Id"` Description string `json:"Description"` Name string `json:"Name"` CircuitType string `json:"CircuitType"` // Current State (all enums) BreakerState string `json:"BreakerState"` PowerState string `json:"PowerState"` Status StatusRF `json:"Status"` IndicatorLED string `json:"IndicatorLED"` // Configuration CriticalCircuit *bool `json:"CriticalCircuit,omitempty"` PowerCycleDelaySeconds json.Number `json:"PowerCycleDelaySeconds,omitempty"` PowerOnDelaySeconds json.Number `json:"PowerOnDelaySeconds,omitempty"` PowerRestoreDelaySeconds json.Number `json:"PowerRestoreDelaySeconds,omitempty"` PowerRestorePolicy string `json:"PowerRestorePolicy,omitempty"` Outlets []ResourceID `json:"Outlets"` OutletsOCount int `json:"Outlets@odata.count,omitempty"` Oem *json.RawMessage `json:"Oem,omitempty"` // Links for outlet Links CircuitLinks `json:"Links"` // Sensors CurrentSensor SensorExcerpt `json:"CurrentSensor,omitempty"` EnergySensor SensorExcerpt `json:"EnergySensor,omitempty"` FrequencySensor SensorExcerpt `json:"FrequencySensor,omitempty"` PowerSensor SensorPowerExcerpt `json:"PowerSensor,omitempty"` PolyPhaseCurrentSensors Currents `json:"PolyPhaseCurrentSensors,omitempty"` PolyPhaseEnergySensors EnergyReadings `json:"PolyPhaseEnergySensors,omitempty"` PolyPhasePowerSensors PowerReadings `json:"PolyPhasePowerSensors,omitempty"` PolyPhaseVoltageSensors Voltages `json:"PolyPhaseVoltageSensors,omitempty"` TemperatureSensor SensorExcerpt `json:"TemperatureSensor,omitempty"` VoltageSensor SensorExcerpt `json:"VoltageSensor,omitempty"` }
Redfish Circuit
This represents a Circuitwhich will have power components linked to it.
Example: /redfish/v1/PowerEquipment/RackPDUs/1/Branches/A
type CircuitActions ¶
type CircuitActions struct { PowerControl *ActionPowerControl `json:"#Circuit.PowerControl,omitempty"` ResetBreaker *ActionResetBreaker `json:"#Circuit.ResetBreaker,omitempty"` ResetStatistics *ActionResetStatistics `json:"#Circuit.ResetStatistics,omitempty"` OEM *json.RawMessage `json:"Oem,omitempty"` }
Redfish Circuit Actions sub-struct
type CircuitCollection ¶
type CircuitCollection GenericCollection
Collection of Circuits, i.e. linked with a PDU
type CircuitFRUInfo ¶
type CircuitFRUInfo struct { NominalVoltage string `json:"NominalVoltage,omitempty"` CircuitType string `json:"CircuitType"` // Enum PlugType string `json:"PlugType"` // Enum - Matches OutletType PhaseWiringType string `json:"PhaseWiringType,omitempty"` PowerEnabled *bool `json:"PowerEnabled,omitempty"` // Can be powered? RatedCurrentAmps json.Number `json:"RatedCurrentAmps,omitempty"` VoltageType string `json:"VoltageType,omitempty"` }
Circuits do not have individual FRUs, PDUs do, but their properties are potentially important. This is FRU-dependent data for HwInventory Note: omits configurable parameters. Note2: Circuit schema is fairly similar to Outlet, and links to Outlets.
type CircuitLinks ¶
type CircuitLinks struct { OEM *json.RawMessage `json:"Oem,omitempty"` BranchCircuit ResourceID `json:"BranchCircuit"` }
Links for Circuit
type CircuitSummary ¶
type CircuitSummary struct { ControlledOutlets json.Number `json:"ControlledOutlets,omitempty"` MonitoredBranches json.Number `json:"MonitoredBranches,omitempty"` MonitoredOutlets json.Number `json:"MonitoredOutlets,omitempty"` MonitoredPhases json.Number `json:"MonitoredPhases,omitempty"` TotalBranches json.Number `json:"TotalBranches,omitempty"` TotalOutlets json.Number `json:"TotalOutlets,omitempty"` TotalPhases json.Number `json:"TotalPhases,omitempty"` }
CircuitSummary sub-struct of PowerDistribution These are all-readonly
type CircuitsLocationInfo ¶
type CircuitsLocationInfo struct { Id string `json:"Id"` Description string `json:"Description"` Name string `json:"Name"` }
Circuits do not have individual FRUs, PDUs do, but their properties are potentially important. This is location-dependent data for HwInventory Note: Circuit schema is fairly similar to Outlet, and links to Outlets.
type ComponentChassisInfo ¶
type ComponentChassisInfo struct { Name string `json:"Name,omitempty"` Actions *ChassisActions `json:"Actions,omitempty"` }
Type specific info for Redfish Chassis components
type ComponentDescription ¶
type ComponentDescription struct { ID string `json:"ID"` // Key, HMS ID, i.e. xname Type string `json:"Type"` // Key, HMS Type Domain string `json:"Domain,omitempty"` FQDN string `json:"FQDN,omitempty"` RedfishType string `json:"RedfishType"` RedfishSubtype string `json:"RedfishSubtype"` MACAddr string `json:"MACAddr,omitempty"` UUID string `json:"UUID,omitempty"` OdataID string `json:"OdataID"` RfEndpointID string `json:"RedfishEndpointID"` }
type ComponentManagerInfo ¶
type ComponentManagerInfo struct { Name string `json:"Name,omitempty"` Actions *ManagerActions `json:"Actions,omitempty"` EthNICInfo []*EthernetNICInfo `json:"EthernetNICInfo,omitempty"` }
type ComponentOutletInfo ¶
type ComponentOutletInfo struct { Name string `json:"Name,omitempty"` Actions *OutletActions `json:"Actions,omitempty"` }
type ComponentPDUInfo ¶
type ComponentPDUInfo struct { Name string `json:"Name,omitempty"` Actions *PowerDistributionActions `json:"Actions,omitempty"` }
type ComponentSystemInfo ¶
type ComponentSystemInfo struct { Name string `json:"Name,omitempty"` Actions *ComputerSystemActions `json:"Actions,omitempty"` EthNICInfo []*EthernetNICInfo `json:"EthernetNICInfo,omitempty"` PowerCtlInfo Controls []*Control `json:"Controls,omitempty"` }
Type specific info for Redfish ComputerSystem components
type ComputerSystem ¶
type ComputerSystem struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` // Embedded structs - used for SystemHWInventory. SystemLocationInfoRF // Location/instance specifc properties SystemFRUInfoRF // FRU-specific data that follows the physical HW. Actions *ComputerSystemActions `json:"Actions,omitempty"` Boot ComputerSystemBoot `json:"Boot"` PowerState string `json:"PowerState"` IndicatorLED string `json:"IndicatorLED"` Status StatusRF `json:"Status"` Bios ResourceID `json:"Bios"` EthernetInterfaces ResourceID `json:"EthernetInterfaces"` LogServices ResourceID `json:"LogServices"` Memory ResourceID `json:"Memory"` Processors ResourceID `json:"Processors"` SecureBoot ResourceID `json:"SecureBoot"` SimpleStorage ResourceID `json:"SimpleStorage"` Storage ResourceID `json:"Storage"` Links ComputerSystemLinks `json:"Links"` OEM *ComputerSystemOEM `json:"Oem,omitempty"` }
Redfish pass-through from Redfish Processor
Example: /redfish/v1/Systems/System.Embedded.1
This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields consitiute the type specific fields in the HWInventory objects that are returned in response to queries. JSON decoded struct returned from the BMC of type "ComputerSystem"
type ComputerSystemActions ¶
type ComputerSystemActions struct {
ComputerSystemReset ActionReset `json:"#ComputerSystem.Reset"`
}
Redfish ComputerSystem sub-struct - Actions
type ComputerSystemBoot ¶
type ComputerSystemBoot struct { BootSourceOverrideEnabled string `json:"BootSourceOverrideEnabled"` BootSourceOverrideTarget string `json:"BootSourceOverrideTarget"` AllowableValues []string `json:"BootSourceOverrideTarget@Redfish.AllowableValues"` UefiTargetBootSourceOverride string `json:"UefiTargetBootSourceOverride"` }
Redfsh ComputerSystem sub-struct - Boot options/settings/parameters
type ComputerSystemLinks ¶
type ComputerSystemLinks struct { Chassis []ResourceID `json:"Chassis"` ManagedBy []ResourceID `json:"ManagedBy"` PoweredBy []ResourceID `json:"PoweredBy"` }
Redfish Links struct - All those defined for ComputerSystem objects
type ComputerSystemMemorySummary ¶
type ComputerSystemMemorySummary struct {
TotalSystemMemoryGiB json.Number `json:"TotalSystemMemoryGiB"`
}
Redfish MemorySummary struct - Sub-struct of ComputerSystem
type ComputerSystemOEM ¶ added in v2.11.6
type ComputerSystemOEM struct {
InsydeNcsi *ComputerSystemOemInsyde `json:"InsydeNcsi,omitempty"`
}
Redfish ComputerSystem sub-struct - OEM
type ComputerSystemOemInsyde ¶ added in v2.11.6
type ComputerSystemOemInsyde struct {
Ncsi ResourceID `json:"Ncsi"`
}
type ComputerSystemProcessorSummary ¶
type ComputerSystemProcessorSummary struct { Count json.Number `json:"Count"` Model string `json:"Model"` }
Redfish ProcessorSummary struct - Sub-struct of ComputerSystem
type ContactInfo ¶
type ContactInfo struct { ContactName string `json:"ContactName"` EmailAddress string `json:"EmailAddress"` PhoneNumber string `json:"PhoneNumber,omitempty"` }
Within Location - ContactInfo
type ControlCollection ¶
type ControlCollection GenericCollection
JSON decoded collection struct returned from Redfish "Controls" Example: /redfish/v1/Chassis/<chassis_id>/Controls
type CrayPwrLimit ¶
type Currents ¶
type Currents struct { Line1 *SensorExcerpt `json:"Line1,omitempty"` Line2 *SensorExcerpt `json:"Line2,omitempty"` Line3 *SensorExcerpt `json:"Line3,omitempty"` Neutral *SensorExcerpt `json:"Neutral,omitempty"` }
Currents - Used in Outlet and Circuit
type DiscoveryInfo ¶
type DiscoveryInfo struct { LastAttempt string `json:"LastDiscoveryAttempt,omitempty"` LastStatus string `json:"LastDiscoveryStatus"` RedfishVersion string `json:"RedfishVersion,omitempty"` }
func (*DiscoveryInfo) UpdateLastStatusWithTS ¶
func (d *DiscoveryInfo) UpdateLastStatusWithTS(status string)
Update Status and set timestamp to now.
type Drive ¶
type Drive struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` // Embedded structs. DriveLocationInfoRF DriveFRUInfoRF Status StatusRF `json:"Status"` }
Redfish pass-through from Redfish "Drive" This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields constitute the type specific fields in the HWInventory objects that are returned in response to queries.
type DriveFRUInfoRF ¶
type DriveFRUInfoRF struct { //Manufacture Info Manufacturer string `json:"Manufacturer"` SerialNumber string `json:"SerialNumber"` PartNumber string `json:"PartNumber"` Model string `json:"Model"` SKU string `json:"SKU"` //Capabilities Info CapacityBytes json.Number `json:"CapacityBytes"` Protocol string `json:"Protocol"` MediaType string `json:"MediaType"` RotationSpeedRPM json.Number `json:"RotationSpeedRPM"` BlockSizeBytes json.Number `json:"BlockSizeBytes"` CapableSpeedGbs json.Number `json:"CapableSpeedGbs"` //Status Info FailurePredicted bool `json:"FailurePredicted"` EncryptionAbility string `json:"EncryptionAbility"` EncryptionStatus string `json:"EncryptionStatus"` NegotiatedSpeedGbs json.Number `json:"NegotiatedSpeedGbs"` PredictedMediaLifeLeftPercent json.Number `json:"PredictedMediaLifeLeftPercent"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system. TODO: How to version these (as HMS structures)
type DriveLocationInfoRF ¶
type DriveLocationInfoRF struct { // Redfish pass-through from rf.Drive Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU TODO: How to version these (as HMS structures).
type EnergyReadings ¶
type EnergyReadings struct { Line1ToLine2 *SensorExcerpt `json:"Line1ToLine2,omitempty"` Line1ToNeutral *SensorExcerpt `json:"Line1ToNeutral,omitempty"` Line2ToLine3 *SensorExcerpt `json:"Line2ToLine3,omitempty"` Line2ToNeutral *SensorExcerpt `json:"Line2ToNeutral,omitempty"` Line3ToLine1 *SensorExcerpt `json:"Line3ToLine1,omitempty"` Line3ToNeutral *SensorExcerpt `json:"Line3ToNeutral,omitempty"` }
EnergyReadings - Used in Outlet and Circuit
type EpAccountService ¶
type EpAccountService struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ServiceDescription AccountServiceURL string `json:"accountServiceURL"` // Full URL to this svc RootFQDN string `json:"rootFQDN"` // i.e. for epRF RootHostname string `json:"rootHostname"` RootDomain string `json:"rootDomain"` LastStatus string `json:"lastStatus"` AccountServiceRF AccountService `json:"accountServiceRF"` // contains filtered or unexported fields }
This is the AccountService for the corresponding RedfishEP
func NewEpAccountService ¶
func NewEpAccountService(epRF *RedfishEP, odataID string) *EpAccountService
Create new struct to discover the AccountService for this RedfishEP
type EpAssembly ¶
type EpAssembly struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` InventoryData AssemblyURL string `json:"assemblyURL"` // Full URL to this RF Assembly obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // Chassis LastStatus string `json:"LastStatus"` AssemblyRF Assembly `json:"AssemblyRF"` AssemblyRaw *json.RawMessage // contains filtered or unexported fields }
This is the top-level Assembly object for a particular Chassis.
func NewEpAssembly ¶
func NewEpAssembly(s *EpSystem, odataID ResourceID, pOID, pType string) *EpAssembly
Initializes EpAssembly struct with minimal information needed to pass along to its children.
type EpChassis ¶
type EpChassis struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription // Embedded struct - Chassis specific info ComponentChassisInfo // Embedded struct - Locational/FRU, state, and status info InventoryData BaseOdataID string `json:"BaseOdataID"` ChassisURL string `json:"ChassisURL"` // Full URL to this Chassis PChassisOID string `json:"pChassisOID"` // odata.id for parent, if nested PChassisType string `json:"pChassisType"` // ChassisType enum from parent // The Oids here are map keys stored by the endpoint. Via the // epRF ptr we can obtain the Go EpManager or EpSystem structs. // // We will want to store some higher-level information when we know // more about the system type, but for now they are just for navigation. // // Note that since there is always only a single "ContainedBy" link, we // use this, if it exists, to set the parent chassis OdataID field above // (e.g. PChassisOID/PChassesType). ManagedBy []ResourceID `json:"managedBy"` ChildChassis []ResourceID `json:"childChassis"` ChildSystems []ResourceID `json:"childSystems"` LastStatus string `json:"lastStatus"` ChassisRF Chassis `json:"chassisRF"` Power *EpPower `json:"Power"` PowerSupplies EpPowerSupplies `json:"PowerSupplies"` // contains filtered or unexported fields }
These are the discovered attributes for a particular entry in the /Chassis/ URL for a given RF endpoint. The chassis is important to understand where a particular system may be in an enclosure (if it is not the only one) and what type it is. Additionally, power operations may be carried out at the chassis level and there may be some nesting of chassis (e.g. blade and cage) that we may need to understand.
func NewEpChassis ¶
func NewEpChassis(epRF *RedfishEP, odataID ResourceID, rawOrdinal int) *EpChassis
Initializes EpSystem struct with minimal information needed to discover it, i.e. endpoint info and the OdataID of the system to look at. This should be the only way this struct is created.
type EpChassisSet ¶
Set of EpChassis, representing a Redfish "chassis" under some RF endpoint.
type EpDrive ¶
type EpDrive struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` // Embedded struct - Locational/FRU, state, and status info InventoryData DriveURL string `json:"driveURL"` // Full URL to this RF Drive obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // ComputerSystem or Manager LastStatus string `json:"LastStatus"` DriveRF Drive `json:"DriveRF"` // contains filtered or unexported fields }
This is one of possibly several drives for a particular EpSystem(Redfish "ComputerSystem" or just "System").
func NewEpDrive ¶
func NewEpDrive(s *EpStorageCollection, odataID ResourceID, rawOrdinal int) *EpDrive
Initializes EpDrive struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the Drive to look at. This should be the only way this struct is created for Drives under a system.
type EpDrives ¶
Set of EpDrive, each representing a Redfish "Drive" listed under a Redfish ComputerSystem aka System. Unlike Systems/Chassis, there is no top-level listing of all drives under an RF endpoint, i.e. each one is specific to a collection belonging to a single parent System.
type EpEthInterface ¶
type EpEthInterface struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription // Embedded struct - Locational/FRU, state, and status info InventoryData BaseOdataID string `json:"BaseOdataID"` EtherURL string `json:"etherURL"` // Full URL to this EthernetInterface ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // ComputerSystem or Manager Hostname string `json:"hostname"` Domain string `json:"domain"` MACAddr string `json:"MACAddr"` LastStatus string `json:"LastStatus"` EtherIfaceRF EthernetInterface `json:"EtherIfaceRF"` // contains filtered or unexported fields }
This is one of possibly several ethernet interfaces for a a particular EpSystem(Redfish "ComputerSystem" or just "System"), or for a particular manager, i.e. BMC.
func NewEpEthInterface ¶
func NewEpEthInterface(e *RedfishEP, pOID, pType string, odataID ResourceID, rawOrdinal int) *EpEthInterface
Initializes EpEthInterface struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the EthernetInterface to look at. This should be the only way this struct is created for interfaces under a system. TODO: constructor for manager if needed.
type EpEthInterfaces ¶
type EpEthInterfaces struct { Num int `json:"num"` OIDs map[string]*EpEthInterface `json:"oids"` }
Set of EpEthInterface, each representing a Redfish "EthernetInterface" listed under some Redfish "System" or "Manager". Unlike Systems or Chassis, there is no top-level listing of all interfaces under an RF endpoint, i.e. each set is specific to a single parent System or Manager.
type EpEventService ¶
type EpEventService struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ServiceDescription EventServiceURL string `json:"eventServiceURL"` // Full URL to this svc RootFQDN string `json:"rootFQDN"` // i.e. for epRF RootHostname string `json:"rootHostname"` RootDomain string `json:"rootDomain"` LastStatus string `json:"lastStatus"` EventServiceRF EventService `json:"eventServiceRF"` // contains filtered or unexported fields }
This is the EventService for the corresponding RedfishEP
func NewEpEventService ¶
func NewEpEventService(epRF *RedfishEP, odataID string) *EpEventService
Create new struct to discover the EventService for this RedfishEP
type EpHpeDevice ¶
type EpHpeDevice struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` InventoryData DeviceURL string `json:"deviceURL"` // Full URL to this RF Assembly obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // Chassis LastStatus string `json:"LastStatus"` DeviceRF HpeDevice `json:"DeviceRF"` // contains filtered or unexported fields }
This is the top-level Oem HpeDevice object for a particular Chassis.
func NewEpHpeDevice ¶
func NewEpHpeDevice(s *EpSystem, odataID ResourceID, pOID, pType string, rawOrdinal int) *EpHpeDevice
Initializes EpHpeDevice struct with minimal information needed to pass along to its children.
type EpHpeDevices ¶
type EpHpeDevices struct { Num int `json:"num"` OIDs map[string]*EpHpeDevice `json:"oids"` }
Set of EpHpeDevices, each representing a Redfish HPE OEM device (possibly a GPU) listed under a Redfish Chassis.
type EpManager ¶
type EpManager struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription // Embedded struct: Manager specific data ComponentManagerInfo // Embedded struct - Locational/FRU, state, and status info InventoryData ManagerURL string `json:"ManagerURL"` // Full URL to this Manager BaseOdataID string `json:"BaseOdataID"` ChassisOID string `json:"ChassisOID"` // odata.id for containing chassis ChassisType string `json:"ChassisType"` // ChassisType enum from container LastStatus string `json:"LastStatus"` // The oids here are map keys for structs stored in the EpEndpoint. Via // the epRF ptr we can obtain the correspodning Go EpSystem or EpChassis // structs. While a manager will usually manage a single system or // multi-system enclosure or chassis, it is not necessarily a strict // one-for-one mapping in either direction. // // We will want to store some higher-level information when we know // more about the Manager type, but for now they are just for navigation. // // Note that since there is always only a single "ManagerInChassis" link, // use this, if it exists, to set the ChassisOID field above. ManagerInChassis ResourceID `json:"managerInChassis"` ManagedChassis []ResourceID `json:"managedChassis"` ManagedSystems []ResourceID `json:"managedSystems"` ManagerRF Manager `json:"managerRF"` // Ethernet Interfaces are children of Managers or Systems, not top // level components like Chassis or Managers. Therefore we put the // local collection here. Chassis or Managers are consolodated at the // EpEndpoint level in maps and we will use the odataID recorded here to // reference these via the epRF pointer. ENetInterfaces EpEthInterfaces `json:"enetInterfaces"` // contains filtered or unexported fields }
These are the discovered attributes for a particular entry in the /Manager/ URL for a given RF endpoint. The manager is important to understand as they will represent important components such as BMCs and a top-level manager (if there is more than one) will implement the Redfish entry point we will be interacting with.
func NewEpManager ¶
func NewEpManager(epRF *RedfishEP, odataID ResourceID, rawOrdinal int) *EpManager
Initializes EpSystem struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the system to look at. This should be the only way this struct is created.
type EpManagers ¶
Set of EpManager, representing a Redfish "Manager" under some RF endpoint.
type EpMemory ¶
type EpMemory struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription // Embedded struct - Locational/FRU, state, and status info InventoryData BaseOdataID string `json:"BaseOdataID"` MemoryURL string `json:"memoryURL"` // Full URL to this RF Memory obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // ComputerSystem or Manager LastStatus string `json:"LastStatus"` MemoryRF Memory `json:"MemoryRF"` // contains filtered or unexported fields }
This is one of possibly several memory modules, e.g. DIMMS for a particular EpSystem(Redfish "ComputerSystem" or just "System").
func NewEpMemory ¶
func NewEpMemory(s *EpSystem, odataID ResourceID, rawOrdinal int) *EpMemory
Initializes EpMemory struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the Memory module to look at. This should be the only way this struct is created for Redfish Memory objects under a system.
type EpMemoryMods ¶
Set of EpMemory, each representing a Redfish "Memory" object, e.g. DIMM listed under a Redfish ComputerSystem aka System. Unlike Systems/Chassis, there is no top-level listing of all memory under an RF endpoint, i.e. each one is specific to a collection belonging to a single parent System.
type EpNetworkAdapter ¶
type EpNetworkAdapter struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` // Embedded struct - Locational/FRU, state, and status info InventoryData NetworkAdapterURL string `json:"nodeAccelRiserURL"` // Full URL to this RF NetworkAdapter obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // Chassis LastStatus string `json:"LastStatus"` NetworkAdapterRF *NetworkAdapter `json:"NetworkAdapterRF"` // contains filtered or unexported fields }
This is one of possibly several NetworkAdapters for a particular EpChassis (Redfish "Chassis").
func NewEpNetworkAdapter ¶
func NewEpNetworkAdapter(s *EpSystem, poid, pType string, odataID ResourceID, rawOrdinal int) *EpNetworkAdapter
Initializes EpNetworkAdapter struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the NetworkAdapter to look at. This should be the only way this struct is created for NetworkAdapters under a chassis.
type EpNetworkAdapters ¶
type EpNetworkAdapters struct { Num int `json:"num"` OIDs map[string]*EpNetworkAdapter `json:"oids"` }
Set of EpNetworkAdapters, each representing a NetworkAdapter (HSN NIC, etc) listed under a Redfish Chassis.
type EpNodeAccelRiser ¶
type EpNodeAccelRiser struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` // Embedded struct - Locational/FRU, state, and status info InventoryData NodeAccelRiserURL string `json:"nodeAccelRiserURL"` // Full URL to this RF PowerSupply obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // Chassis LastStatus string `json:"LastStatus"` NodeAccelRiserRF *NodeAccelRiser `json:"NodeAccelRiserRF"` // contains filtered or unexported fields }
This is one of possibly several NodeAccelRiser cards for a particular EpChassis (Redfish "Chassis").
func NewEpNodeAccelRiser ¶
func NewEpNodeAccelRiser(assembly *EpAssembly, odataID ResourceID, rawOrdinal int) *EpNodeAccelRiser
Initializes EpNodeAccelRiser struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the NodeAccelRiser to look at. This should be the only way this struct is created for NodeAccelRiser cards under a chassis.
type EpNodeAccelRisers ¶
type EpNodeAccelRisers struct { Num int `json:"num"` OIDs map[string]*EpNodeAccelRiser `json:"oids"` }
Set of EpNodeAccelRiser, each representing a GPUSubsystem baseboard "NodeAccelRiser" listed under a Redfish Chassis.
type EpOutlet ¶
type EpOutlet struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription // Embedded struct - PDU specific info ComponentOutletInfo // Embedded struct - Locational/FRU, state, and status info InventoryData BaseOdataID string `json:"BaseOdataID"` OutletURL string `json:"outletURL"` // Full URL to this Chassis LastStatus string `json:"lastStatus"` OutletRF Outlet `json:"outletRF"` // contains filtered or unexported fields }
This represents an outlet under a PDU parent. It is the individual outlets that will be interacted with (e.g. turned on or off) in most cases.
func NewEpOutlet ¶
func NewEpOutlet(pdu *EpPDU, odataID ResourceID, rawOrdinal int) *EpOutlet
Initializes EpSystem struct with minimal information needed to discover it, i.e. endpoint info and the OdataID of the system to look at. This should be the only way this struct is created.
type EpOutlets ¶
Set of EpOutlet, representing a individual outlets under a Redfish "PowerDistribution" object, e.g. RackPDU.
type EpPDU ¶
type EpPDU struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription // Embedded struct - PDU specific info ComponentPDUInfo // Embedded struct - Locational/FRU, state, and status info InventoryData BaseOdataID string `json:"BaseOdataID"` PDUURL string `json:"pduURL"` // Full URL to me LastStatus string `json:"lastStatus"` PowerDistributionRF PowerDistribution `json:"powerDistributionRF"` // Child/linked components Outlets EpOutlets `json:"outlets"` // contains filtered or unexported fields }
This represents a PDU. Most of the behavior is defined on the child outlets that we will discover as children, (e.g. like processors under Systems), a relationship that will be hold in the detailed hardware inventory.
type EpPower ¶
type EpPower struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` InventoryData PowerURL string `json:"powerURL"` // Full URL to this RF Power obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // Chassis LastStatus string `json:"LastStatus"` PowerRF Power `json:"PowerRF"` PowerRaw *json.RawMessage // contains filtered or unexported fields }
This is the top-level Power object for a particular Chassis.
func NewEpPower ¶
func NewEpPower(chassis *EpChassis, odataID ResourceID) *EpPower
Initializes EpPower struct with minimal information needed to pass along to its children.
type EpPowerSupplies ¶
type EpPowerSupplies struct { Num int `json:"num"` OIDs map[string]*EpPowerSupply `json:"oids"` }
Set of EpPowerSupply, each representing a Redfish "PowerSupply" listed under a Redfish Chassis.
type EpPowerSupply ¶
type EpPowerSupply struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` // Embedded struct - Locational/FRU, state, and status info InventoryData PowerSupplyURL string `json:"powerSupplyURL"` // Full URL to this RF PowerSupply obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // Chassis LastStatus string `json:"LastStatus"` PowerSupplyRF *PowerSupply `json:"PowerSupplyRF"` // contains filtered or unexported fields }
This is one of possibly several PowerSupplies for a particular EpChassis (Redfish "Chassis").
func NewEpPowerSupply ¶
func NewEpPowerSupply(power *EpPower, odataID ResourceID, rawOrdinal int) *EpPowerSupply
Initializes EpPowerSupply struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the PowerSupply to look at. This should be the only way this struct is created for PowerSupplies under a chassis.
type EpProcessor ¶
type EpProcessor struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` // Embedded struct - Locational/FRU, state, and status info InventoryData ProcessorURL string `json:"processorURL"` // Full URL to this RF Processor obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // ComputerSystem or Manager LastStatus string `json:"LastStatus"` ProcessorRF Processor `json:"ProcessorRF"` // contains filtered or unexported fields }
This is one of possibly several processors for a a particular EpSystem(Redfish "ComputerSystem" or just "System").
func NewEpProcessor ¶
func NewEpProcessor(s *EpSystem, odataID ResourceID, rawOrdinal int) *EpProcessor
Initializes EpProcesor struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the Processor to look at. This should be the only way this struct is created for processors under a system.
type EpProcessors ¶
type EpProcessors struct { Num int `json:"num"` OIDs map[string]*EpProcessor `json:"oids"` }
Set of EpProcessor, each representing a Redfish "Processor" listed under a Redfish ComputerSystem aka System. Unlike Systems/Chassis, there is no top-level listing of all processors under an RF endpoint, i.e. each one is specific to a collection belonging to a single parent System.
type EpSessionService ¶
type EpSessionService struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ServiceDescription SessionServiceURL string `json:"sessionServiceURL"` // Full URL to this svc RootFQDN string `json:"rootFQDN"` // i.e. for epRF RootHostname string `json:"rootHostname"` RootDomain string `json:"rootDomain"` LastStatus string `json:"lastStatus"` SessionServiceRF SessionService `json:"sessionServiceRF"` // contains filtered or unexported fields }
This is the SessionService for the corresponding RedfishEP
func NewEpSessionService ¶
func NewEpSessionService(epRF *RedfishEP, odataID string) *EpSessionService
Create new struct to discover the SessionService for this RedfishEP
type EpStorage ¶
type EpStorage struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` StorageURL string `json:"storageCollectionURL"` // Full URL to this RF Storage obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // ComputerSystem or Manager LastStatus string `json:"LastStatus"` StorageRF Storage `json:"StorageRF"` StorageRaw *json.RawMessage // contains filtered or unexported fields }
This is the top-level Storage object for a particular ComputerSystem.
func NewEpStorage ¶
func NewEpStorage(sys *EpSystem, odataID ResourceID) *EpStorage
Initializes EpStorage struct with minimal information needed to pass along to its children.
type EpStorageCollection ¶
type EpStorageCollection struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription BaseOdataID string `json:"BaseOdataID"` Ordinal int `json:"Ordinal"` RawOrdinal int `json:"-"` StorageCollectionURL string `json:"storageCollectionURL"` // Full URL to this RF StorageCollection obj ParentOID string `json:"parentOID"` // odata.id for parent ParentType string `json:"parentType"` // ComputerSystem or Manager LastStatus string `json:"LastStatus"` StorageCollectionRF StorageCollection `json:"StorageCollectionRF"` StorageCollectionRaw *json.RawMessage // contains filtered or unexported fields }
This is one of possibly several Storage Collections for a particular ComputerSystem's Storage object.
func NewEpStorageCollection ¶
func NewEpStorageCollection(s *EpStorage, odataID ResourceID, rawOrdinal int) *EpStorageCollection
Initializes EpStorageCollection struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the StorageCollection to look at.
type EpStorageCollections ¶
type EpStorageCollections struct { Num int `json:"num"` OIDs map[string]*EpStorageCollection `json:"oids"` }
Set of EpStorageCollection objects, each representing a Redfish "StorageCollection" listed under a Redfish ComputerSystem's Storage object.
type EpSystem ¶
type EpSystem struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ComponentDescription // Embedded struct ComponentSystemInfo // Embedded struct - Locational/FRU, state, and status info InventoryData SystemURL string `json:"systemURL"` // Full URL to this ComputerSystem BaseOdataID string `json:"BaseOdataID"` PChassisOID string `json:"ParentOID"` // odata.id for parent chassis PChassisType string `json:"PChassisType"` // ChassisType enum from parent ManagerOID string `json:"ManagerOID"` // Most immediate manager if mult. ManagerType string `json:"ManagerType"` // Almost always BMC or equiv. LastStatus string `json:"lastStatus"` // These values are used as keys to locate EpManager and EpChassis // components via the top-level maps for each RF endpoint, via the epRF // endpoint, since these a Chassisre top-level groups just like "systems" are. // // Note that for simple systems, we are likely to only have the // containing (e.g. server) chassis and BMC listed here, which we will // use to populate the PChassisOID and ManagerOID fields above, but we // save the whole list for completeness (as we create a struct for // every chassis listed at the root) as we may need to support more // complicated structures later on. ManagedBy []ResourceID `json:"managedBy"` ChassisForSys []ResourceID `json:"chassisForSys"` SystemRF ComputerSystem `json:"ComputerSystemRF"` // Ethernet Interfaces are children of Managers or Systems, not top // level components like Chassis or Managers. Therefore we put the // local collection here. Chassis or Managers are consolodated at the // EpEndpoint level in maps and we will use the odataID recorded here to // reference these via the epRF pointer. ENetInterfaces EpEthInterfaces `json:"enetInterfaces"` // Assembly and NodeAccelRiser info comes from the Chassis level but we // associate it with nodes (systems) so we record it here. Assembly *EpAssembly `json:"Assembly"` NodeAccelRisers EpNodeAccelRisers `json:"NodeAccelRisers"` // HpeDevice info comes from the Chassis level HPE OEM Links but we // associate it with nodes (systems) so we record it here. We discover // GPUs on HPE hardware as an HpeDevice. HpeDevices EpHpeDevices `json:"HpeDevices"` // NetworkAdapter (HSN NIC) info comes from the Chassis level but we // associate it with nodes (systems) so we record it here. NetworkAdapters EpNetworkAdapters `json:"NetworkAdapters"` // Power info comes from the chassis level but we associate it with // nodes (systems) so we record it here. PowerInfo PowerInfo `json:"powerInfo"` // Processors and Memory are similar to EthernetInterfaces, children // only of a particular ComputerSystem Processors EpProcessors `json:"processors"` MemoryMods EpMemoryMods `json:"memoryMods"` StorageGroups EpStorageCollections `json:"storageGroups"` Drives EpDrives `json:"drives"` // contains filtered or unexported fields }
These are the discovered attributes for a particular entry in the Systems URL for a given RF endpoint. They will not be usable by themselves unless the hostname matching the host IP is available via Redfish. In the future, there will be a way to map "canonical" hostnames to each system under an endpoint via a file, and/or generate them programatically according to some method.
func NewEpSystem ¶
func NewEpSystem(epRF *RedfishEP, odataID ResourceID, rawOrdinal int) *EpSystem
Initializes EpSystem struct with minimal information needed to discover it, i.e. endpoint info and the odataID of the system to look at. This should be the only way this struct is created.
type EpSystems ¶
Set of EpSystem, representing a Redfish "ComputerSystem" listed in some RF endpoint's "Systems" collection.
type EpTaskService ¶
type EpTaskService struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ServiceDescription TaskServiceURL string `json:"taskServiceURL"` // Full URL to this svc RootFQDN string `json:"rootFQDN"` // i.e. for epRF RootHostname string `json:"rootHostname"` RootDomain string `json:"rootDomain"` LastStatus string `json:"lastStatus"` TaskServiceRF TaskService `json:"taskServiceRF"` // contains filtered or unexported fields }
This is the TaskService for the corresponding RedfishEP
func NewEpTaskService ¶
func NewEpTaskService(epRF *RedfishEP, odataID string) *EpTaskService
Create new struct to discover the TaskService for this RedfishEP
type EpUpdateService ¶
type EpUpdateService struct { // Embedded struct: id, type, odataID and associated RfEndpointID. ServiceDescription UpdateServiceURL string `json:"updateServiceURL"` // Full URL to this svc RootFQDN string `json:"rootFQDN"` // i.e. for epRF RootHostname string `json:"rootHostname"` RootDomain string `json:"rootDomain"` LastStatus string `json:"lastStatus"` UpdateServiceRF UpdateService `json:"updateServiceRF"` // contains filtered or unexported fields }
This is the UpdateService for the corresponding RedfishEP
func NewEpUpdateService ¶
func NewEpUpdateService(epRF *RedfishEP, odataID string) *EpUpdateService
Create new struct to discover the UpdateService for this RedfishEP
type EthernetInterface ¶
type EthernetInterface struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` AutoNeg *bool `json:"AutoNeg,omitempty"` Description string `json:"Description"` FQDN string `json:"FQDN"` FullDuplex *bool `json:"FullDuplex,omitempty"` Hostname string `json:"HostName"` Id string `json:"Id"` IPv4Addresses []IPv4Address `json:"IPv4Addresses"` IPv6Addresses []IPv6Address `json:"IPv6Addresses"` IPv6StaticAddresses []IPv6StaticAddress `json:"IPv6StaticAddresses"` IPv6DefaultGateway string `json:"IPv6DefaultGateway"` InterfaceEnabled *bool `json:"InterfaceEnabled,omitempty"` MACAddress string `json:"MACAddress"` PermanentMACAddress string `json:"PermanentMACAddress"` MTUSize json.Number `json:"MTUSize"` MaxIPv6StaticAddresses json.Number `json:"MaxIPv6StaticAddresses"` Name string `json:"Name"` NameServers []string `json:"NameServers"` SpeedMbps json.Number `json:"SpeedMbps"` Status StatusRF `json:"Status"` UefiDevicePath string `json:"UefiDevicePath"` VLAN VLAN `json:"VLAN"` }
JSON decoded struct returned from Redfish of type "EthernetInterface" Example:
/redfish/v1/Systems/System.Embedded.1/EthernetInterfaces/NIC.Integrated.1-3-1
type EthernetInterfaceCollection ¶
type EthernetInterfaceCollection GenericCollection
JSON decoded collection struct of Redfish type "EthernetInterfaceCollection" Examples: /redfish/v1/Systems/<system_id>/EthernetInterfaces
/redfish/v1/Managers/<manager_id>/EthernetInterfaces
type EthernetNICInfo ¶
type EthernetNICInfo struct { RedfishId string `json:"RedfishId"` Oid string `json:"@odata.id"` Description string `json:"Description,omitempty"` FQDN string `json:"FQDN,omitempty"` Hostname string `json:"Hostname,omitempty"` InterfaceEnabled *bool `json:"InterfaceEnabled,omitempty"` MACAddress string `json:"MACAddress"` PermanentMACAddress string `json:"PermanentMACAddress,omitempty"` }
type Event ¶
type Event struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Context string `json:"Context"` // Later versions Description string `json:"Description"` Events []EventRecord `json:"Events"` EventsOCount int `json:"Events@odata.count"` }
Redfish event. Can contain multiple EventRecord structs in Events array.
func EventDecode ¶
Decode Event and return newly allocated pointer, or else nil/error Error contains loggable details.
type EventDestination ¶
type EventDestination struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Context string `json:"Context"` Destination string `json:"Destination"` EventTypes []string `json:"EventTypes"` Protocol string `json:"Protocol"` }
Redfish object representing a current event subscription being carried out by a Redfish manager/endpoint.
type EventDestinationCollection ¶
type EventDestinationCollection GenericCollection
JSON decoded event subscription struct linked from Redfish "EventService" Example: /redfish/v1/EventService/Subscriptions
type EventRecord ¶
type EventRecord struct { EventType string `json:"EventType"` EventId string `json:"EventId"` EventTimestamp string `json:"EventTimestamp"` Severity string `json:"Severity"` Message string `json:"Message"` MessageId string `json:"MessageId"` MessageArgs []string `json:"MessageArgs"` Context string `json:"Context"` // Older versions OriginOfCondition ResourceID `json:"OriginOfCondition"` }
An individual event record. Multiple EventRecords can be contained in the Event object that is actually POSTed to the subcriber.
Note that "Message" is just a simple string and is optional. Instead, it may be necessary to use "MessageId" to look up a "Message" object in the corresponding Message Registry. In any case, there may be greater detail in the Message entry as it is more than just a simple string, e.g. it will place the MessageArgs in the context of the particular message. The MessageId format is registry.version.message. See "Message" below for details.
type EventService ¶
type EventService struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Status StatusRF `json:"Status"` ServiceEnabled *bool `json:"ServiceEnabled,omitempty"` DeliveryRetryAttempts json.Number `json:"DeliveryRetryAttempts"` DeliveryRetryIntervalInSeconds json.Number `json:"DeliveryRetryIntervalInSeconds"` EventTypesForSubscription []string `json:"EventTypesForSubscription"` EventTypesForSubscriptionOCount json.Number `json:"EventTypesForSubscription@odata.count"` Subscriptions ResourceID `json:"Subscriptions"` Actions EventServiceActions `json:"Actions"` }
Redfish event service. This is the top-level object linked via the service root. It gives information of the types of subscriptions available and the URIs to create them. It also links to the current set of subscriptions, each primarily defined by the type(s) of event/alert of interest and the URL to POST them to when they occur.
type EventServiceActions ¶
type EventServiceActions struct {
SubmitTestEvent ActionTestEvent `json:"#EventService.SubmitTestEvent"`
}
EventService - Actions defined by Redfish for this type
type GBTProcessorOem ¶
type GBTProcessorOem struct {
ProcessorSerialNumber string `json:"Processor Serial Number,omitempty"`
}
type GenericCollection ¶
type GenericCollection struct { OContext string `json:"@odata.context"` OCount int `json:"@odata.count"` // Oldest schemas use Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Description string `json:"Description"` Members []ResourceID `json:"Members"` Outlets []ResourceID `json:"Outlets"` // For HPE PDU Outlets MembersOCount int `json:"Members@odata.count"` // Most schemas Name string `json:"Name"` }
JSON decoded struct returned from Redfish for a particular set of ids. Many collection resources are essentially identical in terms of their fields, so we define it generically here.
type HPEAccPowerService ¶
type HPEAccPowerService struct { Links struct { PowerLimit ResourceID `json:"PowerLimit"` } `json:"Links"` PowerRegulationEnabled bool `json:"PowerRegulationEnabled"` }
Redfish when following the HPE AccPowerService URI
type HPEPowerLimit ¶
type HPEPowerLimit struct { Actions struct { ConfigurePowerLimit struct { Target string `json:"target"` } `json:"#HpeServerAccPowerLimit.ConfigurePowerLimit"` } `json:"Actions"` PowerLimitRanges []struct { MaximumPowerLimit int `json:"MaximumPowerLimit"` MinimumPowerLimit int `json:"MinimumPowerLimit"` } `json:"PowerLimitRanges"` Name string `json:"Name"` }
Redfish when following the HPE PowerLimit URI
type HpeDevice ¶
type HpeDevice struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` HpeDeviceLocationInfoRF HpeDeviceFRUInfoRF Status StatusRF `json:"Status"` }
Redfish pass-through from Redfish HPE OEM Device This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields consitiute the type specific fields in the HWInventory objects that are returned in response to queries.
type HpeDeviceCollection ¶
type HpeDeviceCollection GenericCollection
type HpeDeviceFRUInfoRF ¶
type HpeDeviceFRUInfoRF struct { // Redfish pass-through from rf.HpeDevice Manufacturer string `json:"Manufacturer"` Model string `json:"Model"` SerialNumber string `json:"SerialNumber"` PartNumber string `json:"PartNumber"` DeviceType string `json:"DeviceType"` ProductPartNumber string `json:"ProductPartNumber"` ProductVersion string `json:"ProductVersion"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system.
type HpeDeviceLocationInfoRF ¶
type HpeDeviceLocationInfoRF struct { // Redfish pass-through from rf.Processor Id string `json:"Id"` Name string `json:"Name"` Location string `json:"Location"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU
type HpeOemChassisLinks ¶
type HpeOemChassisLinks struct {
Devices ResourceID `json:"Devices"`
}
type HttpPushUriApplyTime ¶
type HttpPushUriApplyTime struct { ApplyTime string `json:"ApplyTime,omitempty"` MaintenanceWindowDurationInSeconds json.Number `json:"MaintenanceWindowDurationInSeconds,omitempty"` MaintenanceWindowStartTime string `json:"MaintenanceWindowStartTime,omitempty"` }
UpdateService - HTTP push URI apply time payload.
type HttpPushUriOptions ¶
type HttpPushUriOptions struct {
HttpPushUriApplyTime *HttpPushUriApplyTime `json:"HttpPushUriApplyTime,omitempty"`
}
UpdateService - HTTP push URI options payload.
type IPv4Address ¶
type IPv4Address struct { Address string `json:"Address"` AddressOrigin string `json:"AddressOrigin"` Gateway string `json:"Gateway"` SubnetMask string `json:"SubnetMask"` }
An IPv4 address, e.g. as found in EthernetInterface
type IPv6Address ¶
type IPv6Address struct { Address string `json:"Address"` AddressOrigin string `json:"AddressOrigin"` AddressState string `json:"AddressState"` PrefixLength json.Number `json:"PrefixLength"` }
An IPv6 address, e.g. as found in EthernetInterface
type IPv6StaticAddress ¶
type IPv6StaticAddress struct { Address string `json:"Address"` PrefixLength json.Number `json:"PrefixLength"` }
A static IPv4 address, e.g. as found in EthernetInterface
type Identifier ¶
type Identifier struct { DurableName string `json:"DurableName"` DurableNameFormat string `json:"DurableNameFormat"` // Enum }
Identifier
Resource type. Appears under various schemas
type InsydeOemNcsiCollection ¶ added in v2.11.6
type InsydeOemNcsiCollection GenericCollection
type InsydeOemNcsiMember ¶ added in v2.11.6
type InsydeOemNcsiMember struct { DeviceType string `json: DeviceType` Id string `json: Id` Package []ResourceID `json:"Package"` VersionId InsydeOemNcsiVersionId `json:"VersionID"` }
type InsydeOemNcsiVersionId ¶ added in v2.11.6
type InsydeOemPackage ¶ added in v2.11.6
type InsydeOemPackage struct { Id string `json: Id` PackageInfo []InsydeOemPackageInfo `json:"PackageInfo"` }
type InsydeOemPackageInfo ¶ added in v2.11.6
type InventoryData ¶
type InventoryData struct { Ordinal int `json:"Ordinal"` RawOrdinal int `json:"-"` Status string `json:"Status"` State string `json:"State"` Flag string `json:"Flag"` Arch string `json:"Arch"` NetType string `json:"NetType"` DefaultRole string `json:"DefaultRole"` DefaultSubRole string `json:"DefaultSubRole"` DefaultClass string `json:"DefaultClass"` FRUID string `json:"FRUID"` Subtype string `json:"Subtype"` // HMS Subtype, NYI }
type Location ¶
type Location struct { ContactInfo *ContactInfo `json:"ContactInfo,omitempty"` Latitude json.Number `json:"Latitude,omitempty"` Longitude json.Number `json:"Longitude,omitempty"` PartLocation *PartLocation `json:"PartLocation,omitempty"` Placement *Placement `json:"Placement,omitempty"` PostalAddress *PostalAddress `json:"PostalAddress,omitempty"` }
Location
Resource type. Appears under Chassis, PowerDistribution, etc.
type Manager ¶
type Manager struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Actions *ManagerActions `json:"Actions,omitempty"` // Embedded structs. ManagerLocationInfoRF ManagerFRUInfoRF PowerState string `json:"PowerState"` ServiceEntryPointUUID string `json:"ServiceEntryPointUUID"` UUID string `json:"UUID"` Status StatusRF `json:"Status"` EthernetInterfaces ResourceID `json:"EthernetInterfaces"` NetworkProtocol ResourceID `json:"NetworkProtocol"` LogServices ResourceID `json:"LogServices"` SerialInterfaces ResourceID `json:"SerialInterfaces"` VirtualMedia ResourceID `json:"VirtualMedia"` Links ManagerLinks `json:"Links"` }
JSON decoded struct returned from an entry in the BMC "Managers" collection
Example: /redfish/v1/Managers/iDRAC.Embedded.1
type ManagerAccount ¶
type ManagerAccount struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` Enabled *bool `json:"Enabled,omitempty"` UserName string `json:"UserName"` Password string `json:"Password"` RoleId string `json:"RoleId"` Locked *bool `json:"Locked,omitempty"` Links ManagerAccountLinks `json:"Links"` }
An account on a Redfish endpoint. Needs to link to a valid Role, e.g. administrator, read-only, etc. Note password is always blank on GET, this is only used when creating or updating an account.
type ManagerAccountCollection ¶
type ManagerAccountCollection GenericCollection
JSON decoded Account collection struct linked from Redfish "AccountService" Example: /redfish/v1/AccountService/Accounts
type ManagerAccountLinks ¶
type ManagerAccountLinks struct {
Role ResourceID `json:"Role"`
}
type ManagerActions ¶
type ManagerActions struct { ManagerReset ActionReset `json:"#Manager.Reset"` OEM *ManagerActionsOEM `json:"Oem,omitempty"` }
Redfish Manager sub-struct - Actions
type ManagerActionsOEM ¶
type ManagerActionsOEM struct { ManagerFactoryReset *ActionFactoryReset `json:"#Manager.FactoryReset,omitempty"` CrayProcessSchedule *ActionNamed `json:"#CrayProcess.Schedule,omitempty"` }
Redfish Manager Actions - OEM sub-struct
type ManagerCollection ¶
type ManagerCollection GenericCollection
JSON decoded collection struct returned from Redfish "Manager" Example: /redfish/v1/Managers
type ManagerFRUInfoRF ¶
type ManagerLinks ¶
type ManagerLinks struct { ManagerForChassis []ResourceID `json:"ManagerForChassis"` ManagerInChassis ResourceID `json:"ManagerInChassis"` ManagerForServers []ResourceID `json:"ManagerForServers"` }
type ManagerLocationInfoRF ¶
type Memory ¶
type Memory struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` MemoryLocationInfoRF MemoryFRUInfoRF Status StatusRF `json:"Status"` }
Redfish pass-through from rf.Memory This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields consitiute the type specific fields in the HWInventory objects that are returned in response to queries.
type MemoryCollection ¶
type MemoryCollection GenericCollection
JSON decoded collection struct returned from Redfish "Memory" Example: /redfish/v1/Systems/<system_id>/Memory
type MemoryFRUInfoRF ¶
type MemoryFRUInfoRF struct { // Redfish pass-through from rf.Memory BaseModuleType string `json:"BaseModuleType,omitempty"` BusWidthBits json.Number `json:"BusWidthBits,omitempty"` CapacityMiB json.Number `json:"CapacityMiB"` DataWidthBits json.Number `json:"DataWidthBits,omitempty"` ErrorCorrection string `json:"ErrorCorrection,omitempty"` Manufacturer string `json:"Manufacturer,omitempty"` MemoryType string `json:"MemoryType,omitempty"` MemoryDeviceType string `json:"MemoryDeviceType,omitempty"` OperatingSpeedMhz json.Number `json:"OperatingSpeedMhz"` PartNumber string `json:"PartNumber,omitempty"` RankCount json.Number `json:"RankCount,omitempty"` SerialNumber string `json:"SerialNumber"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system. TODO: How to version these (as HMS structures)
type MemoryLocationInfoRF ¶
type MemoryLocationInfoRF struct { // Redfish pass-through from rf.Memory Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` MemoryLocation MemoryLocationRF `json:"MemoryLocation"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU TODO: How to version these (as HMS structures)
type MemoryLocationRF ¶
type Message ¶
type Message struct { MessageId string `json:"MessageId"` Message string `json:"Message"` RelatedProperties []string `json:"RelatedProperties"` MessageArgs []string `json:"MessageArgs"` Severity string `json:"Severity"` Resolution string `json:"Resolution"` }
A Redfish "Message", given in tasks and message registries. Not the same as a LogEntry or EventRecord. Rather, EventRecords will contain a MessageId to look up a Message in the given registry of the given version for detailed information about what occurred, i.e. without actually packaging all of this info in each event.
There is a "Registries" link at the service root that has a link to message registries that may be specific to the implementation.
e.g. /redfish/v1/Registries -> /redfish/v1/Registries/Messages/En
"Standard" registries are available at:
http://redfish.dmtf.org/schemas/registries
For example: http://redfish.dmtf.org/schemas/registries/v1/Base.1.1.0.json
The MessageId format is registry.version.message.
e.g. Base.1.0.0.PropertyUnknown (Standard Redfish Base schema) iDRAC.1.4.0.AMP0300 (via /redfish/v1/Registries/Messages/En)
type NAActionResetToDefault ¶
type NAActionResetToDefault struct { Target string `json:"target"` Title string `json:"title,omitempty"` }
Redfish NetworkAdapter sub-struct - ResetToDefault
type NAActions ¶
type NAActions struct {
NetworkAdapterResetToDefault NAActionResetToDefault `json:"#NetworkAdapter.ResetSettingsToDefault"`
}
Redfish NetworkAdapter sub-struct - Actions
type NAController ¶
type NAController struct { ControllerCapabilities NAControllerCapabilities `json:"ControllerCapabilities"` FirmwarePackageVersion string `json:"FirmwarePackageVersion,omitempty"` Links NAControllerLinks `json:"Links"` }
Redfish NetworkAdapter sub-struct - Controller
type NAControllerCapabilities ¶
type NAControllerCapabilities struct { DataCenterBridging NADataCenterBridging `json:"DataCenterBridging"` NPIV NANPIV `json:"NPIV"` NetworkDeviceFunctionCount int `json:"NetworkDeviceFunctionCount,omitempty"` NetworkPortCount int `json:"NetworkPortCount,omitempty"` VirtualizationOffload NAVirtualizationOffload `json:"VirtualizationOffload"` }
Redfish NetworkAdapter sub-struct - ControllerCapabilities
type NAControllerLinks ¶
type NAControllerLinks struct { NetworkDeviceFunctions []ResourceID `json:"NetworkDeviceFunctions"` NetworkDeviceFunctionCount int `json:"NetworkDeviceFunctions@odata.count,omitempty"` NetworkPorts []ResourceID `json:"NetworkPorts"` NetworkPortCount int `json:"NetworkPorts@odata.count,omitempty"` PCIeDevices []ResourceID `json:"PCIeDevices"` PCIeDeviceCount int `json:"PCIeDevices@odata.count,omitempty"` }
Redfish NetworkAdapter sub-struct - ControllerLinks
type NADataCenterBridging ¶
type NADataCenterBridging struct {
Capable bool `json:"Capable,omitempty"`
}
Redfish NetworkAdapter sub-struct - DataCenterBridging
type NAFRUInfoRF ¶
type NAFRUInfoRF struct { Manufacturer string `json:"Manufacturer"` Model string `json:"Model"` PartNumber string `json:"PartNumber"` SKU string `json:"SKU,omitempty"` SerialNumber string `json:"SerialNumber"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system.
type NALocationInfoRF ¶
type NALocationInfoRF struct { Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU
type NANPIV ¶
type NANPIV struct { MaxDeviceLogins int `json:"MaxDeviceLogins,omitempty"` MaxPortLogins int `json:"MaxPortLogins,omitempty"` }
Redfish NetworkAdapter sub-struct - NPIV
type NASRIOV ¶
type NASRIOV struct {
SRIOVVEPACapable bool `json:"SRIOVVEPACapable,omitempty"`
}
Redfish NetworkAdapter sub-struct - SRIOV
type NAVirtualFunction ¶
type NAVirtualFunction struct { DeviceMaxCount int `json:"DeviceMaxCount,omitempty"` MinAssignmentGroupSize int `json:"MinAssignmentGroupSize,omitempty"` NetworkPortMaxCount int `json:"NetworkPortMaxCount,omitempty"` }
Redfish NetworkAdapter sub-struct - VirtualFunction
type NAVirtualizationOffload ¶
type NAVirtualizationOffload struct { SRIOV NASRIOV `json:"SRIOV"` VirtualFunction NAVirtualFunction `json:"VirtualFunction"` }
Redfish NetworkAdapter sub-struct - VirtualizationOffload
type NetworkAdapter ¶
type NetworkAdapter struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` NALocationInfoRF NAFRUInfoRF Actions *NAActions `json:"Actions,omitempty"` Controllers []NAController `json:"Controllers,omitempty"` NetworkDeviceFunctions ResourceID `json:"NetworkDeviceFunctions"` NetworkPorts ResourceID `json:"NetworkPorts"` Status *StatusRF `json:"Status,omitempty"` }
Redfish pass-through from Redfish "NetworkAdapter" This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields constitute the type specific fields in the HWInventory objects that are returned in response to queries.
type NetworkAdapterCollection ¶
type NetworkAdapterCollection GenericCollection
JSON decoded collection struct returned from Redfish "NetworkAdapter" Example: /redfish/v1/Chassis/<chassis_id>/NetworkAdapters
type NodeAccelRiser ¶
type NodeAccelRiser struct { Oid string `json:"@odata.id"` // Embedded structs. NodeAccelRiserLocationInfoRF NodeAccelRiserFRUInfoRF Status StatusRF `json:"Status"` }
Redfish pass-through from Redfish "Assembly" This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields constitute the type specific fields in the HWInventory objects that are returned in response to queries.
type NodeAccelRiserFRUInfoRF ¶
type NodeAccelRiserFRUInfoRF struct { //Manufacturer Info PhysicalContext string `json:"PhysicalContext"` Producer string `json:"Producer"` SerialNumber string `json:"SerialNumber"` PartNumber string `json:"PartNumber"` Model string `json:"Model"` ProductionDate string `json:"ProductionDate"` Version string `json:"Version"` EngineeringChangeLevel string `json:"EngineeringChangeLevel"` OEM *NodeAccelRiserOEM `json:"Oem,omitempty"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system.
type NodeAccelRiserLocationInfoRF ¶
type NodeAccelRiserLocationInfoRF struct { Name string `json:"Name"` Description string `json:"Description"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU TODO: How to version these (as HMS structures).
type NodeAccelRiserOEM ¶
type NodeAccelRiserOEM struct {
PCBSerialNumber string `json:"PCBSerialNumber"`
}
type OEMPowerInfo ¶
type OEMPowerInfo struct {
HPE *OEMPowerInfoHPE `json:"Hpe,omitempty"`
}
type OEMPowerInfoHPE ¶
type OEMPowerInfoHPE struct { Links struct { AccPowerService ResourceID `json:"AccPowerService"` } `json:"Links"` }
type Outlet ¶
type Outlet struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` // HwInv instance properties - Embedded struct OutletLocationInfo // HwInv durable FRU properties - Embedded struct OutletFRUInfo // Actions Actions *OutletActions `json:"Actions,omitempty"` // Current State (all enums) BreakerState string `json:"BreakerState"` PowerState string `json:"PowerState"` Status StatusRF `json:"Status"` IndicatorLED string `json:"IndicatorLED"` // Sensors CurrentSensor *SensorExcerpt `json:"CurrentSensor,omitempty"` EnergySensor *SensorExcerpt `json:"EnergySensor,omitempty"` FrequencySensor *SensorExcerpt `json:"FrequencySensor,omitempty"` PowerSensor *SensorPowerExcerpt `json:"PowerSensor,omitempty"` PolyPhaseCurrentSensors *Currents `json:"PolyPhaseCurrentSensors,omitempty"` PolyPhaseEnergySensors *EnergyReadings `json:"PolyPhaseEnergySensors,omitempty"` PolyPhasePowerSensors *PowerReadings `json:"PolyPhasePowerSensors,omitempty"` PolyPhaseVoltageSensors *Voltages `json:"PolyPhaseVoltageSensors,omitempty"` TemperatureSensor *SensorExcerpt `json:"TemperatureSensor,omitempty"` VoltageSensor *SensorExcerpt `json:"VoltageSensor,omitempty"` // Configuration PowerCycleDelaySeconds json.Number `json:"PowerCycleDelaySeconds,omitempty"` PowerOnDelaySeconds json.Number `json:"PowerOnDelaySeconds,omitempty"` PowerRestoreDelaySeconds json.Number `json:"PowerRestoreDelaySeconds,omitempty"` PowerRestorePolicy string `json:"PowerRestorePolicy,omitempty"` Oem *json.RawMessage `json:"Oem,omitempty"` // Links - if useful to continue inventory discovery Links OutletLinks `json:"Links"` }
Redfish PDU Outlet
This represents an individual outlet on a PDU
Example: /redfish/v1/PowerEquipment/RackPDUs/1/Outlets/A1
type OutletActions ¶
type OutletActions struct { PowerControl *ActionPowerControl `json:"#Outlet.PowerControl,omitempty"` ResetBreaker *ActionResetBreaker `json:"#Outlet.ResetBreaker,omitempty"` ResetStatistics *ActionResetStatistics `json:"#Outlet.ResetStatistics,omitempty"` OEM *json.RawMessage `json:"Oem,omitempty"` }
Redfish Outlet Actions sub-struct
type OutletCollection ¶
type OutletCollection GenericCollection
Collection of Outlets, i.e. linked to a PDU
type OutletFRUInfo ¶
type OutletFRUInfo struct { NominalVoltage string `json:"NominalVoltage,omitempty"` OutletType string `json:"OutletType"` // Enum EnergySensor *SensorExcerpt `json:"EnergySensor,omitempty"` FrequencySensor *SensorExcerpt `json:"FrequencySensor,omitempty"` PhaseWiringType string `json:"PhaseWiringType,omitempty"` // Enum PowerEnabled *bool `json:"PowerEnabled,omitempty"` // Can be powered? RatedCurrentAmps json.Number `json:"RatedCurrentAmps,omitempty"` VoltageType string `json:"VoltageType,omitempty"` // Enum }
Outlets do not have individual FRUs, PDUs do, but their properties are potentially important. This is FRU-dependent data for HwInventory Note: omits configurable parameters.
type OutletLinks ¶
type OutletLinks struct { OEM *json.RawMessage `json:"Oem,omitempty"` BranchCircuit ResourceID `json:"BranchCircuit"` }
Links for outlet
type OutletLocationInfo ¶
type OutletLocationInfo struct { Id string `json:"Id"` Description string `json:"Description"` Name string `json:"Name"` }
Outlets do not have individual FRUs, PDUs do, but their properties are potentially important. This is location-dependent data for HwInventory
type PartLocation ¶
type PartLocation struct { LocationOrdinalValue json.Number `json:"LocationOrdinalValue,omitempty"` LocationType string `json:"LocationType"` //enum Orientation string `json:"Orientation"` //enum Reference string `json:"Reference"` //enum ServiceLabel string `json:"ServiceLabel"` }
Within Location - PartLocation
type PostalAddress ¶
type PostalAddress struct { Country string `json:"Country"` Territory string `json:"Territory"` City string `json:"City"` Street string `json:"Street"` Name string `json:"Name"` PostalCode string `json:"PostalCode"` Building string `json:"Building"` Floor string `json:"Floor"` Room string `json:"Room"` }
Within Location - PostalAddress
type Power ¶
type Power struct { OContext string `json:"@odata.context"` OCount int `json:"@odata.count"` // Oldest schemas use Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Description string `json:"Description"` Name string `json:"Name"` Id string `json:"Id"` PowerSupplies []*PowerSupply `json:"PowerSupplies"` PowerSuppliesOCount int `json:"PowerSupplies@odata.count"` // Most schemas }
The Power type definition below is based on current L1 Power support, and does not have many of the fields defined in the DMTF Redfish Power 1.6.0 schema, specifically PowerControl. However, HSM does capture PowerControl info for ComputerSystems (Nodes), see ComponentSystemInfo definition.
type PowerControl ¶
type PowerControl struct { ResourceID MemberId string `json:"MemberId,omitempty"` Name string `json:"Name,omitempty"` PowerCapacityWatts int `json:"PowerCapacityWatts,omitempty"` PowerConsumedWatts interface{} `json:"PowerConsumedWatts,omitempty"` // May come in an int or float, but need an int OEM *PwrCtlOEM `json:"OEM,omitempty"` RelatedItem []*ResourceID `json:"RelatedItem,omitempty"` }
type PowerCtlInfo ¶
type PowerCtlInfo struct { PowerURL string `json:"PowerURL,omitempty"` PowerCtl []*PowerControl `json:"PowerControl,omitempty"` }
type PowerDistribution ¶
type PowerDistribution struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` // Embedded structs - see below PowerDistributionLocationInfo PowerDistributionFRUInfo Actions *PowerDistributionActions `json:"Actions,omitempty"` OEM *json.RawMessage `json:"Oem,omitempty"` // These are all links to collections that point to the given type Alarms ResourceID `json:"Alarms"` // Alarms Branches ResourceID `json:"Branches"` // Circuits Feeders ResourceID `json:"Feeders,omitempty"` // Circuit Mains ResourceID `json:"Mains"` // Circuits Outlets ResourceID `json:"Outlets"` // Outlets OutletGroups ResourceID `json:"OutletGroups"` // OutletGroups Subfeeds ResourceID `json:"Subfeeds,omitempty"` // Circuits Metrics ResourceID `json:"Metrics"` // PowerDistributionMetrics Sensors ResourceID `json:"Sensors,omitempty"` // Sensors // Current State (all enums) PowerState string `json:"PowerState"` Status StatusRF `json:"Status"` }
Redfish PowerDistribution
From DMTF: "This resource shall be used to represent a Power Distribution component or unit for a Redfish implementation."
Example: /redfish/v1/PowerEquipment/RackPDUs/1
type PowerDistributionActions ¶
type PowerDistributionActions struct {
OEM *json.RawMessage `json:"Oem,omitempty"`
}
Redfish PowerDistribution Actions sub-struct
type PowerDistributionCollection ¶
type PowerDistributionCollection GenericCollection
Collection of PowerDistribution references (e.g. RackPDU)
type PowerDistributionFRUInfo ¶
type PowerDistributionFRUInfo struct { AssetTag string `json:"AssetTag"` DateOfManufacture string `json:"DateOfManufacture,omitempty"` EquipmentType string `json:"EquipmentType"` FirmwareVersion string `json:"FirmwareVersion"` HardwareRevision string `json:"HardwareRevision"` Manufacturer string `json:"Manufacturer"` Model string `json:"Model"` PartNumber string `json:"PartNumber"` SerialNumber string `json:"SerialNumber"` CircuitSummary CircuitSummary `json:"CircuitSummary"` }
Redfish fields from the PowerDistribution schema that go into HWInventoryByFRU. We capture them as an embedded struct within the full schema during inventory discovery.
type PowerDistributionLocationInfo ¶
type PowerDistributionLocationInfo struct { Id string `json:"Id"` Description string `json:"Description"` Name string `json:"Name"` UUID string `json:"UUID"` Location *Location `json:Location,omitempty"` }
Redfish fields from the PowerDistributionFRUInfo schema that go into HWInventoryByLocation. We capture them as an embedded struct within the full schema during inventory discovery.
type PowerEquipment ¶
type PowerEquipment struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Description string `json:"Description"` Name string `json:"Name"` Status StatusRF `json:"Status"` Actions *PowerEquipmentActions `json:"Actions,omitempty"` OemActions *json.RawMessage `json:"OemActions,omitempty"` // These are all pointers to collections Alarms ResourceID `json:"Alarms"` Generators ResourceID `json:"Generators,omitempty"` FloorPDUs ResourceID `json:"FloorPDUs"` PowerMeters ResourceID `json:"PowerMeters,omitempty"` RackPDUs ResourceID `json:"RackPDUs"` Rectifiers ResourceID `json:"Rectifiers"` Sensors ResourceID `json:"Sensors,omitempty"` Switchgear ResourceID `json:"Switchgear,omitempty"` TransferSwitches ResourceID `json:"TransferSwitches"` UPSs ResourceID `json:"UPSs"` VFDs ResourceID `json:"VFDs,omitempty"` // Array of alarm objects TriggeredAlarms []Alarm `json:"TriggeredAlarms"` // Links to chassis/managers Links PowerEquipmentLinks `json:"Links"` }
Redfish PowerEquipment
From DMTF: "This resource shall be used to represent the set of Power Equipment for a Redfish implementation."
Example: /redfish/v1/PowerEquipment
type PowerEquipmentActions ¶
type PowerEquipmentActions struct {
OEM *json.RawMessage `json:"Oem,omitempty"`
}
Actions for PowerEquipment - OEM only for now
type PowerEquipmentLinks ¶
type PowerEquipmentLinks struct { Chassis []ResourceID `json:"Chassis"` ChassisOCount int `json:"Chassis@odata.count"` ManagedBy []ResourceID `json:"ManagedBy"` ManagedByOCount int `json:"ManagedBy@odata.count"` }
PowerEquipment sub-struct - PowerEquipmentLinks
type PowerInfo ¶
type PowerInfo struct { OEM *OEMPowerInfo `json:"Oem,omitempty"` PowerControl []*PowerControl `json:"PowerControl"` }
Redfish when following the Power URI in a chassis
type PowerReadings ¶
type PowerReadings struct { Line1ToLine2 *SensorPowerExcerpt `json:"Line1ToLine2,omitempty"` Line1ToNeutral *SensorPowerExcerpt `json:"Line1ToNeutral,omitempty"` Line2ToLine3 *SensorPowerExcerpt `json:"Line2ToLine3,omitempty"` Line2ToNeutral *SensorPowerExcerpt `json:"Line2ToNeutral,omitempty"` Line3ToLine1 *SensorPowerExcerpt `json:"Line3ToLine1,omitempty"` Line3ToNeutral *SensorPowerExcerpt `json:"Line3ToNeutral,omitempty"` }
PowerReadings - Used in Outlet and Circuit Note: For all of these, we may only have one of the particular fields in a given resource.
type PowerSupply ¶
type PowerSupply struct { Oid string `json:"@odata.id"` // Embedded structs. PowerSupplyLocationInfoRF PowerSupplyFRUInfoRF Status StatusRF `json:"Status"` }
Redfish pass-through from Redfish "PowerSupply" This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields constitute the type specific fields in the HWInventory objects that are returned in response to queries.
type PowerSupplyFRUInfoRF ¶
type PowerSupplyFRUInfoRF struct { //Manufacture Info Manufacturer string `json:"Manufacturer"` SerialNumber string `json:"SerialNumber"` Model string `json:"Model"` PartNumber string `json:"PartNumber"` PowerCapacityWatts int `json:"PowerCapacityWatts"` PowerInputWatts int `json:"PowerInputWatts"` PowerOutputWatts interface{} `json:"PowerOutputWatts"` PowerSupplyType string `json:"PowerSupplyType"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system. TODO: How to version these (as HMS structures)
type PowerSupplyLocationInfoRF ¶
type PowerSupplyLocationInfoRF struct { Name string `json:"Name"` FirmwareVersion string `json:"FirmwareVersion"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU
type Processor ¶
type Processor struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` // Embedded structs. ProcessorLocationInfoRF ProcessorFRUInfoRF Status StatusRF `json:"Status"` }
Redfish pass-through from Redfish "Processor" This is the set of Redfish fields for this object that HMS understands and/or finds useful. Those assigned to either the *LocationInfo or *FRUInfo subfields consitiute the type specific fields in the HWInventory objects that are returned in response to queries.
type ProcessorCollection ¶
type ProcessorCollection GenericCollection
JSON decoded collection struct returned from Redfish "Processors" Example: /redfish/v1/Systems/<system_id>/Processors
type ProcessorFRUInfoRF ¶
type ProcessorFRUInfoRF struct { // Redfish pass-through from rf.Processor InstructionSet string `json:"InstructionSet"` Manufacturer string `json:"Manufacturer"` MaxSpeedMHz json.Number `json:"MaxSpeedMHz"` Model string `json:"Model"` SerialNumber string `json:"SerialNumber"` PartNumber string `json:"PartNumber"` ProcessorArchitecture string `json:"ProcessorArchitecture"` ProcessorId ProcessorIdRF `json:"ProcessorId"` ProcessorType string `json:"ProcessorType"` TotalCores json.Number `json:"TotalCores"` TotalThreads json.Number `json:"TotalThreads"` Oem *ProcessorOEM `json:"Oem"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then link with it's current location i.e. an x-name. These properties should follow the hardware and allow it to be tracked even when it is removed from the system. TODO: How to version these (as HMS structures)
type ProcessorIdRF ¶
type ProcessorLocationInfoRF ¶
type ProcessorLocationInfoRF struct { // Redfish pass-through from rf.Processor Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` Socket string `json:"Socket"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU TODO: How to version these (as HMS structures).
type ProcessorOEM ¶
type ProcessorOEM struct {
GBTProcessorOemProperty *GBTProcessorOem `json:"GBTProcessorOemProperty,omitempty"`
}
type PwrCtlOEM ¶
type PwrCtlOEM struct { Cray *PwrCtlOEMCray `json:"Cray,omitempty"` HPE *PwrCtlOEMHPE `json:"HPE,omitempty"` }
type PwrCtlOEMCray ¶
type PwrCtlOEMCray struct { PowerIdleWatts int `json:"PowerIdleWatts,omitempty"` PowerLimit *CrayPwrLimit `json:"PowerLimit,omitempty"` PowerResetWatts int `json:"PowerResetWatts,omitempty"` }
type PwrCtlOEMHPE ¶
type PwrCtlOEMHPE struct { PowerLimit CrayPwrLimit `json:"PowerLimit"` PowerRegulationEnabled bool `json:"PowerRegulationEnabled"` Status string `json:"Status"` Target string `json:"Target"` }
type PwrCtlRelatedItem ¶
type PwrCtlRelatedItem struct {
Oid string `json:"@odata.id"`
}
type RAParameter ¶
type RAParameter struct { Name string `json:"Name"` AllowableValues []string `json:"AllowableValues"` DataType string `json:"DataType"` Required bool `json:"Required"` }
RAParameter for the array of Reset actions
type RFControl ¶
type RFControl struct { ControlDelaySeconds int `json:"ControlDelaySeconds"` ControlMode string `json:"ControlMode"` ControlType string `json:"ControlType"` Id string `json:"Id"` Name string `json:"Name"` PhysicalContext string `json:"PhysicalContext"` SetPoint int `json:"SetPoint"` SetPointUnits string `json:"SetPointUnits"` SettingRangeMax int `json:"SettingRangeMax"` SettingRangeMin int `json:"SettingRangeMin"` Status StatusRF `json:"Status"` }
type RawRedfishEP ¶
type RawRedfishEP struct { ID string `json:"ID"` Type string `json:"Type"` Name string `json:"Name"` // user supplied descriptive name Hostname string `json:"Hostname"` Domain string `json:"Domain"` FQDN string `json:"FQDN"` Enabled *bool `json:"Enabled"` UUID string `json:"UUID"` User string `json:"User"` Password string `json:"Password"` UseSSDP *bool `json:"UseSSDP"` MACRequired *bool `json:"MACRequired"` MACAddr string `json:"MACAddr"` IPAddr string `json:"IPAddress"` RediscOnUpdate *bool `json:"RediscoverOnUpdate"` TemplateID string `json:"TemplateID"` }
This is a scan-friendly version of RedfishEndpoint that can be used to create or update an entry (or at least the writable fields set by the user). The redfish endpoint addresses can be given variously as hostname + domain, FQDN, or IP addresses. They are "preferred" in this order. If the hostname and domain are not provided, they will be obtained from the FQDN, however if the hostname is provided, the FQDN must match. If both hostname and domain are provided, they override any FQDN values or an error occurs.
TODO: In the future there will be some process to autmatically add these
for endpoints that advertise their presence, e.g. via SSDP, but we will likely always need the ability to add manual endpoints that do not. Those that do advertise will likely just need a generic identifier, e.g. a domain with no specific host info, or perhaps a subnet.
func (RawRedfishEP) String ¶
func (rrep RawRedfishEP) String() string
String function to redact passwords from any kind of output
type RawRedfishEPs ¶
type RawRedfishEPs struct {
RedfishEndpoints []RawRedfishEP `json:"RedfishEndpoints"`
}
JSON-friendly array of RawRedfishEP entries
type RedfishEP ¶
type RedfishEP struct { // Embedded struct RedfishEPDescription ServiceRootURL string `json:"serviceRootURL"` // URL of root service RedfishType string `json:"redfishType"` // i.e. ServiceRoot IPaddr string `json:"ipaddr"` OdataID string `json:"odataID"` // i.e. /redfish/v1 ServiceRootRF ServiceRoot `json:"serviceRootRF"` NumChassis int `json:"numChassis"` NumManagers int `json:"numManagers"` NumSystems int `json:"numSystems"` NumRackPDUs int `json:"numRackPDUs"` AccountService *EpAccountService `json:"accountService"` SessionService *EpSessionService `json:"sessionService"` EventService *EpEventService `json:"eventService"` TaskService *EpTaskService `json:"taskService"` UpdateService *EpUpdateService `json:"updateService"` Chassis EpChassisSet `json:"chassis"` Managers EpManagers `json:"managers"` Systems EpSystems `json:"systems"` RackPDUs EpPDUs `json:"rackpdus"` // contains filtered or unexported fields }
This is the endpoint structure generated from a base RedfishEPDescription. It is used to facilitate connections to the endpoints and is is used to discover top-level resources (e.g. systems) so that they can be discovered in more details with routines appropriate to each type.
func NewRedfishEp ¶
func NewRedfishEp(rep *RedfishEPDescription) (*RedfishEP, error)
Create RedfishEP struct from a validated RedfishEndpointDescription. The description would be generated from user-supplied RawEndpoints and/or retrieved from the database. The RedfishEP struct is set up based on the description to conduct queries of the remote endpoint and to store the raw data retrieved from it.
func (*RedfishEP) CheckPrePhase1 ¶
Checks any fields that must be set in order to properly query the endpoint and organize and name subcomponents afterwards.
func (*RedfishEP) GETRelative ¶
GET the page at the given rpath relative to the redfish hostname of the given endpoint, e.g. /redfish/v1/Systems/System.Embedded.1. Keeping with Redfish style there should always be a leading slash and the "/redfish/v1" part should presumably always be present in the rpath (as the odata.id always includes this).
There is an optional argument to provide the retry count. If not given, the default is 3. This is the number of times to retry the GET if it fails.
If no error results, result should be the raw body (i.e. Redfish JSON). returned. This is the starting point for decoding the JSON into a particular structure (i.e. given the resource's schema, or into a generic interface{} map.
func (*RedfishEP) GetRootInfo ¶
func (ep *RedfishEP) GetRootInfo()
For a given Redfish endpoint, get top-level information, i.e. how many systems, chassis, managers, etc. and initalize these structures so can be discovered in more detail.
func (*RedfishEP) GetSystems ¶
func (*RedfishEP) VerifySystems ¶
type RedfishEPDescription ¶
type RedfishEPDescription struct { ID string `json:"ID"` Type string `json:"Type"` Name string `json:"Name,omitempty"` // user supplied descriptive name Hostname string `json:"Hostname"` Domain string `json:"Domain"` FQDN string `json:"FQDN"` Enabled bool `json:"Enabled"` UUID string `json:"UUID,omitempty"` User string `json:"User"` Password string `json:"Password"` // Temporary until more secure method UseSSDP bool `json:"UseSSDP,omitempty"` MACRequired bool `json:"MACRequired,omitempty"` MACAddr string `json:"MACAddr,omitempty"` IPAddr string `json:"IPAddress,omitempty"` RediscOnUpdate bool `json:"RediscoverOnUpdate"` TemplateID string `json:"TemplateID,omitempty"` DiscInfo DiscoveryInfo `json:"DiscoveryInfo"` }
func NewRedfishEPDescription ¶
func NewRedfishEPDescription(rep *RawRedfishEP) (*RedfishEPDescription, error)
Create RedfishEPDescription from unvalidated input, e.g. provided by the user. Fields that were omitted can be populated with default values.
func (RedfishEPDescription) String ¶
func (red RedfishEPDescription) String() string
String function to redact passwords from any kind of output
type RedfishEPDescriptions ¶
type RedfishEPDescriptions struct {
RfEPDescriptions []RedfishEPDescription
}
func NewRedfishEPDescriptions ¶
func NewRedfishEPDescriptions(reps *RawRedfishEPs) (*RedfishEPDescriptions, error)
Create RedfishEPDescriptions struct from raw input from decoded RawEndpoints struct, e.g. from a JSON file or POST body.
type RedfishEPs ¶
type RedfishEPs struct { Num int `json:"num"` IDs map[string]*RedfishEP `json:"ids"` // contains filtered or unexported fields }
Set of RedfishEP, struct representing a root-level RF endpoint in system.
func NewRedfishEps ¶
func NewRedfishEps(epds *RedfishEPDescriptions) (*RedfishEPs, error)
Create RedfishEPs structs from a set of validated RedfishEndpointDescriptions.
func (*RedfishEPs) GetAllRootInfo ¶
func (eps *RedfishEPs) GetAllRootInfo()
Loop through all endpoints to get top-level information, i.e. how many systems, etc. and initalize these structures so they can be discovered in more detail.
Note this is done in parallel, each RedfishEP in a separate thread. Each RedfishEP structure should not share any data with the others so little synchronization is needed. We could conceivably speed things up more by parallelizing the individual page gets, but that would have to be done a bit more carefully and for now this should be fast enough.
type RedfishError ¶
type RedfishError struct {
Error RedfishErrorContents `json:"error"`
}
RedfishError - Contains an error payload from a Redfish service. Error - Contains properties used to describe an error from a Redfish Service. Schemas are available at:
https://redfish.dmtf.org/redfish/schema_index
redfish-error: https://redfish.dmtf.org/schemas/redfish-error.v1_0_0.json
type RedfishErrorContents ¶
type RedfishErrorContents struct { Code string `json:"code"` Message string `json:"message"` ExtendedInfo []Message `json:"@Message.ExtendedInfo"` }
RedfishErrorContents - Contains properties used to describe an error from a Redfish Service. Code - A string indicating a specific MessageId from the message registry. Message - A human-readable error message corresponding to the message in the message registry. ExtendedInfo - An array of message objects describing one or more error message(s). Schemas are available at:
https://redfish.dmtf.org/redfish/schema_index
redfish-error: https://redfish.dmtf.org/schemas/redfish-error.v1_0_0.json
type ResetActionInfo ¶
type ResetActionInfo struct { ID string `json:"Id"` RAParameters []RAParameter `json:"Parameters"` Name string `json:"Name"` }
ResetActionInfo contains a list of parameters for a Redfish ResetAction
type ResourceID ¶
type ResourceID struct {
Oid string `json:"@odata.id"`
}
Resource link, often found in collection array or "Links" section.
Example: { "@odata.id": "/redfish/v1/Systems/System.Embedded.1" }
func (*ResourceID) Basename ¶
func (r *ResourceID) Basename() string
Get Redfish ID portion of URI, i.e. the basename of the string
type ResourceIDSlice ¶
type ResourceIDSlice []ResourceID
For sort interface, wraps []ResourceID
func (ResourceIDSlice) Len ¶
func (rs ResourceIDSlice) Len() int
For sort interface, length function
func (ResourceIDSlice) Less ¶
func (rs ResourceIDSlice) Less(i, j int) bool
For sort interface, comparison operation
func (ResourceIDSlice) Swap ¶
func (rs ResourceIDSlice) Swap(i, j int)
For sort interface, swaps at indexes
type Role ¶
type Role struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` IsPredefined *bool `json:"IsPredefined,omitempty"` AssignedPrivileges []string `json:"AssignedPrivileges"` OemPrivileges []string `json:"OemPrivileges"` }
A type of account on a Redfish endpoint. Maybe be "built-in" or some custom type defined by the administrator. Each ManagerAccount is linked to a role.
type RoleCollection ¶
type RoleCollection GenericCollection
JSON decoded Role collection struct linked from Redfish "AccountService" Example: /redfish/v1/AccountService/Roles
type Sensor ¶
type Sensor struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Description string `json:"Description"` Name string `json:"Name"` Location *Location `json:Location,omitempty"` Actions SensorActions `json:"Actions,omitempty"` Accuracy json.Number `json:"Accuracy,omitempty"` AdjustedMaxAllowableOperatingValue json.Number `json:"AdjustedMaxAllowableOperatingValue,omitempty"` AdjustedMinAllowableOperatingValue json.Number `json:"AdjustedMinAllowableOperatingValue,omitempty"` ApparentVA json.Number `json:"ApparentVA,omitempty"` ElectricalContext string `json:"ElectricalContext"` // enum LoadPercent json.Number `json:"LoadPercent,omitempty"` MaxAllowableOperatingValue json.Number `json:"MaxAllowableOperatingValue,omitempty"` MinAllowableOperatingValue json.Number `json:"MinAllowableOperatingValue,omitempty"` OEM *json.RawMessage `json:"Oem,omitempty"` PeakReading json.Number `json:"PeakReading,omitempty"` PeakReadingTime string `json:"PeakReadingtime,omitempty"` PowerFactor json.Number `json:"PowerFactor,omitempty"` PhysicalContext string `json:"PhysicalContext,omitempty"` //enum PhysicalSubContext string `json:"PhysicalSubContext,omitempty"` //enum Precision json.Number `json:"Precision,omitempty"` ReactiveVAR json.Number `json:"ReactiveVAR,omitempty"` Reading json.Number `json:"Reading,omitempty"` ReadingRangeMax json.Number `json:"ReadingRangeMax,omitempty"` ReadingRangeMin json.Number `json:"ReadingRangeMin,omitempty"` ReadingType string `json:"ReadingType,omitempty"` //enum ReadingUnits string `json:"ReadingUnits,omitempty"` Status StatusRF `json:"Status,omitempty"` SensingFrequency json.Number `json:"SensingFrequency,omitempty"` SensorResetTime json.Number `json:"SensorResetTime,omitempty"` Thresholds *Thresholds `json:"Thresholds,omitempty"` VoltageType string `json:"VoltageType,omitempty"` // enum }
Sensor
From the DMTF: "This resource shall be used to represent resources that represent the sensor data."
Example: /redfish/v1/PowerEquipment/RackPDUs/1/Sensors/FrequencyA1
type SensorActions ¶
type SensorActions struct { ResetStatistics ActionResetStatistics `json:"#Sensor.ResetStatistics,omitempty"` OEM *json.RawMessage `json:"Oem,omitempty"` }
Redfish Sensor Actions sub-struct
type SensorExcerpt ¶
type SensorExcerpt struct { DataSourceUri string `json:"DataSourceUri"` Name string `json:"Name"` PeakReading json.Number `json:"PeakReading,omitempty"` PhysicalContext string `json:"PhysicalContext,omitempty"` //enum PhysicalSubContext string `json:"PhysicalSubContext,omitempty"` //enum Reading json.Number `json:"Reading,omitempty"` ReadingUnits string `json:"ReadingUnits,omitempty"` Status StatusRF `json:"Status,omitempty"` }
SensorExcerpt - Substruct of Outlet and other power-related objects This is the more general non-power version of SensorPowerExcerpt
type SensorPowerExcerpt ¶
type SensorPowerExcerpt struct { ApparentVA json.Number `json:"ApparentVA,omitempty"` DataSourceUri string `json:"DataSourceUri"` LoadPercent json.Number `json:"LoadPercent,omitempty"` Name string `json:"Name"` PeakReading json.Number `json:"PeakReading,omitempty"` PowerFactor json.Number `json:"PowerFactor,omitempty"` PhysicalContext string `json:"PhysicalContext,omitempty"` //enum PhysicalSubContext string `json:"PhysicalSubContext,omitempty"` //enum ReactiveVAR json.Number `json:"ReactiveVAR,omitempty"` Reading json.Number `json:"Reading,omitempty"` ReadingUnits string `json:"ReadingUnits,omitempty"` Status StatusRF `json:"Status,omitempty"` }
SensorPowerExcerpt - Substruct of Outlet and other power-related objects From DMTF: "This resource shall be used to represent resources that represent the sensor data."
type SensorsCollection ¶
type SensorsCollection GenericCollection
Collection of Sensors, i.e. linked to a parent component, e.g. PDU
type SerialInterfaceCollection ¶
type SerialInterfaceCollection GenericCollection
JSON decoded collection struct of Redfish type "SerialInterfaceCollection" Example: /redfish/v1/Managers/<manager_id>/SerialInterfaces
type ServiceDescription ¶
type ServiceDescription struct { RfEndpointID string `json:"RedfishEndpointID"` // Key RedfishType string `json:"RedfishType"` // Key RedfishSubtype string `json:"RedfishSubtype,omitempty"` UUID string `json:"UUID"` OdataID string `json:"OdataID"` }
Struct to be embedded in Redfish service objects. These are the key fields in the storage schema.
type ServiceRoot ¶
type ServiceRoot struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Name string `json:"Name"` Description string `json:"Description"` RedfishVersion string `json:"RedfishVersion"` UUID string `json:"UUID"` Systems ResourceID `json:"Systems"` Chassis ResourceID `json:"Chassis"` Managers ResourceID `json:"Managers"` Tasks ResourceID `json:"Tasks"` // Actually points to "TaskService" SessionService ResourceID `json:"SessionService"` AccountService ResourceID `json:"AccountService"` EventService ResourceID `json:"EventService"` UpdateService ResourceID `json:"UpdateService"` Registries ResourceID `json:"Registries"` // PDU stuff PowerEquipment ResourceID `json:"PowerEquipment"` PowerDistribution ResourceID `json:"PowerDistribution"` Links ServiceRootLinks `json:"Links"` }
type ServiceRootLinks ¶
type ServiceRootLinks struct {
Sessions ResourceID `json:"Sessions"`
}
Redfish ServiceRoot - Links section
type Session ¶
type Session struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` UserName string `json:"UserName"` }
A session that has been created via the session service.
type SessionCollection ¶
type SessionCollection GenericCollection
JSON decoded collection struct returned from Redfish "SessionService" There is also a pointer in the system root under "Links" Example: /redfish/v1/SessionService/Sessions
type SessionService ¶
type SessionService struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Status StatusRF `json:"Status"` ServiceEnabled *bool `json:"ServiceEnabled,omitempty"` SessionTimeout json.Number `json:"SessionTimeout"` Sessions ResourceID `json:"Sessions"` }
Redfish session service. This is the top-level object linked via the service root. It provides information about the session service and links to the set of active sessions. Note that there should also be a direct link from the service root as it is the only part of the root that is available without authentication.
type SimpleStorageCollection ¶
type SimpleStorageCollection GenericCollection
JSON decoded collection struct returned from Redfish "SimpleStorage" Example: /redfish/v1/Systems/<system_id>/SimpleStorage
type StatusRF ¶
type StatusRF struct { Health HealthRF `json:"Health"` HealthRollUp HealthRF `json:"HealthRollUp,omitempty"` State StateRF `json:"State,omitempty"` }
Status struct, used in many places.
type Storage ¶
type Storage GenericCollection
JSON decoded collection struct returned from Redfish "Storage" Example: /redfish/v1/Systems/<system_id>/Storage
type StorageCollection ¶
type StorageCollection struct { OContext string `json:"@odata.context"` OCount int `json:"@odata.count"` // Oldest schemas use Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Description string `json:"Description"` Name string `json:"Name"` Drives []ResourceID `json:"Drives"` DrivesOCount int `json:"Drives@odata.count"` // Most schemas }
JSON decoded struct returned from Redfish for a particular set of ids. Storage Collection resources deviate from GenericCollections by by using the Drives array and Drives count fields instead of a Members array and Members count fields. Example: /redfish/v1/Systems/<system_id>/Storage/<storage_collection_id>
type SystemCollection ¶
type SystemCollection GenericCollection
JSON decoded collection struct returned from Redfish "Systems" Example: /redfish/v1/Systems
type SystemFRUInfoRF ¶
type SystemFRUInfoRF struct { // Redfish pass-through from Redfish ComputerSystem AssetTag string `json:"AssetTag"` BiosVersion string `json:"BiosVersion"` Model string `json:"Model"` Manufacturer string `json:"Manufacturer"` PartNumber string `json:"PartNumber"` SerialNumber string `json:"SerialNumber"` SKU string `json:"SKU"` SystemType string `json:"SystemType"` UUID string `json:"UUID"` }
Durable Redfish properties to be stored in hardware inventory as a specific FRU, which is then (typically) associated with a location i.e. an x-name in HMS terms and the ProcessorLocationInfo fields in Redfish terms on the controller. These properties should follow the hardware and allow it to be tracked even when it is removed from the system. TODO: How to version these (as HMS structures).
type SystemLocationInfoRF ¶
type SystemLocationInfoRF struct { // Redfish pass-through from Redfish ComputerSystem Id string `json:"Id"` Name string `json:"Name"` Description string `json:"Description"` Hostname string `json:"HostName"` ProcessorSummary ComputerSystemProcessorSummary `json:"ProcessorSummary"` MemorySummary ComputerSystemMemorySummary `json:"MemorySummary"` }
Location-specific Redfish properties to be stored in hardware inventory These are only relevant to the currently installed location of the FRU TODO: How to version these (as HMS structures).
type Task ¶
type Task struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` TaskState string `json:"TaskState"` StartTime string `json:"StartTime"` EndTime string `json:"EndTime"` TaskStatus string `json:"TaskStatus"` Messages []Message `json:"Messages"` }
A Redfish task, via the Redfish TaskService
type TaskCollection ¶
type TaskCollection GenericCollection
JSON decoded task subscription struct linked from Redfish "TaskService" Example: /redfish/v1/TaskService/Subscriptions
type TaskService ¶
type TaskService struct { OContext string `json:"@odata.context"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Status StatusRF `json:"Status"` ServiceEnabled *bool `json:"ServiceEnabled,omitempty"` DateTime string `json:"DateTime"` CompletedTaskOverWritePolicy string `json:"CompletedTaskOverWritePolicy"` LifeCycleEventOnTaskStateChange *bool `json:"LifeCycleEventOnTaskStateChange"` Tasks ResourceID `json:"Tasks"` }
Redfish task service. This is the top-level object linked via the service root. It provides information about the task service and links to the set of active tasks.
type Threshold ¶
type Threshold struct { Activation string `json:"Activation"` // enum DwellTime string `json:"DwellTime"` Reading json.Number `json:"Reading,omitempty"` }
Sub-struct of Sensor - Threshold
type Thresholds ¶
type Thresholds struct { LowerCaution Threshold `json:LowerCaution"` LowerCritical Threshold `json:LowerCritical"` LowerFatal Threshold `json:LowerFatal"` UpperCaution Threshold `json:UpperCaution"` UpperCritical Threshold `json:UpperCritical"` UpperFatal Threshold `json:UpperFatal"` }
Sub-struct of Sensor - Thresholds
type UpdateService ¶
type UpdateService struct { OContext string `json:"@odata.context"` Oetag string `json:"@odata.etag,omitempty"` Oid string `json:"@odata.id"` Otype string `json:"@odata.type"` Id string `json:"Id"` Name string `json:"Name"` Status *StatusRF `json:"Status,omitempty"` ServiceEnabled *bool `json:"ServiceEnabled,omitempty"` FirmwareInventory *ResourceID `json:"FirmwareInventory,omitempty"` SoftwareInventory *ResourceID `json:"SoftwareInventory,omitempty"` Actions UpdateServiceActions `json:"Actions"` HttpPushUri string `json:"HttpPushUri,omitempty"` HttpPushUriOptions *HttpPushUriOptions `json:"HttpPushUriOptions,omitempty"` HttpPushUriOptionsBusy *bool `json:"HttpPushUriOptionsBusy,omitempty"` HttpPushUriTargets []string `json:"HttpPushUriTargets,omitempty"` HttpPushUriTargetsBusy *bool `json:"HttpPushUriTargetsBusy,omitempty"` }
Redfish update service. This is the top-level object linked via the service root. It gives information of the allowed actions and push URI configuration. It also links to the available inventories.
type UpdateServiceActions ¶
type UpdateServiceActions struct {
SimpleUpdate *ActionSimpleUpdate `json:"#UpdateService.SimpleUpdate,omitempty"`
}
UpdateService - Actions defined by Redfish for this type
type VLAN ¶
type VLAN struct { VLANEnable *bool `json:"VLANEnable,omitempty"` VLANid json.Number `json:"VLANid"` }
A VLAN definition, e.g. as found in EthernetInterface. This will not be used in the case where multiple VLANs exist. An entry in the Links section will list these in the latter case.
type Voltages ¶
type Voltages struct { Line1ToLine2 *SensorExcerpt `json:"Line1ToLine2,omitempty"` Line1ToNeutral *SensorExcerpt `json:"Line1ToNeutral,omitempty"` Line2ToLine3 *SensorExcerpt `json:"Line2ToLine3,omitempty"` Line2ToNeutral *SensorExcerpt `json:"Line2ToNeutral,omitempty"` Line3ToLine1 *SensorExcerpt `json:"Line3ToLine1,omitempty"` Line3ToNeutral *SensorExcerpt `json:"Line3ToNeutral,omitempty"` }
Voltages - Used in Outlet and Circuit
Source Files ¶
- redfish-assembly.go
- redfish-foxconn.go
- redfish-hpe.go
- redfish-network.go
- redfish-power.go
- redfish-storage.go
- redfish-support.go
- redfish.go
- rfclient.go
- rfcomponents-assembly.go
- rfcomponents-hpe.go
- rfcomponents-network.go
- rfcomponents-power.go
- rfcomponents-storage.go
- rfcomponents.go
- rfendpoints.go
- rfservices.go
- util.go