Skip to content

Commit e3d0ce9

Browse files
authored
Improve default network offering setting for egress policy (#5970)
* Improve default network offering setting for egress policy * descriptive info + restrict to only isolated n/ws * add translation
1 parent b9e973a commit e3d0ce9

7 files changed

Lines changed: 29 additions & 2 deletions

File tree

api/src/main/java/org/apache/cloudstack/api/response/NetworkResponse.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ public class NetworkResponse extends BaseResponseWithAnnotations implements Cont
263263
@Param(description = "the total number of network traffic bytes sent")
264264
private Long bytesSent;
265265

266+
@SerializedName((ApiConstants.EGRESS_DEFAULT_POLICY))
267+
@Param(description = "true if guest network default egress policy is allow; false if default egress policy is deny")
268+
private Boolean egressDefaultPolicy;
269+
266270
public Boolean getDisplayNetwork() {
267271
return displayNetwork;
268272
}
@@ -528,4 +532,12 @@ public void setBytesReceived(Long bytesReceived) {
528532
public void setBytesSent(final Long bytesSent) {
529533
this.bytesSent = bytesSent;
530534
}
535+
536+
public boolean getEgressDefaultPolicy() {
537+
return egressDefaultPolicy;
538+
}
539+
540+
public void setEgressDefaultPolicy(Boolean egressDefaultPolicy) {
541+
this.egressDefaultPolicy = egressDefaultPolicy;
542+
}
531543
}

server/src/main/java/com/cloud/api/ApiResponseHelper.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,6 +2302,9 @@ public NetworkResponse createNetworkResponse(ResponseView view, Network network)
23022302
response.setIsSystem(networkOffering.isSystemOnly());
23032303
response.setNetworkOfferingAvailability(networkOffering.getAvailability().toString());
23042304
response.setIsPersistent(networkOffering.isPersistent());
2305+
if (Network.GuestType.Isolated.equals(network.getGuestType())) {
2306+
response.setEgressDefaultPolicy(networkOffering.isEgressDefaultPolicy());
2307+
}
23052308
}
23062309

23072310
if (network.getAclType() != null) {

ui/public/locales/en.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2669,6 +2669,7 @@
26692669
"message.after.enable.s3": "S3-backed Secondary Storage configured. Note: When you leave this page, you will not be able to re-configure S3 again.",
26702670
"message.after.enable.swift": "Swift configured. Note: When you leave this page, you will not be able to re-configure Swift again.",
26712671
"message.alert.state.detected": "Alert state detected",
2672+
"message.allowed": "Allowed",
26722673
"message.allow.vpn.access": "Please enter a username and password of the user that you want to allow VPN access.",
26732674
"message.apply.snapshot.policy": "You have successfully updated your current snapshot policy.",
26742675
"message.apply.success": "Apply Successfully",
@@ -2838,6 +2839,7 @@
28382839
"message.delete.vpn.gateway": "Please confirm that you want to delete this VPN Gateway",
28392840
"message.deleting.node": "Deleting Node",
28402841
"message.deleting.vm": "Deleting VM",
2842+
"message.denied": "Denied",
28412843
"message.deployasis": "Selected template is Deploy As-Is i.e., the VM is deployed by importing an OVA with vApps directly into vCenter. Root disk(s) resize is allowed only on stopped VMs for such templates.",
28422844
"message.desc.add.new.lb.sticky.rule": "Add new LB sticky rule",
28432845
"message.desc.advanced.zone": "This is recommended and allows more sophisticated network topologies. This network model provides the most flexibility in defining guest networks and providing custom network offerings such as firewall, VPN, or load balancer support.",
@@ -2881,6 +2883,9 @@
28812883
"message.edit.rule.failed": "Failed to edit rule",
28822884
"message.edit.rule.processing": "Updating rule...",
28832885
"message.edit.traffic.type": "Please specify the traffic label you want associated with this traffic type.",
2886+
"message.egress.rules.allow": "Allow (traffic matching the egress rules added will be denied)",
2887+
"message.egress.rules.deny": "Deny (traffic matching the egress rules added will be allowed)",
2888+
"message.egress.rules.info.for.network": "The default egress policy of this network is %x. <br><br> Outgoing traffic matching the following rules will be %y",
28842889
"message.enable.account": "Please confirm that you want to enable this account.",
28852890
"message.enable.netsacler.provider.failed": "failed to enable Netscaler provider",
28862891
"message.enable.securitygroup.provider.failed": "failed to enable security group provider",

ui/src/components/view/DetailsTab.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
<div v-else-if="['created', 'sent', 'lastannotated'].includes(item)">
4646
{{ $toLocaleDate(resource[item]) }}
4747
</div>
48+
<div v-else-if="$route.meta.name === 'guestnetwork' && item === 'egressdefaultpolicy'">
49+
{{ resource[item]? $t('message.egress.rules.allow') : $t('message.egress.rules.deny') }}
50+
</div>
4851
<div v-else>{{ resource[item] }}</div>
4952
</div>
5053
</a-list-item>

ui/src/config/section/network.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default {
3838
return fields
3939
},
4040
details: () => {
41-
var fields = ['name', 'id', 'description', 'type', 'traffictype', 'vpcid', 'vlan', 'broadcasturi', 'cidr', 'ip6cidr', 'netmask', 'gateway', 'aclname', 'ispersistent', 'restartrequired', 'reservediprange', 'redundantrouter', 'networkdomain', 'zonename', 'account', 'domain']
41+
var fields = ['name', 'id', 'description', 'type', 'traffictype', 'vpcid', 'vlan', 'broadcasturi', 'cidr', 'ip6cidr', 'netmask', 'gateway', 'aclname', 'ispersistent', 'restartrequired', 'reservediprange', 'redundantrouter', 'networkdomain', 'egressdefaultpolicy', 'zonename', 'account', 'domain']
4242
if (!isAdmin()) {
4343
fields = fields.filter(function (e) { return e !== 'broadcasturi' })
4444
}

ui/src/views/network/EgressRulesTab.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
<template>
1919
<div>
2020
<div>
21+
<div
22+
v-html="$t('message.egress.rules.info.for.network').replace('%x', resource.egressdefaultpolicy ? '<b>' + $t('label.allow') + '</b>' :
23+
'<b>' + $t('label.deny') + '</b>').replace('%y', resource.egressdefaultpolicy ? '<b>' + $t('message.denied') + '</b>' : '<b>' + $t('message.allowed') + '</b>')"> </div>
24+
<a-divider />
2125
<div class="form" v-ctrl-enter="addRule">
2226
<div class="form__item">
2327
<div class="form__label">{{ $t('label.sourcecidr') }}</div>

ui/src/views/offering/AddNetworkOffering.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@
342342
<tooltip-label slot="label" :title="$t('label.egressdefaultpolicy')" :tooltip="apiParams.egressdefaultpolicy.description"/>
343343
<a-radio-group
344344
v-decorator="['egressdefaultpolicy', {
345-
initialValue: 'allow'
345+
initialValue: 'deny'
346346
}]"
347347
buttonStyle="solid">
348348
<a-radio-button value="allow">

0 commit comments

Comments
 (0)