This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 723ace8b78 Make DisplayText Non-Mandatory for Various Forms. (#7180)
723ace8b78 is described below
commit 723ace8b78440c0726685eaf05ec4a0ba263d5cc
Author: Rahul Agarwal <[email protected]>
AuthorDate: Wed Apr 5 20:11:16 2023 +0530
Make DisplayText Non-Mandatory for Various Forms. (#7180)
Co-authored-by: Rahul Agarwal <[email protected]>
Co-authored-by: dahn <[email protected]>
Co-authored-by: João Jandre <[email protected]>
---
.../admin/network/CreateNetworkOfferingCmd.java | 5 +-
.../admin/offering/CreateDiskOfferingCmd.java | 5 +-
.../admin/offering/CreateServiceOfferingCmd.java | 7 +-
.../command/admin/vpc/CreateVPCOfferingCmd.java | 5 +-
.../api/command/user/iso/RegisterIsoCmd.java | 6 +-
.../api/command/user/project/CreateProjectCmd.java | 5 +-
.../command/user/template/CreateTemplateCmd.java | 6 +-
.../command/user/template/RegisterTemplateCmd.java | 6 +-
.../api/command/user/vpc/CreateVPCCmd.java | 7 +-
.../admin/offering/CreateDiskOfferingCmdTest.java | 37 +++++++
.../offering/CreateNetworkOfferingCmdTest.java | 37 +++++++
.../offering/CreateServiceOfferingCmdTest.java | 40 +++++++
.../admin/vpc/CreateVPCOfferingCmdTest.java | 10 ++
.../api/command/user/iso/RegisterIsoCmdTest.java | 40 +++++++
.../command/user/project/CreateProjectCmdTest.java | 40 +++++++
.../user/template/RegisterTemplateCmdTest.java | 10 ++
.../api/command/user/vpc/CreateVPCCmdTest.java | 6 +
.../networkoffering/CreateNetworkOfferingTest.java | 1 -
server/src/test/resources/db.properties | 2 +-
test/integration/smoke/test_projects.py | 122 +++++++++++++++++++++
ui/src/views/image/RegisterOrUploadIso.vue | 1 -
ui/src/views/image/RegisterOrUploadTemplate.vue | 1 -
ui/src/views/network/CreateVpc.vue | 1 -
ui/src/views/offering/AddComputeOffering.vue | 1 -
ui/src/views/offering/AddDiskOffering.vue | 1 -
ui/src/views/offering/AddNetworkOffering.vue | 1 -
ui/src/views/offering/AddVpcOffering.vue | 1 -
27 files changed, 370 insertions(+), 34 deletions(-)
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
index ac6dee1aea..8bf6fce881 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
@@ -28,6 +28,7 @@ import java.util.Set;
import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
@@ -58,7 +59,7 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required =
true, description = "the name of the network offering")
private String networkOfferingName;
- @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
required = true, description = "the display text of the network offering")
+ @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
description = "the display text of the network offering, defaults to the value
of 'name'.")
private String displayText;
@Parameter(name = ApiConstants.TRAFFIC_TYPE,
@@ -182,7 +183,7 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? networkOfferingName :
displayText;
}
public String getTags() {
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
index 304b29071e..c2d8b3b683 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmd.java
@@ -36,6 +36,7 @@ import
org.apache.cloudstack.api.response.VsphereStoragePoliciesResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import com.cloud.offering.DiskOffering;
@@ -56,7 +57,7 @@ public class CreateDiskOfferingCmd extends BaseCmd {
@Parameter(name = ApiConstants.DISK_SIZE, type = CommandType.LONG,
required = false, description = "size of the disk offering in GB (1GB =
1,073,741,824 bytes)")
private Long diskSize;
- @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
required = true, description = "alternate display text of the disk offering",
length = 4096)
+ @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
description = "An alternate display text of the disk offering, defaults to
'name'.", length = 4096)
private String displayText;
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required =
true, description = "name of the disk offering")
@@ -179,7 +180,7 @@ public class CreateDiskOfferingCmd extends BaseCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? offeringName : displayText;
}
public String getOfferingName() {
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
index 24f5682a21..d947f6f065 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java
@@ -59,7 +59,7 @@ public class CreateServiceOfferingCmd extends BaseCmd {
@Parameter(name = ApiConstants.CPU_SPEED, type = CommandType.INTEGER,
required = false, description = "the CPU speed of the service offering in MHz.")
private Integer cpuSpeed;
- @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
required = true, description = "the display text of the service offering")
+ @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
description = "The display text of the service offering, defaults to 'name'.")
private String displayText;
@Parameter(name = ApiConstants.PROVISIONINGTYPE, type =
CommandType.STRING, description = "provisioning type used to create volumes.
Valid values are thin, sparse, fat.")
@@ -258,10 +258,7 @@ public class CreateServiceOfferingCmd extends BaseCmd {
}
public String getDisplayText() {
- if (StringUtils.isEmpty(displayText)) {
- throw new InvalidParameterValueException("Failed to create service
offering because the offering display text has not been spified.");
- }
- return displayText;
+ return StringUtils.isEmpty(displayText) ? serviceOfferingName :
displayText;
}
public String getProvisioningType() {
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java
index f1c2a5b48a..b69e7f4a82 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java
@@ -28,6 +28,7 @@ import java.util.Set;
import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
@@ -56,7 +57,7 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd {
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required =
true, description = "the name of the vpc offering")
private String vpcOfferingName;
- @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
required = true, description = "the display text of " + "the vpc offering")
+ @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
description = "the display text of the vpc offering, defaults to the 'name'")
private String displayText;
@Parameter(name = ApiConstants.SUPPORTED_SERVICES,
@@ -115,7 +116,7 @@ public class CreateVPCOfferingCmd extends
BaseAsyncCreateCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? vpcOfferingName :
displayText;
}
public List<String> getSupportedServices() {
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java
index 47018b3b38..ecab3930e8 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmd.java
@@ -34,6 +34,7 @@ import org.apache.cloudstack.api.response.ProjectResponse;
import org.apache.cloudstack.api.response.TemplateResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import com.cloud.exception.ResourceAllocationException;
@@ -55,8 +56,7 @@ public class RegisterIsoCmd extends BaseCmd implements
UserCmd {
@Parameter(name = ApiConstants.DISPLAY_TEXT,
type = CommandType.STRING,
- required = true,
- description = "the display text of the ISO. This is usually
used for display purposes.",
+ description = "the display text of the ISO, defaults to the
'name'",
length = 4096)
private String displayText;
@@ -133,7 +133,7 @@ public class RegisterIsoCmd extends BaseCmd implements
UserCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? isoName : displayText;
}
public void setDisplayText(String displayText) {
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java
index a0902d6b66..a5742e8d0d 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/user/project/CreateProjectCmd.java
@@ -27,6 +27,7 @@ import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.cloudstack.api.response.ProjectResponse;
import org.apache.cloudstack.api.response.UserResponse;
import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
@@ -61,7 +62,7 @@ public class CreateProjectCmd extends BaseAsyncCreateCmd {
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required =
true, description = "name of the project")
private String name;
- @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
required = true, description = "display text of the project")
+ @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
description = "The display text of the project, defaults to the 'name´.")
private String displayText;
// ///////////////////////////////////////////////////
@@ -98,7 +99,7 @@ public class CreateProjectCmd extends BaseAsyncCreateCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? name : displayText;
}
@Override
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java
index a21cbfbdef..ea4b5995bf 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/user/template/CreateTemplateCmd.java
@@ -29,6 +29,7 @@ import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
import org.apache.cloudstack.api.response.ProjectResponse;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
@@ -67,8 +68,7 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd
implements UserCmd {
@Parameter(name = ApiConstants.DISPLAY_TEXT,
type = CommandType.STRING,
- required = true,
- description = "the display text of the template. This is
usually used for display purposes.",
+ description = "The display text of the template, defaults to
the 'name'.",
length = 4096)
private String displayText;
@@ -144,7 +144,7 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd
implements UserCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? templateName : displayText;
}
public Boolean isFeatured() {
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java
index 255b11aaa2..1a5e851d88 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmd.java
@@ -39,6 +39,7 @@ import org.apache.cloudstack.api.response.ProjectResponse;
import org.apache.cloudstack.api.response.TemplateResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.context.CallContext;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import com.cloud.exception.ResourceAllocationException;
@@ -60,8 +61,7 @@ public class RegisterTemplateCmd extends BaseCmd implements
UserCmd {
@Parameter(name = ApiConstants.DISPLAY_TEXT,
type = CommandType.STRING,
- required = true,
- description = "the display text of the template. This is
usually used for display purposes.",
+ description = "The display text of the template, defaults to
'name'.",
length = 4096)
private String displayText;
@@ -176,7 +176,7 @@ public class RegisterTemplateCmd extends BaseCmd implements
UserCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? templateName : displayText;
}
public String getFormat() {
diff --git
a/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
b/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
index af7004941b..40048a2cd6 100644
---
a/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
+++
b/api/src/main/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
@@ -17,6 +17,7 @@
package org.apache.cloudstack.api.command.user.vpc;
import com.cloud.network.NetworkService;
+import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
@@ -72,8 +73,8 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd
implements UserCmd {
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required =
true, description = "the name of the VPC")
private String vpcName;
- @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
required = true, description = "the display text of " +
- "the VPC")
+ @Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING,
description = "The display text of the VPC, defaults to its 'name'.")
+
private String displayText;
@Parameter(name = ApiConstants.CIDR, type = CommandType.STRING, required =
true, description = "the cidr of the VPC. All VPC " +
@@ -137,7 +138,7 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd
implements UserCmd {
}
public String getDisplayText() {
- return displayText;
+ return StringUtils.isEmpty(displayText) ? vpcName : displayText;
}
public Long getVpcOffering() {
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmdTest.java
new file mode 100644
index 0000000000..e28720f6aa
--- /dev/null
+++
b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateDiskOfferingCmdTest.java
@@ -0,0 +1,37 @@
+// 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.cloudstack.api.command.admin.offering;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.springframework.test.util.ReflectionTestUtils;
+
+public class CreateDiskOfferingCmdTest {
+
+ @InjectMocks
+ private CreateDiskOfferingCmd createDiskOfferingCmd = new
CreateDiskOfferingCmd();
+
+ @Test
+ public void testGetDisplayTextWhenEmpty() {
+ String netName = "net-offering";
+ ReflectionTestUtils.setField(createDiskOfferingCmd , "offeringName",
netName);
+ Assert.assertEquals(createDiskOfferingCmd.getDisplayText(), netName);
+ }
+
+}
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateNetworkOfferingCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateNetworkOfferingCmdTest.java
new file mode 100644
index 0000000000..8b95456a84
--- /dev/null
+++
b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateNetworkOfferingCmdTest.java
@@ -0,0 +1,37 @@
+// 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.cloudstack.api.command.admin.offering;
+
+import
org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.springframework.test.util.ReflectionTestUtils;
+
+public class CreateNetworkOfferingCmdTest {
+
+ @InjectMocks
+ private CreateNetworkOfferingCmd createNetworkOfferingCmd = new
CreateNetworkOfferingCmd();
+
+ @Test
+ public void createVpcNtwkOffWithEmptyDisplayText() {
+ String netName = "network";
+ ReflectionTestUtils.setField(createNetworkOfferingCmd,
"networkOfferingName", netName);
+ Assert.assertEquals(createNetworkOfferingCmd.getDisplayText(),
netName);
+ }
+}
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmdTest.java
new file mode 100644
index 0000000000..717b5c3262
--- /dev/null
+++
b/api/src/test/java/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmdTest.java
@@ -0,0 +1,40 @@
+// 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.cloudstack.api.command.admin.offering;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.springframework.test.util.ReflectionTestUtils;
+
+@RunWith(MockitoJUnitRunner.class)
+public class CreateServiceOfferingCmdTest {
+
+ @InjectMocks
+ private CreateServiceOfferingCmd createServiceOfferingCmd;
+
+ @Test
+ public void testGetDisplayTextWhenEmpty() {
+ String netName = "net-offering";
+ ReflectionTestUtils.setField(createServiceOfferingCmd,
"serviceOfferingName", netName);
+ Assert.assertEquals(createServiceOfferingCmd.getDisplayText(),
netName);
+ }
+
+}
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmdTest.java
index 18a2882c67..16b716d7d6 100644
---
a/api/src/test/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmdTest.java
+++
b/api/src/test/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmdTest.java
@@ -25,6 +25,8 @@ import org.junit.Test;
import org.apache.cloudstack.api.ApiCmdTestUtil;
import org.apache.cloudstack.api.ApiConstants;
+import org.springframework.test.util.ReflectionTestUtils;
+
public class CreateVPCOfferingCmdTest {
@@ -61,4 +63,12 @@ public class CreateVPCOfferingCmdTest {
Assert.assertNull(cmd.getServiceProviders());
}
+ @Test
+ public void testCreateVPCOfferingWithEmptyDisplayText() {
+ CreateVPCOfferingCmd cmd = new CreateVPCOfferingCmd();
+ String netName = "net-vpc";
+ ReflectionTestUtils.setField(cmd,"vpcOfferingName", netName);
+ Assert.assertEquals(cmd.getDisplayText(), netName);
+ }
+
}
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmdTest.java
new file mode 100644
index 0000000000..55a41c61ce
--- /dev/null
+++
b/api/src/test/java/org/apache/cloudstack/api/command/user/iso/RegisterIsoCmdTest.java
@@ -0,0 +1,40 @@
+// 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.cloudstack.api.command.user.iso;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.springframework.test.util.ReflectionTestUtils;
+
+@RunWith(MockitoJUnitRunner.class)
+public class RegisterIsoCmdTest {
+
+ @InjectMocks
+ private RegisterIsoCmd registerIsoCmd = new RegisterIsoCmd();
+
+ @Test
+ public void testGetDisplayTextWhenEmpty() {
+ String netName = "net-iso";
+ ReflectionTestUtils.setField(registerIsoCmd, "isoName", netName);
+ Assert.assertEquals(registerIsoCmd.getDisplayText(), netName);
+ }
+
+}
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/user/project/CreateProjectCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/user/project/CreateProjectCmdTest.java
new file mode 100644
index 0000000000..ee3193123e
--- /dev/null
+++
b/api/src/test/java/org/apache/cloudstack/api/command/user/project/CreateProjectCmdTest.java
@@ -0,0 +1,40 @@
+// 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.cloudstack.api.command.user.project;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.springframework.test.util.ReflectionTestUtils;
+
+@RunWith(MockitoJUnitRunner.class)
+public class CreateProjectCmdTest {
+
+ @InjectMocks
+ private CreateProjectCmd createProjectCmd = new CreateProjectCmd();
+
+ @Test
+ public void testGetDisplayTextWhenEmpty() {
+ String netName = "net-project";
+ ReflectionTestUtils.setField(createProjectCmd , "name", netName);
+ Assert.assertEquals(createProjectCmd.getDisplayText(), netName);
+ }
+
+}
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmdTest.java
index dfd3b6e2e2..0c31e50151 100644
---
a/api/src/test/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmdTest.java
+++
b/api/src/test/java/org/apache/cloudstack/api/command/user/template/RegisterTemplateCmdTest.java
@@ -30,6 +30,8 @@ import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
+import org.springframework.test.util.ReflectionTestUtils;
+
import java.util.ArrayList;
@RunWith(MockitoJUnitRunner.class)
@@ -139,4 +141,12 @@ public class RegisterTemplateCmdTest {
testIsDeployAsIsBase(Hypervisor.HypervisorType.XenServer, true, false);
testIsDeployAsIsBase(Hypervisor.HypervisorType.Any, true, false);
}
+
+ @Test
+ public void testGetDisplayTextWhenEmpty() {
+ registerTemplateCmd = new RegisterTemplateCmd();
+ String netName = "net-template";
+ ReflectionTestUtils.setField(registerTemplateCmd , "templateName",
netName);
+ Assert.assertEquals(registerTemplateCmd.getDisplayText(), netName);
+ }
}
diff --git
a/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java
b/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java
index 92ac005787..17c8e2392e 100644
---
a/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java
+++
b/api/src/test/java/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmdTest.java
@@ -133,6 +133,12 @@ public class CreateVPCCmdTest extends TestCase {
Assert.assertTrue(cmd.getDisplayVpc());
}
+ public void testGetDisplayTextWhenEmpty() {
+ String netName = "net-vpc";
+ ReflectionTestUtils.setField(cmd, "vpcName", netName);
+ Assert.assertEquals(cmd.getDisplayText(), netName);
+ }
+
public void testCreate() throws ResourceAllocationException {
Vpc vpc = Mockito.mock(Vpc.class);
ReflectionTestUtils.setField(cmd, "zoneId", 1L);
diff --git
a/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
b/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
index 72bd7bb0cd..a37b3afea3 100644
---
a/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
+++
b/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
@@ -249,5 +249,4 @@ public class CreateNetworkOfferingTest extends TestCase {
// System.out.println("Creating Vpc Network Offering");
assertNotNull("Vpc Isolated network offering with Vpc and Netscaler
provider ", off);
}
-
}
diff --git a/server/src/test/resources/db.properties
b/server/src/test/resources/db.properties
index 5eefc45ea5..e1cc0487ae 100644
--- a/server/src/test/resources/db.properties
+++ b/server/src/test/resources/db.properties
@@ -17,7 +17,7 @@
# management server clustering parameters, change cluster.node.IP to the
machine IP address
-# in which the management server is running
+# in which the management server is running
cluster.node.IP=127.0.0.1
cluster.servlet.port=9090
diff --git a/test/integration/smoke/test_projects.py
b/test/integration/smoke/test_projects.py
index 79d364fa47..91fc722527 100644
--- a/test/integration/smoke/test_projects.py
+++ b/test/integration/smoke/test_projects.py
@@ -1820,3 +1820,125 @@ class TestProjectSuspendActivate(cloudstackTestCase):
"VM should be in Running state after project activation"
)
return
+
+class TestProjectWithEmptyDisplayText(cloudstackTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ cls.testClient = super(
+ TestProjectWithEmptyDisplayText,
+ cls).getClsTestClient()
+ cls.api_client = cls.testClient.getApiClient()
+
+ cls.services = Services().services
+ # Get Zone
+ cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests())
+ cls.hypervisor = cls.testClient.getHypervisorInfo()
+ cls.domain = get_domain(cls.api_client)
+ cls.services['mode'] = cls.zone.networktype
+ cls.template = get_test_template(
+ cls.api_client,
+ cls.zone.id,
+ cls.hypervisor
+ )
+ cls._cleanup = []
+ cls.isGlobalSettingInvalid = False
+ configs = Configurations.list(
+ cls.api_client,
+ name='project.invite.required'
+ )
+
+ if (configs[0].value).lower() != 'false':
+ cls.isGlobalSettingInvalid = True
+ return
+
+ # Create account, service offering, disk offering etc.
+ cls.disk_offering = DiskOffering.create(
+ cls.api_client,
+ cls.services["disk_offering"]
+ )
+ cls._cleanup.append(cls.disk_offering)
+ cls.service_offering = ServiceOffering.create(
+ cls.api_client,
+ cls.services["service_offering"],
+ domainid=cls.domain.id
+ )
+ cls._cleanup.append(cls.service_offering)
+ cls.account = Account.create(
+ cls.api_client,
+ cls.services["account"],
+ admin=True,
+ domainid=cls.domain.id
+ )
+ cls._cleanup.append(cls.account)
+ cls.user = Account.create(
+ cls.api_client,
+ cls.services["account"],
+ admin=True,
+ domainid=cls.domain.id
+ )
+ cls._cleanup.append(cls.user)
+
+ # Create project as a domain admin
+ cls.project = Project.create(
+ cls.api_client,
+ cls.services["project"],
+ account=cls.account.name,
+ domainid=cls.account.domainid
+ )
+ cls._cleanup.append(cls.project)
+ cls.services["virtual_machine"]["zoneid"] = cls.zone.id
+ return
+
+ @classmethod
+ def tearDownClass(cls):
+ super(TestProjectWithEmptyDisplayText, cls).tearDownClass()
+
+ def setUp(self):
+ self.apiclient = self.testClient.getApiClient()
+ self.dbclient = self.testClient.getDbConnection()
+ self.cleanup = []
+
+ if self.isGlobalSettingInvalid:
+ self.skipTest("'project.invite.required' should be set to false")
+ return
+
+ def tearDown(self):
+ super(TestProjectWithEmptyDisplayText, self).tearDown()
+
+ @attr(
+ tags=[
+ "advanced",
+ "basic",
+ "sg",
+ "eip",
+ "advancedns",
+ "simulator"],
+ required_hardware="false")
+ def test_11_create_project_with_empty_displayText(self):
+ """ create Project with Empty DisplayText
+ """
+ # Validate the following
+ # 1. Create a project.
+ # 2. Give empty displayText
+ # 3. Verify displayText takes content of Project name.
+
+ self.services["project"]["displaytext"] = ""
+
+ # Create project as a domain admin
+ project = Project.create(
+ self.apiclient,
+ self.services["project"],
+ account=self.account.name,
+ domainid=self.account.domainid
+ )
+
+ self.cleanup.append(project)
+
+ self.assertEqual(
+ project.displaytext,
+ project.name,
+ "displayText does not matches project name"
+ )
+
+ return
diff --git a/ui/src/views/image/RegisterOrUploadIso.vue
b/ui/src/views/image/RegisterOrUploadIso.vue
index cf1435a603..6219429a7f 100644
--- a/ui/src/views/image/RegisterOrUploadIso.vue
+++ b/ui/src/views/image/RegisterOrUploadIso.vue
@@ -260,7 +260,6 @@ export default {
url: [{ required: true, message:
this.$t('label.upload.iso.from.local') }],
file: [{ required: true, message:
this.$t('message.error.required.input') }],
name: [{ required: true, message:
this.$t('message.error.required.input') }],
- displaytext: [{ required: true, message:
this.$t('message.error.required.input') }],
zoneid: [{ required: true, message: this.$t('message.error.select') }],
ostypeid: [{ required: true, message: this.$t('message.error.select')
}]
})
diff --git a/ui/src/views/image/RegisterOrUploadTemplate.vue
b/ui/src/views/image/RegisterOrUploadTemplate.vue
index e4d4687c32..500d027074 100644
--- a/ui/src/views/image/RegisterOrUploadTemplate.vue
+++ b/ui/src/views/image/RegisterOrUploadTemplate.vue
@@ -441,7 +441,6 @@ export default {
url: [{ required: true, message:
this.$t('message.error.required.input') }],
file: [{ required: true, message:
this.$t('message.error.required.input') }],
name: [{ required: true, message:
this.$t('message.error.required.input') }],
- displaytext: [{ required: true, message:
this.$t('message.error.required.input') }],
zoneids: [
{ type: 'array', required: true, message:
this.$t('message.error.select') },
{
diff --git a/ui/src/views/network/CreateVpc.vue
b/ui/src/views/network/CreateVpc.vue
index fb2d110f92..663538f97b 100644
--- a/ui/src/views/network/CreateVpc.vue
+++ b/ui/src/views/network/CreateVpc.vue
@@ -222,7 +222,6 @@ export default {
})
this.rules = reactive({
name: [{ required: true, message:
this.$t('message.error.required.input') }],
- displaytext: [{ required: true, message:
this.$t('message.error.required.input') }],
zoneid: [{ required: true, message: this.$t('label.required') }],
cidr: [{ required: true, message:
this.$t('message.error.required.input') }],
vpcofferingid: [{ required: true, message: this.$t('label.required') }]
diff --git a/ui/src/views/offering/AddComputeOffering.vue
b/ui/src/views/offering/AddComputeOffering.vue
index ae8e07e652..e5127becc7 100644
--- a/ui/src/views/offering/AddComputeOffering.vue
+++ b/ui/src/views/offering/AddComputeOffering.vue
@@ -707,7 +707,6 @@ export default {
})
this.rules = reactive({
name: [{ required: true, message:
this.$t('message.error.required.input') }],
- displaytext: [{ required: true, message:
this.$t('message.error.required.input') }],
cpunumber: [
{ required: true, message: this.$t('message.error.required.input') },
this.naturalNumberRule
diff --git a/ui/src/views/offering/AddDiskOffering.vue
b/ui/src/views/offering/AddDiskOffering.vue
index 880eae5135..f11380aaf6 100644
--- a/ui/src/views/offering/AddDiskOffering.vue
+++ b/ui/src/views/offering/AddDiskOffering.vue
@@ -357,7 +357,6 @@ export default {
})
this.rules = reactive({
name: [{ required: true, message:
this.$t('message.error.required.input') }],
- displaytext: [{ required: true, message:
this.$t('message.error.required.input') }],
disksize: [
{ required: true, message: this.$t('message.error.required.input') },
{ type: 'number', validator: this.validateNumber }
diff --git a/ui/src/views/offering/AddNetworkOffering.vue
b/ui/src/views/offering/AddNetworkOffering.vue
index abdb9da05f..80159f3c11 100644
--- a/ui/src/views/offering/AddNetworkOffering.vue
+++ b/ui/src/views/offering/AddNetworkOffering.vue
@@ -577,7 +577,6 @@ export default {
})
this.rules = reactive({
name: [{ required: true, message: this.$t('message.error.name') }],
- displaytext: [{ required: true, message:
this.$t('message.error.description') }],
networkrate: [{ type: 'number', validator: this.validateNumber }],
serviceofferingid: [{ required: true, message:
this.$t('message.error.select') }],
domainid: [{ type: 'array', required: true, message:
this.$t('message.error.select') }],
diff --git a/ui/src/views/offering/AddVpcOffering.vue
b/ui/src/views/offering/AddVpcOffering.vue
index 9b9d576517..07f36f8f3a 100644
--- a/ui/src/views/offering/AddVpcOffering.vue
+++ b/ui/src/views/offering/AddVpcOffering.vue
@@ -245,7 +245,6 @@ export default {
})
this.rules = reactive({
name: [{ required: true, message: this.$t('message.error.name') }],
- displaytext: [{ required: true, message:
this.$t('message.error.description') }],
domainid: [{ type: 'array', required: true, message:
this.$t('message.error.select') }],
zoneid: [{
type: 'array',