All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.polyglotted.common.es.discovery.Ec2Service Maven / Gradle / Ivy

package io.polyglotted.common.es.discovery;

import com.amazonaws.Protocol;
import org.elasticsearch.common.settings.SecureSetting;
import org.elasticsearch.common.settings.SecureString;
import org.elasticsearch.common.settings.Setting;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.unit.TimeValue;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.function.Function;

import static com.amazonaws.ClientConfiguration.DEFAULT_SOCKET_TIMEOUT;
import static org.elasticsearch.common.settings.Setting.Property.*;
import static org.elasticsearch.common.unit.TimeValue.timeValueMillis;

@SuppressWarnings({"deprecation"})
interface Ec2Service {
    Setting KEY_SETTING = new Setting<>("cloud.aws.access_key", "", SecureString::new, NodeScope, Filtered, Shared);
    Setting SECRET_SETTING = new Setting<>("cloud.aws.secret_key", "", SecureString::new, NodeScope, Filtered, Shared);
    Setting PROTOCOL_SETTING = new Setting<>("cloud.aws.protocol", "https", s -> Protocol.valueOf(s.toUpperCase(Locale.ROOT)), NodeScope, Shared);
    Setting PROXY_HOST_SETTING = Setting.simpleString("cloud.aws.proxy.host", NodeScope, Shared);
    Setting PROXY_PORT_SETTING = Setting.intSetting("cloud.aws.proxy.port", 80, 0, 1 << 16, NodeScope, Shared);
    Setting PROXY_USERNAME_SETTING = new Setting<>("cloud.aws.proxy.username", "", SecureString::new, NodeScope, Filtered, Shared);
    Setting PROXY_PASSWORD_SETTING = new Setting<>("cloud.aws.proxy.password", "", SecureString::new, NodeScope, Filtered, Shared);
    Setting SIGNER_SETTING = Setting.simpleString("cloud.aws.signer", NodeScope, Shared);
    Setting REGION_SETTING = new Setting<>("cloud.aws.region", "", s -> s.toLowerCase(Locale.ROOT), NodeScope, Shared);
    Setting READ_TIMEOUT = Setting.timeSetting("cloud.aws.read_timeout", timeValueMillis(DEFAULT_SOCKET_TIMEOUT), NodeScope, Shared);

    interface CLOUD_EC2 {
        Setting KEY_SETTING = new Setting<>("cloud.aws.ec2.access_key", Ec2Service.KEY_SETTING, SecureString::new, NodeScope, Filtered);
        Setting SECRET_SETTING = new Setting<>("cloud.aws.ec2.secret_key", Ec2Service.SECRET_SETTING, SecureString::new, NodeScope, Filtered);
        Setting PROTOCOL_SETTING = new Setting<>("cloud.aws.ec2.protocol", Ec2Service.PROTOCOL_SETTING, s -> Protocol.valueOf(s.toUpperCase(Locale.ROOT)), NodeScope);
        Setting PROXY_HOST_SETTING = new Setting<>("cloud.aws.ec2.proxy.host", Ec2Service.PROXY_HOST_SETTING, Function.identity(), NodeScope);
        Setting PROXY_PORT_SETTING = new Setting<>("cloud.aws.ec2.proxy.port", Ec2Service.PROXY_PORT_SETTING, s -> Setting.parseInt(s, 0, 1 << 16, "cloud.aws.ec2.proxy.port"), NodeScope);
        Setting PROXY_USERNAME_SETTING = new Setting<>("cloud.aws.ec2.proxy.username", Ec2Service.PROXY_USERNAME_SETTING, SecureString::new, NodeScope, Filtered);
        Setting PROXY_PASSWORD_SETTING = new Setting<>("cloud.aws.ec2.proxy.password", Ec2Service.PROXY_PASSWORD_SETTING, SecureString::new, NodeScope, Filtered);
        Setting SIGNER_SETTING = new Setting<>("cloud.aws.ec2.signer", Ec2Service.SIGNER_SETTING, Function.identity(), NodeScope);
        Setting REGION_SETTING = new Setting<>("cloud.aws.ec2.region", Ec2Service.REGION_SETTING, s -> s.toLowerCase(Locale.ROOT), NodeScope);
        Setting READ_TIMEOUT = Setting.timeSetting("cloud.aws.ec2.read_timeout", Ec2Service.READ_TIMEOUT, NodeScope);
    }

    interface DISCOVERY_EC2 {
        class HostType {
            static final String PRIVATE_IP = "private_ip";
            static final String PUBLIC_IP = "public_ip";
            static final String PRIVATE_DNS = "private_dns";
            static final String PUBLIC_DNS = "public_dns";
            static final String TAG_PREFIX = "tag:";
        }

        Setting ACCESS_KEY_SETTING = SecureSetting.secureString("discovery.ec2.access_key", CLOUD_EC2.KEY_SETTING);
        Setting SECRET_KEY_SETTING = SecureSetting.secureString("discovery.ec2.secret_key", CLOUD_EC2.SECRET_SETTING);
        Setting PROTOCOL_SETTING = new Setting<>("discovery.ec2.protocol", CLOUD_EC2.PROTOCOL_SETTING, s -> Protocol.valueOf(s.toUpperCase(Locale.ROOT)), NodeScope);
        Setting PROXY_HOST_SETTING = new Setting<>("discovery.ec2.proxy.host", CLOUD_EC2.PROXY_HOST_SETTING, Function.identity(), NodeScope);
        Setting PROXY_PORT_SETTING = Setting.intSetting("discovery.ec2.proxy.port", CLOUD_EC2.PROXY_PORT_SETTING, 0, NodeScope);
        Setting PROXY_USERNAME_SETTING = SecureSetting.secureString("discovery.ec2.proxy.username", CLOUD_EC2.PROXY_USERNAME_SETTING);
        Setting PROXY_PASSWORD_SETTING = SecureSetting.secureString("discovery.ec2.proxy.password", CLOUD_EC2.PROXY_PASSWORD_SETTING);
        Setting READ_TIMEOUT_SETTING = Setting.timeSetting("discovery.ec2.read_timeout", CLOUD_EC2.READ_TIMEOUT, NodeScope);
        Setting HOST_TYPE_SETTING = new Setting<>("discovery.ec2.host_type", HostType.PRIVATE_IP, Function.identity(), NodeScope);
        Setting ANY_GROUP_SETTING = Setting.boolSetting("discovery.ec2.any_group", true, NodeScope);
        Setting> GROUPS_SETTING = Setting.listSetting("discovery.ec2.groups", new ArrayList<>(), String::toString, NodeScope);
        Setting> AVAILABILITY_ZONES_SETTING = Setting.listSetting("discovery.ec2.availability_zones", Collections.emptyList(), String::toString, NodeScope);
        Setting TAG_SETTING = Setting.groupSetting("discovery.ec2.tag.", NodeScope);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy