LB refactoring 1) Added "scheme" field to the load balancer object (can take 2 values now - Public and Internal) 2) Moved State/Purpose from FirewallRule to the newly created Interface NetworkRule. FirewallRule and LoadBalancer interfaces will extend NetworkRule
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/50140dc1 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/50140dc1 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/50140dc1 Branch: refs/heads/internallb Commit: 50140dc17ddb9b18f32b63a7e34f9a737dbabdc6 Parents: 6af3d76 Author: Alena Prokharchyk <[email protected]> Authored: Tue Apr 2 20:34:49 2013 -0700 Committer: Alena Prokharchyk <[email protected]> Committed: Tue Apr 2 21:34:02 2013 -0700 ---------------------------------------------------------------------- api/src/com/cloud/agent/api/to/FirewallRuleTO.java | 2 +- api/src/com/cloud/agent/api/to/LoadBalancerTO.java | 2 +- .../com/cloud/agent/api/to/StaticNatRuleTO.java | 2 +- api/src/com/cloud/async/AsyncJob.java | 3 +- .../com/cloud/network/lb/LoadBalancingRule.java | 54 ++++++-------- api/src/com/cloud/network/rules/FirewallRule.java | 23 +------ api/src/com/cloud/network/rules/LoadBalancer.java | 18 ++---- api/src/com/cloud/network/rules/NetworkRule.java | 42 +++++++++++ .../loadbalancer/CreateLoadBalancerRuleCmd.java | 2 +- .../loadbalancer/DeleteLoadBalancerRuleCmd.java | 2 +- .../network/ExternalFirewallDeviceManagerImpl.java | 2 +- .../src/com/cloud/network/NetworkManagerImpl.java | 2 +- server/src/com/cloud/network/NetworkModelImpl.java | 2 +- .../src/com/cloud/network/NetworkServiceImpl.java | 3 - .../cloud/network/dao/FirewallRulesDaoImpl.java | 4 +- .../com/cloud/network/dao/LoadBalancerDaoImpl.java | 2 +- .../src/com/cloud/network/dao/LoadBalancerVO.java | 49 ++++++------- .../network/firewall/FirewallManagerImpl.java | 4 +- .../network/lb/LoadBalancingRulesManagerImpl.java | 5 +- .../router/VirtualNetworkApplianceManagerImpl.java | 2 +- .../VpcVirtualNetworkApplianceManagerImpl.java | 2 +- .../com/cloud/network/rules/FirewallManager.java | 2 +- .../com/cloud/network/rules/RulesManagerImpl.java | 2 +- .../rules/dao/PortForwardingRulesDaoImpl.java | 7 +-- .../cloud/network/vpc/NetworkACLManagerImpl.java | 6 +- .../network/vpn/RemoteAccessVpnManagerImpl.java | 2 +- .../com/cloud/network/MockFirewallManagerImpl.java | 5 +- .../com/cloud/network/MockNetworkManagerImpl.java | 7 +- .../com/cloud/network/MockRulesManagerImpl.java | 4 +- .../network/firewall/FirewallManagerTest.java | 2 +- .../test/com/cloud/vpc/MockNetworkManagerImpl.java | 8 +- setup/db/db/schema-410to420-cleanup.sql | 2 + setup/db/db/schema-410to420.sql | 12 ++-- 33 files changed, 141 insertions(+), 145 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/agent/api/to/FirewallRuleTO.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/agent/api/to/FirewallRuleTO.java b/api/src/com/cloud/agent/api/to/FirewallRuleTO.java index 7f77936..6c6859e8 100644 --- a/api/src/com/cloud/agent/api/to/FirewallRuleTO.java +++ b/api/src/com/cloud/agent/api/to/FirewallRuleTO.java @@ -22,7 +22,7 @@ import java.util.List; import org.apache.cloudstack.api.InternalIdentity; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.State; +import com.cloud.network.rules.NetworkRule.State; import com.cloud.utils.net.NetUtils; /** http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/agent/api/to/LoadBalancerTO.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/agent/api/to/LoadBalancerTO.java b/api/src/com/cloud/agent/api/to/LoadBalancerTO.java index df2f8a8..66bc4b9 100644 --- a/api/src/com/cloud/agent/api/to/LoadBalancerTO.java +++ b/api/src/com/cloud/agent/api/to/LoadBalancerTO.java @@ -68,7 +68,7 @@ public class LoadBalancerTO { this.stickinessPolicies = null; int i = 0; for (LbDestination destination : destinations) { - this.destinations[i++] = new DestinationTO(destination.getIpAddress(), destination.getDestinationPortStart(), destination.isRevoked(), false); + this.destinations[i++] = new DestinationTO(destination.getInstanceIpAddress(), destination.getInstancePort(), destination.isRevoked(), false); } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/agent/api/to/StaticNatRuleTO.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/agent/api/to/StaticNatRuleTO.java b/api/src/com/cloud/agent/api/to/StaticNatRuleTO.java index 64ca266..67f2e13 100644 --- a/api/src/com/cloud/agent/api/to/StaticNatRuleTO.java +++ b/api/src/com/cloud/agent/api/to/StaticNatRuleTO.java @@ -17,7 +17,7 @@ package com.cloud.agent.api.to; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.State; +import com.cloud.network.rules.NetworkRule.State; import com.cloud.network.rules.StaticNatRule; /** http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/async/AsyncJob.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/async/AsyncJob.java b/api/src/com/cloud/async/AsyncJob.java index 8e4aec0..1528809 100644 --- a/api/src/com/cloud/async/AsyncJob.java +++ b/api/src/com/cloud/async/AsyncJob.java @@ -49,7 +49,8 @@ public interface AsyncJob extends Identity, InternalIdentity { AutoScalePolicy, AutoScaleVmProfile, AutoScaleVmGroup, - GlobalLoadBalancerRule + GlobalLoadBalancerRule, + LoadBalancerRule } long getUserId(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/network/lb/LoadBalancingRule.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/lb/LoadBalancingRule.java b/api/src/com/cloud/network/lb/LoadBalancingRule.java index 12b7216..5533db2 100644 --- a/api/src/com/cloud/network/lb/LoadBalancingRule.java +++ b/api/src/com/cloud/network/lb/LoadBalancingRule.java @@ -24,6 +24,7 @@ import com.cloud.network.as.AutoScaleVmProfile; import com.cloud.network.as.Condition; import com.cloud.network.as.Counter; import com.cloud.network.rules.LoadBalancer; +import com.cloud.network.rules.NetworkRule; import com.cloud.utils.Pair; public class LoadBalancingRule implements LoadBalancer { @@ -72,11 +73,6 @@ public class LoadBalancingRule implements LoadBalancer { } @Override - public int getDefaultPortEnd() { - return lb.getDefaultPortEnd(); - } - - @Override public String getAlgorithm() { return lb.getAlgorithm(); } @@ -97,17 +93,12 @@ public class LoadBalancingRule implements LoadBalancer { } @Override - public Integer getSourcePortEnd() { - return lb.getSourcePortEnd(); - } - - @Override public String getProtocol() { return lb.getProtocol(); } @Override - public LoadBalancer.State getState() { + public NetworkRule.State getState() { return lb.getState(); } @@ -141,11 +132,9 @@ public class LoadBalancingRule implements LoadBalancer { } public interface Destination { - String getIpAddress(); + String getInstanceIpAddress(); - int getDestinationPortStart(); - - int getDestinationPortEnd(); + int getInstancePort(); boolean isRevoked(); } @@ -239,31 +228,24 @@ public class LoadBalancingRule implements LoadBalancer { } public static class LbDestination implements Destination { - private int portStart; - private int portEnd; - private String ip; + private int instancePort; + private String instanceIp; boolean revoked; - public LbDestination(int portStart, int portEnd, String ip, boolean revoked) { - this.portStart = portStart; - this.portEnd = portEnd; - this.ip = ip; + public LbDestination(int instancePort, String instanceIp, boolean revoked) { + this.instancePort = instancePort; + this.instanceIp = instanceIp; this.revoked = revoked; } @Override - public String getIpAddress() { - return ip; - } - - @Override - public int getDestinationPortStart() { - return portStart; + public String getInstanceIpAddress() { + return instanceIp; } @Override - public int getDestinationPortEnd() { - return portEnd; + public int getInstancePort() { + return instancePort; } @Override @@ -432,4 +414,14 @@ public class LoadBalancingRule implements LoadBalancer { } } + @Override + public Scheme getScheme() { + return lb.getScheme(); + } + + @Override + public Purpose getPurpose() { + return Purpose.LoadBalancing; + } + } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/network/rules/FirewallRule.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/rules/FirewallRule.java b/api/src/com/cloud/network/rules/FirewallRule.java index 3041bf4..be3d279 100644 --- a/api/src/com/cloud/network/rules/FirewallRule.java +++ b/api/src/com/cloud/network/rules/FirewallRule.java @@ -22,28 +22,13 @@ import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.api.Identity; import org.apache.cloudstack.api.InternalIdentity; -public interface FirewallRule extends ControlledEntity, Identity, InternalIdentity { - enum Purpose { - Firewall, - PortForwarding, - LoadBalancing, - Vpn, - StaticNat, - NetworkACL, - } +public interface FirewallRule extends ControlledEntity, Identity, InternalIdentity, NetworkRule { enum FirewallRuleType { System, // The pre-defined rules created by admin, in the system wide User // the rules created by user, to a specific ip } - enum State { - Staged, // Rule been created but has never got through network rule conflict detection. Rules in this state can not be sent to network elements. - Add, // Add means the rule has been created and has gone through network rule conflict detection. - Active, // Rule has been sent to the network elements and reported to be active. - Revoke // Revoke means this rule has been revoked. If this rule has been sent to the network elements, the rule will be deleted from database. - } - enum TrafficType { Ingress, Egress @@ -69,12 +54,6 @@ public interface FirewallRule extends ControlledEntity, Identity, InternalIdenti */ String getProtocol(); - Purpose getPurpose(); - - State getState(); - - long getNetworkId(); - Integer getIcmpCode(); Integer getIcmpType(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/network/rules/LoadBalancer.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/rules/LoadBalancer.java b/api/src/com/cloud/network/rules/LoadBalancer.java index 6c16ea7..5132eab 100644 --- a/api/src/com/cloud/network/rules/LoadBalancer.java +++ b/api/src/com/cloud/network/rules/LoadBalancer.java @@ -23,13 +23,11 @@ import org.apache.cloudstack.api.InternalIdentity; /** * Definition for a LoadBalancer */ -public interface LoadBalancer extends ControlledEntity, Identity, InternalIdentity{ +public interface LoadBalancer extends ControlledEntity, Identity, InternalIdentity, NetworkRule{ - enum State { - Staged, // Rule been created but has never got through network rule conflict detection. Rules in this state can not be sent to network elements. - Add, // Add means the rule has been created and has gone through network rule conflict detection. - Active, // Rule has been sent to the network elements and reported to be active. - Revoke // Revoke means this rule has been revoked. If this rule has been sent to the network elements, the rule will be deleted from database. + enum Scheme { + Public, + Internal } String getName(); @@ -38,20 +36,14 @@ public interface LoadBalancer extends ControlledEntity, Identity, InternalIdenti int getDefaultPortStart(); - int getDefaultPortEnd(); - String getAlgorithm(); Long getSourceIpAddressId(); String getProtocol(); - - State getState(); - - long getNetworkId(); Integer getSourcePortStart(); - Integer getSourcePortEnd(); + Scheme getScheme(); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/com/cloud/network/rules/NetworkRule.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/rules/NetworkRule.java b/api/src/com/cloud/network/rules/NetworkRule.java new file mode 100644 index 0000000..effa858 --- /dev/null +++ b/api/src/com/cloud/network/rules/NetworkRule.java @@ -0,0 +1,42 @@ +// 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 com.cloud.network.rules; + +public interface NetworkRule { + enum Purpose { + Firewall, + PortForwarding, + LoadBalancing, + Vpn, + StaticNat, + NetworkACL, + } + + enum State { + Staged, // Rule been created but has never got through network rule conflict detection. Rules in this state can not be sent to network elements. + Add, // Add means the rule has been created and has gone through network rule conflict detection. + Active, // Rule has been sent to the network elements and reported to be active. + Revoke // Revoke means this rule has been revoked. If this rule has been sent to the network elements, the rule will be deleted from database. + } + + Purpose getPurpose(); + + NetworkRule.State getState(); + + long getNetworkId(); + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java index 5f1d97b..a7b8e31 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java @@ -375,7 +375,7 @@ public class CreateLoadBalancerRuleCmd extends BaseAsyncCreateCmd /*implements @Override public AsyncJob.Type getInstanceType() { - return AsyncJob.Type.FirewallRule; + return AsyncJob.Type.LoadBalancerRule; } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java index 81a1056..0fe66c7 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/DeleteLoadBalancerRuleCmd.java @@ -113,6 +113,6 @@ public class DeleteLoadBalancerRuleCmd extends BaseAsyncCmd { @Override public AsyncJob.Type getInstanceType() { - return AsyncJob.Type.FirewallRule; + return AsyncJob.Type.LoadBalancerRule; } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java index ae00bf2..c1fd796 100644 --- a/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java +++ b/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java @@ -81,7 +81,7 @@ import com.cloud.network.dao.PhysicalNetworkServiceProviderVO; import com.cloud.network.dao.PhysicalNetworkVO; import com.cloud.network.dao.VpnUserDao; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.PortForwardingRule; import com.cloud.network.rules.StaticNat; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/NetworkManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 409f734..ed9a8bf 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -134,7 +134,7 @@ import com.cloud.network.guru.NetworkGuru; import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.rules.FirewallManager; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.LoadBalancer; import com.cloud.network.rules.PortForwardingRuleVO; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/NetworkModelImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java index e90576b..c223410 100644 --- a/server/src/com/cloud/network/NetworkModelImpl.java +++ b/server/src/com/cloud/network/NetworkModelImpl.java @@ -81,7 +81,7 @@ import com.cloud.network.element.IpDeployer; import com.cloud.network.element.IpDeployingRequester; import com.cloud.network.element.NetworkElement; import com.cloud.network.element.UserDataServiceProvider; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.dao.PortForwardingRulesDao; import com.cloud.network.vpc.dao.PrivateIpDao; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/NetworkServiceImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java index 5db5c1b..b821295 100755 --- a/server/src/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/com/cloud/network/NetworkServiceImpl.java @@ -78,7 +78,6 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.exception.UnsupportedServiceException; import com.cloud.host.dao.HostDao; -import com.cloud.network.IpAddress.State; import com.cloud.network.Network.Capability; import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; @@ -106,8 +105,6 @@ import com.cloud.network.element.NetworkElement; import com.cloud.network.element.VirtualRouterElement; import com.cloud.network.element.VpcVirtualRouterElement; import com.cloud.network.guru.NetworkGuru; -import com.cloud.network.rules.FirewallRule.Purpose; -import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.PortForwardingRuleVO; import com.cloud.network.rules.RulesManager; import com.cloud.network.rules.dao.PortForwardingRulesDao; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java b/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java index 43cd537..649a8de 100644 --- a/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java +++ b/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java @@ -25,8 +25,8 @@ import org.springframework.stereotype.Component; import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule.FirewallRuleType; -import com.cloud.network.rules.FirewallRule.Purpose; -import com.cloud.network.rules.FirewallRule.State; +import com.cloud.network.rules.NetworkRule.Purpose; +import com.cloud.network.rules.NetworkRule.State; import com.cloud.network.rules.FirewallRule.TrafficType; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.server.ResourceTag.TaggedResourceType; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java b/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java index 49a2e63..b710eb1 100644 --- a/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java +++ b/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java @@ -23,7 +23,7 @@ import javax.inject.Inject; import org.springframework.stereotype.Component; -import com.cloud.network.rules.FirewallRule.State; +import com.cloud.network.rules.NetworkRule.State; import com.cloud.network.rules.LoadBalancer; import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.tags.dao.ResourceTagDao; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/dao/LoadBalancerVO.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/dao/LoadBalancerVO.java b/server/src/com/cloud/network/dao/LoadBalancerVO.java index 65b3b64..70bbc37 100644 --- a/server/src/com/cloud/network/dao/LoadBalancerVO.java +++ b/server/src/com/cloud/network/dao/LoadBalancerVO.java @@ -54,16 +54,10 @@ public class LoadBalancerVO implements LoadBalancer { private String algorithm; @Column(name="default_port_start") - private int defaultPortStart; + private int instancePort; - @Column(name="default_port_end") - private int defaultPortEnd; - - @Column(name="start_port", updatable=false) - Integer sourcePortStart; - - @Column(name="end_port", updatable=false) - Integer sourcePortEnd; + @Column(name="source_port", updatable=false) + Integer sourcePort; @Column(name="network_id") Long networkId; @@ -86,14 +80,14 @@ public class LoadBalancerVO implements LoadBalancer { @Column(name=GenericDao.CREATED_COLUMN) Date created; + + @Enumerated(value=EnumType.STRING) + @Column(name="scheme") + LoadBalancer.Scheme scheme; public Integer getSourcePortStart() { - return sourcePortStart; - } - - public Integer getSourcePortEnd() { - return sourcePortEnd; + return sourcePort; } public long getId() { @@ -112,21 +106,19 @@ public class LoadBalancerVO implements LoadBalancer { } public LoadBalancerVO(String name, String description, long srcIpId, int srcPort, int dstPort, String algorithm, - long networkId, long accountId, long domainId) { + long networkId, long accountId, long domainId, Scheme scheme) { this.name = name; this.description = description; this.algorithm = algorithm; - this.defaultPortStart = dstPort; - this.defaultPortEnd = dstPort; - this.sourcePortStart = srcPort; - this.sourcePortEnd = srcPort; + this.instancePort = dstPort; + this.sourcePort = srcPort; this.state = State.Staged; this.networkId = networkId; this.accountId = accountId; this.domainId = domainId; this.uuid = UUID.randomUUID().toString(); this.sourceIpAddressId = srcIpId; - + this.scheme = scheme; } public void setState(LoadBalancer.State state) { @@ -150,12 +142,7 @@ public class LoadBalancerVO implements LoadBalancer { @Override public int getDefaultPortStart() { - return defaultPortStart; - } - - @Override - public int getDefaultPortEnd() { - return defaultPortEnd; + return instancePort; } public void setName(String name) { @@ -194,4 +181,14 @@ public class LoadBalancerVO implements LoadBalancer { public State getState() { return state; } + + @Override + public LoadBalancer.Scheme getScheme() { + return scheme; + } + + @Override + public Purpose getPurpose() { + return Purpose.LoadBalancing; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/firewall/FirewallManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java index bd525e1..9045ecb 100644 --- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java +++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java @@ -60,8 +60,8 @@ import com.cloud.network.element.StaticNatServiceProvider; import com.cloud.network.rules.FirewallManager; import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule.FirewallRuleType; -import com.cloud.network.rules.FirewallRule.Purpose; -import com.cloud.network.rules.FirewallRule.State; +import com.cloud.network.rules.NetworkRule.Purpose; +import com.cloud.network.rules.NetworkRule.State; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.PortForwardingRule; import com.cloud.network.rules.PortForwardingRuleVO; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index cb85ce1..c2d285a 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -1386,7 +1386,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements LoadBalancerVO newRule = new LoadBalancerVO(lb.getName(), lb.getDescription(), lb.getSourceIpAddressId(), lb.getSourcePortEnd(), lb.getDefaultPortStart(), lb.getAlgorithm(), network.getId(), - ipAddr.getAllocatedToAccountId(), ipAddr.getAllocatedInDomainId()); + ipAddr.getAllocatedToAccountId(), ipAddr.getAllocatedInDomainId(), LoadBalancer.Scheme.Public); // verify rule is supported by Lb provider of the network LoadBalancingRule loadBalancing = new LoadBalancingRule(newRule, new ArrayList<LbDestination>(), @@ -1693,8 +1693,7 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements UserVm vm = _vmDao.findById(lbVmMap.getInstanceId()); Nic nic = _nicDao.findByInstanceIdAndNetworkIdIncludingRemoved(lb.getNetworkId(), vm.getId()); dstIp = nic.getIp4Address(); - LbDestination lbDst = new LbDestination(lb.getDefaultPortStart(), lb.getDefaultPortEnd(), dstIp, - lbVmMap.isRevoke()); + LbDestination lbDst = new LbDestination(lb.getDefaultPortStart(), dstIp, lbVmMap.isRevoke()); dstList.add(lbDst); } return dstList; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index 5227434..d3241b6 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -171,7 +171,7 @@ import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.router.VirtualRouter.RedundantState; import com.cloud.network.router.VirtualRouter.Role; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.LoadBalancer; import com.cloud.network.rules.PortForwardingRule; import com.cloud.network.rules.RulesManager; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index bdfac06..30eaf7d 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@ -91,7 +91,7 @@ import com.cloud.network.dao.Site2SiteVpnConnectionDao; import com.cloud.network.dao.Site2SiteVpnGatewayDao; import com.cloud.network.dao.Site2SiteVpnGatewayVO; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.vpc.NetworkACLManager; import com.cloud.network.vpc.PrivateGateway; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/rules/FirewallManager.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/FirewallManager.java b/server/src/com/cloud/network/rules/FirewallManager.java index 2bce8fe..15bf8d9 100644 --- a/server/src/com/cloud/network/rules/FirewallManager.java +++ b/server/src/com/cloud/network/rules/FirewallManager.java @@ -23,7 +23,7 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.dao.IPAddressVO; import com.cloud.network.firewall.FirewallService; import com.cloud.network.rules.FirewallRule.FirewallRuleType; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.user.Account; public interface FirewallManager extends FirewallService { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/rules/RulesManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/RulesManagerImpl.java b/server/src/com/cloud/network/rules/RulesManagerImpl.java index 8b8f0b6..8c80c4c 100755 --- a/server/src/com/cloud/network/rules/RulesManagerImpl.java +++ b/server/src/com/cloud/network/rules/RulesManagerImpl.java @@ -52,7 +52,7 @@ import com.cloud.network.dao.IPAddressVO; import com.cloud.network.dao.LoadBalancerDao; import com.cloud.network.dao.LoadBalancerVO; import com.cloud.network.rules.FirewallRule.FirewallRuleType; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.dao.PortForwardingRulesDao; import com.cloud.network.vpc.VpcManager; import com.cloud.offering.NetworkOffering; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java b/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java index cc780cb..ba841ad 100644 --- a/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java +++ b/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java @@ -24,16 +24,13 @@ import javax.inject.Inject; import org.springframework.stereotype.Component; import com.cloud.network.dao.FirewallRulesCidrsDao; -import com.cloud.network.dao.FirewallRulesCidrsDaoImpl; -import com.cloud.network.rules.FirewallRule.Purpose; -import com.cloud.network.rules.FirewallRule.State; +import com.cloud.network.rules.NetworkRule.Purpose; +import com.cloud.network.rules.NetworkRule.State; import com.cloud.network.rules.PortForwardingRuleVO; - import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Op; -import com.cloud.vm.dao.NicSecondaryIpVO; @Component @Local(value=PortForwardingRulesDao.class) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java b/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java index cb44866..68716d3 100644 --- a/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java +++ b/server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java @@ -22,13 +22,12 @@ import java.util.Map; import javax.ejb.Local; import javax.inject.Inject; -import javax.naming.ConfigurationException; +import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.command.user.network.ListNetworkACLsCmd; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; -import org.apache.cloudstack.acl.SecurityChecker.AccessType; import com.cloud.event.ActionEvent; import com.cloud.event.EventTypes; import com.cloud.exception.InvalidParameterValueException; @@ -43,9 +42,9 @@ import com.cloud.network.dao.FirewallRulesDao; import com.cloud.network.firewall.NetworkACLService; import com.cloud.network.rules.FirewallManager; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; import com.cloud.network.rules.FirewallRule.TrafficType; import com.cloud.network.rules.FirewallRuleVO; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.server.ResourceTag.TaggedResourceType; import com.cloud.tags.ResourceTagVO; @@ -55,7 +54,6 @@ import com.cloud.user.AccountManager; import com.cloud.user.UserContext; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; -import com.cloud.utils.component.Manager; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.Filter; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java index 673535a..c36ba0d 100755 --- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java @@ -58,7 +58,7 @@ import com.cloud.network.dao.VpnUserDao; import com.cloud.network.element.RemoteAccessVPNServiceProvider; import com.cloud.network.rules.FirewallManager; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.RulesManager; import com.cloud.projects.Project.ListProjectResourcesCriteria; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/test/com/cloud/network/MockFirewallManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/network/MockFirewallManagerImpl.java b/server/test/com/cloud/network/MockFirewallManagerImpl.java index 95bb1d1..226d68b 100644 --- a/server/test/com/cloud/network/MockFirewallManagerImpl.java +++ b/server/test/com/cloud/network/MockFirewallManagerImpl.java @@ -30,13 +30,12 @@ import com.cloud.network.dao.IPAddressVO; import com.cloud.network.firewall.FirewallService; import com.cloud.network.rules.FirewallManager; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.FirewallRule.FirewallRuleType; -import com.cloud.network.rules.FirewallRule.Purpose; import com.cloud.network.rules.FirewallRule.TrafficType; +import com.cloud.network.rules.FirewallRuleVO; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.user.Account; import com.cloud.utils.Pair; -import com.cloud.utils.component.Manager; import com.cloud.utils.component.ManagerBase; @Local(value = {FirewallManager.class, FirewallService.class}) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/test/com/cloud/network/MockNetworkManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/network/MockNetworkManagerImpl.java b/server/test/com/cloud/network/MockNetworkManagerImpl.java index d903042..f772a4f 100755 --- a/server/test/com/cloud/network/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/network/MockNetworkManagerImpl.java @@ -54,8 +54,7 @@ import com.cloud.network.element.StaticNatServiceProvider; import com.cloud.network.element.UserDataServiceProvider; import com.cloud.network.guru.NetworkGuru; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; -import com.cloud.network.rules.LoadBalancer.State; +import com.cloud.network.rules.NetworkRule; import com.cloud.network.rules.StaticNat; import com.cloud.offering.NetworkOffering; import com.cloud.offerings.NetworkOfferingVO; @@ -452,7 +451,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage * @see com.cloud.network.NetworkManager#applyRules(java.util.List, com.cloud.network.rules.FirewallRule.Purpose, com.cloud.network.NetworkRuleApplier, boolean) */ @Override - public boolean applyRules(List<? extends FirewallRule> rules, Purpose purpose, NetworkRuleApplier applier, + public boolean applyRules(List<? extends FirewallRule> rules, NetworkRule.Purpose purpose, NetworkRuleApplier applier, boolean continueOnError) throws ResourceUnavailableException { // TODO Auto-generated method stub return false; @@ -881,7 +880,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage } @Override - public int getLbRuleCountForIp(Long addressId, State state) { + public int getLbRuleCountForIp(Long addressId, NetworkRule.State state) { // TODO Auto-generated method stub return 0; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/test/com/cloud/network/MockRulesManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/network/MockRulesManagerImpl.java b/server/test/com/cloud/network/MockRulesManagerImpl.java index d4961ce..4a891af 100644 --- a/server/test/com/cloud/network/MockRulesManagerImpl.java +++ b/server/test/com/cloud/network/MockRulesManagerImpl.java @@ -28,7 +28,7 @@ import com.cloud.exception.InsufficientAddressCapacityException; import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule; import com.cloud.network.rules.PortForwardingRule; import com.cloud.network.rules.PortForwardingRuleVO; import com.cloud.network.rules.RulesManager; @@ -216,7 +216,7 @@ public class MockRulesManagerImpl extends ManagerBase implements RulesManager, R @Override public FirewallRule[] reservePorts(IpAddress ip, String protocol, - Purpose purpose, boolean openFirewall, Account caller, int... ports) + NetworkRule.Purpose purpose, boolean openFirewall, Account caller, int... ports) throws NetworkRuleConflictException { // TODO Auto-generated method stub return null; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/test/com/cloud/network/firewall/FirewallManagerTest.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/network/firewall/FirewallManagerTest.java b/server/test/com/cloud/network/firewall/FirewallManagerTest.java index 33b6c73..40cb9a7 100644 --- a/server/test/com/cloud/network/firewall/FirewallManagerTest.java +++ b/server/test/com/cloud/network/firewall/FirewallManagerTest.java @@ -47,7 +47,7 @@ import com.cloud.network.element.VirtualRouterElement; import com.cloud.network.element.VpcVirtualRouterElement; import com.cloud.network.rules.FirewallManager; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; +import com.cloud.network.rules.NetworkRule.Purpose; import com.cloud.network.rules.FirewallRuleVO; import com.cloud.utils.component.ComponentContext; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/server/test/com/cloud/vpc/MockNetworkManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java index 4cb7444..b7826d9 100644 --- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java @@ -1,3 +1,4 @@ + // 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 @@ -68,8 +69,7 @@ import com.cloud.network.element.StaticNatServiceProvider; import com.cloud.network.element.UserDataServiceProvider; import com.cloud.network.guru.NetworkGuru; import com.cloud.network.rules.FirewallRule; -import com.cloud.network.rules.FirewallRule.Purpose; -import com.cloud.network.rules.LoadBalancer.State; +import com.cloud.network.rules.NetworkRule; import com.cloud.network.rules.StaticNat; import com.cloud.offering.NetworkOffering; import com.cloud.offerings.NetworkOfferingVO; @@ -774,7 +774,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage * @see com.cloud.network.NetworkManager#applyRules(java.util.List, com.cloud.network.rules.FirewallRule.Purpose, com.cloud.network.NetworkRuleApplier, boolean) */ @Override - public boolean applyRules(List<? extends FirewallRule> rules, Purpose purpose, NetworkRuleApplier applier, + public boolean applyRules(List<? extends FirewallRule> rules, NetworkRule.Purpose purpose, NetworkRuleApplier applier, boolean continueOnError) throws ResourceUnavailableException { // TODO Auto-generated method stub return false; @@ -1413,7 +1413,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkManage @Override - public int getLbRuleCountForIp(Long addressId, State state) { + public int getLbRuleCountForIp(Long addressId, NetworkRule.State state) { // TODO Auto-generated method stub return 0; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/setup/db/db/schema-410to420-cleanup.sql ---------------------------------------------------------------------- diff --git a/setup/db/db/schema-410to420-cleanup.sql b/setup/db/db/schema-410to420-cleanup.sql index c60c01b..c832148 100644 --- a/setup/db/db/schema-410to420-cleanup.sql +++ b/setup/db/db/schema-410to420-cleanup.sql @@ -26,3 +26,5 @@ ALTER TABLE `cloud`.`remote_access_vpn` ADD primary key (`id`); ALTER TABLE `cloud`.`remote_access_vpn` ADD CONSTRAINT `fk_remote_access_vpn__vpn_server_addr_id` FOREIGN KEY (`vpn_server_addr_id`) REFERENCES `user_ip_address` (`id`); ALTER TABLE `cloud`.`load_balancing_rules` DROP foreign key `fk_load_balancing_rules__id`; +ALTER TABLE `cloud`.`load_balancing_rules` DROP COLUMN `default_port_end`; + http://git-wip-us.apache.org/repos/asf/cloudstack/blob/50140dc1/setup/db/db/schema-410to420.sql ---------------------------------------------------------------------- diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql index a8a7549..c03a54e 100644 --- a/setup/db/db/schema-410to420.sql +++ b/setup/db/db/schema-410to420.sql @@ -407,16 +407,18 @@ INSERT INTO `cloud`.`vm_template` (id, unique_name, name, public, created, type, -- END: support for LXC ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `uuid` varchar(40); -ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `ip_address_id` bigint unsigned COMMENT 'id of the corresponding ip address'; -ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `start_port` int(10) COMMENT 'starting port of a port range'; -ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `end_port` int(10) COMMENT 'end port of a port range'; +ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `ip_address_id` bigint unsigned COMMENT 'load balancer ip address id'; +ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `source_port` int(10) COMMENT 'load balancer port number'; ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `state` char(32) NOT NULL COMMENT 'current state of this rule'; -ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `protocol` char(16) NOT NULL default 'TCP' COMMENT 'protocol to open these ports for'; +ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `protocol` char(16) NOT NULL default 'TCP' COMMENT 'protocol to open these ports for; can be TCP only for the Load balancer'; ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `account_id` bigint unsigned NOT NULL COMMENT 'owner id'; ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `domain_id` bigint unsigned NOT NULL COMMENT 'domain id'; -ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `network_id` bigint unsigned NOT NULL COMMENT 'network id'; +ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `network_id` bigint unsigned NOT NULL COMMENT 'network id the rule belongs to'; +ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `scheme` varchar(40) NOT NULL COMMENT 'load balancer rule scheme. Can be Public and Internal'; ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `created` datetime COMMENT 'Date created'; ALTER TABLE `cloud`.`load_balancing_rules` MODIFY COLUMN `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id'; +ALTER TABLE `cloud`.`load_balancing_rules` CHANGE COLUMN `default_port_start` `instance_port` int(10) DEFAULT NULL COMMENT 'the port on which instance server is listening'; +
