Uploaded image for project: 'IGB'
  1. IGB
  2. IGBF-1624

Create a REST service to manage the app lifecycle

    Details

    • Type: Task
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:
      None
    • Story Points:
      3
    • Sprint:
      Spring 2019 Sprint 3, Spring 2019 Sprint 4, Spring 2019 Sprint 5, Spring 2019 Sprint 6, Summer 2019 Sprint 7

      Description

      The format of the request should be as follows:-
      Request type : POST
      Request URL : http://<host:port>/manageApp
      Request body :

      { "symbolicName" : "ProtAnnot", "action" : "install / update / uninstall / getInfo" }

      Response body :

      { "status" : "installed / updated / uninstalled / not found", "version" : "<app version>", "symbolicName" : "<one in request param>", "igbVersion" : "<Current version of IGB>" }

        Attachments

        1. getInfo.PNG
          getInfo.PNG
          41 kB
        2. IGBF-1624_Test_document.xlsx
          11 kB
        3. Install_success.PNG
          Install_success.PNG
          86 kB
        4. no_app_found.PNG
          no_app_found.PNG
          38 kB
        5. uninstall_success.PNG
          uninstall_success.PNG
          245 kB
        6. unknown_action.PNG
          unknown_action.PNG
          37 kB
        7. update_success.PNG
          update_success.PNG
          110 kB

          Issue Links

            Activity

            Hide
            ann.loraine Ann Loraine added a comment -

            https://nexus.bioviz.org is back on-line. Your branch should now build.

            Show
            ann.loraine Ann Loraine added a comment - https://nexus.bioviz.org is back on-line. Your branch should now build.
            Hide
            ann.loraine Ann Loraine added a comment -

            Riddhi and I discussed (in person) some requested improvements.

            Main request:

            • please Implement different way for PluginManagerServiceImpl to obtain IGB version string, instead of reading a file in "core" bundle in the constructor. We need a service that reports IGB's version.

            To-Do: Look at how "About IGB" menu is working. Is it reading this same file? If yes, probably this is a good time to implement a "getIgbVersion" service of some type.

            Suggestion: Do Bundles have a getVersion method? The OSGi runtime needs access to bundle version strings. Maybe what we need is already impelmented.

            Next steps:

            Riddhi mentioned she would like to work on this branch further before merging it into master. Moving this back to To-Do and re-assigning to RP.

            Show
            ann.loraine Ann Loraine added a comment - Riddhi and I discussed (in person) some requested improvements. Main request: please Implement different way for PluginManagerServiceImpl to obtain IGB version string, instead of reading a file in "core" bundle in the constructor. We need a service that reports IGB's version. To-Do: Look at how "About IGB" menu is working. Is it reading this same file? If yes, probably this is a good time to implement a "getIgbVersion" service of some type. Suggestion: Do Bundles have a getVersion method? The OSGi runtime needs access to bundle version strings. Maybe what we need is already impelmented. Next steps: Riddhi mentioned she would like to work on this branch further before merging it into master. Moving this back to To-Do and re-assigning to RP.
            Hide
            ann.loraine Ann Loraine added a comment -

            Working on resolving OSGi wiring problem:

            13:07:30.359 INFO o.l.igb.appstore.IgbAppServer - contextRoot: manageApp
            Exception in thread "NanoHttpd Request Processor (#1)" 13:07:30.379 INFO o.l.igb.appstore.IgbAppServer - contextRoot: manageApp
            java.lang.LinkageError: loader constraint violation: when resolving interface method "org.lorainelab.igb.plugin.manager.service.PluginManagerService.manageApp(Lcom/google/gson/JsonObject;)Lfi/iki/elonen/NanoHTTPD$Response;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, org/lorainelab/igb/appstore/IgbAppServer, and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) for the method's defining class, org/lorainelab/igb/plugin/manager/service/PluginManagerService, have different Class objects for the type com/google/gson/JsonObject used in the signature
            at org.lorainelab.igb.appstore.IgbAppServer.manageApp(IgbAppServer.java:123)
            at org.lorainelab.igb.appstore.IgbAppServer.processRequest(IgbAppServer.java:94)
            at org.lorainelab.igb.appstore.IgbAppServer.serve(IgbAppServer.java:64)
            at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:904)
            at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:188)
            at java.lang.Thread.run(Thread.java:748)
            Exception in thread "NanoHttpd Request Processor (#2)" java.lang.LinkageError: loader constraint violation: when resolving interface method "org.lorainelab.igb.plugin.manager.service.PluginManagerService.manageApp(Lcom/google/gson/JsonObject;)Lfi/iki/elonen/NanoHTTPD$Response;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, org/lorainelab/igb/appstore/IgbAppServer, and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) for the method's defining class, org/lorainelab/igb/plugin/manager/service/PluginManagerService, have different Class objects for the type com/google/gson/JsonObject used in the signature
            at org.lorainelab.igb.appstore.IgbAppServer.manageApp(IgbAppServer.java:123)
            at org.lorainelab.igb.appstore.IgbAppServer.processRequest(IgbAppServer.java:94)
            at org.lorainelab.igb.appstore.IgbAppServer.serve(IgbAppServer.java:64)
            at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:904)
            at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:188)
            at java.lang.Thread.run(Thread.java:748)

            Show
            ann.loraine Ann Loraine added a comment - Working on resolving OSGi wiring problem: 13:07:30.359 INFO o.l.igb.appstore.IgbAppServer - contextRoot: manageApp Exception in thread "NanoHttpd Request Processor (#1)" 13:07:30.379 INFO o.l.igb.appstore.IgbAppServer - contextRoot: manageApp java.lang.LinkageError: loader constraint violation: when resolving interface method "org.lorainelab.igb.plugin.manager.service.PluginManagerService.manageApp(Lcom/google/gson/JsonObject;)Lfi/iki/elonen/NanoHTTPD$Response;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, org/lorainelab/igb/appstore/IgbAppServer, and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) for the method's defining class, org/lorainelab/igb/plugin/manager/service/PluginManagerService, have different Class objects for the type com/google/gson/JsonObject used in the signature at org.lorainelab.igb.appstore.IgbAppServer.manageApp(IgbAppServer.java:123) at org.lorainelab.igb.appstore.IgbAppServer.processRequest(IgbAppServer.java:94) at org.lorainelab.igb.appstore.IgbAppServer.serve(IgbAppServer.java:64) at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:904) at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:188) at java.lang.Thread.run(Thread.java:748) Exception in thread "NanoHttpd Request Processor (#2)" java.lang.LinkageError: loader constraint violation: when resolving interface method "org.lorainelab.igb.plugin.manager.service.PluginManagerService.manageApp(Lcom/google/gson/JsonObject;)Lfi/iki/elonen/NanoHTTPD$Response;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) of the current class, org/lorainelab/igb/appstore/IgbAppServer, and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5) for the method's defining class, org/lorainelab/igb/plugin/manager/service/PluginManagerService, have different Class objects for the type com/google/gson/JsonObject used in the signature at org.lorainelab.igb.appstore.IgbAppServer.manageApp(IgbAppServer.java:123) at org.lorainelab.igb.appstore.IgbAppServer.processRequest(IgbAppServer.java:94) at org.lorainelab.igb.appstore.IgbAppServer.serve(IgbAppServer.java:64) at fi.iki.elonen.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:904) at fi.iki.elonen.NanoHTTPD$1$1.run(NanoHTTPD.java:188) at java.lang.Thread.run(Thread.java:748)
            Hide
            ann.loraine Ann Loraine added a comment -

            Made changes to pom.xml files to obtain gson and NanoHTTPD libraries from shared-lib-wrapper.
            Re-based Riddhi's branch onto latest master, pushed Riddhi's re-based branch to alorainefork, and merged pull request from there into lorainelab/master.
            Installers are now available for testing at https://bitbucket.org/lorainelab/integrated-genome-browser/downloads/.

            To test:

            • Download and install master branch IGB
            • Launch master branch IGB version
            • Visit testappstore.bioviz.org
            • Click on an App page
            • Observe "install" button
            • Click "install" to install the App
            • Observe that the App is now installed into IGB
            Show
            ann.loraine Ann Loraine added a comment - Made changes to pom.xml files to obtain gson and NanoHTTPD libraries from shared-lib-wrapper. Re-based Riddhi's branch onto latest master, pushed Riddhi's re-based branch to alorainefork, and merged pull request from there into lorainelab/master. Installers are now available for testing at https://bitbucket.org/lorainelab/integrated-genome-browser/downloads/ . To test: Download and install master branch IGB Launch master branch IGB version Visit testappstore.bioviz.org Click on an App page Observe "install" button Click "install" to install the App Observe that the App is now installed into IGB
            Hide
            sameer Sameer Shanbhag (Inactive) added a comment -

            Downloaded the Latest Build.

            Case:
            install the App from Biowiz (Test App Store).

            Observation:
            It is perfectly getting installed and is showing up on the IGB Desktop application.

            Will mark this as Complete.

            Show
            sameer Sameer Shanbhag (Inactive) added a comment - Downloaded the Latest Build. Case: install the App from Biowiz (Test App Store). Observation: It is perfectly getting installed and is showing up on the IGB Desktop application. Will mark this as Complete.

              People

              • Assignee:
                rpatil14 Riddhi Jagdish Patil (Inactive)
                Reporter:
                rpatil14 Riddhi Jagdish Patil (Inactive)
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: