Added the subtasks. I just realized that by mistake I created the jiras in APEXMALHAR instead of APEXCORE. Is there a way to move the jiras to different project? Let me know otherwise, I'll close these jiras and recreate new ones in APEXCORE.
Thanks, Chinmay. On Sat, Jun 16, 2018 at 7:50 PM Chinmay Kolhatkar <chin...@apache.org> wrote: > Hi All, > > I've created following jiras encompassing the requirements (To be picked > up in order): > https://issues.apache.org/jira/browse/APEXMALHAR-2558 > https://issues.apache.org/jira/browse/APEXMALHAR-2559 > > I'll start adding subtasks for subitems mentioned in the jira. > > I'll also create the feature branch shortly so that we can start working > against it. > > -Chinmay. > > > > On Sat, Jun 16, 2018 at 7:07 PM Chinmay Kolhatkar <chin...@apache.org> > wrote: > >> 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. >>> > >>>>>>>>> >>> > >>>> >>> > >>> > >>> >>