package io.cattle.platform.configitem.context.data.metadata.common; import io.cattle.platform.core.constants.InstanceConstants; import io.cattle.platform.core.model.Account; import io.cattle.platform.core.model.Instance; import io.cattle.platform.object.util.DataAccessor; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.collections.IteratorUtils; import org.apache.commons.lang3.StringUtils; import com.google.common.base.Splitter; public class ContainerMetaData { String name; String uuid; String primary_ip; List<String> ips = new ArrayList<>(); List<String> ports = new ArrayList<>(); String service_name; String stack_name; String stack_uuid; Map<String, String> labels = new HashMap<>(); Long create_index; String host_uuid; String hostname; String health_state; Long start_count; String service_index; String state; String external_id; String primary_mac_address; Long memory_reservation; Long milli_cpu_reservation; String network_uuid; String network_from_container_uuid; Boolean system; List<String> dns = new ArrayList<>(); List<String> dns_search = new ArrayList<>(); List<String> health_check_hosts = new ArrayList<>(); // list of hostUUIDs String environment_uuid; Map<String, String> links = new HashMap<>(); // container links where key is linkName, value is instanceUUID String host_ip; // helper field needed by metadata service to process object String metadata_kind; public ContainerMetaData() { } public String getName() { return name; } public String getPrimary_ip() { return primary_ip; } public String getExternal_id() { return external_id; } public List<String> getIps() { return ips; } public List<String> getPorts() { return ports; } public Map<String, String> getLabels() { return labels; } public void setIp(String ip) { this.primary_ip = ip; if (StringUtils.isNotBlank(ip)) { this.ips.add(primary_ip); } } @SuppressWarnings("unchecked") public void setInstanceAndHostMetadata(Instance instance, HostMetaData host, List<String> healthcheckHosts, Account account) { this.name = instance.getName(); this.uuid = instance.getUuid(); this.external_id = instance.getExternalId(); this.system = instance.getSystem(); Map<String, String> labels = DataAccessor.fields(instance).withKey(InstanceConstants.FIELD_LABELS) .withDefault(Collections.EMPTY_MAP).as(Map.class); this.labels = labels; this.hostname = instance.getHostname(); this.ports = DataAccessor.fields(instance) .withKey(InstanceConstants.FIELD_PORTS).withDefault(Collections.EMPTY_LIST) .as(List.class); if (host != null) { this.host_uuid = host.uuid; this.host_ip = host.agent_ip; } this.create_index = instance.getCreateIndex(); this.health_state = instance.getHealthState(); this.start_count = instance.getStartCount(); this.state = instance.getState(); this.memory_reservation = instance.getMemoryReservation(); this.milli_cpu_reservation = instance.getMilliCpuReservation(); if (instance.getDnsInternal() != null) { this.dns = IteratorUtils.toList(Splitter.on(",").omitEmptyStrings().trimResults() .split(instance.getDnsInternal()).iterator()); } if (instance.getDnsSearchInternal() != null) { this.dns_search = IteratorUtils.toList(Splitter.on(",").omitEmptyStrings().trimResults() .split(instance.getDnsSearchInternal()).iterator()); } if (healthcheckHosts != null) { this.health_check_hosts = healthcheckHosts; } this.environment_uuid = account.getUuid(); this.metadata_kind = "container"; } public Long getCreate_index() { return create_index; } public String getHost_uuid() { return host_uuid; } public String getHostname() { return hostname; } public String getUuid() { return uuid; } public String getHealth_state() { return health_state; } public Long getStart_count() { return start_count; } public void setName(String name) { this.name = name; } public void setUuid(String uuid) { this.uuid = uuid; } public void setExternal_id(String external_id) { this.external_id = external_id; } public void setPrimary_ip(String primary_ip) { this.primary_ip = primary_ip; } public void setIps(List<String> ips) { this.ips = ips; } public void setPorts(List<String> ports) { this.ports = ports; } public void setLabels(Map<String, String> labels) { this.labels = labels; } public void setCreate_index(Long create_index) { this.create_index = create_index; } public void setHost_uuid(String host_uuid) { this.host_uuid = host_uuid; } public void setHostname(String hostname) { this.hostname = hostname; } public void setHealth_state(String health_state) { this.health_state = health_state; } public void setStart_count(Long start_count) { this.start_count = start_count; } public String getService_index() { return service_index; } public void setService_index(String service_index) { this.service_index = service_index; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getPrimary_mac_address() { return primary_mac_address; } public void setPrimary_mac_address(String mac_address) { this.primary_mac_address = mac_address; } public Long getMemory_reservation() { return memory_reservation; } public void setMemory_reservation(Long memory) { this.memory_reservation = memory; } public Long getMilli_cpu_reservation() { return milli_cpu_reservation; } public void setMilli_cpu_reservation(Long milli_cpu_reservation) { this.milli_cpu_reservation = milli_cpu_reservation; } public String getNetwork_uuid() { return network_uuid; } public void setNetwork_uuid(String network_uuid) { this.network_uuid = network_uuid; } public String getNetwork_from_container_uuid() { return network_from_container_uuid; } public void setNetwork_from_container_uuid(String network_from_container_uuid) { this.network_from_container_uuid = network_from_container_uuid; } public Boolean getSystem() { return system; } public void setSystem(Boolean system) { this.system = system; } public List<String> getDns() { return dns; } public void setDns(List<String> dns) { this.dns = dns; } public List<String> getDns_search() { return dns_search; } public void setDns_search(List<String> dns_search) { this.dns_search = dns_search; } public List<String> getHealth_check_hosts() { return health_check_hosts; } public void setHealth_check_hosts(List<String> health_check_hosts) { this.health_check_hosts = health_check_hosts; } public String getEnvironment_uuid() { return environment_uuid; } public void setEnvironment_uuid(String environment_uuid) { this.environment_uuid = environment_uuid; } public String getMetadata_kind() { return metadata_kind; } public void setMetadata_kind(String metadata_kind) { this.metadata_kind = metadata_kind; } public String getHost_ip() { return host_ip; } public void setHost_ip(String host_ip) { this.host_ip = host_ip; } public String getService_name() { return service_name; } public void setService_name(String service_name) { this.service_name = service_name; } public String getStack_name() { return stack_name; } public void setStack_name(String stack_name) { this.stack_name = stack_name; } public String getStack_uuid() { return stack_uuid; } public void setStack_uuid(String stack_uuid) { this.stack_uuid = stack_uuid; } }