So here is how it'll be: 1. ReactJS application can be compiled for production builds. The output is set of html+css+compressed js files. It can also output a war file directly (I think). 2. The react app will have a configuration switch to allow user to set the baseUrl. Default value will be "/ws/v2". 3. These files can be bundled with stram so that it can be hosted by stram. In this case the base url for reading data will be "/ws/v2".. i.e. read from localhost. 3. OR the config switch be set "http://path/to/stram/ws/v2" using which one can host it seperately.
Basically, it can be reusable with configuration changes during/after build time. Hope that helps. Thanks, Chinmay. On Thu, Jun 14, 2018 at 10:09 PM Pramod Immaneni <pramod.imman...@gmail.com> wrote: > I don't think they would be reusable as is without any changes externally > as the application context would not be available. Also externally you > would want to have a different kind of application that aggregates across > multiple applications. > > Thanks > > On Thu, Jun 14, 2018 at 10:24 AM Vlad Rozov <vro...@apache.org> wrote: > > > If it is a set of static files that use existing REST API to display > > information in a browser, where they will be hosted is irrelevant. They > > can be hosted by stram, but it should be possible to host them > > externally without making modificaitons. If this is the case, I don't > > have any objections to the proposal. > > > > Thank you, > > > > Vlad > > > > On 6/13/18 06:09, Chinmay Kolhatkar wrote: > > > Hi Team, > > > > > > I agree with Thomas. The main focus of this proposal was to provide a > UI > > > layer using existing REST APIs. > > > I think we should first focus on providing a meaningful UI served by AM > > to > > > user using the same existing REST APIs. > > > > > > If in general, there is a agreement for the proposal, I can proceed > with > > > creating a JIRA and feature branch for the same. > > > > > > Thanks, > > > Chinmay. > > > > > > > > > On Wed, Jun 13, 2018 at 12:21 AM Thomas Weise <t...@apache.org> wrote: > > > > > >> Looks like there is some disconnect in this thread, a few replies > > express > > >> concerns that the proposal IMO doesn't imply. > > >> > > >> There is already a REST API that backs all of the CLI functionality. > > Modern > > >> UIs run in the browser, and so what was proposed (unless I > > misunderstood) > > >> would be based on the same REST API and nothing extra. The only > > additional > > >> thing the AM has to do is serve static files. And AFAIK it would > > actually > > >> simplify the UI implementation when files and REST API have the same > > >> origin. > > >> > > >> To me where files are coming from is actually a smaller piece and > > something > > >> that can be augmented. But before proposing solutions outside of Apex > or > > >> additional deployment requirements, please consider the user > > experience. It > > >> should be really simple to setup and use the UI. > > >> > > >> I would expect that a large part of the discussion evolves around the > UI > > >> functionality that helps the target persona. > > >> > > >> Thanks, > > >> Thomas > > >> > > >> On Tue, Jun 12, 2018, 8:05 PM Shubhrajyoti Mohapatra < > > >> sjmohapat...@gmail.com> > > >> wrote: > > >> > > >>> Hi Community, > > >>> > > >>> I would like to propose a slightly different approach on having an UI > > for > > >>> Apex. > > >>> > > >>> The details are below: > > >>> > > >>> 1. This involves having an external web-server installed along > > side of > > >>> apexCli. We will basically mimic all the functionalities that > > apexCli > > >>> currently provides. > > >>> 2. We will develop the necessary REST APIs for fetch/update > > operations > > >>> which apexCli currently supports. > > >>> 3. Because most of the information and operations needed by a > > typical > > >>> user are already there in apexCli, it will of great help to end > > users > > >>> and > > >>> which may increase the adoption rate. > > >>> > > >>> About Chinmay's proposal of having the STRAM hosting the apps, please > > >> find > > >>> my comments below: > > >>> > > >>> 1. It may increase load on STRAM if we were to provide real time > > >> display > > >>> of information. I am aware that apexCli fetches info from STRAM > > apis > > >> but > > >>> continuous polling can cause extra over-head. > > >>> 2. The UI will have limited scope for the particular application. > > >> Users > > >>> would definitely love to have a comprehensive UI for the > > management of > > >>> Apex > > >>> Apps as a whole. > > >>> 3. UI might be able to affect the whole application through STRAM > > >> hence > > >>> giving direct access to STRAM APIs might not be good idea. > > >>> 4. Because STRAM can't have a comprehensive UI hosted inside, > > anyways > > >> we > > >>> will have to develop an external one. > > >>> > > >>> So I would like propose the plan on action like this. > > >>> > > >>> 1. We develop the wrapper UI for apexCli in the first phase and > > give > > >>> user all the management options as REST APIs. > > >>> 2. If some of information we require are not in the current > apexCli > > >>> implementation, we can add those feature to apexCli and if > > required to > > >>> STRAM APIs in subsequent phases. > > >>> 3. In future we can even remove the REST server from STRAM if we > > could > > >>> provide something like MetricsStore functionality which was there > > in > > >>> DataTorrent RTS. > > >>> > > >>> -- > > >>> Thanks and Regards, > > >>> Shubhrajyoti Mohapatra > > >>> > > >>> > > >>> > > >>> > > >>> On Tue, Jun 12, 2018 at 2:49 AM Vlad Rozov <vro...@apache.org> > wrote: > > >>> > > >>>> IMO it will be hard to provide UI that meets everyone expectation. > An > > >>>> external webUI can serve two goals > > >>>> > > >>>> 1. provide reference UI implementation > > >>>> 2. ensure that REST API have all necessary entry points > > >>>> > > >>>> by embedding webUI directly into stram it will be tempting to > shortcut > > >>>> some calls to use stram classes directly. > > >>>> > > >>>> Thank you, > > >>>> > > >>>> Vlad > > >>>> > > >>>> On 6/11/18 12:18, Pramod Immaneni wrote: > > >>>>> I too think that a comprehensive UI works better standalone but > given > > >>>> that > > >>>>> stram already runs a webapp server, provides web services and RM > > >>>> provides a > > >>>>> proxy with mapped url space for it, we can extend stram to provide > > >>> better > > >>>>> visual output. Overall I am +1 on the idea. > > >>>>> > > >>>>> On Mon, Jun 11, 2018 at 8:59 AM Vlad Rozov <vro...@apache.org> > > >> wrote: > > >>>>>> Clarification: I am -0 on making UI part of the stram. I am +1 on > > >>>>>> providing reference webUI application outside of the stram. > > >>>>>> > > >>>>>> Thank you, > > >>>>>> > > >>>>>> Vlad > > >>>>>> > > >>>>>> On 6/9/18 07:05, Vlad Rozov wrote: > > >>>>>>> -0: stram provides REST API to query runtime information and IMO > > >> this > > >>>>>>> is sufficient to build an external webUI application(s). > > >>>>>>> > > >>>>>>> Thank you, > > >>>>>>> > > >>>>>>> Vlad > > >>>>>>> > > >>>>>>> On 6/6/18 11:17, Ambarish Pande wrote: > > >>>>>>>> +1 For this feature. It would be really helpfull for users to > > >>>>>>>> visualize all > > >>>>>>>> this information and the DAG. > > >>>>>>>> > > >>>>>>>> +1 for ReactJS + MaterialUI > > >>>>>>>> A great choice, given its flexibility and performance. > > >>>>>>>> > > >>>>>>>> I would like to contribute to this effort. > > >>>>>>>> > > >>>>>>>> On Wed, 6 Jun 2018 at 8:13 PM, Chinmay Kolhatkar < > > >>> chin...@apache.org> > > >>>>>>>> wrote: > > >>>>>>>> > > >>>>>>>>> Hi Community, > > >>>>>>>>> > > >>>>>>>>> I want to propose a feature in apex-core to have a UI component > > >> in > > >>>>>>>>> stram. > > >>>>>>>>> This is influenced by how basic runtime information is shown on > > >> UI > > >>> by > > >>>>>>>>> spark. > > >>>>>>>>> > > >>>>>>>>> This includes following features: > > >>>>>>>>> 1. Webpage will be hosted by stram and will be available for > user > > >>> to > > >>>>>>>>> view > > >>>>>>>>> in one of the two ways (I'll prefer approach b): > > >>>>>>>>> a. Hosted on a static port in which case we'll need to > add > > a > > >>> new > > >>>>>>>>> servlet > > >>>>>>>>> to stram > > >>>>>>>>> b. The webpage will be hosted on the same port as that of > > >>> stram > > >>>>>>>>> webservice but at a different path. Say, http:// > > >>>>>>>>> <stram_host>:<webservice_port>/ui > > >>>>>>>>> > > >>>>>>>>> 2. The webpage will be a static page and depending on the > > >> framework > > >>>> we > > >>>>>>>>> chose, it can show the realtime metric data from stram. > > >>>>>>>>> > > >>>>>>>>> 3. There will be a categories of readonly information (maybe > > >>>>>>>>> dynamically > > >>>>>>>>> changing) that will be shown on the UI: > > >>>>>>>>> a. Application level information > > >>>>>>>>> i. Status > > >>>>>>>>> ii. Number of tuples processed/emitted > > >>>>>>>>> iii. Start time/ Running span > > >>>>>>>>> iv. Stram events > > >>>>>>>>> v. Total memory used/available > > >>>>>>>>> vi. Number of container allocated/deployed > > >>>>>>>>> v. Other information which is available in stram > > >>>>>>>>> b. Logical Operator level information > > >>>>>>>>> i. Status > > >>>>>>>>> ii. Number of tuples processed/emitted > > >>>>>>>>> iii. Important events related to logical operator > > >>>>>>>>> iv. Container list in which the operator is deployed > > >>>>>>>>> v. Any other information available in stram > > >>>>>>>>> vi. Logical DAG View > > >>>>>>>>> c. Container level information > > >>>>>>>>> i. Status > > >>>>>>>>> ii. Number of tuples processed/emitted > > >>>>>>>>> iii. Important events related to logical operator > > >>>>>>>>> iv. Any other information available in stram > > >>>>>>>>> v. Physical DAG View > > >>>>>>>>> > > >>>>>>>>> 4. In second phase, there will be control related operations > > >>> allowed > > >>>>>>>>> from > > >>>>>>>>> the UI, as follows: > > >>>>>>>>> a. Stop/Kill application > > >>>>>>>>> b. Stop/Kill containers > > >>>>>>>>> c. Stack trace dump of containers > > >>>>>>>>> d. Logs related? > > >>>>>>>>> d. etc...?? > > >>>>>>>>> > > >>>>>>>>> The above implementation can be done in phases as follows: > > >>>>>>>>> 1. Have webpage display application level information only > > >>>> (read-only). > > >>>>>>>>> Static display first (i.e. page needs to refresh to see latest > > >>>>>>>>> data), next > > >>>>>>>>> dynamically changing data. > > >>>>>>>>> 2. Have jenkins build tools updated as needed by UI framework. > > >>>>>>>>> 3. Update the backend (stram) to serve the UI pages > > >>>>>>>>> 3. Extend the webage to display logical operator information. > > >>>>>>>>> 4. Extend the webage to display physical operator information > > >>>>>>>>> 5. Implement control operations on UI. > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> To implement above functionality, I propose ReactJS as UI > > >> framework > > >>>> and > > >>>>>>>>> MaterialUI (based on Google's material design) for > > >>> theme/controls/CSS > > >>>>>>>>> support. > > >>>>>>>>> > > >>>>>>>>> Please let me know what you think about the same. > > >>>>>>>>> > > >>>>>>>>> Also, please let know if anyone is interested in contributing > to > > >>> this > > >>>>>>>>> feature. > > >>>>>>>>> > > >>>>>>>>> Thanks, > > >>>>>>>>> Chinmay. > > >>>>>>>>> > > >>>> > > > > >