Package org.platformlayer.ops.dns

Source Code of org.platformlayer.ops.dns.DnsResolverModuleBuilder

package org.platformlayer.ops.dns;

import java.net.InetAddress;
import java.util.List;
import java.util.Map;

import javax.inject.Inject;

import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.OpsTarget;
import org.platformlayer.ops.helpers.InstanceHelpers;
import org.platformlayer.ops.helpers.ProviderHelper;
import org.platformlayer.ops.helpers.ProviderHelper.ProviderOf;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.networks.NetworkPoint;
import org.platformlayer.ops.packages.AsBlock;
import org.platformlayer.ops.templates.TemplateDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;

public class DnsResolverModuleBuilder implements TemplateDataSource {
  static final Logger log = LoggerFactory.getLogger(DnsResolverModuleBuilder.class);

  @Inject
  PlatformLayerHelpers platformLayer;

  @Inject
  InstanceHelpers instances;

  @Inject
  ProviderHelper providers;

  public boolean usePrivateResolvers = true;

  @Override
  public void buildTemplateModel(Map<String, Object> model) throws OpsException {
    List<String> nameservers = Lists.newArrayList();

    for (ProviderOf<DnsResolverProvider> entry : providers.listItemsProviding(DnsResolverProvider.class)) {
      DnsResolverProvider dnsResolverProvider = entry.get();
      List<InetAddress> addresses = dnsResolverProvider.findAddresses(NetworkPoint.forTargetInContext());

      for (InetAddress address : addresses) {
        nameservers.add(address.getHostAddress());
      }
    }

    if (nameservers.isEmpty()) {
      log.warn("No (internal) resolvers found; will set up default public nameservers; reconfigure needed if this changes");

      if (usePrivateResolvers) {
        OpsTarget target = OpsContext.get().getInstance(OpsTarget.class);

        AsBlock as = AsBlock.find(target);

        if (as != null) {
          // We had problems with the SL resolvers...
          /*
           * if (Objects.equal(AsBlock.SOFTLAYER, as)) { log.warn("Adding private Softlayer resolvers");
           * nameservers.add("10.0.80.11"); nameservers.add("10.0.80.12"); }
           *
           * if (Objects.equal(AsBlock.HETZNER, as)) { log.warn("Adding private Hetzner resolvers");
           * nameservers.add("213.133.99.99"); nameservers.add("213.133.100.100");
           * nameservers.add("213.133.98.98"); }
           */
        }
      }

      nameservers.add("8.8.8.8");
      nameservers.add("8.8.4.4");

      nameservers.add("2001:4860:4860::8888");
      nameservers.add("2001:4860:4860::8844");

      // So a reconfigure is needed!
    }
    model.put("nameservers", nameservers);
  }
}
TOP

Related Classes of org.platformlayer.ops.dns.DnsResolverModuleBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.