mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Make displayText in createNetwork optional (#7112)
Co-authored-by: Rahul Agarwal <rahul.agarwal@shapeblue.com> Co-authored-by: Stephan Krug <stekrug@icloud.com> Co-authored-by: dahn <daan.hoogland@gmail.com>
This commit is contained in:
parent
e32016d4a1
commit
0efa4f6e51
@ -46,6 +46,7 @@ import com.cloud.network.Network;
|
|||||||
import com.cloud.network.Network.GuestType;
|
import com.cloud.network.Network.GuestType;
|
||||||
import com.cloud.offering.NetworkOffering;
|
import com.cloud.offering.NetworkOffering;
|
||||||
import com.cloud.utils.net.NetUtils;
|
import com.cloud.utils.net.NetUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@APICommand(name = "createNetwork", description = "Creates a network", responseObject = NetworkResponse.class, responseView = ResponseView.Restricted, entityType = {Network.class},
|
@APICommand(name = "createNetwork", description = "Creates a network", responseObject = NetworkResponse.class, responseView = ResponseView.Restricted, entityType = {Network.class},
|
||||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||||
@ -61,7 +62,7 @@ public class CreateNetworkCmd extends BaseCmd implements UserCmd {
|
|||||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "the name of the network")
|
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "the name of the network")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING, required = true, description = "the display text of the network")
|
@Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING, description = "the display text of the network")
|
||||||
private String displayText;
|
private String displayText;
|
||||||
|
|
||||||
@Parameter(name = ApiConstants.NETWORK_OFFERING_ID,
|
@Parameter(name = ApiConstants.NETWORK_OFFERING_ID,
|
||||||
@ -221,7 +222,7 @@ public class CreateNetworkCmd extends BaseCmd implements UserCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getDisplayText() {
|
public String getDisplayText() {
|
||||||
return displayText;
|
return StringUtils.isEmpty(displayText) ? name : displayText;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNetworkDomain() {
|
public String getNetworkDomain() {
|
||||||
|
|||||||
@ -100,12 +100,19 @@ public class CreateNetworkCmdTest extends TestCase {
|
|||||||
Assert.assertEquals(cmd.getNetworkName(), netName);
|
Assert.assertEquals(cmd.getNetworkName(), netName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetDisplayText() {
|
public void testGetDisplayTextWhenNotEmpty() {
|
||||||
String description = "Isolated Network";
|
String description = "Isolated Network";
|
||||||
ReflectionTestUtils.setField(cmd, "displayText", description);
|
ReflectionTestUtils.setField(cmd, "displayText", description);
|
||||||
Assert.assertEquals(cmd.getDisplayText(), description);
|
Assert.assertEquals(cmd.getDisplayText(), description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGetDisplayTextWhenEmpty() {
|
||||||
|
String description = null;
|
||||||
|
String netName = "net-isolated";
|
||||||
|
ReflectionTestUtils.setField(cmd, "name", netName);
|
||||||
|
Assert.assertEquals(cmd.getDisplayText(), netName);
|
||||||
|
}
|
||||||
|
|
||||||
public void testGetNetworkDomain() {
|
public void testGetNetworkDomain() {
|
||||||
String netDomain = "cs1cloud.internal";
|
String netDomain = "cs1cloud.internal";
|
||||||
ReflectionTestUtils.setField(cmd, "networkDomain", netDomain);
|
ReflectionTestUtils.setField(cmd, "networkDomain", netDomain);
|
||||||
|
|||||||
@ -289,3 +289,84 @@ class TestNetworkManagement(cloudstackTestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.cleanup.append(self.network_offering)
|
self.cleanup.append(self.network_offering)
|
||||||
|
|
||||||
|
@attr(tags=["adeancedsg", "Simulator"], required_hardware="false")
|
||||||
|
def test_03_create_network_with_empty_displayText(self):
|
||||||
|
"""Create Shared network with empty displayText
|
||||||
|
and verify value of displayText after network
|
||||||
|
is being created.
|
||||||
|
"""
|
||||||
|
# Update the global setting to true
|
||||||
|
Configurations.update(self.apiclient,
|
||||||
|
name="allow.duplicate.networkname",
|
||||||
|
value="true"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create network offering
|
||||||
|
self.network_offering = NetworkOffering.create(
|
||||||
|
self.apiclient,
|
||||||
|
self.testdata["network_offering_shared"]
|
||||||
|
)
|
||||||
|
self.cleanup.append( self.network_offering)
|
||||||
|
|
||||||
|
NetworkOffering.update(
|
||||||
|
self.network_offering,
|
||||||
|
self.apiclient,
|
||||||
|
id=self.network_offering.id,
|
||||||
|
state="enabled"
|
||||||
|
)
|
||||||
|
|
||||||
|
physical_network, vlan = get_free_vlan(self.apiclient, self.zone.id)
|
||||||
|
self.testdata["shared_network_sg"]["physicalnetworkid"] = physical_network.id
|
||||||
|
|
||||||
|
random_subnet_number = random.randrange(100, 199)
|
||||||
|
self.testdata["shared_network_sg"]["specifyVlan"] = 'True'
|
||||||
|
self.testdata["shared_network_sg"]["specifyIpRanges"] = 'True'
|
||||||
|
self.testdata["shared_network_sg"]["name"] = "Shared-Network-SG-Test-vlan-1"
|
||||||
|
self.testdata["shared_network_sg"]["displayText"] = ''
|
||||||
|
self.testdata["shared_network_sg"]["vlan"] = "vlan://" + str(random_subnet_number)
|
||||||
|
self.testdata["shared_network_sg"]["startip"] = "192.168." + str(random_subnet_number) + ".1"
|
||||||
|
self.testdata["shared_network_sg"]["endip"] = "192.168." + str(random_subnet_number) + ".10"
|
||||||
|
self.testdata["shared_network_sg"]["gateway"] = "192.168." + str(random_subnet_number) + ".254"
|
||||||
|
self.testdata["shared_network_sg"]["netmask"] = "255.255.255.0"
|
||||||
|
self.testdata["shared_network_sg"]["acltype"] = "account"
|
||||||
|
|
||||||
|
# Create the first network with empty displayText
|
||||||
|
network1 = Network.create(
|
||||||
|
self.apiclient,
|
||||||
|
self.testdata["shared_network_sg"],
|
||||||
|
networkofferingid=self.network_offering.id,
|
||||||
|
zoneid=self.zone.id,
|
||||||
|
accountid=self.account.name,
|
||||||
|
domainid=self.account.domainid
|
||||||
|
)
|
||||||
|
|
||||||
|
self.cleanup.append(network1)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
network1.displayText,
|
||||||
|
self.testdata["shared_network_sg"]["name"],
|
||||||
|
msg="displayText does not match name"
|
||||||
|
)
|
||||||
|
|
||||||
|
self.testdata["shared_network_sg"]["displayText"] = 'test'
|
||||||
|
|
||||||
|
#Create the second network with non-empty displayText
|
||||||
|
network2 = Network.create(
|
||||||
|
self.apiclient,
|
||||||
|
self.testdata["shared_network_sg"],
|
||||||
|
networkofferingid=self.network_offering.id,
|
||||||
|
zoneid=self.zone.id,
|
||||||
|
accountid=self.account.name,
|
||||||
|
domainid=self.account.domainid
|
||||||
|
)
|
||||||
|
|
||||||
|
self.cleanup.append(network2)
|
||||||
|
|
||||||
|
self.assertNotEqual(
|
||||||
|
network2.displayText,
|
||||||
|
self.testdata["shared_network_sg"]["name"],
|
||||||
|
msg="displayText and name are equal"
|
||||||
|
)
|
||||||
|
|
||||||
|
return
|
||||||
|
|||||||
@ -394,7 +394,6 @@ export default {
|
|||||||
this.form = reactive({})
|
this.form = reactive({})
|
||||||
this.rules = reactive({
|
this.rules = reactive({
|
||||||
name: [{ required: true, message: this.$t('message.error.name') }],
|
name: [{ required: true, message: this.$t('message.error.name') }],
|
||||||
displaytext: [{ required: true, message: this.$t('message.error.display.text') }],
|
|
||||||
zoneid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
zoneid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
||||||
networkofferingid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
networkofferingid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
||||||
vpcid: [{ required: true, message: this.$t('message.error.select') }]
|
vpcid: [{ required: true, message: this.$t('message.error.select') }]
|
||||||
|
|||||||
@ -266,7 +266,6 @@ export default {
|
|||||||
})
|
})
|
||||||
this.rules = reactive({
|
this.rules = reactive({
|
||||||
name: [{ required: true, message: this.$t('message.error.name') }],
|
name: [{ required: true, message: this.$t('message.error.name') }],
|
||||||
displaytext: [{ required: true, message: this.$t('message.error.display.text') }],
|
|
||||||
zoneid: [{ required: true, message: this.$t('message.error.select') }],
|
zoneid: [{ required: true, message: this.$t('message.error.select') }],
|
||||||
networkofferingid: [{ required: true, message: this.$t('message.error.select') }],
|
networkofferingid: [{ required: true, message: this.$t('message.error.select') }],
|
||||||
vlanid: [{ required: true, message: this.$t('message.please.enter.value') }]
|
vlanid: [{ required: true, message: this.$t('message.please.enter.value') }]
|
||||||
|
|||||||
@ -590,7 +590,6 @@ export default {
|
|||||||
})
|
})
|
||||||
this.rules = reactive({
|
this.rules = reactive({
|
||||||
name: [{ required: true, message: this.$t('message.error.name') }],
|
name: [{ required: true, message: this.$t('message.error.name') }],
|
||||||
displaytext: [{ required: true, message: this.$t('message.error.display.text') }],
|
|
||||||
zoneid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
zoneid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
||||||
vlan: [{ required: true, message: this.$t('message.please.enter.value') }],
|
vlan: [{ required: true, message: this.$t('message.please.enter.value') }],
|
||||||
networkofferingid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
networkofferingid: [{ type: 'number', required: true, message: this.$t('message.error.select') }],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user