use of com.openshift.restclient.images.DockerImageURI in project jbosstools-openshift by jbosstools.
the class DeployImageJob method generateResources.
private Map<String, IResource> generateResources(final Connection connection, final String name) {
final IResourceFactory factory = connection.getResourceFactory();
final IProject project = parameters.getProject();
DockerImageURI sourceImage = getSourceImage();
Map<String, IResource> resources = new HashMap<>(4);
IImageStream is = stubImageStream(factory, name, project, sourceImage);
if (is != null && StringUtils.isBlank(is.getResourceVersion())) {
resources.put(ResourceKind.IMAGE_STREAM, is);
}
resources.put(ResourceKind.SERVICE, stubService(factory, name, SELECTOR_KEY, name));
if (parameters.isAddRoute()) {
resources.put(ResourceKind.ROUTE, stubRoute(factory, name, resources.get(ResourceKind.SERVICE).getName()));
}
resources.put(ResourceKind.DEPLOYMENT_CONFIG, stubDeploymentConfig(factory, name, sourceImage, is));
addToGeneratedResources(resources, connection, name, project);
for (IResource resource : resources.values()) {
addLabelsToResource(resource);
resource.setAnnotation(OpenShiftAPIAnnotations.GENERATED_BY, JBOSSTOOLS_OPENSHIFT);
}
return resources;
}
use of com.openshift.restclient.images.DockerImageURI in project jbosstools-openshift by jbosstools.
the class DeployImageJob method stubDeploymentConfig.
protected IResource stubDeploymentConfig(IResourceFactory factory, final String name, DockerImageURI imageUri, IImageStream is) {
IDeploymentConfig dc = factory.stub(ResourceKind.DEPLOYMENT_CONFIG, name, parameters.getProject().getName());
dc.addLabel(SELECTOR_KEY, name);
dc.addTemplateLabel(SELECTOR_KEY, name);
for (Label label : parameters.getLabels()) {
dc.addTemplateLabel(label.getName(), label.getValue());
}
dc.setReplicas(parameters.getReplicas());
dc.setReplicaSelector(SELECTOR_KEY, name);
Map<String, String> envs = getModifiedEnvVars(parameters.getEnvironmentVariables(), parameters.getImageEnvVars());
dc.addContainer(dc.getName(), imageUri, new HashSet<>(parameters.getPortSpecs()), envs, parameters.getVolumes());
dc.addTrigger(DeploymentTriggerType.CONFIG_CHANGE);
if (is != null) {
IDeploymentImageChangeTrigger imageChangeTrigger = (IDeploymentImageChangeTrigger) dc.addTrigger(DeploymentTriggerType.IMAGE_CHANGE);
imageChangeTrigger.setAutomatic(true);
imageChangeTrigger.setContainerName(name);
imageChangeTrigger.setFrom(new DockerImageURI(null, null, is.getName(), imageUri.getTag()));
imageChangeTrigger.setKind(ResourceKind.IMAGE_STREAM_TAG);
imageChangeTrigger.setNamespace(is.getNamespaceName());
}
return dc;
}
use of com.openshift.restclient.images.DockerImageURI in project jbosstools-openshift by jbosstools.
the class DeployImageWizardModel method lookupImageMetadata.
protected IDockerImageMetadata lookupImageMetadata() {
if (StringUtils.isBlank(this.imageName)) {
return null;
}
final DockerImageURI imageURI = new DockerImageURI(this.imageName);
final String repo = imageURI.getUriWithoutTag();
final String tag = StringUtils.defaultIfBlank(imageURI.getTag(), "latest");
if (dockerConnection != null && DockerImageUtils.hasImage(dockerConnection, repo, tag)) {
final IDockerImageInfo info = dockerConnection.getImageInfo(this.imageName);
if (info == null) {
return null;
}
return new DockerConfigMetaData(info);
} else if (this.project != null) {
return DockerImageUtils.lookupImageMetadata(project, imageURI);
}
return null;
}
use of com.openshift.restclient.images.DockerImageURI in project jbosstools-openshift by jbosstools.
the class DeployImageJobTest method testStubDeploymentConfig.
@Test
public void testStubDeploymentConfig() {
IImageStream is = givenAnImageStreamTo(project.getName(), DOCKER_TAG);
IResource resource = job.stubDeploymentConfig(factory, RESOURCE_NAME, DOCKER_TAG, is);
assertTrue(resource instanceof IDeploymentConfig);
IDeploymentConfig dc = (IDeploymentConfig) resource;
assertEquals("Exp. replicas to match incoming params", parameters.getReplicas(), dc.getReplicas());
assertEquals("Exp. the selector key to be the resourceName", RESOURCE_NAME, dc.getReplicaSelector().get(DeployImageJob.SELECTOR_KEY));
IContainer container = dc.getContainer(RESOURCE_NAME);
assertNotNull("Exp. to find a container with the resource name", container);
Collection<IDeploymentTrigger> triggers = dc.getTriggers();
assertTrue("Exp. a config change trigger", triggers.stream().filter(t -> DeploymentTriggerType.CONFIG_CHANGE.equals(t.getType())).findFirst().isPresent());
// assert ict matches container spec
Optional<IDeploymentTrigger> icTrigger = triggers.stream().filter(t -> DeploymentTriggerType.IMAGE_CHANGE.equals(t.getType())).findFirst();
assertTrue(icTrigger.isPresent());
IDeploymentImageChangeTrigger imageChangeTrigger = (IDeploymentImageChangeTrigger) icTrigger.get();
Collection<String> names = imageChangeTrigger.getContainerNames();
assertEquals(1, names.size());
assertEquals("Exp. the container and trigger names to match", container.getName(), names.iterator().next());
assertTrue(imageChangeTrigger.isAutomatic());
assertEquals(ResourceKind.IMAGE_STREAM_TAG, imageChangeTrigger.getKind());
assertEquals("Exp. the trigger to point to the imagestream name", new DockerImageURI(null, null, is.getName(), DOCKER_TAG.getTag()), imageChangeTrigger.getFrom());
assertEquals("Exp. the trigger to point to the imagestream name", is.getNamespaceName(), imageChangeTrigger.getNamespace());
}
use of com.openshift.restclient.images.DockerImageURI in project jbosstools-openshift by jbosstools.
the class CreateApplicationFromImageJobTest method testStubDeploymentConfig.
@SuppressWarnings("unchecked")
@Test
public void testStubDeploymentConfig() {
IImageStream is = mock(IImageStream.class);
when(is.getName()).thenReturn("aISname");
when(is.getNamespaceName()).thenReturn("anamespace");
IDeploymentConfig stub = mock(IDeploymentConfig.class);
when(stub.getName()).thenReturn(APP_NAME);
when(stub.addTrigger(anyString())).thenReturn(mock(IDeploymentImageChangeTrigger.class));
when(factory.stub(anyString(), anyString(), anyString())).thenReturn(stub);
when(deployImageModel.getProject()).thenReturn(project);
when(deployImageModel.getLabels()).thenReturn(Collections.emptyList());
when(deployImageModel.getVolumes()).thenReturn(Collections.emptyList());
when(deployImageModel.getPortSpecs()).thenReturn(Collections.emptyList());
when(deployImageModel.getReplicas()).thenReturn(1);
when(deployImageModel.getEnvironmentVariables()).thenReturn(Collections.emptyList());
job.stubDeploymentConfig(factory, APP_NAME, new DockerImageURI("foo:bar"), is);
verify(stub).addContainer(eq(APP_NAME), eq(new DockerImageURI(APP_NAME)), anySet(), anyMap(), anyList());
}
Aggregations