uffizzi_core 0.1.16 → 0.2.2

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/controllers/concerns/uffizzi_core/dependency_injection_concern.rb +1 -1
  3. data/app/forms/uffizzi_core/api/cli/v1/compose_file/create_form.rb +0 -2
  4. data/app/forms/uffizzi_core/api/cli/v1/deployment/create_form.rb +1 -0
  5. data/app/forms/uffizzi_core/api/cli/v1/template/create_form.rb +2 -0
  6. data/app/lib/uffizzi_core/concerns/models/account.rb +84 -0
  7. data/app/lib/uffizzi_core/concerns/models/activity_item.rb +39 -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/credential.rb +65 -0
  16. data/app/lib/uffizzi_core/concerns/models/deployment.rb +71 -0
  17. data/app/lib/uffizzi_core/concerns/models/event.rb +17 -0
  18. data/app/lib/uffizzi_core/concerns/models/invitation.rb +31 -0
  19. data/app/lib/uffizzi_core/concerns/models/membership.rb +20 -0
  20. data/app/lib/uffizzi_core/concerns/models/payment.rb +15 -0
  21. data/app/lib/uffizzi_core/concerns/models/price.rb +13 -0
  22. data/app/lib/uffizzi_core/concerns/models/product.rb +15 -0
  23. data/app/lib/uffizzi_core/concerns/models/project.rb +62 -0
  24. data/app/lib/uffizzi_core/concerns/models/rating.rb +24 -0
  25. data/app/lib/uffizzi_core/concerns/models/repo.rb +33 -0
  26. data/app/lib/uffizzi_core/concerns/models/role.rb +21 -0
  27. data/app/lib/uffizzi_core/concerns/models/secret.rb +13 -0
  28. data/app/lib/uffizzi_core/concerns/models/template.rb +23 -0
  29. data/app/lib/uffizzi_core/concerns/models/user.rb +66 -0
  30. data/app/lib/uffizzi_core/concerns/models/user_project.rb +18 -0
  31. data/app/models/uffizzi_core/account.rb +1 -79
  32. data/app/models/uffizzi_core/activity_item.rb +1 -31
  33. data/app/models/uffizzi_core/build.rb +1 -35
  34. data/app/models/uffizzi_core/comment.rb +1 -12
  35. data/app/models/uffizzi_core/compose_file.rb +1 -44
  36. data/app/models/uffizzi_core/config_file.rb +1 -13
  37. data/app/models/uffizzi_core/container.rb +1 -85
  38. data/app/models/uffizzi_core/container_config_file.rb +1 -4
  39. data/app/models/uffizzi_core/coupon.rb +1 -1
  40. data/app/models/uffizzi_core/credential.rb +1 -57
  41. data/app/models/uffizzi_core/deployment.rb +1 -63
  42. data/app/models/uffizzi_core/event.rb +1 -9
  43. data/app/models/uffizzi_core/invitation.rb +1 -23
  44. data/app/models/uffizzi_core/membership.rb +1 -12
  45. data/app/models/uffizzi_core/payment.rb +1 -7
  46. data/app/models/uffizzi_core/price.rb +1 -5
  47. data/app/models/uffizzi_core/product.rb +1 -7
  48. data/app/models/uffizzi_core/project.rb +1 -54
  49. data/app/models/uffizzi_core/rating.rb +1 -16
  50. data/app/models/uffizzi_core/repo.rb +1 -25
  51. data/app/models/uffizzi_core/role.rb +1 -13
  52. data/app/models/uffizzi_core/secret.rb +1 -5
  53. data/app/models/uffizzi_core/template.rb +1 -15
  54. data/app/models/uffizzi_core/user.rb +1 -58
  55. data/app/models/uffizzi_core/user_project.rb +1 -10
  56. data/app/repositories/uffizzi_core/template_repo.rb +14 -6
  57. data/app/serializers/uffizzi_core/api/cli/v1/projects/deployment_serializer/container_serializer.rb +2 -1
  58. data/app/serializers/uffizzi_core/api/cli/v1/projects/deployments/container_serializer.rb +1 -1
  59. data/app/serializers/uffizzi_core/controller/deploy_containers/container_serializer.rb +16 -1
  60. data/app/services/uffizzi_core/compose_file/builders/container_builder_service.rb +13 -7
  61. data/app/services/uffizzi_core/compose_file/{configs_options_service.rb → parsers/configs_parser_service.rb} +1 -1
  62. data/app/services/uffizzi_core/compose_file/{continuous_preview_options_service.rb → parsers/continuous_preview_parser_service.rb} +1 -1
  63. data/app/services/uffizzi_core/compose_file/{ingress_options_service.rb → parsers/ingress_parser_service.rb} +1 -1
  64. data/app/services/uffizzi_core/compose_file/{secrets_options_service.rb → parsers/secrets_parser_service.rb} +1 -1
  65. data/app/services/uffizzi_core/compose_file/{services_options/command_service.rb → parsers/services/command_parser_service.rb} +1 -1
  66. data/app/services/uffizzi_core/compose_file/{services_options/configs_service.rb → parsers/services/configs_parser_service.rb} +1 -1
  67. data/app/services/uffizzi_core/compose_file/{services_options/deploy_service.rb → parsers/services/deploy_parser_service.rb} +1 -1
  68. data/app/services/uffizzi_core/compose_file/{services_options/entrypoint_service.rb → parsers/services/entrypoint_parser_service.rb} +1 -1
  69. data/app/services/uffizzi_core/compose_file/{services_options/env_file_service.rb → parsers/services/env_file_parser_service.rb} +1 -1
  70. data/app/services/uffizzi_core/compose_file/{services_options/environment_service.rb → parsers/services/environment_parser_service.rb} +2 -2
  71. data/app/services/uffizzi_core/compose_file/parsers/services/healthcheck_parser_service.rb +73 -0
  72. data/app/services/uffizzi_core/compose_file/{services_options/image_service.rb → parsers/services/image_parser_service.rb} +1 -1
  73. data/app/services/uffizzi_core/compose_file/{services_options/secrets_service.rb → parsers/services/secrets_parser_service.rb} +1 -1
  74. data/app/services/uffizzi_core/compose_file/{services_options_service.rb → parsers/services_parser_service.rb} +12 -10
  75. data/app/services/uffizzi_core/compose_file/{variables_service.rb → parsers/variables_parser_service.rb} +1 -1
  76. data/app/services/uffizzi_core/compose_file/template_service.rb +4 -4
  77. data/app/services/uffizzi_core/compose_file_service.rb +10 -6
  78. data/app/services/uffizzi_core/deployment_service.rb +19 -6
  79. data/app/services/uffizzi_core/manage_activity_items_service.rb +0 -4
  80. data/config/locales/en.yml +1 -0
  81. data/db/migrate/20220419074956_add_health_check_to_containers.rb +7 -0
  82. data/lib/uffizzi_core/version.rb +1 -1
  83. data/lib/uffizzi_core.rb +2 -0
  84. metadata +43 -16
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::SecretsOptionsService
3
+ class UffizziCore::ComposeFile::Parsers::SecretsParserService
4
4
  class << self
5
5
  def parse(secrets_data)
6
6
  return [] if secrets_data.nil?
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::CommandService
3
+ class UffizziCore::ComposeFile::Parsers::Services::CommandParserService
4
4
  class << self
5
5
  def parse(command_data)
6
6
  return nil if command_data.blank?
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::ConfigsService
3
+ class UffizziCore::ComposeFile::Parsers::Services::ConfigsParserService
4
4
  class << self
5
5
  def parse(configs, global_configs_data)
6
6
  return [] if configs.nil?
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::DeployService
3
+ class UffizziCore::ComposeFile::Parsers::Services::DeployParserService
4
4
  class << self
5
5
  def parse(deploy_data)
6
6
  return {} if deploy_data.blank?
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::EntrypointService
3
+ class UffizziCore::ComposeFile::Parsers::Services::EntrypointParserService
4
4
  class << self
5
5
  def parse(entrypoint_data)
6
6
  return nil if entrypoint_data.blank?
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::EnvFileService
3
+ class UffizziCore::ComposeFile::Parsers::Services::EnvFileParserService
4
4
  class << self
5
5
  def parse(env_file)
6
6
  env_files = case env_file
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptions::EnvironmentService
4
- extend UffizziCore::ComposeFile::VariablesService
3
+ class UffizziCore::ComposeFile::Parsers::Services::EnvironmentParserService
4
+ extend UffizziCore::ComposeFile::Parsers::VariablesParserService
5
5
 
6
6
  class << self
7
7
  def parse(environment)
@@ -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,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class UffizziCore::ComposeFile::ServicesOptionsService
3
+ class UffizziCore::ComposeFile::Parsers::ServicesParserService
4
4
  class << self
5
5
  include UffizziCore::DependencyInjectionConcern
6
6
 
@@ -27,25 +27,27 @@ class UffizziCore::ComposeFile::ServicesOptionsService
27
27
 
28
28
  options_data[service_key] = case service_key
29
29
  when :image
30
- UffizziCore::ComposeFile::ServicesOptions::ImageService.parse(value)
30
+ UffizziCore::ComposeFile::Parsers::Services::ImageParserService.parse(value)
31
31
  when :build
32
32
  check_and_parse_build_option(value, compose_payload)
33
33
  when :env_file
34
- UffizziCore::ComposeFile::ServicesOptions::EnvFileService.parse(value)
34
+ UffizziCore::ComposeFile::Parsers::Services::EnvFileParserService.parse(value)
35
35
  when :environment
36
- UffizziCore::ComposeFile::ServicesOptions::EnvironmentService.parse(value)
36
+ UffizziCore::ComposeFile::Parsers::Services::EnvironmentParserService.parse(value)
37
37
  when :configs
38
- UffizziCore::ComposeFile::ServicesOptions::ConfigsService.parse(value, global_configs_data)
38
+ UffizziCore::ComposeFile::Parsers::Services::ConfigsParserService.parse(value, global_configs_data)
39
39
  when :secrets
40
- UffizziCore::ComposeFile::ServicesOptions::SecretsService.parse(value, global_secrets_data)
40
+ UffizziCore::ComposeFile::Parsers::Services::SecretsParserService.parse(value, global_secrets_data)
41
41
  when :deploy
42
- UffizziCore::ComposeFile::ServicesOptions::DeployService.parse(value)
42
+ UffizziCore::ComposeFile::Parsers::Services::DeployParserService.parse(value)
43
43
  when :entrypoint
44
- UffizziCore::ComposeFile::ServicesOptions::EntrypointService.parse(value)
44
+ UffizziCore::ComposeFile::Parsers::Services::EntrypointParserService.parse(value)
45
45
  when :command
46
- 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)
47
49
  when :'x-uffizzi-continuous-preview', :'x-uffizzi-continuous-previews'
48
- UffizziCore::ComposeFile::ContinuousPreviewOptionsService.parse(value)
50
+ UffizziCore::ComposeFile::Parsers::ContinuousPreviewParserService.parse(value)
49
51
  end
50
52
  end
51
53
 
@@ -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
@@ -104,25 +103,29 @@ module UffizziCore::DeploymentService
104
103
  pull_request_payload = continuous_preview_payload['pull_request']
105
104
  repo_name = pull_request_payload['repository_full_name'].split('/').last
106
105
  deployment_name = name(deployment)
106
+ subdomain = "pr#{pull_request_payload['id']}-#{deployment_name}-#{repo_name}-#{project.slug}"
107
107
 
108
- "pr#{pull_request_payload['id']}-#{deployment_name}.#{repo_name}.#{project.slug}"
108
+ format_subdomain(subdomain)
109
109
  end
110
110
 
111
111
  def build_docker_continuous_preview_subdomain(deployment)
112
112
  project = deployment.project
113
113
  continuous_preview_payload = deployment.continuous_preview_payload
114
114
  docker_payload = continuous_preview_payload['docker']
115
- repo_name = docker_payload['image'].split('/').last.gsub('_', '-')
116
- image_tag = docker_payload['tag'].gsub('_', '-')
115
+ repo_name = docker_payload['image'].split('/').last
116
+ image_tag = docker_payload['tag']
117
117
  deployment_name = name(deployment)
118
+ subdomain = "#{image_tag}-#{deployment_name}-#{repo_name}-#{project.slug}"
118
119
 
119
- "#{image_tag}-#{deployment_name}.#{repo_name}.#{project.slug}"
120
+ format_subdomain(subdomain)
120
121
  end
121
122
 
122
123
  def build_default_subdomain(deployment)
123
124
  deployment_name = name(deployment)
124
125
  slug = deployment.project.slug.to_s
125
- "#{deployment_name}.#{slug}"
126
+ subdomain = "#{deployment_name}-#{slug}"
127
+
128
+ format_subdomain(subdomain)
126
129
  end
127
130
 
128
131
  def build_preview_url(deployment)
@@ -293,5 +296,15 @@ module UffizziCore::DeploymentService
293
296
  container.variables.push(*envs)
294
297
  end
295
298
  end
299
+
300
+ def format_subdomain(full_subdomain_name)
301
+ # Replace _ to - because RFC 1123 subdomain must consist of lower case alphanumeric characters,
302
+ # '-' or '.', and must start and end with an alphanumeric character
303
+ rfc_subdomain = full_subdomain_name.gsub('_', '-')
304
+ subdomain_length_limit = Settings.deployment.subdomain.length_limit
305
+ return rfc_subdomain if rfc_subdomain.length <= subdomain_length_limit
306
+
307
+ rfc_subdomain.slice(0, subdomain_length_limit)
308
+ end
296
309
  end
297
310
  end
@@ -119,11 +119,7 @@ class UffizziCore::ManageActivityItemsService
119
119
  case pod_container_status.to_sym
120
120
  when :running
121
121
  UffizziCore::Event.state.deployed
122
- when :terminated
123
- UffizziCore::Event.state.failed
124
122
  when :waiting
125
- return UffizziCore::Event.state.failed if ['CrashLoopBackOff'].include?(reason)
126
-
127
123
  raise UffizziCore::Deployment::ImagePullError, @deployment.id if ['ErrImagePull', 'ImagePullBackOff'].include?(reason)
128
124
 
129
125
  UffizziCore::Event.state.deploying
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module UffizziCore
4
- VERSION = '0.1.16'
4
+ VERSION = '0.2.2'
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.16
4
+ version: 0.2.2
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-06-06 00:00:00.000000000 Z
12
+ date: 2022-06-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aasm
@@ -759,6 +759,31 @@ files:
759
759
  - app/jobs/uffizzi_core/deployment/delete_job.rb
760
760
  - app/jobs/uffizzi_core/deployment/deploy_containers_job.rb
761
761
  - app/jobs/uffizzi_core/deployment/manage_deploy_activity_item_job.rb
762
+ - app/lib/uffizzi_core/concerns/models/account.rb
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
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
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
762
787
  - app/lib/uffizzi_core/rbac/user_access_service.rb
763
788
  - app/mailers/uffizzi_core/application_mailer.rb
764
789
  - app/models/concerns/uffizzi_core/hashid_concern.rb
@@ -871,25 +896,26 @@ files:
871
896
  - app/services/uffizzi_core/compose_file/builders/variables_builder_service.rb
872
897
  - app/services/uffizzi_core/compose_file/config_files_service.rb
873
898
  - app/services/uffizzi_core/compose_file/config_option_service.rb
874
- - app/services/uffizzi_core/compose_file/configs_options_service.rb
875
899
  - app/services/uffizzi_core/compose_file/container_service.rb
876
- - app/services/uffizzi_core/compose_file/continuous_preview_options_service.rb
877
900
  - app/services/uffizzi_core/compose_file/dependencies_service.rb
878
901
  - app/services/uffizzi_core/compose_file/errors_service.rb
879
902
  - app/services/uffizzi_core/compose_file/github_dependencies_service.rb
880
- - app/services/uffizzi_core/compose_file/ingress_options_service.rb
881
- - app/services/uffizzi_core/compose_file/secrets_options_service.rb
882
- - app/services/uffizzi_core/compose_file/services_options/command_service.rb
883
- - app/services/uffizzi_core/compose_file/services_options/configs_service.rb
884
- - app/services/uffizzi_core/compose_file/services_options/deploy_service.rb
885
- - app/services/uffizzi_core/compose_file/services_options/entrypoint_service.rb
886
- - app/services/uffizzi_core/compose_file/services_options/env_file_service.rb
887
- - app/services/uffizzi_core/compose_file/services_options/environment_service.rb
888
- - app/services/uffizzi_core/compose_file/services_options/image_service.rb
889
- - app/services/uffizzi_core/compose_file/services_options/secrets_service.rb
890
- - 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
891
918
  - app/services/uffizzi_core/compose_file/template_service.rb
892
- - app/services/uffizzi_core/compose_file/variables_service.rb
893
919
  - app/services/uffizzi_core/compose_file_service.rb
894
920
  - app/services/uffizzi_core/container_service.rb
895
921
  - app/services/uffizzi_core/controller_service.rb
@@ -925,6 +951,7 @@ files:
925
951
  - db/migrate/20220329123323_rename_project_secrets_to_secrets.rb
926
952
  - db/migrate/20220329124542_add_resource_to_secrets.rb
927
953
  - db/migrate/20220329143241_remove_project_ref_from_secrets.rb
954
+ - db/migrate/20220419074956_add_health_check_to_containers.rb
928
955
  - db/migrate/20220525113412_rename_name_to_uffizzi_containers.rb
929
956
  - db/seeds.rb
930
957
  - lib/tasks/uffizzi_core_tasks.rake