uffizzi_core 0.1.15 → 0.2.1

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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/app/clients/uffizzi_core/docker_hub_client/not_authorized_error.rb +6 -0
  3. data/app/controllers/concerns/uffizzi_core/dependency_injection_concern.rb +6 -0
  4. data/app/forms/uffizzi_core/api/cli/v1/compose_file/create_form.rb +0 -2
  5. data/app/forms/uffizzi_core/api/cli/v1/deployment/create_form.rb +1 -0
  6. data/app/forms/uffizzi_core/api/cli/v1/template/create_form.rb +2 -0
  7. data/app/lib/uffizzi_core/concerns/models/account.rb +84 -0
  8. data/app/lib/uffizzi_core/concerns/models/build.rb +47 -0
  9. data/app/lib/uffizzi_core/concerns/models/comment.rb +20 -0
  10. data/app/lib/uffizzi_core/concerns/models/compose_file.rb +60 -0
  11. data/app/lib/uffizzi_core/concerns/models/config_file.rb +21 -0
  12. data/app/lib/uffizzi_core/concerns/models/container.rb +95 -0
  13. data/app/lib/uffizzi_core/concerns/models/container_config_file.rb +12 -0
  14. data/app/lib/uffizzi_core/concerns/models/coupon.rb +9 -0
  15. data/app/lib/uffizzi_core/concerns/models/deployment.rb +71 -0
  16. data/app/lib/uffizzi_core/concerns/models/event.rb +17 -0
  17. data/app/lib/uffizzi_core/concerns/models/invitation.rb +31 -0
  18. data/app/lib/uffizzi_core/concerns/models/membership.rb +20 -0
  19. data/app/lib/uffizzi_core/concerns/models/payment.rb +15 -0
  20. data/app/lib/uffizzi_core/concerns/models/price.rb +13 -0
  21. data/app/lib/uffizzi_core/concerns/models/product.rb +15 -0
  22. data/app/lib/uffizzi_core/concerns/models/project.rb +62 -0
  23. data/app/lib/uffizzi_core/concerns/models/rating.rb +24 -0
  24. data/app/lib/uffizzi_core/concerns/models/role.rb +21 -0
  25. data/app/lib/uffizzi_core/concerns/models/secret.rb +13 -0
  26. data/app/lib/uffizzi_core/concerns/models/template.rb +23 -0
  27. data/app/lib/uffizzi_core/concerns/models/user.rb +66 -0
  28. data/app/lib/uffizzi_core/concerns/models/user_project.rb +18 -0
  29. data/app/models/uffizzi_core/account.rb +1 -79
  30. data/app/models/uffizzi_core/activity_item.rb +1 -31
  31. data/app/models/uffizzi_core/build.rb +1 -35
  32. data/app/models/uffizzi_core/comment.rb +1 -12
  33. data/app/models/uffizzi_core/compose_file.rb +1 -44
  34. data/app/models/uffizzi_core/config_file.rb +1 -13
  35. data/app/models/uffizzi_core/container.rb +1 -85
  36. data/app/models/uffizzi_core/container_config_file.rb +1 -4
  37. data/app/models/uffizzi_core/coupon.rb +1 -1
  38. data/app/models/uffizzi_core/credential.rb +1 -57
  39. data/app/models/uffizzi_core/deployment.rb +1 -63
  40. data/app/models/uffizzi_core/event.rb +1 -9
  41. data/app/models/uffizzi_core/invitation.rb +1 -23
  42. data/app/models/uffizzi_core/membership.rb +1 -12
  43. data/app/models/uffizzi_core/payment.rb +1 -7
  44. data/app/models/uffizzi_core/price.rb +1 -5
  45. data/app/models/uffizzi_core/product.rb +1 -7
  46. data/app/models/uffizzi_core/project.rb +1 -54
  47. data/app/models/uffizzi_core/rating.rb +1 -16
  48. data/app/models/uffizzi_core/repo.rb +1 -25
  49. data/app/models/uffizzi_core/role.rb +1 -13
  50. data/app/models/uffizzi_core/secret.rb +1 -5
  51. data/app/models/uffizzi_core/template.rb +1 -15
  52. data/app/models/uffizzi_core/user.rb +1 -58
  53. data/app/models/uffizzi_core/user_project.rb +1 -10
  54. data/app/repositories/uffizzi_core/template_repo.rb +14 -6
  55. data/app/serializers/uffizzi_core/api/cli/v1/projects/deployment_serializer/container_serializer.rb +2 -1
  56. data/app/serializers/uffizzi_core/api/cli/v1/projects/deployments/container_serializer.rb +1 -1
  57. data/app/serializers/uffizzi_core/controller/deploy_containers/container_serializer/container_config_file_serializer/config_file_serializer.rb +2 -2
  58. data/app/serializers/uffizzi_core/controller/deploy_containers/container_serializer.rb +16 -1
  59. data/app/services/uffizzi_core/compose_file/builders/container_builder_service.rb +13 -7
  60. data/app/services/uffizzi_core/compose_file/{configs_options_service.rb → parsers/configs_parser_service.rb} +1 -1
  61. data/app/services/uffizzi_core/compose_file/{continuous_preview_options_service.rb → parsers/continuous_preview_parser_service.rb} +1 -1
  62. data/app/services/uffizzi_core/compose_file/{ingress_options_service.rb → parsers/ingress_parser_service.rb} +1 -1
  63. data/app/services/uffizzi_core/compose_file/{secrets_options_service.rb → parsers/secrets_parser_service.rb} +1 -1
  64. data/app/services/uffizzi_core/compose_file/{services_options/command_service.rb → parsers/services/command_parser_service.rb} +1 -1
  65. data/app/services/uffizzi_core/compose_file/{services_options/configs_service.rb → parsers/services/configs_parser_service.rb} +1 -1
  66. data/app/services/uffizzi_core/compose_file/{services_options/deploy_service.rb → parsers/services/deploy_parser_service.rb} +1 -1
  67. data/app/services/uffizzi_core/compose_file/{services_options/entrypoint_service.rb → parsers/services/entrypoint_parser_service.rb} +1 -1
  68. data/app/services/uffizzi_core/compose_file/{services_options/env_file_service.rb → parsers/services/env_file_parser_service.rb} +1 -1
  69. data/app/services/uffizzi_core/compose_file/{services_options/environment_service.rb → parsers/services/environment_parser_service.rb} +2 -2
  70. data/app/services/uffizzi_core/compose_file/parsers/services/healthcheck_parser_service.rb +73 -0
  71. data/app/services/uffizzi_core/compose_file/{services_options/image_service.rb → parsers/services/image_parser_service.rb} +1 -1
  72. data/app/services/uffizzi_core/compose_file/{services_options/secrets_service.rb → parsers/services/secrets_parser_service.rb} +1 -1
  73. data/app/services/uffizzi_core/compose_file/{services_options_service.rb → parsers/services_parser_service.rb} +22 -12
  74. data/app/services/uffizzi_core/compose_file/{variables_service.rb → parsers/variables_parser_service.rb} +1 -1
  75. data/app/services/uffizzi_core/compose_file/template_service.rb +4 -4
  76. data/app/services/uffizzi_core/compose_file_service.rb +10 -6
  77. data/app/services/uffizzi_core/deployment_service.rb +0 -1
  78. data/app/services/uffizzi_core/user_generator_service.rb +11 -5
  79. data/config/locales/en.yml +1 -0
  80. data/db/migrate/20220419074956_add_health_check_to_containers.rb +7 -0
  81. data/lib/tasks/uffizzi_core_tasks.rake +1 -1
  82. data/lib/uffizzi_core/version.rb +1 -1
  83. data/lib/uffizzi_core.rb +2 -0
  84. metadata +41 -16
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UffizziCore::ComposeFile::Parsers::Services::HealthcheckParserService
4
+ REQUIRED_START_COMMANDS = ['NONE', 'CMD', 'CMD-SHELL'].freeze
5
+
6
+ class << self
7
+ def parse(healthcheck_data)
8
+ return {} if healthcheck_data.blank?
9
+
10
+ command = parse_command(healthcheck_data)
11
+
12
+ {
13
+ test: command,
14
+ interval: parse_time(healthcheck_data['interval']),
15
+ timeout: parse_time(healthcheck_data['timeout']),
16
+ retries: parse_retries(healthcheck_data['retries']),
17
+ start_period: parse_time(healthcheck_data['start_period']),
18
+ disable: parse_disable_option(healthcheck_data['disable'], command),
19
+ }
20
+ end
21
+
22
+ private
23
+
24
+ def parse_command(healthcheck_data)
25
+ command = healthcheck_data['test']
26
+ raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.string_or_array_error', option: :test) if command.nil?
27
+
28
+ case command
29
+ when Array
30
+ start_command = command.first
31
+ raise UffizziCore::ComposeFile::ParseError unless REQUIRED_START_COMMANDS.include?(start_command)
32
+
33
+ command
34
+ when String
35
+ command
36
+ else
37
+ raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.invalid_type', option: :test)
38
+ end
39
+ end
40
+
41
+ def parse_retries(value)
42
+ raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.invalid_integer', option: :retries) unless value.is_a?(Integer)
43
+ end
44
+
45
+ def parse_time(value)
46
+ tokens = {
47
+ 's' => 1,
48
+ 'm' => 60,
49
+ 'h' => (60 * 60),
50
+ 'd' => (60 * 60 * 24),
51
+ }
52
+
53
+ time_parts = value.scan(/(\d+)(\w)/).compact
54
+
55
+ time_parts.reduce(0) do |acc, part|
56
+ amount, measure = part
57
+ acc += amount.to_i * tokens[measure]
58
+
59
+ acc
60
+ rescue StandardError
61
+ raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.invalid_time_interval')
62
+ end
63
+ end
64
+
65
+ def parse_disable_option(value, command)
66
+ return true if command.is_a?(Array) && command.first == 'NONE'
67
+ return false if value.nil?
68
+ return value if value.in?([true, false])
69
+
70
+ raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.invalid_bool_value', field: 'disable', value: value)
71
+ end
72
+ end
73
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::ImageService
3
+ class UffizziCore::ComposeFile::Parsers::Services::ImageParserService
4
4
  class << self
5
5
  def parse(image)
6
6
  return {} if image.blank?
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::SecretsService
3
+ class UffizziCore::ComposeFile::Parsers::Services::SecretsParserService
4
4
  class << self
5
5
  def parse(secrets, global_secrets_data)
6
6
  return [] if secrets.nil?
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptionsService
3
+ class UffizziCore::ComposeFile::Parsers::ServicesParserService
4
4
  class << self
5
+ include UffizziCore::DependencyInjectionConcern
6
+
5
7
  def parse(services, global_configs_data, global_secrets_data, compose_payload)
6
8
  raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.no_services') if services.nil? || services.keys.empty?
7
9
 
@@ -18,32 +20,34 @@ class UffizziCore::ComposeFile::ServicesOptionsService
18
20
 
19
21
  private
20
22
 
21
- def prepare_service_data(service_name, service_data, global_configs_data, global_secrets_data, _compose_payload)
23
+ def prepare_service_data(service_name, service_data, global_configs_data, global_secrets_data, compose_payload)
22
24
  options_data = {}
23
25
  service_data.each_pair do |key, value|
24
26
  service_key = key.to_sym
25
27
 
26
28
  options_data[service_key] = case service_key
27
29
  when :image
28
- UffizziCore::ComposeFile::ServicesOptions::ImageService.parse(value)
30
+ UffizziCore::ComposeFile::Parsers::Services::ImageParserService.parse(value)
29
31
  when :build
30
- raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.not_implemented', option: :build)
32
+ check_and_parse_build_option(value, compose_payload)
31
33
  when :env_file
32
- UffizziCore::ComposeFile::ServicesOptions::EnvFileService.parse(value)
34
+ UffizziCore::ComposeFile::Parsers::Services::EnvFileParserService.parse(value)
33
35
  when :environment
34
- UffizziCore::ComposeFile::ServicesOptions::EnvironmentService.parse(value)
36
+ UffizziCore::ComposeFile::Parsers::Services::EnvironmentParserService.parse(value)
35
37
  when :configs
36
- UffizziCore::ComposeFile::ServicesOptions::ConfigsService.parse(value, global_configs_data)
38
+ UffizziCore::ComposeFile::Parsers::Services::ConfigsParserService.parse(value, global_configs_data)
37
39
  when :secrets
38
- UffizziCore::ComposeFile::ServicesOptions::SecretsService.parse(value, global_secrets_data)
40
+ UffizziCore::ComposeFile::Parsers::Services::SecretsParserService.parse(value, global_secrets_data)
39
41
  when :deploy
40
- UffizziCore::ComposeFile::ServicesOptions::DeployService.parse(value)
42
+ UffizziCore::ComposeFile::Parsers::Services::DeployParserService.parse(value)
41
43
  when :entrypoint
42
- UffizziCore::ComposeFile::ServicesOptions::EntrypointService.parse(value)
44
+ UffizziCore::ComposeFile::Parsers::Services::EntrypointParserService.parse(value)
43
45
  when :command
44
- UffizziCore::ComposeFile::ServicesOptions::CommandService.parse(value)
46
+ UffizziCore::ComposeFile::Parsers::Services::CommandParserService.parse(value)
47
+ when :healthcheck
48
+ UffizziCore::ComposeFile::Parsers::Services::HealthcheckParserService.parse(value)
45
49
  when :'x-uffizzi-continuous-preview', :'x-uffizzi-continuous-previews'
46
- UffizziCore::ComposeFile::ContinuousPreviewOptionsService.parse(value)
50
+ UffizziCore::ComposeFile::Parsers::ContinuousPreviewParserService.parse(value)
47
51
  end
48
52
  end
49
53
 
@@ -51,5 +55,11 @@ class UffizziCore::ComposeFile::ServicesOptionsService
51
55
 
52
56
  options_data
53
57
  end
58
+
59
+ def check_and_parse_build_option(value, compose_payload)
60
+ raise UffizziCore::ComposeFile::ParseError, I18n.t('compose.not_implemented', option: :build) unless build_parser_module
61
+
62
+ build_parser_module.parse(value, compose_payload)
63
+ end
54
64
  end
55
65
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module UffizziCore::ComposeFile::VariablesService
3
+ module UffizziCore::ComposeFile::Parsers::VariablesParserService
4
4
  def parse_variable_from_string(str)
5
5
  variable_parts = str.split('=', 2)
6
6
 
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class UffizziCore::ComposeFile::TemplateService
4
- def initialize(github_form, project, user)
4
+ def initialize(cli_form, project, user)
5
5
  @project = project
6
6
  @user = user
7
- @compose_dependencies = github_form.compose_dependencies
8
- @compose_data = github_form.compose_data
9
- @compose_repositories = github_form.compose_repositories
7
+ @compose_dependencies = cli_form.compose_dependencies
8
+ @compose_data = cli_form.compose_data
9
+ @compose_repositories = cli_form.compose_repositories
10
10
  end
11
11
 
12
12
  def create_template(compose_file_form)
@@ -17,16 +17,20 @@ module UffizziCore::ComposeFileService
17
17
  def parse(compose_content, compose_payload = {})
18
18
  compose_data = load_compose_data(compose_content)
19
19
  check_config_options_format(compose_data)
20
- configs_data = UffizziCore::ComposeFile::ConfigsOptionsService.parse(compose_data['configs'])
21
- secrets_data = UffizziCore::ComposeFile::SecretsOptionsService.parse(compose_data['secrets'])
22
- containers_data = UffizziCore::ComposeFile::ServicesOptionsService.parse(compose_data['services'], configs_data, secrets_data,
23
- compose_payload)
20
+ configs_data = UffizziCore::ComposeFile::Parsers::ConfigsParserService.parse(compose_data['configs'])
21
+ secrets_data = UffizziCore::ComposeFile::Parsers::SecretsParserService.parse(compose_data['secrets'])
22
+ containers_data = UffizziCore::ComposeFile::Parsers::ServicesParserService.parse(
23
+ compose_data['services'],
24
+ configs_data,
25
+ secrets_data,
26
+ compose_payload,
27
+ )
24
28
 
25
29
  continuous_preview_option = UffizziCore::ComposeFile::ConfigOptionService.continuous_preview_option(compose_data)
26
- continuous_preview_data = UffizziCore::ComposeFile::ContinuousPreviewOptionsService.parse(continuous_preview_option)
30
+ continuous_preview_data = UffizziCore::ComposeFile::Parsers::ContinuousPreviewParserService.parse(continuous_preview_option)
27
31
 
28
32
  ingress_option = UffizziCore::ComposeFile::ConfigOptionService.ingress_option(compose_data)
29
- ingress_data = UffizziCore::ComposeFile::IngressOptionsService.parse(ingress_option, compose_data['services'])
33
+ ingress_data = UffizziCore::ComposeFile::Parsers::IngressParserService.parse(ingress_option, compose_data['services'])
30
34
 
31
35
  {
32
36
  containers: containers_data,
@@ -14,7 +14,6 @@ module UffizziCore::DeploymentService
14
14
  class << self
15
15
  def create_from_compose(compose_file, project, user)
16
16
  deployment_attributes = ActionController::Parameters.new(compose_file.template.payload)
17
-
18
17
  deployment_form = UffizziCore::Api::Cli::V1::Deployment::CreateForm.new(deployment_attributes)
19
18
  deployment_form.assign_dependences!(project, user)
20
19
  deployment_form.compose_file = compose_file
@@ -6,6 +6,12 @@ class UffizziCore::UserGeneratorService
6
6
  DEFAULT_ACCOUNT_NAME = 'default'
7
7
 
8
8
  class << self
9
+ def safe_generate(email, password, project_name)
10
+ generate(email, password, project_name)
11
+ rescue ActiveRecord::RecordInvalid => e
12
+ puts e.message
13
+ end
14
+
9
15
  def generate(email, password, project_name)
10
16
  user_attributes = build_user_attributes(email, password)
11
17
  project_attributes = build_project_attributes(project_name)
@@ -31,19 +37,17 @@ class UffizziCore::UserGeneratorService
31
37
 
32
38
  if email.present?
33
39
  user_attributes[:email] = email
34
- else
40
+ elsif IO::console.present?
35
41
  IO::console.write("Enter User Email (default: #{DEFAULT_USER_EMAIL}): ")
36
42
  user_attributes[:email] = IO::console.gets.strip.presence || DEFAULT_USER_EMAIL
37
43
  end
38
44
 
39
45
  user_attributes[:password] = if password.present?
40
46
  password
41
- else
47
+ elsif IO::console.present?
42
48
  IO::console.getpass('Enter Password: ')
43
49
  end
44
50
 
45
- abort('password can\'t be blank') if user_attributes[:password].blank?
46
-
47
51
  user_attributes
48
52
  end
49
53
 
@@ -53,9 +57,11 @@ class UffizziCore::UserGeneratorService
53
57
  }
54
58
  if project_name.present?
55
59
  project_attributes[:name] = project_name
56
- else
60
+ elsif IO::console.present?
57
61
  IO::console.write("Enter Project Name (default: #{DEFAULT_PROJECT_NAME}): ")
58
62
  project_attributes[:name] = IO::console.gets.strip.presence || DEFAULT_PROJECT_NAME
63
+ else
64
+ project_attributes[:name] = DEFAULT_PROJECT_NAME
59
65
  end
60
66
 
61
67
  project_attributes[:slug] = prepare_project_slug(project_attributes[:name])
@@ -57,6 +57,7 @@ en:
57
57
  continuous_preview_in_service_level: The option '%{option}' is not supported for service-level. Use 'x-uffizzi-continuous-preview' instead
58
58
  file_already_exists: A compose file already exists for this project. Run 'uffizzi compose update' to update this file or 'uffizzi compose rm' to remove it. For more options, see 'uffizzi compose --help'
59
59
  invalid_healthcheck_command: "Service '%{name}' defines an invalid healthcheck: when 'test' is a list the first item must be either NONE, CMD or CMD-SHELL"
60
+ invalid_time_interval: The time interval should be in the following format '{hours}h{minutes}m{seconds}s'. At least one value must be present.
60
61
  string_or_array_error: "'%{option}' contains an invalid type, it should be a string, or an array"
61
62
  not_implemented: "'%{option}' option is not implemented"
62
63
  infinite_recursion: "Found infinite recursion for key '%{key}'"
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddHealthCheckToContainers < ActiveRecord::Migration[6.1]
4
+ def change
5
+ add_column :uffizzi_core_containers, :healthcheck, :jsonb
6
+ end
7
+ end
@@ -14,6 +14,6 @@ namespace :uffizzi_core do
14
14
 
15
15
  desc 'Create a new user'
16
16
  task create_user: :environment do
17
- UffizziCore::UserGeneratorService.generate(ENV['UFFIZZI_USER_EMAIL'], ENV['UFFIZZI_USER_PASSWORD'], ENV['UFFIZZI_PROJECT_NAME'])
17
+ UffizziCore::UserGeneratorService.safe_generate(ENV['UFFIZZI_USER_EMAIL'], ENV['UFFIZZI_USER_PASSWORD'], ENV['UFFIZZI_PROJECT_NAME'])
18
18
  end
19
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UffizziCore
4
- VERSION = '0.1.15'
4
+ VERSION = '0.2.1'
5
5
  end
data/lib/uffizzi_core.rb CHANGED
@@ -58,4 +58,6 @@ module UffizziCore
58
58
  users: :uffizzi_core_users,
59
59
  users_roles: :uffizzi_core_users_roles,
60
60
  }
61
+ mattr_accessor :user_creation_sources, default: [:system, :online_registration, :google, :sso]
62
+ mattr_accessor :user_project_roles, default: [:admin, :developer, :viewer]
61
63
  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: 0.1.15
4
+ version: 0.2.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: 2022-05-31 00:00:00.000000000 Z
12
+ date: 2022-06-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aasm
@@ -693,6 +693,7 @@ files:
693
693
  - app/clients/uffizzi_core/controller_client.rb
694
694
  - app/clients/uffizzi_core/controller_client/request_result.rb
695
695
  - app/clients/uffizzi_core/docker_hub_client.rb
696
+ - app/clients/uffizzi_core/docker_hub_client/not_authorized_error.rb
696
697
  - app/clients/uffizzi_core/docker_hub_client/request_result.rb
697
698
  - app/clients/uffizzi_core/github_container_registry_client.rb
698
699
  - app/clients/uffizzi_core/github_container_registry_client/request_result.rb
@@ -758,9 +759,31 @@ files:
758
759
  - app/jobs/uffizzi_core/deployment/delete_job.rb
759
760
  - app/jobs/uffizzi_core/deployment/deploy_containers_job.rb
760
761
  - app/jobs/uffizzi_core/deployment/manage_deploy_activity_item_job.rb
762
+ - app/lib/uffizzi_core/concerns/models/account.rb
761
763
  - app/lib/uffizzi_core/concerns/models/activity_item.rb
764
+ - app/lib/uffizzi_core/concerns/models/build.rb
765
+ - app/lib/uffizzi_core/concerns/models/comment.rb
766
+ - app/lib/uffizzi_core/concerns/models/compose_file.rb
767
+ - app/lib/uffizzi_core/concerns/models/config_file.rb
768
+ - app/lib/uffizzi_core/concerns/models/container.rb
769
+ - app/lib/uffizzi_core/concerns/models/container_config_file.rb
770
+ - app/lib/uffizzi_core/concerns/models/coupon.rb
762
771
  - app/lib/uffizzi_core/concerns/models/credential.rb
772
+ - app/lib/uffizzi_core/concerns/models/deployment.rb
773
+ - app/lib/uffizzi_core/concerns/models/event.rb
774
+ - app/lib/uffizzi_core/concerns/models/invitation.rb
775
+ - app/lib/uffizzi_core/concerns/models/membership.rb
776
+ - app/lib/uffizzi_core/concerns/models/payment.rb
777
+ - app/lib/uffizzi_core/concerns/models/price.rb
778
+ - app/lib/uffizzi_core/concerns/models/product.rb
779
+ - app/lib/uffizzi_core/concerns/models/project.rb
780
+ - app/lib/uffizzi_core/concerns/models/rating.rb
763
781
  - app/lib/uffizzi_core/concerns/models/repo.rb
782
+ - app/lib/uffizzi_core/concerns/models/role.rb
783
+ - app/lib/uffizzi_core/concerns/models/secret.rb
784
+ - app/lib/uffizzi_core/concerns/models/template.rb
785
+ - app/lib/uffizzi_core/concerns/models/user.rb
786
+ - app/lib/uffizzi_core/concerns/models/user_project.rb
764
787
  - app/lib/uffizzi_core/rbac/user_access_service.rb
765
788
  - app/mailers/uffizzi_core/application_mailer.rb
766
789
  - app/models/concerns/uffizzi_core/hashid_concern.rb
@@ -873,25 +896,26 @@ files:
873
896
  - app/services/uffizzi_core/compose_file/builders/variables_builder_service.rb
874
897
  - app/services/uffizzi_core/compose_file/config_files_service.rb
875
898
  - app/services/uffizzi_core/compose_file/config_option_service.rb
876
- - app/services/uffizzi_core/compose_file/configs_options_service.rb
877
899
  - app/services/uffizzi_core/compose_file/container_service.rb
878
- - app/services/uffizzi_core/compose_file/continuous_preview_options_service.rb
879
900
  - app/services/uffizzi_core/compose_file/dependencies_service.rb
880
901
  - app/services/uffizzi_core/compose_file/errors_service.rb
881
902
  - app/services/uffizzi_core/compose_file/github_dependencies_service.rb
882
- - app/services/uffizzi_core/compose_file/ingress_options_service.rb
883
- - app/services/uffizzi_core/compose_file/secrets_options_service.rb
884
- - app/services/uffizzi_core/compose_file/services_options/command_service.rb
885
- - app/services/uffizzi_core/compose_file/services_options/configs_service.rb
886
- - app/services/uffizzi_core/compose_file/services_options/deploy_service.rb
887
- - app/services/uffizzi_core/compose_file/services_options/entrypoint_service.rb
888
- - app/services/uffizzi_core/compose_file/services_options/env_file_service.rb
889
- - app/services/uffizzi_core/compose_file/services_options/environment_service.rb
890
- - app/services/uffizzi_core/compose_file/services_options/image_service.rb
891
- - app/services/uffizzi_core/compose_file/services_options/secrets_service.rb
892
- - app/services/uffizzi_core/compose_file/services_options_service.rb
903
+ - app/services/uffizzi_core/compose_file/parsers/configs_parser_service.rb
904
+ - app/services/uffizzi_core/compose_file/parsers/continuous_preview_parser_service.rb
905
+ - app/services/uffizzi_core/compose_file/parsers/ingress_parser_service.rb
906
+ - app/services/uffizzi_core/compose_file/parsers/secrets_parser_service.rb
907
+ - app/services/uffizzi_core/compose_file/parsers/services/command_parser_service.rb
908
+ - app/services/uffizzi_core/compose_file/parsers/services/configs_parser_service.rb
909
+ - app/services/uffizzi_core/compose_file/parsers/services/deploy_parser_service.rb
910
+ - app/services/uffizzi_core/compose_file/parsers/services/entrypoint_parser_service.rb
911
+ - app/services/uffizzi_core/compose_file/parsers/services/env_file_parser_service.rb
912
+ - app/services/uffizzi_core/compose_file/parsers/services/environment_parser_service.rb
913
+ - app/services/uffizzi_core/compose_file/parsers/services/healthcheck_parser_service.rb
914
+ - app/services/uffizzi_core/compose_file/parsers/services/image_parser_service.rb
915
+ - app/services/uffizzi_core/compose_file/parsers/services/secrets_parser_service.rb
916
+ - app/services/uffizzi_core/compose_file/parsers/services_parser_service.rb
917
+ - app/services/uffizzi_core/compose_file/parsers/variables_parser_service.rb
893
918
  - app/services/uffizzi_core/compose_file/template_service.rb
894
- - app/services/uffizzi_core/compose_file/variables_service.rb
895
919
  - app/services/uffizzi_core/compose_file_service.rb
896
920
  - app/services/uffizzi_core/container_service.rb
897
921
  - app/services/uffizzi_core/controller_service.rb
@@ -927,6 +951,7 @@ files:
927
951
  - db/migrate/20220329123323_rename_project_secrets_to_secrets.rb
928
952
  - db/migrate/20220329124542_add_resource_to_secrets.rb
929
953
  - db/migrate/20220329143241_remove_project_ref_from_secrets.rb
954
+ - db/migrate/20220419074956_add_health_check_to_containers.rb
930
955
  - db/migrate/20220525113412_rename_name_to_uffizzi_containers.rb
931
956
  - db/seeds.rb
932
957
  - lib/tasks/uffizzi_core_tasks.rake