You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2015/03/17 11:26:20 UTC
[18/50] git commit: updated refs/heads/master to 3c429ee
Turn a single VPC into a redundant VPC
- when restarting a VPC, the user can check the option Make Redundant in order to change
the VPC offering and make it redundant
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/e350f1e7
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/e350f1e7
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/e350f1e7
Branch: refs/heads/master
Commit: e350f1e76fdf6a848d21679f327cb1023503bbd2
Parents: 87d4171
Author: wilderrodrigues <wr...@schubergphilis.com>
Authored: Tue Feb 3 16:27:54 2015 +0100
Committer: wilderrodrigues <wr...@schubergphilis.com>
Committed: Mon Mar 16 11:39:57 2015 +0100
----------------------------------------------------------------------
api/src/com/cloud/network/vpc/VpcService.java | 4 +-
.../org/apache/cloudstack/api/ApiConstants.java | 3 +-
.../api/command/user/vpc/RestartVPCCmd.java | 12 +++++-
.../classes/resources/messages.properties | 1 +
.../classes/resources/messages_ar.properties | 1 +
.../classes/resources/messages_es.properties | 1 +
.../classes/resources/messages_fr_FR.properties | 1 +
.../classes/resources/messages_ja_JP.properties | 1 +
.../classes/resources/messages_ko_KR.properties | 1 +
.../classes/resources/messages_nb_NO.properties | 1 +
.../classes/resources/messages_nl_NL.properties | 1 +
.../classes/resources/messages_pl.properties | 1 +
.../classes/resources/messages_pt_BR.properties | 1 +
.../classes/resources/messages_ru_RU.properties | 1 +
.../classes/resources/messages_zh_CN.properties | 1 +
.../schema/src/com/cloud/network/vpc/VpcVO.java | 41 ++++++++++++--------
.../com/cloud/network/vpc/VpcManagerImpl.java | 22 ++++++++++-
ui/dictionary.jsp | 1 +
ui/scripts/network.js | 9 ++++-
19 files changed, 82 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/api/src/com/cloud/network/vpc/VpcService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpc/VpcService.java b/api/src/com/cloud/network/vpc/VpcService.java
index a2a6fe7..241e27b 100644
--- a/api/src/com/cloud/network/vpc/VpcService.java
+++ b/api/src/com/cloud/network/vpc/VpcService.java
@@ -127,10 +127,12 @@ public interface VpcService {
* Restarts the VPC. VPC gets shutdown and started as a part of it
*
* @param id
+ * @param cleanUp
+ * @param makeredundant
* @return
* @throws InsufficientCapacityException
*/
- boolean restartVpc(long id, boolean cleanUp) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException;
+ boolean restartVpc(long id, boolean cleanUp, boolean makeredundant) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException;
/**
* Returns a Private gateway found in the VPC by id
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/api/src/org/apache/cloudstack/api/ApiConstants.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java
index 0cae1d3..4ab10fa 100644
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@ -48,6 +48,7 @@ public class ApiConstants {
public static final String IP6_CIDR = "ip6cidr";
public static final String CIDR_LIST = "cidrlist";
public static final String CLEANUP = "cleanup";
+ public static final String MAKEREDUNDANTE = "makeredundant";
public static final String CLUSTER_ID = "clusterid";
public static final String CLUSTER_NAME = "clustername";
public static final String CLUSTER_TYPE = "clustertype";
@@ -450,7 +451,7 @@ public class ApiConstants {
public static final String EXTERNAL_SWITCH_MGMT_DEVICE_NAME = "vsmdevicename";
public static final String EXTERNAL_SWITCH_MGMT_DEVICE_STATE = "vsmdevicestate";
// Would we need to have a capacity field for Cisco N1KV VSM? Max hosts managed by it perhaps? May remove this
-// later.
+ // later.
public static final String EXTERNAL_SWITCH_MGMT_DEVICE_CAPACITY = "vsmdevicecapacity";
public static final String CISCO_NEXUS_VSM_NAME = "vsmname";
public static final String VSM_USERNAME = "vsmusername";
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/api/src/org/apache/cloudstack/api/command/user/vpc/RestartVPCCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/RestartVPCCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/RestartVPCCmd.java
index 20df9ea..ea34c6a 100644
--- a/api/src/org/apache/cloudstack/api/command/user/vpc/RestartVPCCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/vpc/RestartVPCCmd.java
@@ -51,6 +51,9 @@ public class RestartVPCCmd extends BaseAsyncCmd {
@Parameter(name = ApiConstants.CLEANUP, type = CommandType.BOOLEAN, required = false, description = "If cleanup old network elements")
private Boolean cleanup;
+ @Parameter(name = ApiConstants.MAKEREDUNDANTE, type = CommandType.BOOLEAN, required = false, description = "Turn a single VPC into a redundant one.")
+ private Boolean makeredundant;
+
/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
/////////////////////////////////////////////////////
@@ -66,6 +69,13 @@ public class RestartVPCCmd extends BaseAsyncCmd {
return true;
}
+ public Boolean getMakeredundant() {
+ if (makeredundant != null) {
+ return makeredundant;
+ }
+ return true;
+ }
+
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////
@@ -87,7 +97,7 @@ public class RestartVPCCmd extends BaseAsyncCmd {
@Override
public void execute() {
try {
- final boolean result = _vpcService.restartVpc(getId(), getCleanup());
+ final boolean result = _vpcService.restartVpc(getId(), getCleanup(), getMakeredundant());
if (result) {
final SuccessResponse response = new SuccessResponse(getCommandName());
setResponseObject(response);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index 76cbdf7..6709603 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -450,6 +450,7 @@ label.cidr.list=Source CIDR
label.CIDR.of.destination.network=CIDR of destination network
label.cidr=CIDR
label.clean.up=Clean up
+label.make.redundant=Make redundant
label.clear.list=Clear list
label.close=Close
label.cloud.console=Cloud Management Console
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_ar.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_ar.properties b/client/WEB-INF/classes/resources/messages_ar.properties
index de90c43..a36399f 100644
--- a/client/WEB-INF/classes/resources/messages_ar.properties
+++ b/client/WEB-INF/classes/resources/messages_ar.properties
@@ -47,6 +47,7 @@ label.change.value=\u062a\u063a\u064a\u0631 \u0627\u0644\u0642\u064a\u0645\u0629
label.CIDR.list=\u0642\u0627\u0626\u0645\u0629 CIDR
label.CIDR.of.destination.network=CIDR \u0627\u0644\u062e\u0627\u0635 \u0628\u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0645\u0648\u062c\u0647\u0629.
label.clean.up=\u062a\u0646\u0638\u064a\u0641
+label.make.redundant=\u062c\u0639\u0644 \u0632\u0627\u0626\u062f\u0629 \u0639\u0646 \u0627\u0644\u062d\u0627\u062c\u0629
label.clear.list=\u0645\u0633\u062d \u0627\u0644\u0642\u0627\u0626\u0645\u0629
label.configuration=\u0627\u0644\u062a\u0643\u0648\u064a\u0646
label.configure.network.ACLs=\u0636\u0628\u0637 \u0634\u0628\u0643\u0629 ACLs
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_es.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_es.properties b/client/WEB-INF/classes/resources/messages_es.properties
index 6b51c38..91faf77 100644
--- a/client/WEB-INF/classes/resources/messages_es.properties
+++ b/client/WEB-INF/classes/resources/messages_es.properties
@@ -332,6 +332,7 @@ label.cidr=CIDR
label.cidr.list=fuente CIDR
label.CIDR.list=Lista CIDR
label.clean.up=Limpiar
+label.make.redundant=\u0068\u0061\u0063\u0065\u0072 \u0072\u0065\u0064\u0075\u006e\u0064\u0061\u006e\u0074\u0065
label.clear.list=Limpiar lista
label.close=Cerrar
label.cloud.console=Cloud Management Console
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_fr_FR.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_fr_FR.properties b/client/WEB-INF/classes/resources/messages_fr_FR.properties
index f6a7a95..1180465 100644
--- a/client/WEB-INF/classes/resources/messages_fr_FR.properties
+++ b/client/WEB-INF/classes/resources/messages_fr_FR.properties
@@ -455,6 +455,7 @@ label.cisco.nexus1000v.password=Mot de passe Nexus 1000v
label.cisco.nexus1000v.username=Identifiant Nexus 1000v
label.ciscovnmc.resource.details=D\u00e9tails ressource CiscoVNMC
label.clean.up=Nettoyage
+label.make.redundant=\u006c\u0069\u0063\u0065\u006e\u0063\u0069\u0065\u0072
label.clear.list=Purger la liste
label.close=Fermer
label.cloud.console=Console d\\'Administration du Cloud
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_ja_JP.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_ja_JP.properties b/client/WEB-INF/classes/resources/messages_ja_JP.properties
index 0510f43..550d12a 100644
--- a/client/WEB-INF/classes/resources/messages_ja_JP.properties
+++ b/client/WEB-INF/classes/resources/messages_ja_JP.properties
@@ -445,6 +445,7 @@ label.cidr.list=\u9001\u4fe1\u5143 CIDR
label.CIDR.of.destination.network=\u5b9b\u5148\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e CIDR
label.cidr=CIDR
label.clean.up=\u30af\u30ea\u30fc\u30f3 \u30a2\u30c3\u30d7\u3059\u308b
+label.make.redundant=\u5197\u9577\u5316
label.clear.list=\u4e00\u89a7\u306e\u6d88\u53bb
label.close=\u9589\u3058\u308b
label.cloud.console=\u30af\u30e9\u30a6\u30c9\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30eb
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_ko_KR.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_ko_KR.properties b/client/WEB-INF/classes/resources/messages_ko_KR.properties
index badb7f3..4b7e090 100644
--- a/client/WEB-INF/classes/resources/messages_ko_KR.properties
+++ b/client/WEB-INF/classes/resources/messages_ko_KR.properties
@@ -375,6 +375,7 @@ label.CIDR.list=CIDR \ubaa9\ub85d
label.cidr.list=\uc804\uc1a1\uc6d0 CIDR
label.CIDR.of.destination.network=\ub300\uc0c1 \ub124\ud2b8\uc6cc\ud06c CIDR
label.clean.up=\uc0ad\uc81c\ud558\uae30
+label.make.redundant=\uc911\ubcf5 \ud655\uc778
label.clear.list=\ubaa9\ub85d \uc0ad\uc81c
label.close=\ub2eb\uae30
label.cloud.console=\ud074\ub77c\uc6b0\ub4dc \uad00\ub9ac \ucf58\uc194
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_nb_NO.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_nb_NO.properties b/client/WEB-INF/classes/resources/messages_nb_NO.properties
index bf88907..b9ade48 100644
--- a/client/WEB-INF/classes/resources/messages_nb_NO.properties
+++ b/client/WEB-INF/classes/resources/messages_nb_NO.properties
@@ -314,6 +314,7 @@ label.cidr=CIDR
label.CIDR.list=CIDR liste
label.cidr.list=Kilde-CIDR
label.clean.up=Rydd opp
+label.make.redundant=\u0067\u006a\u00f8\u0072\u0065 \u006f\u0076\u0065\u0072\u0066\u006c\u00f8\u0064\u0069\u0067
label.clear.list=T\u00f8m liste
label.close=Lukk
label.cloud.console=Cloud
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_nl_NL.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_nl_NL.properties b/client/WEB-INF/classes/resources/messages_nl_NL.properties
index 35cd86c..a296088 100644
--- a/client/WEB-INF/classes/resources/messages_nl_NL.properties
+++ b/client/WEB-INF/classes/resources/messages_nl_NL.properties
@@ -432,6 +432,7 @@ label.cisco.nexus1000v.password=Nexus 1000v Wachtwoord
label.cisco.nexus1000v.username=Nexus 1000v Gebruikersnaam
label.ciscovnmc.resource.details=CiscoVNMC resource details
label.clean.up=Opschonen
+label.make.redundant=\u0072\u0065\u0064\u0075\u006e\u0064\u0061\u006e\u0074\u0065 \u006d\u0061\u006b\u0065\u006e
label.clear.list=Schoon lijst op
label.close=Sluiten
label.cloud.console=Cloud Beheers Console
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_pl.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_pl.properties b/client/WEB-INF/classes/resources/messages_pl.properties
index 0388b3f..e9c9ae9 100644
--- a/client/WEB-INF/classes/resources/messages_pl.properties
+++ b/client/WEB-INF/classes/resources/messages_pl.properties
@@ -187,6 +187,7 @@ label.certificate=Certyfikat
label.cidr=CIDR
label.CIDR.list=Lista CIDR
label.clean.up=Wyczy\u015b\u0107
+label.make.redundant=\u0073\u0069\u0119 \u007a\u0062\u0119\u0064\u006e\u0065
label.clear.list=Wyczy\u015b\u0107 list\u0119
label.close=Zamknij
label.clvm=CLVM
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_pt_BR.properties b/client/WEB-INF/classes/resources/messages_pt_BR.properties
index c925e6d..4eb6997 100644
--- a/client/WEB-INF/classes/resources/messages_pt_BR.properties
+++ b/client/WEB-INF/classes/resources/messages_pt_BR.properties
@@ -398,6 +398,7 @@ label.cidr.list=CIDR de Origem
label.CIDR.list=Lista CIDR
label.CIDR.of.destination.network=CIDR da rede de destino
label.clean.up=Limpar
+label.make.redundant=\u0074\u006f\u0072\u006e\u0061\u0072 \u0072\u0065\u0064\u0075\u006e\u0064\u0061\u006e\u0074\u0065
label.clear.list=Limpar lista
label.close=Fechar
label.cloud.console=Console de Gerenciamento da Nuvem
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_ru_RU.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_ru_RU.properties b/client/WEB-INF/classes/resources/messages_ru_RU.properties
index 16427a1..e825605 100644
--- a/client/WEB-INF/classes/resources/messages_ru_RU.properties
+++ b/client/WEB-INF/classes/resources/messages_ru_RU.properties
@@ -386,6 +386,7 @@ label.cidr.list=CIDR \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430
label.CIDR.list=\u0421\u043f\u0438\u0441\u043e\u043a CIDR
label.CIDR.of.destination.network=CIDR \u0441\u0435\u0442\u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
label.clean.up=\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c
+label.make.redundant=\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437\u043b\u0438\u0448\u043d\u0438\u043c
label.clear.list=\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a
label.close=\u0417\u0430\u043a\u0440\u044b\u0442\u044c
label.cloud.console=\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u043a\u043e\u043c
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/client/WEB-INF/classes/resources/messages_zh_CN.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages_zh_CN.properties b/client/WEB-INF/classes/resources/messages_zh_CN.properties
index a527fcb..427b060 100644
--- a/client/WEB-INF/classes/resources/messages_zh_CN.properties
+++ b/client/WEB-INF/classes/resources/messages_zh_CN.properties
@@ -445,6 +445,7 @@ label.cidr.list=\u6e90 CIDR
label.CIDR.of.destination.network=\u76ee\u7684\u5730\u7f51\u7edc\u7684 CIDR
label.cidr=CIDR
label.clean.up=\u6e05\u7406
+label.make.redundant=\u4f7f\u591a\u9918
label.clear.list=\u6e05\u9664\u5217\u8868
label.close=\u5173\u95ed
label.cloud.console=\u4e91\u7ba1\u7406\u63a7\u5236\u53f0
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/engine/schema/src/com/cloud/network/vpc/VpcVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/VpcVO.java b/engine/schema/src/com/cloud/network/vpc/VpcVO.java
index b400d95..b78f22f 100644
--- a/engine/schema/src/com/cloud/network/vpc/VpcVO.java
+++ b/engine/schema/src/com/cloud/network/vpc/VpcVO.java
@@ -16,7 +16,8 @@
// under the License.
package com.cloud.network.vpc;
-import com.cloud.utils.db.GenericDao;
+import java.util.Date;
+import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -24,8 +25,8 @@ import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Table;
-import java.util.Date;
-import java.util.UUID;
+
+import com.cloud.utils.db.GenericDao;
@Entity
@Table(name = "vpc")
@@ -61,7 +62,7 @@ public class VpcVO implements Vpc {
State state;
@Column(name = "redundant")
- boolean isRedundant;
+ boolean redundant;
@Column(name = "vpc_offering_id")
long vpcOfferingId;
@@ -92,8 +93,8 @@ public class VpcVO implements Vpc {
}
public VpcVO(final long zoneId, final String name, final String displayText, final long accountId, final long domainId,
- final long vpcOffId, String cidr, final String networkDomain, final boolean useDistributedRouter,
- final boolean regionLevelVpc, final boolean isRedundant) {
+ final long vpcOffId, final String cidr, final String networkDomain, final boolean useDistributedRouter,
+ final boolean regionLevelVpc, final boolean isRedundant) {
this.zoneId = zoneId;
this.name = name;
this.displayText = displayText;
@@ -104,9 +105,9 @@ public class VpcVO implements Vpc {
state = State.Enabled;
this.networkDomain = networkDomain;
vpcOfferingId = vpcOffId;
- this.usesDistributedRouter = useDistributedRouter;
+ usesDistributedRouter = useDistributedRouter;
this.regionLevelVpc = regionLevelVpc;
- this.isRedundant = isRedundant;
+ redundant = isRedundant;
}
@Override
@@ -149,7 +150,7 @@ public class VpcVO implements Vpc {
return state;
}
- public void setState(State state) {
+ public void setState(final State state) {
this.state = state;
}
@@ -158,6 +159,10 @@ public class VpcVO implements Vpc {
return vpcOfferingId;
}
+ public void setVpcOfferingId(final long vpcOfferingId) {
+ this.vpcOfferingId = vpcOfferingId;
+ }
+
public Date getRemoved() {
return removed;
}
@@ -167,17 +172,17 @@ public class VpcVO implements Vpc {
return displayText;
}
- public void setName(String name) {
+ public void setName(final String name) {
this.name = name;
}
- public void setDisplayText(String displayText) {
+ public void setDisplayText(final String displayText) {
this.displayText = displayText;
}
@Override
public String toString() {
- StringBuilder buf = new StringBuilder("[VPC [");
+ final StringBuilder buf = new StringBuilder("[VPC [");
return buf.append(id).append("-").append(name).append("]").toString();
}
@@ -186,7 +191,7 @@ public class VpcVO implements Vpc {
return networkDomain;
}
- public void setRestartRequired(boolean restartRequired) {
+ public void setRestartRequired(final boolean restartRequired) {
this.restartRequired = restartRequired;
}
@@ -195,7 +200,7 @@ public class VpcVO implements Vpc {
return restartRequired;
}
- public void setUuid(String uuid) {
+ public void setUuid(final String uuid) {
this.uuid = uuid;
}
@@ -205,7 +210,7 @@ public class VpcVO implements Vpc {
}
- public void setDisplay(boolean display) {
+ public void setDisplay(final boolean display) {
this.display = display;
}
@@ -216,7 +221,11 @@ public class VpcVO implements Vpc {
@Override
public boolean isRedundant() {
- return this.isRedundant;
+ return redundant;
+ }
+
+ public void setRedundant(final boolean isRedundant) {
+ redundant = isRedundant;
}
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index c71da96..07e5b67 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -1488,7 +1488,9 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
@Override
@ActionEvent(eventType = EventTypes.EVENT_VPC_RESTART, eventDescription = "restarting vpc")
- public boolean restartVpc(final long vpcId, final boolean cleanUp) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException {
+ public boolean restartVpc(final long vpcId, final boolean cleanUp, final boolean makeRedundant) throws ConcurrentOperationException,
+ ResourceUnavailableException, InsufficientCapacityException {
+
final Account caller = CallContext.current().getCallingAccount();
// Verify input parameters
@@ -1504,7 +1506,23 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
s_logger.debug("Restarting VPC " + vpc);
boolean restartRequired = false;
try {
- if (cleanUp) {
+
+ boolean forceCleanup = cleanUp;
+ if (!vpc.isRedundant() && makeRedundant) {
+ final VpcOfferingVO redundantOffering = _vpcOffDao.findByUniqueName(VpcOffering.redundantVPCOfferingName);
+
+ final VpcVO entity = _vpcDao.findById(vpcId);
+ entity.setRedundant(makeRedundant);
+ entity.setVpcOfferingId(redundantOffering.getId());
+
+ // Change the VPC in order to get it updated after the end of the restart procedure.
+ _vpcDao.update(vpc.getId(), entity);
+
+ //If the offering and redundant column are changing, force the clean up.
+ forceCleanup = true;
+ }
+
+ if (forceCleanup) {
s_logger.debug("Shutting down VPC " + vpc + " as a part of VPC restart process");
if (!shutdownVpc(vpcId)) {
s_logger.warn("Failed to shutdown vpc as a part of VPC " + vpc + " restart process");
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/ui/dictionary.jsp
----------------------------------------------------------------------
diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp
index e283d49..895f426 100644
--- a/ui/dictionary.jsp
+++ b/ui/dictionary.jsp
@@ -467,6 +467,7 @@ dictionary = {
'label.CIDR.list': '<fmt:message key="label.CIDR.list" />',
'label.CIDR.of.destination.network': '<fmt:message key="label.CIDR.of.destination.network" />',
'label.clean.up': '<fmt:message key="label.clean.up" />',
+'label.make.redundant': '<fmt:message key="label.make.redundant" />',
'label.clear.list': '<fmt:message key="label.clear.list" />',
'label.close': '<fmt:message key="label.close" />',
'label.cloud.console': '<fmt:message key="label.cloud.console" />',
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e350f1e7/ui/scripts/network.js
----------------------------------------------------------------------
diff --git a/ui/scripts/network.js b/ui/scripts/network.js
index d1bd7eb..b1e4d22 100755
--- a/ui/scripts/network.js
+++ b/ui/scripts/network.js
@@ -5523,11 +5523,17 @@
});
args.$form.find('.form-item[rel=cleanup]').find('input').attr('checked', 'checked'); //checked
args.$form.find('.form-item[rel=cleanup]').css('display', 'inline-block'); //shown
+ args.$form.find('.form-item[rel=makeredundant]').find('input').attr('checked', 'checked'); //checked
+ args.$form.find('.form-item[rel=makeredundant]').css('display', 'inline-block'); //shown
},
fields: {
cleanup: {
label: 'label.clean.up',
isBoolean: true
+ },
+ makeredundant: {
+ label: 'label.make.redundant',
+ isBoolean: true
}
}
},
@@ -5545,7 +5551,8 @@
url: createURL("restartVPC"),
data: {
id: args.context.vpc[0].id,
- cleanup: (args.data.cleanup == "on")
+ cleanup: (args.data.cleanup == "on"),
+ makeredundant: (args.data.makeredundant == "on")
},
success: function(json) {
var jid = json.restartvpcresponse.jobid;