uffizzi_core 2.2.25 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70847fae8bc28249be5879f8496e7436e05079077dc23ad53394d08676158be6
4
- data.tar.gz: 2ac3e45d651e069f5e11b69b022efa285c5f0c0f176fb5a17c0bc58c3d4dad88
3
+ metadata.gz: 3850d2cd7d36ca24933339885fe25fb104362e70a23c0b5145ab4711d8ce7ac9
4
+ data.tar.gz: 4872ba53b94906dc638b2a34875cd59876b074a8d815754b662320bf3119b87a
5
5
  SHA512:
6
- metadata.gz: c128f0afe2384d0763597a9bbc3977748282a454a7d6396680b6f6642f00aa3b6ea32ee0d6c1125846338fec29e8ec02a0bf135d16943a3a2f3ff1f7caf5e797
7
- data.tar.gz: 8a0877404587daa608bb636f6500c03578d711ab7cb8e58db97ed9cb663114374cef6f8a619f6dbc9a5c0c0ac3fe4478bf559f53df1c3b6f266d3820f7661f3c
6
+ metadata.gz: d54a01d42754e16b6d351aff2eb87a7dbcccd65344c3e61b3ff21f4a299755604aa330cfdfa7029038747b465c35d8694523e3f85c5f93763860565df76f0b9e
7
+ data.tar.gz: ad6654bb2bf294fa609ef61de08130ffba6071fcf600faad72c274093df1048f7adb16e53a49e552cbc94c5b3cf0b70ee40bf46188a66eda4518e57d693bb1db
@@ -82,6 +82,10 @@ class UffizziCore::ControllerClient
82
82
  patch("/namespaces/#{namespace}/cluster/#{name}", body)
83
83
  end
84
84
 
85
+ def ingresses(namespace:)
86
+ get("/namespaces/#{namespace}/ingresses")
87
+ end
88
+
85
89
  private
86
90
 
87
91
  def get(url, params = {})
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UffizziCore::Project::ClusterContext
4
+ attr_reader :user, :user_access_module, :project, :cluster, :params
5
+
6
+ def initialize(user, project, user_access_module, cluster, params)
7
+ @user = user
8
+ @user_access_module = user_access_module
9
+ @project = project
10
+ @cluster = cluster
11
+ @params = params
12
+ end
13
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UffizziCore::Api::Cli::V1::Projects::Clusters::ApplicationController < UffizziCore::Api::Cli::V1::Projects::ApplicationController
4
+ def resource_cluster
5
+ @resource_cluster ||= if request_by_admin? || valid_request_from_ci_workflow?
6
+ active_project_clusters.find_by!(name: params[:cluster_name])
7
+ else
8
+ active_project_clusters.deployed_by_user(current_user).find_by!(name: params[:cluster_name])
9
+ end
10
+ end
11
+
12
+ private
13
+
14
+ def active_project_clusters
15
+ @active_project_clusters ||= resource_project.clusters.enabled
16
+ end
17
+
18
+ def request_by_admin?
19
+ current_user.admin_access_to_project?(resource_project)
20
+ end
21
+
22
+ def valid_request_from_ci_workflow?
23
+ ci_module.valid_request_from_ci_workflow?(params)
24
+ end
25
+
26
+ def policy_context
27
+ UffizziCore::Project::ClusterContext.new(current_user, resource_project, user_access_module, resource_cluster, params)
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UffizziCore::Api::Cli::V1::Projects::Clusters::IngressesController <
4
+ UffizziCore::Api::Cli::V1::Projects::Clusters::ApplicationController
5
+ before_action :authorize_uffizzi_core_api_cli_v1_projects_clusters_ingresses
6
+
7
+ def index
8
+ hosts = UffizziCore::ControllerService.ingress_hosts(resource_cluster)
9
+ user_hosts = UffizziCore::ClusterService.filter_user_ingress_host(resource_cluster, hosts)
10
+
11
+ data = {
12
+ ingresses: user_hosts,
13
+ }
14
+
15
+ respond_with data
16
+ end
17
+ end
@@ -9,6 +9,7 @@ module UffizziCore::Concerns::Models::Deployment
9
9
  include UffizziCore::StateMachineConcern
10
10
  include UffizziCore::DeploymentRepo
11
11
  extend Enumerize
12
+ include UffizziCore::DependencyInjectionConcern
12
13
 
13
14
  self.table_name = UffizziCore.table_names[:deployments]
14
15
 
@@ -71,7 +72,8 @@ module UffizziCore::Concerns::Models::Deployment
71
72
  end
72
73
 
73
74
  def preview_url
74
- "#{subdomain}.#{Settings.app.managed_dns_zone}"
75
+ managed_dns_zone = controller_settings_service.deployment(self).managed_dns_zone
76
+ "#{subdomain}.#{managed_dns_zone}"
75
77
  end
76
78
 
77
79
  def namespace
@@ -21,5 +21,9 @@ module UffizziCore::Rbac::UserAccessService
21
21
  def any_access_to_project?(_user, _project)
22
22
  true
23
23
  end
24
+
25
+ def admin_access_to_project?(_user, _project)
26
+ true
27
+ end
24
28
  end
25
29
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UffizziCore::Api::Cli::V1::Projects::Clusters::IngressesPolicy < UffizziCore::ApplicationPolicy
4
+ def index?
5
+ return true if context.user_access_module.admin_access_to_project?(context.user, context.project)
6
+
7
+ context.cluster.deployed_by_id == context.user.id
8
+ end
9
+ end
@@ -68,6 +68,10 @@ class UffizziCore::ClusterService
68
68
  UffizziCore::Cluster::ManageDeployingJob.perform_in(5.seconds, cluster.id, ++try)
69
69
  end
70
70
 
71
+ def filter_user_ingress_host(cluster, ingress_hosts)
72
+ ingress_hosts.reject { |h| h == cluster.host }
73
+ end
74
+
71
75
  private
72
76
 
73
77
  def awake?(cluster)
@@ -117,6 +117,16 @@ class UffizziCore::ControllerService
117
117
  controller_client(cluster).patch_cluster(name: cluster.name, namespace: cluster.namespace, body: body)
118
118
  end
119
119
 
120
+ def ingress_hosts(cluster)
121
+ namespace = cluster.namespace
122
+
123
+ ingresses = controller_client(cluster).ingresses(namespace: namespace).result.items
124
+
125
+ ingresses.map do |ingress|
126
+ ingress.spec.rules.map(&:host)
127
+ end.flatten
128
+ end
129
+
120
130
  private
121
131
 
122
132
  def check_any_container_has_public_port(containers)
@@ -135,7 +145,7 @@ class UffizziCore::ControllerService
135
145
  def controller_client(deployable)
136
146
  settings = case deployable
137
147
  when UffizziCore::Deployment
138
- Settings.controller
148
+ controller_settings_service.deployment(deployable)
139
149
  when UffizziCore::Cluster
140
150
  controller_settings_service.vcluster(deployable)
141
151
  else
@@ -5,5 +5,11 @@ class UffizziCore::ControllerSettingsService
5
5
  def vcluster(_cluster)
6
6
  Settings.vcluster_controller
7
7
  end
8
+
9
+ def deployment(_cluster)
10
+ Settings.controller.deep_dup.tap do |s|
11
+ s.managed_dns_zone = Settings.app.managed_dns_zone
12
+ end
13
+ end
8
14
  end
9
15
  end
data/config/routes.rb CHANGED
@@ -15,6 +15,9 @@ UffizziCore::Engine.routes.draw do
15
15
  put :scale_down
16
16
  put :scale_up
17
17
  end
18
+ scope module: :clusters do
19
+ resources :ingresses, only: ['index']
20
+ end
18
21
  end
19
22
  resources :deployments, only: ['index', 'show', 'create', 'destroy', 'update'] do
20
23
  post :deploy_containers, on: :member
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UffizziCore
4
- VERSION = '2.2.25'
4
+ VERSION = '2.3.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uffizzi_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.25
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Thurman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-10-19 00:00:00.000000000 Z
12
+ date: 2023-11-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aasm
@@ -774,6 +774,7 @@ files:
774
774
  - app/clients/uffizzi_core/google_registry_client/request_result.rb
775
775
  - app/contexts/uffizzi_core/account_context.rb
776
776
  - app/contexts/uffizzi_core/base_context.rb
777
+ - app/contexts/uffizzi_core/project/cluster_context.rb
777
778
  - app/contexts/uffizzi_core/project_context.rb
778
779
  - app/contexts/uffizzi_core/webhooks_context.rb
779
780
  - app/controller_modules/uffizzi_core/api/cli/v1/projects/clusters_controller_module.rb
@@ -791,6 +792,8 @@ files:
791
792
  - app/controllers/uffizzi_core/api/cli/v1/ci/application_controller.rb
792
793
  - app/controllers/uffizzi_core/api/cli/v1/ci/sessions_controller.rb
793
794
  - app/controllers/uffizzi_core/api/cli/v1/projects/application_controller.rb
795
+ - app/controllers/uffizzi_core/api/cli/v1/projects/clusters/application_controller.rb
796
+ - app/controllers/uffizzi_core/api/cli/v1/projects/clusters/ingresses_controller.rb
794
797
  - app/controllers/uffizzi_core/api/cli/v1/projects/clusters_controller.rb
795
798
  - app/controllers/uffizzi_core/api/cli/v1/projects/compose_files_controller.rb
796
799
  - app/controllers/uffizzi_core/api/cli/v1/projects/deployments/activity_items_controller.rb
@@ -936,6 +939,7 @@ files:
936
939
  - app/policies/uffizzi_core/api/cli/v1/accounts/credentials_policy.rb
937
940
  - app/policies/uffizzi_core/api/cli/v1/accounts/projects_policy.rb
938
941
  - app/policies/uffizzi_core/api/cli/v1/accounts_policy.rb
942
+ - app/policies/uffizzi_core/api/cli/v1/projects/clusters/ingresses_policy.rb
939
943
  - app/policies/uffizzi_core/api/cli/v1/projects/clusters_policy.rb
940
944
  - app/policies/uffizzi_core/api/cli/v1/projects/compose_files_policy.rb
941
945
  - app/policies/uffizzi_core/api/cli/v1/projects/deployments/activity_items_policy.rb