Skip to content

Commit 21de6c0

Browse files
committed
cm: iamclient: add initial IAM client interface
Signed-off-by: Oleksandr Grytsov <[email protected]>
1 parent 85f2729 commit 21de6c0

File tree

6 files changed

+160
-1
lines changed

6 files changed

+160
-1
lines changed

src/core/cm/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ set(HEADERS config.hpp)
1919
set(INSTALL_HEADERS
2020
aos_core_cm_communication
2121
aos_core_cm_fileserver
22+
aos_core_cm_iamclient
2223
aos_core_cm_imagemanager
2324
aos_core_cm_launcher
2425
aos_core_cm_networkmanager
@@ -28,7 +29,7 @@ set(INSTALL_HEADERS
2829
aos_core_cm_storagestate
2930
)
3031

31-
set(INSTALL_LIBRARIES)
32+
set(INSTALL_LIBRARIES aos_core_cm_imagemanager aos_core_cm_storagestate)
3233

3334
if(WITH_TEST)
3435
list(APPEND INSTALL_HEADERS aos_core_cm_tests_mocks)
@@ -53,6 +54,7 @@ set(TARGET_PREFIX ${TARGET_PREFIX}_cm)
5354

5455
add_subdirectory(communication)
5556
add_subdirectory(fileserver)
57+
add_subdirectory(iamclient)
5658
add_subdirectory(imagemanager)
5759
add_subdirectory(launcher)
5860
add_subdirectory(networkmanager)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#
2+
# Copyright (C) 2025 EPAM Systems, Inc.
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
# ######################################################################################################################
8+
# Target name
9+
# ######################################################################################################################
10+
11+
set(TARGET_NAME iamclient)
12+
13+
# ######################################################################################################################
14+
# Headers
15+
# ######################################################################################################################
16+
17+
set(HEADERS itf/iamclient.hpp)
18+
19+
# ######################################################################################################################
20+
# Target
21+
# ######################################################################################################################
22+
23+
add_module(TARGET_NAME ${TARGET_NAME} HEADERS ${HEADERS})
24+
25+
# ######################################################################################################################
26+
# Tests
27+
# ######################################################################################################################
28+
29+
if(WITH_TEST)
30+
add_subdirectory(tests)
31+
endif()

src/core/cm/iamclient/iamclient.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# IAM client
2+
3+
Provides access to IAM services.
4+
5+
It implements the following interfaces:
6+
7+
* [aos::iamclient::CertHandlerItf](../../common/iamclient/itf/certhandler.hpp) -
8+
handles keys and certificates (renew, provisioning);
9+
* [aos::iamclient::CertProviderItf](../../common/iamclient/itf/certprovider.hpp) -
10+
provides info about current keys and certificates;
11+
* [aos::iamclient::NodeHandlerItf](../../common/iamclient/itf/nodehandler.hpp) - handles nodes states (pause, resume);
12+
* [aos::iamclient::NodeInfoProviderItf](../../common/iamclient/itf/nodeinfoprovider.hpp) - provides nodes info;
13+
* [aos::iamclient::ProvisioningItf](../../common/iamclient/itf/provisioning.hpp) - performs node provisioning.
14+
15+
```mermaid
16+
classDiagram
17+
class IAMClient ["aos::cm::iamclient::IAMClient"] {
18+
}
19+
20+
class CertHandlerItf ["aos::iamclient::CertHandlerItf"] {
21+
<<interface>>
22+
}
23+
24+
class CertProviderItf ["aos::iamclient::CertProviderItf"] {
25+
<<interface>>
26+
}
27+
28+
class NodeHandlerItf ["aos::iamclient::NodeHandlerItf"] {
29+
<<interface>>
30+
}
31+
32+
class NodeInfoProviderItf ["aos::iamclient::NodeInfoProviderItf"] {
33+
<<interface>>
34+
}
35+
36+
class ProvisioningItf ["aos::iamclient::ProvisioningItf"] {
37+
<<interface>>
38+
}
39+
40+
IAMClient <|.. CertHandlerItf
41+
IAMClient <|.. CertProviderItf
42+
IAMClient <|.. NodeHandlerItf
43+
IAMClient <|.. NodeInfoProviderItf
44+
IAMClient <|.. ProvisioningItf
45+
```
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Copyright (C) 2025 EPAM Systems, Inc.
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#ifndef AOS_CORE_CM_IAMCLIENT_ITF_IAMCLIENT_HPP_
8+
#define AOS_CORE_CM_IAMCLIENT_ITF_IAMCLIENT_HPP_
9+
10+
#include <core/common/iamclient/itf/certhandler.hpp>
11+
#include <core/common/iamclient/itf/certprovider.hpp>
12+
#include <core/common/iamclient/itf/nodehandler.hpp>
13+
#include <core/common/iamclient/itf/nodeinfoprovider.hpp>
14+
#include <core/common/iamclient/itf/provisioning.hpp>
15+
16+
namespace aos::cm::iamclient {
17+
18+
/** @addtogroup cm Communication Manager
19+
* @{
20+
*/
21+
22+
/**
23+
* IAM client interface.
24+
*/
25+
class IAMClientItf : public aos::iamclient::CertHandlerItf,
26+
public aos::iamclient::CertProviderItf,
27+
public aos::iamclient::NodeHandlerItf,
28+
public aos::iamclient::NodeInfoProviderItf,
29+
public aos::iamclient::ProvisioningItf {
30+
public:
31+
/**
32+
* Destructor.
33+
*/
34+
virtual ~IAMClientItf() = default;
35+
};
36+
37+
/** @}*/
38+
39+
} // namespace aos::cm::iamclient
40+
41+
#endif
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#
2+
# Copyright (C) 2025 EPAM Systems, Inc.
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
set(TARGET_NAME iamclient_test)
8+
9+
# ######################################################################################################################
10+
# Sources
11+
# ######################################################################################################################
12+
13+
set(SOURCES iamclient.cpp)
14+
15+
# ######################################################################################################################
16+
# Libraries
17+
# ######################################################################################################################
18+
19+
set(LIBRARIES GTest::gmock_main)
20+
21+
# ######################################################################################################################
22+
# Target
23+
# ######################################################################################################################
24+
25+
add_test(
26+
TARGET_NAME
27+
${TARGET_NAME}
28+
LOG_MODULE
29+
SOURCES
30+
${SOURCES}
31+
LIBRARIES
32+
${LIBRARIES}
33+
)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* Copyright (C) 2025 EPAM Systems, Inc.
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <core/cm/iamclient/itf/iamclient.hpp>

0 commit comments

Comments
 (0)