This is an automated email from the ASF dual-hosted git repository.

sanpwc pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new 7058acde50 IGNITE-20359 Expose storage profiles as a node attribute 
(#2711)
7058acde50 is described below

commit 7058acde509b58584e04b3ef96f9b055206f8161
Author: Mirza Aliev <[email protected]>
AuthorDate: Mon Oct 23 18:44:22 2023 +0400

    IGNITE-20359 Expose storage profiles as a node attribute (#2711)
---
 .../repl/executor/ItIgnitePicocliCommandsTest.java | 11 ++++-
 .../cluster/management/NodeAttributes.java         | 11 +++--
 .../management/NodeAttributesCollector.java        | 21 +++++++++-
 .../ClusterManagementConfigurationModule.java      |  2 +-
 ...java => StorageProfileConfigurationSchema.java} | 29 ++++++-------
 ...ava => StorageProfilesConfigurationSchema.java} | 27 +++++--------
 .../management/raft/CmgRaftGroupListener.java      | 17 ++++++--
 .../cluster/management/raft/CmgRaftService.java    |  3 +-
 .../raft/commands/ClusterNodeMessage.java          |  5 ++-
 .../management/topology/api/LogicalNode.java       | 47 ++++++++++++++++------
 .../management/BaseItClusterManagementTest.java    | 12 ++++--
 .../internal/cluster/management/MockNode.java      |  6 ++-
 .../distributionzones/DistributionZonesUtil.java   |  2 +-
 .../DistributionZonesTestUtil.java                 |  4 +-
 .../ItMetaStorageMultipleNodesAbstractTest.java    |  6 ++-
 .../metastorage/impl/ItMetaStorageWatchTest.java   |  6 ++-
 .../internal/compute/ItLogicalTopologyTest.java    | 29 ++++++++-----
 .../ItDistributedConfigurationPropertiesTest.java  |  6 ++-
 .../ItDistributedConfigurationStorageTest.java     |  6 ++-
 ...niteDistributionZoneManagerNodeRestartTest.java |  2 +-
 .../rebalance/ItRebalanceDistributedTest.java      |  6 ++-
 .../runner/app/ItIgniteNodeRestartTest.java        |  6 ++-
 .../org/apache/ignite/internal/app/IgniteImpl.java |  6 ++-
 .../internal/systemview/SystemViewManagerTest.java |  2 +-
 24 files changed, 187 insertions(+), 85 deletions(-)

diff --git 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
index 70ab657df8..0549a0d7c8 100644
--- 
a/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
+++ 
b/modules/cli/src/integrationTest/java/org/apache/ignite/internal/cli/core/repl/executor/ItIgnitePicocliCommandsTest.java
@@ -266,7 +266,16 @@ public class ItIgnitePicocliCommandsTest extends 
CliCommandTestInitializedIntegr
         await("For given parsed words: " + givenParsedLine.words()).until(
                 () -> complete(givenParsedLine),
                 containsInAnyOrder(
-                        "rest", "clientConnector", "network", "cluster", 
"deployment", "nodeAttributes", "aimem", "aipersist", "rocksDb"
+                        "rest",
+                        "clientConnector",
+                        "network",
+                        "cluster",
+                        "deployment",
+                        "nodeAttributes",
+                        "aimem",
+                        "aipersist",
+                        "rocksDb",
+                        "storageProfiles"
                 )
         );
     }
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributes.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributes.java
index 6073a4e34a..71e556d2d2 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributes.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributes.java
@@ -24,17 +24,22 @@ import 
org.apache.ignite.internal.cluster.management.topology.api.LogicalNode;
  * Contains local attributes that are collected during node startup and become 
visible
  * to all cluster nodes after the local node is added to the logical topology.
  *
- * @see LogicalNode#attributes()
+ * @see LogicalNode#userAttributes()
  * @see LogicalNode#systemAttributes()
  */
 public interface NodeAttributes {
     /**
-     * Returns configuration defined attributes.
+     * Returns user defined attributes from a node's configuration.
      */
-    Map<String, String> configAttributes();
+    Map<String, String> userAttributes();
 
     /**
      * Returns internal attributes provided by system components.
      */
     Map<String, String> systemAttributes();
+
+    /**
+     * TODO: add java doc https://issues.apache.org/jira/browse/IGNITE-20564
+     */
+    Map<String, String> storageProfiles();
 }
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributesCollector.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributesCollector.java
index e7be60baf9..8cdf0d8647 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributesCollector.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/NodeAttributesCollector.java
@@ -25,6 +25,8 @@ import java.util.stream.Collectors;
 import org.apache.ignite.configuration.NamedListView;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributeView;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfileView;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 
 /**
  * This class is responsible for retrieving local node attributes
@@ -35,8 +37,14 @@ public class NodeAttributesCollector implements 
NodeAttributes {
 
     private final NodeAttributesConfiguration nodeAttributesConfiguration;
 
-    public NodeAttributesCollector(NodeAttributesConfiguration 
nodeAttributesConfiguration) {
+    private final StorageProfilesConfiguration storageProfilesConfiguration;
+
+    public NodeAttributesCollector(
+            NodeAttributesConfiguration nodeAttributesConfiguration,
+            StorageProfilesConfiguration storageProfilesConfiguration
+    ) {
         this.nodeAttributesConfiguration = nodeAttributesConfiguration;
+        this.storageProfilesConfiguration = storageProfilesConfiguration;
     }
 
     /**
@@ -48,13 +56,22 @@ public class NodeAttributesCollector implements 
NodeAttributes {
 
     /** {@inheritDoc} */
     @Override
-    public Map<String, String> configAttributes() {
+    public Map<String, String> userAttributes() {
         NamedListView<NodeAttributeView> attributes = 
nodeAttributesConfiguration.nodeAttributes().value();
 
         return attributes.stream()
                 .collect(Collectors.toUnmodifiableMap(NodeAttributeView::name, 
NodeAttributeView::attribute));
     }
 
+    /** {@inheritDoc} */
+    @Override
+    public Map<String, String> storageProfiles() {
+        NamedListView<StorageProfileView> storageProfiles = 
storageProfilesConfiguration.storageProfiles().value();
+
+        return storageProfiles.stream()
+                
.collect(Collectors.toUnmodifiableMap(StorageProfileView::name, 
StorageProfileView::engine));
+    }
+
     /** {@inheritDoc} */
     @Override
     public Map<String, String> systemAttributes() {
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
index 03abb39af8..a2eb334271 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
@@ -36,6 +36,6 @@ public class ClusterManagementConfigurationModule implements 
ConfigurationModule
 
     @Override
     public Collection<RootKey<?, ?>> rootKeys() {
-        return List.of(ClusterManagementConfiguration.KEY, 
NodeAttributesConfiguration.KEY);
+        return List.of(ClusterManagementConfiguration.KEY, 
NodeAttributesConfiguration.KEY, StorageProfilesConfiguration.KEY);
     }
 }
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/StorageProfileConfigurationSchema.java
similarity index 55%
copy from 
modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
copy to 
modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/StorageProfileConfigurationSchema.java
index 03abb39af8..af01ab2a6b 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/StorageProfileConfigurationSchema.java
@@ -17,25 +17,20 @@
 
 package org.apache.ignite.internal.cluster.management.configuration;
 
-import com.google.auto.service.AutoService;
-import java.util.Collection;
-import java.util.List;
-import org.apache.ignite.configuration.ConfigurationModule;
-import org.apache.ignite.configuration.RootKey;
-import org.apache.ignite.configuration.annotation.ConfigurationType;
+import org.apache.ignite.configuration.annotation.Config;
+import org.apache.ignite.configuration.annotation.InjectedName;
+import org.apache.ignite.configuration.annotation.Value;
 
 /**
- * Configuration module for Cluster Management configs.
+ * TODO: add java doc https://issues.apache.org/jira/browse/IGNITE-20564.
  */
-@AutoService(ConfigurationModule.class)
-public class ClusterManagementConfigurationModule implements 
ConfigurationModule {
-    @Override
-    public ConfigurationType type() {
-        return ConfigurationType.LOCAL;
-    }
+@Config
+public class StorageProfileConfigurationSchema {
+    /** TODO: add java doc https://issues.apache.org/jira/browse/IGNITE-20564. 
*/
+    @InjectedName
+    public String name;
 
-    @Override
-    public Collection<RootKey<?, ?>> rootKeys() {
-        return List.of(ClusterManagementConfiguration.KEY, 
NodeAttributesConfiguration.KEY);
-    }
+    /** TODO: add java doc https://issues.apache.org/jira/browse/IGNITE-20564. 
*/
+    @Value(hasDefault = true)
+    public String engine = "";
 }
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/StorageProfilesConfigurationSchema.java
similarity index 59%
copy from 
modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
copy to 
modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/StorageProfilesConfigurationSchema.java
index 03abb39af8..0dea143ed0 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/ClusterManagementConfigurationModule.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/configuration/StorageProfilesConfigurationSchema.java
@@ -17,25 +17,18 @@
 
 package org.apache.ignite.internal.cluster.management.configuration;
 
-import com.google.auto.service.AutoService;
-import java.util.Collection;
-import java.util.List;
-import org.apache.ignite.configuration.ConfigurationModule;
-import org.apache.ignite.configuration.RootKey;
+import org.apache.ignite.configuration.annotation.ConfigurationRoot;
 import org.apache.ignite.configuration.annotation.ConfigurationType;
+import org.apache.ignite.configuration.annotation.NamedConfigValue;
 
 /**
- * Configuration module for Cluster Management configs.
+ * TODO: add java doc https://issues.apache.org/jira/browse/IGNITE-20564.
  */
-@AutoService(ConfigurationModule.class)
-public class ClusterManagementConfigurationModule implements 
ConfigurationModule {
-    @Override
-    public ConfigurationType type() {
-        return ConfigurationType.LOCAL;
-    }
-
-    @Override
-    public Collection<RootKey<?, ?>> rootKeys() {
-        return List.of(ClusterManagementConfiguration.KEY, 
NodeAttributesConfiguration.KEY);
-    }
+@ConfigurationRoot(rootName = "storageProfiles", type = 
ConfigurationType.LOCAL)
+public class StorageProfilesConfigurationSchema {
+    /**
+     * TODO: add java doc https://issues.apache.org/jira/browse/IGNITE-20564.
+     */
+    @NamedConfigValue
+    public StorageProfileConfigurationSchema storageProfiles;
 }
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftGroupListener.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftGroupListener.java
index 48d8320557..7ee6868cfe 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftGroupListener.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftGroupListener.java
@@ -192,7 +192,12 @@ public class CmgRaftGroupListener implements 
RaftGroupListener {
             }
         }
 
-        LogicalNode logicalNode = new LogicalNode(node, 
command.node().attributes(), command.node().systemAttributes());
+        LogicalNode logicalNode = new LogicalNode(
+                node,
+                command.node().userAttributes(),
+                command.node().systemAttributes(),
+                command.node().storageProfiles()
+        );
 
         return validationManager.validateNode(storage.getClusterState(), 
logicalNode, command.igniteVersion(), command.clusterTag());
     }
@@ -201,7 +206,12 @@ public class CmgRaftGroupListener implements 
RaftGroupListener {
     private Serializable completeValidation(JoinReadyCommand command) {
         ClusterNode node = command.node().asClusterNode();
 
-        LogicalNode logicalNode = new LogicalNode(node, 
command.node().attributes(), command.node().systemAttributes());
+        LogicalNode logicalNode = new LogicalNode(
+                node,
+                command.node().userAttributes(),
+                command.node().systemAttributes(),
+                command.node().storageProfiles()
+        );
 
         if (validationManager.isNodeValidated(logicalNode)) {
             validationManager.completeValidation(logicalNode);
@@ -219,7 +229,8 @@ public class CmgRaftGroupListener implements 
RaftGroupListener {
 
         // Nodes will be removed from a topology, so it is safe to set 
nodeAttributes to the default value
         Set<LogicalNode> logicalNodes = nodes.stream()
-                .map(n -> new LogicalNode(n, Collections.emptyMap(), 
Collections.emptyMap())).collect(Collectors.toSet());
+                .map(n -> new LogicalNode(n, Collections.emptyMap(), 
Collections.emptyMap(), Collections.emptyMap()))
+                .collect(Collectors.toSet());
 
         logicalTopology.removeNodes(logicalNodes);
         validationManager.removeValidatedNodes(logicalNodes);
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftService.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftService.java
index a8dbf2dbbe..7b9a62adc2 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftService.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/CmgRaftService.java
@@ -268,8 +268,9 @@ public class CmgRaftService implements ManuallyCloseable {
                 .name(node.name())
                 .host(node.address().host())
                 .port(node.address().port())
-                .attributes(attributes == null ? null : 
attributes.configAttributes())
+                .userAttributes(attributes == null ? null : 
attributes.userAttributes())
                 .systemAttributes(attributes == null ? null : 
attributes.systemAttributes())
+                .storageProfiles(attributes == null ? null : 
attributes.storageProfiles())
                 .build();
     }
 
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/commands/ClusterNodeMessage.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/commands/ClusterNodeMessage.java
index b999cdd06c..bc257dfde4 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/commands/ClusterNodeMessage.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/raft/commands/ClusterNodeMessage.java
@@ -45,8 +45,11 @@ public interface ClusterNodeMessage extends NetworkMessage, 
Serializable {
     }
 
     @Nullable
-    Map<String, String> attributes();
+    Map<String, String> userAttributes();
 
     @Nullable
     Map<String, String> systemAttributes();
+
+    @Nullable
+    Map<String, String> storageProfiles();
 }
diff --git 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/topology/api/LogicalNode.java
 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/topology/api/LogicalNode.java
index a6953e770e..530e71e5a2 100644
--- 
a/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/topology/api/LogicalNode.java
+++ 
b/modules/cluster-management/src/main/java/org/apache/ignite/internal/cluster/management/topology/api/LogicalNode.java
@@ -36,11 +36,15 @@ public class LogicalNode extends ClusterNodeImpl {
      *         documentation</a>
      */
     @IgniteToStringInclude
-    private final Map<String, String> attributes;
+    private final Map<String, String> userAttributes;
 
     @IgniteToStringInclude
     private final Map<String, String> systemAttributes;
 
+    // TODO: add javadoc https://issues.apache.org/jira/browse/IGNITE-20564
+    @IgniteToStringInclude
+    private final Map<String, String> storageProfiles;
+
     /**
      * Constructor.
      *
@@ -55,32 +59,40 @@ public class LogicalNode extends ClusterNodeImpl {
     ) {
         super(id, name, address);
 
-        this.attributes = Collections.emptyMap();
+        this.userAttributes = Collections.emptyMap();
         this.systemAttributes = Collections.emptyMap();
+        this.storageProfiles = Collections.emptyMap();
     }
 
     /**
      * Constructor.
      *
      * @param clusterNode Represents a node in a cluster.
-     * @param attributes  Node attributes defined in configuration.
+     * @param userAttributes  Node attributes defined in configuration.
      */
-    public LogicalNode(ClusterNode clusterNode, Map<String, String> 
attributes) {
-        this(clusterNode, attributes, Collections.emptyMap());
+    public LogicalNode(ClusterNode clusterNode, Map<String, String> 
userAttributes) {
+        this(clusterNode, userAttributes, Collections.emptyMap(), 
Collections.emptyMap());
     }
 
     /**
      * Constructor.
      *
      * @param clusterNode Represents a node in a cluster.
-     * @param attributes Node attributes defined in configuration.
+     * @param userAttributes Node attributes defined in configuration.
      * @param systemAttributes Internal node attributes provided by system 
components at startup.
+     * @param storageProfiles TODO: add javadoc 
https://issues.apache.org/jira/browse/IGNITE-20564
      */
-    public LogicalNode(ClusterNode clusterNode, Map<String, String> 
attributes, Map<String, String> systemAttributes) {
+    public LogicalNode(
+            ClusterNode clusterNode,
+            Map<String, String> userAttributes,
+            Map<String, String> systemAttributes,
+            Map<String, String> storageProfiles
+    ) {
         super(clusterNode.id(), clusterNode.name(), clusterNode.address(), 
clusterNode.nodeMetadata());
 
-        this.attributes = attributes == null ? Collections.emptyMap() : 
attributes;
+        this.userAttributes = userAttributes == null ? Collections.emptyMap() 
: userAttributes;
         this.systemAttributes = systemAttributes == null ? 
Collections.emptyMap() : systemAttributes;
+        this.storageProfiles = storageProfiles == null ? 
Collections.emptyMap() : storageProfiles;
     }
 
     /**
@@ -89,16 +101,16 @@ public class LogicalNode extends ClusterNodeImpl {
      * @param clusterNode    Represents a node in a cluster.
      */
     public LogicalNode(ClusterNode clusterNode) {
-        this(clusterNode, Collections.emptyMap(), Collections.emptyMap());
+        this(clusterNode, Collections.emptyMap(), Collections.emptyMap(), 
Collections.emptyMap());
     }
 
     /**
-     * Returns node's attributes defined in node's configuration.
+     * Returns node's attributes provided by user using node's configuration.
      *
-     * @return Node's attributes defined in node's configuration.
+     * @return Node's attributes provided by user using node's configuration.
      */
-    public Map<String, String> attributes() {
-        return attributes;
+    public Map<String, String> userAttributes() {
+        return userAttributes;
     }
 
     /**
@@ -110,6 +122,15 @@ public class LogicalNode extends ClusterNodeImpl {
         return systemAttributes;
     }
 
+    /**
+     * TODO: add java doc https://issues.apache.org/jira/browse/IGNITE-20564.
+     *
+     * @return add java doc https://issues.apache.org/jira/browse/IGNITE-20564.
+     */
+    public Map<String, String> storageProfiles() {
+        return storageProfiles;
+    }
+
     /** {@inheritDoc} */
     @Override
     public String toString() {
diff --git 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
index 8a4306ab60..f8d622a4d5 100644
--- 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
+++ 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
@@ -28,6 +28,7 @@ import java.util.stream.IntStream;
 import java.util.stream.Stream;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
@@ -52,7 +53,10 @@ public abstract class BaseItClusterManagementTest extends 
BaseIgniteAbstractTest
     private static RaftConfiguration raftConfiguration;
 
     @InjectConfiguration
-    private static NodeAttributesConfiguration nodeAttributes;
+    private static NodeAttributesConfiguration userNodeAttributes;
+
+    @InjectConfiguration
+    private static StorageProfilesConfiguration storageProfilesConfiguration;
 
     protected static List<MockNode> createNodes(int numNodes, TestInfo 
testInfo, Path workDir) {
         StaticNodeFinder nodeFinder = createNodeFinder(numNodes);
@@ -65,7 +69,8 @@ public abstract class BaseItClusterManagementTest extends 
BaseIgniteAbstractTest
                         workDir.resolve("node" + i),
                         raftConfiguration,
                         cmgConfiguration,
-                        nodeAttributes
+                        userNodeAttributes,
+                        storageProfilesConfiguration
 
                 ))
                 .collect(toList());
@@ -79,7 +84,8 @@ public abstract class BaseItClusterManagementTest extends 
BaseIgniteAbstractTest
                 workDir.resolve("node" + cluster.size()),
                 raftConfiguration,
                 cmgConfiguration,
-                nodeAttributes
+                userNodeAttributes,
+                storageProfilesConfiguration
         );
 
         cluster.add(node);
diff --git 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
index d4967b3444..fb30286d21 100644
--- 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
+++ 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
@@ -29,6 +29,7 @@ import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import 
org.apache.ignite.internal.cluster.management.raft.RocksDbClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
 import org.apache.ignite.internal.cluster.management.topology.api.LogicalNode;
@@ -84,14 +85,15 @@ public class MockNode {
             Path workDir,
             RaftConfiguration raftConfiguration,
             ClusterManagementConfiguration cmgConfiguration,
-            NodeAttributesConfiguration nodeAttributes
+            NodeAttributesConfiguration nodeAttributes,
+            StorageProfilesConfiguration storageProfilesConfiguration
     ) {
         this.testInfo = testInfo;
         this.nodeFinder = nodeFinder;
         this.workDir = workDir;
         this.raftConfiguration = raftConfiguration;
         this.cmgConfiguration = cmgConfiguration;
-        this.nodeAttributes = new NodeAttributesCollector(nodeAttributes);
+        this.nodeAttributes = new NodeAttributesCollector(nodeAttributes, 
storageProfilesConfiguration);
 
         try {
             init(addr.port());
diff --git 
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZonesUtil.java
 
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZonesUtil.java
index 764f44c24a..1ea89d2085 100644
--- 
a/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZonesUtil.java
+++ 
b/modules/distribution-zones/src/main/java/org/apache/ignite/internal/distributionzones/DistributionZonesUtil.java
@@ -381,7 +381,7 @@ public class DistributionZonesUtil {
      */
     public static Update updateLogicalTopologyAndVersion(Set<LogicalNode> 
logicalTopology, long topologyVersion) {
         Set<NodeWithAttributes> topologyFromCmg = logicalTopology.stream()
-                .map(n -> new NodeWithAttributes(n.name(), n.id(), 
n.attributes()))
+                .map(n -> new NodeWithAttributes(n.name(), n.id(), 
n.userAttributes()))
                 .collect(toSet());
 
         return ops(
diff --git 
a/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java
 
b/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java
index 4e1bfa81b4..e766b7d6fa 100644
--- 
a/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java
+++ 
b/modules/distribution-zones/src/testFixtures/java/org/apache/ignite/internal/distributionzones/DistributionZonesTestUtil.java
@@ -312,7 +312,7 @@ public class DistributionZonesTestUtil {
     ) throws InterruptedException {
         Set<NodeWithAttributes> nodes = clusterNodes == null
                 ? null
-                : clusterNodes.stream().map(n -> new 
NodeWithAttributes(n.name(), n.id(), n.attributes())).collect(toSet());
+                : clusterNodes.stream().map(n -> new 
NodeWithAttributes(n.name(), n.id(), n.userAttributes())).collect(toSet());
 
         assertValueInStorage(
                 keyValueStorage,
@@ -348,7 +348,7 @@ public class DistributionZonesTestUtil {
      */
     public static void mockVaultZonesLogicalTopologyKey(Set<LogicalNode> 
nodes, VaultManager vaultMgr, long appliedRevision) {
         Set<NodeWithAttributes> nodesWithAttributes = nodes.stream()
-                .map(n -> new NodeWithAttributes(n.name(), n.id(), 
n.attributes()))
+                .map(n -> new NodeWithAttributes(n.name(), n.id(), 
n.userAttributes()))
                 .collect(toSet());
 
         byte[] newLogicalTopology = toBytes(nodesWithAttributes);
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
index 10c46c66f5..0a292395f8 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
@@ -48,6 +48,7 @@ import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManag
 import org.apache.ignite.internal.cluster.management.NodeAttributesCollector;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import org.apache.ignite.internal.cluster.management.raft.ClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.raft.TestClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
@@ -105,6 +106,9 @@ public abstract class 
ItMetaStorageMultipleNodesAbstractTest extends IgniteAbstr
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
+    @InjectConfiguration
+    private static StorageProfilesConfiguration storageProfilesConfiguration;
+
     /**
      * Large interval to effectively disable idle safe time propagation.
      */
@@ -164,7 +168,7 @@ public abstract class 
ItMetaStorageMultipleNodesAbstractTest extends IgniteAbstr
                     clusterStateStorage,
                     logicalTopology,
                     cmgConfiguration,
-                    new NodeAttributesCollector(nodeAttributes)
+                    new NodeAttributesCollector(nodeAttributes, 
storageProfilesConfiguration)
             );
 
             var logicalTopologyService = new 
LogicalTopologyServiceImpl(logicalTopology, cmgManager);
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
index 6c96cd58df..df7017cef2 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
@@ -43,6 +43,7 @@ import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManag
 import org.apache.ignite.internal.cluster.management.NodeAttributesCollector;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import 
org.apache.ignite.internal.cluster.management.raft.TestClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
@@ -88,6 +89,9 @@ public class ItMetaStorageWatchTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
+    @InjectConfiguration
+    private static StorageProfilesConfiguration storageProfilesConfiguration;
+
     @InjectConfiguration
     private static MetaStorageConfiguration metaStorageConfiguration;
 
@@ -145,7 +149,7 @@ public class ItMetaStorageWatchTest extends 
IgniteAbstractTest {
                     clusterStateStorage,
                     logicalTopology,
                     cmgConfiguration,
-                    new NodeAttributesCollector(nodeAttributes)
+                    new NodeAttributesCollector(nodeAttributes, 
storageProfilesConfiguration)
             );
 
             components.add(cmgManager);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
index bc665b234c..41da3d4cd0 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
@@ -58,19 +58,26 @@ class ItLogicalTopologyTest extends 
ClusterPerTestIntegrationTest {
 
     private static final String NODE_ATTRIBUTES = 
"{region:{attribute:\"US\"},storage:{attribute:\"SSD\"}}";
 
+    private static final String STORAGE_PROFILES = 
"{lru_rocks:{engine:\"rocksDb\"},segmented_aipersist:{engine:\"aipersist\"}}";
+
     private static final Map<String, String> NODE_ATTRIBUTES_MAP = 
Map.of("region", "US", "storage", "SSD");
 
+    private static final Map<String, String> STORAGE_PROFILES_MAP = 
Map.of("lru_rocks", "rocksDb", "segmented_aipersist", "aipersist");
+
     @Language("JSON")
-    private static final String 
NODE_BOOTSTRAP_CFG_TEMPLATE_WITH_NODE_ATTRIBUTES = "{\n"
+    private static final String 
NODE_BOOTSTRAP_CFG_TEMPLATE_WITH_NODE_ATTRIBUTES_AND_STORAGE_PROFILES = "{\n"
             + "  network: {\n"
             + "    port: {},\n"
             + "    nodeFinder: {\n"
             + "      netClusterNodes: [ {} ]\n"
             + "    }\n"
-            + "  },"
+            + "  },\n"
             + "  nodeAttributes: {\n"
             + "    nodeAttributes: " + NODE_ATTRIBUTES
             + "  },\n"
+            + "  storageProfiles: {\n"
+            + "    storageProfiles: " + STORAGE_PROFILES
+            + "  },\n"
             + "  clientConnector: { port:{} },\n"
             + "  rest.port: {}\n"
             + "}";
@@ -148,7 +155,7 @@ class ItLogicalTopologyTest extends 
ClusterPerTestIntegrationTest {
     }
 
     @Test
-    void receivesLogicalTopologyEventsWithNodeAttributes() throws Exception {
+    void receivesLogicalTopologyEventsWithAttributes() throws Exception {
         cluster.startAndInit(1);
 
         IgniteImpl entryNode = node(0);
@@ -156,14 +163,15 @@ class ItLogicalTopologyTest extends 
ClusterPerTestIntegrationTest {
         entryNode.logicalTopologyService().addEventListener(listener);
 
         // Checking that onAppeared() is received.
-        Ignite secondIgnite = startNode(1, 
NODE_BOOTSTRAP_CFG_TEMPLATE_WITH_NODE_ATTRIBUTES);
+        Ignite secondIgnite = startNode(1, 
NODE_BOOTSTRAP_CFG_TEMPLATE_WITH_NODE_ATTRIBUTES_AND_STORAGE_PROFILES);
 
         Event event = events.poll(10, TimeUnit.SECONDS);
 
         assertThat(event, is(notNullValue()));
         assertThat(event.eventType, is(EventType.VALIDATED));
         assertThat(event.node.name(), is(secondIgnite.name()));
-        assertThat(event.node.attributes(), is(NODE_ATTRIBUTES_MAP));
+        assertThat(event.node.userAttributes(), is(NODE_ATTRIBUTES_MAP));
+        assertThat(event.node.storageProfiles(), is(STORAGE_PROFILES_MAP));
 
         event = events.poll(10, TimeUnit.SECONDS);
 
@@ -171,7 +179,8 @@ class ItLogicalTopologyTest extends 
ClusterPerTestIntegrationTest {
         assertThat(event.eventType, is(EventType.JOINED));
         assertThat(event.node.name(), is(secondIgnite.name()));
         assertThat(event.topologyVersion, is(2L));
-        assertThat(event.node.attributes(), is(NODE_ATTRIBUTES_MAP));
+        assertThat(event.node.userAttributes(), is(NODE_ATTRIBUTES_MAP));
+        assertThat(event.node.storageProfiles(), is(STORAGE_PROFILES_MAP));
 
         assertThat(events, is(empty()));
 
@@ -184,7 +193,8 @@ class ItLogicalTopologyTest extends 
ClusterPerTestIntegrationTest {
         assertThat(event.eventType, is(EventType.LEFT));
         assertThat(event.node.name(), is(secondIgnite.name()));
         assertThat(event.topologyVersion, is(3L));
-        assertThat(event.node.attributes(), is(Collections.emptyMap()));
+        assertThat(event.node.userAttributes(), is(Collections.emptyMap()));
+        assertThat(event.node.storageProfiles(), is(Collections.emptyMap()));
 
         assertThat(events, is(empty()));
     }
@@ -195,7 +205,7 @@ class ItLogicalTopologyTest extends 
ClusterPerTestIntegrationTest {
 
         IgniteImpl entryNode = node(0);
 
-        IgniteImpl secondIgnite = startNode(1, 
NODE_BOOTSTRAP_CFG_TEMPLATE_WITH_NODE_ATTRIBUTES);
+        IgniteImpl secondIgnite = startNode(1, 
NODE_BOOTSTRAP_CFG_TEMPLATE_WITH_NODE_ATTRIBUTES_AND_STORAGE_PROFILES);
 
         List<LogicalNode> logicalTopologyFromLeader = new ArrayList<>(
                 
entryNode.logicalTopologyService().logicalTopologyOnLeader().get(5, 
TimeUnit.SECONDS).nodes()
@@ -207,7 +217,8 @@ class ItLogicalTopologyTest extends 
ClusterPerTestIntegrationTest {
 
         assertTrue(secondNode.isPresent());
 
-        assertThat(secondNode.get().attributes(), is(NODE_ATTRIBUTES_MAP));
+        assertThat(secondNode.get().userAttributes(), is(NODE_ATTRIBUTES_MAP));
+        assertThat(secondNode.get().storageProfiles(), 
is(STORAGE_PROFILES_MAP));
     }
 
     @Test
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
index 9ee1b2a6c8..305c8b2213 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
@@ -42,6 +42,7 @@ import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManag
 import org.apache.ignite.internal.cluster.management.NodeAttributesCollector;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import 
org.apache.ignite.internal.cluster.management.raft.TestClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
@@ -99,6 +100,9 @@ public class ItDistributedConfigurationPropertiesTest 
extends BaseIgniteAbstract
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
+    @InjectConfiguration
+    private static StorageProfilesConfiguration storageProfilesConfiguration;
+
     @InjectConfiguration
     private static MetaStorageConfiguration metaStorageConfiguration;
 
@@ -167,7 +171,7 @@ public class ItDistributedConfigurationPropertiesTest 
extends BaseIgniteAbstract
                     clusterStateStorage,
                     logicalTopology,
                     clusterManagementConfiguration,
-                    new NodeAttributesCollector(nodeAttributes)
+                    new NodeAttributesCollector(nodeAttributes, 
storageProfilesConfiguration)
             );
 
             var logicalTopologyService = new 
LogicalTopologyServiceImpl(logicalTopology, cmgManager);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
index 60398fdb59..6f8b8358ce 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
@@ -37,6 +37,7 @@ import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManag
 import org.apache.ignite.internal.cluster.management.NodeAttributesCollector;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import 
org.apache.ignite.internal.cluster.management.raft.TestClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
@@ -82,6 +83,9 @@ public class ItDistributedConfigurationStorageTest extends 
BaseIgniteAbstractTes
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
+    @InjectConfiguration
+    private static StorageProfilesConfiguration storageProfilesConfiguration;
+
     @InjectConfiguration
     private static MetaStorageConfiguration metaStorageConfiguration;
 
@@ -141,7 +145,7 @@ public class ItDistributedConfigurationStorageTest extends 
BaseIgniteAbstractTes
                     clusterStateStorage,
                     logicalTopology,
                     clusterManagementConfiguration,
-                    new NodeAttributesCollector(nodeAttributes)
+                    new NodeAttributesCollector(nodeAttributes, 
storageProfilesConfiguration)
             );
 
             var logicalTopologyService = new 
LogicalTopologyServiceImpl(logicalTopology, cmgManager);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItIgniteDistributionZoneManagerNodeRestartTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItIgniteDistributionZoneManagerNodeRestartTest.java
index 145667b31a..c63edadf05 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItIgniteDistributionZoneManagerNodeRestartTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/distribution/zones/ItIgniteDistributionZoneManagerNodeRestartTest.java
@@ -329,7 +329,7 @@ public class ItIgniteDistributionZoneManagerNodeRestartTest 
extends BaseIgniteRe
         node.logicalTopology().putNode(C);
 
         Set<NodeWithAttributes> logicalTopology = Stream.of(A, B, C)
-                .map(n -> new NodeWithAttributes(n.name(), n.id(), 
n.attributes()))
+                .map(n -> new NodeWithAttributes(n.name(), n.id(), 
n.userAttributes()))
                 .collect(toSet());
 
         DistributionZoneManager distributionZoneManager = 
getDistributionZoneManager(node);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
index 5f46a14ceb..a8b1c52b21 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
@@ -94,6 +94,7 @@ import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManag
 import org.apache.ignite.internal.cluster.management.NodeAttributesCollector;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import 
org.apache.ignite.internal.cluster.management.raft.TestClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
@@ -221,6 +222,9 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
+    @InjectConfiguration
+    private static StorageProfilesConfiguration storageProfilesConfiguration;
+
     @InjectConfiguration
     private static MetaStorageConfiguration metaStorageConfiguration;
 
@@ -826,7 +830,7 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
                     clusterStateStorage,
                     logicalTopology,
                     clusterManagementConfiguration,
-                    new NodeAttributesCollector(nodeAttributes)
+                    new NodeAttributesCollector(nodeAttributes, 
storageProfilesConfiguration)
             );
 
             LongSupplier partitionIdleSafeTimePropagationPeriodMsSupplier = () 
-> 10L;
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
index 2b61381301..154f0ca57a 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
@@ -70,6 +70,7 @@ import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManag
 import org.apache.ignite.internal.cluster.management.NodeAttributesCollector;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import 
org.apache.ignite.internal.cluster.management.raft.RocksDbClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyServiceImpl;
@@ -176,6 +177,9 @@ public class ItIgniteNodeRestartTest extends 
BaseIgniteRestartTest {
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
+    @InjectConfiguration
+    private static StorageProfilesConfiguration storageProfilesConfiguration;
+
     @InjectConfiguration
     private static MetaStorageConfiguration metaStorageConfiguration;
 
@@ -272,7 +276,7 @@ public class ItIgniteNodeRestartTest extends 
BaseIgniteRestartTest {
                 clusterStateStorage,
                 logicalTopology,
                 clusterManagementConfiguration,
-                new NodeAttributesCollector(nodeAttributes)
+                new NodeAttributesCollector(nodeAttributes, 
storageProfilesConfiguration)
         );
 
         LongSupplier partitionIdleSafeTimePropagationPeriodMsSupplier = () -> 
10L;
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index 289dd9ec1b..28dafd2961 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -50,6 +50,7 @@ import 
org.apache.ignite.internal.cluster.management.ClusterManagementGroupManag
 import org.apache.ignite.internal.cluster.management.NodeAttributesCollector;
 import 
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
 import 
org.apache.ignite.internal.cluster.management.configuration.NodeAttributesConfiguration;
+import 
org.apache.ignite.internal.cluster.management.configuration.StorageProfilesConfiguration;
 import org.apache.ignite.internal.cluster.management.raft.ClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.raft.RocksDbClusterStateStorage;
 import 
org.apache.ignite.internal.cluster.management.topology.LogicalTopologyImpl;
@@ -410,7 +411,10 @@ public class IgniteImpl implements Ignite {
                 
ConfigurationValidatorImpl.withDefaultValidators(distributedConfigurationGenerator,
 modules.distributed().validators());
 
         NodeAttributesCollector nodeAttributesCollector =
-                new 
NodeAttributesCollector(nodeConfigRegistry.getConfiguration(NodeAttributesConfiguration.KEY));
+                new NodeAttributesCollector(
+                        
nodeConfigRegistry.getConfiguration(NodeAttributesConfiguration.KEY),
+                        
nodeConfigRegistry.getConfiguration(StorageProfilesConfiguration.KEY)
+                );
 
 
         clusterConfigurationDefaultsSetter =
diff --git 
a/modules/system-view/src/test/java/org/apache/ignite/internal/systemview/SystemViewManagerTest.java
 
b/modules/system-view/src/test/java/org/apache/ignite/internal/systemview/SystemViewManagerTest.java
index fbc36b3665..a738de0e66 100644
--- 
a/modules/system-view/src/test/java/org/apache/ignite/internal/systemview/SystemViewManagerTest.java
+++ 
b/modules/system-view/src/test/java/org/apache/ignite/internal/systemview/SystemViewManagerTest.java
@@ -349,7 +349,7 @@ public class SystemViewManagerTest extends 
BaseIgniteAbstractTest {
                 systemAttributes = Map.of();
             }
 
-            topology.add(new LogicalNode(clusterNode, Map.of(), 
systemAttributes));
+            topology.add(new LogicalNode(clusterNode, Map.of(), 
systemAttributes, Map.of()));
         }
 
         return new LogicalTopologySnapshot(1, topology);

Reply via email to