f8234d9a08
- Creates new route - Creates new controller action - Creates call stack: Clusterss::ApplciationsController calls --> Clusters::Applications::UpdateService calls --> Clusters::Applications::ScheduleUpdateService calls --> ClusterUpdateAppWorker calls --> Clusters::Applications::PatchService --> ClusterWaitForAppInstallationWorker DRY req params Adds gcp_cluster:cluster_update_app queue Schedule_update_service is uneeded Extract common logic to a parent class (UpdateService will need it) Introduce new UpdateService Fix rescue class namespace Fix RuboCop offenses Adds BaseService for create and update services Remove request_handler code duplication Fixes update command Move update_command to ApplicationCore so all apps can use it Adds tests for Knative update_command Adds specs for PatchService Raise error if update receives an unistalled app Adds update_service spec Fix RuboCop offense Use subject in favor of go Adds update endpoint specs for project namespace Adds update endpoint specs for group namespace
43 lines
1,002 B
Ruby
43 lines
1,002 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Clusters::ApplicationsController < Clusters::BaseController
|
|
before_action :cluster
|
|
before_action :authorize_create_cluster!, only: [:create]
|
|
before_action :authorize_update_cluster!, only: [:update]
|
|
|
|
def create
|
|
request_handler do
|
|
Clusters::Applications::CreateService
|
|
.new(@cluster, current_user, cluster_application_params)
|
|
.execute(request)
|
|
end
|
|
end
|
|
|
|
def update
|
|
request_handler do
|
|
Clusters::Applications::UpdateService
|
|
.new(@cluster, current_user, cluster_application_params)
|
|
.execute(request)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def request_handler
|
|
yield
|
|
|
|
head :no_content
|
|
rescue Clusters::Applications::BaseService::InvalidApplicationError
|
|
render_404
|
|
rescue StandardError
|
|
head :bad_request
|
|
end
|
|
|
|
def cluster
|
|
@cluster ||= clusterable.clusters.find(params[:id]) || render_404
|
|
end
|
|
|
|
def cluster_application_params
|
|
params.permit(:application, :hostname, :email)
|
|
end
|
|
end
|