diff --git a/api/src/com/cloud/event/EventTypes.java b/api/src/com/cloud/event/EventTypes.java index 84ddfc1bee1..fd39a237a39 100755 --- a/api/src/com/cloud/event/EventTypes.java +++ b/api/src/com/cloud/event/EventTypes.java @@ -58,6 +58,7 @@ public class EventTypes { public static final String EVENT_NET_RULE_MODIFY = "NET.RULEMODIFY"; public static final String EVENT_NETWORK_CREATE = "NETWORK.CREATE"; public static final String EVENT_NETWORK_DELETE = "NETWORK.DELETE"; + public static final String EVENT_NETWORK_UPDATE = "NETWORK.UPDATE"; // Load Balancers public static final String EVENT_ASSIGN_TO_LOAD_BALANCER_RULE = "LB.ASSIGN.TO.RULE"; diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java index e378b83c0cf..ba39a3fcc8c 100644 --- a/api/src/com/cloud/network/NetworkService.java +++ b/api/src/com/cloud/network/NetworkService.java @@ -35,6 +35,7 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network.Capability; import com.cloud.network.Network.Service; import com.cloud.offering.NetworkOffering; +import com.cloud.user.Account; public interface NetworkService { @@ -74,4 +75,6 @@ public interface NetworkService { boolean isNetworkAvailableInDomain(long networkId, long domainId); Long getDedicatedNetworkDomain(long networkId); + + Network updateNetwork(long networkId, String name, String displayText, Account caller); } diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in index 8afcedb49fe..b70bf1af6a7 100755 --- a/client/tomcatconf/commands.properties.in +++ b/client/tomcatconf/commands.properties.in @@ -246,7 +246,8 @@ listNetworkOfferings=com.cloud.api.commands.ListNetworkOfferingsCmd;15 createNetwork=com.cloud.api.commands.CreateNetworkCmd;15 deleteNetwork=com.cloud.api.commands.DeleteNetworkCmd;15 listNetworks=com.cloud.api.commands.ListNetworksCmd;15 -restartNetwork=com.cloud.api.commands.RestartNetworkCmd;15 +restartNetwork=com.cloud.api.commands.RestartNetworkCmd;15 +updateNetwork=com.cloud.api.commands.UpdateNetworkCmd;15 #### SSH key pair commands registerSSHKeyPair=com.cloud.api.commands.RegisterSSHKeyPairCmd;15 diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 1c08457d199..d45ec8434b1 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -2717,4 +2717,35 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag return null; } } + + @Override @ActionEvent (eventType=EventTypes.EVENT_NETWORK_UPDATE, eventDescription="updating network", async=false) + public Network updateNetwork(long networkId, String name, String displayText, Account caller) { + + //verify input parameters + NetworkVO network = _networksDao.findById(networkId); + if (network == null) { + throw new InvalidParameterValueException("Network id=" + networkId + "doesn't exist in the system"); + } + + //Don't allow to update system network + NetworkOffering offering = _networkOfferingDao.findByIdIncludingRemoved(network.getNetworkOfferingId()); + if (offering.isSystemOnly()) { + throw new InvalidParameterValueException("Can't update system networks"); + } + + _accountMgr.checkAccess(caller, network); + + if (name != null) { + network.setName(name); + } + + if (displayText != null) { + network.setDisplayText(displayText); + } + + _networksDao.update(networkId, network); + + return network; + + } }