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

com.netflix.nfsidecar.instance.VpcInstanceDataRetriever Maven / Gradle / Ivy

package com.netflix.nfsidecar.instance;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.netflix.nfsidecar.utils.SystemUtils;

/**
 * Calls AWS ec2 metadata to get info on the location of the running instance in
 * VPC. Public Hostname will return local-hostname Public IP will return
 * local-ipv4
 */
public class VpcInstanceDataRetriever implements InstanceDataRetriever {
    private static final Logger logger = LoggerFactory.getLogger(VpcInstanceDataRetriever.class);

    public String getRac() {
        return SystemUtils.getDataFromUrl("http://169.254.169.254/latest/meta-data/placement/availability-zone");
    }

    public String getPublicHostname() {
        return SystemUtils.getDataFromUrl("http://169.254.169.254/latest/meta-data/public-hostname");
    }

    public String getPublicIP() {
        return SystemUtils.getDataFromUrl("http://169.254.169.254/latest/meta-data/public-ipv4");
    }

    public String getInstanceId() {
        return SystemUtils.getDataFromUrl("http://169.254.169.254/latest/meta-data/instance-id");
    }

    public String getInstanceType() {
        return SystemUtils.getDataFromUrl("http://169.254.169.254/latest/meta-data/instance-type");
    }

    @Override
    /*
     * @return id of the network interface for running instance
     */
    public String getMac() {
        return SystemUtils.getDataFromUrl("http://169.254.169.254/latest/meta-data/network/interfaces/macs/").trim();
    }

    @Override
    /*
     * @return the id of the vpc account for running instance, null if does not
     * exist.
     */
    public String getVpcId() {
        String nacId = getMac();
        if (nacId == null || nacId.isEmpty())
            return null;

        String vpcId = null;
        try {
            vpcId = SystemUtils
                    .getDataFromUrl(
                            "http://169.254.169.254/latest/meta-data/network/interfaces/macs/" + nacId + "vpc-id")
                    .trim();
        } catch (Exception e) {
            logger.info(
                    "Vpc id does not exist for running instance, not fatal as running instance maybe not be in vpc.  Msg: "
                            + e.getLocalizedMessage());
        }

        return vpcId;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy