You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by vs...@apache.org on 2018/08/08 08:35:20 UTC

[ambari] branch trunk updated: AMBARI-24387 - Support YARN Application timeout feature in Ambari Capaacity Scheduler View (#1924)

This is an automated email from the ASF dual-hosted git repository.

vsairam pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 4912556  AMBARI-24387 - Support YARN Application timeout feature in Ambari Capaacity Scheduler View (#1924)
4912556 is described below

commit 49125564ffb60e1568a8eee19e07a431036f2a7d
Author: Akhil S Naik <as...@hortonworks.com>
AuthorDate: Wed Aug 8 14:05:17 2018 +0530

    AMBARI-24387 - Support YARN Application timeout feature in Ambari Capaacity Scheduler View (#1924)
    
    * AMBARI-24387 - Support YARN Application timeout feature in Ambari Capacity Scheduler View
    
    * AMBARI-24387 - Support YARN Application timeout feature in Ambari Capacity Scheduler View change MAximum Lifetime to MAximum Application lifetime (asnaik)
    
    * Revert git ignore -- AMBARI-24387 - Support YARN Application timeout feature in Ambari Capacity Scheduler View change MAximum Lifetime to MAximum Application lifetime (asnaik)
---
 .../src/main/resources/ui/app/models/queue.js      | 14 ++++-
 .../src/main/resources/ui/app/serializers.js       |  6 +-
 .../src/main/resources/ui/app/templates/queue.hbs  | 68 ++++++++++++++++++++++
 3 files changed, 86 insertions(+), 2 deletions(-)

diff --git a/contrib/views/capacity-scheduler/src/main/resources/ui/app/models/queue.js b/contrib/views/capacity-scheduler/src/main/resources/ui/app/models/queue.js
index 37d9716..ddfe0db 100644
--- a/contrib/views/capacity-scheduler/src/main/resources/ui/app/models/queue.js
+++ b/contrib/views/capacity-scheduler/src/main/resources/ui/app/models/queue.js
@@ -258,6 +258,8 @@ App.Queue = DS.Model.extend({
   priority: DS.attr('number', {defaultValue: 0}),
   maximum_allocation_mb:DS.attr('number'),
   maximum_allocation_vcores:DS.attr('number'),
+  maximum_application_lifetime:DS.attr('number'),
+  default_application_lifetime:DS.attr('number'),
 
   disable_preemption: DS.attr('string', {defaultValue: ''}),
   isPreemptionInherited: DS.attr('boolean', {defaultValue: true}),
@@ -340,5 +342,15 @@ App.Queue = DS.Model.extend({
 
   isLeafQ: function() {
     return this.get('queues') === null;
-  }.property('queues')
+  }.property('queues'),
+
+  /**
+   * To reset the maximum_application_lifetime and default_application_lifetime if current Q is no longer Leaf Queue 
+   */
+  watchChangeLeafQueue: function () {
+    if (this.get('isLeafQ') == false) {
+      this.set('maximum_application_lifetime', null);
+      this.set('default_application_lifetime', null);
+    }
+  }.observes('isLeafQ')
 });
diff --git a/contrib/views/capacity-scheduler/src/main/resources/ui/app/serializers.js b/contrib/views/capacity-scheduler/src/main/resources/ui/app/serializers.js
index edcf5d1..91ca01f 100644
--- a/contrib/views/capacity-scheduler/src/main/resources/ui/app/serializers.js
+++ b/contrib/views/capacity-scheduler/src/main/resources/ui/app/serializers.js
@@ -109,7 +109,9 @@ App.SerializerMixin = Em.Mixin.create({
           disable_preemption:            props[base_path + '.disable_preemption'] || '',
           isPreemptionInherited:         (props[base_path + '.disable_preemption'] !== undefined)?false:true,
           maximum_allocation_mb:         props[base_path + '.maximum-allocation-mb'] || null,
-          maximum_allocation_vcores:     props[base_path + '.maximum-allocation-vcores'] || null
+          maximum_allocation_vcores:     props[base_path + '.maximum-allocation-vcores'] || null,
+          maximum_application_lifetime:     props[base_path + '.maximum-application-lifetime'] || null,
+          default_application_lifetime:     props[base_path + '.default-application-lifetime'] || null
         };
 
     //Converting capacity and max-capacity into two decimal point float numbers
@@ -233,6 +235,8 @@ App.QueueSerializer = DS.RESTSerializer.extend(App.SerializerMixin,{
     json[this.PREFIX + "." + record.get('path') + ".ordering-policy"] = record.get('ordering_policy')||null;
     json[this.PREFIX + "." + record.get('path') + ".maximum-allocation-mb"] = record.get('maximum_allocation_mb') || null;
     json[this.PREFIX + "." + record.get('path') + ".maximum-allocation-vcores"] = record.get('maximum_allocation_vcores') || null;
+    json[this.PREFIX + "." + record.get('path') + ".maximum-application-lifetime"] = record.get('maximum_application_lifetime') || null;
+    json[this.PREFIX + "." + record.get('path') + ".default-application-lifetime"] = record.get('default_application_lifetime') || null;
 
     if (record.get('ordering_policy') == 'fair') {
       json[this.PREFIX + "." + record.get('path') + ".ordering-policy.fair.enable-size-based-weight"] = record.get('enable_size_based_weight');
diff --git a/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs b/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs
index 802b09c..2d2ce06 100644
--- a/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs
+++ b/contrib/views/capacity-scheduler/src/main/resources/ui/app/templates/queue.hbs
@@ -416,6 +416,74 @@
                 {{/if}}
               </div>
             {{/if}}
+            {{#if content.isLeafQ}}
+                <div class="form-group">
+                    {{tooltip-label
+                            class="col-xs-6 control-label"
+                            label='Maximum Application Lifetime '
+                            message='Maximum lifetime of an application which is submitted to a queue in seconds.Any value less than or equal to zero will be considered as disabled.<br/> If positive value is configured then any application submitted to this queue will be killed after exceeds the configured lifetime'}}
+                    {{#if isOperator}}
+                        <div class="col-xs-6 control-value input-percent-wrap">
+                            <div>
+                                <div class="input-group input-percent">
+                                    {{int-input value=content.maximum_application_lifetime class="input-sm input-int"
+                                                placeholder="-1"}}
+                                    <span class="input-group-addon">sec</span>
+                                </div>
+                            </div>
+                            {{#if queueDirtyFilelds.maximum_application_lifetime}}
+                                <div class="btn-group btn-group-xs">
+                                    <a {{action 'rollbackProp' 'maximum_application_lifetime' content}} href="#"
+                                                                                                        class="btn btn-default btn-warning"><i
+                                            class="fa fa-undo"></i></a>
+                                </div>
+                            {{/if}}
+                        </div>
+                    {{else}}
+                        <div class="col-xs-6">
+                            {{#if content.maximum_application_lifetime}}
+                                <p class="form-control-static">{{content.maximum_application_lifetime}} sec</p>
+                            {{else}}
+                                <p class="form-control-static">-1</p>
+                            {{/if}}
+                        </div>
+                    {{/if}}
+                </div>
+            {{/if}}
+              {{#if content.isLeafQ}}
+                  <div class="form-group">
+                      {{tooltip-label
+                              class="col-xs-6 control-label"
+                              label='Default Application Lifetime '
+                              message='Default lifetime of an application which is submitted to a queue in seconds. Any value less than or equal to zero will be considered as disabled.<br/>  If the user has not submitted application with lifetime value then this value will be taken.'}}
+                      {{#if isOperator}}
+                          <div class="col-xs-6 control-value input-percent-wrap">
+                              <div>
+                                  <div class="input-group input-percent">
+                                      {{int-input value=content.default_application_lifetime class="input-sm input-int"
+                                                  placeholder="-1"}}
+                                      <span class="input-group-addon">sec</span>
+                                  </div>
+                              </div>
+                              {{#if queueDirtyFilelds.default_application_lifetime}}
+                                  <div class="btn-group btn-group-xs">
+                                      <a {{action 'rollbackProp' 'default_application_lifetime' content}} href="#"
+                                                                                                          class="btn btn-default btn-warning"><i
+                                              class="fa fa-undo"></i></a>
+                                  </div>
+                              {{/if}}
+                          </div>
+                      {{else}}
+                          <div class="col-xs-6">
+                              {{#if content.default_application_lifetime}}
+                                  <p class="form-control-static">{{content.default_application_lifetime}} sec</p>
+                              {{else}}
+                                  <p class="form-control-static">-1</p>
+                              {{/if}}
+                          </div>
+                      {{/if}}
+                  </div>
+              {{/if}}
             {{#if isFairOP}}
               <div class="form-group">
                 {{tooltip-label