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.
>> > >>>>>>>>>
>> > >>>>
>> >
>> >
>>
>

Reply via email to