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

shwstppr pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit acce88ff392c72c0de558fb16ea0a6e18cfd98bf
Merge: e817e04343a 57e67afdf0d
Author: Abhishek Kumar <[email protected]>
AuthorDate: Mon May 27 15:14:29 2024 +0530

    Merge remote-tracking branch 'apache/4.19'

 .../org/apache/cloudstack/api/ApiConstants.java    |  1 +
 .../cloudstack/api/response/UserVmResponse.java    | 12 ++++
 .../META-INF/db/views/cloud.user_vm_view.sql       |  1 +
 .../com/cloud/api/query/dao/UserVmJoinDaoImpl.java |  1 +
 .../java/com/cloud/api/query/vo/UserVmJoinVO.java  |  8 +++
 .../com/cloud/network/as/AutoScaleManagerImpl.java |  5 ++
 .../cloud/api/query/dao/UserVmJoinDaoImplTest.java | 40 ++++++------
 ui/src/components/view/InfoCard.vue                |  2 +-
 ui/src/config/section/image.js                     |  2 +-
 ui/src/views/image/RegisterOrUploadIso.vue         | 71 +++++++++++++---------
 ui/src/views/image/UpdateISO.vue                   |  8 ++-
 .../views/project/iam/ProjectRolePermissionTab.vue |  2 +-
 12 files changed, 100 insertions(+), 53 deletions(-)

diff --cc 
server/src/test/java/com/cloud/api/query/dao/UserVmJoinDaoImplTest.java
index fa95aefbd87,95878c00b66..28bb998c5ce
--- a/server/src/test/java/com/cloud/api/query/dao/UserVmJoinDaoImplTest.java
+++ b/server/src/test/java/com/cloud/api/query/dao/UserVmJoinDaoImplTest.java
@@@ -16,20 -16,11 +16,12 @@@
  // under the License.
  package com.cloud.api.query.dao;
  
- import com.cloud.api.query.vo.UserVmJoinVO;
- import com.cloud.storage.Storage;
- import com.cloud.storage.VnfTemplateDetailVO;
- import com.cloud.storage.VnfTemplateNicVO;
- import com.cloud.storage.dao.VnfTemplateDetailsDao;
- import com.cloud.storage.dao.VnfTemplateNicDao;
- import com.cloud.user.Account;
- import com.cloud.user.AccountManager;
- import com.cloud.user.UserStatisticsVO;
- import com.cloud.user.dao.UserDao;
- import com.cloud.user.dao.UserStatisticsDao;
- import com.cloud.utils.db.SearchBuilder;
- import com.cloud.utils.db.SearchCriteria;
- import com.cloud.vm.dao.UserVmDetailsDao;
+ import static org.mockito.ArgumentMatchers.nullable;
++import static org.mockito.MockitoAnnotations.openMocks;
+ 
+ import java.util.Arrays;
+ import java.util.EnumSet;
+ 
  import org.apache.cloudstack.annotation.dao.AnnotationDao;
  import org.apache.cloudstack.api.ApiConstants;
  import org.apache.cloudstack.api.ResponseObject;
diff --cc ui/src/config/section/image.js
index e6095c4aba1,aa21b262037..1f7fa0f30e3
--- a/ui/src/config/section/image.js
+++ b/ui/src/config/section/image.js
@@@ -231,7 -231,7 +231,7 @@@ export default 
          }
          return fields
        },
-       details: ['name', 'id', 'displaytext', 'checksum', 'ostypename', 
'size', 'bootable', 'isready', 'passwordenabled', 'directdownload', 
'isextractable', 'ispublic', 'isfeatured', 'crosszones', 'account', 'domain', 
'created', 'userdatadetails', 'userdatapolicy', 'url'],
 -      details: ['name', 'id', 'displaytext', 'checksum', 'ostypename', 
'size', 'bootable', 'isready', 'directdownload', 'isextractable', 'ispublic', 
'isfeatured', 'isdynamicallyscalable', 'crosszones', 'account', 'domain', 
'created', 'userdatadetails', 'userdatapolicy', 'url'],
++      details: ['name', 'id', 'displaytext', 'checksum', 'ostypename', 
'size', 'bootable', 'isready', 'passwordenabled', 'directdownload', 
'isextractable', 'ispublic', 'isfeatured', 'isdynamicallyscalable', 
'crosszones', 'account', 'domain', 'created', 'userdatadetails', 
'userdatapolicy', 'url'],
        searchFilters: () => {
          var filters = ['name', 'zoneid', 'tags']
          if (['Admin', 
'DomainAdmin'].includes(store.getters.userInfo.roletype)) {
diff --cc ui/src/views/image/RegisterOrUploadIso.vue
index 746cdb2f984,f27676b8e7f..edc6b82b92d
--- a/ui/src/views/image/RegisterOrUploadIso.vue
+++ b/ui/src/views/image/RegisterOrUploadIso.vue
@@@ -227,35 -227,39 +227,45 @@@
            </a-col>
          </a-row>
  
-         <a-form-item ref="isextractable" name="isextractable">
-           <template #label>
-             <tooltip-label :title="$t('label.isextractable')" 
:tooltip="apiParams.isextractable.description"/>
-           </template>
-           <a-switch v-model:checked="form.isextractable" />
-         </a-form-item>
- 
-         <a-form-item
-           ref="ispublic"
-           name="ispublic"
-           v-if="$store.getters.userInfo.roletype === 'Admin' || 
$store.getters.features.userpublictemplateenabled" >
-           <template #label>
-             <tooltip-label :title="$t('label.ispublic')" 
:tooltip="apiParams.ispublic.description"/>
-           </template>
-           <a-switch v-model:checked="form.ispublic" />
-         </a-form-item>
- 
-         <a-form-item ref="isfeatured" name="isfeatured" 
v-if="$store.getters.userInfo.roletype === 'Admin'">
-           <template #label>
-             <tooltip-label :title="$t('label.isfeatured')" 
:tooltip="apiParams.isfeatured.description"/>
-           </template>
-           <a-switch v-model:checked="form.isfeatured" />
-         </a-form-item>
-         <a-form-item ref="passwordenabled" name="passwordenabled" 
v-if="currentForm === 'Create'">
-           <template #label>
-             <tooltip-label :title="$t('label.passwordenabled')" 
:tooltip="apiParams.passwordenabled.description"/>
-           </template>
-           <a-switch v-model:checked="form.passwordenabled" />
-         </a-form-item>
+         <a-row :gutter="12">
+           <a-col :md="24" :lg="12">
+             <a-form-item ref="isdynamicallyscalable" 
name="isdynamicallyscalable">
+               <template #label>
+                 <tooltip-label :title="$t('label.isdynamicallyscalable')" 
:tooltip="apiParams.isdynamicallyscalable.description"/>
+               </template>
+               <a-switch v-model:checked="form.isdynamicallyscalable" />
+             </a-form-item>
+             <a-form-item
+               ref="ispublic"
+               name="ispublic"
+               v-if="$store.getters.userInfo.roletype === 'Admin' || 
$store.getters.features.userpublictemplateenabled" >
+               <template #label>
+                 <tooltip-label :title="$t('label.ispublic')" 
:tooltip="apiParams.ispublic.description"/>
+               </template>
+               <a-switch v-model:checked="form.ispublic" />
+             </a-form-item>
++            <a-form-item ref="passwordenabled" name="passwordenabled" 
v-if="currentForm === 'Create'">
++              <template #label>
++                <tooltip-label :title="$t('label.passwordenabled')" 
:tooltip="apiParams.passwordenabled.description"/>
++              </template>
++              <a-switch v-model:checked="form.passwordenabled" />
++            </a-form-item>
+           </a-col>
+           <a-col :md="24" :lg="12">
+             <a-form-item ref="isextractable" name="isextractable">
+               <template #label>
+                 <tooltip-label :title="$t('label.isextractable')" 
:tooltip="apiParams.isextractable.description"/>
+               </template>
+               <a-switch v-model:checked="form.isextractable" />
+             </a-form-item>
+             <a-form-item ref="isfeatured" name="isfeatured" 
v-if="$store.getters.userInfo.roletype === 'Admin'">
+               <template #label>
+                 <tooltip-label :title="$t('label.isfeatured')" 
:tooltip="apiParams.isfeatured.description"/>
+               </template>
+               <a-switch v-model:checked="form.isfeatured" />
+             </a-form-item>
+           </a-col>
+         </a-row>
  
          <div :span="24" class="action-button">
            <a-button @click="closeAction">{{ $t('label.cancel') }}</a-button>
@@@ -339,7 -343,7 +349,8 @@@ export default 
          bootable: true,
          isextractable: false,
          ispublic: false,
-         passwordenabled: false
++        passwordenabled: false,
+         isdynamicallyscalable: false
        })
        this.rules = reactive({
          url: [{ required: true, message: 
this.$t('label.upload.iso.from.local') }],
diff --cc ui/src/views/image/UpdateISO.vue
index f718f1c030c,92386823c16..e3594a3c1e1
--- a/ui/src/views/image/UpdateISO.vue
+++ b/ui/src/views/image/UpdateISO.vue
@@@ -168,7 -168,7 +174,7 @@@ export default 
          displaytext: [{ required: true, message: 
this.$t('message.error.required.input') }],
          ostypeid: [{ required: true, message: this.$t('message.error.select') 
}]
        })
-       const resourceFields = ['name', 'displaytext', 'passwordenabled', 
'ostypeid', 'userdataid', 'userdatapolicy']
 -      const resourceFields = ['name', 'displaytext', 'ostypeid', 
'isdynamicallyscalable', 'userdataid', 'userdatapolicy']
++      const resourceFields = ['name', 'displaytext', 'passwordenabled', 
'isdynamicallyscalable', 'ostypeid', 'userdataid', 'userdatapolicy']
  
        for (var field of resourceFields) {
          var fieldValue = this.resource[field]

Reply via email to