use of io.fabric8.api.Version in project che by eclipse.
the class OpenShiftConnector method createContainer.
/**
* @param createContainerParams
* @return
* @throws IOException
*/
@Override
public ContainerCreated createContainer(CreateContainerParams createContainerParams) throws IOException {
String containerName = KubernetesStringUtils.convertToContainerName(createContainerParams.getContainerName());
String workspaceID = getCheWorkspaceId(createContainerParams);
// Generate workspaceID if CHE_WORKSPACE_ID env var does not exist
workspaceID = workspaceID.isEmpty() ? KubernetesStringUtils.generateWorkspaceID() : workspaceID;
// imageForDocker is the docker version of the image repository. It's needed for other
// OpenShiftConnector API methods, but is not acceptable as an OpenShift name
String imageForDocker = createContainerParams.getContainerConfig().getImage();
// imageStreamTagName is imageForDocker converted into a form that can be used
// in OpenShift
String imageStreamTagName = KubernetesStringUtils.convertPullSpecToTagName(imageForDocker);
// imageStreamTagName is not enough to fill out a pull spec; it is only the tag, so we
// have to get the ImageStreamTag from the tag, and then get the full ImageStreamTag name
// from that tag. This works because the tags used in Che are unique.
ImageStreamTag imageStreamTag = getImageStreamTagFromRepo(imageStreamTagName);
String imageStreamTagPullSpec = imageStreamTag.getMetadata().getName();
// Next we need to get the address of the registry where the ImageStreamTag is stored
String imageStreamName = KubernetesStringUtils.getImageStreamNameFromPullSpec(imageStreamTagPullSpec);
ImageStream imageStream = openShiftClient.imageStreams().inNamespace(openShiftCheProjectName).withName(imageStreamName).get();
if (imageStream == null) {
throw new OpenShiftException("ImageStream not found");
}
String registryAddress = imageStream.getStatus().getDockerImageRepository().split("/")[0];
// The above needs to be combined to form a pull spec that will work when defining a container.
String dockerPullSpec = String.format("%s/%s/%s", registryAddress, openShiftCheProjectName, imageStreamTagPullSpec);
Set<String> containerExposedPorts = createContainerParams.getContainerConfig().getExposedPorts().keySet();
Set<String> imageExposedPorts = inspectImage(InspectImageParams.create(imageForDocker)).getConfig().getExposedPorts().keySet();
Set<String> exposedPorts = getExposedPorts(containerExposedPorts, imageExposedPorts);
boolean runContainerAsRoot = runContainerAsRoot(imageForDocker);
String[] envVariables = createContainerParams.getContainerConfig().getEnv();
String[] volumes = createContainerParams.getContainerConfig().getHostConfig().getBinds();
Map<String, String> additionalLabels = createContainerParams.getContainerConfig().getLabels();
String containerID;
try {
createOpenShiftService(workspaceID, exposedPorts, additionalLabels);
String deploymentName = createOpenShiftDeployment(workspaceID, dockerPullSpec, containerName, exposedPorts, envVariables, volumes, runContainerAsRoot);
containerID = waitAndRetrieveContainerID(deploymentName);
if (containerID == null) {
throw new OpenShiftException("Failed to get the ID of the container running in the OpenShift pod");
}
} catch (IOException e) {
// Make sure we clean up deployment and service in case of an error -- otherwise Che can end up
// in an inconsistent state.
LOG.info("Error while creating Pod, removing deployment");
String deploymentName = CHE_OPENSHIFT_RESOURCES_PREFIX + workspaceID;
cleanUpWorkspaceResources(deploymentName);
openShiftClient.resource(imageStreamTag).delete();
throw e;
}
return new ContainerCreated(containerID, null);
}
use of io.fabric8.api.Version in project docker-maven-plugin by fabric8io.
the class DockerAccessFactory method createDockerAccess.
public DockerAccess createDockerAccess(DockerAccessContext dockerAccessContext) throws MojoExecutionException, MojoFailureException {
try {
DockerConnectionDetector dockerConnectionDetector = createDockerConnectionDetector(dockerAccessContext, dockerAccessContext.getLog());
DockerConnectionDetector.ConnectionParameter connectionParam = dockerConnectionDetector.detectConnectionParameter(dockerAccessContext.getDockerHost(), dockerAccessContext.getCertPath());
String version = dockerAccessContext.getMinimalApiVersion() != null ? dockerAccessContext.getMinimalApiVersion() : API_VERSION;
DockerAccess access = new DockerAccessWithHcClient("v" + version, connectionParam.getUrl(), connectionParam.getCertPath(), dockerAccessContext.getMaxConnections(), dockerAccessContext.getLog());
access.start();
setDockerHostAddressProperty(dockerAccessContext, connectionParam.getUrl());
String serverVersion = access.getServerApiVersion();
if (!EnvUtil.greaterOrEqualsVersion(serverVersion, version)) {
throw new MojoExecutionException(String.format("Server API version %s is smaller than required API version %s", serverVersion, version));
}
return access;
} catch (IOException e) {
throw new MojoExecutionException("Cannot create docker access object ", e);
}
}
use of io.fabric8.api.Version in project docker-maven-plugin by fabric8io.
the class PropertyConfigHandlerTest method testEnvAndLabels.
@Test
public void testEnvAndLabels() throws Exception {
List<ImageConfiguration> configs = resolveImage(imageConfiguration, props("docker.from", "baase", "docker.name", "demo", "docker.env.HOME", "/tmp", "docker.env.root.dir", "/bla", "docker.labels.version", "1.0.0", "docker.labels.blub.bla.foobar", "yep"));
assertEquals(1, configs.size());
ImageConfiguration calcConfig = configs.get(0);
for (Map env : new Map[] { calcConfig.getBuildConfiguration().getEnv(), calcConfig.getRunConfiguration().getEnv() }) {
assertEquals(2, env.size());
assertEquals("/tmp", env.get("HOME"));
assertEquals("/bla", env.get("root.dir"));
}
for (Map labels : new Map[] { calcConfig.getBuildConfiguration().getLabels(), calcConfig.getRunConfiguration().getLabels() }) {
assertEquals(2, labels.size());
assertEquals("1.0.0", labels.get("version"));
assertEquals("yep", labels.get("blub.bla.foobar"));
}
}
use of io.fabric8.api.Version in project kie-wb-common by kiegroup.
the class OpenShiftAccessInterfaceImpl method buildOpenShiftConfig.
// package-protected for junit testing purposes (from inside the package)
static OpenShiftConfig buildOpenShiftConfig(OpenShiftProviderConfig config) {
OpenShiftConfigBuilder builder = new OpenShiftConfigBuilder(OpenShiftConfig.wrap(Config.autoConfigure()));
/*
* Kubernetes configuration properties; see io.fabric8.kubernetes.client.Config
*/
String allProxy = trimToNull(config.getAllProxy());
if (allProxy != null) {
builder = builder.withHttpProxy(allProxy);
builder = builder.withHttpsProxy(allProxy);
}
String httpProxy = trimToNull(config.getHttpProxy());
if (httpProxy != null) {
// NOTE: overrides allProxy above
builder = builder.withHttpProxy(httpProxy);
}
String httpsProxy = trimToNull(config.getHttpsProxy());
if (httpsProxy != null) {
// NOTE: overrides allProxy above
builder = builder.withHttpsProxy(httpsProxy);
}
String kubernetesApiVersion = trimToNull(config.getKubernetesApiVersion());
if (kubernetesApiVersion != null) {
builder = builder.withApiVersion(kubernetesApiVersion);
}
String kubernetesAuthBasicPassword = trimToNull(config.getKubernetesAuthBasicPassword());
if (kubernetesAuthBasicPassword != null) {
builder = builder.withPassword(kubernetesAuthBasicPassword);
}
String kubernetesAuthBasicUsername = trimToNull(config.getKubernetesAuthBasicUsername());
if (kubernetesAuthBasicUsername != null) {
builder = builder.withUsername(kubernetesAuthBasicUsername);
}
String kubernetesAuthToken = trimToNull(config.getKubernetesAuthToken());
if (kubernetesAuthToken != null) {
builder = builder.withOauthToken(kubernetesAuthToken);
}
String kubernetesCertsCaData = trimToNull(config.getKubernetesCertsCaData());
if (kubernetesCertsCaData != null) {
builder = builder.withCaCertData(kubernetesCertsCaData);
}
String kubernetesCertsCaFile = trimToNull(config.getKubernetesCertsCaFile());
if (kubernetesCertsCaFile != null) {
builder = builder.withCaCertFile(kubernetesCertsCaFile);
}
String kubernetesCertsClientData = trimToNull(config.getKubernetesCertsClientData());
if (kubernetesCertsClientData != null) {
builder = builder.withClientCertData(kubernetesCertsClientData);
}
String kubernetesCertsClientFile = trimToNull(config.getKubernetesCertsClientFile());
if (kubernetesCertsClientFile != null) {
builder = builder.withClientCertFile(kubernetesCertsClientFile);
}
String kubernetesCertsClientKeyAlgo = trimToNull(config.getKubernetesCertsClientKeyAlgo());
if (kubernetesCertsClientKeyAlgo != null) {
builder = builder.withClientKeyAlgo(kubernetesCertsClientKeyAlgo);
}
String kubernetesCertsClientKeyData = trimToNull(config.getKubernetesCertsClientKeyData());
if (kubernetesCertsClientKeyData != null) {
builder = builder.withClientKeyData(kubernetesCertsClientKeyData);
}
String kubernetesCertsClientKeyFile = trimToNull(config.getKubernetesCertsClientKeyFile());
if (kubernetesCertsClientKeyFile != null) {
builder = builder.withClientKeyFile(kubernetesCertsClientKeyFile);
}
String kubernetesCertsClientKeyPassphrase = trimToNull(config.getKubernetesCertsClientKeyPassphrase());
if (kubernetesCertsClientKeyPassphrase != null) {
builder = builder.withClientKeyPassphrase(kubernetesCertsClientKeyPassphrase);
}
String kubernetesConnectionTimeout = trimToNull(config.getKubernetesConnectionTimeout());
if (kubernetesConnectionTimeout != null) {
builder = builder.withConnectionTimeout(Integer.parseInt(kubernetesConnectionTimeout));
}
String kubernetesKeystoreFile = trimToNull(config.getKubernetesKeystoreFile());
if (kubernetesKeystoreFile != null) {
builder = builder.withKeyStoreFile(kubernetesKeystoreFile);
}
String kubernetesKeystorePassphrase = trimToNull(config.getKubernetesKeystorePassphrase());
if (kubernetesKeystorePassphrase != null) {
builder = builder.withKeyStorePassphrase(kubernetesKeystorePassphrase);
}
String kubernetesLoggingInterval = trimToNull(config.getKubernetesLoggingInterval());
if (kubernetesLoggingInterval != null) {
builder = builder.withLoggingInterval(Integer.parseInt(kubernetesLoggingInterval));
}
String kubernetesMaster = trimToNull(config.getKubernetesMaster());
if (kubernetesMaster != null) {
builder = builder.withMasterUrl(kubernetesMaster);
}
String kubernetesNamespace = trimToNull(config.getKubernetesNamespace());
if (kubernetesNamespace != null) {
builder = builder.withNamespace(kubernetesNamespace);
}
String kubernetesRequestTimeout = trimToNull(config.getKubernetesRequestTimeout());
if (kubernetesRequestTimeout != null) {
builder = builder.withRequestTimeout(Integer.parseInt(kubernetesRequestTimeout));
}
String kubernetesRollingTimeout = trimToNull(config.getKubernetesRollingTimeout());
if (kubernetesRollingTimeout != null) {
builder = builder.withRollingTimeout(Long.parseLong(kubernetesRollingTimeout));
}
String kubernetesScaleTimeout = trimToNull(config.getKubernetesScaleTimeout());
if (kubernetesScaleTimeout != null) {
builder = builder.withScaleTimeout(Long.parseLong(kubernetesScaleTimeout));
}
String kubernetesTlsVersions = trimToNull(config.getKubernetesTlsVersions());
if (kubernetesTlsVersions != null) {
String[] split = kubernetesTlsVersions.split(",");
TlsVersion[] vers = new TlsVersion[split.length];
for (int i = 0; i < split.length; i++) {
vers[i] = TlsVersion.forJavaName(split[i]);
}
builder.withTlsVersions(vers);
}
String kubernetesTrustCertificates = trimToNull(config.getKubernetesTrustCertificates());
if (kubernetesTrustCertificates != null) {
builder = builder.withTrustCerts(Boolean.parseBoolean(kubernetesTrustCertificates));
}
String kubernetesTruststoreFile = trimToNull(config.getKubernetesTruststoreFile());
if (kubernetesTruststoreFile != null) {
builder = builder.withTrustStoreFile(kubernetesTruststoreFile);
}
String kubernetesTruststorePassphrase = trimToNull(config.getKubernetesTruststorePassphrase());
if (kubernetesTruststorePassphrase != null) {
builder = builder.withTrustStorePassphrase(kubernetesTruststorePassphrase);
}
String kubernetesUserAgent = trimToNull(config.getKubernetesUserAgent());
if (kubernetesUserAgent != null) {
builder = builder.withUserAgent(kubernetesUserAgent);
}
String kubernetesWatchReconnectInterval = trimToNull(config.getKubernetesWatchReconnectInterval());
if (kubernetesWatchReconnectInterval != null) {
builder = builder.withWatchReconnectInterval(Integer.parseInt(kubernetesWatchReconnectInterval));
}
String kubernetesWatchReconnectLimit = trimToNull(config.getKubernetesWatchReconnectLimit());
if (kubernetesWatchReconnectLimit != null) {
builder = builder.withWatchReconnectLimit(Integer.parseInt(kubernetesWatchReconnectLimit));
}
String kubernetesWebsocketPingInterval = trimToNull(config.getKubernetesWebsocketPingInterval());
if (kubernetesWebsocketPingInterval != null) {
builder = builder.withWebsocketPingInterval(Long.parseLong(kubernetesWebsocketPingInterval));
}
String kubernetesWebsocketTimeout = trimToNull(config.getKubernetesWebsocketTimeout());
if (kubernetesWebsocketTimeout != null) {
builder = builder.withWebsocketTimeout(Long.parseLong(kubernetesWebsocketTimeout));
}
String noProxy = trimToNull(config.getNoProxy());
if (noProxy != null) {
builder = builder.withNoProxy(noProxy.split(","));
}
String proxyPassword = trimToNull(config.getProxyPassword());
if (proxyPassword != null) {
builder = builder.withProxyPassword(proxyPassword);
}
String proxyUsername = trimToNull(config.getProxyUsername());
if (proxyUsername != null) {
builder = builder.withProxyUsername(proxyUsername);
}
/*
* OpenShift configuration properties; see io.fabric8.openshift.client.OpenShiftConfig
*/
String kubernetesOapiVersion = trimToNull(config.getKubernetesOapiVersion());
if (kubernetesOapiVersion != null) {
builder = builder.withOapiVersion(kubernetesOapiVersion);
}
String openshiftBuildTimeout = trimToNull(config.getOpenshiftBuildTimeout());
if (openshiftBuildTimeout != null) {
builder = builder.withBuildTimeout(Long.parseLong(openshiftBuildTimeout));
}
String openshiftUrl = trimToNull(config.getOpenshiftUrl());
if (openshiftUrl != null) {
// The OPENSHIFT_URL environment variable may be set to the root url (i.e. without the '/oapi/version' path) in some configurations
if (isRootUrl(openshiftUrl)) {
openshiftUrl = URLUtils.join(openshiftUrl, "oapi", builder.getOapiVersion());
}
builder = builder.withOpenShiftUrl(openshiftUrl);
} else {
builder.withOpenShiftUrl(URLUtils.join(builder.getMasterUrl(), "oapi", builder.getOapiVersion()));
}
return builder.build();
}
use of io.fabric8.api.Version in project fabric8 by jboss-fuse.
the class FabricMBeanFacadeTest method testVersionsWithOnlyIDs.
@Test
public void testVersionsWithOnlyIDs() {
// this can only be run if you have a fabric running...
Assume.assumeTrue(Boolean.valueOf(System.getProperty("hasFabric")));
FabricMBean facade = getFabricMBean();
String json = facade.versions(Helpers.toList("id"));
try {
Collection<VersionDTO> versions = Helpers.getObjectMapper().readValue(json, TypeFactory.defaultInstance().constructParametricType(Collection.class, VersionDTO.class));
Assume.assumeNotNull(versions);
for (Object version : versions) {
System.out.println(version);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Aggregations