You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/05/19 10:04:38 UTC
[11/37] kylin git commit: Support dropping jobs.
Support dropping jobs.
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ca106b82
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ca106b82
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ca106b82
Branch: refs/heads/master
Commit: ca106b824f50613385c98f8276bcbfaa04cb6cde
Parents: 8a4b6b9
Author: nichunen <ch...@kyligence.io>
Authored: Wed May 3 15:30:34 2017 +0800
Committer: hongbin ma <ma...@kyligence.io>
Committed: Thu May 4 22:32:55 2017 +0800
----------------------------------------------------------------------
.../kylin/rest/controller/JobController.java | 23 +++++++++++++++
.../apache/kylin/rest/service/JobService.java | 6 ++++
webapp/app/js/controllers/job.js | 30 ++++++++++++++++++++
webapp/app/js/model/jobListModel.js | 1 +
webapp/app/js/services/jobs.js | 3 +-
webapp/app/partials/jobs/jobList.html | 4 +++
6 files changed, 66 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
index 6dc7887..7b1de37 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/JobController.java
@@ -28,7 +28,9 @@ import java.util.Map;
import org.apache.kylin.job.JobInstance;
import org.apache.kylin.job.constant.JobStatusEnum;
import org.apache.kylin.job.constant.JobTimeFilterEnum;
+import org.apache.kylin.job.exception.JobException;
import org.apache.kylin.rest.exception.InternalErrorException;
+import org.apache.kylin.rest.exception.NotFoundException;
import org.apache.kylin.rest.request.JobListRequest;
import org.apache.kylin.rest.service.JobService;
import org.slf4j.Logger;
@@ -194,6 +196,27 @@ public class JobController extends BasicController {
}
}
+ /**
+ * Drop a cube job
+ *
+ * @return
+ * @throws IOException
+ */
+ @RequestMapping(value = "/{jobId}/drop", method = { RequestMethod.DELETE })
+ @ResponseBody
+ public JobInstance dropJob(@PathVariable String jobId) {
+ JobInstance jobInstance = null;
+ try {
+ jobInstance = jobService.getJobInstance(jobId);
+ jobService.dropJob(jobInstance);
+ } catch (Exception e) {
+ logger.error(e.getLocalizedMessage(), e);
+ throw new InternalErrorException(e);
+ }
+
+ return jobInstance;
+ }
+
public void setJobService(JobService jobService) {
this.jobService = jobService;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
index 4ba426e..56a148d 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
@@ -321,6 +321,12 @@ public class JobService extends BasicService implements InitializingBean {
return job;
}
+ @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#job, 'ADMINISTRATION') or hasPermission(#job, 'OPERATION') or hasPermission(#job, 'MANAGEMENT')")
+ public void dropJob(JobInstance job) throws IOException, JobException {
+ cancelJob(job);
+ getExecutableManager().deleteJob(job.getId());
+ }
+
/**
* currently only support substring match
* @return
http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/webapp/app/js/controllers/job.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/job.js b/webapp/app/js/controllers/job.js
index e6aba7e..abb3bed 100644
--- a/webapp/app/js/controllers/job.js
+++ b/webapp/app/js/controllers/job.js
@@ -215,6 +215,36 @@ KylinApp
});
}
+ $scope.drop = function (job) {
+ SweetAlert.swal({
+ title: '',
+ text: 'Are you sure to drop the job?',
+ type: '',
+ showCancelButton: true,
+ confirmButtonColor: '#DD6B55',
+ confirmButtonText: "Yes",
+ closeOnConfirm: true
+ }, function(isConfirm) {
+ if(isConfirm) {
+ loadingRequest.show();
+ JobService.drop({jobId: job.uuid}, {}, function (job) {
+ loadingRequest.hide();
+ SweetAlert.swal('Success!', 'Job has been dropped successfully!', 'success');
+ $scope.jobList.jobs[job.uuid].dropped = true;
+ },function(e){
+ loadingRequest.hide();
+ if(e.data&& e.data.exception){
+ var message =e.data.exception;
+ var msg = !!(message) ? message : 'Failed to take action.';
+ SweetAlert.swal('Oops...', msg, 'error');
+ }else{
+ SweetAlert.swal('Oops...', "Failed to take action.", 'error');
+ }
+ });
+ }
+ });
+ }
+
$scope.diagnosisJob =function(job) {
if (!job){
SweetAlert.swal('', "No job selected.", 'info');
http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/webapp/app/js/model/jobListModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/jobListModel.js b/webapp/app/js/model/jobListModel.js
index da35309..ee75d2f 100755
--- a/webapp/app/js/model/jobListModel.js
+++ b/webapp/app/js/model/jobListModel.js
@@ -38,6 +38,7 @@ KylinApp.service('JobList',function(JobService,$q){
} else {
_this.jobs[id] = job;
}
+ _this.jobs[id].dropped = false;
});
defer.resolve(jobs.length);
http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/webapp/app/js/services/jobs.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/services/jobs.js b/webapp/app/js/services/jobs.js
index 3619fbc..337126a 100644
--- a/webapp/app/js/services/jobs.js
+++ b/webapp/app/js/services/jobs.js
@@ -23,6 +23,7 @@ KylinApp.factory('JobService', ['$resource', function ($resource, config) {
stepOutput: {method: 'GET', params: {propName: 'steps', action: 'output'}, isArray: false},
resume: {method: 'PUT', params: {action: 'resume'}, isArray: false},
cancel: {method: 'PUT', params: {action: 'cancel'}, isArray: false},
- pause: {method: 'PUT', params: {action: 'pause'}, isArray: false}
+ pause: {method: 'PUT', params: {action: 'pause'}, isArray: false},
+ drop: {method: 'DELETE', params: {action: 'drop'}, isArray: false}
});
}]);
http://git-wip-us.apache.org/repos/asf/kylin/blob/ca106b82/webapp/app/partials/jobs/jobList.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/jobs/jobList.html b/webapp/app/partials/jobs/jobList.html
index 4d65ac1..0e45522 100644
--- a/webapp/app/partials/jobs/jobList.html
+++ b/webapp/app/partials/jobs/jobList.html
@@ -84,6 +84,7 @@
<tbody class="odd table table-striped table-bordered table-hover dataTable no-footer">
<tr
ng-repeat="(uuid,job) in jobList.jobs | orderObjectBy:state.filterAttr:state.filterReverse"
+ ng-if="!job.dropped"
ng-class="{accordion:true}" ng-click="state.selectedJob = job"
ng-dblclick="state.showSteps= !state.showSteps; state.selectedJob = job"
style="cursor: pointer"
@@ -142,6 +143,9 @@
<li ng-if="job.job_status=='RUNNING' || job.job_status=='NEW' || job.job_status=='PENDING' || job.job_status=='ERROR' || job.job_status=='STOPPED'">
<a ng-click="cancel(job)">Discard</a>
</li>
+ <li ng-if="job.job_status=='FINISHED' || job.job_status=='DISCARDED' || job.job_status=='ERROR' || job.job_status=='STOPPED'">
+ <a ng-click="drop(job)">Drop</a>
+ </li>
<li>
<a ng-click="diagnosisJob(job)" tooltip="Download Diagnosis Info For This Job">Diagnosis</a>
</li>