Skip to content

Commit af54bef

Browse files
committed
load balancer and vm: change name attr forcedomain to skipdnserror
1 parent 5dee65c commit af54bef

10 files changed

Lines changed: 49 additions & 48 deletions

File tree

api/src/com/cloud/network/lb/LoadBalancingRule.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class LoadBalancingRule {
4343
private String healthCheckDestination;
4444
private String healthCheckType;
4545
private String expectedHealthCheck;
46-
private boolean forceDomainRegister = true;
46+
private boolean skipDnsError = false;
4747

4848
private List<Long> additionalNetworks;
4949
private List<String> additionalPortMap;
@@ -200,12 +200,12 @@ public void setExpectedHealthCheck(String expectedHealthCheck) {
200200
this.expectedHealthCheck = expectedHealthCheck;
201201
}
202202

203-
public boolean isForceDomainRegister() {
204-
return forceDomainRegister;
203+
public boolean isSkipDnsError() {
204+
return skipDnsError;
205205
}
206206

207-
public void setForceDomainRegister(boolean forceDomainRegister) {
208-
this.forceDomainRegister = forceDomainRegister;
207+
public void setSkipDnsError(boolean skipDnsError) {
208+
this.skipDnsError = skipDnsError;
209209
}
210210

211211
public interface Destination {

api/src/org/apache/cloudstack/api/command/user/loadbalancer/CreateLoadBalancerRuleCmd.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ public class CreateLoadBalancerRuleCmd extends BaseAsyncCreateCmd /*implements L
138138
@Parameter(name = ApiConstants.EXPECTED_HEALTHCHECK, type = CommandType.STRING, description = "Expected healthcheck string to check if is in service.")
139139
private String expectedHealthCheck;
140140

141-
@Parameter(name = "forceregisterdomain", type = CommandType.BOOLEAN, description = "when true if dns integration failed, the loadbalancer will not be created")
142-
private boolean forceregisterdomain = true ;
141+
@Parameter(name = "skipdnserror", type = CommandType.BOOLEAN, description = "when false if dns integration failed, the loadbalancer will not be created and throw an exception, else lb will be created and dns it could be register later")
142+
private boolean skipDnsError = false ;
143143

144144
/////////////////////////////////////////////////////
145145
/////////////////// Accessors ///////////////////////
@@ -354,7 +354,7 @@ public void create() {
354354
LoadBalancer result =
355355
_lbService.createPublicLoadBalancerRule(getXid(), getName(), getDescription(), getSourcePortStart(), getSourcePortEnd(), getDefaultPortStart(),
356356
getDefaultPortEnd(), getSourceIpAddressId(), getProtocol(), getAlgorithm(), getNetworkId(), getEntityOwnerId(), getOpenFirewall(), getLbProtocol(), isDisplay(),
357-
getAdditionalPortMap(), getCache(), getServiceDownAction(), getHealthCheckDestination(), getExpectedHealthCheck(), healthCheckType, forceregisterdomain);
357+
getAdditionalPortMap(), getCache(), getServiceDownAction(), getHealthCheckDestination(), getExpectedHealthCheck(), healthCheckType, skipDnsError);
358358
this.setEntityId(result.getId());
359359
this.setEntityUuid(result.getUuid());
360360
} catch (NetworkRuleConflictException e) {

framework/config/src/org/apache/cloudstack/globoconfig/GloboResourceKey.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
* Created by sinval.neto on 7/15/16.
55
*/
66
public enum GloboResourceKey {
7-
isDNSRegistered, forceDomainRegister
7+
isDNSRegistered, skipDnsError
88
}

plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/commands/ValidateLbRecordCommand.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ public class ValidateLbRecordCommand extends Command {
2828

2929
private boolean override;
3030

31-
private boolean forceDomainRegister;
31+
private boolean skipDnsError;
3232

33-
public ValidateLbRecordCommand(String lbRecordName, String lbRecordContent, String lbDomain, boolean override, boolean forceDomainRegister) {
33+
public ValidateLbRecordCommand(String lbRecordName, String lbRecordContent, String lbDomain, boolean override, boolean skipDnsError) {
3434
this.lbRecordName = lbRecordName;
3535
this.lbRecordContent = lbRecordContent;
3636
this.lbDomain = lbDomain;
3737
this.override = override;
38-
this.forceDomainRegister = forceDomainRegister;
38+
this.skipDnsError = skipDnsError;
3939
}
4040

4141
@Override
@@ -59,8 +59,8 @@ public boolean isOverride() {
5959
return override;
6060
}
6161

62-
public boolean isForceDomainRegister() {
63-
return forceDomainRegister;
62+
public boolean isSkipDnsError() {
63+
return skipDnsError;
6464
}
6565

6666
}

plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/element/GloboDnsElement.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ public class GloboDnsElement extends AdapterBase implements ResourceStateAdapter
102102
private static final ConfigKey<String> GloboDNSLbBlacklistedDomains = new ConfigKey<>("Advanced", String.class, "globodns.lb.domain.blacklist", "",
103103
"List of comma separated domains that should be blacklisted for load balancers", true, ConfigKey.Scope.Global);
104104

105-
private static final ConfigKey<Boolean> GloboDNSForceRegisterVM = new ConfigKey<Boolean>("Advanced", Boolean.class, "globodns.vm.forceerrordns", "true",
106-
"When true, if vm receive error during create dns record, it will throw exception", true, ConfigKey.Scope.Global);
105+
private static final ConfigKey<Boolean> GloboDNSVmSkipDnsError = new ConfigKey<Boolean>("Advanced", Boolean.class, "globodns.vm.skipdnserror", "false",
106+
"when false if dns integration failed, the vm will not be created and throw an exception, else vm will be created and dns it could be register later", true, ConfigKey.Scope.Global);
107107
// DAOs
108108
@Inject
109109
DataCenterDao _dcDao;
@@ -168,14 +168,14 @@ public boolean prepare(final Network network, final NicProfile nic, final Virtua
168168
String ipAddress = isIpv6 ? nic.getIp6Address() : nic.getIp4Address();
169169

170170

171-
GloboResourceConfigurationVO forceConfig = _globoResourceConfigDao.getFirst(GloboResourceType.VM_NIC, nic.getUuid(), GloboResourceKey.forceDomainRegister);
172-
boolean forceDoaminRegister = forceConfig != null ? forceConfig.getBooleanValue() : GloboDNSForceRegisterVM.value(); // false while the config is not persisted by vm flow
171+
GloboResourceConfigurationVO forceConfig = _globoResourceConfigDao.getFirst(GloboResourceType.VM_NIC, nic.getUuid(), GloboResourceKey.skipDnsError);
172+
boolean forceDoaminRegister = forceConfig != null ? forceConfig.getBooleanValue() : GloboDNSVmSkipDnsError.value(); // false while the config is not persisted by vm flow
173173

174174
return registerVmDomain(zoneId, nic.getUuid(), vmHostname, ipAddress, network.getNetworkDomain(), isIpv6, forceDoaminRegister);
175175
}
176176

177177
@Override
178-
public boolean registerVmDomain(Long zoneId, String nicUuid, String hostName, String ipAddress, String networkDomain, boolean isIpv6, boolean forceDomainRegister) {
178+
public boolean registerVmDomain(Long zoneId, String nicUuid, String hostName, String ipAddress, String networkDomain, boolean isIpv6, boolean skipDnsError) {
179179
GloboResourceConfigurationVO dnsRegisteredConfig = _globoResourceConfigDao.getFirst(GloboResourceType.VM_NIC, nicUuid, GloboResourceKey.isDNSRegistered);
180180
boolean isDnsRegistered = dnsRegisteredConfig != null ? dnsRegisteredConfig.getBooleanValue() : false;
181181

@@ -187,7 +187,7 @@ public boolean registerVmDomain(Long zoneId, String nicUuid, String hostName, St
187187
GloboDNSTemplateId.value(), GloboDNSOverride.value(), isIpv6);
188188

189189

190-
return registerRecord(cmd, zoneId, nicUuid, GloboResourceType.VM_NIC, forceDomainRegister);
190+
return registerRecord(cmd, zoneId, nicUuid, GloboResourceType.VM_NIC, skipDnsError);
191191

192192
}
193193

@@ -309,7 +309,7 @@ public String getConfigComponentName() {
309309

310310
@Override
311311
public ConfigKey<?>[] getConfigKeys() {
312-
return new ConfigKey<?>[] {GloboDNSTemplateId, GloboDNSOverride, GloboDNSLbOverride, GloboDNSLbBlacklistedDomains, GloboDNSForceRegisterVM};
312+
return new ConfigKey<?>[] {GloboDNSTemplateId, GloboDNSOverride, GloboDNSLbOverride, GloboDNSLbBlacklistedDomains, GloboDNSVmSkipDnsError};
313313
}
314314

315315
////////// Resource/Host methods ////////////
@@ -433,7 +433,7 @@ public Host doInTransaction(TransactionStatus status) throws CloudRuntimeExcepti
433433

434434
// Load Balancing methods
435435
@Override
436-
public boolean validateDnsRecordForLoadBalancer(String lbDomain, String lbRecord, String lbRecordContent, Long zoneId, boolean forceDomainRegister) {
436+
public boolean validateDnsRecordForLoadBalancer(String lbDomain, String lbRecord, String lbRecordContent, Long zoneId, boolean skipDnsError) {
437437
s_logger.debug("Validating LB DNS record " + lbRecord + " in domain " + lbDomain);
438438
if (lbRecord.contains("_")) {
439439
throw new InvalidParameterValueException("Underscore(_) is not allowed for load balancer name");
@@ -446,7 +446,7 @@ public boolean validateDnsRecordForLoadBalancer(String lbDomain, String lbRecord
446446
throw new CloudRuntimeException("Could not find zone with ID " + zoneId);
447447
}
448448

449-
ValidateLbRecordCommand cmd = new ValidateLbRecordCommand(lbRecord, lbRecordContent, lbDomain, GloboDNSLbOverride.value(), forceDomainRegister);
449+
ValidateLbRecordCommand cmd = new ValidateLbRecordCommand(lbRecord, lbRecordContent, lbDomain, GloboDNSLbOverride.value(), skipDnsError);
450450
Answer answer = callCommand(cmd, zoneId);
451451
if (answer == null || !answer.getResult()) {
452452
// Could not sign in on GloboDNS
@@ -485,7 +485,7 @@ public boolean createDnsRecordForLoadBalancer(String lbDomain, String lbRecord,
485485
}
486486

487487
@Override
488-
public boolean createDnsRecordForLoadBalancer(GloboDnsTO globoDns, boolean forceDomainRegister) {
488+
public boolean createDnsRecordForLoadBalancer(GloboDnsTO globoDns, boolean skipDnsError) {
489489
s_logger.debug("Creating LB DNS record " + globoDns.getRecord() + " in domain " + globoDns.getDomain());
490490
DataCenter zone = _dcDao.findById(globoDns.getZoneId());
491491
if (zone == null) {
@@ -496,7 +496,7 @@ public boolean createDnsRecordForLoadBalancer(GloboDnsTO globoDns, boolean force
496496
GloboDNSTemplateId.value(),
497497
GloboDNSLbOverride.value());
498498

499-
return registerRecord(cmd, globoDns.getZoneId(), globoDns.getResourceId(), GloboResourceType.LOAD_BALANCER, forceDomainRegister);
499+
return registerRecord(cmd, globoDns.getZoneId(), globoDns.getResourceId(), GloboResourceType.LOAD_BALANCER, skipDnsError);
500500
}
501501

502502

@@ -520,7 +520,7 @@ public boolean removeDnsRecordForLoadBalancer(String lbUuid, String lbDomain, St
520520
return true;
521521
}
522522

523-
private boolean registerRecord(Command cmd, Long zoneId, String resourceId, GloboResourceType resourceType, boolean forceDomainRegister){
523+
private boolean registerRecord(Command cmd, Long zoneId, String resourceId, GloboResourceType resourceType, boolean skipDnsError){
524524
GloboResourceConfigurationVO dnsRegisteredConfig = _globoResourceConfigDao.getFirst(resourceType, resourceId, GloboResourceKey.isDNSRegistered);
525525
boolean isDnsRegistered = dnsRegisteredConfig != null ? dnsRegisteredConfig.getBooleanValue() : false;
526526

@@ -537,7 +537,7 @@ private boolean registerRecord(Command cmd, Long zoneId, String resourceId, Glob
537537
}
538538

539539
if (!answer.getResult()){
540-
if (Answer.AnswerTypeError.DNS_IO_ERROR.equals(answer.getTypeError()) && !forceDomainRegister) {
540+
if (Answer.AnswerTypeError.DNS_IO_ERROR.equals(answer.getTypeError()) && skipDnsError) {
541541
if (dnsRegisteredConfig == null) {
542542
dnsRegisteredConfig = new GloboResourceConfigurationVO(resourceType, resourceId, GloboResourceKey.isDNSRegistered, Boolean.FALSE.toString());
543543
_globoResourceConfigDao.persist(dnsRegisteredConfig);

plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/element/GloboDnsElementService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ public interface GloboDnsElementService extends PluggableService {
2323

2424
public Host addGloboDnsHost(Long pNtwkId, String username, String password, String url);
2525

26-
public boolean validateDnsRecordForLoadBalancer(String lbDomain, String lbRecord, String lbRecordContent, Long zoneId, boolean forceDomainRegister);
26+
public boolean validateDnsRecordForLoadBalancer(String lbDomain, String lbRecord, String lbRecordContent, Long zoneId, boolean skipDnsError);
2727

2828
public boolean createDnsRecordForLoadBalancer(String lbDomain, String lbRecord, String lbIpAddress, Long zoneId);
2929

3030
public boolean removeDnsRecordForLoadBalancer(String lbUuid, String lbDomain, String lbRecord, String lbIpAddress, Long zoneId);
3131

32-
public boolean registerVmDomain(Long zoneId, String nicUuid, String hostName, String ipAddress, String networkDomain, boolean isIpv6, boolean forceDomainRegister);
32+
public boolean registerVmDomain(Long zoneId, String nicUuid, String hostName, String ipAddress, String networkDomain, boolean isIpv6, boolean skipDnsError);
3333

34-
public boolean createDnsRecordForLoadBalancer(GloboDnsTO globoDns, boolean forceDomainRegister);
34+
public boolean createDnsRecordForLoadBalancer(GloboDnsTO globoDns, boolean skipDnsError);
3535
}

plugins/network-elements/globodns/src/com/globo/globodns/cloudstack/resource/GloboDnsResource.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -327,12 +327,12 @@ public Answer execute(ValidateLbRecordCommand cmd) {
327327
String msg = "Record " + cmd.getLbRecordName() + " is invalid or override option is false";
328328
return new Answer(cmd, false, msg);
329329
} catch (GloboDnsIOException ex ){
330-
if (cmd.isForceDomainRegister()) {
331-
s_logger.error("IOException: force loadbalancer validation because forcedomainregister is "+ cmd.isForceDomainRegister() + " failed: " + ex.getMessage(), ex);
332-
return new Answer(cmd, false, ex.getMessage(), Answer.AnswerTypeError.DNS_IO_ERROR);
333-
} else {
334-
s_logger.warn("IOException: ignoring loadbalancer validation because forcedoaminresgister is " + cmd.isForceDomainRegister() + ", maybe globoDNSAPI is off or with some problem. Error: " + ex.getMessage(), ex);
330+
if (cmd.isSkipDnsError()) {
331+
s_logger.warn("IOException: ignoring loadbalancer validation because skipdnserror is " + cmd.isSkipDnsError() + ", maybe globoDNSAPI is off or with some problem. Error: " + ex.getMessage(), ex);
335332
return new Answer(cmd, true, ex.getMessage());
333+
} else {
334+
s_logger.error("IOException: force loadbalancer validation because skipdnserror is "+ cmd.isSkipDnsError() + " failed: " + ex.getMessage(), ex);
335+
return new Answer(cmd, false, ex.getMessage(), Answer.AnswerTypeError.DNS_IO_ERROR);
336336
}
337337

338338
} catch (GloboDnsException e) {

plugins/network-elements/globonetwork/src/com/globo/globonetwork/cloudstack/manager/GloboNetworkManager.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2174,7 +2174,7 @@ public void registerLoadbalancerDomainName(String resourceUuId) {
21742174
Ip ip = ipAddress.getAddress();
21752175
try {
21762176
GloboDnsTO globoDns = new GloboDnsTO(network.getDataCenterId(), lb.getUuid(), lbRecord, lbDomain, ip.addr());
2177-
_globoDnsService.createDnsRecordForLoadBalancer(globoDns, true);
2177+
_globoDnsService.createDnsRecordForLoadBalancer(globoDns, false);
21782178

21792179
} catch (Exception ex) {
21802180
s_logger.error("Error while registering load balancer's domain name", ex);
@@ -2227,8 +2227,8 @@ public GloboResourceConfigurationVO getGloboResourceConfiguration(String uuid, G
22272227

22282228
protected void manageLoadBalancerDomainNameRegistry(Network network, LoadBalancingRule rule, boolean revokeAnyVM) throws ResourceUnavailableException {
22292229
try {
2230-
GloboResourceConfigurationVO forceDomainRegisterFromCmd = _globoResourceConfigurationDao.getFirst(GloboResourceType.LOAD_BALANCER, rule.getUuid(), GloboResourceKey.forceDomainRegister);
2231-
boolean forceDomainRegister = forceDomainRegisterFromCmd != null ? forceDomainRegisterFromCmd.getBooleanValue() : true;
2230+
GloboResourceConfigurationVO skipDnsErrorCmd = _globoResourceConfigurationDao.getFirst(GloboResourceType.LOAD_BALANCER, rule.getUuid(), GloboResourceKey.skipDnsError);
2231+
boolean skipDnsError = skipDnsErrorCmd != null ? skipDnsErrorCmd.getBooleanValue() : false;
22322232

22332233
// First of all, find the correct LB domain and LB record
22342234
String lbDomain = getLbDomain(rule.getName());
@@ -2240,10 +2240,10 @@ protected void manageLoadBalancerDomainNameRegistry(Network network, LoadBalanci
22402240
String lbRecord = getLbRecord(rule.getName(), lbDomain);
22412241

22422242
if ((rule.getState() == FirewallRule.State.Add || rule.getState() == FirewallRule.State.Active) && !revokeAnyVM) {
2243-
if (_globoDnsService. validateDnsRecordForLoadBalancer(lbDomain, lbRecord, rule.getSourceIp().addr(), network.getDataCenterId(), forceDomainRegister)) {
2244-
LoadBalancerVO lb = this._loadBalancerDao.findByUuid(rule.getUuid());
2243+
if (_globoDnsService. validateDnsRecordForLoadBalancer(lbDomain, lbRecord, rule.getSourceIp().addr(), network.getDataCenterId(), skipDnsError)) {
2244+
// LoadBalancerVO lb = this._loadBalancerDao.findByUuid(rule.getUuid());
22452245
GloboDnsTO globoDns = new GloboDnsTO(network.getDataCenterId(), rule.getUuid(), lbRecord, lbDomain, rule.getSourceIp().addr());
2246-
_globoDnsService.createDnsRecordForLoadBalancer(globoDns, forceDomainRegister);
2246+
_globoDnsService.createDnsRecordForLoadBalancer(globoDns, skipDnsError);
22472247
}
22482248
} else if (rule.getState() == FirewallRule.State.Revoke) {
22492249
_globoDnsService.removeDnsRecordForLoadBalancer(rule.getUuid(), lbDomain, lbRecord, rule.getSourceIp().addr(), network.getDataCenterId());
@@ -2364,7 +2364,7 @@ public boolean validateLBRule(Network network, LoadBalancingRule rule) {
23642364
// Finally, validate LB record in GloboDNS
23652365
String lbRecord = getLbRecord(rule.getName(), lbDomain);
23662366

2367-
return _globoDnsService.validateDnsRecordForLoadBalancer(lbDomain, lbRecord, rule.getSourceIp().addr(), network.getDataCenterId(), rule.isForceDomainRegister());
2367+
return _globoDnsService.validateDnsRecordForLoadBalancer(lbDomain, lbRecord, rule.getSourceIp().addr(), network.getDataCenterId(), rule.isSkipDnsError());
23682368
} else {
23692369
s_logger.warn("Allowing creation of Load Balancer without registering DNS because network offering does not have GloboDNS as provider");
23702370
}

0 commit comments

Comments
 (0)