You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ha...@apache.org on 2022/12/30 07:46:35 UTC

[cloudstack] 05/07: Guest OS list

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

harikrishna pushed a commit to branch guest-os-mappings-improvements
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 8b6578e53344bfc18c50df9378ebd1c4e2107c51
Author: Harikrishna Patnala <ha...@gmail.com>
AuthorDate: Wed Dec 28 17:48:02 2022 +0530

    Guest OS list
---
 .../cloudstack/api/response/GuestOSResponse.java     | 18 +++++++++++++++---
 .../main/java/com/cloud/api/ApiResponseHelper.java   |  3 ++-
 ui/public/locales/en.json                            |  2 ++
 ui/src/components/view/ListView.vue                  |  3 +++
 ui/src/config/section/config.js                      | 20 +++++++++++++++++++-
 ui/src/views/AutogenView.vue                         |  4 +++-
 6 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/api/src/main/java/org/apache/cloudstack/api/response/GuestOSResponse.java b/api/src/main/java/org/apache/cloudstack/api/response/GuestOSResponse.java
index c1a57c3e0e1..784a5297cc6 100644
--- a/api/src/main/java/org/apache/cloudstack/api/response/GuestOSResponse.java
+++ b/api/src/main/java/org/apache/cloudstack/api/response/GuestOSResponse.java
@@ -35,13 +35,17 @@ public class GuestOSResponse extends BaseResponse {
     @Param(description = "the ID of the OS category")
     private String osCategoryId;
 
+    @SerializedName(ApiConstants.OS_CATEGORY_NAME)
+    @Param(description = "the name of the OS category")
+    private String osCategoryName;
+
     @SerializedName(ApiConstants.DESCRIPTION)
     @Param(description = "the name/description of the OS type")
     private String description;
 
     @SerializedName(ApiConstants.IS_USER_DEFINED)
     @Param(description = "is the guest OS user defined")
-    private Boolean isUserDefined;
+    private String isUserDefined;
 
     public String getId() {
         return id;
@@ -59,6 +63,14 @@ public class GuestOSResponse extends BaseResponse {
         this.osCategoryId = osCategoryId;
     }
 
+    public String getOsCategoryName() {
+        return osCategoryName;
+    }
+
+    public void setOsCategoryName(String osCategoryName) {
+        this.osCategoryName = osCategoryName;
+    }
+
     public String getDescription() {
         return description;
     }
@@ -67,11 +79,11 @@ public class GuestOSResponse extends BaseResponse {
         this.description = description;
     }
 
-    public Boolean getIsUserDefined() {
+    public String getIsUserDefined() {
         return isUserDefined;
     }
 
-    public void setIsUserDefined(Boolean isUserDefined) {
+    public void setIsUserDefined(String isUserDefined) {
         this.isUserDefined = isUserDefined;
     }
 
diff --git a/server/src/main/java/com/cloud/api/ApiResponseHelper.java b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
index 3e71a416c61..8fb5e3dc2d6 100644
--- a/server/src/main/java/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/main/java/com/cloud/api/ApiResponseHelper.java
@@ -3585,10 +3585,11 @@ public class ApiResponseHelper implements ResponseGenerator {
         GuestOSResponse response = new GuestOSResponse();
         response.setDescription(guestOS.getDisplayName());
         response.setId(guestOS.getUuid());
-        response.setIsUserDefined(guestOS.getIsUserDefined());
+        response.setIsUserDefined(String.valueOf(guestOS.getIsUserDefined()));
         GuestOSCategoryVO category = ApiDBUtils.findGuestOsCategoryById(guestOS.getCategoryId());
         if (category != null) {
             response.setOsCategoryId(category.getUuid());
+            response.setOsCategoryName(category.getName());
         }
 
         response.setObjectName("ostype");
diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index cf9661ad174..b36fb54c8e5 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -785,6 +785,7 @@
 "label.guest.ip.range": "Guest IP range",
 "label.guest.netmask": "Guest netmask",
 "label.guest.networks": "Guest networks",
+"label.guest.os": "Guest OS",
 "label.guest.os.mappings": "Guest OS mappings",
 "label.guest.start.ip": "Guest start IP",
 "label.guest.traffic": "Guest traffic",
@@ -1246,6 +1247,7 @@
 "label.optional": "Optional",
 "label.order": "Order",
 "label.oscategoryid": "OS preference",
+"label.oscategoryname": "OS category name",
 "label.osdisplayname": "OS name",
 "label.osnameforhypervisor": "Hypervisor mapping name",
 "label.ostypeid": "OS type",
diff --git a/ui/src/components/view/ListView.vue b/ui/src/components/view/ListView.vue
index 521cdbdc7bf..a7f0be697c7 100644
--- a/ui/src/components/view/ListView.vue
+++ b/ui/src/components/view/ListView.vue
@@ -178,6 +178,9 @@
       <span v-if="$route.name === 'hypervisorcapability'">
         <router-link :to="{ path: $route.path + '/' + record.id }">{{ text }}</router-link>
       </span>
+      <span v-else-if="$route.name === 'guestos'">
+        <router-link :to="{ path: $route.path + '/' + record.id }">{{ text }}</router-link>
+      </span>
       <span v-else-if="$route.name === 'guestoshypervisormapping'">
         <router-link :to="{ path: $route.path + '/' + record.id }">{{ text }}</router-link>
       </span>
diff --git a/ui/src/config/section/config.js b/ui/src/config/section/config.js
index da9a1ea3f10..fdb9ad99fef 100644
--- a/ui/src/config/section/config.js
+++ b/ui/src/config/section/config.js
@@ -83,6 +83,24 @@ export default {
         }
       ]
     },
+    {
+      name: 'guestos',
+      title: 'label.guest.os',
+      icon: 'database-outlined',
+      permission: ['listOsTypes'],
+      columns: ['description', 'oscategoryname', 'isuserdefined'],
+      details: ['description', 'oscategoryname', 'isuserdefined'],
+      searchFilters: ['description'],
+      actions: [
+        {
+          api: 'updateGuestOs',
+          icon: 'edit-outlined',
+          label: 'label.edit',
+          dataView: true,
+          args: ['osdisplayname']
+        }
+      ]
+    },
     {
       name: 'guestoshypervisormapping',
       title: 'label.guest.os.mappings',
@@ -91,7 +109,7 @@ export default {
       columns: ['hypervisor', 'hypervisorversion', 'osdisplayname', 'osnameforhypervisor'],
       details: ['hypervisor', 'hypervisorversion', 'osdisplayname', 'osnameforhypervisor', 'isuserdefined'],
       filters: ['all', 'kvm', 'vmware', 'xenserver', 'lxc', 'ovm3'],
-      searchFilters: ['hypervisor', 'hypervisorversion'],
+      searchFilters: ['osdisplayname', 'hypervisor', 'hypervisorversion'],
       actions: [
         {
           api: 'updateGuestOsMapping',
diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue
index c707cabae6b..59f2c63165c 100644
--- a/ui/src/views/AutogenView.vue
+++ b/ui/src/views/AutogenView.vue
@@ -56,7 +56,7 @@
                     :value="$route.query.filter || (projectView && $route.name === 'vm' ||
                       ['Admin', 'DomainAdmin'].includes($store.getters.userInfo.roletype) && ['vm', 'iso', 'template'].includes($route.name)
                       ? 'all' : ['publicip'].includes($route.name)
-                        ? 'allocated' : ['guestnetwork', 'guestvlans', 'guestoshypervisormapping'].includes($route.name) ? 'all' : 'self')"
+                        ? 'allocated' : ['guestnetwork', 'guestvlans'].includes($route.name) ? 'all' : 'self')"
                     style="min-width: 120px; margin-left: 10px"
                     @change="changeFilter"
                     showSearch
@@ -1595,6 +1595,8 @@ export default {
               query.name = value
             } else if (this.$route.name === 'guestoshypervisormapping') {
               query.hypervisor = value
+            } else if (this.$route.name === 'guestos') {
+              query.description = value
             } else {
               query.keyword = value
             }