uffizzi_core 2.2.9 → 2.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a52f42bacbdff043bd159262bcf9e1be15e311be071c06ec724acaec8a685ac4
4
- data.tar.gz: 74c425b3eaad9ced453430a6c4799865343e0d5c03c88421a5eede1829e2213b
3
+ metadata.gz: 69a82783f7a27772ccc8463248c092baa337c91359746d13300b0399e282e7ce
4
+ data.tar.gz: 0af9485af9df35f0ac7b3e253ec7463cc0b1d7c0303eca45bb341310b80e7d85
5
5
  SHA512:
6
- metadata.gz: f6afcb69bb62680618cef5d489b195725da5eaa93e098658274142e27c9ea5d9d6d6b5936c6c7bc393b2d47c7278d3c4d5a785ab2af5646f0cdea864ceffaa65
7
- data.tar.gz: 437d441bc3b847037a1efc3920031b5e56636c85d8847f3b7ad6991afaafde64f1d2863c01edb607dba4563ea6f1ee097685c2ba0a496e5c8783a9ae7ad20968
6
+ metadata.gz: cca634776180b812c88a671ac5267019d067d713a41b1445381355e4f8ebc3b9aa14a52820e304682e8c33c75977b2ea10849e353edaf4d2232429576e574045
7
+ data.tar.gz: ff7118194e445877ca4d8d8d42ef2844977a40e60f91ee51ad181e8f0c5bb3a139d666adecb78acdcbb64e10b628ad7a9cdd846ea9af9ef2d83dd9f4e30d2c2a
@@ -73,6 +73,12 @@ module UffizziCore::DependencyInjectionConcern
73
73
  module_class(:controller_settings)
74
74
  end
75
75
 
76
+ def ci_module
77
+ return unless module_exists?(:ci_module)
78
+
79
+ module_class(:ci_module)
80
+ end
81
+
76
82
  private
77
83
 
78
84
  def module_exists?(module_name)
@@ -9,8 +9,9 @@ class UffizziCore::Api::Cli::V1::Projects::ClustersController < UffizziCore::Api
9
9
 
10
10
  def index
11
11
  clusters = resource_project.clusters.enabled
12
+ return respond_with clusters if request_by_admin? || valid_request_from_ci_workflow?
12
13
 
13
- respond_with clusters
14
+ respond_with clusters.deployed_by_user(current_user)
14
15
  end
15
16
 
16
17
  def create
@@ -37,7 +38,20 @@ class UffizziCore::Api::Cli::V1::Projects::ClustersController < UffizziCore::Api
37
38
  private
38
39
 
39
40
  def resource_cluster
40
- @resource_cluster ||= resource_project.clusters.enabled.find_by!(name: params[:name])
41
+ active_project_clusters = resource_project.clusters.enabled
42
+ @resource_cluster ||= if request_by_admin? || valid_request_from_ci_workflow?
43
+ active_project_clusters.find_by!(name: params[:name])
44
+ else
45
+ active_project_clusters.deployed_by_user(current_user).find_by!(name: params[:name])
46
+ end
47
+ end
48
+
49
+ def request_by_admin?
50
+ current_user.admin_access_to_project?(resource_project)
51
+ end
52
+
53
+ def valid_request_from_ci_workflow?
54
+ ci_module.valid_request_from_ci_workflow?(params)
41
55
  end
42
56
 
43
57
  def cluster_params
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class UffizziCore::Cluster::DeleteJob < UffizziCore::ApplicationJob
4
- sidekiq_options queue: :deployments, retry: 5
4
+ sidekiq_options queue: :clusters,
5
+ lock: :until_executed,
6
+ retry: Settings.default_job_retry_count
5
7
 
6
8
  def perform(id)
7
9
  Rails.logger.info("DEPLOYMENT_PROCESS cluster_id=#{id} DeleteJob")
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class UffizziCore::Cluster::DeployJob < UffizziCore::ApplicationJob
4
- sidekiq_options queue: :deployments, retry: 5
4
+ sidekiq_options queue: :clusters, retry: Settings.default_job_retry_count
5
5
 
6
6
  def perform(id)
7
7
  cluster = UffizziCore::Cluster.find(id)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class UffizziCore::Cluster::ManageDeployingJob < UffizziCore::ApplicationJob
4
- sidekiq_options queue: :deployments, retry: 5
4
+ sidekiq_options queue: :clusters, retry: Settings.default_job_retry_count
5
5
 
6
6
  def perform(id, try = 1)
7
7
  cluster = UffizziCore::Cluster.find(id)
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class UffizziCore::Deployment::DeleteJob < UffizziCore::ApplicationJob
4
- sidekiq_options queue: :deployments, retry: 5
4
+ sidekiq_options queue: :disable_deployments,
5
+ lock: :until_executed,
6
+ retry: Settings.default_job_retry_count
5
7
 
6
8
  def perform(id)
7
9
  Rails.logger.info("DEPLOYMENT_PROCESS deployment_id=#{id} DeleteJob")
@@ -61,7 +61,7 @@ module UffizziCore::Concerns::Models::Container
61
61
  transitions from: [:disabled], to: :active
62
62
  end
63
63
 
64
- event :disable, after: :clean do
64
+ event :disable do
65
65
  transitions from: [:active], to: :disabled
66
66
  end
67
67
  end
@@ -76,10 +76,6 @@ module UffizziCore::Concerns::Models::Container
76
76
  public && active?
77
77
  end
78
78
 
79
- def clean
80
- update(public: false, port: nil)
81
- end
82
-
83
79
  def set_defaults
84
80
  update_target_port_value
85
81
  end
@@ -53,7 +53,7 @@ module UffizziCore::Concerns::Models::User
53
53
  end
54
54
 
55
55
  def admin_access_to_project?(project)
56
- projects.by_ids(project).by_accounts(memberships.by_role_admin.select(:account_id)).exists?
56
+ project.user_projects.where(user_id: id, role: UffizziCore::UserProject.role.admin).exists?
57
57
  end
58
58
  end
59
59
  end
@@ -6,5 +6,6 @@ module UffizziCore::ClusterRepo
6
6
  included do
7
7
  scope :deployed, -> { where(state: UffizziCore::Cluster::STATE_DEPLOYED) }
8
8
  scope :enabled, -> { where.not(state: UffizziCore::Cluster::STATE_DISABLED) }
9
+ scope :deployed_by_user, ->(user) { where(deployed_by: user) }
9
10
  end
10
11
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UffizziCore::CiService
4
+ class << self
5
+ def valid_request_from_ci_workflow?(_params)
6
+ false
7
+ end
8
+ end
9
+ end
@@ -1,6 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class UffizziCore::ControllerService
4
+ class InvalidPublicPort < StandardError
5
+ def initialize(containers)
6
+ msg = "Deployment with ID #{containers.first.deployment.id} does not have any public port"
7
+
8
+ super(msg)
9
+ end
10
+ end
11
+
4
12
  class << self
5
13
  include UffizziCore::DependencyInjectionConcern
6
14
 
@@ -28,6 +36,10 @@ class UffizziCore::ControllerService
28
36
  end
29
37
 
30
38
  def deploy_containers(deployment, containers)
39
+ check_any_container_has_public_port(containers) do |exists|
40
+ UffizziCore::DeploymentService.disable!(deployment) unless exists
41
+ end
42
+
31
43
  containers = containers.map do |container|
32
44
  UffizziCore::Controller::DeployContainers::ContainerSerializer.new(container).as_json(include: '**')
33
45
  end
@@ -100,6 +112,15 @@ class UffizziCore::ControllerService
100
112
 
101
113
  private
102
114
 
115
+ def check_any_container_has_public_port(containers)
116
+ exists = containers.any? { |c| c.port.present? && c.public }
117
+ yield(exists) if block_given?
118
+
119
+ return if exists
120
+
121
+ raise InvalidPublicPort.new(containers)
122
+ end
123
+
103
124
  def request_events(deployment)
104
125
  controller_client(deployment).deployment_containers_events(deployment_id: deployment.id)
105
126
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UffizziCore
4
- VERSION = '2.2.9'
4
+ VERSION = '2.2.11'
5
5
  end
data/lib/uffizzi_core.rb CHANGED
@@ -33,6 +33,7 @@ module UffizziCore
33
33
  deployment_memory_module: 'UffizziCore::Deployment::MemoryService',
34
34
  template_memory_module: 'UffizziCore::Template::MemoryService',
35
35
  controller_settings: 'UffizziCore::ControllerSettingsService',
36
+ ci_module: 'UffizziCore::CiService',
36
37
  }
37
38
  mattr_accessor :table_names, default: {
38
39
  accounts: :uffizzi_core_accounts,
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.9
4
+ version: 2.2.11
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-08-07 00:00:00.000000000 Z
12
+ date: 2023-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aasm
@@ -423,6 +423,20 @@ dependencies:
423
423
  - - ">="
424
424
  - !ruby/object:Gem::Version
425
425
  version: '0'
426
+ - !ruby/object:Gem::Dependency
427
+ name: sidekiq-unique-jobs
428
+ requirement: !ruby/object:Gem::Requirement
429
+ requirements:
430
+ - - ">="
431
+ - !ruby/object:Gem::Version
432
+ version: '0'
433
+ type: :runtime
434
+ prerelease: false
435
+ version_requirements: !ruby/object:Gem::Requirement
436
+ requirements:
437
+ - - ">="
438
+ - !ruby/object:Gem::Version
439
+ version: '0'
426
440
  - !ruby/object:Gem::Dependency
427
441
  name: swagger_yard
428
442
  requirement: !ruby/object:Gem::Requirement
@@ -981,6 +995,7 @@ files:
981
995
  - app/serializers/uffizzi_core/controller/deploy_containers/host_volume_file_serializer.rb
982
996
  - app/services/uffizzi_core/account_service.rb
983
997
  - app/services/uffizzi_core/activity_item_service.rb
998
+ - app/services/uffizzi_core/ci_service.rb
984
999
  - app/services/uffizzi_core/cluster_service.rb
985
1000
  - app/services/uffizzi_core/compose_file/builders/container_builder_service.rb
986
1001
  - app/services/uffizzi_core/compose_file/builders/container_config_files_builder_service.rb