flowexecutionpanel.vm

218 lines | 9.949 kB Blame History Raw Download
#*
 * Copyright 2012 LinkedIn Corp.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
*#

      <div class="modal modal-wide" id="execute-flow-panel">
        <div class="modal-dialog">
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
              <h4 class="modal-title" id="execute-flow-panel-title"></h4>
            </div><!-- /modal-header -->
            <div class="modal-body row">
              <div class="col-xs-4">
                <ul class="nav nav-pills nav-stacked" id="graph-options">
                  <li id="flow-option" viewpanel="svg-div-custom">
                    <a href="#">Flow View</a>
                    <div class="menu-caption">Right click on the jobs to disable and enable jobs in the flow.</div>
                  </li>
                  <li viewpanel="notification-panel">
                    <a href="#">Notification</a>
                    <div class="menu-caption">Change the address where success and failure emails will be sent.</div>
                  </li>
                  <li viewpanel="failure-options">
                    <a href="#">Failure Options</a>
                    <div class="menu-caption">Select flow behavior when a failure is detected.</div>
                  </li>
                  <li viewpanel="concurrent-panel">
                    <a href="#">Concurrent</a>
                    <div class="menu-caption">Change the behavior of the flow if it is already running.</div>
                  </li>
                  <li viewpanel="flow-parameters-panel">
                    <a href="#">Flow Parameters</a>
                    <div class="menu-caption">Add temporary flow parameters that are used to override global settings for each job.</div>
                  </li>
                </ul>
              </div><!-- /col-xs-4 -->
              <div class="col-xs-8">
                <div id="execution-graph-options-panel">

## SVG graph panel.

                  <div id="svg-div-custom" class="side-panel">
                    <svg id="flow-executing-graph" xmlns="http://www.w3.org/2000/svg" version="1.1" shape-rendering="optimize-speed" text-rendering="optimize-speed">
                    </svg>
                  </div>

## Notification panel.

                  <div id="notification-panel" class="side-panel">
                    <h4>Notify on failure</h4>
                    <p>On a job failure, notify on either the first failure, and/or when the failed flow finishes.</p>
                    <hr>
                    <div class="btn-group" data-toggle="buttons">
                      <label class="btn btn-default">
                        <input id="notify-failure-first" type="radio" name="notify" value="first">First failure
                      </label>
                      <label class="btn btn-default">
                        <input id="notify-failure-last" type="radio" name="notify" value="last">Flow finished
                      </label>
                    </div>

                    <h4>Failure Emails</h4>
                    <div class="checkbox">
                      <label>
                        <input type="checkbox" id="override-failure-emails" name="overrideFailureEmails" value="overrideFailureEmails">
                        Override flow email settings.
                      </label>
                    </div>
                    <label>Notify these addresses on failure. Comma, space, or semi-colon delimited list.</label>
                    <textarea class="form-control" rows="3" id="failure-emails"></textarea>

                    <h4>Success Emails</h4>
                    <div class="checkbox">
                      <label>
                        <input type="checkbox" id="override-success-emails" name="overrideSuccessEmails" value="overrideSuccessEmails">
                        Override flow email settings.
                      </label>
                    </div>
                    <label>Notify when the flow finishes successfully. Comma, space, or semi-colon delimited list.</label>
                    <textarea class="form-control" rows="3" id="success-emails"></textarea>
                  </div>

## Failure options panel.

                  <div id="failure-options" class="side-panel">
                    <h4>Failure Options</h4>
                    <p>When a failure first occurs in the flow, select the execution behavior.</p>
                    <hr>
                    <ul>
                      <li><strong>Finish Current Running</strong> finishes only the currently running job. It will not start any new jobs.</li>
                      <li><strong>Cancel All</strong> immediately kills all jobs and fails the flow.</li>
                      <li><strong>Finish All Possible</strong> will keep executing jobs as long as its dependencies are met.</li>
                    </ul>
                    <select id="failure-action" name="failureAction" class="form-control form-control-auto">
                      <option value="finishCurrent">Finish Current Running</option>
                      <option value="cancelImmediately">Cancel All</option>
                      <option value="finishPossible">Finish All Possible</option>
                    </select>
                  </div>

## Concurrent execution options panel.

                  <div id="concurrent-panel" class="side-panel">
                    <h4>Concurrent Execution Options</h4>
                    <p>If the flow is currently running, these are the options that can be set.</p>
                    <hr>
                    <div class="radio">
                      <label>
                        <input type="radio" id="skip" name="concurrent" value="skip" checked="checked">
                        Skip Execution
                      </label>
                      <span class="help-block">Do not run flow if it is already running.</span>
                    </div>

                    <div class="radio">
                      <label>
                        <input type="radio" id="ignore" name="concurrent" value="ignore">
                        Run Concurrently
                      </label>
                      <span class="help-block">Run the flow anyway. Previous execution is unaffected.</span>
                    </div>

                    <div class="radio">
                      <label>
                        <input type="radio" id="pipeline" name="concurrent" value="pipeline">
                        Pipeline
                      </label>
                      <select id="pipeline-level" name="pipelineLevel" class="form-control form-control-auto input-sm">
                        <option value="1">Level 1</option>
                        <option value="2">Level 2</option>
                      </select>
                      <span class="help-block">
                        Pipeline the flow, so the current execution will not be overrun.
                        <ul>
                          <li>Level 1: block job A until the previous flow job A has completed.</li>
                          <li>Level 2: block job A until the previous flow job A's children have completed.</li>
                        </li>
                      </span>
                    </div>
                  </div>

## Flow parameters panel

                  <div id="flow-parameters-panel" class="side-panel">
                    <h4>Flow Property Override</h4>
                    <hr>
                    <div id="editTable">
                      <table class="table table-striped">
                        <thead>
                          <tr>
                            <th class="property-key">Name</th>
                            <th>Value</th>
                          </tr>
                        </thead>
                        <tbody>
                          <tr id="addRow" class="addRow">
                            <td id="addRow-col" colspan="2">
                              <button type="button" class="btn btn-success btn-xs" id="add-btn">Add Row</button>
                            </td>
                          </tr>
                        </tbody>
                      </table>
                    </div>
                  </div>

                </div><!-- /execution-graph-options-panel -->
              </div><!-- /col-xs-8 -->
            </div><!-- /modal-body -->

            <div class="modal-footer">
#if (!$show_schedule || $show_schedule == 'true')
              <div class="pull-left">
                <button type="button" class="btn btn-success" id="schedule-btn">Schedule</button>
              </div>
#end

#*
#if ($triggerPlugins.size() > 0)
  #foreach ($triggerPlugin in $triggerPlugins)
              <button type="button" class="btn btn-default" id=set-$triggerPlugin.pluginName>$triggerPlugin.pluginName</button>
  #end
#end
*#
              <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
              <button type="button" class="btn btn-primary" id="execute-btn">Execute</button>
            </div><!-- /modal-footer -->
          </div><!-- /modal-content -->
        </div><!-- /modal-dialog -->
      </div><!-- /modal -->

#if (!$show_schedule || $show_schedule == 'true')
  #parse ("azkaban/webapp/servlet/velocity/schedulepanel.vm")
#end

#*
#if ($triggerPlugins.size() > 0)
  #foreach ($triggerPlugin in $triggerPlugins)
    #set ($prefix = $triggerPlugin.pluginName)
    #set ($webpath = $triggerPlugin.pluginPath)
    #parse ($triggerPlugin.inputPanelVM)
  #end
#end
*#

      <div id="contextMenu"></div>