mirror of https://github.com/apache/cloudstack.git
refactor code to reduce complexity
This commit is contained in:
parent
460151ad3c
commit
0ce60d6b53
|
|
@ -0,0 +1,113 @@
|
|||
package org.apache.cloudstack.resource;
|
||||
|
||||
import com.cloud.network.dao.NetworkVO;
|
||||
import com.cloud.network.vpc.VpcVO;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class NsxOpObject {
|
||||
VpcVO vpcVO;
|
||||
NetworkVO networkVO;
|
||||
long accountId;
|
||||
long domainId;
|
||||
long zoneId;
|
||||
|
||||
public VpcVO getVpcVO() {
|
||||
return vpcVO;
|
||||
}
|
||||
|
||||
public void setVpcVO(VpcVO vpcVO) {
|
||||
this.vpcVO = vpcVO;
|
||||
}
|
||||
|
||||
public NetworkVO getNetworkVO() {
|
||||
return networkVO;
|
||||
}
|
||||
|
||||
public void setNetworkVO(NetworkVO networkVO) {
|
||||
this.networkVO = networkVO;
|
||||
}
|
||||
|
||||
public long getAccountId() {
|
||||
return accountId;
|
||||
}
|
||||
|
||||
public void setAccountId(long accountId) {
|
||||
this.accountId = accountId;
|
||||
}
|
||||
|
||||
public long getDomainId() {
|
||||
return domainId;
|
||||
}
|
||||
|
||||
public void setDomainId(long domainId) {
|
||||
this.domainId = domainId;
|
||||
}
|
||||
|
||||
public long getZoneId() {
|
||||
return zoneId;
|
||||
}
|
||||
|
||||
public void setZoneId(long zoneId) {
|
||||
this.zoneId = zoneId;
|
||||
}
|
||||
|
||||
public String getNetworkResourceName() {
|
||||
return Objects.nonNull(vpcVO) ? vpcVO.getName() : networkVO.getName();
|
||||
}
|
||||
|
||||
public boolean isVpcResource() {
|
||||
return Objects.nonNull(vpcVO);
|
||||
}
|
||||
|
||||
public long getNetworkResourceId() {
|
||||
return Objects.nonNull(vpcVO) ? vpcVO.getId() : networkVO.getId();
|
||||
}
|
||||
|
||||
public static final class Builder {
|
||||
VpcVO vpcVO;
|
||||
NetworkVO networkVO;
|
||||
long accountId;
|
||||
long domainId;
|
||||
long zoneId;
|
||||
|
||||
public Builder() {
|
||||
// Default constructor
|
||||
}
|
||||
|
||||
public Builder vpcVO(VpcVO vpcVO) {
|
||||
this.vpcVO = vpcVO;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder networkVO(NetworkVO networkVO) {
|
||||
this.networkVO = networkVO;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder domainId(long domainId) {
|
||||
this.domainId = domainId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder accountId(long accountId) {
|
||||
this.accountId = accountId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder zoneId(long zoneId) {
|
||||
this.zoneId = zoneId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public NsxOpObject build() {
|
||||
NsxOpObject object = new NsxOpObject();
|
||||
object.setVpcVO(this.vpcVO);
|
||||
object.setNetworkVO(this.networkVO);
|
||||
object.setDomainId(this.domainId);
|
||||
object.setAccountId(this.accountId);
|
||||
object.setZoneId(this.zoneId);
|
||||
return object;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -92,6 +92,7 @@ import net.sf.ehcache.config.InvalidConfigurationException;
|
|||
import org.apache.cloudstack.StartupNsxCommand;
|
||||
import org.apache.cloudstack.resource.NsxLoadBalancerMember;
|
||||
import org.apache.cloudstack.resource.NsxNetworkRule;
|
||||
import org.apache.cloudstack.resource.NsxOpObject;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
|
@ -510,26 +511,18 @@ public class NsxElement extends AdapterBase implements DhcpServiceProvider, Dns
|
|||
if (vm == null || networkModel.getNicInNetwork(vm.getId(), network.getId()) == null) {
|
||||
continue;
|
||||
}
|
||||
Pair<VpcVO, NetworkVO> vpcOrNetwork = getVpcOrNetwork(network.getVpcId(), network.getId());
|
||||
VpcVO vpc = vpcOrNetwork.first();
|
||||
NetworkVO networkVO = vpcOrNetwork.second();
|
||||
Long networkResourceId = Objects.nonNull(vpc) ? vpc.getId() : networkVO.getId();
|
||||
String networkResourceName = Objects.nonNull(vpc) ? vpc.getName() : networkVO.getName();
|
||||
boolean isVpcResource = Objects.nonNull(vpc);
|
||||
long domainId = Objects.nonNull(vpc) ? vpc.getDomainId() : networkVO.getDomainId();
|
||||
long accountId = Objects.nonNull(vpc) ? vpc.getAccountId() : networkVO.getAccountId();
|
||||
long zoneId = Objects.nonNull(vpc) ? vpc.getZoneId() : networkVO.getDataCenterId();
|
||||
NsxOpObject nsxObject = getNsxOpObject(network);
|
||||
String publicPort = getPublicPortRange(rule);
|
||||
|
||||
String privatePort = getPrivatePFPortRange(rule);
|
||||
|
||||
NsxNetworkRule networkRule = new NsxNetworkRule.Builder()
|
||||
.setDomainId(domainId)
|
||||
.setAccountId(accountId)
|
||||
.setZoneId(zoneId)
|
||||
.setNetworkResourceId(networkResourceId)
|
||||
.setNetworkResourceName(networkResourceName)
|
||||
.setVpcResource(isVpcResource)
|
||||
.setDomainId(nsxObject.getDomainId())
|
||||
.setAccountId(nsxObject.getAccountId())
|
||||
.setZoneId(nsxObject.getZoneId())
|
||||
.setNetworkResourceId(nsxObject.getNetworkResourceId())
|
||||
.setNetworkResourceName(nsxObject.getNetworkResourceName())
|
||||
.setVpcResource(nsxObject.isVpcResource())
|
||||
.setVmId(vm.getId())
|
||||
.setVmIp(vm.getPrivateIpAddress())
|
||||
.setPublicIp(publicIp.getAddress().addr())
|
||||
|
|
@ -588,6 +581,35 @@ public class NsxElement extends AdapterBase implements DhcpServiceProvider, Dns
|
|||
String.valueOf(rule.getSourcePortStart()).concat("-").concat(String.valueOf(rule.getSourcePortEnd()));
|
||||
}
|
||||
|
||||
private long getResourceId(String resource, VpcVO vpc, NetworkVO network) {
|
||||
switch (resource) {
|
||||
case "domain":
|
||||
return Objects.nonNull(vpc) ? vpc.getDomainId() : network.getDomainId();
|
||||
case "account":
|
||||
return Objects.nonNull(vpc) ? vpc.getAccountId() : network.getAccountId();
|
||||
case "zone":
|
||||
return Objects.nonNull(vpc) ? vpc.getZoneId() : network.getDataCenterId();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private NsxOpObject getNsxOpObject(Network network) {
|
||||
Pair<VpcVO, NetworkVO> vpcOrNetwork = getVpcOrNetwork(network.getVpcId(), network.getId());
|
||||
VpcVO vpc = vpcOrNetwork.first();
|
||||
NetworkVO networkVO = vpcOrNetwork.second();
|
||||
long domainId = getResourceId("domain", vpc, networkVO);
|
||||
long accountId = getResourceId("account", vpc, networkVO);
|
||||
long zoneId = getResourceId("zone", vpc, networkVO);
|
||||
|
||||
return new NsxOpObject.Builder()
|
||||
.vpcVO(vpc)
|
||||
.networkVO(networkVO)
|
||||
.domainId(domainId)
|
||||
.accountId(accountId)
|
||||
.zoneId(zoneId)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applyLBRules(Network network, List<LoadBalancingRule> rules) throws ResourceUnavailableException {
|
||||
for (LoadBalancingRule loadBalancingRule : rules) {
|
||||
|
|
@ -596,24 +618,16 @@ public class NsxElement extends AdapterBase implements DhcpServiceProvider, Dns
|
|||
}
|
||||
IPAddressVO publicIp = ipAddressDao.findByIpAndDcId(network.getDataCenterId(),
|
||||
loadBalancingRule.getSourceIp().addr());
|
||||
NsxOpObject nsxObject = getNsxOpObject(network);
|
||||
|
||||
Pair<VpcVO, NetworkVO> vpcOrNetwork = getVpcOrNetwork(network.getVpcId(), network.getId());
|
||||
VpcVO vpc = vpcOrNetwork.first();
|
||||
NetworkVO networkVO = vpcOrNetwork.second();
|
||||
Long networkResourceId = Objects.nonNull(vpc) ? vpc.getId() : networkVO.getId();
|
||||
String networkResourceName = Objects.nonNull(vpc) ? vpc.getName() : networkVO.getName();
|
||||
boolean isVpcResource = Objects.nonNull(vpc);
|
||||
long domainId = Objects.nonNull(vpc) ? vpc.getDomainId() : networkVO.getDomainId();
|
||||
long accountId = Objects.nonNull(vpc) ? vpc.getAccountId() : networkVO.getAccountId();
|
||||
long zoneId = Objects.nonNull(vpc) ? vpc.getZoneId() : networkVO.getDataCenterId();
|
||||
List<NsxLoadBalancerMember> lbMembers = getLoadBalancerMembers(loadBalancingRule);
|
||||
NsxNetworkRule networkRule = new NsxNetworkRule.Builder()
|
||||
.setDomainId(domainId)
|
||||
.setAccountId(accountId)
|
||||
.setZoneId(zoneId)
|
||||
.setNetworkResourceId(networkResourceId)
|
||||
.setNetworkResourceName(networkResourceName)
|
||||
.setVpcResource(isVpcResource)
|
||||
.setDomainId(nsxObject.getDomainId())
|
||||
.setAccountId(nsxObject.getAccountId())
|
||||
.setZoneId(nsxObject.getZoneId())
|
||||
.setNetworkResourceId(nsxObject.getNetworkResourceId())
|
||||
.setNetworkResourceName(nsxObject.getNetworkResourceName())
|
||||
.setVpcResource(nsxObject.isVpcResource())
|
||||
.setMemberList(lbMembers)
|
||||
.setPublicIp(publicIp.getAddress().addr())
|
||||
.setPublicPort(String.valueOf(loadBalancingRule.getSourcePortStart()))
|
||||
|
|
|
|||
Loading…
Reference in New Issue