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

com.spotify.docker.client.messages.Container Maven / Gradle / Ivy

There is a newer version: 8.16.0
Show newest version
/*-
 * -\-\-
 * docker-client
 * --
 * Copyright (C) 2016 Spotify AB
 * --
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * -/-/-
 */

package com.spotify.docker.client.messages;

import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.ANY;
import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;

import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;

@AutoValue
@JsonAutoDetect(fieldVisibility = ANY, getterVisibility = NONE, setterVisibility = NONE)
public abstract class Container {

  @JsonProperty("Id")
  public abstract String id();

  @Nullable
  @JsonProperty("Names")
  public abstract ImmutableList names();

  @JsonProperty("Image")
  public abstract String image();

  @Nullable
  @JsonProperty("ImageID")
  public abstract String imageId();

  @JsonProperty("Command")
  public abstract String command();

  @JsonProperty("Created")
  public abstract Long created();

  @Nullable
  @JsonProperty("State")
  public abstract String state();

  @JsonProperty("Status")
  public abstract String status();

  @Nullable
  @JsonProperty("Ports")
  public abstract ImmutableList ports();

  @Nullable
  @JsonProperty("Labels")
  public abstract ImmutableMap labels();

  @Nullable
  @JsonProperty("SizeRw")
  public abstract Long sizeRw();

  @Nullable
  @JsonProperty("SizeRootFs")
  public abstract Long sizeRootFs();

  @Nullable
  @JsonProperty("NetworkSettings")
  public abstract NetworkSettings networkSettings();

  @Nullable
  @JsonProperty("Mounts")
  public abstract ImmutableList mounts();

  /**
   * Returns port information the way that docker ps does.
   * 0.0.0.0:5432->5432/tcp or 6379/tcp.
   *
   * 

It should not be used to extract detailed information of ports. To do so, please refer to * {@link com.spotify.docker.client.messages.PortBinding}. * * @return port information as docker ps does. * @see com.spotify.docker.client.messages.PortBinding */ public String portsAsString() { final StringBuilder sb = new StringBuilder(); if (ports() != null) { for (final PortMapping port : ports()) { if (sb.length() > 0) { sb.append(", "); } if (port.ip() != null) { sb.append(port.ip()).append(":"); } if (port.publicPort() > 0) { sb.append(port.privatePort()).append("->").append(port.publicPort()); } else { sb.append(port.privatePort()); } sb.append("/").append(port.type()); } } return sb.toString(); } @JsonCreator static Container create( @JsonProperty("Id") final String id, @JsonProperty("Names") final List names, @JsonProperty("Image") final String image, @JsonProperty("ImageID") final String imageId, @JsonProperty("Command") final String command, @JsonProperty("Created") final Long created, @JsonProperty("State") final String state, @JsonProperty("Status") final String status, @JsonProperty("Ports") final List ports, @JsonProperty("Labels") final Map labels, @JsonProperty("SizeRw") final Long sizeRw, @JsonProperty("SizeRootFs") final Long sizeRootFs, @JsonProperty("NetworkSettings") final NetworkSettings networkSettings, @JsonProperty("Mounts") final List mounts) { final ImmutableMap labelsT = labels == null ? null : ImmutableMap.copyOf(labels); final ImmutableList mountsT = mounts == null ? null : ImmutableList.copyOf(mounts); final ImmutableList namesT = names == null ? null : ImmutableList.copyOf(names); final ImmutableList portsT = ports == null ? null : ImmutableList.copyOf(ports); return new AutoValue_Container(id, namesT, image, imageId, command, created, state, status, portsT, labelsT, sizeRw, sizeRootFs, networkSettings, mountsT); } @AutoValue public abstract static class PortMapping { @JsonProperty("PrivatePort") public abstract Integer privatePort(); @JsonProperty("PublicPort") public abstract Integer publicPort(); @JsonProperty("Type") public abstract String type(); @Nullable @JsonProperty("IP") public abstract String ip(); @JsonCreator static PortMapping create( @JsonProperty("PrivatePort") final int privatePort, @JsonProperty("PublicPort") final int publicPort, @JsonProperty("Type") final String type, @JsonProperty("IP") final String ip) { return new AutoValue_Container_PortMapping(privatePort, publicPort, type, ip); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy