[jbosstools-issues] [JBoss JIRA] (JBIDE-21731) Server Adapter: Error shown when image is not created/pushed yet, could be more user friendly

Viacheslav Kabanovich (JIRA) issues at jboss.org
Tue Mar 1 18:30:00 EST 2016


    [ https://issues.jboss.org/browse/JBIDE-21731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13170502#comment-13170502 ] 

Viacheslav Kabanovich edited comment on JBIDE-21731 at 3/1/16 6:29 PM:
-----------------------------------------------------------------------

Wizard takes all tag images for all services. It is possible that user wants to select a service for which image tag with deployment folder is available, while as it is now, loading may fail because _another_ image tag is not yet ready. While loading resources in the wizard, we can for each imageRef (in DeploymentResourceMapper.getImageStreamTagsFor(Deployment)) call getResource(ResourceKind.IMAGE_STREAM_TAG,...) in try-catch to get and save the problem. Method getImageStreamTagsFor() now is used only by ServerSettingViewModel, and it does not need the entire resources, it gets them only to convert to json and look inside for the deployment folder. So, method getImageStreamTagsFor(), or its copy more useful for server adapter may return mapping of IService not to collection of IResource objects, but to collection of bean objects that will contain
- String imageRef;
- String imageTagJson; (null if failed)
- OpenShiftExceptioned exception; (not null if failed).

When user selects a service in the wizard, then if for this service
a) all image tags are successfully retrieved (beans have no exceptions) - just deployment folder is derived;
b) some image tags are successfully retrieved and provide deployment folder, but some image tags failed - deployment folder is derived and warning informs user that an image/images for the service are in build at the moment;
c) some or all image tags failed, and deployment folder cannot be derived - user is warned about that.
Anyway, user can enter deployment folder manually and complete the wizard. 

Also, we can add to the wizard a checkbox 'Derive deployment folder at publishing', and when it is checked it will disable deployment folder text input, so that user can complete not ignoring the warning, but instructing server to do what you described above.

[~adietish], can all or part of this be ok?



was (Author: scabanovich):
Wizard takes all tag images for all services. It is possible that user wants to select a service for which image tag with deployment folder is available, while as it is now, loading may fail because _another_ image tag is not yet ready. While loading resources in the wizard, we can for each imageRef (in DeploymentResourceMapper.getImageStreamTagsFor(Deployment)) call getResource(ResourceKind.IMAGE_STREAM_TAG,...) in try-catch to get and save the problem. Method getImageStreamTagsFor() now is used only by ServerSettingViewModel, and it does not need the entire resources, it gets them only to convert to json and look inside for the deployment folder. So, method getImageStreamTagsFor(), or its copy more useful for server adapter may return mapping of IService not to collection of IResource objects, but to collection of bean objects that will contain
- String imageRef;
- String imageTagJson; (null if failed)
- OpenShiftExceptioned exception; (not null if failed).

When user selects a service in the wizard, then if for this service
a) all image tags are successfully retrieved (beans have no exceptions) - just deployment folder is derived;
b) some image tags are successfully retrieved and provide deployment folder, but some image tags failed - deployment folder is derived and warning informs user that an image/images for the service are in build at the moment;
c) some or all image tags failed, and deployment folder cannot be derived - user is warned about that.
Anyway, user can enter deployment folder manually and complete the wizard. 

Also, we can add to the wizard a checkbox 'Derive deployment folder at publishing' - that when checked will disable deployment folder text input, so that user can complete not ignoring the warning, but instructing server to do what you described above.

[~adietish], can all or part of this be ok?


> Server Adapter: Error shown when image is not created/pushed yet, could be more user friendly
> ---------------------------------------------------------------------------------------------
>
>                 Key: JBIDE-21731
>                 URL: https://issues.jboss.org/browse/JBIDE-21731
>             Project: Tools (JBoss Tools)
>          Issue Type: Enhancement
>          Components: openshift
>    Affects Versions: 4.3.1.CR1
>            Reporter: Marián Labuda
>              Labels: openshift_v3, server_adapter
>             Fix For: 4.3.1.CR1
>
>         Attachments: cannot_get_image.png
>
>
> When I create a new OS3 application and then I want to create a new server adapter, an image for this application has to be built and pushed to OpenShift's local image registry. If build is still running, what is often happening on internal OSE instance (it takes minutes - pushing of images), then there is an error message that loading of image failed. User without solid overview of OS3 background would not be able to figure out why it is happening, because even Image stream is shown, but the image is not there yet.
> Screenshot of error:
> !cannot_get_image.png!
> Full error log:
> {code}
> com.openshift.restclient.OpenShiftException: Could not get resource django-example:latest in namespace image: {
>   "kind": "Status",
>   "apiVersion": "v1",
>   "metadata": {},
>   "status": "Failure",
>   "message": "imageStreamTag \"django-example:latest\" not found",
>   "reason": "NotFound",
>   "details": {
>     "name": "django-example:latest",
>     "kind": "imageStreamTag"
>   },
>   "code": 404
> }
> 	at com.openshift.internal.restclient.DefaultClient.createOpenShiftException(DefaultClient.java:481)
> 	at com.openshift.internal.restclient.DefaultClient.get(DefaultClient.java:306)
> 	at org.jboss.tools.openshift.core.connection.Connection.getResource(Connection.java:378)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.lambda$5(DeploymentResourceMapper.java:106)
> 	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
> 	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.getImageStreamTagsFor(DeploymentResourceMapper.java:107)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.lambda$2(DeploymentResourceMapper.java:87)
> 	at java.util.stream.Collectors.lambda$toMap$213(Collectors.java:1321)
> 	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
> 	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1540)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> 	at org.jboss.tools.openshift.internal.ui.models.DeploymentResourceMapper.getAllImageStreamTags(DeploymentResourceMapper.java:85)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel$ProjectImageStreamTags.createImageStreamsMap(ServerSettingsViewModel.java:334)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel$ProjectImageStreamTags.<init>(ServerSettingsViewModel.java:327)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.lambda$1(ServerSettingsViewModel.java:279)
> 	at java.util.stream.Collectors.lambda$toMap$213(Collectors.java:1321)
> 	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
> 	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
> 	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> 	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> 	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> 	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> 	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.createImageStreamTagsMap(ServerSettingsViewModel.java:277)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.loadResources(ServerSettingsViewModel.java:261)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsViewModel.loadResources(ServerSettingsViewModel.java:255)
> 	at org.jboss.tools.openshift.internal.ui.server.ServerSettingsWizardFragment$15.run(ServerSettingsWizardFragment.java:695)
> 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> Caused by: com.openshift.internal.restclient.http.NotFoundException: {
>   "kind": "Status",
>   "apiVersion": "v1",
>   "metadata": {},
>   "status": "Failure",
>   "message": "imageStreamTag \"django-example:latest\" not found",
>   "reason": "NotFound",
>   "details": {
>     "name": "django-example:latest",
>     "kind": "imageStreamTag"
>   },
>   "code": 404
> }
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.createException(UrlConnectionHttpClient.java:230)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.request(UrlConnectionHttpClient.java:165)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.request(UrlConnectionHttpClient.java:141)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.get(UrlConnectionHttpClient.java:103)
> 	at com.openshift.internal.restclient.DefaultClient.get(DefaultClient.java:302)
> 	... 36 more
> Caused by: java.io.FileNotFoundException: https://console.engint.openshift.com/oapi/v1/namespaces/image/imagestreamtags/django-example:latest
> 	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1836)
> 	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
> 	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
> 	at com.openshift.internal.restclient.http.UrlConnectionHttpClient.request(UrlConnectionHttpClient.java:161)
> 	... 39 more
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)



More information about the jbosstools-issues mailing list