You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by "mrproliu (via GitHub)" <gi...@apache.org> on 2023/06/28 00:58:01 UTC

[GitHub] [skywalking] mrproliu opened a new pull request, #11005: Support dynamic UI menu query

mrproliu opened a new pull request, #11005:
URL: https://github.com/apache/skywalking/pull/11005

   Add the feature of dynamic UI menu query, similar to the UI Template feature. By predefining the UI menu, it's automatically written into the database when the system starts. Associate menu items with Dashboard ID, **when there is data in the Service dimension of the Layer corresponding to the Dashboard, the menu is deemed to need to be displayed.**
   
   - [ ] If this pull request closes/resolves/fixes an existing issue, replace the issue number. Closes #<issue number>.
   - [x] Update the [`CHANGES` log](https://github.com/apache/skywalking/blob/master/docs/en/changes/changes.md).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "sonatype-lift[bot] (via GitHub)" <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1246127916


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java:
##########
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.management.ui.menu;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.query.type.MenuItem;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.management.UIMenuManagementDAO;
+import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import org.apache.skywalking.oap.server.library.module.Service;
+import org.apache.skywalking.oap.server.library.util.CollectionUtils;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j

Review Comment:
   <picture><img alt="4% of developers fix this issue" src="https://lift.sonatype.com/api/commentimage/fixrate/4/display.svg"></picture>
   
   <b>*[UnnecessarilyFullyQualified](https://errorprone.info/bugpattern/UnnecessarilyFullyQualified):</b>*  This fully qualified name is unambiguous to the compiler if imported.
   
   ---
   
   
   ```suggestion
   LoggerFactory
   ```
   
   
   ❗❗ <b>4 similar findings have been found in this PR</b>
   
   <details><summary>🔎 Expand here to view all instances of this finding</summary><br/>
     
     
   <div align=\"center\">
   
   
   | **File Path** | **Line Number** |
   | ------------- | ------------- |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java | [41](https://github.com/apache/skywalking/blob/22721ce7709ef34b9bcbc15d9cb0054d980e37b9/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java#L41) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java | [41](https://github.com/apache/skywalking/blob/22721ce7709ef34b9bcbc15d9cb0054d980e37b9/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java#L41) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java | [41](https://github.com/apache/skywalking/blob/22721ce7709ef34b9bcbc15d9cb0054d980e37b9/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java#L41) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java | [90](https://github.com/apache/skywalking/blob/22721ce7709ef34b9bcbc15d9cb0054d980e37b9/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java#L90) |
   <p><a href="https://lift.sonatype.com/results/github.com/apache/skywalking/01H42FYX06QZG7X4C6AQAH2HKV?t=ErrorProne|UnnecessarilyFullyQualified" target="_blank">Visit the Lift Web Console</a> to find more details in your report.</p></div></details>
   
   
   
   ---
   
   <details><summary>â„šī¸ Expand to see all <b>@sonatype-lift</b> commands</summary>
   
   You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified `file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) to add LiftBot to another repo.</sub></details>
   
   



##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuManagementService.java:
##########
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.management.ui.menu;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.oap.server.core.query.type.MenuItem;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.management.UIMenuManagementDAO;
+import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import org.apache.skywalking.oap.server.library.module.Service;
+import org.apache.skywalking.oap.server.library.util.CollectionUtils;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+public class UIMenuManagementService implements Service, Runnable {
+    private static final String MENU_ID = "1";
+    private static final Gson GSON = new Gson();
+    private static final int MENU_GET_MAX_SECOND = 3;
+
+    private UIMenuManagementDAO menuDAO;
+    private ModuleManager moduleManager;
+    private CompletableFuture<List<MenuItem>> menuItemFuture;
+    private boolean isMenuItemsBeenFetched = false;
+    private IMetadataQueryDAO metadataQueryDAO;
+
+    public UIMenuManagementService(ModuleManager moduleManager) {
+        this.moduleManager = moduleManager;
+        this.menuItemFuture = new CompletableFuture<>();
+    }
+
+    private UIMenuManagementDAO getMenuDAO() {
+        if (menuDAO == null) {
+            menuDAO = moduleManager.find(StorageModule.NAME).provider().getService(UIMenuManagementDAO.class);
+        }
+        return menuDAO;
+    }
+
+    private IMetadataQueryDAO getMetadataQueryDAO() {
+        if (metadataQueryDAO == null) {
+            metadataQueryDAO = moduleManager.find(StorageModule.NAME).provider().getService(IMetadataQueryDAO.class);
+        }
+        return metadataQueryDAO;
+    }
+
+    public void saveMenuAndStartFetch(List<UIMenuItemSetting> menuItems, int fetchInterval) throws IOException {
+        // ignore if already existing
+        if (getMenuDAO().getMenu(MENU_ID) != null) {
+            startingFetchMenu(fetchInterval);
+            return;
+        }
+
+        UIMenu menu = new UIMenu();
+        menu.setMenuId(MENU_ID);
+        menu.setUpdateTime(System.currentTimeMillis());
+        menu.setConfigurationJson(GSON.toJson(menuItems));
+
+        getMenuDAO().saveMenu(menu);
+        startingFetchMenu(fetchInterval);
+    }
+
+    private void startingFetchMenu(int fetchIntervalSecond) {
+        Executors.newSingleThreadScheduledExecutor()
+            .scheduleWithFixedDelay(this, 0, fetchIntervalSecond, java.util.concurrent.TimeUnit.SECONDS);

Review Comment:
   <picture><img alt="23% of developers fix this issue" src="https://lift.sonatype.com/api/commentimage/fixrate/23/display.svg"></picture>
   
   <b>*[FutureReturnValueIgnored](https://errorprone.info/bugpattern/FutureReturnValueIgnored):</b>*  Return value of methods returning Future must be checked. Ignoring returned Futures suppresses exceptions thrown from the code that completes the Future.
   
   ---
   
   <details><summary>â„šī¸ Expand to see all <b>@sonatype-lift</b> commands</summary>
   
   You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified `file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) to add LiftBot to another repo.</sub></details>
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1246072134


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `layer` for navigation.

Review Comment:
   ```suggestion
   The menu definition supports one and two levels items. The leaf menu item should have the `layer` for navigation.
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] Fine0830 commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "Fine0830 (via GitHub)" <gi...@apache.org>.
Fine0830 commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245357489


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   > > I think the `name` should not contain special characters, including spaces.
   > 
   > Then how the name is showing? We need `Service Mesh` text to display, that is my meaning of the name.
   
   In the graph, the `name` means ID.  `title` could display on the page.
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245326086


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   According to the discussion between @Fine0830 and me. We need to change this.
   `name`, `icon`, and `layer` are required, others are not.
   This is the runtime menu context.
   ![image](https://github.com/apache/skywalking/assets/5441976/7314a559-7e5a-4d4d-b370-a51b835ed74a)
   
   path should be generated by UI side directly by `lower case` the `name`, and use `_` replacing the blank between words.
   
   Also, this means the query protocol should be fixed as well, no `path`, but need to add `layer`.
   https://github.com/apache/skywalking-query-protocol/blob/1f80cd0af8bc0baf71bb68961a894c110c9d9b79/ui-configuration.graphqls#L32



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244987174


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart

Review Comment:
   They seem in low readability. Please rename them. @Fine0830 Please reflect the UI icon names to adopt this PR change. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244987067


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart
+    menus:
+      - name: Services
+        path: /general
+        dashboard: General-Root

Review Comment:
   It's dashboard ID, I needs to using the dashboard ID to query the dashboard configuration. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] Fine0830 commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "Fine0830 (via GitHub)" <gi...@apache.org>.
Fine0830 commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245338405


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   I think the `name` should not contain special characters, including spaces.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] Fine0830 commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "Fine0830 (via GitHub)" <gi...@apache.org>.
Fine0830 commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245279782


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.

Review Comment:
   It seems that the `name` is necessary, and others fields are not necessary.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "sonatype-lift[bot] (via GitHub)" <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245238395


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java:
##########
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.management.ui.menu;
+
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.skywalking.oap.server.core.analysis.Stream;
+import org.apache.skywalking.oap.server.core.analysis.management.ManagementData;
+import org.apache.skywalking.oap.server.core.analysis.worker.ManagementStreamProcessor;
+import org.apache.skywalking.oap.server.core.source.ScopeDeclaration;
+import org.apache.skywalking.oap.server.core.storage.StorageID;
+import org.apache.skywalking.oap.server.core.storage.annotation.Column;
+import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity;
+import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage;
+import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.UI_MENU;
+
+@Setter
+@Getter
+@ScopeDeclaration(id = UI_MENU, name = "UIMenu")
+@Stream(name = UIMenu.INDEX_NAME, scopeId = UI_MENU, builder = UIMenu.Builder.class, processor = ManagementStreamProcessor.class)
+@EqualsAndHashCode(of = "menuId", callSuper = false)
+public class UIMenu extends ManagementData {
+    public static final String INDEX_NAME = "ui_menu";
+    public static final String MENU_ID = "menu_id";
+    public static final String CONFIGURATION = "configuration";
+    public static final String UPDATE_TIME = "update_time";
+
+    @Column(name = MENU_ID)
+    private String menuId;

Review Comment:
   <picture><img alt="4% of developers fix this issue" src="https://lift.sonatype.com/api/commentimage/fixrate/4/display.svg"></picture>
   
   <b>*[UnnecessarilyFullyQualified](https://errorprone.info/bugpattern/UnnecessarilyFullyQualified):</b>*  This fully qualified name is unambiguous to the compiler if imported.
   
   ---
   
   
   ```suggestion
       SuppressWarnings
   ```
   
   
   ❗❗ <b>11 similar findings have been found in this PR</b>
   
   <details><summary>🔎 Expand here to view all instances of this finding</summary><br/>
     
     
   <div align=\"center\">
   
   
   | **File Path** | **Line Number** |
   | ------------- | ------------- |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [40](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L40) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [50](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L50) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [36](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L36) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [48](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L48) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [36](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L36) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [52](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L52) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [52](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L52) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [40](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L40) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [50](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L50) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java | [40](https://github.com/apache/skywalking/blob/543455f4826b241f844cfd1fbfc3e3c7ebb84982/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java#L40) |
   <p> Showing <b>10</b> of <b> 11 </b> findings. <a href="https://lift.sonatype.com/results/github.com/apache/skywalking/01H40ZBH9RT85ZY9GVSQPT1CWZ?t=ErrorProne|UnnecessarilyFullyQualified" target="_blank">Visit the Lift Web Console</a> to see all.</p></div></details>
   
   
   
   ---
   
   <details><summary>â„šī¸ Expand to see all <b>@sonatype-lift</b> commands</summary>
   
   You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified `file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) to add LiftBot to another repo.</sub></details>
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245338885


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   When menu item is alerting or dashboard, the value of layer should be empty?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244972200


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart
+    menus:
+      - name: Services
+        path: /general
+        dashboard: General-Root

Review Comment:
   Are you going to use the dashboard name? So, the dashboard ID would be irrelevant



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244970675


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart

Review Comment:
   Where are the definitions of these icons? Should UI implement this part?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245235556


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.

Review Comment:
   @Fine0830 Please check this, whether `path` is necessary?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245377798


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   Then, let's keep the title and layer only on the OAP side. The point is, keeping necessary information at the backend, and UI controls everything about the visualization.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244990600


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart

Review Comment:
   So, I need to wait for @Fine0830 updates, then I update the names? If It's not defined there, the UI doesn't know what kind of icon should be showing. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] Fine0830 commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "Fine0830 (via GitHub)" <gi...@apache.org>.
Fine0830 commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245349600


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   Right.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245352136


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   > I think the `name` should not contain special characters, including spaces.
   
   Then how the name is showing? We need `Service Mesh` text to display, that is my meaning of the name. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245352963


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   > When menu item is alerting or dashboard, the value of layer should be empty?
   
   Alerting and all menus are not configurable are excluded from this. Those would be hard coded only from UI side.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng merged pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng merged PR #11005:
URL: https://github.com/apache/skywalking/pull/11005


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245077508


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart
+    menus:
+      - name: Services
+        path: /general
+        dashboard: General-Root

Review Comment:
   updated, please re-check



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "sonatype-lift[bot] (via GitHub)" <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245235045


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java:
##########
@@ -212,6 +212,11 @@ public class CoreModuleConfig extends ModuleConfig {
      */
     private int maxHttpUrisNumberPerService = 3000;
 
+    /**
+     * The UI menu should activate fetch interval, default 20s
+     */
+    private int uiMenuFetchInterval = 20;

Review Comment:
   <picture><img alt="4% of developers fix this issue" src="https://lift.sonatype.com/api/commentimage/fixrate/4/display.svg"></picture>
   
   <b>*[UnnecessarilyFullyQualified](https://errorprone.info/bugpattern/UnnecessarilyFullyQualified):</b>*  This fully qualified name is unambiguous to the compiler if imported.
   
   ---
   
   
   ```suggestion
       private String Generated
   ```
   
   
   ❗❗ <b>3 similar findings have been found in this PR</b>
   
   <details><summary>🔎 Expand here to view all instances of this finding</summary><br/>
     
     
   <div align=\"center\">
   
   
   | **File Path** | **Line Number** |
   | ------------- | ------------- |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java | [213](https://github.com/apache/skywalking/blob/9bca126aac192de3680f07b4e94892b4df8f6da5/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java#L213) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java | [213](https://github.com/apache/skywalking/blob/9bca126aac192de3680f07b4e94892b4df8f6da5/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java#L213) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java | [218](https://github.com/apache/skywalking/blob/9bca126aac192de3680f07b4e94892b4df8f6da5/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java#L218) |
   <p><a href="https://lift.sonatype.com/results/github.com/apache/skywalking/01H40W8B6MJMTE2X8WSFW4KNJM?t=ErrorProne|UnnecessarilyFullyQualified" target="_blank">Visit the Lift Web Console</a> to find more details in your report.</p></div></details>
   
   
   
   ---
   
   <details><summary>â„šī¸ Expand to see all <b>@sonatype-lift</b> commands</summary>
   
   You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified `file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) to add LiftBot to another repo.</sub></details>
   
   



##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java:
##########
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.query.type;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MenuItem {
+    private String name;
+    private String icon;
+    private String path;

Review Comment:
   <picture><img alt="4% of developers fix this issue" src="https://lift.sonatype.com/api/commentimage/fixrate/4/display.svg"></picture>
   
   <b>*[UnnecessarilyFullyQualified](https://errorprone.info/bugpattern/UnnecessarilyFullyQualified):</b>*  This fully qualified name is unambiguous to the compiler if imported.
   
   ---
   
   
   ```suggestion
       SuppressWarnings
   ```
   
   
   ❗❗ <b>14 similar findings have been found in this PR</b>
   
   <details><summary>🔎 Expand here to view all instances of this finding</summary><br/>
     
     
   <div align=\"center\">
   
   
   | **File Path** | **Line Number** |
   | ------------- | ------------- |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [25](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L25) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [27](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L27) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [28](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L28) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [27](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L27) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [31](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L31) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [30](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L30) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [30](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L30) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [25](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L25) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [25](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L25) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [25](https://github.com/apache/skywalking/blob/c9c4e25a5c518441a0a230a3a2fe07c53c51e6f2/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L25) |
   <p> Showing <b>10</b> of <b> 14 </b> findings. <a href="https://lift.sonatype.com/results/github.com/apache/skywalking/01H40W9KVRY9JDT9HCZBYSE88K?t=ErrorProne|UnnecessarilyFullyQualified" target="_blank">Visit the Lift Web Console</a> to see all.</p></div></details>
   
   
   
   ---
   
   <details><summary>â„šī¸ Expand to see all <b>@sonatype-lift</b> commands</summary>
   
   You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified `file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) to add LiftBot to another repo.</sub></details>
   
   



##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java:
##########
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.management.ui.menu;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UIMenuItemSetting {
+    /**
+     * Name of the menu item.
+     */
+    private String name;

Review Comment:
   <picture><img alt="4% of developers fix this issue" src="https://lift.sonatype.com/api/commentimage/fixrate/4/display.svg"></picture>
   
   <b>*[UnnecessarilyFullyQualified](https://errorprone.info/bugpattern/UnnecessarilyFullyQualified):</b>*  This fully qualified name is unambiguous to the compiler if imported.
   
   ---
   
   
   ```suggestion
       Generated
   ```
   
   
   ❗❗ <b>16 similar findings have been found in this PR</b>
   
   <details><summary>🔎 Expand here to view all instances of this finding</summary><br/>
     
     
   <div align=\"center\">
   
   
   | **File Path** | **Line Number** |
   | ------------- | ------------- |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [25](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L25) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java | [218](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleConfig.java#L218) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [46](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L46) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [42](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L42) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [25](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L25) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [30](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L30) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [34](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L34) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [42](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L42) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [38](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L38) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java | [25](https://github.com/apache/skywalking/blob/252e5704cfe9b89694e51994e420dc61b6e7284a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenuItemSetting.java#L25) |
   <p> Showing <b>10</b> of <b> 16 </b> findings. <a href="https://lift.sonatype.com/results/github.com/apache/skywalking/01H40WABDFN7CVE40TK08B97ZM?t=ErrorProne|UnnecessarilyFullyQualified" target="_blank">Visit the Lift Web Console</a> to see all.</p></div></details>
   
   
   
   ---
   
   <details><summary>â„šī¸ Expand to see all <b>@sonatype-lift</b> commands</summary>
   
   You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified `file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) to add LiftBot to another repo.</sub></details>
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "sonatype-lift[bot] (via GitHub)" <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245248133


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java:
##########
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.management.ui.menu;
+
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.skywalking.oap.server.core.analysis.Stream;
+import org.apache.skywalking.oap.server.core.analysis.management.ManagementData;
+import org.apache.skywalking.oap.server.core.analysis.worker.ManagementStreamProcessor;
+import org.apache.skywalking.oap.server.core.source.ScopeDeclaration;
+import org.apache.skywalking.oap.server.core.storage.StorageID;
+import org.apache.skywalking.oap.server.core.storage.annotation.Column;
+import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity;
+import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage;
+import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.UI_MENU;
+
+@Setter
+@Getter
+@ScopeDeclaration(id = UI_MENU, name = "UIMenu")
+@Stream(name = UIMenu.INDEX_NAME, scopeId = UI_MENU, builder = UIMenu.Builder.class, processor = ManagementStreamProcessor.class)
+@EqualsAndHashCode(of = "menuId", callSuper = false)
+public class UIMenu extends ManagementData {
+    public static final String INDEX_NAME = "ui_menu";
+    public static final String MENU_ID = "menu_id";
+    public static final String CONFIGURATION = "configuration";
+    public static final String UPDATE_TIME = "update_time";
+
+    @Column(name = MENU_ID)
+    private String menuId;

Review Comment:
   The **ignoreall** command is active on this PR, all the existing Lift issues are ignored.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245247982


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/menu/UIMenu.java:
##########
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.management.ui.menu;
+
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.skywalking.oap.server.core.analysis.Stream;
+import org.apache.skywalking.oap.server.core.analysis.management.ManagementData;
+import org.apache.skywalking.oap.server.core.analysis.worker.ManagementStreamProcessor;
+import org.apache.skywalking.oap.server.core.source.ScopeDeclaration;
+import org.apache.skywalking.oap.server.core.storage.StorageID;
+import org.apache.skywalking.oap.server.core.storage.annotation.Column;
+import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity;
+import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage;
+import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.UI_MENU;
+
+@Setter
+@Getter
+@ScopeDeclaration(id = UI_MENU, name = "UIMenu")
+@Stream(name = UIMenu.INDEX_NAME, scopeId = UI_MENU, builder = UIMenu.Builder.class, processor = ManagementStreamProcessor.class)
+@EqualsAndHashCode(of = "menuId", callSuper = false)
+public class UIMenu extends ManagementData {
+    public static final String INDEX_NAME = "ui_menu";
+    public static final String MENU_ID = "menu_id";
+    public static final String CONFIGURATION = "configuration";
+    public static final String UPDATE_TIME = "update_time";
+
+    @Column(name = MENU_ID)
+    private String menuId;

Review Comment:
   @sonatype-lift ignoreall



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] Fine0830 commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "Fine0830 (via GitHub)" <gi...@apache.org>.
Fine0830 commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245346802


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   This type of menu item should be controlled on the front end? 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1246099902


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,107 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - title: the title of the menu item
+#     icon: icon name
+#     layer: related layer name, the menu item should be activated when layer has services
+#     menus: sub menus of the current item
+
+menus:
+  - title: General Service
+    icon: general_service
+    menus:

Review Comment:
   @Fine0830 You need to covert the title to what you need for path and name.
   We don't define it on the OAP side



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1246072535


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,107 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - title: the title of the menu item
+#     icon: icon name
+#     layer: related layer name, the menu item should be activated when layer has services
+#     menus: sub menus of the current item
+
+menus:
+  - title: GeneralService

Review Comment:
    Title is for display, it should not be like this. `General Service` is proper value.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] sonatype-lift[bot] commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "sonatype-lift[bot] (via GitHub)" <gi...@apache.org>.
sonatype-lift[bot] commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1246135945


##########
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java:
##########
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.query.type;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MenuItem {
+    private String title;

Review Comment:
   <picture><img alt="4% of developers fix this issue" src="https://lift.sonatype.com/api/commentimage/fixrate/4/display.svg"></picture>
   
   <b>*[UnnecessarilyFullyQualified](https://errorprone.info/bugpattern/UnnecessarilyFullyQualified):</b>*  This fully qualified name is unambiguous to the compiler if imported.
   
   ---
   
   
   ```suggestion
       SuppressWarnings
   ```
   
   
   ❗❗ <b>3 similar findings have been found in this PR</b>
   
   <details><summary>🔎 Expand here to view all instances of this finding</summary><br/>
     
     
   <div align=\"center\">
   
   
   | **File Path** | **Line Number** |
   | ------------- | ------------- |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [29](https://github.com/apache/skywalking/blob/08c201d5369aca171b0677b8988e67608083f10d/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L29) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [27](https://github.com/apache/skywalking/blob/08c201d5369aca171b0677b8988e67608083f10d/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L27) |
   | oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java | [29](https://github.com/apache/skywalking/blob/08c201d5369aca171b0677b8988e67608083f10d/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/type/MenuItem.java#L29) |
   <p><a href="https://lift.sonatype.com/results/github.com/apache/skywalking/01H42PYMHFAZJZPQ4DZ4V8YHQV?t=ErrorProne|UnnecessarilyFullyQualified" target="_blank">Visit the Lift Web Console</a> to find more details in your report.</p></div></details>
   
   
   
   ---
   
   <details><summary>â„šī¸ Expand to see all <b>@sonatype-lift</b> commands</summary>
   
   You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.
   | **Command** | **Usage** |
   | ------------- | ------------- |
   | `@sonatype-lift ignore` | Leave out the above finding from this PR |
   | `@sonatype-lift ignoreall` | Leave out all the existing findings from this PR |
   | `@sonatype-lift exclude <file\|issue\|path\|tool>` | Exclude specified `file\|issue\|path\|tool` from Lift findings by updating your config.toml file |
   
   **Note:** When talking to LiftBot, you need to **refresh** the page to see its response.
   <sub>[Click here](https://github.com/apps/sonatype-lift/installations/new) to add LiftBot to another repo.</sub></details>
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244989621


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart
+    menus:
+      - name: Services
+        path: /general
+        dashboard: General-Root

Review Comment:
   This doc should be updated as well, https://skywalking.apache.org/docs/main/next/en/ui/readme/. Add menu change introduction.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244985272


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart

Review Comment:
   Yes, these value is the current dashboard icon name. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245237043


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.

Review Comment:
   Why doesn't the level one(browser) menu need this, but level two does?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245357144


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   > > When menu item is alerting or dashboard, the value of layer should be empty?
   > 
   > 
   > 
   > Alerting and all menus are not configurable are excluded from this. Those would be hard coded only from UI side.
   
   Got it. It should be including dashboard settings, alert and settings. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244988742


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart
+    menus:
+      - name: Services
+        path: /general
+        dashboard: General-Root

Review Comment:
   If that is the ID, let's name it as ID.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1244969545


##########
docs/en/setup/backend/configuration-vocabulary.md:
##########
@@ -48,6 +48,7 @@ The Configuration Vocabulary lists all available configurations provided by `app
 | -                       | -             | enableEndpointNameGroupingByOpenapi                                                                                                                                      | Automatically groups endpoints by the given OpenAPI definitions.                                                                                                                                                                                                                                                                                                                                                                                                           | SW_CORE_ENABLE_ENDPOINT_NAME_GROUPING_BY_OPENAPI      | true                                                                                         |
 | -                       | -             | maxDurationOfQueryEBPFProfilingData                                                                                                                                      | The maximum duration(in second) of query the eBPF profiling data from database.                                                                                                                                                                                                                                                                                                                                                                                            | -                                                     | 30                                                                                           |
 | -                       | -             | maxThreadCountOfQueryEBPFProfilingData                                                                                                                                   | The maximum thread count of query the eBPF profiling data from database.                                                                                                                                                                                                                                                                                                                                                                                                   | -                                                     | System CPU core size                                                                         |
+| -                       | -             | uiMenuFetchInterval                                                                                                                                                      | The UI menu should activate fetch interval(in seconds).                                                                                                                                                                                                                                                                                                                                                                                                                    | -                                                     | 20                                                                                           |

Review Comment:
   ```suggestion
   | -                       | -             | uiMenuRefreshInterval                                                                                                                                                      | The period(in seconds) of refreshing the status of all UI menu items.                                                                                                                                                                                                                                                                                                                                                                                                                    | -                                                     | 20                                                                                           |
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245006359


##########
oap-server/server-starter/src/main/resources/ui-initialized-templates/menu.yaml:
##########
@@ -0,0 +1,147 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# menus: the menus of the left navigation bar
+#   - name: the name of the menu item
+#     icon: icon name
+#     path: link path
+#     dashboard: related dashboard name, the menu item should be activated when the dashboard value is empty or dashboard related scope has services
+#     menus: sub menus of the current item
+
+menus:
+  - name: General Service
+    icon: chart

Review Comment:
   You should update first. UI follows only.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] wu-sheng commented on pull request #11005: Support dynamic UI menu query

Posted by "wu-sheng (via GitHub)" <gi...@apache.org>.
wu-sheng commented on PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#issuecomment-1611447143

   @mrproliu Please recheck the bot scanning results.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [skywalking] mrproliu commented on a diff in pull request #11005: Support dynamic UI menu query

Posted by "mrproliu (via GitHub)" <gi...@apache.org>.
mrproliu commented on code in PR #11005:
URL: https://github.com/apache/skywalking/pull/11005#discussion_r1245348184


##########
docs/en/ui/README.md:
##########
@@ -8,6 +8,41 @@ The left side menu lists all available supported stacks with default dashboards.
 
 Follow the `Official Dashboards` menu to explore all default dashboards on their ways to monitor different tech stacks.
 
+## Sidebar Menu and Marketplace
+
+All available feature menu items are only listed in the marketplace(since 9.6.0). They are only visible on the Sidebar Menu when there are relative services
+being observed by various supported observation agents, such as installed language agents, service mesh platform, OTEL integration.
+
+The menu items defined in `ui-initialized-templates/menu.yaml` are the universal marketplace for all default-supported integration.
+The menu definition supports one and two levels items. The leave menu item should have the `path` and `dashboardID` for navigation, the icon of the level one item is defined from UI side.
+
+```yaml
+menus:
+  - name: General Service
+    icon: general_service
+    menus:
+      - name: Services
+        path: /general
+        dashboardID: General-Root
+      - name: Visual Database
+        path: /database
+        dashboardID: Virtual-Database-Root

Review Comment:
   > I think the `name` should not contain special characters, including spaces.
   
   So, in the 'Control Plane' of 'Service Mesh', the menu should be 'ControlPlane' and 'ServiceMesh'? Am I right?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@skywalking.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org