Skip to content
8 changes: 4 additions & 4 deletions .github/workflows/build-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ jobs:
repository: ${{github.event.pull_request.head.repo.full_name}}
fetch-depth: 0

- name: Static analysis
run: |
./build.sh lint

- name: Install build wrapper
uses: SonarSource/sonarqube-scan-action/install-build-wrapper@v6

Expand All @@ -56,10 +60,6 @@ jobs:
run: |
./build.sh coverage

- name: Static analysis
run: |
./build.sh lint

- name: Upload codecov report
uses: codecov/codecov-action@v4
with:
Expand Down
33 changes: 22 additions & 11 deletions src/core/cm/imagemanager/imagemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ Error ImageManager::DownloadUpdateItems(const Array<UpdateItemInfo>& itemsInfo,

for (size_t i = 0; i < itemsInfo.Size(); i++) {
statuses[i].mItemID = itemsInfo[i].mItemID;
statuses[i].mType = itemsInfo[i].mType;
statuses[i].mVersion = itemsInfo[i].mVersion;
statuses[i].mState = ItemStateEnum::eDownloading;
statuses[i].mError = ErrorEnum::eNone;
Expand Down Expand Up @@ -213,6 +214,7 @@ Error ImageManager::InstallUpdateItems(const Array<UpdateItemInfo>& itemsInfo, A

for (size_t i = 0; i < itemsInfo.Size(); i++) {
statuses[i].mItemID = itemsInfo[i].mItemID;
statuses[i].mType = itemsInfo[i].mType;
statuses[i].mVersion = itemsInfo[i].mVersion;
statuses[i].mState = ItemStateEnum::eInstalled;
statuses[i].mError = ErrorEnum::eNone;
Expand Down Expand Up @@ -311,6 +313,7 @@ Error ImageManager::GetUpdateItemsStatuses(Array<UpdateItemStatus>& statuses)
UpdateItemStatus status;

status.mItemID = item.mItemID;
status.mType = item.mType;
status.mVersion = item.mVersion;
status.mState = item.mState;
status.mError = ErrorEnum::eNone;
Expand Down Expand Up @@ -635,7 +638,9 @@ Error ImageManager::RemovePendingItems(const Array<ItemInfo>& storedItems, Array
}

UpdateItemStatus status;

status.mItemID = storedItem.mItemID;
status.mType = storedItem.mType;
status.mVersion = storedItem.mVersion;
status.mState = ItemStateEnum::eRemoved;
status.mError = ErrorEnum::eNone;
Expand All @@ -644,7 +649,8 @@ Error ImageManager::RemovePendingItems(const Array<ItemInfo>& storedItems, Array
LOG_ERR() << "Failed to add status to statuses array" << Log::Field(err);
}

NotifyItemStatusChanged(storedItem.mItemID, storedItem.mVersion, ItemStateEnum::eRemoved, ErrorEnum::eNone);
NotifyItemStatusChanged(
storedItem.mItemID, storedItem.mType, storedItem.mVersion, ItemStateEnum::eRemoved, ErrorEnum::eNone);
}

return ErrorEnum::eNone;
Expand Down Expand Up @@ -730,7 +736,8 @@ Error ImageManager::VerifyStoredItems(const Array<UpdateItemInfo>& itemsInfo, Ar
storedItem.mState = ItemStateEnum::eFailed;
}

NotifyItemStatusChanged(storedItem.mItemID, storedItem.mVersion, ItemStateEnum::eFailed, err);
NotifyItemStatusChanged(
storedItem.mItemID, storedItem.mType, storedItem.mVersion, ItemStateEnum::eFailed, err);

if (err == ErrorEnum::eCanceled) {
return err;
Expand Down Expand Up @@ -823,7 +830,8 @@ Error ImageManager::ProcessDownloadRequest(const Array<UpdateItemInfo>& itemsInf
}
}

NotifyItemStatusChanged(itemInfo.mItemID, itemInfo.mVersion, ItemStateEnum::eDownloading, ErrorEnum::eNone);
NotifyItemStatusChanged(
itemInfo.mItemID, itemInfo.mType, itemInfo.mVersion, ItemStateEnum::eDownloading, ErrorEnum::eNone);

auto downloadErr = DownloadItem(itemInfo, certificates, certificateChains);

Expand All @@ -833,7 +841,7 @@ Error ImageManager::ProcessDownloadRequest(const Array<UpdateItemInfo>& itemsInf
LOG_ERR() << "Failed to update item state" << Log::Field(updateErr);
}

NotifyItemStatusChanged(itemInfo.mItemID, itemInfo.mVersion, finalState, downloadErr);
NotifyItemStatusChanged(itemInfo.mItemID, itemInfo.mType, itemInfo.mVersion, finalState, downloadErr);

if (!downloadErr.IsNone()) {
LOG_ERR() << "Failed to download item" << Log::Field("id", itemInfo.mItemID)
Expand Down Expand Up @@ -1409,7 +1417,7 @@ void ImageManager::NotifyItemsStatusesChanged(const Array<UpdateItemStatus>& sta
LockGuard lock {mMutex};

for (const auto& status : statuses) {
LOG_DBG() << "Item status changed" << Log::Field("itemID", status.mItemID)
LOG_DBG() << "Item status changed" << Log::Field("id", status.mItemID) << Log::Field("type", status.mType)
<< Log::Field("version", status.mVersion) << Log::Field("state", ItemState(status.mState))
<< Log::Field("error", status.mError);
}
Expand All @@ -1420,13 +1428,14 @@ void ImageManager::NotifyItemsStatusesChanged(const Array<UpdateItemStatus>& sta
}

void ImageManager::NotifyItemStatusChanged(
const String& itemID, const String& version, ItemStateEnum state, const Error& error)
const String& itemID, const UpdateItemType& type, const String& version, ItemStateEnum state, const Error& error)
{
StaticArray<UpdateItemStatus, 1> status;

status.Resize(1);

status[0].mItemID = itemID;
status[0].mType = type;
status[0].mVersion = version;
status[0].mState = state;
status[0].mError = error;
Expand Down Expand Up @@ -1694,7 +1703,8 @@ Error ImageManager::RemoveDifferentVersions(const Array<UpdateItemInfo>& itemsIn
<< Log::Field("version", storedItem.mVersion) << Log::Field(err);
}

NotifyItemStatusChanged(storedItem.mItemID, storedItem.mVersion, ItemStateEnum::eRemoved, ErrorEnum::eNone);
NotifyItemStatusChanged(
storedItem.mItemID, storedItem.mType, storedItem.mVersion, ItemStateEnum::eRemoved, ErrorEnum::eNone);
}
}

Expand Down Expand Up @@ -1734,7 +1744,7 @@ Error ImageManager::VerifyBlobsIntegrity(
LOG_ERR() << "Failed to remove invalid item" << Log::Field(removeErr);
}

NotifyItemStatusChanged(itemInfo.mItemID, itemInfo.mVersion, ItemStateEnum::eFailed, err);
NotifyItemStatusChanged(itemInfo.mItemID, itemInfo.mType, itemInfo.mVersion, ItemStateEnum::eFailed, err);
}
}

Expand All @@ -1759,8 +1769,8 @@ Error ImageManager::SetItemsToInstalled(const Array<UpdateItemInfo>& itemsInfo,
<< Log::Field("version", storedIt->mVersion) << Log::Field(err);
}

NotifyItemStatusChanged(
storedIt->mItemID, storedIt->mVersion, ItemStateEnum::eInstalled, ErrorEnum::eNone);
NotifyItemStatusChanged(storedIt->mItemID, storedIt->mType, storedIt->mVersion,
ItemStateEnum::eInstalled, ErrorEnum::eNone);
}
}
}
Expand Down Expand Up @@ -1797,7 +1807,8 @@ Error ImageManager::SetItemsToRemoved(const Array<UpdateItemInfo>& itemsInfo, co
<< Log::Field("version", storedItem.mVersion) << Log::Field(err);
}

NotifyItemStatusChanged(storedItem.mItemID, storedItem.mVersion, ItemStateEnum::eRemoved, ErrorEnum::eNone);
NotifyItemStatusChanged(
storedItem.mItemID, storedItem.mType, storedItem.mVersion, ItemStateEnum::eRemoved, ErrorEnum::eNone);
}
}

Expand Down
3 changes: 2 additions & 1 deletion src/core/cm/imagemanager/imagemanager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,8 @@ class ImageManager : public ImageManagerItf, public ItemInfoProviderItf, public
Error VerifyBlobChecksum(const String& digest, const fs::FileInfo& fileInfo);
bool IsBlobUsedByItems(const String& blobDigest, const Array<ItemInfo>& items);
void NotifyItemsStatusesChanged(const Array<UpdateItemStatus>& statuses);
void NotifyItemStatusChanged(const String& itemID, const String& version, ItemStateEnum state, const Error& error);
void NotifyItemStatusChanged(const String& itemID, const UpdateItemType& type, const String& version,
ItemStateEnum state, const Error& error);
void RegisterOutdatedItems(const Array<ItemInfo>& items);
bool StartAction();
void StopAction();
Expand Down
1 change: 1 addition & 0 deletions src/core/cm/imagemanager/itf/storage.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace aos::cm::imagemanager {
*/
struct ItemInfo {
StaticString<cIDLen> mItemID;
UpdateItemType mType;
StaticString<cVersionLen> mVersion;
StaticString<oci::cDigestLen> mIndexDigest;
ItemState mState {};
Expand Down
Loading
Loading