Package io.fathom.auto.haproxy.template

Source Code of io.fathom.auto.haproxy.template.BackendTemplate

package io.fathom.auto.haproxy.template;

import io.fathom.auto.haproxy.model.Backend;
import io.fathom.auto.template.TemplateBase;
import io.fathom.cloud.openstack.client.loadbalance.model.LbaasMapping;

import java.io.IOException;
import java.io.Writer;
import java.net.URI;

import com.google.common.base.Strings;

public class BackendTemplate extends TemplateBase<Backend> {
    static String resource = loadTemplate(BackendTemplate.class, "header");

    @Override
    public void write(Writer writer, Backend backend) throws IOException {
        init(writer);

        indent = 0;
        println("backend backend__%s", backend.key);

        indent = 1;

        println("balance roundrobin");

        boolean includeForwardedProtocol = true;

        String forwardUrl = null;
        if (backend.mappings.size() != 0) {
            LbaasMapping target0 = backend.mappings.get(0);
            forwardUrl = target0.forwardUrl;
        }

        if (!Strings.isNullOrEmpty(forwardUrl)) {
            URI uri = URI.create(forwardUrl);
            println("reqrep ^Host:.* Host:\\ %s", uri.getHost());
            println("reqrep ^([^\\ :]*)\\ /(.*) \\1\\ %s/\\2", uri.getPath());

            if (uri.getScheme().equals("https")) {
                println("server s1 %s:443 ssl", uri.getHost());
            } else {
                println("server s1 %s:80", uri.getHost());
            }

            includeForwardedProtocol = false;
        } else {
            for (LbaasMapping mapping : backend.mappings) {
                String line = "server " + mapping.key + " " + mapping.ip;
                if (mapping.port != null) {
                    line += ":" + mapping.port;
                } else {
                    line += ":" + "+8000";
                }
                println(line);
            }
        }

        if (!includeForwardedProtocol) {
            println("reqdel X-Forwarded-Protocol:\\.*");
        }
    }

}
TOP

Related Classes of io.fathom.auto.haproxy.template.BackendTemplate

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.