uffizzi_core 2.2.24 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/clients/uffizzi_core/controller_client.rb +12 -0
- data/app/contexts/uffizzi_core/project/cluster_context.rb +13 -0
- data/app/controllers/uffizzi_core/api/cli/v1/projects/clusters/application_controller.rb +29 -0
- data/app/controllers/uffizzi_core/api/cli/v1/projects/clusters/ingresses_controller.rb +17 -0
- data/app/controllers/uffizzi_core/api/cli/v1/projects/clusters_controller.rb +30 -0
- data/app/errors/uffizzi_core/cluster_scale_error.rb +9 -0
- data/app/jobs/uffizzi_core/cluster/manage_scaling_down_job.rb +11 -0
- data/app/jobs/uffizzi_core/cluster/manage_scaling_up_job.rb +11 -0
- data/app/lib/uffizzi_core/concerns/models/cluster.rb +35 -1
- data/app/lib/uffizzi_core/rbac/user_access_service.rb +4 -0
- data/app/policies/uffizzi_core/api/cli/v1/projects/clusters/ingresses_policy.rb +9 -0
- data/app/policies/uffizzi_core/api/cli/v1/projects/clusters_policy.rb +8 -0
- data/app/serializers/uffizzi_core/controller/update_cluster/cluster_serializer.rb +14 -0
- data/app/services/uffizzi_core/cluster_service.rb +44 -0
- data/app/services/uffizzi_core/controller_service.rb +17 -0
- data/config/locales/en.yml +6 -0
- data/config/routes.rb +9 -1
- data/lib/uffizzi_core/version.rb +1 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 065d0c7c4ecaca71f48ed176e3a433a379908220e7923be4604165d2d6760fe7
|
4
|
+
data.tar.gz: e79876e64df2b71896f0a34e40a7c1caf06b788914171a40e35b5feda33674d2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1415234d2f29321aae904e5467a41108b44f5beb8291e6510a60dc58f72597a535e00a0a1a98d6208844717b7ca0b2c53fe6560a163983583a7ab60cc382d4dc
|
7
|
+
data.tar.gz: c1aea1bd41f011ad430ddd2c5af76d48518a2e4f099cb33615a4f81462a6cfee7777eeb80fef4607263cc403ed93580142db0166779002aa8272910da3d39f0d
|
@@ -78,6 +78,14 @@ class UffizziCore::ControllerClient
|
|
78
78
|
get("/namespaces/#{namespace}/cluster/#{name}")
|
79
79
|
end
|
80
80
|
|
81
|
+
def patch_cluster(name:, namespace:, body:)
|
82
|
+
patch("/namespaces/#{namespace}/cluster/#{name}", body)
|
83
|
+
end
|
84
|
+
|
85
|
+
def ingresses(namespace:)
|
86
|
+
get("/namespaces/#{namespace}/ingresses")
|
87
|
+
end
|
88
|
+
|
81
89
|
private
|
82
90
|
|
83
91
|
def get(url, params = {})
|
@@ -88,6 +96,10 @@ class UffizziCore::ControllerClient
|
|
88
96
|
make_request(:post, url, params)
|
89
97
|
end
|
90
98
|
|
99
|
+
def patch(url, params = {})
|
100
|
+
make_request(:patch, url, params)
|
101
|
+
end
|
102
|
+
|
91
103
|
def make_request(method, url, params)
|
92
104
|
response = connection.send(method, url, params)
|
93
105
|
body = response.body
|
@@ -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
|
@@ -30,6 +30,32 @@ class UffizziCore::Api::Cli::V1::Projects::ClustersController < UffizziCore::Api
|
|
30
30
|
respond_with cluster_form
|
31
31
|
end
|
32
32
|
|
33
|
+
def scale_down
|
34
|
+
if resource_cluster.deployed?
|
35
|
+
UffizziCore::ClusterService.scale_down!(resource_cluster)
|
36
|
+
return respond_with resource_cluster
|
37
|
+
end
|
38
|
+
|
39
|
+
return render_scale_error(I18n.t('cluster.already_asleep', name: resource_cluster.name)) if resource_cluster.scaled_down?
|
40
|
+
|
41
|
+
if resource_cluster.deploying_namespace? || resource_cluster.deploying?
|
42
|
+
render_scale_error(I18n.t('cluster.deploy_in_process', name: resource_cluster.name))
|
43
|
+
end
|
44
|
+
rescue AASM::InvalidTransition, UffizziCore::ClusterScaleError => e
|
45
|
+
render_scale_error(e.message)
|
46
|
+
end
|
47
|
+
|
48
|
+
def scale_up
|
49
|
+
if resource_cluster.scaled_down?
|
50
|
+
UffizziCore::ClusterService.scale_up!(resource_cluster)
|
51
|
+
return respond_with resource_cluster
|
52
|
+
end
|
53
|
+
|
54
|
+
return render_scale_error(I18n.t('cluster.already_awake', name: resource_cluster.name)) if resource_cluster.deployed?
|
55
|
+
rescue AASM::InvalidTransition, UffizziCore::ClusterScaleError => e
|
56
|
+
render_scale_error(e.message)
|
57
|
+
end
|
58
|
+
|
33
59
|
def show
|
34
60
|
respond_with resource_cluster
|
35
61
|
end
|
@@ -63,6 +89,10 @@ class UffizziCore::Api::Cli::V1::Projects::ClustersController < UffizziCore::Api
|
|
63
89
|
params.require(:cluster)
|
64
90
|
end
|
65
91
|
|
92
|
+
def render_scale_error(message)
|
93
|
+
render json: { errors: { state: [message] } }, status: :unprocessable_entity
|
94
|
+
end
|
95
|
+
|
66
96
|
def find_kubernetes_distribution(version)
|
67
97
|
return UffizziCore::KubernetesDistribution.default if version.blank?
|
68
98
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class UffizziCore::Cluster::ManageScalingDownJob < UffizziCore::ApplicationJob
|
4
|
+
sidekiq_options queue: :clusters, retry: Settings.default_job_retry_count
|
5
|
+
|
6
|
+
def perform(id)
|
7
|
+
cluster = UffizziCore::Cluster.find(id)
|
8
|
+
|
9
|
+
UffizziCore::ClusterService.manage_scale_down(cluster)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class UffizziCore::Cluster::ManageScalingUpJob < UffizziCore::ApplicationJob
|
4
|
+
sidekiq_options queue: :clusters, retry: Settings.default_job_retry_count
|
5
|
+
|
6
|
+
def perform(id, try = 1)
|
7
|
+
cluster = UffizziCore::Cluster.find(id)
|
8
|
+
|
9
|
+
UffizziCore::ClusterService.manage_scale_up(cluster, try)
|
10
|
+
end
|
11
|
+
end
|
@@ -6,6 +6,7 @@ module UffizziCore::Concerns::Models::Cluster
|
|
6
6
|
|
7
7
|
NAMESPACE_PREFIX = 'c'
|
8
8
|
|
9
|
+
# rubocop:disable Metrics/BlockLength
|
9
10
|
included do
|
10
11
|
include AASM
|
11
12
|
extend Enumerize
|
@@ -27,6 +28,10 @@ module UffizziCore::Concerns::Models::Cluster
|
|
27
28
|
state :failed_deploy_namespace
|
28
29
|
state :deploying
|
29
30
|
state :deployed
|
31
|
+
state :scaling_down
|
32
|
+
state :scaled_down
|
33
|
+
state :scaling_up
|
34
|
+
state :failed_scale_up
|
30
35
|
state :failed
|
31
36
|
state :disabled
|
32
37
|
|
@@ -42,12 +47,40 @@ module UffizziCore::Concerns::Models::Cluster
|
|
42
47
|
transitions from: [:deploying], to: :deployed
|
43
48
|
end
|
44
49
|
|
50
|
+
event :start_scaling_down do
|
51
|
+
transitions from: [:deployed], to: :scaling_down
|
52
|
+
end
|
53
|
+
|
54
|
+
event :scale_down do
|
55
|
+
transitions from: [:scaling_down], to: :scaled_down
|
56
|
+
end
|
57
|
+
|
58
|
+
event :start_scaling_up do
|
59
|
+
transitions from: [:scaled_down, :failed_scale_up], to: :scaling_up
|
60
|
+
end
|
61
|
+
|
62
|
+
event :scale_up do
|
63
|
+
transitions from: [:scaling_up], to: :deployed
|
64
|
+
end
|
65
|
+
|
66
|
+
event :fail_scale_up do
|
67
|
+
transitions from: [:scaling_up], to: :failed_scale_up
|
68
|
+
end
|
69
|
+
|
45
70
|
event :fail do
|
46
71
|
transitions from: [:deploying], to: :failed
|
47
72
|
end
|
48
73
|
|
49
74
|
event :disable, after: :after_disable do
|
50
|
-
transitions from: [
|
75
|
+
transitions from: [
|
76
|
+
:deploying_namespace,
|
77
|
+
:failed_deploy_namespace,
|
78
|
+
:deploying,
|
79
|
+
:deployed,
|
80
|
+
:scaling_down,
|
81
|
+
:scaled_down,
|
82
|
+
:failed,
|
83
|
+
], to: :disabled
|
51
84
|
end
|
52
85
|
end
|
53
86
|
|
@@ -59,4 +92,5 @@ module UffizziCore::Concerns::Models::Cluster
|
|
59
92
|
[NAMESPACE_PREFIX, id].join
|
60
93
|
end
|
61
94
|
end
|
95
|
+
# rubocop:enable Metrics/BlockLength
|
62
96
|
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
|
@@ -13,6 +13,14 @@ class UffizziCore::Api::Cli::V1::Projects::ClustersPolicy < UffizziCore::Applica
|
|
13
13
|
context.user_access_module.admin_or_developer_access_to_project?(context.user, context.project)
|
14
14
|
end
|
15
15
|
|
16
|
+
def scale_down?
|
17
|
+
context.user_access_module.admin_or_developer_access_to_project?(context.user, context.project)
|
18
|
+
end
|
19
|
+
|
20
|
+
def scale_up?
|
21
|
+
context.user_access_module.admin_or_developer_access_to_project?(context.user, context.project)
|
22
|
+
end
|
23
|
+
|
16
24
|
def destroy?
|
17
25
|
context.user_access_module.admin_or_developer_access_to_project?(context.user, context.project)
|
18
26
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class UffizziCore::Controller::UpdateCluster::ClusterSerializer < UffizziCore::BaseSerializer
|
4
|
+
include UffizziCore::DependencyInjectionConcern
|
5
|
+
include_module_if_exists('UffizziCore::Controller::UpdateCluster::ClusterSerializerModule')
|
6
|
+
|
7
|
+
attributes :name, :manifest, :base_ingress_host
|
8
|
+
|
9
|
+
def base_ingress_host
|
10
|
+
managed_dns_zone = controller_settings_service.vcluster(object).managed_dns_zone
|
11
|
+
|
12
|
+
[object.namespace, managed_dns_zone].join('.')
|
13
|
+
end
|
14
|
+
end
|
@@ -24,6 +24,32 @@ class UffizziCore::ClusterService
|
|
24
24
|
UffizziCore::Cluster::ManageDeployingJob.perform_in(5.seconds, cluster.id)
|
25
25
|
end
|
26
26
|
|
27
|
+
def scale_up!(cluster)
|
28
|
+
cluster.start_scaling_up!
|
29
|
+
UffizziCore::ControllerService.patch_cluster(cluster, sleep: false)
|
30
|
+
UffizziCore::Cluster::ManageScalingUpJob.perform_in(5.seconds, cluster.id)
|
31
|
+
end
|
32
|
+
|
33
|
+
def manage_scale_up(cluster, try)
|
34
|
+
return cluster.fail_scale_up! if try > Settings.vcluster.max_scale_up_retry_count
|
35
|
+
return cluster.scale_up! if ready?(cluster)
|
36
|
+
|
37
|
+
UffizziCore::Cluster::ManageScalingUpJob.perform_in(5.seconds, cluster.id, ++try)
|
38
|
+
end
|
39
|
+
|
40
|
+
def scale_down!(cluster)
|
41
|
+
cluster.start_scaling_down!
|
42
|
+
UffizziCore::ControllerService.patch_cluster(cluster, sleep: true)
|
43
|
+
|
44
|
+
UffizziCore::Cluster::ManageScalingDownJob.perform_in(5.seconds, cluster.id)
|
45
|
+
end
|
46
|
+
|
47
|
+
def manage_scale_down(cluster)
|
48
|
+
return cluster.scale_down! unless awake?(cluster)
|
49
|
+
|
50
|
+
UffizziCore::Cluster::ManageScalingDownJob.perform_in(5.seconds, cluster.id)
|
51
|
+
end
|
52
|
+
|
27
53
|
def manage_deploying(cluster, try)
|
28
54
|
return if cluster.disabled?
|
29
55
|
return cluster.fail! if try > Settings.vcluster.max_creation_retry_count
|
@@ -41,5 +67,23 @@ class UffizziCore::ClusterService
|
|
41
67
|
|
42
68
|
UffizziCore::Cluster::ManageDeployingJob.perform_in(5.seconds, cluster.id, ++try)
|
43
69
|
end
|
70
|
+
|
71
|
+
def filter_user_ingress_host(cluster, ingress_hosts)
|
72
|
+
ingress_hosts.reject { |h| h == cluster.host }
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def awake?(cluster)
|
78
|
+
data = UffizziCore::ControllerService.show_cluster(cluster)
|
79
|
+
|
80
|
+
!data.status.sleep
|
81
|
+
end
|
82
|
+
|
83
|
+
def ready?(cluster)
|
84
|
+
data = UffizziCore::ControllerService.show_cluster(cluster)
|
85
|
+
|
86
|
+
data.status.ready
|
87
|
+
end
|
44
88
|
end
|
45
89
|
end
|
@@ -110,6 +110,23 @@ class UffizziCore::ControllerService
|
|
110
110
|
controller_client(cluster).delete_cluster(namespace: cluster.namespace)
|
111
111
|
end
|
112
112
|
|
113
|
+
def patch_cluster(cluster, sleep:)
|
114
|
+
body = UffizziCore::Controller::UpdateCluster::ClusterSerializer.new(cluster).as_json
|
115
|
+
body[:sleep] = sleep
|
116
|
+
|
117
|
+
controller_client(cluster).patch_cluster(name: cluster.name, namespace: cluster.namespace, body: body)
|
118
|
+
end
|
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
|
+
|
113
130
|
private
|
114
131
|
|
115
132
|
def check_any_container_has_public_port(containers)
|
data/config/locales/en.yml
CHANGED
@@ -83,6 +83,12 @@ en:
|
|
83
83
|
deployment:
|
84
84
|
invalid_state: Preview with ID deployment-%{id} %{state}
|
85
85
|
already_exists: An active deployment already exists
|
86
|
+
|
87
|
+
cluster:
|
88
|
+
already_asleep: The cluster %{name} is already asleep.
|
89
|
+
already_awake: The cluster %{name} is already awake.
|
90
|
+
scaling_failed: Failed to %{action} cluster.
|
91
|
+
deploy_in_process: Please wait until the cluster %{name} is deployed.
|
86
92
|
|
87
93
|
session:
|
88
94
|
unsupported_login_type: This type of login is not supported
|
data/config/routes.rb
CHANGED
@@ -10,7 +10,15 @@ UffizziCore::Engine.routes.draw do
|
|
10
10
|
resources :projects, only: ['index', 'show', 'destroy'], param: :slug do
|
11
11
|
scope module: :projects do
|
12
12
|
resource :compose_file, only: ['show', 'create', 'destroy']
|
13
|
-
resources :clusters, only: [:index, :create, :show, :destroy], param: :name
|
13
|
+
resources :clusters, only: [:index, :create, :show, :destroy], param: :name do
|
14
|
+
member do
|
15
|
+
put :scale_down
|
16
|
+
put :scale_up
|
17
|
+
end
|
18
|
+
scope module: :clusters do
|
19
|
+
resources :ingresses, only: ['index']
|
20
|
+
end
|
21
|
+
end
|
14
22
|
resources :deployments, only: ['index', 'show', 'create', 'destroy', 'update'] do
|
15
23
|
post :deploy_containers, on: :member
|
16
24
|
scope module: :deployments do
|
data/lib/uffizzi_core/version.rb
CHANGED
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.
|
4
|
+
version: 2.3.0
|
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-
|
12
|
+
date: 2023-10-30 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
|
@@ -804,6 +807,7 @@ files:
|
|
804
807
|
- app/controllers/uffizzi_core/api/cli/v1/projects_controller.rb
|
805
808
|
- app/controllers/uffizzi_core/api/cli/v1/sessions_controller.rb
|
806
809
|
- app/controllers/uffizzi_core/application_controller.rb
|
810
|
+
- app/errors/uffizzi_core/cluster_scale_error.rb
|
807
811
|
- app/errors/uffizzi_core/compose_file/build_error.rb
|
808
812
|
- app/errors/uffizzi_core/compose_file/credential_error.rb
|
809
813
|
- app/errors/uffizzi_core/compose_file/parse_error.rb
|
@@ -841,6 +845,8 @@ files:
|
|
841
845
|
- app/jobs/uffizzi_core/cluster/delete_job.rb
|
842
846
|
- app/jobs/uffizzi_core/cluster/deploy_job.rb
|
843
847
|
- app/jobs/uffizzi_core/cluster/manage_deploying_job.rb
|
848
|
+
- app/jobs/uffizzi_core/cluster/manage_scaling_down_job.rb
|
849
|
+
- app/jobs/uffizzi_core/cluster/manage_scaling_up_job.rb
|
844
850
|
- app/jobs/uffizzi_core/config_file/apply_job.rb
|
845
851
|
- app/jobs/uffizzi_core/deployment/create_credential_job.rb
|
846
852
|
- app/jobs/uffizzi_core/deployment/create_credentials_job.rb
|
@@ -933,6 +939,7 @@ files:
|
|
933
939
|
- app/policies/uffizzi_core/api/cli/v1/accounts/credentials_policy.rb
|
934
940
|
- app/policies/uffizzi_core/api/cli/v1/accounts/projects_policy.rb
|
935
941
|
- app/policies/uffizzi_core/api/cli/v1/accounts_policy.rb
|
942
|
+
- app/policies/uffizzi_core/api/cli/v1/projects/clusters/ingresses_policy.rb
|
936
943
|
- app/policies/uffizzi_core/api/cli/v1/projects/clusters_policy.rb
|
937
944
|
- app/policies/uffizzi_core/api/cli/v1/projects/compose_files_policy.rb
|
938
945
|
- app/policies/uffizzi_core/api/cli/v1/projects/deployments/activity_items_policy.rb
|
@@ -1000,6 +1007,7 @@ files:
|
|
1000
1007
|
- app/serializers/uffizzi_core/controller/deploy_containers/container_serializer/container_host_volume_file_serializer.rb
|
1001
1008
|
- app/serializers/uffizzi_core/controller/deploy_containers/credential_serializer.rb
|
1002
1009
|
- app/serializers/uffizzi_core/controller/deploy_containers/host_volume_file_serializer.rb
|
1010
|
+
- app/serializers/uffizzi_core/controller/update_cluster/cluster_serializer.rb
|
1003
1011
|
- app/services/uffizzi_core/account_service.rb
|
1004
1012
|
- app/services/uffizzi_core/activity_item_service.rb
|
1005
1013
|
- app/services/uffizzi_core/ci_service.rb
|