summaryrefslogtreecommitdiff
path: root/app/controllers/projects/settings/operations_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/settings/operations_controller.rb')
-rw-r--r--app/controllers/projects/settings/operations_controller.rb29
1 files changed, 22 insertions, 7 deletions
diff --git a/app/controllers/projects/settings/operations_controller.rb b/app/controllers/projects/settings/operations_controller.rb
index c2292511e0f..d7a6f1b0139 100644
--- a/app/controllers/projects/settings/operations_controller.rb
+++ b/app/controllers/projects/settings/operations_controller.rb
@@ -6,13 +6,13 @@ module Projects
before_action :authorize_admin_operations!
before_action :authorize_read_prometheus_alerts!, only: [:reset_alerting_token]
- respond_to :json, only: [:reset_alerting_token]
+ before_action do
+ push_frontend_feature_flag(:pagerduty_webhook, project)
+ end
- helper_method :error_tracking_setting
+ respond_to :json, only: [:reset_alerting_token, :reset_pagerduty_token]
- def show
- render locals: { prometheus_service: prometheus_service }
- end
+ helper_method :error_tracking_setting
def update
result = ::Projects::Operations::UpdateService.new(project, current_user, update_params).execute
@@ -42,14 +42,29 @@ module Projects
end
end
+ def reset_pagerduty_token
+ result = ::Projects::Operations::UpdateService
+ .new(project, current_user, pagerduty_token_params)
+ .execute
+
+ if result[:status] == :success
+ pagerduty_token = project.incident_management_setting&.pagerduty_token
+ webhook_url = project_incidents_pagerduty_url(project, token: pagerduty_token)
+
+ render json: { pagerduty_webhook_url: webhook_url, pagerduty_token: pagerduty_token }
+ else
+ render json: {}, status: :unprocessable_entity
+ end
+ end
+
private
def alerting_params
{ alerting_setting_attributes: { regenerate_token: true } }
end
- def prometheus_service
- project.find_or_initialize_service(::PrometheusService.to_param)
+ def pagerduty_token_params
+ { incident_management_setting_attributes: { regenerate_token: true } }
end
def render_update_response(result)