diff --git a/app/jobs/projects/destroy_job.rb b/app/jobs/projects/destroy_job.rb index be415152..0a860125 100644 --- a/app/jobs/projects/destroy_job.rb +++ b/app/jobs/projects/destroy_job.rb @@ -1,10 +1,10 @@ class Projects::DestroyJob < ApplicationJob def perform(project) project.destroying! - kubeconfig = project.cluster.kubeconfig - kubectl = K8::Kubectl.new(kubeconfig) - - kubectl.call("delete namespace #{project.name}") + client = K8::Client.from_cluster(project.cluster) + if (namespace = client.get_namespaces.find { |n| n.metadata.name == project.name }).present? + client.delete_namespace(namespace.metadata.name) + end # Delete the github webhook for the project IF there are no more projects that refer to that repository unless Project.where(repository_url: project.repository_url).where.not(id: project.id).exists? @@ -15,7 +15,7 @@ class Projects::DestroyJob < ApplicationJob def remove_github_webhook(project) client = Github::Client.new(project) - client.remove_hook! + client.remove_webhook! rescue Octokit::NotFound # If the hook is not found, do nothing end diff --git a/app/models/project.rb b/app/models/project.rb index ae87020b..364c5663 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -53,6 +53,10 @@ class Project < ApplicationRecord broadcast_replace_to [ self, :status ], target: dom_id(self, :status), partial: "projects/status", locals: { project: self } end + after_destroy_commit do + broadcast_remove_to [ :projects, self.account ], target: dom_id(self, :index) + end + enum :status, { creating: 0, deployed: 1, diff --git a/app/models/service.rb b/app/models/service.rb index dfd91787..5a57b51a 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -39,7 +39,7 @@ class Service < ApplicationRecord unhealthy: 2, updated: 3 } - scope :running, -> { where(status: [:healthy, :unhealthy, :updated]) } + scope :running, -> { where(status: [ :healthy, :unhealthy, :updated ]) } has_one :cron_schedule, dependent: :destroy validates :cron_schedule, presence: true, if: :cron_job? diff --git a/app/services/github/client.rb b/app/services/github/client.rb index 3cc80f73..e12d0b8e 100644 --- a/app/services/github/client.rb +++ b/app/services/github/client.rb @@ -33,7 +33,7 @@ class Github::Client def remove_webhook! if webhook_exists? - client.remove_hook(project.repository_url, hook.id) + client.remove_hook(project.repository_url, webhook.id) end end diff --git a/app/views/projects/_index.html.erb b/app/views/projects/_index.html.erb index d3cc4006..207bed12 100644 --- a/app/views/projects/_index.html.erb +++ b/app/views/projects/_index.html.erb @@ -1,3 +1,5 @@ +<%= turbo_stream_from [:projects, current_account] %> +
@@ -21,7 +23,7 @@ <% projects.order(created_at: :desc).each do |project| %> - + diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.erb index a4ff0d2f..81dfc127 100644 --- a/app/views/projects/index.html.erb +++ b/app/views/projects/index.html.erb @@ -1,5 +1,4 @@ <%= content_for :title, "Projects" %> -<%= turbo_stream_from :projects %>
<%= link_to project.name, project_deployments_path(project), class: "text-inherit hover:underline" %>