Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/core/cm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ set(HEADERS config.hpp)

set(INSTALL_HEADERS
aos_core_cm_communication
aos_core_cm_iamclient
aos_core_cm_fileserver
aos_core_cm_iamclient
aos_core_cm_imagemanager
aos_core_cm_launcher
aos_core_cm_networkmanager
Expand All @@ -29,7 +29,7 @@ set(INSTALL_HEADERS
aos_core_cm_storagestate
)

set(INSTALL_LIBRARIES)
set(INSTALL_LIBRARIES aos_core_cm_imagemanager aos_core_cm_storagestate)

if(WITH_TEST)
list(APPEND INSTALL_HEADERS aos_core_cm_tests_mocks)
Expand All @@ -53,8 +53,8 @@ set(TARGET_PREFIX ${TARGET_PREFIX}_cm)
# ######################################################################################################################

add_subdirectory(communication)
add_subdirectory(iamclient)
add_subdirectory(fileserver)
add_subdirectory(iamclient)
add_subdirectory(imagemanager)
add_subdirectory(launcher)
add_subdirectory(networkmanager)
Expand Down
2 changes: 1 addition & 1 deletion src/core/cm/iamclient/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ set(TARGET_NAME iamclient)
# Headers
# ######################################################################################################################

set(HEADERS itf/nodeinfoprovider.hpp)
set(HEADERS itf/iamclient.hpp)

# ######################################################################################################################
# Target
Expand Down
45 changes: 45 additions & 0 deletions src/core/cm/iamclient/iamclient.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# IAM client

Provides access to IAM services.

It implements the following interfaces:

* [aos::iamclient::CertHandlerItf](../../common/iamclient/itf/certhandler.hpp) -
handles keys and certificates (renew, provisioning);
* [aos::iamclient::CertProviderItf](../../common/iamclient/itf/certprovider.hpp) -
provides info about current keys and certificates;
* [aos::iamclient::NodeHandlerItf](../../common/iamclient/itf/nodehandler.hpp) - handles nodes states (pause, resume);
* [aos::iamclient::NodeInfoProviderItf](../../common/iamclient/itf/nodeinfoprovider.hpp) - provides nodes info;
* [aos::iamclient::ProvisioningItf](../../common/iamclient/itf/provisioning.hpp) - performs node provisioning.

```mermaid
classDiagram
class IAMClient ["aos::cm::iamclient::IAMClient"] {
}

class CertHandlerItf ["aos::iamclient::CertHandlerItf"] {
<<interface>>
}

class CertProviderItf ["aos::iamclient::CertProviderItf"] {
<<interface>>
}

class NodeHandlerItf ["aos::iamclient::NodeHandlerItf"] {
<<interface>>
}

class NodeInfoProviderItf ["aos::iamclient::NodeInfoProviderItf"] {
<<interface>>
}

class ProvisioningItf ["aos::iamclient::ProvisioningItf"] {
<<interface>>
}

IAMClient <|.. CertHandlerItf
IAMClient <|.. CertProviderItf
IAMClient <|.. NodeHandlerItf
IAMClient <|.. NodeInfoProviderItf
IAMClient <|.. ProvisioningItf
```
41 changes: 41 additions & 0 deletions src/core/cm/iamclient/itf/iamclient.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright (C) 2025 EPAM Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/

#ifndef AOS_CORE_CM_IAMCLIENT_ITF_IAMCLIENT_HPP_
#define AOS_CORE_CM_IAMCLIENT_ITF_IAMCLIENT_HPP_

#include <core/common/iamclient/itf/certhandler.hpp>
#include <core/common/iamclient/itf/certprovider.hpp>
#include <core/common/iamclient/itf/nodehandler.hpp>
#include <core/common/iamclient/itf/nodeinfoprovider.hpp>
#include <core/common/iamclient/itf/provisioning.hpp>

namespace aos::cm::iamclient {

/** @addtogroup cm Communication Manager
* @{
*/

/**
* IAM client interface.
*/
class IAMClientItf : public aos::iamclient::CertHandlerItf,
public aos::iamclient::CertProviderItf,
public aos::iamclient::NodeHandlerItf,
public aos::iamclient::NodeInfoProviderItf,
public aos::iamclient::ProvisioningItf {
public:
/**
* Destructor.
*/
virtual ~IAMClientItf() = default;
};

/** @}*/

} // namespace aos::cm::iamclient

#endif
2 changes: 1 addition & 1 deletion src/core/cm/iamclient/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ set(SOURCES iamclient.cpp)
# Libraries
# ######################################################################################################################

set(LIBRARIES aos::core::cm::iamclient GTest::gmock_main)
set(LIBRARIES GTest::gmock_main)

# ######################################################################################################################
# Target
Expand Down
2 changes: 1 addition & 1 deletion src/core/cm/iamclient/tests/iamclient.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
* SPDX-License-Identifier: Apache-2.0
*/

#include <core/cm/iamclient/itf/nodeinfoprovider.hpp>
#include <core/cm/iamclient/itf/iamclient.hpp>
2 changes: 1 addition & 1 deletion src/core/cm/imagemanager/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ set(SOURCES imagemanager.cpp)
# Headers
# ######################################################################################################################

set(HEADERS itf/imagemanager.hpp itf/imageunpacker.hpp itf/storage.hpp itf/statusnotifier.hpp imagemanager.hpp)
set(HEADERS itf/imagemanager.hpp itf/imageunpacker.hpp itf/storage.hpp itf/imagestatusprovider.hpp imagemanager.hpp)

# ######################################################################################################################
# Libraries
Expand Down
4 changes: 2 additions & 2 deletions src/core/cm/imagemanager/imagemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ Error ImageManager::RevertUpdateItems(const Array<StaticString<cIDLen>>& ids, Ar
return ErrorEnum::eNone;
}

Error ImageManager::SubscribeListener(StatusListenerItf& listener)
Error ImageManager::SubscribeListener(ImageStatusListenerItf& listener)
{
LockGuard lock {mMutex};

Expand All @@ -245,7 +245,7 @@ Error ImageManager::SubscribeListener(StatusListenerItf& listener)
return AOS_ERROR_WRAP(mListeners.PushBack(&listener));
}

Error ImageManager::UnsubscribeListener(StatusListenerItf& listener)
Error ImageManager::UnsubscribeListener(ImageStatusListenerItf& listener)
{
LockGuard lock {mMutex};

Expand Down
10 changes: 5 additions & 5 deletions src/core/cm/imagemanager/imagemanager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

#include "config.hpp"
#include "itf/imagemanager.hpp"
#include "itf/imagestatusprovider.hpp"
#include "itf/imageunpacker.hpp"
#include "itf/statusnotifier.hpp"
#include "itf/storage.hpp"

namespace aos::cm::imagemanager {
Expand All @@ -33,7 +33,7 @@ namespace aos::cm::imagemanager {
* Image manager.
*/
class ImageManager : public ImageManagerItf,
public StatusNotifierItf,
public ImageStatusProviderItf,
public smcontroller::UpdateImageProviderItf,
public launcher::ImageInfoProviderItf,
public spaceallocator::ItemRemoverItf {
Expand Down Expand Up @@ -113,15 +113,15 @@ class ImageManager : public ImageManagerItf,
* @param listener status listener.
* @return Error.
*/
Error SubscribeListener(StatusListenerItf& listener) override;
Error SubscribeListener(ImageStatusListenerItf& listener) override;

/**
* Unsubscribes from status notifications.
*
* @param listener status listener.
* @return Error.
*/
Error UnsubscribeListener(StatusListenerItf& listener) override;
Error UnsubscribeListener(ImageStatusListenerItf& listener) override;

/**
* Returns update image info for desired platform.
Expand Down Expand Up @@ -237,7 +237,7 @@ class ImageManager : public ImageManagerItf,
fs::FileInfoProviderItf* mFileInfoProvider {};
oci::OCISpecItf* mOCISpec {};

StaticArray<StatusListenerItf*, cMaxNumListeners> mListeners;
StaticArray<ImageStatusListenerItf*, cMaxNumListeners> mListeners;

Timer mTimer;
Config mConfig {};
Expand Down
20 changes: 11 additions & 9 deletions src/core/cm/imagemanager/imagemanager.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,28 @@ Image manager stores update item images and provide update item image info for o

It implements the following interfaces:

* [aos::cm::imagemanager::ImageMangerItf]() - image manager to manage update items images;
* [aos::cm::imagemanager::StatusNotifierItf]() - update item status notifier to notify other modules about update items
statuses;
* [aos::cm::launcher::ImageInfoProviderItf]() - update item provider for [launcher]() module;
* [aos::cm::smcontroller::UpdateImageProviderItf]() - update image provider for [smcontroller]() module.
* [aos::cm::imagemanager::ImageMangerItf](itf/imagemanager.hpp) - image manager to manage update items images;
* [aos::cm::imagemanager::ImageStatusProviderItf](itf/imagestatusprovider.hpp) -
update image status provider to provide update images statuses;
* [aos::cm::launcher::ImageInfoProviderItf](../launcher/itf/imageinfoprovider.hpp) - update item provider for
[launcher](../launcher/launcher.md) module;
* [aos::cm::smcontroller::UpdateImageProviderItf](../smcontroller/itf/updateimageprovider.hpp) -
update image provider for [smcontroller](../smcontroller/smcontroller.md) module.

It requires the following interfaces:

* TODO: add required interfaces.

```mermaid
classDiagram
class ImageManager["aos::cm::imagemanager::ImageManager"] {
class ImageManager ["aos::cm::imagemanager::ImageManager"] {
}

class ImageManagerItf["aos::cm::imagemanager::ImageMangerItf"] {
class ImageManagerItf ["aos::cm::imagemanager::ImageMangerItf"] {
<<interface>>
}

class StatusNotifierItf ["aos::cm::imagemanager::StatusNotifierItf"] {
class ImageStatusProviderItf ["aos::cm::imagemanager::ImageStatusProviderItf"] {
<<interface>>
}

Expand All @@ -36,7 +38,7 @@ classDiagram
}

ImageManager <|.. ImageManagerItf
ImageManager <|.. StatusNotifierItf
ImageManager <|.. ImageStatusProviderItf
ImageManager <|.. ImageInfoProviderItf
ImageManager <|.. UpdateImageProviderItf
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,22 @@
* SPDX-License-Identifier: Apache-2.0
*/

#ifndef AOS_CORE_CM_IMAGEMANAGER_ITF_STATUSLISTENER_HPP_
#define AOS_CORE_CM_IMAGEMANAGER_ITF_STATUSLISTENER_HPP_
#ifndef AOS_CORE_CM_IMAGEMANAGER_ITF_IMAGESTATUSPROVIDER_HPP_
#define AOS_CORE_CM_IMAGEMANAGER_ITF_IMAGESTATUSPROVIDER_HPP_

#include <core/common/types/common.hpp>

namespace aos::cm::imagemanager {

/**
* Interface for receiving notification about update items statuses.
* Interface for receiving notification about update image statuses.
*/
class StatusListenerItf {
class ImageStatusListenerItf {
public:
/**
* Destructor.
*/
virtual ~StatusListenerItf() = default;
virtual ~ImageStatusListenerItf() = default;

/**
* Notifies about image status change.
Expand All @@ -38,30 +38,30 @@ class StatusListenerItf {
};

/**
* Interface for notifying about update item statuses.
* Interface to provide update image statuses.
*/
class StatusNotifierItf {
class ImageStatusProviderItf {
public:
/**
* Destructor.
*/
virtual ~StatusNotifierItf() = default;
virtual ~ImageStatusProviderItf() = default;

/**
* Subscribes status notifications.
*
* @param listener status listener.
* @return Error.
*/
virtual Error SubscribeListener(StatusListenerItf& listener) = 0;
virtual Error SubscribeListener(ImageStatusListenerItf& listener) = 0;

/**
* Unsubscribes from status notifications.
*
* @param listener status listener.
* @return Error.
*/
virtual Error UnsubscribeListener(StatusListenerItf& listener) = 0;
virtual Error UnsubscribeListener(ImageStatusListenerItf& listener) = 0;
};

} // namespace aos::cm::imagemanager
Expand Down
4 changes: 2 additions & 2 deletions src/core/cm/imagemanager/tests/mocks/statusnotifier.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@

#include <gmock/gmock.h>

#include <core/cm/imagemanager/itf/statusnotifier.hpp>
#include <core/cm/imagemanager/itf/imagestatusprovider.hpp>

namespace aos::cm::imagemanager {

class MockStatusListener : public StatusListenerItf {
class MockStatusListener : public ImageStatusListenerItf {
public:
MOCK_METHOD(void, OnImageStatusChanged, (const String& id, const ImageStatus& status), (override));
MOCK_METHOD(void, OnUpdateItemRemoved, (const String& id), (override));
Expand Down
2 changes: 2 additions & 0 deletions src/core/cm/launcher/itf/statusnotifier.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
#ifndef AOS_CORE_CM_LAUNCHER_ITF_STATUSLISTENER_HPP_
#define AOS_CORE_CM_LAUNCHER_ITF_STATUSLISTENER_HPP_

#include <core/common/types/instance.hpp>

namespace aos::cm::launcher {

/** @addtogroup cm Communication Manager
Expand Down
13 changes: 10 additions & 3 deletions src/core/common/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -604,10 +604,10 @@
#endif

/**
* Certificate secret size.
* Secret len.
*/
#ifndef AOS_CONFIG_TYPES_CERT_SECRET_SIZE
#define AOS_CONFIG_TYPES_CERT_SECRET_SIZE 64
#ifndef AOS_CONFIG_TYPES_SECRET_LEN
#define AOS_CONFIG_TYPES_SECRET_LEN 64
#endif

/**
Expand Down Expand Up @@ -638,6 +638,13 @@
#define AOS_CONFIG_TYPES_MONITORING_ITEMS_COUNT 16
#endif

/**
* Max length of certificate type.
*/
#ifndef AOS_CONFIG_TYPES_CERT_TYPE_NAME_LEN
#define AOS_CONFIG_TYPES_CERT_TYPE_NAME_LEN 16
#endif

/**
* Max number of outdated items.
*/
Expand Down
Loading
Loading