uffizzi_core 0.1.14 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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