use of com.openshift.restclient.model.IImageStream 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.model.IImageStream in project jbosstools-openshift by jbosstools.
the class DeployImageJob method stubImageStream.
protected IImageStream stubImageStream(IResourceFactory factory, String name, IProject project, DockerImageURI imageUri) {
// get project is - check
IImageStream is = findImageStreamFor(project.getName(), imageUri);
if (is == null) {
// get openshift is - check
if (StringUtils.isNotBlank(getParameters().getConnection().getClusterNamespace())) {
is = findImageStreamFor((String) getParameters().getConnection().getClusterNamespace(), imageUri);
}
// check if cluster will be able to pull image
if (is == null && isImageVisibleByOpenShift(project, imageUri)) {
is = factory.stub(ResourceKind.IMAGE_STREAM, name, project.getName());
is.addTag(imageUri.getTag(), "DockerImage", imageUri.toString());
}
}
if (is == null) {
summaryMessage = NLS.bind(MSG_NO_IMAGESTREAM, summaryMessage, parameters.getImageName());
}
return is;
}
use of com.openshift.restclient.model.IImageStream in project jbosstools-openshift by jbosstools.
the class DeployImageJobTest method testStubImageStreamWhereOneAlreadyExistsInTheProject.
@Test
public void testStubImageStreamWhereOneAlreadyExistsInTheProject() {
givenAnImageStreamTo(project.getName(), DOCKER_TAG);
IImageStream is = whenStubbingTheImageStream();
assertNotNull("Exp. an IS to be returned", is);
assertEquals(IMAGE_STREAM_NAME, is.getName());
assertEquals(project.getName(), is.getNamespaceName());
assertEquals(DOCKER_TAG, is.getDockerImageRepository());
}
use of com.openshift.restclient.model.IImageStream 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.model.IImageStream 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