1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! Redfish Action primitives
//!
//! The [`Action<T, R>`] type corresponds to the inner object found under the
//! Redfish `Actions` section for a specific action (for example,
//! `"#ComputerSystem.Reset"`). It captures the endpoint used to invoke the
//! action via its `target` field. The type parameters are:
//! - `T`: request parameters payload type (sent as the POST body when running the action)
//! - `R`: response type returned by the BMC for that action
//!
//! Only the `target` field is deserialized. Any additional metadata
//! (such as `...@Redfish.AllowableValues`) is ignored by this type
//! and may be used by higher layers.
//!
//! Example: how an action appears in a Redfish resource and which part maps to [`Action`]
//!
//! ```json
//! {
//! "Actions": {
//! "#ComputerSystem.Reset": {
//! "target": "/redfish/v1/Systems/1/Actions/ComputerSystem.Reset",
//! "ResetType@Redfish.AllowableValues": [
//! "On",
//! "GracefulRestart",
//! "ForceRestart"
//! ]
//! }
//! }
//! }
//! ```
//!
//! The [`Action<T, R>`] value corresponds to the inner object of
//! `"#ComputerSystem.Reset"` and deserializes the `target` field only.
//!
use crateBmc;
use crateModificationResponse;
use Display;
use Formatter;
use Result as FmtResult;
use Deserialize;
use Serialize;
use PhantomData;
/// URI reference for the `target` field of an action.
///
/// The [`Bmc`] implementation resolves this value when the action is run and
/// may reject values that violate its outbound request policy before transport.
;
/// Defines a deserializable Action. It is almost always a member of the
/// `Actions` struct in different parts of the Redfish object tree.
///
/// `T` is the type for parameters.
/// `R` is the type for the return value.
/// Action error trait. Needed in generated code when an action function
/// is called for an action that wasn't specified by the server.