diff --git a/redfish/internal/controller/http/v1/generated/server.gen.go b/redfish/internal/controller/http/v1/generated/server.gen.go index fc7174af0..b670d87fd 100644 --- a/redfish/internal/controller/http/v1/generated/server.gen.go +++ b/redfish/internal/controller/http/v1/generated/server.gen.go @@ -63,6 +63,9 @@ type ServerInterface interface { // (POST /redfish/v1/Systems/{ComputerSystemId}/Actions/ComputerSystem.Reset) PostRedfishV1SystemsComputerSystemIdActionsComputerSystemReset(c *gin.Context, computerSystemId string) + // (POST /redfish/v1/Systems/{ComputerSystemId}/Actions/Oem/IntelComputerSystem.GenerateRedirectionToken) + PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken(c *gin.Context, computerSystemId string) + // (GET /redfish/v1/odata) GetRedfishV1Odata(c *gin.Context) } @@ -346,6 +349,32 @@ func (siw *ServerInterfaceWrapper) PostRedfishV1SystemsComputerSystemIdActionsCo siw.Handler.PostRedfishV1SystemsComputerSystemIdActionsComputerSystemReset(c, computerSystemId) } +// PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken operation middleware +func (siw *ServerInterfaceWrapper) PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken(c *gin.Context) { + + var err error + + // ------------- Path parameter "ComputerSystemId" ------------- + var computerSystemId string + + err = runtime.BindStyledParameterWithOptions("simple", "ComputerSystemId", c.Param("ComputerSystemId"), &computerSystemId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter ComputerSystemId: %w", err), http.StatusBadRequest) + return + } + + c.Set(BasicAuthScopes, []string{}) + + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + if c.IsAborted() { + return + } + } + + siw.Handler.PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken(c, computerSystemId) +} + // GetRedfishV1Odata operation middleware func (siw *ServerInterfaceWrapper) GetRedfishV1Odata(c *gin.Context) { @@ -401,6 +430,7 @@ func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options router.GET(options.BaseURL+"/redfish/v1/Systems/:ComputerSystemId", wrapper.GetRedfishV1SystemsComputerSystemId) router.PATCH(options.BaseURL+"/redfish/v1/Systems/:ComputerSystemId", wrapper.PatchRedfishV1SystemsComputerSystemId) router.POST(options.BaseURL+"/redfish/v1/Systems/:ComputerSystemId/Actions/ComputerSystem.Reset", wrapper.PostRedfishV1SystemsComputerSystemIdActionsComputerSystemReset) + router.POST(options.BaseURL+"/redfish/v1/Systems/:ComputerSystemId/Actions/Oem/IntelComputerSystem.GenerateRedirectionToken", wrapper.PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken) router.GET(options.BaseURL+"/redfish/v1/odata", wrapper.GetRedfishV1Odata) } @@ -411,9 +441,7 @@ type GetRedfishResponseObject interface { VisitGetRedfishResponse(w http.ResponseWriter) error } -type GetRedfish200JSONResponse struct { - V1 *string `json:"v1,omitempty"` -} +type GetRedfish200JSONResponse ServiceRootRedfishVersionDiscovery func (response GetRedfish200JSONResponse) VisitGetRedfishResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") @@ -422,6 +450,18 @@ func (response GetRedfish200JSONResponse) VisitGetRedfishResponse(w http.Respons return json.NewEncoder(w).Encode(response) } +type GetRedfishdefaultJSONResponse struct { + Body RedfishError + StatusCode int +} + +func (response GetRedfishdefaultJSONResponse) VisitGetRedfishResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(response.StatusCode) + + return json.NewEncoder(w).Encode(response.Body) +} + type GetRedfishV1RequestObject struct { } @@ -663,7 +703,7 @@ type PostRedfishV1SessionServiceSessionsMembersResponseObject interface { VisitPostRedfishV1SessionServiceSessionsMembersResponse(w http.ResponseWriter) error } -type PostRedfishV1SessionServiceSessionsMembers201JSONResponse SessionSession +type PostRedfishV1SessionServiceSessionsMembers201JSONResponse SessionCollectionSessionMember func (response PostRedfishV1SessionServiceSessionsMembers201JSONResponse) VisitPostRedfishV1SessionServiceSessionsMembersResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") @@ -883,6 +923,36 @@ func (response PostRedfishV1SystemsComputerSystemIdActionsComputerSystemResetdef return json.NewEncoder(w).Encode(response.Body) } +type PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenRequestObject struct { + ComputerSystemId string `json:"ComputerSystemId"` + Body *PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenJSONRequestBody +} + +type PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenResponseObject interface { + VisitPostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenResponse(w http.ResponseWriter) error +} + +type PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken200JSONResponse GenerateRedirectionTokenResponse + +func (response PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken200JSONResponse) VisitPostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(200) + + return json.NewEncoder(w).Encode(response) +} + +type PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokendefaultJSONResponse struct { + Body RedfishError + StatusCode int +} + +func (response PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokendefaultJSONResponse) VisitPostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenResponse(w http.ResponseWriter) error { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(response.StatusCode) + + return json.NewEncoder(w).Encode(response.Body) +} + type GetRedfishV1OdataRequestObject struct { } @@ -974,6 +1044,9 @@ type StrictServerInterface interface { // (POST /redfish/v1/Systems/{ComputerSystemId}/Actions/ComputerSystem.Reset) PostRedfishV1SystemsComputerSystemIdActionsComputerSystemReset(ctx context.Context, request PostRedfishV1SystemsComputerSystemIdActionsComputerSystemResetRequestObject) (PostRedfishV1SystemsComputerSystemIdActionsComputerSystemResetResponseObject, error) + // (POST /redfish/v1/Systems/{ComputerSystemId}/Actions/Oem/IntelComputerSystem.GenerateRedirectionToken) + PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken(ctx context.Context, request PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenRequestObject) (PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenResponseObject, error) + // (GET /redfish/v1/odata) GetRedfishV1Odata(ctx context.Context, request GetRedfishV1OdataRequestObject) (GetRedfishV1OdataResponseObject, error) } @@ -1423,6 +1496,41 @@ func (sh *strictHandler) PostRedfishV1SystemsComputerSystemIdActionsComputerSyst } } +// PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken operation middleware +func (sh *strictHandler) PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken(ctx *gin.Context, computerSystemId string) { + var request PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenRequestObject + + request.ComputerSystemId = computerSystemId + + var body PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenJSONRequestBody + if err := ctx.ShouldBindJSON(&body); err != nil { + ctx.Status(http.StatusBadRequest) + ctx.Error(err) + return + } + request.Body = &body + + handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { + return sh.ssi.PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken(ctx, request.(PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenRequestObject)) + } + for _, middleware := range sh.middlewares { + handler = middleware(handler, "PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken") + } + + response, err := handler(ctx, request) + + if err != nil { + ctx.Error(err) + ctx.Status(http.StatusInternalServerError) + } else if validResponse, ok := response.(PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenResponseObject); ok { + if err := validResponse.VisitPostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenResponse(ctx.Writer); err != nil { + ctx.Error(err) + } + } else if response != nil { + ctx.Error(fmt.Errorf("unexpected response type: %T", response)) + } +} + // GetRedfishV1Odata operation middleware func (sh *strictHandler) GetRedfishV1Odata(ctx *gin.Context) { var request GetRedfishV1OdataRequestObject diff --git a/redfish/internal/controller/http/v1/generated/spec.gen.go b/redfish/internal/controller/http/v1/generated/spec.gen.go index bf5ed7fd8..0f8eb8d64 100644 --- a/redfish/internal/controller/http/v1/generated/spec.gen.go +++ b/redfish/internal/controller/http/v1/generated/spec.gen.go @@ -18,244 +18,256 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "//9mt6CmY1EBAA==", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/redfish/internal/controller/http/v1/generated/types.gen.go b/redfish/internal/controller/http/v1/generated/types.gen.go index a88a77a53..6dd5202b9 100644 --- a/redfish/internal/controller/http/v1/generated/types.gen.go +++ b/redfish/internal/controller/http/v1/generated/types.gen.go @@ -5,6 +5,7 @@ package generated import ( "encoding/json" + "fmt" "time" "github.com/oapi-codegen/runtime" @@ -71,6 +72,12 @@ const ( UEFI ComputerSystemBootSourceOverrideMode = "UEFI" ) +// Defines values for ComputerSystemGraphicalConnectTypesSupported. +const ( + ComputerSystemGraphicalConnectTypesSupportedKVMIP ComputerSystemGraphicalConnectTypesSupported = "KVMIP" + ComputerSystemGraphicalConnectTypesSupportedOEM ComputerSystemGraphicalConnectTypesSupported = "OEM" +) + // Defines values for ComputerSystemMemoryMirroring. const ( ComputerSystemMemoryMirroringDIMM ComputerSystemMemoryMirroring = "DIMM" @@ -130,11 +137,11 @@ const ( // Defines values for ResourcePowerState. const ( - Off ResourcePowerState = "Off" - On ResourcePowerState = "On" - Paused ResourcePowerState = "Paused" - PoweringOff ResourcePowerState = "PoweringOff" - PoweringOn ResourcePowerState = "PoweringOn" + ResourcePowerStateOff ResourcePowerState = "Off" + ResourcePowerStateOn ResourcePowerState = "On" + ResourcePowerStatePaused ResourcePowerState = "Paused" + ResourcePowerStatePoweringOff ResourcePowerState = "PoweringOff" + ResourcePowerStatePoweringOn ResourcePowerState = "PoweringOn" ) // Defines values for ResourceResetType. @@ -283,6 +290,9 @@ type ComputerSystemCollectionComputerSystemCollection_Description struct { type ComputerSystemActions struct { // HashComputerSystemReset This action resets the system. HashComputerSystemReset *ComputerSystemReset `json:"#ComputerSystem.Reset,omitempty"` + + // Oem The available OEM-specific actions for this resource. + Oem *ComputerSystemOemActions `json:"Oem,omitempty"` } // ComputerSystemAutomaticRetryConfig defines model for ComputerSystem_AutomaticRetryConfig. @@ -436,6 +446,9 @@ type ComputerSystemComputerSystem struct { Boot *ComputerSystemBoot `json:"Boot,omitempty"` Description *ComputerSystemComputerSystem_Description `json:"Description,omitempty"` + // GraphicalConsole The information about a graphical console service for this system. + GraphicalConsole *ComputerSystemHostGraphicalConsole `json:"GraphicalConsole,omitempty"` + // HostName The DNS host name, without any domain information. HostName *string `json:"HostName"` @@ -484,6 +497,33 @@ type ComputerSystemComputerSystem_PowerState struct { union json.RawMessage } +// ComputerSystemGenerateRedirectionToken This action generates a short-lived redirection token. +type ComputerSystemGenerateRedirectionToken struct { + // Target Link to invoke action + Target *string `json:"target,omitempty"` + + // Title Friendly action name + Title *string `json:"title,omitempty"` +} + +// ComputerSystemGraphicalConnectTypesSupported defines model for ComputerSystem_GraphicalConnectTypesSupported. +type ComputerSystemGraphicalConnectTypesSupported string + +// ComputerSystemHostGraphicalConsole The information about a graphical console service for this system. +type ComputerSystemHostGraphicalConsole struct { + // ConnectTypesSupported This property enumerates the graphical console connection types that the implementation allows. + ConnectTypesSupported *[]ComputerSystemGraphicalConnectTypesSupported `json:"ConnectTypesSupported,omitempty"` + + // MaxConcurrentSessions The maximum number of service sessions, regardless of protocol, that this system can support. + MaxConcurrentSessions *int64 `json:"MaxConcurrentSessions,omitempty"` + + // Port The protocol port. + Port *int64 `json:"Port"` + + // ServiceEnabled An indication of whether the service is enabled for this system. + ServiceEnabled *bool `json:"ServiceEnabled,omitempty"` +} + // ComputerSystemMemoryMirroring defines model for ComputerSystem_MemoryMirroring. type ComputerSystemMemoryMirroring string @@ -510,6 +550,13 @@ type ComputerSystemMemorySummary_MemoryMirroring struct { union json.RawMessage } +// ComputerSystemOemActions The available OEM-specific actions for this resource. +type ComputerSystemOemActions struct { + // HashIntelComputerSystemGenerateRedirectionToken This action generates a short-lived redirection token. + HashIntelComputerSystemGenerateRedirectionToken *ComputerSystemGenerateRedirectionToken `json:"#IntelComputerSystem.GenerateRedirectionToken,omitempty"` + AdditionalProperties map[string]interface{} `json:"-"` +} + // ComputerSystemProcessorSummary The central processors of the system in general detail. type ComputerSystemProcessorSummary struct { // CoreCount The number of processor cores in the system. @@ -557,6 +604,18 @@ type ComputerSystemSystemType string // ComputerSystemTrustedModuleRequiredToBoot defines model for ComputerSystem_TrustedModuleRequiredToBoot. type ComputerSystemTrustedModuleRequiredToBoot string +// EmptyActionRequest Empty JSON body for Redfish action invocation. +type EmptyActionRequest = map[string]interface{} + +// GenerateRedirectionTokenResponse The response payload containing a short-lived redirection token. +type GenerateRedirectionTokenResponse struct { + // ExpirationTime The token expiration time in RFC3339 format. + ExpirationTime time.Time `json:"ExpirationTime"` + + // RedirectionToken A short-lived token used for WebSocket redirection authentication. + RedirectionToken string `json:"RedirectionToken"` +} + // MessageMessage The message that the Redfish service returns. type MessageMessage struct { // Message The human-readable message. @@ -775,6 +834,12 @@ type ResourceStatus_State struct { // ServiceRootLinks The links to other resources that are related to this resource. type ServiceRootLinks = map[string]interface{} +// ServiceRootRedfishVersionDiscovery The Redfish version discovery payload. +type ServiceRootRedfishVersionDiscovery struct { + // V1 Link to the Redfish service root. + V1 string `json:"v1"` +} + // ServiceRootServiceRoot The `ServiceRoot` schema describes the root of the Redfish service, located at the '/redfish/v1' URI. All other resources accessible through the Redfish interface on this device are linked directly or indirectly from the service root. type ServiceRootServiceRoot struct { // OdataContext The OData description of a payload. @@ -859,6 +924,9 @@ type SessionCollectionSessionCollection_Description struct { union json.RawMessage } +// SessionCollectionSessionMember The `Session` resource describes a single connection (session) between a client and a Redfish service instance. +type SessionCollectionSessionMember = SessionSession + // SessionServiceActions The available actions for this resource. type SessionServiceActions = map[string]interface{} @@ -1030,7 +1098,7 @@ type PutRedfishV1SessionServiceJSONRequestBody = SessionServiceSessionService type PostRedfishV1SessionServiceSessionsJSONRequestBody = SessionSession // PostRedfishV1SessionServiceSessionsMembersJSONRequestBody defines body for PostRedfishV1SessionServiceSessionsMembers for application/json ContentType. -type PostRedfishV1SessionServiceSessionsMembersJSONRequestBody = SessionSession +type PostRedfishV1SessionServiceSessionsMembersJSONRequestBody = SessionCollectionSessionMember // PatchRedfishV1SystemsComputerSystemIdJSONRequestBody defines body for PatchRedfishV1SystemsComputerSystemId for application/json ContentType. type PatchRedfishV1SystemsComputerSystemIdJSONRequestBody = ComputerSystemComputerSystem @@ -1038,6 +1106,77 @@ type PatchRedfishV1SystemsComputerSystemIdJSONRequestBody = ComputerSystemComput // PostRedfishV1SystemsComputerSystemIdActionsComputerSystemResetJSONRequestBody defines body for PostRedfishV1SystemsComputerSystemIdActionsComputerSystemReset for application/json ContentType. type PostRedfishV1SystemsComputerSystemIdActionsComputerSystemResetJSONRequestBody = ComputerSystemResetRequestBody +// PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenJSONRequestBody defines body for PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionToken for application/json ContentType. +type PostRedfishV1SystemsComputerSystemIdActionsOemIntelComputerSystemGenerateRedirectionTokenJSONRequestBody = EmptyActionRequest + +// Getter for additional properties for ComputerSystemOemActions. Returns the specified +// element and whether it was found +func (a ComputerSystemOemActions) Get(fieldName string) (value interface{}, found bool) { + if a.AdditionalProperties != nil { + value, found = a.AdditionalProperties[fieldName] + } + return +} + +// Setter for additional properties for ComputerSystemOemActions +func (a *ComputerSystemOemActions) Set(fieldName string, value interface{}) { + if a.AdditionalProperties == nil { + a.AdditionalProperties = make(map[string]interface{}) + } + a.AdditionalProperties[fieldName] = value +} + +// Override default JSON handling for ComputerSystemOemActions to handle AdditionalProperties +func (a *ComputerSystemOemActions) UnmarshalJSON(b []byte) error { + object := make(map[string]json.RawMessage) + err := json.Unmarshal(b, &object) + if err != nil { + return err + } + + if raw, found := object["#IntelComputerSystem.GenerateRedirectionToken"]; found { + err = json.Unmarshal(raw, &a.HashIntelComputerSystemGenerateRedirectionToken) + if err != nil { + return fmt.Errorf("error reading '#IntelComputerSystem.GenerateRedirectionToken': %w", err) + } + delete(object, "#IntelComputerSystem.GenerateRedirectionToken") + } + + if len(object) != 0 { + a.AdditionalProperties = make(map[string]interface{}) + for fieldName, fieldBuf := range object { + var fieldVal interface{} + err := json.Unmarshal(fieldBuf, &fieldVal) + if err != nil { + return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err) + } + a.AdditionalProperties[fieldName] = fieldVal + } + } + return nil +} + +// Override default JSON handling for ComputerSystemOemActions to handle AdditionalProperties +func (a ComputerSystemOemActions) MarshalJSON() ([]byte, error) { + var err error + object := make(map[string]json.RawMessage) + + if a.HashIntelComputerSystemGenerateRedirectionToken != nil { + object["#IntelComputerSystem.GenerateRedirectionToken"], err = json.Marshal(a.HashIntelComputerSystemGenerateRedirectionToken) + if err != nil { + return nil, fmt.Errorf("error marshaling '#IntelComputerSystem.GenerateRedirectionToken': %w", err) + } + } + + for fieldName, field := range a.AdditionalProperties { + object[fieldName], err = json.Marshal(field) + if err != nil { + return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err) + } + } + return json.Marshal(object) +} + // AsActionInfoParameterTypes returns the union data inside the ActionInfoParameters_DataType as a ActionInfoParameterTypes func (t ActionInfoParameters_DataType) AsActionInfoParameterTypes() (ActionInfoParameterTypes, error) { var body ActionInfoParameterTypes diff --git a/redfish/openapi/redfish-openapi.yaml b/redfish/openapi/redfish-openapi.yaml index 78412fdd3..da1c25b00 100644 --- a/redfish/openapi/redfish-openapi.yaml +++ b/redfish/openapi/redfish-openapi.yaml @@ -11,12 +11,14 @@ paths: content: application/json: schema: - type: object - properties: - v1: - type: string - example: /redfish/v1/ + $ref: '#/components/schemas/ServiceRoot_RedfishVersionDiscovery' description: Redfish protocol version discovery endpoint + default: + content: + application/json: + schema: + $ref: '#/components/schemas/RedfishError' + description: Error condition security: - {} /redfish/v1/: @@ -167,14 +169,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/Session_Session' + $ref: '#/components/schemas/SessionCollection_SessionMember' required: true responses: '201': content: application/json: schema: - $ref: '#/components/schemas/Session_Session' + $ref: '#/components/schemas/SessionCollection_SessionMember' description: A resource of type Session has been created (OData Members endpoint) '204': @@ -327,6 +329,36 @@ paths: description: Error condition security: - BasicAuth: [] + /redfish/v1/Systems/{ComputerSystemId}/Actions/Oem/IntelComputerSystem.GenerateRedirectionToken: + parameters: + - description: The value of the Id property of the ComputerSystem resource + in: path + name: ComputerSystemId + required: true + schema: + type: string + post: + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EmptyActionRequest' + required: true + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateRedirectionTokenResponse' + description: The response contains a generated redirection token + default: + content: + application/json: + schema: + $ref: '#/components/schemas/RedfishError' + description: Error condition + security: + - BasicAuth: [] /redfish/v1/odata: get: responses: @@ -662,6 +694,11 @@ components: properties: '#ComputerSystem.Reset': $ref: '#/components/schemas/ComputerSystem_Reset' + Oem: + $ref: '#/components/schemas/ComputerSystem_OemActions' + description: The available OEM-specific actions for this resource. + x-longDescription: This property shall contain the available OEM-specific + actions for this resource. type: object x-longDescription: This type shall contain the available actions for this resource. x-patternProperties: @@ -1001,6 +1038,13 @@ components: - enum: - null readOnly: true + GraphicalConsole: + $ref: '#/components/schemas/ComputerSystem_HostGraphicalConsole' + description: The information about the graphical console (KVM-IP) service + of this system. + x-longDescription: This property shall contain the information about the + graphical console (KVM-IP) service of this system. + x-versionAdded: v1_13_0 HostName: description: The DNS host name, without any domain information. nullable: true @@ -1083,6 +1127,79 @@ components: x-patternProperties: ^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\.[a-zA-Z_][a-zA-Z0-9_]*$: description: This property shall specify a valid odata or Redfish property. + ComputerSystem_GenerateRedirectionToken: + additionalProperties: false + description: This action generates a short-lived redirection token. + properties: + target: + description: Link to invoke action + format: uri-reference + type: string + title: + description: Friendly action name + type: string + type: object + x-longDescription: This action shall generate a short-lived redirection token. + x-patternProperties: + ^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\.[a-zA-Z_][a-zA-Z0-9_]*$: + description: This property shall specify a valid odata or Redfish property. + ComputerSystem_GraphicalConnectTypesSupported: + enum: + - KVMIP + - OEM + type: string + x-enumDescriptions: + KVMIP: The controller supports a graphical console connection through a KVM-IP + (redirection of Keyboard, Video, Mouse over IP) protocol. + OEM: The controller supports a graphical console connection through an OEM-specific + protocol. + ComputerSystem_HostGraphicalConsole: + additionalProperties: false + description: The information about a graphical console service for this system. + properties: + ConnectTypesSupported: + description: This property enumerates the graphical console connection types + that the implementation allows. + items: + $ref: '#/components/schemas/ComputerSystem_GraphicalConnectTypesSupported' + readOnly: true + type: array + x-longDescription: This property shall contain an array of the enumerations. `KVMIP` + shall be included if a vendor-defined KVM-IP protocol is supported. + x-versionAdded: v1_13_0 + MaxConcurrentSessions: + description: The maximum number of service sessions, regardless of protocol, + that this system can support. + format: int64 + minimum: 0 + readOnly: true + type: integer + x-longDescription: This property shall contain the maximum number of concurrent + service sessions that this implementation supports. + x-versionAdded: v1_13_0 + Port: + description: The protocol port. + format: int64 + minimum: 0 + nullable: true + readOnly: false + type: integer + x-longDescription: This property shall contain the port assigned to the + service. + x-versionAdded: v1_13_0 + ServiceEnabled: + description: An indication of whether the service is enabled for this system. + readOnly: false + type: boolean + x-longDescription: This property shall indicate whether the protocol for + the service is enabled. + x-versionAdded: v1_13_0 + type: object + x-longDescription: This type shall describe a graphical console service for + a computer system. + x-patternProperties: + ^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\.[a-zA-Z_][a-zA-Z0-9_]*$: + description: This property shall specify a valid odata or Redfish property. ComputerSystem_MemoryMirroring: enum: - System @@ -1147,6 +1264,18 @@ components: x-patternProperties: ^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\.[a-zA-Z_][a-zA-Z0-9_]*$: description: This property shall specify a valid odata or Redfish property. + ComputerSystem_OemActions: + additionalProperties: true + description: The available OEM-specific actions for this resource. + properties: + '#IntelComputerSystem.GenerateRedirectionToken': + $ref: '#/components/schemas/ComputerSystem_GenerateRedirectionToken' + type: object + x-longDescription: This type shall contain the available OEM-specific actions + for this resource. + x-patternProperties: + ^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\.[a-zA-Z_][a-zA-Z0-9_]*$: + description: This property shall specify a valid odata or Redfish property. ComputerSystem_ProcessorSummary: additionalProperties: false description: The central processors of the system in general detail. @@ -1341,6 +1470,26 @@ components: Disabled: This value shall indicate a Trusted Module is not required to boot. Required: This value shall indicate a functioning Trusted Module is required to boot. + EmptyActionRequest: + additionalProperties: false + description: Empty JSON body for Redfish action invocation. + properties: {} + type: object + GenerateRedirectionTokenResponse: + additionalProperties: false + description: The response payload containing a short-lived redirection token. + properties: + ExpirationTime: + description: The token expiration time in RFC3339 format. + format: date-time + type: string + RedirectionToken: + description: A short-lived token used for WebSocket redirection authentication. + type: string + required: + - RedirectionToken + - ExpirationTime + type: object Message_Message: additionalProperties: false description: The message that the Redfish service returns. @@ -3073,6 +3222,16 @@ components: x-patternProperties: ^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\.[a-zA-Z_][a-zA-Z0-9_]*$: description: This property shall specify a valid odata or Redfish property. + ServiceRoot_RedfishVersionDiscovery: + description: The Redfish version discovery payload. + properties: + v1: + description: Link to the Redfish service root. + type: string + example: /redfish/v1/ + required: + - v1 + type: object ServiceRoot_ServiceRoot: additionalProperties: false description: The `ServiceRoot` schema describes the root of the Redfish service, @@ -3211,6 +3370,10 @@ components: x-patternProperties: ^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\.[a-zA-Z_][a-zA-Z0-9_]*$: description: This property shall specify a valid odata or Redfish property. + SessionCollection_SessionMember: + description: A `Session` resource payload used by the Sessions Members endpoint. + allOf: + - $ref: '#/components/schemas/Session_Session' SessionService_Actions: additionalProperties: false description: The available actions for this resource.