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.
- checksums.yaml +4 -4
- data/app/clients/uffizzi_core/docker_hub_client/not_authorized_error.rb +6 -0
- data/app/controllers/concerns/uffizzi_core/dependency_injection_concern.rb +6 -0
- data/app/controllers/uffizzi_core/api/cli/v1/projects_controller.rb +57 -2
- data/app/forms/uffizzi_core/api/cli/v1/deployment/create_form.rb +1 -0
- data/app/forms/uffizzi_core/api/cli/v1/project/create_form.rb +7 -0
- data/app/forms/uffizzi_core/api/cli/v1/template/create_form.rb +2 -0
- data/app/lib/uffizzi_core/rbac/user_access_service.rb +4 -0
- data/app/models/uffizzi_core/project.rb +9 -2
- data/app/policies/uffizzi_core/api/cli/v1/projects_policy.rb +12 -0
- data/app/serializers/uffizzi_core/api/cli/v1/project_serializer/compose_file_serializer.rb +7 -0
- data/app/serializers/uffizzi_core/api/cli/v1/project_serializer/deployment_serializer.rb +13 -0
- data/app/serializers/uffizzi_core/api/cli/v1/project_serializer.rb +28 -1
- data/app/serializers/uffizzi_core/api/cli/v1/projects/deployment_serializer/container_serializer.rb +2 -1
- data/app/serializers/uffizzi_core/api/cli/v1/projects/deployments/container_serializer.rb +1 -1
- data/app/serializers/uffizzi_core/api/cli/v1/short_project_serializer.rb +7 -0
- data/app/serializers/uffizzi_core/controller/deploy_containers/container_serializer/container_config_file_serializer/config_file_serializer.rb +2 -2
- data/app/serializers/uffizzi_core/controller/deploy_containers/container_serializer.rb +16 -1
- data/app/services/uffizzi_core/compose_file/builders/container_builder_service.rb +13 -7
- data/app/services/uffizzi_core/compose_file/{configs_options_service.rb → parsers/configs_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{continuous_preview_options_service.rb → parsers/continuous_preview_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{ingress_options_service.rb → parsers/ingress_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{secrets_options_service.rb → parsers/secrets_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options/command_service.rb → parsers/services/command_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options/configs_service.rb → parsers/services/configs_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options/deploy_service.rb → parsers/services/deploy_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options/entrypoint_service.rb → parsers/services/entrypoint_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options/env_file_service.rb → parsers/services/env_file_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options/environment_service.rb → parsers/services/environment_parser_service.rb} +2 -2
- data/app/services/uffizzi_core/compose_file/parsers/services/healthcheck_parser_service.rb +73 -0
- data/app/services/uffizzi_core/compose_file/{services_options/image_service.rb → parsers/services/image_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options/secrets_service.rb → parsers/services/secrets_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/{services_options_service.rb → parsers/services_parser_service.rb} +22 -12
- data/app/services/uffizzi_core/compose_file/{variables_service.rb → parsers/variables_parser_service.rb} +1 -1
- data/app/services/uffizzi_core/compose_file/template_service.rb +4 -4
- data/app/services/uffizzi_core/compose_file_service.rb +10 -6
- data/app/services/uffizzi_core/deployment_service.rb +3 -2
- data/app/services/uffizzi_core/project_service.rb +10 -0
- data/app/services/uffizzi_core/user_generator_service.rb +11 -5
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +1 -1
- data/db/migrate/20220419074956_add_health_check_to_containers.rb +7 -0
- data/lib/tasks/uffizzi_core_tasks.rake +1 -1
- data/lib/uffizzi_core/version.rb +1 -1
- data/swagger/v1/swagger.json +173 -1
- metadata +23 -19
- data/app/lib/uffizzi_core/concerns/models/activity_item.rb +0 -39
- data/app/lib/uffizzi_core/concerns/models/credential.rb +0 -65
- 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::
|
21
|
-
secrets_data = UffizziCore::ComposeFile::
|
22
|
-
containers_data = UffizziCore::ComposeFile::
|
23
|
-
|
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::
|
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::
|
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
|
-
|
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
|
-
|
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
|
-
|
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])
|
data/config/locales/en.yml
CHANGED
@@ -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
|
@@ -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.
|
17
|
+
UffizziCore::UserGeneratorService.safe_generate(ENV['UFFIZZI_USER_EMAIL'], ENV['UFFIZZI_USER_PASSWORD'], ENV['UFFIZZI_PROJECT_NAME'])
|
18
18
|
end
|
19
19
|
end
|
data/lib/uffizzi_core/version.rb
CHANGED
data/swagger/v1/swagger.json
CHANGED
@@ -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
|
-
"
|
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.
|
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-
|
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/
|
879
|
-
- app/services/uffizzi_core/compose_file/
|
880
|
-
- app/services/uffizzi_core/compose_file/
|
881
|
-
- app/services/uffizzi_core/compose_file/
|
882
|
-
- app/services/uffizzi_core/compose_file/
|
883
|
-
- app/services/uffizzi_core/compose_file/
|
884
|
-
- app/services/uffizzi_core/compose_file/
|
885
|
-
- app/services/uffizzi_core/compose_file/
|
886
|
-
- app/services/uffizzi_core/compose_file/
|
887
|
-
- app/services/uffizzi_core/compose_file/
|
888
|
-
- app/services/uffizzi_core/compose_file/
|
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
|