http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobmanager/config.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobmanager/config.html b/flink-runtime-web/src/main/resources/web/partials/jobmanager/config.html deleted file mode 100644 index da6b75b..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobmanager/config.html +++ /dev/null @@ -1,33 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<table class="table table-properties"> - <thead> - <tr> - <th>Key</th> - <th>Value</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="entry in jobmanager.config | orderBy: 'key'"> - <td>{{entry.key}}</td> - <td>{{entry.value}}</td> - </tr> - </tbody> -</table> \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobmanager/index.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobmanager/index.html b/flink-runtime-web/src/main/resources/web/partials/jobmanager/index.html deleted file mode 100644 index 02c2f47..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobmanager/index.html +++ /dev/null @@ -1,33 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Job Manager</div> -</nav> -<nav class="navbar navbar-default navbar-fixed-top navbar-main-additional"> - <ul class="nav nav-tabs"> - <li ui-sref-active="active"><a ui-sref=".config">Configuration</a></li> - <li ui-sref-active="active"><a ui-sref=".log">Logs</a></li> - <li ui-sref-active="active"><a ui-sref=".stdout">Stdout</a></li> - </ul> -</nav> -<div id="content-inner" class="has-navbar-main-additional"> - <div ui-view="details"></div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobmanager/stdout.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobmanager/stdout.html b/flink-runtime-web/src/main/resources/web/partials/jobmanager/stdout.html deleted file mode 100644 index df6a817..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobmanager/stdout.html +++ /dev/null @@ -1,40 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - - ---> -<table class="table table-properties"> - <thead> - <tr> - <th colspan="2"> - <div class="row"> - <div class="col-xs-10">Job Manager Output</div> - <div class="col-xs-1 text-right"><a ng-click="reloadData()" class="show-pointer"><i class="fa fa-refresh"></i></a></div> - <div class="col-xs-1 text-left"><a href="jobmanager/stdout"><i class="fa fa-download"></i></a></div> - </div> - </th> - </tr> - </thead> - <tbody> - <tr> - <td colspan="2"> - <pre>{{jobmanager.stdout}}</pre> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/completed-jobs.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/completed-jobs.html b/flink-runtime-web/src/main/resources/web/partials/jobs/completed-jobs.html deleted file mode 100644 index b76278d..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/completed-jobs.html +++ /dev/null @@ -1,53 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Completed Jobs</div> -</nav> -<div id="content-inner"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in jobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.config.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.config.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.config.html deleted file mode 100644 index a7a5d9d..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.config.html +++ /dev/null @@ -1,57 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<table ng-if="job['execution-config']" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Execution configuration</th> - </tr> - </thead> - <tbody> - <tr> - <td>Execution mode</td> - <td>{{ job['execution-config']['execution-mode'] }}</td> - </tr> - <tr> - <td>Max. number of execution retries</td> - <td>{{ job['execution-config']['max-execution-retries'] === -1 ? 'deactivated' : job['execution-config']['max-execution-retries'] }}</td> - </tr> - <tr> - <td>Job parallelism</td> - <td>{{ job['execution-config']['job-parallelism'] === -1 ? 'auto' : job['execution-config']['job-parallelism'] }}</td> - </tr> - <tr> - <td>Object reuse mode</td> - <td>{{ job['execution-config']['object-reuse-mode'] }}</td> - </tr> - </tbody> -</table> -<table ng-if="job['execution-config']['user-config']" class="table table-properties"> - <thead> - <tr> - <th colspan="2">User configuration</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in job['execution-config']['user-config']"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.exceptions.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.exceptions.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.exceptions.html deleted file mode 100644 index a5f6676..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.exceptions.html +++ /dev/null @@ -1,38 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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 ng-if="exceptions['root-exception']" class="panel panel-default panel-multi"> - <div class="panel-heading clearfix"> - <div class="panel-title">Root exception</div> - </div> - <div class="panel-body"> - <pre class="exception">{{ exceptions['root-exception'] }}</pre> - </div> -</div> -<div ng-repeat="exception in exceptions['all-exceptions']" class="panel panel-default panel-multi"> - <div class="panel-heading clearfix"> - <div class="panel-title">{{ exception.task }}</div> - </div> - <div class="panel-heading clearfix"> - <div class="panel-info thin last"><span>{{ exception.location }}</span></div> - </div> - <div class="panel-body"> - <pre class="exception">{{ exception.exception }}</pre> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.html deleted file mode 100644 index 9d3e171..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.html +++ /dev/null @@ -1,48 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<nav ng-if="job" class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title"> - <indicator-primary status="{{job.state}}"></indicator-primary>{{ job.name }} - </div> - <div class="navbar-info first last hidden-xs hidden-sm">{{ job.jid }}</div> - <div class="navbar-info first last"> - <div class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job['status-counts']">{{value}}</bs-label> - </div> - </div> - <div class="navbar-info first last hidden-xs hidden-sm">{{ job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}<span ng-if="job['end-time'] > -1"> - - - {{ job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></div> - <div ng-if="job.duration > -1" class="navbar-info last first">{{job.duration}} ms</div> -</nav> -<nav ng-if="job" class="navbar navbar-default navbar-fixed-top navbar-main-additional"> - <ul class="nav nav-tabs"> - <li ui-sref-active="active"><a ui-sref=".plan.overview">Plan</a></li> - <li ui-sref-active="active"><a ui-sref=".statistics">Job Accumulators / Statistics</a></li> - <li ui-sref-active="active"><a ui-sref=".timeline">Timeline</a></li> - <li ui-sref-active="active"><a ui-sref=".exceptions">Exceptions</a></li> - <li ui-sref-active="active"><a ui-sref=".properties">Properties</a></li> - <li ui-sref-active="active"><a ui-sref=".config">Configuration</a></li> - </ul> -</nav> -<div id="content-inner" class="has-navbar-main-additional"> - <div ui-view="details"></div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.html deleted file mode 100644 index f2c4143..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.html +++ /dev/null @@ -1,31 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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="canvas-wrapper"> - <div job-plan="job-plan" plan="plan" jobid="{{jobid}}" set-node="changeNode(nodeid)" class="main-canvas"></div> -</div> -<div ng-if="plan" class="panel panel-default panel-multi"> - <nav class="navbar navbar-default navbar-secondary-additional"> - <ul class="nav nav-tabs"> - <li ui-sref-active="active"><a ui-sref=".overview({nodeid: nodeid})">Overview</a></li> - <li ui-sref-active="active"><a ui-sref=".accumulators({nodeid: nodeid})">Accumulators</a></li> - </ul> - </nav> - <div ui-view="node-details" class="panel-body clean"></div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.accumulators.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.accumulators.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.accumulators.html deleted file mode 100644 index 8de3921..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.accumulators.html +++ /dev/null @@ -1,40 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<table class="table table-body-hover table-clickable table-activable"> - <thead> - <tr> - <th>Name</th> - <th>Status</th> - </tr> - </thead> - <tbody ng-repeat="v in job.vertices" ng-class="{ active: v.id == nodeid }" ng-click="v.id == nodeid || changeNode(v.id)"> - <tr ng-if="v.type == 'regular'"> - <td>{{ v.name | humanizeText }}</td> - <td> - <bs-label status="{{v.status}}">{{v.status}}</bs-label> - </td> - </tr> - <tr ng-if="nodeid && v.id == nodeid"> - <td colspan="10"> - <div ng-include=" 'partials/jobs/job.plan.node.accumulators.html' "></div> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.overview.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.overview.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.overview.html deleted file mode 100644 index 1706d3e..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node-list.overview.html +++ /dev/null @@ -1,60 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<table class="table table-body-hover table-clickable table-activable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Name</th> - <th>Bytes read</th> - <th>Records read</th> - <th>Bytes written</th> - <th>Records written</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody ng-repeat="v in job.vertices" ng-class="{ active: v.id == nodeid }" ng-click="changeNode(v.id)"> - <tr ng-if="v.type == 'regular'"> - <td><span ng-if="v['start-time'] > -1">{{ v['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="v['end-time'] > -1">{{ v['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="v.duration > -1">{{ v.duration }} ms</span></td> - <td class="td-long">{{ v.name | humanizeText }}</td> - <td>{{ v.metrics['read-bytes'] }}</td> - <td>{{ v.metrics['read-records'] }}</td> - <td>{{ v.metrics['write-bytes'] }}</td> - <td>{{ v.metrics['write-records'] }}</td> - <td> - <div class="label-group"> - <bs-label status="{{status}}" ng-repeat="(index, status) in stateList">{{v.tasks[status]}}</bs-label> - </div> - </td> - <td> - <bs-label status="{{v.status}}">{{v.status}}</bs-label> - </td> - </tr> - <tr ng-if="nodeid && v.id == nodeid"> - <td colspan="10"> - <div ng-include=" 'partials/jobs/job.plan.node.subtasks.html' "></div> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.accumulators.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.accumulators.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.accumulators.html deleted file mode 100644 index e7dcf2c..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.accumulators.html +++ /dev/null @@ -1,68 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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 ng-if="accumulators.length == 0"> - <p><i>No accumulators</i></p> -</div> -<div ng-if="accumulators && accumulators.length > 0"> - <table class="table table-hover table-clickable table-activable table-inner"> - <thead> - <tr> - <th>Name</th> - <th>Type</th> - <th>Value</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="accumulator in accumulators"> - <td width="30%">{{ accumulator.name }}</td> - <td width="30%">{{ accumulator.type }}</td> - <td width="30%">{{ accumulator.value }}</td> - </tr> - </tbody> - </table> - <div ng-if="!nodeUnfolded"><a ng-click="toggleFold()" class="btn btn-default"> - Show subtasks - <i class="fa fa-chevron-down"></i></a><a ng-click="deactivateNode(); $event.stopPropagation()" title="Fold" class="btn btn-default pull-right"><i class="fa fa-chevron-up"></i></a></div> - <div ng-if="nodeUnfolded && subtaskAccumulators && subtaskAccumulators.length > 0"><a ng-click="toggleFold()" class="btn btn-default"> - Hide subtasks - <i class="fa fa-chevron-up"></i></a> - <table class="table table-hover table-clickable table-activable table-inner"> - <thead> - <tr> - <th>Name</th> - <th>Type</th> - <th>Value</th> - </tr> - </thead> - <tbody ng-if="subtask['user-accumulators'] && subtask['user-accumulators'].length > 0" ng-repeat="subtask in subtaskAccumulators"> - <tr> - <td colwidth="3"> - <div class="small-label">({{ subtask.subtask }}) {{ subtask.host }}, attempt: {{ subtask.attempt + 1 }}</div> - </td> - </tr> - <tr ng-repeat="accumulator in subtask['user-accumulators']"> - <td width="30%">{{ accumulator.name }}</td> - <td width="30%">{{ accumulator.type }}</td> - <td width="30%">{{ accumulator.value }}</td> - </tr> - </tbody> - </table> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.subtasks.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.subtasks.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.subtasks.html deleted file mode 100644 index 40b16bc..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.plan.node.subtasks.html +++ /dev/null @@ -1,52 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - - ---> -<table ng-if="subtasks" class="table table-hover table-clickable table-activable table-inner"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Bytes read</th> - <th>Records read</th> - <th>Bytes written</th> - <th>Records written</th> - <th>Attempt</th> - <th>Host</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="subtask in subtasks"> - <td><span ng-if="subtask['start-time'] > -1">{{ subtask['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="subtask['end-time'] > -1">{{ subtask['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="subtask.duration > -1">{{ subtask.duration }} ms</span></td> - <td><span ng-if="subtask.metrics['read-bytes'] > -1">{{ subtask.metrics['read-bytes'] }}</span></td> - <td><span ng-if="subtask.metrics['read-records'] > -1">{{ subtask.metrics['read-records'] }}</span></td> - <td><span ng-if="subtask.metrics['write-bytes'] > -1">{{ subtask.metrics['write-bytes'] }}</span></td> - <td><span ng-if="subtask.metrics['write-records'] > -1">{{ subtask.metrics['write-records'] }}</span></td> - <td>{{ subtask.attempt + 1 }}</td> - <td>{{ subtask.host }}</td> - <td> - <bs-label status="{{subtask.status}}">{{subtask.status}}</bs-label> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.properties.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.properties.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.properties.html deleted file mode 100644 index 907afd3..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.properties.html +++ /dev/null @@ -1,140 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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="canvas-wrapper"> - <div job-plan="job-plan" plan="plan" jobid="{{jobid}}" set-node="changeNode(nodeid)" class="main-canvas"></div> -</div> -<div ng-if="node" class="panel panel-default"> - <div class="panel-heading clearfix"> - <div class="panel-title">{{ node.description | humanizeText }}</div> - </div> - <div class="panel-body clean"> - <div class="row"> - <div class="col-sm-6 col-md-4"> - <table ng-if="node.optimizer_properties.global_properties" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Global Data Properties</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.global_properties"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - <table ng-if="node.optimizer_properties.local_properties" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Local Data Properties</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.local_properties"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - <div class="visible-xs visible-sm"> - <table class="table table-properties"> - <thead> - <tr> - <th colspan="2">Properties</th> - </tr> - </thead> - <tbody> - <tr> - <td>Operator</td> - <td table-property="table-property" value="node.operator_strategy"></td> - </tr> - <tr> - <td>Parallelism</td> - <td table-property="table-property" value="node.parallelism"></td> - </tr> - </tbody> - </table> - </div> - </div> - <div class="hidden-sm col-md-4"> - <table class="table table-properties"> - <thead> - <tr> - <th colspan="2">Properties</th> - </tr> - </thead> - <tbody> - <tr> - <td>Operator</td> - <td table-property="table-property" value="node.operator_strategy"></td> - </tr> - <tr> - <td>Parallelism</td> - <td table-property="table-property" value="node.parallelism"></td> - </tr> - </tbody> - </table> - <table ng-if="node.optimizer_properties.estimates" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Size Estimates</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.estimates"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - </div> - <div class="col-sm-6 col-md-4"> - <div class="visible-xs visible-sm"> - <table ng-if="node.optimizer_properties.estimates" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Size Estimates</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.estimates"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - </div> - <table ng-if="node.optimizer_properties.costs" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Cost Estimates</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.costs"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - </div> - </div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.statistics.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.statistics.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.statistics.html deleted file mode 100644 index 951cc1c..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.statistics.html +++ /dev/null @@ -1,40 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<table class="table table-properties"> - <thead> - <tr> - <th colspan="2">Some statistics</th> - </tr> - </thead> - <tbody> - <tr> - <td>Operator</td> - <td>1</td> - </tr> - <tr> - <td>Parallelism</td> - <td>2</td> - </tr> - <tr> - <td>Subtasks-per-instance</td> - <td>3</td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.html deleted file mode 100644 index 2f22576..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.html +++ /dev/null @@ -1,23 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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="canvas-wrapper"> - <div timeline="timeline" vertices="vertices" jobid="jobid" class="timeline-canvas"></div> -</div> -<div ui-view="vertex"></div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.vertex.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.vertex.html b/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.vertex.html deleted file mode 100644 index 1a4bd06..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/job.timeline.vertex.html +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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 ng-if="vertex" class="panel panel-default panel-multi"> - <div class="panel-heading clearfix"> - <div class="panel-title">{{ vertex.groupvertex.groupvertexname | humanizeText }}</div> - </div> - <div class="panel-body"> - <div class="canvas-wrapper"> - <div vertex="vertex" data="vertex" class="timeline-canvas"></div> - </div> - <div id="timeline1"></div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/jobs/running-jobs.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/jobs/running-jobs.html b/flink-runtime-web/src/main/resources/web/partials/jobs/running-jobs.html deleted file mode 100644 index e175d07..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/jobs/running-jobs.html +++ /dev/null @@ -1,53 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Running Jobs</div> -</nav> -<div id="content-inner"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in jobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/main/resources/web/partials/overview.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/resources/web/partials/overview.html b/flink-runtime-web/src/main/resources/web/partials/overview.html deleted file mode 100644 index ec3c580..0000000 --- a/flink-runtime-web/src/main/resources/web/partials/overview.html +++ /dev/null @@ -1,147 +0,0 @@ - -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you 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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Overview</div> -</nav> -<div id="content-inner"> - <div class="row"> - <div class="col-md-6"> - <div class="panel panel-default panel-dashboard"> - <div class="panel-heading"> - <div class="row"> - <div class="col-xs-3"><i class="fa fa-tasks fa-3x"></i></div> - <div class="col-xs-9 text-right"> - <div class="huge">{{overview.taskmanagers}}</div> - <div>Task Managers</div> - </div> - </div> - </div> - <div class="panel-heading"> - <div class="row"> - <div class="col-xs-3"><i class="fa fa-folder fa-3x"></i></div> - <div class="col-xs-9 text-right"> - <div class="huge">{{overview["slots-total"]}}</div> - <div>Task Slots</div> - </div> - </div> - </div> - <div class="panel-heading"> - <div class="row"> - <div class="col-xs-3"><i class="fa fa-folder-o fa-3x"></i></div> - <div class="col-xs-9 text-right"> - <div class="huge">{{overview["slots-available"]}}</div> - <div>Available Task Slots</div> - </div> - </div> - </div> - </div> - </div> - <div class="col-md-6"> - <div class="panel panel-default panel-lg"> - <div class="panel-heading">Total Jobs</div> - <div class="list-group"> - <div class="list-group-item"> - <div class="badge badge-primary">{{overview["jobs-running"]}}</div>Running - </div> - <div class="list-group-item"> - <div class="badge badge-success">{{overview["jobs-finished"]}}</div>Finished - </div> - <div class="list-group-item"> - <div class="badge badge-info">{{overview["jobs-cancelled"]}}</div>Canceled - </div> - <div class="list-group-item"> - <div class="badge badge-danger">{{overview["jobs-failed"]}}</div>Failed - </div> - </div> - </div> - </div> - </div> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Running Jobs</h3> - </div> - <div class="panel-body"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in runningJobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> - </div> - </div> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Completed Jobs</h3> - </div> - <div class="panel-body"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in finishedJobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> - </div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitorITCase.java ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitorITCase.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitorITCase.java index 5167d13..68b00dc 100644 --- a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitorITCase.java +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitorITCase.java @@ -46,6 +46,7 @@ import scala.concurrent.duration.Deadline; import scala.concurrent.duration.FiniteDuration; import java.io.File; +import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -62,7 +63,7 @@ public class WebRuntimeMonitorITCase extends TestLogger { private final static FiniteDuration TestTimeout = new FiniteDuration(2, TimeUnit.MINUTES); - private final String MAIN_RESOURCES_PATH = getClass().getResource("/../classes/web").getPath(); + private final String MAIN_RESOURCES_PATH = getClass().getResource("/web").getPath(); /** * Tests operation of the monitor in standalone operation. @@ -82,10 +83,13 @@ public class WebRuntimeMonitorITCase extends TestLogger { ActorSystem jmActorSystem = flink.jobManagerActorSystems().get().head(); ActorRef jmActor = flink.jobManagerActors().get().head(); + File logDir = temporaryFolder.newFolder("log"); + Files.createFile(new File(logDir, "jobmanager.log").toPath()); + Files.createFile(new File(logDir, "jobmanager.out").toPath()); + Configuration monitorConfig = new Configuration(); - monitorConfig.setString(WebMonitorConfig.JOB_MANAGER_WEB_DOC_ROOT_KEY, MAIN_RESOURCES_PATH); - monitorConfig.setBoolean(ConfigConstants.JOB_MANAGER_NEW_WEB_FRONTEND_KEY, true); monitorConfig.setInteger(ConfigConstants.JOB_MANAGER_WEB_PORT_KEY, 0); + monitorConfig.setString(ConfigConstants.JOB_MANAGER_WEB_LOG_PATH_KEY, logDir.getAbsolutePath()); // Needs to match the leader address from the leader retrieval service String jobManagerAddress = AkkaUtils.getAkkaURL(jmActorSystem, jmActor); @@ -143,9 +147,13 @@ public class WebRuntimeMonitorITCase extends TestLogger { final Configuration config = ZooKeeperTestUtils.createZooKeeperRecoveryModeConfig( zooKeeper.getConnectString(), temporaryFolder.getRoot().getPath()); - config.setString(WebMonitorConfig.JOB_MANAGER_WEB_DOC_ROOT_KEY, MAIN_RESOURCES_PATH); - config.setBoolean(ConfigConstants.JOB_MANAGER_NEW_WEB_FRONTEND_KEY, true); + + File logDir = temporaryFolder.newFolder(); + Files.createFile(new File(logDir, "jobmanager.log").toPath()); + Files.createFile(new File(logDir, "jobmanager.out").toPath()); + config.setInteger(ConfigConstants.JOB_MANAGER_WEB_PORT_KEY, 0); + config.setString(ConfigConstants.JOB_MANAGER_WEB_LOG_PATH_KEY, logDir.getAbsolutePath()); for (int i = 0; i < jobManagerSystem.length; i++) { jobManagerSystem[i] = AkkaUtils.createActorSystem(new Configuration(), @@ -280,10 +288,13 @@ public class WebRuntimeMonitorITCase extends TestLogger { try (TestingServer zooKeeper = new TestingServer()) { + File logDir = temporaryFolder.newFolder(); + Files.createFile(new File(logDir, "jobmanager.log").toPath()); + Files.createFile(new File(logDir, "jobmanager.out").toPath()); + final Configuration config = new Configuration(); - config.setString(WebMonitorConfig.JOB_MANAGER_WEB_DOC_ROOT_KEY, MAIN_RESOURCES_PATH); - config.setBoolean(ConfigConstants.JOB_MANAGER_NEW_WEB_FRONTEND_KEY, true); config.setInteger(ConfigConstants.JOB_MANAGER_WEB_PORT_KEY, 0); + config.setString(ConfigConstants.JOB_MANAGER_WEB_LOG_PATH_KEY, logDir.getAbsolutePath()); config.setString(ConfigConstants.RECOVERY_MODE, "ZOOKEEPER"); config.setString(ConfigConstants.ZOOKEEPER_QUORUM_KEY, zooKeeper.getConnectString()); http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/web-dashboard/gulpfile.js ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/gulpfile.js b/flink-runtime-web/web-dashboard/gulpfile.js index 2abfcce..737519e 100644 --- a/flink-runtime-web/web-dashboard/gulpfile.js +++ b/flink-runtime-web/web-dashboard/gulpfile.js @@ -43,7 +43,7 @@ var path = require('path'); var environment = 'development'; var paths = { src: './app/', - dest: '../src/main/resources/web/', + dest: './web/', vendor: './bower_components/', vendorLocal: './vendor-local/', assets: './assets/', @@ -168,7 +168,7 @@ gulp.task('watch', function () { }); gulp.task('serve', serve({ - root: '../src/main/resources/web/', + root: 'web', port: 3001 })); http://git-wip-us.apache.org/repos/asf/flink/blob/a6890b28/flink-runtime-web/web-dashboard/web/css/index.css ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/css/index.css b/flink-runtime-web/web-dashboard/web/css/index.css new file mode 100644 index 0000000..43f7d98 --- /dev/null +++ b/flink-runtime-web/web-dashboard/web/css/index.css @@ -0,0 +1,596 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +#sidebar { + overflow: hidden; + position: fixed; + left: -250px; + top: 0; + bottom: 0; + height: 100%; + width: 250px; + background: #151515; + -webkit-transition: 400ms; + -moz-transition: 400ms; + -o-transition: 400ms; + -ms-transition: 400ms; + transition: 400ms; + -webkit-box-shadow: inset -10px 0px 10px rgba(0,0,0,0.2); + box-shadow: inset -10px 0px 10px rgba(0,0,0,0.2); +} +#sidebar.sidebar-visible { + left: 0; +} +#sidebar .logo { + width: auto; + height: 22px; +} +#sidebar .logo img { + display: inline-block; +} +#sidebar .navbar-static-top { + overflow: hidden; + height: 51px; +} +#sidebar .navbar-static-top .navbar-header { + width: 100%; +} +#sidebar .navbar-brand.navbar-brand-text { + font-size: 14px; + font-weight: bold; + color: #fff; + padding-left: 0; +} +#sidebar .nav > li > a { + color: #aaa; + margin-bottom: 1px; +} +#sidebar .nav > li > a:hover, +#sidebar .nav > li > a:focus { + background-color: rgba(40,40,40,0.5); +} +#sidebar .nav > li > a.active { + background-color: rgba(100,100,100,0.5); +} +#content { + background-color: #fff; + overflow: hidden; + margin-left: 0; + padding-top: 70px; + -webkit-transition: 400ms; + -moz-transition: 400ms; + -o-transition: 400ms; + -ms-transition: 400ms; + transition: 400ms; +} +#content .navbar-main, +#content .navbar-main-additional { + -webkit-transition: 400ms; + -moz-transition: 400ms; + -o-transition: 400ms; + -ms-transition: 400ms; + transition: 400ms; +} +#content .navbar-main-additional { + margin-top: 51px; + border-bottom: none; + padding: 0 20px; +} +#content .navbar-main-additional .nav-tabs { + margin: 0 -20px; + padding: 0 20px; +} +#content .navbar-secondary-additional { + border: none; + padding: 0 20px; + margin-bottom: 0; +} +#content .navbar-secondary-additional .nav-tabs { + margin: 0 -20px; +} +#content.sidebar-visible { + margin-left: 250px; +} +#content.sidebar-visible .navbar-main, +#content.sidebar-visible .navbar-main-additional { + left: 250px; +} +#content #fold-button { + display: inline-block; + margin-left: 20px; +} +#content #content-inner { + padding: 0px 20px 20px 20px; +} +#content #content-inner.has-navbar-main-additional { + padding-top: 42px; +} +.page-header { + margin: 0 0 20px 0; +} +.nav > li > a, +.nav > li > a:hover, +.nav > li > a:focus { + color: #aaa; + background-color: transparent; + border-bottom: 2px solid transparent; +} +.nav > li.active > a, +.nav > li.active > a:hover, +.nav > li.active > a:focus { + color: #000; + border-bottom: 2px solid #000; +} +.nav.nav-tabs { + margin-bottom: 20px; +} +.table .table { + background-color: transparent; +} +.table th { + font-weight: normal; + color: #999; +} +.table td.td-long { + width: 20%; + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; +} +.table.table-clickable tr { + cursor: pointer; +} +.table.table-inner { + background-color: transparent; +} +.table.table-properties { + table-layout: fixed; + white-space: nowrap; +} +.table.table-properties td { + width: 50%; + white-space: nowrap; + overflow: hidden; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; +} +.table.table-body-hover > tbody { + border-top: none; + border-left: 2px solid transparent; +} +.table.table-body-hover > tbody.active { + border-left: 2px solid #000; +} +.table.table-body-hover > tbody:hover td:not(.tab-column), +.table.table-body-hover > tbody.active td:not(.tab-column) { + background-color: #f0f0f0; +} +.table.table-body-hover > tbody:hover td.tab-column li.active, +.table.table-body-hover > tbody.active td.tab-column li.active { + background-color: #f0f0f0; +} +.table.table-activable th.tab-column, +.table.table-activable td.tab-column { + border-top: none; + width: 47px; +} +.table.table-activable td.tab-column { + border-right: 1px solid #ddd; +} +.table.table-activable td { + position: relative; +} +.table .small-label { + text-transform: uppercase; + font-size: 13px; + color: #999; +} +.panel.panel-dashboard .huge { + font-size: 28px; +} +.panel.panel-lg { + font-size: 16px; +} +.panel.panel-lg .badge { + font-size: 14px; +} +.navbar-secondary { + overflow: auto; +} +.navbar-main .navbar-title, +.navbar-secondary .navbar-title, +.navbar-main-additional .navbar-title, +.panel.panel-multi .navbar-title, +.navbar-secondary-additional .navbar-title, +.navbar-main .panel-title, +.navbar-secondary .panel-title, +.navbar-main-additional .panel-title, +.panel.panel-multi .panel-title, +.navbar-secondary-additional .panel-title { + float: left; + font-size: 18px; + padding: 12px 20px 13px 10px; + color: #333; + display: inline-block; +} +.navbar-main .navbar-info, +.navbar-secondary .navbar-info, +.navbar-main-additional .navbar-info, +.panel.panel-multi .navbar-info, +.navbar-secondary-additional .navbar-info, +.navbar-main .panel-info, +.navbar-secondary .panel-info, +.navbar-main-additional .panel-info, +.panel.panel-multi .panel-info, +.navbar-secondary-additional .panel-info { + float: left; + font-size: 14px; + padding: 15px 15px 15px 15px; + color: #999; + display: inline-block; + border-right: 1px solid #e7e7e7; + overflow: hidden; +} +.navbar-main .navbar-info .overflow, +.navbar-secondary .navbar-info .overflow, +.navbar-main-additional .navbar-info .overflow, +.panel.panel-multi .navbar-info .overflow, +.navbar-secondary-additional .navbar-info .overflow, +.navbar-main .panel-info .overflow, +.navbar-secondary .panel-info .overflow, +.navbar-main-additional .panel-info .overflow, +.panel.panel-multi .panel-info .overflow, +.navbar-secondary-additional .panel-info .overflow { + position: absolute; + display: block; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; + overflow: hidden; + height: 22px; + line-height: 22px; + vertical-align: middle; +} +.navbar-main .navbar-info.first, +.navbar-secondary .navbar-info.first, +.navbar-main-additional .navbar-info.first, +.panel.panel-multi .navbar-info.first, +.navbar-secondary-additional .navbar-info.first, +.navbar-main .panel-info.first, +.navbar-secondary .panel-info.first, +.navbar-main-additional .panel-info.first, +.panel.panel-multi .panel-info.first, +.navbar-secondary-additional .panel-info.first { + border-left: 1px solid #e7e7e7; +} +.navbar-main .navbar-info.last, +.navbar-secondary .navbar-info.last, +.navbar-main-additional .navbar-info.last, +.panel.panel-multi .navbar-info.last, +.navbar-secondary-additional .navbar-info.last, +.navbar-main .panel-info.last, +.navbar-secondary .panel-info.last, +.navbar-main-additional .panel-info.last, +.panel.panel-multi .panel-info.last, +.navbar-secondary-additional .panel-info.last { + border-right: none; +} +.panel.panel-multi .panel-heading { + padding: 0; +} +.panel.panel-multi .panel-heading .panel-info.thin { + padding: 8px 10px; +} +.panel.panel-multi .panel-body { + padding: 10px; + background-color: #fdfdfd; + color: #999; + font-size: 13px; +} +.panel.panel-multi .panel-body.clean { + color: inherit; + font-size: inherit; +} +.navbar-main-additional, +.navbar-secondary-additional { + min-height: 40px; + background-color: #fdfdfd; +} +.navbar-main-additional .navbar-info, +.navbar-secondary-additional .navbar-info { + font-size: 13px; + padding: 10px 15px 10px 15px; +} +.nav-top-affix.affix { + width: 100%; + top: 50px; + margin-left: -20px; + padding-left: 20px; + margin-right: -20px; + padding-right: 20px; + background-color: #fff; + z-index: 1; +} +.badge-default[href]:hover, +.badge-default[href]:focus { + background-color: #808080; +} +.badge-primary { + background-color: #428bca; +} +.badge-primary[href]:hover, +.badge-primary[href]:focus { + background-color: #3071a9; +} +.badge-success { + background-color: #5cb85c; +} +.badge-success[href]:hover, +.badge-success[href]:focus { + background-color: #449d44; +} +.badge-info { + background-color: #5bc0de; +} +.badge-info[href]:hover, +.badge-info[href]:focus { + background-color: #31b0d5; +} +.badge-warning { + background-color: #f0ad4e; +} +.badge-warning[href]:hover, +.badge-warning[href]:focus { + background-color: #ec971f; +} +.badge-danger { + background-color: #d9534f; +} +.badge-danger[href]:hover, +.badge-danger[href]:focus { + background-color: #c9302c; +} +.indicator { + display: inline-block; + margin-right: 15px; +} +.indicator.indicator-primary { + color: #428bca; +} +.indicator.indicator-success { + color: #5cb85c; +} +.indicator.indicator-info { + color: #5bc0de; +} +.indicator.indicator-warning { + color: #f0ad4e; +} +.indicator.indicator-danger { + color: #d9534f; +} +pre.exception { + border: none; + background-color: transparent; + padding: 0; + margin: 0; +} +.nav-tabs.tabs-vertical { + position: absolute; + left: 0; + top: 0; + border-bottom: none; + z-index: 100; +} +.nav-tabs.tabs-vertical li { + float: none; + margin-bottom: 0; + margin-right: -1px; +} +.nav-tabs.tabs-vertical li > a { + margin-right: 0; + -webkit-border-radius: 0; + border-radius: 0; + border-bottom: none; + border-left: 2px solid transparent; +} +.nav-tabs.tabs-vertical li > a:hover, +.nav-tabs.tabs-vertical li > a:focus { + border-bottom: none; + border-left: 2px solid #000; +} +.nav-tabs.tabs-vertical li.active > a { + border-bottom: none; + border-left: 2px solid #000; +} +.navbar-main .navbar-title, +.navbar-secondary .navbar-title, +.navbar-main-additional .navbar-title, +.navbar-secondary-additional .navbar-title { + padding: 12px 20px 13px 20px; +} +livechart { + width: 30%; + height: 30%; + text-align: center; +} +.canvas-wrapper { + border: 1px solid #ddd; + position: relative; + margin-bottom: 20px; +} +.canvas-wrapper .main-canvas { + height: 400px; + overflow: hidden; +} +.canvas-wrapper .main-canvas .zoom-buttons { + position: absolute; + top: 10px; + right: 10px; +} +.label-group .label { + display: inline-block; + width: 2em; + padding-left: 0.1em; + padding-right: 0.1em; + margin: 0; + border-right: 1px solid #fff; + -webkit-border-radius: 0; + border-radius: 0; +} +.label-group .label.label-black { + background-color: #000; +} +svg.graph { + overflow: hidden; +} +svg.graph g.type-TK > rect { + fill: #00ffd0; +} +svg.graph text { + font-weight: 300; + font-size: 14px; +} +svg.graph .node { + cursor: pointer; +} +svg.graph .node > rect { + stroke: #999; + stroke-width: 5px; + fill: #fff; + margin: 0; + padding: 0; +} +svg.graph .node[active] > rect { + fill: #eee; +} +svg.graph .node.node-mirror > rect { + stroke: #a8a8a8; +} +svg.graph .node.node-iteration > rect { + stroke: #cd3333; +} +svg.graph .node.node-source > rect { + stroke: #4ce199; +} +svg.graph .node.node-sink > rect { + stroke: #e6ec8b; +} +svg.graph .node.node-normal > rect { + stroke: #3fb6d8; +} +svg.graph .node h4 { + color: #000; +} +svg.graph .node h5 { + color: #999; +} +svg.graph .edgeLabel rect { + fill: #fff; +} +svg.graph .edgePath path { + stroke: #333; + stroke-width: 2px; + fill: #333; +} +svg.graph .label { + color: #777; + margin: 0; +} +svg.graph .edge-label { + font-size: 14px; +} +svg.graph .node-label { + display: block; + margin: 0; + text-decoration: none; +} +.timeline { + overflow: hidden; +} +.timeline-canvas { + overflow: hidden; + padding: 10px; +} +.timeline-canvas .bar-container { + overflow: hidden; +} +.timeline-canvas .timeline-insidelabel, +.timeline-canvas .timeline-series { + cursor: pointer; +} +.timeline-canvas.secondary .timeline-insidelabel, +.timeline-canvas.secondary .timeline-series { + cursor: auto; +} +.qtip-timeline-bar { + font-size: 14px; + line-height: 1.4; +} +@media (min-width: 1024px) and (max-width: 1279px) { + #sidebar { + left: 0; + width: 160px; + } + #sidebar .navbar-static-top .navbar-brand-text { + display: none; + } + #content { + margin-left: 160px; + } + #content #fold-button { + display: none; + } + #content .navbar-main, + #content .navbar-main-additional { + left: 160px; + } + .table td.td-long { + width: 20%; + } +} +@media (min-width: 1280px) { + #sidebar { + left: 0; + } + #content { + margin-left: 250px; + } + #content #fold-button { + display: none; + } + #content .navbar-main, + #content .navbar-main-additional { + left: 250px; + } + .table td.td-long { + width: 30%; + } +} +#total-mem { + background-color: #7cb5ec; +} +#heap-mem { + background-color: #434348; +} +#non-heap-mem { + background-color: #90ed7d; +} +a.show-pointer { + cursor: pointer; +}