protected Collection<JcloudsLocationCustomizer> getCustomizers(ConfigBag setup) { JcloudsLocationCustomizer customizer = setup.get(JCLOUDS_LOCATION_CUSTOMIZER); Collection<JcloudsLocationCustomizer> customizers = setup.get(JCLOUDS_LOCATION_CUSTOMIZERS); String customizerType = setup.get(JCLOUDS_LOCATION_CUSTOMIZER_TYPE); List<JcloudsLocationCustomizer> result = new ArrayList<JcloudsLocationCustomizer>(); if (customizer != null) result.add(customizer); if (customizers != null) result.addAll(customizers); if (Strings.isNonBlank(customizerType)) { try { Class<?> customizerClazz = getClass().getClassLoader().loadClass(customizerType); JcloudsLocationCustomizer customizerByType = (JcloudsLocationCustomizer) customizerClazz.getConstructor().newInstance(); result.add(customizerByType); } catch (Exception e) { throw new IllegalStateException("Failed to load customizer "+customizerType+" for location "+this); } } return result; }
@Override protected void onEntityAdded(Entity member) { if (Strings.isNonBlank(member.getAttribute(getConfig(HOSTNAME_SENSOR)))) added(member); // Ignore, unless hostname set } @Override
/** * Returns a valid filename based on the input. * * A valid filename starts with the first alphanumeric character, then include * all alphanumeric characters plus those in {@link #VALID_NON_ALPHANUM_FILE_CHARS}, * with any runs of invalid characters being replaced by {@literal _}. * * @throws NullPointerException if the input string is null. * @throws IllegalArgumentException if the input string is blank. */ public static String makeValidFilename(String s) { Preconditions.checkNotNull(s, "Cannot make valid filename from null string"); Preconditions.checkArgument(isNonBlank(s), "Cannot make valid filename from blank string"); return CharMatcher.anyOf(VALID_NON_ALPHANUM_FILE_CHARS).or(CharMatcher.JAVA_LETTER_OR_DIGIT) .negate() .trimAndCollapseFrom(s, '_'); }
public void added(Entity member) { synchronized (mutex) { Optional<Location> location = Iterables.tryFind(member.getLocations(), Predicates.instanceOf(SshMachineLocation.class)); String hostname = member.getAttribute(getConfig(HOSTNAME_SENSOR)); if (location.isPresent() && Strings.isNonBlank(hostname)) { SshMachineLocation machine = (SshMachineLocation) location.get(); String address = machine.getAddress().getHostAddress(); if (!entityLocations.containsKey(machine)) { entityLocations.put(machine, member); addressMappings.putIfAbsent(address, hostname); if (getReverseLookupNetwork().contains(new Cidr(address + "/32"))) { String octet = Iterables.get(Splitter.on('.').split(address), 3); reverseMappings.putIfAbsent(hostname, octet); } if (getAttribute(Startable.SERVICE_UP)) { update(); } configure(machine); LOG.info("{} added at location {} with name {}", new Object[] { member, machine, hostname }); } } } }
@Override public String getListenAddress() { if (requiresAlwaysPublicIp()) { return getAttribute(CassandraNode.ADDRESS); } else { String subnetAddress = getAttribute(CassandraNode.SUBNET_ADDRESS); return Strings.isNonBlank(subnetAddress) ? subnetAddress : getAttribute(CassandraNode.ADDRESS); } } @Override public String getBroadcastAddress() {
public String getPrivateIp() { if (requiresAlwaysPublicIp()) { return getAttribute(CassandraNode.ADDRESS); } else { String subnetAddress = getAttribute(CassandraNode.SUBNET_ADDRESS); return Strings.isNonBlank(subnetAddress) ? subnetAddress : getAttribute(CassandraNode.ADDRESS); } } public String getPublicIp() {
@Override protected void preStart() { String reverse = getConfig(REVERSE_LOOKUP_NETWORK); if (Strings.isBlank(reverse)) reverse = getAttribute(ADDRESS); setAttribute(REVERSE_LOOKUP_CIDR, new Cidr(reverse + "/24")); String reverseLookupDomain = Joiner.on('.').join(Iterables.skip(Lists.reverse(Lists.newArrayList(Splitter.on('.').split(reverse))), 1)) + ".in-addr.arpa"; setAttribute(REVERSE_LOOKUP_DOMAIN, reverseLookupDomain); Map<?, ?> flags = MutableMap.builder() .put("name", "Address tracker") .put("sensorsToTrack", ImmutableSet.of(getConfig(HOSTNAME_SENSOR))) .build(); policy = new AbstractMembershipTrackingPolicy(flags) { @Override protected void onEntityChange(Entity member) { added(member); } @Override protected void onEntityAdded(Entity member) { if (Strings.isNonBlank(member.getAttribute(getConfig(HOSTNAME_SENSOR)))) added(member); // Ignore, unless hostname set } @Override protected void onEntityRemoved(Entity member) { removed(member); } }; // For any entities that have already come up for (Entity member : entities.getMembers()) { if (Strings.isNonBlank(member.getAttribute(getConfig(HOSTNAME_SENSOR)))) added(member); // Ignore, unless hostname set } addPolicy(policy); policy.setGroup(entities); }
if (Strings.isNonBlank(customSnitchJarUrl)) { int lastSlashIndex = customSnitchJarUrl.lastIndexOf("/"); String customSnitchJarName = (lastSlashIndex > 0) ? customSnitchJarUrl.substring(lastSlashIndex+1) : "customBrooklynSnitch.jar";
/** creates the command for running knife. * in some cases knife may be added multiple times, * and in that case the parameter here tells which time it is being added, * on a single run. */ protected String buildKnifeCommand(int knifeCommandIndex) { MutableList<String> words = new MutableList<String>(); words.add(knifeExecutable()); words.addAll(initialKnifeParameters()); words.addAll(knifeParameters()); String x = knifeConfigFileOption(); if (Strings.isNonBlank(x)) words.add(knifeConfigFileOption()); return Strings.join(words, " "); }
@Override public List<String> getCommands() { MutableList<String> result = new MutableList<String>(); String setupCommands = knifeSetupCommands(); if (setupCommands != null && Strings.isNonBlank(setupCommands)) result.add(setupCommands); int numKnifes = 0; for (String c: super.getCommands()) { if (c==KNIFE_PLACEHOLDER) result.add(buildKnifeCommand(numKnifes++)); else result.add(c); } if (numKnifes==0) result.add(buildKnifeCommand(numKnifes++)); return result.toImmutable(); }
if (!(waitForSshable!=null && "false".equalsIgnoreCase(waitForSshable))) { String setupScript = setup.get(JcloudsLocationConfig.CUSTOM_MACHINE_SETUP_SCRIPT_URL); if(Strings.isNonBlank(setupScript)) { String setupVarsString = setup.get(JcloudsLocationConfig.CUSTOM_MACHINE_SETUP_SCRIPT_VARS); Map<String, String> substitutions = (setupVarsString != null)