/******************************************************************************* * Copyright (c) 2016 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package com.openshift.internal.restclient.capability.resources; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.openshift.internal.restclient.model.Status; import com.openshift.restclient.IClient; import com.openshift.restclient.ResourceKind; import com.openshift.restclient.UnsupportedEndpointException; import com.openshift.restclient.authorization.ResourceForbiddenException; import com.openshift.restclient.capability.resources.IImageStreamImportCapability; import com.openshift.restclient.http.IHttpConstants; import com.openshift.restclient.images.DockerImageURI; import com.openshift.restclient.model.IProject; import com.openshift.restclient.model.IStatus; import com.openshift.restclient.model.image.IImageStreamImport; /** * * @author jeff.cantrill * */ public class ImageStreamImportCapability implements IImageStreamImportCapability { private static final Logger LOG = LoggerFactory.getLogger(IImageStreamImportCapability.class); private IClient client; private IProject project; public ImageStreamImportCapability(IProject project, IClient client) { this.project = project; this.client = client; } @Override public IImageStreamImport importImageMetadata(DockerImageURI uri) { LOG.debug("first trying imagestreamimport against OpenShift server..."); IImageStreamImport streamImport = client.getResourceFactory().stub(ResourceKind.IMAGE_STREAM_IMPORT, "jbosstools-openshift-deployimage", project.getName()); streamImport.setImport(false); streamImport.addImage("DockerImage", uri); try { IImageStreamImport result = client.create(streamImport); for (IStatus status : result.getImageStatus()) { if(IStatus.SUCCESS.equalsIgnoreCase(status.getStatus())) { return result; } } }catch(ResourceForbiddenException | UnsupportedEndpointException e) { LOG.info("Unsuccessful in trying OpenShift server. ImageStreamImport is not supported."); } LOG.debug("Unsuccessful in trying OpenShift server. Trying dockerhub v2 registry..."); DockerRegistryImageStreamImportCapability reg = new DockerRegistryImageStreamImportCapability(this.project, client.getResourceFactory(), client); return reg.importImageMetadata(uri); } @Override public boolean isSupported() { return true; } @Override public String getName() { return ImageStreamImportCapability.class.getSimpleName(); } }