diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-10-04 14:01:48 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-10-04 14:01:48 +0200 |
commit | 5569e02176401016b42a828798c6d65863ad5247 (patch) | |
tree | 6600bcc9d621a72c452293998875f79949a135b8 /node-maintainer/src | |
parent | 34ba19e18306f2432c61d4bcaa3a296dd38c7d7b (diff) |
Support skipping hostname resolution verification
Diffstat (limited to 'node-maintainer/src')
3 files changed, 31 insertions, 8 deletions
diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifier.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifier.java index 69897728739..fe1f8d72d50 100644 --- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifier.java +++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifier.java @@ -31,10 +31,12 @@ public class IPAddressVerifier { private static final Logger logger = Logger.getLogger(IPAddressVerifier.class.getName()); private final String expectedHostname; + private final boolean skipLookup; private final boolean skipReverseLookup; - public IPAddressVerifier(String expectedHostname, boolean skipReverseLookup) { + public IPAddressVerifier(String expectedHostname, boolean skipLookup, boolean skipReverseLookup) { this.expectedHostname = expectedHostname; + this.skipLookup = skipLookup; this.skipReverseLookup = skipReverseLookup; } @@ -60,6 +62,10 @@ public class IPAddressVerifier { } private boolean hostnameResolvesToIpAddress(String ipAddress) { + if (skipLookup) { + return true; + } + InetAddress addressFromIpAddress; try { addressFromIpAddress = InetAddress.getByName(ipAddress); @@ -78,7 +84,7 @@ public class IPAddressVerifier { if (addressesFromHostname.stream().noneMatch(addressFromIpAddress::equals)) { logger.log(Level.WARNING, "Hostname " + expectedHostname + " resolved to " + addressesFromHostname + - " which does not contain the IP address " + ipAddress); + " which does not contain the IP address " + addressFromIpAddress); return false; } diff --git a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java index 246321f0b9e..a3cc4c47608 100644 --- a/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java +++ b/node-maintainer/src/main/java/com/yahoo/vespa/hosted/node/verification/spec/SpecVerifier.java @@ -45,7 +45,10 @@ public class SpecVerifier extends Main.VerifierCommand { @Option(name = {"-i", "--ips"}, description = "Comma separated list of IP addresses assigned to this node") private String ipAddresses; - @Option(name = {"-S", "--skip-reverse-lookup"}, required = false, description = "Skip verification of reverse lookup of IP addresses") + @Option(name = {"--skip-lookup"}, required = false, description = "Skip verification of hostname -> IP addresses") + private boolean skipLookup = false; + + @Option(name = {"--skip-reverse-lookup"}, required = false, description = "Skip verification of IP addresses -> hostname") private boolean skipReverseLookup = false; @Override @@ -64,12 +67,16 @@ public class SpecVerifier extends Main.VerifierCommand { private SpecVerificationReport verifySpec(NodeSpec nodeSpec, CommandExecutor commandExecutor) { VerifierSettings verifierSettings = new VerifierSettings(false); HardwareInfo actualHardware = HardwareInfoRetriever.retrieve(commandExecutor, verifierSettings); - return makeVerificationReport(actualHardware, nodeSpec, skipReverseLookup); + return makeVerificationReport(actualHardware, nodeSpec, skipLookup, skipReverseLookup); } - private static SpecVerificationReport makeVerificationReport(HardwareInfo actualHardware, NodeSpec nodeSpec, boolean skipReverseLookup) { + private static SpecVerificationReport makeVerificationReport( + HardwareInfo actualHardware, + NodeSpec nodeSpec, + boolean skipLookup, + boolean skipReverseLookup) { SpecVerificationReport specVerificationReport = HardwareNodeComparator.compare(NodeJsonConverter.convertJsonModelToHardwareInfo(nodeSpec), actualHardware); - IPAddressVerifier ipAddressVerifier = new IPAddressVerifier(Defaults.getDefaults().vespaHostname(), skipReverseLookup); + IPAddressVerifier ipAddressVerifier = new IPAddressVerifier(Defaults.getDefaults().vespaHostname(), skipLookup, skipReverseLookup); ipAddressVerifier.reportFaultyIpAddresses(nodeSpec, specVerificationReport); return specVerificationReport; } diff --git a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java index b9ba9417981..c30afbf4fe5 100644 --- a/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java +++ b/node-maintainer/src/test/java/com/yahoo/vespa/hosted/node/verification/commons/noderepo/IPAddressVerifierTest.java @@ -25,7 +25,7 @@ public class IPAddressVerifierTest { private final NodeSpec nodeSpec = new NodeSpec(1920, 256, 48, true, 10_000, new String[]{ipv4Address, ipv6Address}); private final String hostname = "test123.region.domain.tld"; - private IPAddressVerifier ipAddressVerifier = spy(new IPAddressVerifier(hostname, false)); + private IPAddressVerifier ipAddressVerifier = spy(new IPAddressVerifier(hostname, false, false)); private String ipv4LookupFormat; private String ipv6LookupFormat; @@ -91,8 +91,18 @@ public class IPAddressVerifierTest { } @Test + public void getFaultyIpAddresses_should_return_empty_array_when_lookup_is_skipped() throws Exception { + ipAddressVerifier = spy(new IPAddressVerifier(hostname, true, false)); + doReturn(hostname).when(ipAddressVerifier).reverseLookUp(ipv4LookupFormat); + doReturn(hostname).when(ipAddressVerifier).reverseLookUp(ipv6LookupFormat); + String[] faultyIpAddresses = ipAddressVerifier.getFaultyIpAddresses(nodeSpec); + String[] expectedFaultyIpAddresses = new String[]{}; + assertArrayEquals(expectedFaultyIpAddresses, faultyIpAddresses); + } + + @Test public void getFaultyIpAddresses_should_return_empty_array_when_reverse_lookup_is_skipped() throws Exception { - ipAddressVerifier = spy(new IPAddressVerifier(hostname, true)); + ipAddressVerifier = spy(new IPAddressVerifier(hostname, false, true)); doReturn(Arrays.asList(InetAddress.getByName(ipv4Address), InetAddress.getByName(ipv6Address))).when(ipAddressVerifier).mockableGetAllByName(hostname); String[] faultyIpAddresses = ipAddressVerifier.getFaultyIpAddresses(nodeSpec); String[] expectedFaultyIpAddresses = new String[]{}; |