uffizzi_core 0.1.14 → 0.2.0

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 (49) 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/controllers/uffizzi_core/api/cli/v1/projects_controller.rb +57 -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/project/create_form.rb +7 -0
  7. data/app/forms/uffizzi_core/api/cli/v1/template/create_form.rb +2 -0
  8. data/app/lib/uffizzi_core/rbac/user_access_service.rb +4 -0
  9. data/app/models/uffizzi_core/project.rb +9 -2
  10. data/app/policies/uffizzi_core/api/cli/v1/projects_policy.rb +12 -0
  11. data/app/serializers/uffizzi_core/api/cli/v1/project_serializer/compose_file_serializer.rb +7 -0
  12. data/app/serializers/uffizzi_core/api/cli/v1/project_serializer/deployment_serializer.rb +13 -0
  13. data/app/serializers/uffizzi_core/api/cli/v1/project_serializer.rb +28 -1
  14. data/app/serializers/uffizzi_core/api/cli/v1/projects/deployment_serializer/container_serializer.rb +2 -1
  15. data/app/serializers/uffizzi_core/api/cli/v1/projects/deployments/container_serializer.rb +1 -1
  16. data/app/serializers/uffizzi_core/api/cli/v1/short_project_serializer.rb +7 -0
  17. data/app/serializers/uffizzi_core/controller/deploy_containers/container_serializer/container_config_file_serializer/config_file_serializer.rb +2 -2
  18. data/app/serializers/uffizzi_core/controller/deploy_containers/container_serializer.rb +16 -1
  19. data/app/services/uffizzi_core/compose_file/builders/container_builder_service.rb +13 -7
  20. data/app/services/uffizzi_core/compose_file/{configs_options_service.rb → parsers/configs_parser_service.rb} +1 -1
  21. data/app/services/uffizzi_core/compose_file/{continuous_preview_options_service.rb → parsers/continuous_preview_parser_service.rb} +1 -1
  22. data/app/services/uffizzi_core/compose_file/{ingress_options_service.rb → parsers/ingress_parser_service.rb} +1 -1
  23. data/app/services/uffizzi_core/compose_file/{secrets_options_service.rb → parsers/secrets_parser_service.rb} +1 -1
  24. data/app/services/uffizzi_core/compose_file/{services_options/command_service.rb → parsers/services/command_parser_service.rb} +1 -1
  25. data/app/services/uffizzi_core/compose_file/{services_options/configs_service.rb → parsers/services/configs_parser_service.rb} +1 -1
  26. data/app/services/uffizzi_core/compose_file/{services_options/deploy_service.rb → parsers/services/deploy_parser_service.rb} +1 -1
  27. data/app/services/uffizzi_core/compose_file/{services_options/entrypoint_service.rb → parsers/services/entrypoint_parser_service.rb} +1 -1
  28. data/app/services/uffizzi_core/compose_file/{services_options/env_file_service.rb → parsers/services/env_file_parser_service.rb} +1 -1
  29. data/app/services/uffizzi_core/compose_file/{services_options/environment_service.rb → parsers/services/environment_parser_service.rb} +2 -2
  30. data/app/services/uffizzi_core/compose_file/parsers/services/healthcheck_parser_service.rb +73 -0
  31. data/app/services/uffizzi_core/compose_file/{services_options/image_service.rb → parsers/services/image_parser_service.rb} +1 -1
  32. data/app/services/uffizzi_core/compose_file/{services_options/secrets_service.rb → parsers/services/secrets_parser_service.rb} +1 -1
  33. data/app/services/uffizzi_core/compose_file/{services_options_service.rb → parsers/services_parser_service.rb} +22 -12
  34. data/app/services/uffizzi_core/compose_file/{variables_service.rb → parsers/variables_parser_service.rb} +1 -1
  35. data/app/services/uffizzi_core/compose_file/template_service.rb +4 -4
  36. data/app/services/uffizzi_core/compose_file_service.rb +10 -6
  37. data/app/services/uffizzi_core/deployment_service.rb +3 -2
  38. data/app/services/uffizzi_core/project_service.rb +10 -0
  39. data/app/services/uffizzi_core/user_generator_service.rb +11 -5
  40. data/config/locales/en.yml +1 -0
  41. data/config/routes.rb +1 -1
  42. data/db/migrate/20220419074956_add_health_check_to_containers.rb +7 -0
  43. data/lib/tasks/uffizzi_core_tasks.rake +1 -1
  44. data/lib/uffizzi_core/version.rb +1 -1
  45. data/swagger/v1/swagger.json +173 -1
  46. metadata +23 -19
  47. data/app/lib/uffizzi_core/concerns/models/activity_item.rb +0 -39
  48. data/app/lib/uffizzi_core/concerns/models/credential.rb +0 -65
  49. data/app/lib/uffizzi_core/concerns/models/repo.rb +0 -33
@@ -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,
@@ -8,12 +8,12 @@ module UffizziCore::DeploymentService
8
8
  building: :building,
9
9
  deploying: :deploying,
10
10
  failed: :failed,
11
+ queued: :queued,
11
12
  }.freeze
12
13
 
13
14
  class << self
14
15
  def create_from_compose(compose_file, project, user)
15
16
  deployment_attributes = ActionController::Parameters.new(compose_file.template.payload)
16
-
17
17
  deployment_form = UffizziCore::Api::Cli::V1::Deployment::CreateForm.new(deployment_attributes)
18
18
  deployment_form.assign_dependences!(project, user)
19
19
  deployment_form.compose_file = compose_file
@@ -242,10 +242,11 @@ module UffizziCore::DeploymentService
242
242
 
243
243
  def deployment_process_status(deployment)
244
244
  containers = deployment.active_containers
245
- activity_items = containers.map { |container| container.activity_items.order_by_id.last }
245
+ activity_items = containers.map { |container| container.activity_items.order_by_id.last }.compact
246
246
  events = activity_items.map { |activity_item| activity_item.events.order_by_id.last&.state }
247
247
  events = events.flatten.uniq
248
248
 
249
+ return DEPLOYMENT_PROCESS_STATUSES[:queued] if events.empty?
249
250
  return DEPLOYMENT_PROCESS_STATUSES[:failed] if events.include?(UffizziCore::Event.state.failed)
250
251
  return DEPLOYMENT_PROCESS_STATUSES[:building] if events.include?(UffizziCore::Event.state.building)
251
252
 
@@ -34,5 +34,15 @@ module UffizziCore::ProjectService
34
34
 
35
35
  UffizziCore::ComposeFile::ErrorsService.update_compose_errors!(compose_file, new_errors, compose_file.content)
36
36
  end
37
+
38
+ def add_users_to_project!(project, current_user)
39
+ user_projects = []
40
+
41
+ current_user.organizational_account.memberships.where(role: UffizziCore::Membership.role.admin).map do |membership|
42
+ user_projects << { project: project, user: membership.user, role: UffizziCore::UserProject.role.admin }
43
+ end
44
+
45
+ UffizziCore::UserProject.create!(user_projects)
46
+ end
37
47
  end
38
48
  end
@@ -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}'"
data/config/routes.rb CHANGED
@@ -15,7 +15,7 @@ UffizziCore::Engine.routes.draw do
15
15
  post :google
16
16
  end
17
17
 
18
- resources :projects, only: ['index'], param: :slug do
18
+ resources :projects, only: ['index', 'show', 'create', 'destroy'], param: :slug do
19
19
  scope module: :projects do
20
20
  resource :compose_file, only: ['show', 'create', 'destroy']
21
21
  resources :deployments, only: ['index', 'show', 'create', 'destroy', 'update'] do
@@ -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.14'
4
+ VERSION = '0.2.0'
5
5
  end
@@ -1134,6 +1134,9 @@
1134
1134
  "properties": {
1135
1135
  "slug": {
1136
1136
  "type": "string"
1137
+ },
1138
+ "name": {
1139
+ "type": "string"
1137
1140
  }
1138
1141
  }
1139
1142
  }
@@ -1149,6 +1152,143 @@
1149
1152
  "summary": "Get projects of current user",
1150
1153
  "x-controller": "uffizzi_core/api/cli/v1/projects",
1151
1154
  "x-action": "index"
1155
+ },
1156
+ "post": {
1157
+ "tags": [
1158
+ "Project"
1159
+ ],
1160
+ "operationId": "Project-create",
1161
+ "parameters": [
1162
+ {
1163
+ "name": "params",
1164
+ "description": "params",
1165
+ "required": true,
1166
+ "in": "body",
1167
+ "schema": {
1168
+ "type": "object",
1169
+ "properties": {
1170
+ "name": {
1171
+ "type": "string"
1172
+ },
1173
+ "slug": {
1174
+ "type": "string"
1175
+ },
1176
+ "description": {
1177
+ "type": "string"
1178
+ }
1179
+ }
1180
+ }
1181
+ }
1182
+ ],
1183
+ "responses": {
1184
+ "200": {
1185
+ "description": "OK",
1186
+ "schema": {
1187
+ "type": "object",
1188
+ "properties": {
1189
+ "project": {
1190
+ "$ref": "#/definitions/Project"
1191
+ }
1192
+ }
1193
+ }
1194
+ },
1195
+ "404": {
1196
+ "description": "Not Found"
1197
+ },
1198
+ "401": {
1199
+ "description": "Not authorized"
1200
+ },
1201
+ "422": {
1202
+ "description": "Unprocessable entity",
1203
+ "schema": {
1204
+ "type": "object",
1205
+ "properties": {
1206
+ "errors": {
1207
+ "type": "object",
1208
+ "properties": {
1209
+ "password": {
1210
+ "type": "string"
1211
+ }
1212
+ }
1213
+ }
1214
+ }
1215
+ }
1216
+ }
1217
+ },
1218
+ "description": "Create a project",
1219
+ "summary": "Create a project",
1220
+ "x-controller": "uffizzi_core/api/cli/v1/projects",
1221
+ "x-action": "create"
1222
+ }
1223
+ },
1224
+ "/api/cli/v1/projects/{slug}": {
1225
+ "get": {
1226
+ "tags": [
1227
+ "Project"
1228
+ ],
1229
+ "operationId": "Project-show",
1230
+ "parameters": [
1231
+ {
1232
+ "name": "slug",
1233
+ "description": "Scope response to slug",
1234
+ "required": true,
1235
+ "in": "path",
1236
+ "type": "string"
1237
+ }
1238
+ ],
1239
+ "responses": {
1240
+ "204": {
1241
+ "description": "No content"
1242
+ },
1243
+ "404": {
1244
+ "description": "Not Found"
1245
+ },
1246
+ "401": {
1247
+ "description": "Not authorized"
1248
+ }
1249
+ },
1250
+ "description": "Get a project by slug",
1251
+ "summary": "Get a project by slug",
1252
+ "x-controller": "uffizzi_core/api/cli/v1/projects",
1253
+ "x-action": "show"
1254
+ },
1255
+ "delete": {
1256
+ "tags": [
1257
+ "Project"
1258
+ ],
1259
+ "operationId": "Project-destroy",
1260
+ "parameters": [
1261
+ {
1262
+ "name": "slug",
1263
+ "description": "Scope response to slug",
1264
+ "required": true,
1265
+ "in": "path",
1266
+ "type": "string"
1267
+ }
1268
+ ],
1269
+ "responses": {
1270
+ "200": {
1271
+ "description": "OK",
1272
+ "schema": {
1273
+ "type": "object",
1274
+ "properties": {
1275
+ "project": {
1276
+ "$ref": "#/definitions/Project"
1277
+ }
1278
+ }
1279
+ }
1280
+ },
1281
+ "404": {
1282
+ "description": "Not Found"
1283
+ },
1284
+ "401": {
1285
+ "description": "Not authorized"
1286
+ }
1287
+ },
1288
+ "description": "Delete a project",
1289
+ "summary": "Delete a project",
1290
+ "x-controller": "uffizzi_core/api/cli/v1/projects",
1291
+ "x-action": "destroy"
1152
1292
  }
1153
1293
  },
1154
1294
  "/api/cli/v1/session": {
@@ -1475,11 +1615,43 @@
1475
1615
  }
1476
1616
  }
1477
1617
  },
1478
- "UffizziCore_Project": {
1618
+ "Project": {
1479
1619
  "type": "object",
1480
1620
  "properties": {
1481
1621
  "slug": {
1482
1622
  "type": "string"
1623
+ },
1624
+ "name": {
1625
+ "type": "string"
1626
+ },
1627
+ "description": {
1628
+ "type": "string"
1629
+ },
1630
+ "created_at": {
1631
+ "type": "string",
1632
+ "format": "date-time"
1633
+ },
1634
+ "secrets": {
1635
+ "type": "string"
1636
+ },
1637
+ "default_compose": {
1638
+ "type": "object",
1639
+ "properties": {
1640
+ "source": {
1641
+ "type": "string"
1642
+ }
1643
+ }
1644
+ },
1645
+ "deployments": {
1646
+ "type": "object",
1647
+ "properties": {
1648
+ "id": {
1649
+ "type": "integer"
1650
+ },
1651
+ "domain": {
1652
+ "type": "string"
1653
+ }
1654
+ }
1483
1655
  }
1484
1656
  }
1485
1657
  }
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.14
4
+ version: 0.2.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: 2022-05-31 00:00:00.000000000 Z
12
+ date: 2022-06-07 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
@@ -736,6 +737,7 @@ files:
736
737
  - app/forms/uffizzi_core/api/cli/v1/config_file/create_form.rb
737
738
  - app/forms/uffizzi_core/api/cli/v1/deployment/create_form.rb
738
739
  - app/forms/uffizzi_core/api/cli/v1/deployment/update_form.rb
740
+ - app/forms/uffizzi_core/api/cli/v1/project/create_form.rb
739
741
  - app/forms/uffizzi_core/api/cli/v1/project/update_form.rb
740
742
  - app/forms/uffizzi_core/api/cli/v1/secret/bulk_assign_form.rb
741
743
  - app/forms/uffizzi_core/api/cli/v1/session_create_form.rb
@@ -757,9 +759,6 @@ files:
757
759
  - app/jobs/uffizzi_core/deployment/delete_job.rb
758
760
  - app/jobs/uffizzi_core/deployment/deploy_containers_job.rb
759
761
  - app/jobs/uffizzi_core/deployment/manage_deploy_activity_item_job.rb
760
- - app/lib/uffizzi_core/concerns/models/activity_item.rb
761
- - app/lib/uffizzi_core/concerns/models/credential.rb
762
- - app/lib/uffizzi_core/concerns/models/repo.rb
763
762
  - app/lib/uffizzi_core/rbac/user_access_service.rb
764
763
  - app/mailers/uffizzi_core/application_mailer.rb
765
764
  - app/models/concerns/uffizzi_core/hashid_concern.rb
@@ -838,6 +837,8 @@ files:
838
837
  - app/responders/uffizzi_core/json_responder.rb
839
838
  - app/serializers/uffizzi_core/api/cli/v1/account/credential_serializer.rb
840
839
  - app/serializers/uffizzi_core/api/cli/v1/project_serializer.rb
840
+ - app/serializers/uffizzi_core/api/cli/v1/project_serializer/compose_file_serializer.rb
841
+ - app/serializers/uffizzi_core/api/cli/v1/project_serializer/deployment_serializer.rb
841
842
  - app/serializers/uffizzi_core/api/cli/v1/projects/compose_file_serializer.rb
842
843
  - app/serializers/uffizzi_core/api/cli/v1/projects/deployment_serializer.rb
843
844
  - app/serializers/uffizzi_core/api/cli/v1/projects/deployment_serializer/container_serializer.rb
@@ -847,6 +848,7 @@ files:
847
848
  - app/serializers/uffizzi_core/api/cli/v1/projects/deployments/container_serializer/container_config_file_serializer.rb
848
849
  - app/serializers/uffizzi_core/api/cli/v1/projects/deployments/container_serializer/container_config_file_serializer/config_file_serializer.rb
849
850
  - app/serializers/uffizzi_core/api/cli/v1/projects/secret_serializer.rb
851
+ - app/serializers/uffizzi_core/api/cli/v1/short_project_serializer.rb
850
852
  - app/serializers/uffizzi_core/api/cli/v1/user_serializer.rb
851
853
  - app/serializers/uffizzi_core/api/cli/v1/user_serializer/account_serializer.rb
852
854
  - app/serializers/uffizzi_core/base_serializer.rb
@@ -869,25 +871,26 @@ files:
869
871
  - app/services/uffizzi_core/compose_file/builders/variables_builder_service.rb
870
872
  - app/services/uffizzi_core/compose_file/config_files_service.rb
871
873
  - app/services/uffizzi_core/compose_file/config_option_service.rb
872
- - app/services/uffizzi_core/compose_file/configs_options_service.rb
873
874
  - app/services/uffizzi_core/compose_file/container_service.rb
874
- - app/services/uffizzi_core/compose_file/continuous_preview_options_service.rb
875
875
  - app/services/uffizzi_core/compose_file/dependencies_service.rb
876
876
  - app/services/uffizzi_core/compose_file/errors_service.rb
877
877
  - app/services/uffizzi_core/compose_file/github_dependencies_service.rb
878
- - app/services/uffizzi_core/compose_file/ingress_options_service.rb
879
- - app/services/uffizzi_core/compose_file/secrets_options_service.rb
880
- - app/services/uffizzi_core/compose_file/services_options/command_service.rb
881
- - app/services/uffizzi_core/compose_file/services_options/configs_service.rb
882
- - app/services/uffizzi_core/compose_file/services_options/deploy_service.rb
883
- - app/services/uffizzi_core/compose_file/services_options/entrypoint_service.rb
884
- - app/services/uffizzi_core/compose_file/services_options/env_file_service.rb
885
- - app/services/uffizzi_core/compose_file/services_options/environment_service.rb
886
- - app/services/uffizzi_core/compose_file/services_options/image_service.rb
887
- - app/services/uffizzi_core/compose_file/services_options/secrets_service.rb
888
- - app/services/uffizzi_core/compose_file/services_options_service.rb
878
+ - app/services/uffizzi_core/compose_file/parsers/configs_parser_service.rb
879
+ - app/services/uffizzi_core/compose_file/parsers/continuous_preview_parser_service.rb
880
+ - app/services/uffizzi_core/compose_file/parsers/ingress_parser_service.rb
881
+ - app/services/uffizzi_core/compose_file/parsers/secrets_parser_service.rb
882
+ - app/services/uffizzi_core/compose_file/parsers/services/command_parser_service.rb
883
+ - app/services/uffizzi_core/compose_file/parsers/services/configs_parser_service.rb
884
+ - app/services/uffizzi_core/compose_file/parsers/services/deploy_parser_service.rb
885
+ - app/services/uffizzi_core/compose_file/parsers/services/entrypoint_parser_service.rb
886
+ - app/services/uffizzi_core/compose_file/parsers/services/env_file_parser_service.rb
887
+ - app/services/uffizzi_core/compose_file/parsers/services/environment_parser_service.rb
888
+ - app/services/uffizzi_core/compose_file/parsers/services/healthcheck_parser_service.rb
889
+ - app/services/uffizzi_core/compose_file/parsers/services/image_parser_service.rb
890
+ - app/services/uffizzi_core/compose_file/parsers/services/secrets_parser_service.rb
891
+ - app/services/uffizzi_core/compose_file/parsers/services_parser_service.rb
892
+ - app/services/uffizzi_core/compose_file/parsers/variables_parser_service.rb
889
893
  - app/services/uffizzi_core/compose_file/template_service.rb
890
- - app/services/uffizzi_core/compose_file/variables_service.rb
891
894
  - app/services/uffizzi_core/compose_file_service.rb
892
895
  - app/services/uffizzi_core/container_service.rb
893
896
  - app/services/uffizzi_core/controller_service.rb
@@ -923,6 +926,7 @@ files:
923
926
  - db/migrate/20220329123323_rename_project_secrets_to_secrets.rb
924
927
  - db/migrate/20220329124542_add_resource_to_secrets.rb
925
928
  - db/migrate/20220329143241_remove_project_ref_from_secrets.rb
929
+ - db/migrate/20220419074956_add_health_check_to_containers.rb
926
930
  - db/migrate/20220525113412_rename_name_to_uffizzi_containers.rb
927
931
  - db/seeds.rb
928
932
  - lib/tasks/uffizzi_core_tasks.rake
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module UffizziCore::Concerns::Models::ActivityItem
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- include UffizziCore::ActivityItemRepo
8
-
9
- self.table_name = UffizziCore.table_names[:activity_items]
10
-
11
- belongs_to :deployment
12
- belongs_to :container
13
- belongs_to :build, optional: true
14
-
15
- has_many :events, dependent: :destroy
16
-
17
- scope :docker, -> {
18
- where(type: UffizziCore::ActivityItem::Docker.name)
19
- }
20
-
21
- scope :github, -> {
22
- where(type: UffizziCore::ActivityItem::Github.name)
23
- }
24
-
25
- def docker?
26
- type == UffizziCore::ActivityItem::Docker.name
27
- end
28
-
29
- def image
30
- [namespace, name].compact.join('/')
31
- end
32
-
33
- def full_image
34
- return "#{image}:#{tag}" if docker?
35
-
36
- ''
37
- end
38
- end
39
- end
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module UffizziCore::Concerns::Models::Credential
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- include AASM
8
- include UffizziCore::CredentialRepo
9
-
10
- self.table_name = UffizziCore.table_names[:credentials]
11
-
12
- belongs_to :account
13
-
14
- before_destroy :remove_token
15
-
16
- validates :registry_url, presence: true
17
-
18
- aasm :state, column: :state do
19
- state :not_connected, initial: true
20
- state :active
21
- state :unauthorized
22
-
23
- event :activate do
24
- transitions from: [:not_connected, :unauthorized], to: :active
25
- end
26
-
27
- event :unauthorize do
28
- transitions from: [:not_connected, :active], to: :unauthorized
29
- end
30
- end
31
-
32
- def github_container_registry?
33
- type == UffizziCore::Credential::GithubContainerRegistry.name
34
- end
35
-
36
- def docker_hub?
37
- type == UffizziCore::Credential::DockerHub.name
38
- end
39
-
40
- def azure?
41
- type == UffizziCore::Credential::Azure.name
42
- end
43
-
44
- def google?
45
- type == UffizziCore::Credential::Google.name
46
- end
47
-
48
- def amazon?
49
- type == UffizziCore::Credential::Amazon.name
50
- end
51
-
52
- private
53
-
54
- def remove_token
55
- account.projects.find_each do |project|
56
- project.deployments.find_each do |deployment|
57
- containers = deployment.containers
58
- attributes = { continuously_deploy: UffizziCore::Container::STATE_DISABLED }
59
-
60
- containers.with_docker_hub_repo.update_all(attributes) if docker_hub?
61
- end
62
- end
63
- end
64
- end
65
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module UffizziCore::Concerns::Models::Repo
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- extend Enumerize
8
- include UffizziCore::RepoRepo
9
-
10
- self.table_name = UffizziCore.table_names[:repos]
11
-
12
- enumerize :kind, in: [:buildpacks18, :dockerfile, :dotnet, :gatsby, :barestatic], predicates: true
13
-
14
- belongs_to :project
15
- has_one :container, inverse_of: :repo, dependent: :destroy
16
- has_many :builds, dependent: :destroy
17
-
18
- validates :dockerfile_path, presence: true, if: :dockerfile?
19
- validates :delete_preview_after, numericality: { greater_than: 0, only_integer: true }, allow_nil: true
20
-
21
- def docker_hub?
22
- type == UffizziCore::Repo::DockerHub.name
23
- end
24
-
25
- def azure?
26
- type == UffizziCore::Repo::Azure.name
27
- end
28
-
29
- def google?
30
- type == UffizziCore::Repo::Google.name
31
- end
32
- end
33
- end