summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Redfish.md7
-rw-r--r--redfish-core/include/redfish.hpp5
-rw-r--r--redfish-core/include/redfish_aggregator.hpp107
-rw-r--r--redfish-core/include/schemas.hpp1
-rw-r--r--redfish-core/lib/aggregation_service.hpp147
-rwxr-xr-xscripts/update_schemas.py1
-rw-r--r--static/redfish/v1/$metadata/index.xml11
-rw-r--r--static/redfish/v1/JsonSchemas/AggregationSource/AggregationSource.json656
-rw-r--r--static/redfish/v1/schema/AggregationSource_v1.xml460
9 files changed, 1342 insertions, 53 deletions
diff --git a/Redfish.md b/Redfish.md
index 689b586304..6036e8ad6e 100644
--- a/Redfish.md
+++ b/Redfish.md
@@ -83,6 +83,13 @@ Fields common to all schemas
- Members
- Members@odata.count
+### /redfish/v1/AggregationService/AggregationSources/{AggregationSourceId}
+
+#### AggregationSource
+
+- HostName
+- Password
+
### /redfish/v1/AccountService/Accounts/
#### ManagerAccountCollection
diff --git a/redfish-core/include/redfish.hpp b/redfish-core/include/redfish.hpp
index 954dfc7db9..cf41824e81 100644
--- a/redfish-core/include/redfish.hpp
+++ b/redfish-core/include/redfish.hpp
@@ -73,8 +73,9 @@ class RedfishService
{
requestAccountServiceRoutes(app);
#ifdef BMCWEB_ENABLE_REDFISH_AGGREGATION
- requestAggregationServiceRoutes(app);
- requestAggregationSourcesRoutes(app);
+ requestRoutesAggregationService(app);
+ requestRoutesAggregationSourceCollection(app);
+ requestRoutesAggregationSource(app);
#endif
requestRoutesRoles(app);
requestRoutesRoleCollection(app);
diff --git a/redfish-core/include/redfish_aggregator.hpp b/redfish-core/include/redfish_aggregator.hpp
index de51ca6843..85c1c15221 100644
--- a/redfish-core/include/redfish_aggregator.hpp
+++ b/redfish-core/include/redfish_aggregator.hpp
@@ -239,55 +239,20 @@ class RedfishAggregator
// Dummy callback used by the Constructor so that it can report the number
// of satellite configs when the class is first created
static void constructorCallback(
+ const boost::system::error_code& ec,
const std::unordered_map<std::string, boost::urls::url>& satelliteInfo)
{
+ if (ec)
+ {
+ BMCWEB_LOG_ERROR << "Something went wrong while querying dbus!";
+ return;
+ }
+
BMCWEB_LOG_DEBUG << "There were "
<< std::to_string(satelliteInfo.size())
<< " satellite configs found at startup";
}
- // Polls D-Bus to get all available satellite config information
- // Expects a handler which interacts with the returned configs
- static void getSatelliteConfigs(
- const std::function<void(
- const std::unordered_map<std::string, boost::urls::url>&)>& handler)
- {
- BMCWEB_LOG_DEBUG << "Gathering satellite configs";
- crow::connections::systemBus->async_method_call(
- [handler](const boost::system::error_code& ec,
- const dbus::utility::ManagedObjectType& objects) {
- if (ec)
- {
- BMCWEB_LOG_ERROR << "DBUS response error " << ec.value() << ", "
- << ec.message();
- return;
- }
-
- // Maps a chosen alias representing a satellite BMC to a url
- // containing the information required to create a http
- // connection to the satellite
- std::unordered_map<std::string, boost::urls::url> satelliteInfo;
-
- findSatelliteConfigs(objects, satelliteInfo);
-
- if (!satelliteInfo.empty())
- {
- BMCWEB_LOG_DEBUG << "Redfish Aggregation enabled with "
- << std::to_string(satelliteInfo.size())
- << " satellite BMCs";
- }
- else
- {
- BMCWEB_LOG_DEBUG
- << "No satellite BMCs detected. Redfish Aggregation not enabled";
- }
- handler(satelliteInfo);
- },
- "xyz.openbmc_project.EntityManager",
- "/xyz/openbmc_project/inventory",
- "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
- }
-
// Search D-Bus objects for satellite config objects and add their
// information if valid
static void findSatelliteConfigs(
@@ -492,12 +457,19 @@ class RedfishAggregator
AggregationType isCollection,
const std::shared_ptr<crow::Request>& sharedReq,
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+ const boost::system::error_code& ec,
const std::unordered_map<std::string, boost::urls::url>& satelliteInfo)
{
if (sharedReq == nullptr)
{
return;
}
+ // Something went wrong while querying dbus
+ if (ec)
+ {
+ messages::internalError(asyncResp->res);
+ return;
+ }
// No satellite configs means we don't need to keep attempting to
// aggregate
@@ -631,6 +603,51 @@ class RedfishAggregator
return handler;
}
+ // Polls D-Bus to get all available satellite config information
+ // Expects a handler which interacts with the returned configs
+ static void getSatelliteConfigs(
+ std::function<
+ void(const boost::system::error_code&,
+ const std::unordered_map<std::string, boost::urls::url>&)>
+ handler)
+ {
+ BMCWEB_LOG_DEBUG << "Gathering satellite configs";
+ crow::connections::systemBus->async_method_call(
+ [handler{std::move(handler)}](
+ const boost::system::error_code& ec,
+ const dbus::utility::ManagedObjectType& objects) {
+ std::unordered_map<std::string, boost::urls::url> satelliteInfo;
+ if (ec)
+ {
+ BMCWEB_LOG_ERROR << "DBUS response error " << ec.value() << ", "
+ << ec.message();
+ handler(ec, satelliteInfo);
+ return;
+ }
+
+ // Maps a chosen alias representing a satellite BMC to a url
+ // containing the information required to create a http
+ // connection to the satellite
+ findSatelliteConfigs(objects, satelliteInfo);
+
+ if (!satelliteInfo.empty())
+ {
+ BMCWEB_LOG_DEBUG << "Redfish Aggregation enabled with "
+ << std::to_string(satelliteInfo.size())
+ << " satellite BMCs";
+ }
+ else
+ {
+ BMCWEB_LOG_DEBUG
+ << "No satellite BMCs detected. Redfish Aggregation not enabled";
+ }
+ handler(ec, satelliteInfo);
+ },
+ "xyz.openbmc_project.EntityManager",
+ "/xyz/openbmc_project/inventory",
+ "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
+ }
+
// Processes the response returned by a satellite BMC and loads its
// contents into asyncResp
static void
@@ -863,7 +880,11 @@ class RedfishAggregator
{
// We've matched a resource collection so this current segment
// might contain an aggregation prefix
- if (collectionItem.starts_with("5B247A"))
+ // TODO: This needs to be rethought when we can support multiple
+ // satellites due to
+ // /redfish/v1/AggregationService/AggregationSources/5B247A
+ // being a local resource describing the satellite
+ if (collectionItem.starts_with("5B247A_"))
{
BMCWEB_LOG_DEBUG << "Need to forward a request";
diff --git a/redfish-core/include/schemas.hpp b/redfish-core/include/schemas.hpp
index c2cbb8bd94..8dd2d7b46b 100644
--- a/redfish-core/include/schemas.hpp
+++ b/redfish-core/include/schemas.hpp
@@ -18,6 +18,7 @@ namespace redfish
"AccountService",
"ActionInfo",
"AggregationService",
+ "AggregationSource",
"AggregationSourceCollection",
"Assembly",
"AttributeRegistry",
diff --git a/redfish-core/lib/aggregation_service.hpp b/redfish-core/lib/aggregation_service.hpp
index f0eb651dc2..1cd2e68d9d 100644
--- a/redfish-core/lib/aggregation_service.hpp
+++ b/redfish-core/lib/aggregation_service.hpp
@@ -5,6 +5,7 @@
#include "http_request.hpp"
#include "http_response.hpp"
#include "query.hpp"
+#include "redfish_aggregator.hpp"
#include "registries/privilege_registry.hpp"
#include <nlohmann/json.hpp>
@@ -50,7 +51,7 @@ inline void handleAggregationServiceGet(
"/redfish/v1/AggregationService/AggregationSources";
}
-inline void requestAggregationServiceRoutes(App& app)
+inline void requestRoutesAggregationService(App& app)
{
BMCWEB_ROUTE(app, "/redfish/v1/AggregationService/")
.privileges(redfish::privileges::headAggregationService)
@@ -62,7 +63,31 @@ inline void requestAggregationServiceRoutes(App& app)
std::bind_front(handleAggregationServiceGet, std::ref(app)));
}
-inline void handleAggregationSourcesGet(
+inline void populateAggregationSourceCollection(
+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+ const boost::system::error_code ec,
+ const std::unordered_map<std::string, boost::urls::url>& satelliteInfo)
+{
+ // Something went wrong while querying dbus
+ if (ec)
+ {
+ messages::internalError(asyncResp->res);
+ return;
+ }
+ nlohmann::json::array_t members = nlohmann::json::array();
+ for (const auto& sat : satelliteInfo)
+ {
+ nlohmann::json::object_t member;
+ member["@odata.id"] =
+ crow::utility::urlFromPieces("redfish", "v1", "AggregationService",
+ "AggregationSources", sat.first);
+ members.push_back(std::move(member));
+ }
+ asyncResp->res.jsonValue["Members@odata.count"] = members.size();
+ asyncResp->res.jsonValue["Members"] = std::move(members);
+}
+
+inline void handleAggregationSourceCollectionGet(
App& app, const crow::Request& req,
const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
{
@@ -78,18 +103,124 @@ inline void handleAggregationSourcesGet(
json["@odata.type"] =
"#AggregationSourceCollection.AggregationSourceCollection";
json["Name"] = "Aggregation Source Collection";
- json["Members"] = nlohmann::json::array();
- json["Members@odata.count"] = 0;
- // TODO: Query D-Bus for satellite configs and add them to the Members array
+ // Query D-Bus for satellite configs and add them to the Members array
+ RedfishAggregator::getSatelliteConfigs(
+ std::bind_front(populateAggregationSourceCollection, asyncResp));
}
-inline void requestAggregationSourcesRoutes(App& app)
+inline void handleAggregationSourceCollectionHead(
+ App& app, const crow::Request& req,
+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
+{
+ if (!redfish::setUpRedfishRoute(app, req, asyncResp))
+ {
+ return;
+ }
+ asyncResp->res.addHeader(
+ boost::beast::http::field::link,
+ "</redfish/v1/JsonSchemas/AggregationService/AggregationSourceCollection.json>; rel=describedby");
+}
+
+inline void requestRoutesAggregationSourceCollection(App& app)
{
BMCWEB_ROUTE(app, "/redfish/v1/AggregationService/AggregationSources/")
- .privileges(redfish::privileges::getAggregationService)
+ .privileges(redfish::privileges::getAggregationSourceCollection)
+ .methods(boost::beast::http::verb::get)(std::bind_front(
+ handleAggregationSourceCollectionGet, std::ref(app)));
+
+ BMCWEB_ROUTE(app, "/redfish/v1/AggregationService/AggregationSources/")
+ .privileges(redfish::privileges::getAggregationSourceCollection)
+ .methods(boost::beast::http::verb::head)(std::bind_front(
+ handleAggregationSourceCollectionHead, std::ref(app)));
+}
+
+inline void populateAggregationSource(
+ const std::string& aggregationSourceId,
+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+ const boost::system::error_code ec,
+ const std::unordered_map<std::string, boost::urls::url>& satelliteInfo)
+{
+ asyncResp->res.addHeader(
+ boost::beast::http::field::link,
+ "</redfish/v1/JsonSchemas/AggregationSource/AggregationSource.json>; rel=describedby");
+
+ // Something went wrong while querying dbus
+ if (ec)
+ {
+ messages::internalError(asyncResp->res);
+ return;
+ }
+
+ const auto& sat = satelliteInfo.find(aggregationSourceId);
+ if (sat == satelliteInfo.end())
+ {
+ messages::resourceNotFound(asyncResp->res, "AggregationSource",
+ aggregationSourceId);
+ return;
+ }
+
+ asyncResp->res.jsonValue["@odata.id"] =
+ crow::utility::urlFromPieces("redfish", "v1", "AggregationService",
+ "AggregationSources", aggregationSourceId);
+ asyncResp->res.jsonValue["@odata.type"] =
+ "#AggregationSource.v1_3_1.AggregationSource";
+ asyncResp->res.jsonValue["Id"] = aggregationSourceId;
+
+ // TODO: We may want to change this whenever we support aggregating multiple
+ // satellite BMCs. Otherwise all AggregationSource resources will have the
+ // same "Name".
+ // TODO: We should use the "Name" from the satellite config whenever we add
+ // support for including it in the data returned in satelliteInfo.
+ asyncResp->res.jsonValue["Name"] = "Aggregation source";
+ std::string hostName(sat->second.encoded_origin());
+ asyncResp->res.jsonValue["HostName"] = std::move(hostName);
+
+ // The Redfish spec requires Password to be null in responses
+ asyncResp->res.jsonValue["Password"] = nullptr;
+}
+
+inline void handleAggregationSourceGet(
+ App& app, const crow::Request& req,
+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+ const std::string& aggregationSourceId)
+{
+ if (!redfish::setUpRedfishRoute(app, req, asyncResp))
+ {
+ return;
+ }
+
+ // Query D-Bus for satellite config corresponding to the specified
+ // AggregationSource
+ RedfishAggregator::getSatelliteConfigs(std::bind_front(
+ populateAggregationSource, aggregationSourceId, asyncResp));
+}
+
+inline void handleAggregationSourceHead(
+ App& app, const crow::Request& req,
+ const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
+ const std::string& aggregationSourceId)
+{
+ if (!redfish::setUpRedfishRoute(app, req, asyncResp))
+ {
+ return;
+ }
+ asyncResp->res.addHeader(
+ boost::beast::http::field::link,
+ "</redfish/v1/JsonSchemas/AggregationService/AggregationSource.json>; rel=describedby");
+
+ // Needed to prevent unused variable error
+ BMCWEB_LOG_DEBUG << "Added link header to response from "
+ << aggregationSourceId;
+}
+
+inline void requestRoutesAggregationSource(App& app)
+{
+ BMCWEB_ROUTE(app,
+ "/redfish/v1/AggregationService/AggregationSources/<str>/")
+ .privileges(redfish::privileges::getAggregationSource)
.methods(boost::beast::http::verb::get)(
- std::bind_front(handleAggregationSourcesGet, std::ref(app)));
+ std::bind_front(handleAggregationSourceGet, std::ref(app)));
}
} // namespace redfish
diff --git a/scripts/update_schemas.py b/scripts/update_schemas.py
index a27c156298..474c268feb 100755
--- a/scripts/update_schemas.py
+++ b/scripts/update_schemas.py
@@ -28,6 +28,7 @@ include_list = [
"AccountService",
"ActionInfo",
"AggregationService",
+ "AggregationSource",
"AggregationSourceCollection",
"Assembly",
"AttributeRegistry",
diff --git a/static/redfish/v1/$metadata/index.xml b/static/redfish/v1/$metadata/index.xml
index 92bcc0935d..72abbf1f21 100644
--- a/static/redfish/v1/$metadata/index.xml
+++ b/static/redfish/v1/$metadata/index.xml
@@ -118,6 +118,17 @@
<edmx:Include Namespace="AggregationService.v1_0_0"/>
<edmx:Include Namespace="AggregationService.v1_0_1"/>
</edmx:Reference>
+ <edmx:Reference Uri="/redfish/v1/schema/AggregationSource_v1.xml">
+ <edmx:Include Namespace="AggregationSource"/>
+ <edmx:Include Namespace="AggregationSource.v1_0_0"/>
+ <edmx:Include Namespace="AggregationSource.v1_0_1"/>
+ <edmx:Include Namespace="AggregationSource.v1_1_0"/>
+ <edmx:Include Namespace="AggregationSource.v1_1_1"/>
+ <edmx:Include Namespace="AggregationSource.v1_2_0"/>
+ <edmx:Include Namespace="AggregationSource.v1_2_1"/>
+ <edmx:Include Namespace="AggregationSource.v1_3_0"/>
+ <edmx:Include Namespace="AggregationSource.v1_3_1"/>
+ </edmx:Reference>
<edmx:Reference Uri="/redfish/v1/schema/AggregationSourceCollection_v1.xml">
<edmx:Include Namespace="AggregationSourceCollection"/>
</edmx:Reference>
diff --git a/static/redfish/v1/JsonSchemas/AggregationSource/AggregationSource.json b/static/redfish/v1/JsonSchemas/AggregationSource/AggregationSource.json
new file mode 100644
index 0000000000..7d7295b5bf
--- /dev/null
+++ b/static/redfish/v1/JsonSchemas/AggregationSource/AggregationSource.json
@@ -0,0 +1,656 @@
+{
+ "$id": "http://redfish.dmtf.org/schemas/v1/AggregationSource.v1_3_1.json",
+ "$ref": "#/definitions/AggregationSource",
+ "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
+ "copyright": "Copyright 2014-2022 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
+ "definitions": {
+ "Actions": {
+ "additionalProperties": false,
+ "description": "The available actions for this resource.",
+ "longDescription": "This type shall contain the available actions for this resource.",
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {
+ "#AggregationSource.GenerateSSHIdentityKeyPair": {
+ "$ref": "#/definitions/GenerateSSHIdentityKeyPair"
+ },
+ "#AggregationSource.RemoveSSHIdentityKeyPair": {
+ "$ref": "#/definitions/RemoveSSHIdentityKeyPair"
+ },
+ "Oem": {
+ "$ref": "#/definitions/OemActions",
+ "description": "The available OEM-specific actions for this resource.",
+ "longDescription": "This property shall contain the available OEM-specific actions for this resource."
+ }
+ },
+ "type": "object"
+ },
+ "AggregationSource": {
+ "additionalProperties": false,
+ "description": "The AggregationSource schema is used to represent the source of information for a subset of the resources provided by a Redfish service. It can be thought of as a provider of information. As such, most such interfaces have requirements to support the gathering of information like address and account used to access the information.",
+ "longDescription": "This resource shall represent an aggregation source for a Redfish implementation.",
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {
+ "@odata.context": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
+ },
+ "@odata.etag": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
+ },
+ "@odata.id": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
+ },
+ "@odata.type": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
+ },
+ "Actions": {
+ "$ref": "#/definitions/Actions",
+ "description": "The available actions for this resource.",
+ "longDescription": "This property shall contain the available actions for this resource."
+ },
+ "AggregationType": {
+ "$ref": "#/definitions/AggregationType",
+ "description": "The type of aggregation used towards the aggregation source.",
+ "longDescription": "This property shall contain the type of aggregation used for the connection method towards the aggregation source. If this property is not present, the value shall be assumed to be `Full`.",
+ "readonly": false,
+ "versionAdded": "v1_2_0"
+ },
+ "Description": {
+ "anyOf": [
+ {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "readonly": true
+ },
+ "HostName": {
+ "description": "The URI of the system to be accessed.",
+ "format": "uri-reference",
+ "longDescription": "This property shall contain the URI of the system to be aggregated. This property shall not be required when the aggregation source is configured to only receive notifications from the aggregated system and the AggregationType property contains the value `NotificationsOnly`.",
+ "readonly": false,
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "Id": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
+ "readonly": true
+ },
+ "Links": {
+ "$ref": "#/definitions/Links",
+ "description": "The links to other resources that are related to this resource.",
+ "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."
+ },
+ "Name": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
+ "readonly": true
+ },
+ "Oem": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
+ "description": "The OEM extension property.",
+ "longDescription": "This property shall contain the OEM extensions. All values for properties that this object contains shall conform to the Redfish Specification-described requirements."
+ },
+ "Password": {
+ "description": "The password for accessing the aggregation source. The value is `null` in responses.",
+ "longDescription": "This property shall contain a password for accessing the aggregation source. The value shall be `null` in responses.",
+ "readonly": false,
+ "type": [
+ "string",
+ "null"
+ ],
+ "writeOnly ": true
+ },
+ "SNMP": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/SNMPSettings"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "SNMP settings of the aggregation source.",
+ "longDescription": "This property shall contain the SNMP settings of the aggregation source.",
+ "versionAdded": "v1_1_0"
+ },
+ "SSHSettings": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/SSHSettingsType"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Settings for an aggregation source using SSH as part of the associated connection method.",
+ "longDescription": "This property shall contain the settings for an aggregation source using SSH as part of the associated connection method.",
+ "versionAdded": "v1_3_0"
+ },
+ "Status": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
+ "description": "The status and health of the resource and its subordinate or dependent resources.",
+ "longDescription": "This property shall contain any status or health properties of the resource.",
+ "versionAdded": "v1_3_0"
+ },
+ "UserName": {
+ "description": "The user name for accessing the aggregation source.",
+ "longDescription": "This property shall contain the user name for accessing the aggregation source.",
+ "readonly": false,
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "@odata.id",
+ "@odata.type",
+ "Id",
+ "Name"
+ ],
+ "type": "object"
+ },
+ "AggregationType": {
+ "enum": [
+ "NotificationsOnly",
+ "Full"
+ ],
+ "enumDescriptions": {
+ "Full": "Full aggregation according to connection method.",
+ "NotificationsOnly": "Only notifications are aggregated."
+ },
+ "enumLongDescriptions": {
+ "Full": "This value shall indicate that the aggregator is performing full aggregation according to the connection method without any limitation such as only receiving notifications.",
+ "NotificationsOnly": "This value shall indicate that the aggregator is only aggregating notifications or events from the aggregation source according to the connection method used. This value shall not be used with connection methods that do not include notifications."
+ },
+ "type": "string"
+ },
+ "ECDSACurveType": {
+ "enum": [
+ "NISTP256",
+ "NISTP384",
+ "NISTP521",
+ "NISTK163",
+ "NISTP192",
+ "NISTP224",
+ "NISTK233",
+ "NISTB233",
+ "NISTK283",
+ "NISTK409",
+ "NISTB409",
+ "NISTT571"
+ ],
+ "enumDescriptions": {
+ "NISTB233": "NIST B-233.",
+ "NISTB409": "NIST B-409.",
+ "NISTK163": "NIST K-163.",
+ "NISTK233": "NIST K-233.",
+ "NISTK283": "NIST K-283.",
+ "NISTK409": "NIST K-409.",
+ "NISTP192": "NIST P-192.",
+ "NISTP224": "NIST P-224.",
+ "NISTP256": "NIST P-256.",
+ "NISTP384": "NIST P-384.",
+ "NISTP521": "NIST P-521.",
+ "NISTT571": "NIST T-571."
+ },
+ "enumLongDescriptions": {
+ "NISTB233": "This value shall indicate the 'nistb233' curve in RFC5656.",
+ "NISTB409": "This value shall indicate the 'nistb409' curve in RFC5656.",
+ "NISTK163": "This value shall indicate the 'nistk163' curve in RFC5656.",
+ "NISTK233": "This value shall indicate the 'nistk233' curve in RFC5656.",
+ "NISTK283": "This value shall indicate the 'nistk283' curve in RFC5656.",
+ "NISTK409": "This value shall indicate the 'nistk409' curve in RFC5656.",
+ "NISTP192": "This value shall indicate the 'nistp192' curve in RFC5656.",
+ "NISTP224": "This value shall indicate the 'nistp224' curve in RFC5656.",
+ "NISTP256": "This value shall indicate the 'nistp256' curve in RFC5656.",
+ "NISTP384": "This value shall indicate the 'nistp384' curve in RFC5656.",
+ "NISTP521": "This value shall indicate the 'nistp521' curve in RFC5656.",
+ "NISTT571": "This value shall indicate the 'nistt571' curve in RFC5656."
+ },
+ "type": "string"
+ },
+ "GenerateSSHIdentityKeyPair": {
+ "additionalProperties": false,
+ "description": "This action generates a new SSH identity key-pair to be used with this aggregation source. The generated public key is stored in the Key resource referenced by the PublicIdentityKey property in SSHSettings. Any existing key-pair is deleted and replace by the new key-pair.",
+ "longDescription": "This action shall generate a new SSH identity key-pair to be used with this aggregation source. The service shall store the generated public key in the Key resource referenced by the PublicIdentityKey property in SSHSettings. If the aggregation source already has an associated SSH identity key-pair, the service shall delete the key-pair and replace it with the new key-pair.",
+ "parameters": {
+ "Curve": {
+ "$ref": "#/definitions/ECDSACurveType",
+ "description": "The curve to use with the SSH key if the KeyType parameter contains `ECDSA`.",
+ "longDescription": "This parameter shall contain the curve to use with the SSH key. This parameter shall be required if the KeyType parameter contains `ECDSA` and rejected for other values."
+ },
+ "KeyLength": {
+ "description": "The length of the SSH key, in bits, if the KeyType parameter contains `RSA`.",
+ "longDescription": "This parameter shall contain the length of the SSH key, in bits. This parameter shall be required if the KeyType parameter contains `RSA` and rejected for other values.",
+ "type": "integer"
+ },
+ "KeyType": {
+ "$ref": "#/definitions/SSHKeyType",
+ "description": "The type of SSH key.",
+ "longDescription": "This parameter shall contain the type of SSH key.",
+ "requiredParameter": true
+ }
+ },
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {
+ "target": {
+ "description": "Link to invoke action",
+ "format": "uri-reference",
+ "type": "string"
+ },
+ "title": {
+ "description": "Friendly action name",
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "versionAdded": "v1_3_0"
+ },
+ "Links": {
+ "additionalProperties": false,
+ "description": "The links to other resources that are related to this resource.",
+ "longDescription": "This Redfish Specification-described type shall contain links to resources that are related to but are not contained by, or subordinate to, this resource.",
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {
+ "ConnectionMethod": {
+ "anyOf": [
+ {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/ConnectionMethod.json#/definitions/ConnectionMethod"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "An array of links to the connection methods used to contact this aggregation source.",
+ "longDescription": "This property shall contain an array of links to resources of type ConnectionMethod that are used to connect to the aggregation source.",
+ "readonly": true
+ },
+ "Oem": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
+ "description": "The OEM extension property.",
+ "longDescription": "This property shall contain the OEM extensions. All values for properties contained in this object shall conform to the Redfish Specification-described requirements."
+ },
+ "ResourcesAccessed": {
+ "description": "An array links to the resources added to the service through this aggregation source. It is recommended that this be the minimal number of properties needed to find the resources that would be lost when the aggregation source is deleted.",
+ "items": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Resource"
+ },
+ "longDescription": "This property shall contain an array of links to the resources added to the service through the aggregation source. It is recommended that this be the minimal number of properties needed to find the resources that would be lost when the aggregation source is deleted. For example, this could be the pointers to the members of the root level collections or the manager of a BMC.",
+ "readonly": true,
+ "type": "array"
+ },
+ "ResourcesAccessed@odata.count": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
+ }
+ },
+ "type": "object"
+ },
+ "OemActions": {
+ "additionalProperties": true,
+ "description": "The available OEM-specific actions for this resource.",
+ "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {},
+ "type": "object"
+ },
+ "RemoveSSHIdentityKeyPair": {
+ "additionalProperties": false,
+ "description": "This action removes the SSH identity key-pair used with this aggregation source.",
+ "longDescription": "This action shall remove the private SSH identity key-pair used with this aggregation source.",
+ "parameters": {},
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {
+ "target": {
+ "description": "Link to invoke action",
+ "format": "uri-reference",
+ "type": "string"
+ },
+ "title": {
+ "description": "Friendly action name",
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "versionAdded": "v1_3_0"
+ },
+ "SNMPAuthenticationProtocols": {
+ "enum": [
+ "None",
+ "CommunityString",
+ "HMAC_MD5",
+ "HMAC_SHA96",
+ "HMAC128_SHA224",
+ "HMAC192_SHA256",
+ "HMAC256_SHA384",
+ "HMAC384_SHA512"
+ ],
+ "enumDescriptions": {
+ "CommunityString": "Trap community string authentication.",
+ "HMAC128_SHA224": "HMAC-128-SHA-224 authentication.",
+ "HMAC192_SHA256": "HMAC-192-SHA-256 authentication.",
+ "HMAC256_SHA384": "HMAC-256-SHA-384 authentication.",
+ "HMAC384_SHA512": "HMAC-384-SHA-512 authentication.",
+ "HMAC_MD5": "HMAC-MD5-96 authentication.",
+ "HMAC_SHA96": "HMAC-SHA-96 authentication.",
+ "None": "No authentication."
+ },
+ "enumLongDescriptions": {
+ "CommunityString": "This value shall indicate authentication using SNMP community strings and the value of TrapCommunity.",
+ "HMAC128_SHA224": "This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC128SHA224AuthProtocol.",
+ "HMAC192_SHA256": "This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC192SHA256AuthProtocol.",
+ "HMAC256_SHA384": "This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC256SHA384AuthProtocol.",
+ "HMAC384_SHA512": "This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC384SHA512AuthProtocol.",
+ "HMAC_MD5": "This value shall indicate authentication conforms to the RFC3414-defined HMAC-MD5-96 authentication protocol.",
+ "HMAC_SHA96": "This value shall indicate authentication conforms to the RFC3414-defined HMAC-SHA-96 authentication protocol.",
+ "None": "This value shall indicate authentication is not required."
+ },
+ "type": "string"
+ },
+ "SNMPEncryptionProtocols": {
+ "enum": [
+ "None",
+ "CBC_DES",
+ "CFB128_AES128"
+ ],
+ "enumDescriptions": {
+ "CBC_DES": "CBC-DES encryption.",
+ "CFB128_AES128": "CFB128-AES-128 encryption.",
+ "None": "No encryption."
+ },
+ "enumLongDescriptions": {
+ "CBC_DES": "This value shall indicate encryption conforms to the RFC3414-defined CBC-DES encryption protocol.",
+ "CFB128_AES128": "This value shall indicate encryption conforms to the RFC3414-defined CFB128-AES-128 encryption protocol.",
+ "None": "This value shall indicate there is no encryption."
+ },
+ "type": "string"
+ },
+ "SNMPSettings": {
+ "additionalProperties": false,
+ "description": "Settings for an SNMP aggregation source.",
+ "longDescription": "This type shall contain the settings for an SNMP aggregation source.",
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {
+ "AuthenticationKey": {
+ "description": "The secret authentication key for SNMPv3.",
+ "longDescription": "This property shall contain the key for SNMPv3 authentication. The value shall be `null` in responses. This property accepts a passphrase or a hex-encoded key. If the string starts with `Passphrase:`, the remainder of the string shall be the passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. If the string starts with `Hex:`, then the remainder of the string shall be the key encoded in hexadecimal notation. If the string starts with neither, the full string shall be a passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. The passphrase can contain any printable characters except for the double quotation mark.",
+ "pattern": "(^[ !#-~]+$)|(^Passphrase:[ ^[ !#-~]+$)|(^Hex:[0-9A-Fa-f]{24,96})|(^\\*+$)",
+ "readonly": false,
+ "type": [
+ "string",
+ "null"
+ ],
+ "versionAdded": "v1_1_0",
+ "writeOnly ": true
+ },
+ "AuthenticationKeySet": {
+ "description": "Indicates if the AuthenticationKey property is set.",
+ "longDescription": "This property shall contain `true` if a valid value was provided for the AuthenticationKey property. Otherwise, the property shall contain `false`.",
+ "readonly": true,
+ "type": "boolean",
+ "versionAdded": "v1_1_0"
+ },
+ "AuthenticationProtocol": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/SNMPAuthenticationProtocols"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The authentication protocol for SNMPv3.",
+ "longDescription": "This property shall contain the SNMPv3 authentication protocol.",
+ "readonly": false,
+ "versionAdded": "v1_1_0"
+ },
+ "EncryptionKey": {
+ "description": "The secret authentication key for SNMPv3.",
+ "longDescription": "This property shall contain the key for SNMPv3 encryption. The value shall be `null` in responses. This property accepts a passphrase or a hex-encoded key. If the string starts with `Passphrase:`, the remainder of the string shall be the passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. If the string starts with `Hex:`, then the remainder of the string shall be the key encoded in hexadecimal notation. If the string starts with neither, the full string shall be a passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. The passphrase can contain any printable characters except for the double quotation mark.",
+ "pattern": "(^[A-Za-z0-9]+$)|(^\\*+$)",
+ "readonly": false,
+ "type": [
+ "string",
+ "null"
+ ],
+ "versionAdded": "v1_1_0",
+ "writeOnly ": true
+ },
+ "EncryptionKeySet": {
+ "description": "Indicates if the EncryptionKey property is set.",
+ "longDescription": "This property shall contain `true` if a valid value was provided for the EncryptionKey property. Otherwise, the property shall contain `false`.",
+ "readonly": true,
+ "type": "boolean",
+ "versionAdded": "v1_1_0"
+ },
+ "EncryptionProtocol": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/SNMPEncryptionProtocols"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The encryption protocol for SNMPv3.",
+ "longDescription": "This property shall contain the SNMPv3 encryption protocol.",
+ "readonly": false,
+ "versionAdded": "v1_1_0"
+ },
+ "TrapCommunity": {
+ "description": "The SNMP trap community string.",
+ "longDescription": "This property shall contain the SNMP trap community string. The value shall be `null` in responses. Services may provide a common trap community if not specified by the client when creating the aggregation source.",
+ "readonly": false,
+ "type": [
+ "string",
+ "null"
+ ],
+ "versionAdded": "v1_2_0",
+ "writeOnly ": true
+ }
+ },
+ "type": "object"
+ },
+ "SSHKeyType": {
+ "enum": [
+ "RSA",
+ "DSA",
+ "ECDSA",
+ "Ed25519"
+ ],
+ "enumDescriptions": {
+ "DSA": "DSA.",
+ "ECDSA": "ECDSA.",
+ "Ed25519": "Ed25519.",
+ "RSA": "RSA."
+ },
+ "enumLongDescriptions": {
+ "DSA": "This value shall indicate an RFC4253-defined 'ssh-dss' key type.",
+ "ECDSA": "This value shall indicate an RFC5656-defined ECDSA key type.",
+ "Ed25519": "This value shall indicate an RFC8709-defined 'ssh-ed25519' key type.",
+ "RSA": "This value shall indicate an RFC4253-defined 'ssh-rsa' key type."
+ },
+ "type": "string"
+ },
+ "SSHSettingsType": {
+ "additionalProperties": false,
+ "description": "Settings for an aggregation source using SSH as part of the associated connection method.",
+ "longDescription": "This type shall contain the settings for an aggregation source using SSH as part of the associated connection method.",
+ "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.",
+ "type": [
+ "array",
+ "boolean",
+ "integer",
+ "number",
+ "null",
+ "object",
+ "string"
+ ]
+ }
+ },
+ "properties": {
+ "PresentedPublicHostKey": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Key.json#/definitions/Key",
+ "description": "A link to the last public host key presented by the remote service corresponding to the aggregation source. A client that trusts this public host key can add the public host key to the TrustedPublicHostKeys collection to allow SSH communication with the aggregation source.",
+ "longDescription": "This property shall contain a link to a resource of type Key that represents the last public host key presented by the remote service corresponding to the aggregation source. This property shall not be present if a public host key has not yet been presented by the remote service.",
+ "readonly": true,
+ "versionAdded": "v1_3_0"
+ },
+ "PresentedPublicHostKeyTimestamp": {
+ "description": "The date and time when the key referenced by the PresentedPublicHostKey property was last updated.",
+ "format": "date-time",
+ "longDescription": "This property shall contain the date and time when the key referenced by the PresentedPublicHostKey property was last updated.",
+ "readonly": true,
+ "type": [
+ "string",
+ "null"
+ ],
+ "versionAdded": "v1_3_0"
+ },
+ "PublicIdentityKey": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/Key.json#/definitions/Key",
+ "description": "A link to the public key that is used with the aggregation source when the authentication method is configured to use a public key. The GenerateSSHIdentityKeyPair and RemoveSSHIdentityKeyPair are used to update the key for this aggregation source.",
+ "longDescription": "This property shall contain a link to a resource of type Key that represents the public key that is used with the aggregation source when UserAuthenticationMethod contains `PublicKey`. This property shall not be present if a key-pair is not available. The State property within Status shall contain `Disabled` if a key-pair is not available and UserAuthenticationMethod contains `PublicKey`.",
+ "readonly": true,
+ "versionAdded": "v1_3_0"
+ },
+ "TrustedPublicHostKeys": {
+ "$ref": "http://redfish.dmtf.org/schemas/v1/KeyCollection.json#/definitions/KeyCollection",
+ "description": "A link to the trusted public host keys of the remote service corresponding to the aggregation source. These trusted public host keys are used for authentication of the remote service with SSH. An SSH public host key of the remote service can be added to this collection to allow for public key-based SSH authentication.",
+ "longDescription": "This property shall contain a link to a resource collection of type KeyCollection that represents the trusted public host keys of the remote service corresponding to the aggregation source. If the associated connection method specifies SSH tunneling, the service shall compare the public host key presented by the remote service with members of this collection to determine if the remote service can be trusted. If the remote service cannot be trusted, the State property within Status shall contain `Disabled` and the service shall not connect to the remote service.",
+ "readonly": true,
+ "versionAdded": "v1_3_0"
+ },
+ "UserAuthenticationMethod": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/UserAuthenticationMethod"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The client user authentication method.",
+ "longDescription": "This property shall contain the client user authentication method.",
+ "readonly": false,
+ "versionAdded": "v1_3_0"
+ }
+ },
+ "type": "object"
+ },
+ "UserAuthenticationMethod": {
+ "enum": [
+ "PublicKey",
+ "Password"
+ ],
+ "enumDescriptions": {
+ "Password": "SSH user authentication with a password.",
+ "PublicKey": "SSH user authentication with a public key."
+ },
+ "enumLongDescriptions": {
+ "Password": "This value shall indicate SSH user authentication with a password specified by the Password property.",
+ "PublicKey": "This value shall indicate SSH user authentication with a public key specified by the PublicIdentityKey property in SSHSettings."
+ },
+ "type": "string"
+ }
+ },
+ "owningEntity": "DMTF",
+ "release": "2022.3",
+ "title": "#AggregationSource.v1_3_1.AggregationSource"
+} \ No newline at end of file
diff --git a/static/redfish/v1/schema/AggregationSource_v1.xml b/static/redfish/v1/schema/AggregationSource_v1.xml
new file mode 100644
index 0000000000..f4f93abc8c
--- /dev/null
+++ b/static/redfish/v1/schema/AggregationSource_v1.xml
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!---->
+<!--################################################################################ -->
+<!--# Redfish Schema: AggregationSource v1.3.1 -->
+<!--# -->
+<!--# For a detailed change log, see the README file contained in the DSP8010 bundle, -->
+<!--# available at http://www.dmtf.org/standards/redfish -->
+<!--# Copyright 2014-2022 DMTF. -->
+<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
+<!--################################################################################ -->
+<!---->
+<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
+
+ <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
+ <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Capabilities.V1.xml">
+ <edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
+ <edmx:Include Namespace="Resource"/>
+ <edmx:Include Namespace="Resource.v1_0_0"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
+ <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
+ <edmx:Include Namespace="Validation.v1_0_0" Alias="Validation"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/ConnectionMethod_v1.xml">
+ <edmx:Include Namespace="ConnectionMethod"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/KeyCollection_v1.xml">
+ <edmx:Include Namespace="KeyCollection"/>
+ </edmx:Reference>
+ <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Key_v1.xml">
+ <edmx:Include Namespace="Key"/>
+ </edmx:Reference>
+
+ <edmx:DataServices>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+
+ <EntityType Name="AggregationSource" BaseType="Resource.v1_0_0.Resource" Abstract="true">
+ <Annotation Term="OData.Description" String="The AggregationSource schema is used to represent the source of information for a subset of the resources provided by a Redfish service. It can be thought of as a provider of information. As such, most such interfaces have requirements to support the gathering of information like address and account used to access the information."/>
+ <Annotation Term="OData.LongDescription" String="This resource shall represent an aggregation source for a Redfish implementation."/>
+ <Annotation Term="Capabilities.InsertRestrictions">
+ <Record>
+ <PropertyValue Property="Insertable" Bool="false"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Capabilities.UpdateRestrictions">
+ <Record>
+ <PropertyValue Property="Updatable" Bool="true"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Capabilities.DeleteRestrictions">
+ <Record>
+ <PropertyValue Property="Deletable" Bool="true"/>
+ </Record>
+ </Annotation>
+ <Annotation Term="Redfish.Uris">
+ <Collection>
+ <String>/redfish/v1/AggregationService/AggregationSources/{AggregationSourceId}</String>
+ </Collection>
+ </Annotation>
+ </EntityType>
+
+ <Action Name="GenerateSSHIdentityKeyPair" IsBound="true">
+ <Annotation Term="OData.Description" String="This action generates a new SSH identity key-pair to be used with this aggregation source. The generated public key is stored in the Key resource referenced by the PublicIdentityKey property in SSHSettings. Any existing key-pair is deleted and replace by the new key-pair."/>
+ <Annotation Term="OData.LongDescription" String="This action shall generate a new SSH identity key-pair to be used with this aggregation source. The service shall store the generated public key in the Key resource referenced by the PublicIdentityKey property in SSHSettings. If the aggregation source already has an associated SSH identity key-pair, the service shall delete the key-pair and replace it with the new key-pair."/>
+ <Parameter Name="AggregationSource" Type="AggregationSource.v1_0_0.Actions"/>
+ <Parameter Name="KeyType" Type="AggregationSource.v1_3_0.SSHKeyType" Nullable="false">
+ <Annotation Term="OData.Description" String="The type of SSH key."/>
+ <Annotation Term="OData.LongDescription" String="This parameter shall contain the type of SSH key."/>
+ </Parameter>
+ <Parameter Name="KeyLength" Type="Edm.Int64">
+ <Annotation Term="OData.Description" String="The length of the SSH key, in bits, if the KeyType parameter contains `RSA`."/>
+ <Annotation Term="OData.LongDescription" String="This parameter shall contain the length of the SSH key, in bits. This parameter shall be required if the KeyType parameter contains `RSA` and rejected for other values."/>
+ </Parameter>
+ <Parameter Name="Curve" Type="AggregationSource.v1_3_0.ECDSACurveType">
+ <Annotation Term="OData.Description" String="The curve to use with the SSH key if the KeyType parameter contains `ECDSA`."/>
+ <Annotation Term="OData.LongDescription" String="This parameter shall contain the curve to use with the SSH key. This parameter shall be required if the KeyType parameter contains `ECDSA` and rejected for other values."/>
+ </Parameter>
+ <Annotation Term="Redfish.Revisions">
+ <Collection>
+ <Record>
+ <PropertyValue Property="Kind" EnumMember="Redfish.RevisionKind/Added"/>
+ <PropertyValue Property="Version" String="v1_3_0"/>
+ </Record>
+ </Collection>
+ </Annotation>
+ </Action>
+
+ <Action Name="RemoveSSHIdentityKeyPair" IsBound="true">
+ <Annotation Term="OData.Description" String="This action removes the SSH identity key-pair used with this aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This action shall remove the private SSH identity key-pair used with this aggregation source."/>
+ <Parameter Name="AggregationSource" Type="AggregationSource.v1_0_0.Actions"/>
+ <Annotation Term="Redfish.Revisions">
+ <Collection>
+ <Record>
+ <PropertyValue Property="Kind" EnumMember="Redfish.RevisionKind/Added"/>
+ <PropertyValue Property="Version" String="v1_3_0"/>
+ </Record>
+ </Collection>
+ </Annotation>
+ </Action>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_0_0">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="Redfish.Release" String="2020.2"/>
+
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.AggregationSource">
+ <Property Name="HostName" Type="Edm.String">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
+ <Annotation Term="OData.Description" String="The URI of the system to be accessed."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the URI of the system to be aggregated. This property shall not be required when the aggregation source is configured to only receive notifications from the aggregated system and the AggregationType property contains the value `NotificationsOnly`."/>
+ <Annotation Term="OData.IsURL"/>
+ </Property>
+ <Property Name="UserName" Type="Edm.String">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
+ <Annotation Term="OData.Description" String="The user name for accessing the aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the user name for accessing the aggregation source."/>
+ </Property>
+ <Property Name="Password" Type="Edm.String">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Write"/>
+ <Annotation Term="OData.Description" String="The password for accessing the aggregation source. The value is `null` in responses."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain a password for accessing the aggregation source. The value shall be `null` in responses."/>
+ </Property>
+ <Property Name="Links" Type="AggregationSource.v1_0_0.Links" Nullable="false">
+ <Annotation Term="OData.Description" String="The links to other resources that are related to this resource."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."/>
+ </Property>
+ <Property Name="Actions" Type="AggregationSource.v1_0_0.Actions" Nullable="false">
+ <Annotation Term="OData.Description" String="The available actions for this resource."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the available actions for this resource."/>
+ </Property>
+ </EntityType>
+
+ <ComplexType Name="Links" BaseType="Resource.Links">
+ <Annotation Term="OData.Description" String="The links to other resources that are related to this resource."/>
+ <Annotation Term="OData.LongDescription" String="This Redfish Specification-described type shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."/>
+ <NavigationProperty Name="ConnectionMethod" Type="ConnectionMethod.ConnectionMethod">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="An array of links to the connection methods used to contact this aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain an array of links to resources of type ConnectionMethod that are used to connect to the aggregation source."/>
+ <Annotation Term="OData.AutoExpandReferences"/>
+ </NavigationProperty>
+ <NavigationProperty Name="ResourcesAccessed" Type="Collection(Resource.Resource)">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="An array links to the resources added to the service through this aggregation source. It is recommended that this be the minimal number of properties needed to find the resources that would be lost when the aggregation source is deleted."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain an array of links to the resources added to the service through the aggregation source. It is recommended that this be the minimal number of properties needed to find the resources that would be lost when the aggregation source is deleted. For example, this could be the pointers to the members of the root level collections or the manager of a BMC."/>
+ <Annotation Term="OData.AutoExpandReferences"/>
+ </NavigationProperty>
+ </ComplexType>
+
+ <ComplexType Name="Actions">
+ <Annotation Term="OData.AdditionalProperties" Bool="false"/>
+ <Annotation Term="OData.Description" String="The available actions for this resource."/>
+ <Annotation Term="OData.LongDescription" String="This type shall contain the available actions for this resource."/>
+ <Property Name="Oem" Type="AggregationSource.v1_0_0.OemActions" Nullable="false">
+ <Annotation Term="OData.Description" String="The available OEM-specific actions for this resource."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the available OEM-specific actions for this resource."/>
+ </Property>
+ </ComplexType>
+
+ <ComplexType Name="OemActions">
+ <Annotation Term="OData.AdditionalProperties" Bool="true"/>
+ <Annotation Term="OData.Description" String="The available OEM-specific actions for this resource."/>
+ <Annotation Term="OData.LongDescription" String="This type shall contain the available OEM-specific actions for this resource."/>
+ </ComplexType>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_0_1">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="OData.Description" String="This version was created to mark properties with values containing sensitive data as write-only."/>
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.v1_0_0.AggregationSource"/>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_1_0">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="Redfish.Release" String="2020.4"/>
+ <Annotation Term="OData.Description" String="This version was created to add SNMP settings to the AggregationSource."/>
+
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.v1_0_0.AggregationSource">
+ <Property Name="SNMP" Type="AggregationSource.v1_1_0.SNMPSettings">
+ <Annotation Term="OData.Description" String="SNMP settings of the aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the SNMP settings of the aggregation source."/>
+ </Property>
+ </EntityType>
+
+ <ComplexType Name="SNMPSettings">
+ <Annotation Term="OData.AdditionalProperties" Bool="false"/>
+ <Annotation Term="OData.Description" String="Settings for an SNMP aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This type shall contain the settings for an SNMP aggregation source."/>
+ <Property Name="AuthenticationKey" Type="Edm.String">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Write"/>
+ <Annotation Term="OData.Description" String="The secret authentication key for SNMPv3."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the key for SNMPv3 authentication. The value shall be `null` in responses. This property accepts a passphrase or a hex-encoded key. If the string starts with `Passphrase:`, the remainder of the string shall be the passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. If the string starts with `Hex:`, then the remainder of the string shall be the key encoded in hexadecimal notation. If the string starts with neither, the full string shall be a passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. The passphrase can contain any printable characters except for the double quotation mark."/>
+ <Annotation Term="Validation.Pattern" String="(^[ !#-~]+$)|(^Passphrase:[ ^[ !#-~]+$)|(^Hex:[0-9A-Fa-f]{24,96})|(^\*+$)"/>
+ </Property>
+ <Property Name="AuthenticationProtocol" Type="AggregationSource.v1_1_0.SNMPAuthenticationProtocols">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
+ <Annotation Term="OData.Description" String="The authentication protocol for SNMPv3."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the SNMPv3 authentication protocol."/>
+ </Property>
+ <Property Name="EncryptionKey" Type="Edm.String">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Write"/>
+ <Annotation Term="OData.Description" String="The secret authentication key for SNMPv3."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the key for SNMPv3 encryption. The value shall be `null` in responses. This property accepts a passphrase or a hex-encoded key. If the string starts with `Passphrase:`, the remainder of the string shall be the passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. If the string starts with `Hex:`, then the remainder of the string shall be the key encoded in hexadecimal notation. If the string starts with neither, the full string shall be a passphrase and shall be converted to the key as described in the 'Password to Key Algorithm' section of RFC3414. The passphrase can contain any printable characters except for the double quotation mark."/>
+ <Annotation Term="Validation.Pattern" String="(^[A-Za-z0-9]+$)|(^\*+$)"/>
+ </Property>
+ <Property Name="EncryptionProtocol" Type="AggregationSource.v1_1_0.SNMPEncryptionProtocols">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
+ <Annotation Term="OData.Description" String="The encryption protocol for SNMPv3."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the SNMPv3 encryption protocol."/>
+ </Property>
+ <Property Name="AuthenticationKeySet" Type="Edm.Boolean" Nullable="false">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="Indicates if the AuthenticationKey property is set."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain `true` if a valid value was provided for the AuthenticationKey property. Otherwise, the property shall contain `false`."/>
+ </Property>
+ <Property Name="EncryptionKeySet" Type="Edm.Boolean" Nullable="false">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="Indicates if the EncryptionKey property is set."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain `true` if a valid value was provided for the EncryptionKey property. Otherwise, the property shall contain `false`."/>
+ </Property>
+ </ComplexType>
+
+ <EnumType Name="SNMPAuthenticationProtocols">
+ <Member Name="None">
+ <Annotation Term="OData.Description" String="No authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication is not required."/>
+ </Member>
+ <Member Name="CommunityString">
+ <Annotation Term="OData.Description" String="Trap community string authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication using SNMP community strings and the value of TrapCommunity."/>
+ </Member>
+ <Member Name="HMAC_MD5">
+ <Annotation Term="OData.Description" String="HMAC-MD5-96 authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication conforms to the RFC3414-defined HMAC-MD5-96 authentication protocol."/>
+ </Member>
+ <Member Name="HMAC_SHA96">
+ <Annotation Term="OData.Description" String="HMAC-SHA-96 authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication conforms to the RFC3414-defined HMAC-SHA-96 authentication protocol."/>
+ </Member>
+ <Member Name="HMAC128_SHA224">
+ <Annotation Term="OData.Description" String="HMAC-128-SHA-224 authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC128SHA224AuthProtocol."/>
+ </Member>
+ <Member Name="HMAC192_SHA256">
+ <Annotation Term="OData.Description" String="HMAC-192-SHA-256 authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC192SHA256AuthProtocol."/>
+ </Member>
+ <Member Name="HMAC256_SHA384">
+ <Annotation Term="OData.Description" String="HMAC-256-SHA-384 authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC256SHA384AuthProtocol."/>
+ </Member>
+ <Member Name="HMAC384_SHA512">
+ <Annotation Term="OData.Description" String="HMAC-384-SHA-512 authentication."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate authentication for SNMPv3 access conforms to the RFC7860-defined usmHMAC384SHA512AuthProtocol."/>
+ </Member>
+ </EnumType>
+
+ <EnumType Name="SNMPEncryptionProtocols">
+ <Member Name="None">
+ <Annotation Term="OData.Description" String="No encryption."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate there is no encryption."/>
+ </Member>
+ <Member Name="CBC_DES">
+ <Annotation Term="OData.Description" String="CBC-DES encryption."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate encryption conforms to the RFC3414-defined CBC-DES encryption protocol."/>
+ </Member>
+ <Member Name="CFB128_AES128">
+ <Annotation Term="OData.Description" String="CFB128-AES-128 encryption."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate encryption conforms to the RFC3414-defined CFB128-AES-128 encryption protocol."/>
+ </Member>
+ </EnumType>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_1_1">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="OData.Description" String="This version was created to mark properties with values containing sensitive data as write-only."/>
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.v1_1_0.AggregationSource"/>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_2_0">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="Redfish.Release" String="2021.3"/>
+
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.v1_1_0.AggregationSource">
+ <Property Name="AggregationType" Type="AggregationSource.v1_2_0.AggregationType" Nullable="false">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
+ <Annotation Term="OData.Description" String="The type of aggregation used towards the aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the type of aggregation used for the connection method towards the aggregation source. If this property is not present, the value shall be assumed to be `Full`."/>
+ </Property>
+ </EntityType>
+
+ <EnumType Name="AggregationType">
+ <Member Name="NotificationsOnly">
+ <Annotation Term="OData.Description" String="Only notifications are aggregated."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate that the aggregator is only aggregating notifications or events from the aggregation source according to the connection method used. This value shall not be used with connection methods that do not include notifications."/>
+ </Member>
+ <Member Name="Full">
+ <Annotation Term="OData.Description" String="Full aggregation according to connection method."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate that the aggregator is performing full aggregation according to the connection method without any limitation such as only receiving notifications."/>
+ </Member>
+ </EnumType>
+
+ <ComplexType Name="SNMPSettings" BaseType="AggregationSource.v1_1_0.SNMPSettings">
+ <Property Name="TrapCommunity" Type="Edm.String">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Write"/>
+ <Annotation Term="OData.Description" String="The SNMP trap community string."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the SNMP trap community string. The value shall be `null` in responses. Services may provide a common trap community if not specified by the client when creating the aggregation source."/>
+ </Property>
+ </ComplexType>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_2_1">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="OData.Description" String="This version was created to mark properties with values containing sensitive data as write-only."/>
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.v1_2_0.AggregationSource"/>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_3_0">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="Redfish.Release" String="2022.3"/>
+
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.v1_2_0.AggregationSource">
+ <Property Name="SSHSettings" Type="AggregationSource.v1_3_0.SSHSettingsType">
+ <Annotation Term="OData.Description" String="Settings for an aggregation source using SSH as part of the associated connection method."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the settings for an aggregation source using SSH as part of the associated connection method."/>
+ </Property>
+ <Property Name="Status" Type="Resource.Status" Nullable="false">
+ <Annotation Term="OData.Description" String="The status and health of the resource and its subordinate or dependent resources."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain any status or health properties of the resource."/>
+ </Property>
+ </EntityType>
+
+ <ComplexType Name="SSHSettingsType">
+ <Annotation Term="OData.AdditionalProperties" Bool="false"/>
+ <Annotation Term="OData.Description" String="Settings for an aggregation source using SSH as part of the associated connection method."/>
+ <Annotation Term="OData.LongDescription" String="This type shall contain the settings for an aggregation source using SSH as part of the associated connection method."/>
+ <Property Name="UserAuthenticationMethod" Type="AggregationSource.v1_3_0.UserAuthenticationMethod">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
+ <Annotation Term="OData.Description" String="The client user authentication method."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the client user authentication method."/>
+ </Property>
+ <Property Name="PresentedPublicHostKeyTimestamp" Type="Edm.DateTimeOffset">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="The date and time when the key referenced by the PresentedPublicHostKey property was last updated."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain the date and time when the key referenced by the PresentedPublicHostKey property was last updated."/>
+ </Property>
+ <NavigationProperty Name="TrustedPublicHostKeys" Type="KeyCollection.KeyCollection" ContainsTarget="true" Nullable="false">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="A link to the trusted public host keys of the remote service corresponding to the aggregation source. These trusted public host keys are used for authentication of the remote service with SSH. An SSH public host key of the remote service can be added to this collection to allow for public key-based SSH authentication."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain a link to a resource collection of type KeyCollection that represents the trusted public host keys of the remote service corresponding to the aggregation source. If the associated connection method specifies SSH tunneling, the service shall compare the public host key presented by the remote service with members of this collection to determine if the remote service can be trusted. If the remote service cannot be trusted, the State property within Status shall contain `Disabled` and the service shall not connect to the remote service."/>
+ </NavigationProperty>
+ <NavigationProperty Name="PresentedPublicHostKey" Type="Key.Key" ContainsTarget="true" Nullable="false">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="A link to the last public host key presented by the remote service corresponding to the aggregation source. A client that trusts this public host key can add the public host key to the TrustedPublicHostKeys collection to allow SSH communication with the aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain a link to a resource of type Key that represents the last public host key presented by the remote service corresponding to the aggregation source. This property shall not be present if a public host key has not yet been presented by the remote service."/>
+ </NavigationProperty>
+ <NavigationProperty Name="PublicIdentityKey" Type="Key.Key" ContainsTarget="true" Nullable="false">
+ <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
+ <Annotation Term="OData.Description" String="A link to the public key that is used with the aggregation source when the authentication method is configured to use a public key. The GenerateSSHIdentityKeyPair and RemoveSSHIdentityKeyPair are used to update the key for this aggregation source."/>
+ <Annotation Term="OData.LongDescription" String="This property shall contain a link to a resource of type Key that represents the public key that is used with the aggregation source when UserAuthenticationMethod contains `PublicKey`. This property shall not be present if a key-pair is not available. The State property within Status shall contain `Disabled` if a key-pair is not available and UserAuthenticationMethod contains `PublicKey`."/>
+ </NavigationProperty>
+ </ComplexType>
+
+ <EnumType Name="UserAuthenticationMethod">
+ <Member Name="PublicKey">
+ <Annotation Term="OData.Description" String="SSH user authentication with a public key."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate SSH user authentication with a public key specified by the PublicIdentityKey property in SSHSettings."/>
+ </Member>
+ <Member Name="Password">
+ <Annotation Term="OData.Description" String="SSH user authentication with a password."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate SSH user authentication with a password specified by the Password property."/>
+ </Member>
+ </EnumType>
+
+ <EnumType Name="SSHKeyType">
+ <Member Name="RSA">
+ <Annotation Term="OData.Description" String="RSA."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC4253-defined 'ssh-rsa' key type."/>
+ </Member>
+ <Member Name="DSA">
+ <Annotation Term="OData.Description" String="DSA."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC4253-defined 'ssh-dss' key type."/>
+ </Member>
+ <Member Name="ECDSA">
+ <Annotation Term="OData.Description" String="ECDSA."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC5656-defined ECDSA key type."/>
+ </Member>
+ <Member Name="Ed25519">
+ <Annotation Term="OData.Description" String="Ed25519."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate an RFC8709-defined 'ssh-ed25519' key type."/>
+ </Member>
+ </EnumType>
+
+ <EnumType Name="ECDSACurveType">
+ <Member Name="NISTP256">
+ <Annotation Term="OData.Description" String="NIST P-256."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp256' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTP384">
+ <Annotation Term="OData.Description" String="NIST P-384."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp384' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTP521">
+ <Annotation Term="OData.Description" String="NIST P-521."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp521' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTK163">
+ <Annotation Term="OData.Description" String="NIST K-163."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk163' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTP192">
+ <Annotation Term="OData.Description" String="NIST P-192."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp192' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTP224">
+ <Annotation Term="OData.Description" String="NIST P-224."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistp224' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTK233">
+ <Annotation Term="OData.Description" String="NIST K-233."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk233' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTB233">
+ <Annotation Term="OData.Description" String="NIST B-233."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistb233' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTK283">
+ <Annotation Term="OData.Description" String="NIST K-283."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk283' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTK409">
+ <Annotation Term="OData.Description" String="NIST K-409."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistk409' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTB409">
+ <Annotation Term="OData.Description" String="NIST B-409."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistb409' curve in RFC5656."/>
+ </Member>
+ <Member Name="NISTT571">
+ <Annotation Term="OData.Description" String="NIST T-571."/>
+ <Annotation Term="OData.LongDescription" String="This value shall indicate the 'nistt571' curve in RFC5656."/>
+ </Member>
+ </EnumType>
+ </Schema>
+
+ <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="AggregationSource.v1_3_1">
+ <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
+ <Annotation Term="OData.Description" String="This version was created to mark properties with values containing sensitive data as write-only."/>
+ <EntityType Name="AggregationSource" BaseType="AggregationSource.v1_3_0.AggregationSource"/>
+ </Schema>
+
+ </edmx:DataServices>
+</edmx:Edmx>