Current EDP config-hints are not only plugin specific. Several types of jobs 
must have certain key/values and without it job will fail. For instance,
MapReduce (former Jar) job type requires Mapper/Reducer classes parameters 
to be set[1]. Moreover, for such kind of jobs we already have separated 
configuration defaults [2]. Also initial versions of patch implementing 
config-hints contained plugin-independent defaults for all each job types [3]. 
I remember we postponed decision about which configs are commmon for all 
plugins and agreed to show users all vanilla-specific defaults. That's why now
we have several TODOs in the code about config-hints should be plugin-specific.

So I propose to leave config-hints REST call in EDP internal and make it 
plugin-independent (or job-specific) by removing of parsing all 
vanilla-specific 
defaults and define small list of configs which is definitely common for each 
type of jobs. 
The first things come to mind:
- For MapReduce jobs it's already defined in [1]
- Configs like number of map and reduce tasks are common for all type of jobs
- At least user always has an ability to set any key/value(s) as 
params/arguments for job


[1] http://docs.openstack.org/developer/savanna/userdoc/edp.html#workflow
[2] 
https://github.com/openstack/savanna/blob/master/savanna/service/edp/resources/mapred-job-config.xml
[3] https://review.openstack.org/#/c/45419/10

Regards,
Alexander Ignatov



On 20 Jan 2014, at 22:04, Matthew Farrellee <m...@redhat.com> wrote:

> On 01/20/2014 12:50 PM, Andrey Lazarev wrote:
>> Inlined.
>> 
>> 
>> On Mon, Jan 20, 2014 at 8:15 AM, Matthew Farrellee <m...@redhat.com
>> <mailto:m...@redhat.com>> wrote:
>> 
>>    (inline, trying to make this readable by a text-only mail client
>>    that doesn't use tabs to indicate quoting)
>> 
>>    On 01/20/2014 02:50 AM, Andrey Lazarev wrote:
>> 
>>                 ------
>>                 FIX - @rest.get('/jobs/config-hints/____<job_type>') -
>>        should move to
>>                 GET /plugins/<plugin_name>/<____plugin_version>, similar to
>>                 get_node_processes
>>                 and get_required_image_tags
>>                 ------
>>                 Not sure if it should be plugin specific right now. EDP
>>        uses it
>>                 to show some
>>                 configs to users in the dashboard. it's just a cosmetic
>>        thing.
>>                 Also when user
>>                 starts define some configs for some job he might not define
>>                 cluster yet and
>>                 thus plugin to run this job. I think we should leave it
>>        as is
>>                 and leave only
>>                 abstract configs like Mapper/Reducer class and allow
>>        users to
>>                 apply any
>>                 key/value configs if needed.
>> 
>> 
>>             FYI, the code contains comments suggesting it should be
>>        plugin specific.
>> 
>>        
>> https://github.com/openstack/____savanna/blob/master/savanna/____service/edp/workflow_creator/____workflow_factory.py#L179
>>        
>> <https://github.com/openstack/__savanna/blob/master/savanna/__service/edp/workflow_creator/__workflow_factory.py#L179>
>> 
>>        
>> <https://github.com/openstack/__savanna/blob/master/savanna/__service/edp/workflow_creator/__workflow_factory.py#L179
>>        
>> <https://github.com/openstack/savanna/blob/master/savanna/service/edp/workflow_creator/workflow_factory.py#L179>>
>> 
>>             IMHO, the EDP should have no plugin specific dependencies.
>> 
>>             If it currently does, we should look into why and see if we
>>        can't
>>             eliminate this entirely.
>> 
>>        [AL] EDP uses plugins in two ways:
>>        1. for HDFS user
>>        2. for config hints
>>        I think both items should not be plugin specific on EDP API
>>        level. But
>>        implementation should go to plugin and call plugin API for result.
>> 
>> 
>>    In fact they are both plugin specific. The user is forced to click
>>    through a plugin selection (when launching a job on transient
>>    cluster) or the plugin selection has already occurred (when
>>    launching a job on an existing cluster).
>> 
>>    Since the config is something that is plugin specific, you might not
>>    have hbase hints from vanilla but you would from hdp, and you
>>    already have plugin information whenever you ask for a hint, my view
>>    that this be under the /plugins namespace is growing stronger.
>> 
>> 
>> [AL] Disagree. They are plugin specific, but EDP itself could have
>> additional plugin-independent logic inside. Now config hints return EDP
>> properties (like mapred.input.dir) as well as plugin-specific
>> properties. Placing it under /plugins namespace will give a vision that
>> it is fully plugin specific.
>> 
>> I like to see EDP API fully plugin independent and in one workspace. If
>> core side needs some information internally it can easily go into the
>> plugin.
> 
> I'm not sure if we're disagreeing. We may, in fact, be in violent agreement.
> 
> The EDP API is fully plugin independent, and should stay that way as a 
> project goal. config-hints is extra data that the horizon app can use to help 
> give users suggestions about what config they may want to optionally add to 
> their job. Those config options are independent of the job and specific to 
> the cluster where the job will run, which is the purview of the plugin.
> 
> Moving config-hints out of the EDP API will make this even more clear.
> 
> Best,
> 
> 
> matt
> 
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev@lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to