/** * Sets the hostname, splitting the given hostname if it contains a dot to include the unqualified and fully qualified names. * * @see {@link #setHostname(String, String)} */ @Beta public static List<String> setHostname(String newHostname) { // See http://www.dns-sd.org/trailingdotsindomainnames.html. // If we are given "abcd." then let's pass that as-is to setHostname("abcd.", null) if (newHostname.indexOf(".") > 0) { String hostPart = newHostname.substring(0, newHostname.indexOf(".")); String domainPart = newHostname.substring(hostPart.length()+1); return setHostname(hostPart, domainPart); } else { return setHostname(newHostname, null); } }
@Override public void install() { String fqdn = String.format("%s-%s.%s", entity.getConfig(AmbariCluster.SERVER_HOST_GROUP).toLowerCase(), entity.getId().toLowerCase(), entity.getConfig(AmbariCluster.DOMAIN_NAME)); getEntity().setFqdn(fqdn); ImmutableList<String> commands = ImmutableList.<String>builder() .add(ambariInstallHelper.installAmbariRequirements(getMachine())) .addAll(BashCommands.setHostname(fqdn)) .add(installPackage("ambari-server")) .build(); newScript(INSTALLING).body .append(commands) .failOnNonZeroResultCode() .execute(); }
LOG.debug("{} has no hostname mapping, not setting hostname", e); } else { commands.addAll(BashCommands.setHostname(mapping.get(key)));
public void checkNoHostnameBug() { try { ProcessTaskWrapper<Integer> hostnameTask = DynamicTasks.queue(SshEffectorTasks.ssh("echo FOREMARKER; hostname; echo AFTMARKER")).block(); String stdout = Strings.getFragmentBetween(hostnameTask.getStdout(), "FOREMARKER", "AFTMARKER"); if (hostnameTask.getExitCode() == 0 && Strings.isNonBlank(stdout)) { String hostname = stdout.trim(); if (hostname.equals("(none)")) { String newHostname = "br-"+getEntity().getId().toLowerCase(); log.info("Detected no-hostname bug with hostname "+hostname+" for "+getEntity()+"; renaming "+getMachine()+" to hostname "+newHostname); DynamicTasks.queue(SshEffectorTasks.ssh(BashCommands.setHostname(newHostname, null))).block(); } } else { log.debug("Hostname could not be determined for location "+EffectorTasks.findSshMachine()+"; not doing no-hostname bug check"); } } catch (Exception e) { Exceptions.propagateIfFatal(e); log.warn("Error checking/fixing no-hostname bug (continuing): "+e, e); } }
@Override public void install() { String parentFQDN = entity.getParent() instanceof AmbariServer ? ((AmbariServer) entity.getParent()).getFqdn() : ""; Entity parentHostGroup = Iterables.getFirst( Iterables.filter(Entities.ancestors(entity), AmbariHostGroup.class), entity); String fqdn = parentFQDN.isEmpty() ? String.format("%s-%s.%s", parentHostGroup.getDisplayName().toLowerCase(), entity.getId().toLowerCase(), entity.getConfig(AmbariCluster.DOMAIN_NAME)) : parentFQDN; getEntity().setFqdn(fqdn); ImmutableList<String> commands = ImmutableList.<String>builder() .add(defaultAmbariInstallHelper.installAmbariRequirements(getMachine())) .addAll(BashCommands.setHostname(fqdn)) .add(installPackage("ambari-agent")) .add(BashCommands.appendToEtcHosts( getParentAmbariCluster().getMasterAmbariServer().sensors().get(Attributes.SUBNET_ADDRESS), getEntity().getAmbariServerFQDN())) .build(); newScript(INSTALLING).body .append(commands) .failOnNonZeroResultCode() .execute(); }
public void checkJavaHostnameBug() { checkNoHostnameBug(); try { ProcessTaskWrapper<Integer> hostnameTask = DynamicTasks.queue(SshEffectorTasks.ssh("echo FOREMARKER; hostname -f; echo AFTMARKER")).block(); String stdout = Strings.getFragmentBetween(hostnameTask.getStdout(), "FOREMARKER", "AFTMARKER"); if (hostnameTask.getExitCode() == 0 && Strings.isNonBlank(stdout)) { String hostname = stdout.trim(); Integer len = hostname.length(); if (len > 63) { // likely to cause a java crash due to java bug 7089443 -- set a new short hostname // http://mail.openjdk.java.net/pipermail/net-dev/2012-July/004603.html String newHostname = "br-"+getEntity().getId().toLowerCase(); log.info("Detected likelihood of Java hostname bug with hostname length "+len+" for "+getEntity()+"; renaming "+getMachine()+" to hostname "+newHostname); DynamicTasks.queue(SshEffectorTasks.ssh(BashCommands.setHostname(newHostname, null))).block(); } } else { log.debug("Hostname length could not be determined for location "+EffectorTasks.findSshMachine()+"; not doing Java hostname bug check"); } } catch (Exception e) { Exceptions.propagateIfFatal(e); log.warn("Error checking/fixing Java hostname bug (continuing): "+e, e); } }
List<String> cmd = (includeDomain) ? BashCommands.setHostname(newHostname, newDomain) : BashCommands.setHostname(newHostname); execRequiringZeroAndReturningStdout(loc, cmd).get();