Add ability for triggers to be disabled
Will be used in the followup commit to automatically disable broken triggers
This commit is contained in:
parent
1e54a4d9e9
commit
c35eec0615
18 changed files with 358 additions and 37 deletions
|
@ -13,4 +13,22 @@
|
|||
|
||||
.repo-panel-builds .heading-controls {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.repo-panel-builds .trigger-disabled {
|
||||
background-color: #fcfcfc;
|
||||
}
|
||||
|
||||
.repo-panel-builds .trigger-disabled td {
|
||||
border-bottom: 0px;
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.repo-panel-builds .trigger-disabled-message {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.repo-panel-builds i.fa-exclamation-triangle {
|
||||
color: #f5c77d;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
|
|
@ -137,31 +137,45 @@
|
|||
<a ng-click="deleteTrigger(trigger)">Delete Trigger</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr ng-repeat="trigger in triggers | filter:{'is_active':true}">
|
||||
<td><trigger-description trigger="trigger"></trigger-description></td>
|
||||
<td>{{ trigger.config.dockerfile_path || '/Dockerfile' }}</td>
|
||||
<td>{{ trigger.config.context || '/' }}</td>
|
||||
<td>{{ trigger.config.branchtag_regex || 'All' }}</td>
|
||||
<td>
|
||||
<span class="entity-reference" entity="trigger.pull_robot" ng-if="trigger.pull_robot"></span>
|
||||
<span class="empty" ng-if="!trigger.pull_robot">(None)</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="cor-options-menu">
|
||||
<span ng-if="trigger.config.credentials" class="cor-option" option-click="showTriggerCredentialsModal(trigger)">
|
||||
<i class="fa fa-unlock-alt"></i> View Credentials
|
||||
|
||||
<tbody ng-repeat="trigger in triggers | filter:{'is_active':true}">
|
||||
<tr ng-class="{'trigger-disabled': !trigger.enabled}">
|
||||
<td><trigger-description trigger="trigger"></trigger-description></td>
|
||||
<td>{{ trigger.config.dockerfile_path || '/Dockerfile' }}</td>
|
||||
<td>{{ trigger.config.context || '/' }}</td>
|
||||
<td>{{ trigger.config.branchtag_regex || 'All' }}</td>
|
||||
<td>
|
||||
<span class="entity-reference" entity="trigger.pull_robot" ng-if="trigger.pull_robot"></span>
|
||||
<span class="empty" ng-if="!trigger.pull_robot">(None)</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="cor-options-menu">
|
||||
<span ng-if="trigger.config.credentials" class="cor-option" option-click="showTriggerCredentialsModal(trigger)">
|
||||
<i class="fa fa-unlock-alt"></i> View Credentials
|
||||
</span>
|
||||
<span class="cor-option" option-click="askRunTrigger(trigger)"
|
||||
ng-class="trigger.can_invoke && trigger.enabled ? '' : 'disabled'">
|
||||
<i class="fa fa-chevron-right"></i> Run Trigger Now
|
||||
</span>
|
||||
<span class="cor-option" option-click="askToggleTrigger(trigger)">
|
||||
<i class="fa fa-adjust"></i>
|
||||
<span ng-if="trigger.enabled">Disable Trigger</span>
|
||||
<span ng-if="!trigger.enabled">Enable Trigger</span>
|
||||
</span>
|
||||
<span class="cor-option" option-click="askDeleteTrigger(trigger)">
|
||||
<i class="fa fa-times"></i> Delete Trigger
|
||||
</span>
|
||||
</span>
|
||||
<span class="cor-option" option-click="askRunTrigger(trigger)"
|
||||
ng-class="trigger.can_invoke ? '' : 'disabled'">
|
||||
<i class="fa fa-chevron-right"></i> Run Trigger Now
|
||||
</span>
|
||||
<span class="cor-option" option-click="askDeleteTrigger(trigger)">
|
||||
<i class="fa fa-times"></i> Delete Trigger
|
||||
</span>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="trigger-disabled-message" ng-if="!trigger.enabled">
|
||||
<td colspan="5" style="text-align: center">
|
||||
<i class="fa fa-exclamation-triangle"></i>
|
||||
This build trigger is currently disabled and will not build:
|
||||
<a ng-click="askToggleTrigger(trigger)">Re-enable this trigger</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
@ -174,7 +188,16 @@
|
|||
<!-- Trigger Credentials dialog -->
|
||||
<div class="trigger-credentials-dialog" trigger="triggerCredentialsModalTrigger" counter="triggerCredentialsModalCounter"></div>
|
||||
|
||||
<!-- Delete Tag Confirm -->
|
||||
<!-- Toggle Trigger Confirm -->
|
||||
<div class="cor-confirm-dialog"
|
||||
dialog-context="toggleTriggerInfo"
|
||||
dialog-action="toggleTrigger(info.trigger, callback)"
|
||||
dialog-title="Toggle Trigger"
|
||||
dialog-action-title="Toggle Trigger">
|
||||
Are you sure you want to <span ng-if="toggleTriggerInfo.trigger.enabled">disable</span><span ng-if="!toggleTriggerInfo.trigger.enabled">enable</span> this trigger?
|
||||
</div>
|
||||
|
||||
<!-- Delete Trigger Confirm -->
|
||||
<div class="cor-confirm-dialog"
|
||||
dialog-context="deleteTriggerInfo"
|
||||
dialog-action="deleteTrigger(info.trigger, callback)"
|
||||
|
|
|
@ -187,6 +187,10 @@ angular.module('quay').directive('repoPanelBuilds', function () {
|
|||
};
|
||||
|
||||
$scope.askRunTrigger = function(trigger) {
|
||||
if (!trigger.enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!trigger.can_invoke) {
|
||||
bootbox.alert('You do not have permission to manually invoke this trigger');
|
||||
return;
|
||||
|
@ -196,6 +200,40 @@ angular.module('quay').directive('repoPanelBuilds', function () {
|
|||
$scope.showTriggerStartDialogCounter++;
|
||||
};
|
||||
|
||||
$scope.askToggleTrigger = function(trigger) {
|
||||
if (!trigger.can_invoke) {
|
||||
bootbox.alert('You do not have permission to edit this trigger');
|
||||
return;
|
||||
}
|
||||
|
||||
$scope.toggleTriggerInfo = {
|
||||
'trigger': trigger
|
||||
};
|
||||
};
|
||||
|
||||
$scope.toggleTrigger = function(trigger, opt_callback) {
|
||||
if (!trigger) { return; }
|
||||
|
||||
var params = {
|
||||
'repository': $scope.repository.namespace + '/' + $scope.repository.name,
|
||||
'trigger_uuid': trigger.id
|
||||
};
|
||||
|
||||
var data = {
|
||||
'enabled': !trigger.enabled
|
||||
};
|
||||
|
||||
var errorHandler = ApiService.errorDisplay('Could not toggle build trigger', function() {
|
||||
opt_callback && opt_callback(false);
|
||||
});
|
||||
|
||||
ApiService.updateBuildTrigger(data, params).then(function(resp) {
|
||||
trigger.enabled = !trigger.enabled;
|
||||
trigger.disabled_reason = 'user_toggled';
|
||||
opt_callback && opt_callback(true);
|
||||
}, errorHandler);
|
||||
};
|
||||
|
||||
$scope.deleteTrigger = function(trigger, opt_callback) {
|
||||
if (!trigger) { return; }
|
||||
|
||||
|
|
|
@ -223,6 +223,15 @@ angular.module('quay').directive('logsView', function () {
|
|||
metadata['service'], metadata['config']);
|
||||
return 'Delete build trigger - ' + triggerDescription;
|
||||
},
|
||||
'toggle_repo_trigger': function(metadata) {
|
||||
var triggerDescription = TriggerService.getDescription(
|
||||
metadata['service'], metadata['config']);
|
||||
if (metadata.enabled) {
|
||||
return 'Build trigger enabled - ' + triggerDescription;
|
||||
} else {
|
||||
return 'Build trigger disabled - ' + triggerDescription;
|
||||
}
|
||||
},
|
||||
'create_application': 'Create application {application_name} with client ID {client_id}',
|
||||
'update_application': 'Update application to {application_name} for client ID {client_id}',
|
||||
'delete_application': 'Delete application {application_name} with client ID {client_id}',
|
||||
|
@ -330,6 +339,7 @@ angular.module('quay').directive('logsView', function () {
|
|||
'delete_prototype_permission': 'Delete default permission',
|
||||
'setup_repo_trigger': 'Setup build trigger',
|
||||
'delete_repo_trigger': 'Delete build trigger',
|
||||
'toggle_repo_trigger': 'Enable/disable build trigger',
|
||||
'create_application': 'Create Application',
|
||||
'update_application': 'Update Application',
|
||||
'delete_application': 'Delete Application',
|
||||
|
|
Reference in a new issue