peak-sdk 1.5.0__py3-none-any.whl → 1.7.0__py3-none-any.whl
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.
- peak/_metadata.py +80 -5
- peak/_version.py +1 -1
- peak/cli/args.py +1 -0
- peak/cli/cli.py +3 -2
- peak/cli/helpers.py +1 -0
- peak/cli/press/apps/specs.py +2 -0
- peak/cli/press/blocks/specs.py +68 -24
- peak/cli/press/deployments.py +41 -0
- peak/cli/press/specs.py +4 -2
- peak/cli/resources/alerts/__init__.py +35 -0
- peak/cli/resources/alerts/emails.py +360 -0
- peak/cli/resources/images.py +19 -7
- peak/cli/resources/services.py +23 -0
- peak/cli/resources/tenants.py +4 -1
- peak/cli/resources/workflows.py +81 -19
- peak/cli/ruff.toml +5 -3
- peak/compression.py +2 -2
- peak/exceptions.py +4 -6
- peak/handler.py +3 -5
- peak/helpers.py +8 -9
- peak/output.py +2 -2
- peak/press/apps.py +18 -19
- peak/press/blocks.py +396 -155
- peak/press/deployments.py +30 -4
- peak/press/specs.py +12 -14
- peak/resources/__init__.py +3 -2
- peak/resources/alerts.py +309 -0
- peak/resources/artifacts.py +2 -4
- peak/resources/images.py +317 -100
- peak/resources/services.py +7 -6
- peak/resources/webapps.py +3 -5
- peak/resources/workflows.py +103 -13
- peak/sample_yaml/press/apps/specs/create_app_spec.yaml +2 -0
- peak/sample_yaml/press/apps/specs/create_app_spec_release.yaml +2 -0
- peak/sample_yaml/press/blocks/specs/service/api/create_block_spec.yaml +102 -0
- peak/sample_yaml/press/blocks/specs/service/api/create_block_spec_release.yaml +88 -0
- peak/sample_yaml/press/blocks/specs/service/webapp/create_block_spec.yaml +103 -0
- peak/sample_yaml/press/blocks/specs/service/webapp/create_block_spec_release.yaml +89 -0
- peak/sample_yaml/press/blocks/specs/{create_block_spec.yaml → workflow/create_block_spec.yaml} +20 -1
- peak/sample_yaml/press/blocks/specs/{create_block_spec_release.yaml → workflow/create_block_spec_release.yaml} +20 -1
- peak/sample_yaml/resources/emails/send_email.yaml +15 -0
- peak/sample_yaml/resources/images/dockerfile/create_image.yaml +3 -0
- peak/sample_yaml/resources/images/dockerfile/create_image_version.yaml +3 -0
- peak/sample_yaml/resources/images/dockerfile/update_version.yaml +3 -0
- peak/sample_yaml/resources/images/github/create_image.yaml +3 -0
- peak/sample_yaml/resources/images/github/create_image_version.yaml +3 -0
- peak/sample_yaml/resources/images/github/update_version.yaml +3 -0
- peak/sample_yaml/resources/images/upload/create_image.yaml +3 -0
- peak/sample_yaml/resources/images/upload/create_image_version.yaml +3 -0
- peak/sample_yaml/resources/images/upload/create_or_update_image.yaml +3 -0
- peak/sample_yaml/resources/images/upload/update_version.yaml +3 -0
- peak/sample_yaml/resources/services/create_or_update_service.yaml +1 -0
- peak/sample_yaml/resources/services/create_service.yaml +1 -0
- peak/sample_yaml/resources/services/update_service.yaml +1 -0
- peak/sample_yaml/resources/workflows/create_or_update_workflow.yaml +36 -0
- peak/sample_yaml/resources/workflows/create_workflow.yaml +19 -1
- peak/sample_yaml/resources/workflows/patch_workflow.yaml +36 -0
- peak/sample_yaml/resources/workflows/update_workflow.yaml +36 -0
- peak/session.py +1 -1
- peak/telemetry.py +1 -1
- peak/template.py +6 -4
- peak/tools/logging/__init__.py +26 -268
- peak/tools/logging/log_level.py +35 -3
- peak/tools/logging/logger.py +389 -0
- {peak_sdk-1.5.0.dist-info → peak_sdk-1.7.0.dist-info}/METADATA +19 -20
- {peak_sdk-1.5.0.dist-info → peak_sdk-1.7.0.dist-info}/RECORD +69 -60
- {peak_sdk-1.5.0.dist-info → peak_sdk-1.7.0.dist-info}/WHEEL +1 -1
- {peak_sdk-1.5.0.dist-info → peak_sdk-1.7.0.dist-info}/LICENSE +0 -0
- {peak_sdk-1.5.0.dist-info → peak_sdk-1.7.0.dist-info}/entry_points.txt +0 -0
peak/resources/workflows.py
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
# # along with this program. If not, see <https://apache.org/licenses/LICENSE-2.0>
|
20
20
|
#
|
21
21
|
"""Workflow client module."""
|
22
|
+
|
22
23
|
from __future__ import annotations
|
23
24
|
|
24
25
|
from typing import Any, Dict, Iterator, List, Literal, Optional, overload
|
@@ -51,8 +52,7 @@ class Workflow(BaseClient):
|
|
51
52
|
name: Optional[str] = None,
|
52
53
|
*,
|
53
54
|
return_iterator: Literal[False],
|
54
|
-
) -> Dict[str, Any]:
|
55
|
-
...
|
55
|
+
) -> Dict[str, Any]: ...
|
56
56
|
|
57
57
|
@overload
|
58
58
|
def list_workflows(
|
@@ -65,8 +65,7 @@ class Workflow(BaseClient):
|
|
65
65
|
name: Optional[str] = None,
|
66
66
|
*,
|
67
67
|
return_iterator: Literal[True] = True,
|
68
|
-
) -> Iterator[Dict[str, Any]]:
|
69
|
-
...
|
68
|
+
) -> Iterator[Dict[str, Any]]: ...
|
70
69
|
|
71
70
|
def list_workflows(
|
72
71
|
self: Workflow,
|
@@ -166,10 +165,30 @@ class Workflow(BaseClient):
|
|
166
165
|
"runtimeExceeded": "number"
|
167
166
|
},
|
168
167
|
"user": "string",
|
168
|
+
},
|
169
|
+
{
|
170
|
+
"events": {
|
171
|
+
"success": "boolean",
|
172
|
+
"fail": "boolean",
|
173
|
+
"runtimeExceeded": "number"
|
174
|
+
},
|
169
175
|
"webhook": {
|
170
176
|
"name": "string(required)",
|
171
177
|
"url": "string(required)",
|
172
|
-
"payload": "string(required)"
|
178
|
+
"payload": "string(required)"
|
179
|
+
}
|
180
|
+
},
|
181
|
+
{
|
182
|
+
"events": {
|
183
|
+
"success": "boolean",
|
184
|
+
"fail": "boolean",
|
185
|
+
"runtimeExceeded": "number"
|
186
|
+
},
|
187
|
+
"email": {
|
188
|
+
"name": "string",
|
189
|
+
"recipients": {
|
190
|
+
"to": ["string"]
|
191
|
+
}
|
173
192
|
}
|
174
193
|
}
|
175
194
|
],
|
@@ -295,10 +314,30 @@ class Workflow(BaseClient):
|
|
295
314
|
"runtimeExceeded": "number"
|
296
315
|
},
|
297
316
|
"user": "string",
|
317
|
+
},
|
318
|
+
{
|
319
|
+
"events": {
|
320
|
+
"success": "boolean",
|
321
|
+
"fail": "boolean",
|
322
|
+
"runtimeExceeded": "number"
|
323
|
+
},
|
298
324
|
"webhook": {
|
299
325
|
"name": "string(required)",
|
300
326
|
"url": "string(required)",
|
301
|
-
"payload": "string(required)"
|
327
|
+
"payload": "string(required)"
|
328
|
+
}
|
329
|
+
},
|
330
|
+
{
|
331
|
+
"events": {
|
332
|
+
"success": "boolean",
|
333
|
+
"fail": "boolean",
|
334
|
+
"runtimeExceeded": "number"
|
335
|
+
},
|
336
|
+
"email": {
|
337
|
+
"name": "string",
|
338
|
+
"recipients": {
|
339
|
+
"to": ["string"]
|
340
|
+
}
|
302
341
|
}
|
303
342
|
}
|
304
343
|
],
|
@@ -382,7 +421,7 @@ class Workflow(BaseClient):
|
|
382
421
|
ForbiddenException: The user does not have permission to perform the operation.
|
383
422
|
InternalServerErrorException: The server failed to process the request.
|
384
423
|
"""
|
385
|
-
workflow_name = body
|
424
|
+
workflow_name = body.get("name", "")
|
386
425
|
response = (
|
387
426
|
{}
|
388
427
|
if not len(workflow_name)
|
@@ -463,10 +502,30 @@ class Workflow(BaseClient):
|
|
463
502
|
"runtimeExceeded": "number"
|
464
503
|
},
|
465
504
|
"user": "string",
|
505
|
+
},
|
506
|
+
{
|
507
|
+
"events": {
|
508
|
+
"success": "boolean",
|
509
|
+
"fail": "boolean",
|
510
|
+
"runtimeExceeded": "number"
|
511
|
+
},
|
466
512
|
"webhook": {
|
467
513
|
"name": "string(required)",
|
468
514
|
"url": "string(required)",
|
469
|
-
"payload": "string(required)"
|
515
|
+
"payload": "string(required)"
|
516
|
+
}
|
517
|
+
},
|
518
|
+
{
|
519
|
+
"events": {
|
520
|
+
"success": "boolean",
|
521
|
+
"fail": "boolean",
|
522
|
+
"runtimeExceeded": "number"
|
523
|
+
},
|
524
|
+
"email": {
|
525
|
+
"name": "string",
|
526
|
+
"recipients": {
|
527
|
+
"to": ["string"]
|
528
|
+
}
|
470
529
|
}
|
471
530
|
}
|
472
531
|
],
|
@@ -624,10 +683,30 @@ class Workflow(BaseClient):
|
|
624
683
|
"runtimeExceeded": "number"
|
625
684
|
},
|
626
685
|
"user": "string",
|
686
|
+
},
|
687
|
+
{
|
688
|
+
"events": {
|
689
|
+
"success": "boolean",
|
690
|
+
"fail": "boolean",
|
691
|
+
"runtimeExceeded": "number"
|
692
|
+
},
|
627
693
|
"webhook": {
|
628
694
|
"name": "string(required)",
|
629
695
|
"url": "string(required)",
|
630
|
-
"payload": "string(required)"
|
696
|
+
"payload": "string(required)"
|
697
|
+
}
|
698
|
+
},
|
699
|
+
{
|
700
|
+
"events": {
|
701
|
+
"success": "boolean",
|
702
|
+
"fail": "boolean",
|
703
|
+
"runtimeExceeded": "number"
|
704
|
+
},
|
705
|
+
"email": {
|
706
|
+
"name": "string",
|
707
|
+
"recipients": {
|
708
|
+
"to": ["string"]
|
709
|
+
}
|
631
710
|
}
|
632
711
|
}
|
633
712
|
],
|
@@ -961,12 +1040,13 @@ class Workflow(BaseClient):
|
|
961
1040
|
workflow_id: int,
|
962
1041
|
date_from: Optional[str] = None,
|
963
1042
|
date_to: Optional[str] = None,
|
1043
|
+
status: Optional[List[str]] = None,
|
1044
|
+
count: Optional[int] = None,
|
964
1045
|
page_size: Optional[int] = None,
|
965
1046
|
page_number: Optional[int] = None,
|
966
1047
|
*,
|
967
1048
|
return_iterator: Literal[False],
|
968
|
-
) -> Dict[str, Any]:
|
969
|
-
...
|
1049
|
+
) -> Dict[str, Any]: ...
|
970
1050
|
|
971
1051
|
@overload
|
972
1052
|
def list_executions(
|
@@ -974,18 +1054,21 @@ class Workflow(BaseClient):
|
|
974
1054
|
workflow_id: int,
|
975
1055
|
date_from: Optional[str] = None,
|
976
1056
|
date_to: Optional[str] = None,
|
1057
|
+
status: Optional[List[str]] = None,
|
1058
|
+
count: Optional[int] = None,
|
977
1059
|
page_size: Optional[int] = None,
|
978
1060
|
page_number: Optional[int] = None,
|
979
1061
|
*,
|
980
1062
|
return_iterator: Literal[True] = True,
|
981
|
-
) -> Iterator[Dict[str, Any]]:
|
982
|
-
...
|
1063
|
+
) -> Iterator[Dict[str, Any]]: ...
|
983
1064
|
|
984
1065
|
def list_executions(
|
985
1066
|
self: Workflow,
|
986
1067
|
workflow_id: int,
|
987
1068
|
date_from: Optional[str] = None,
|
988
1069
|
date_to: Optional[str] = None,
|
1070
|
+
status: Optional[List[str]] = None,
|
1071
|
+
count: Optional[int] = None,
|
989
1072
|
page_size: Optional[int] = None,
|
990
1073
|
page_number: Optional[int] = None,
|
991
1074
|
*,
|
@@ -1000,6 +1083,11 @@ class Workflow(BaseClient):
|
|
1000
1083
|
workflow_id (int): ID of the workflow to fetch executions.
|
1001
1084
|
date_from (str | None): The date after which the executions should be included (in ISO format). Defaults to None
|
1002
1085
|
date_to (str | None): The date till which the executions should be included (in ISO format). Defaults to None
|
1086
|
+
status (List[str] | None): The status of the executions to filter by.
|
1087
|
+
Valid values are `Success`, `Running`, `Stopped`, `Stopping` and `Failed`.
|
1088
|
+
count (int | None): Number of executions required in the provided time range or 90 days (Ordered by latest to earliest).
|
1089
|
+
For example, if 5 is provided, it will return last 5 workflow executions.
|
1090
|
+
By default, it will return all the executions.
|
1003
1091
|
page_size (int | None): Number of executions per page.
|
1004
1092
|
page_number (int | None): Page number to fetch. Only used when return_iterator is False.
|
1005
1093
|
return_iterator (bool): Whether to return an iterator object or list of executions for a specified page number, defaults to True.
|
@@ -1021,6 +1109,8 @@ class Workflow(BaseClient):
|
|
1021
1109
|
method, endpoint = HttpMethods.GET, f"{self.BASE_ENDPOINT}/workflows/executions/{workflow_id}"
|
1022
1110
|
|
1023
1111
|
params: Dict[str, Any] = {
|
1112
|
+
"count": count,
|
1113
|
+
"statuses": status,
|
1024
1114
|
"dateTo": date_to,
|
1025
1115
|
"dateFrom": date_from,
|
1026
1116
|
"pageSize": page_size,
|
@@ -0,0 +1,102 @@
|
|
1
|
+
body:
|
2
|
+
version: 1
|
3
|
+
kind: service
|
4
|
+
metadata:
|
5
|
+
name: api-service-block
|
6
|
+
title: API Service Block
|
7
|
+
summary: API Service Block
|
8
|
+
description: Creating a new service block spec of type api.
|
9
|
+
descriptionContentType: text/markdown
|
10
|
+
imageUrl: https://my-block-pics.com/image-0.jpg
|
11
|
+
tags:
|
12
|
+
- name: CLI
|
13
|
+
release:
|
14
|
+
version: 1.0.0
|
15
|
+
notes: This is the original release
|
16
|
+
config:
|
17
|
+
serviceType: api
|
18
|
+
image:
|
19
|
+
dockerfile: Dockerfile
|
20
|
+
context: "."
|
21
|
+
version: 0.0.1
|
22
|
+
parameters:
|
23
|
+
env:
|
24
|
+
param1: value1
|
25
|
+
param2: value2
|
26
|
+
secrets:
|
27
|
+
- secret1
|
28
|
+
- secret2
|
29
|
+
resources:
|
30
|
+
instanceTypeId: "@param:instance_type_id"
|
31
|
+
healthCheckURL: "@param:health_check_url"
|
32
|
+
entrypoint: |
|
33
|
+
python
|
34
|
+
app.py
|
35
|
+
minInstances: 1
|
36
|
+
parameters:
|
37
|
+
build:
|
38
|
+
- defaultValue: /health
|
39
|
+
description: Enter the health check URL
|
40
|
+
name: health_check_url
|
41
|
+
required: true
|
42
|
+
title: Health Check URL
|
43
|
+
type: string
|
44
|
+
hideValue: false
|
45
|
+
- defaultValue: 20
|
46
|
+
description: Select an instance type
|
47
|
+
name: instance_type_id
|
48
|
+
options:
|
49
|
+
- title: Pico (0.125CPU, 0.125GB RAM)
|
50
|
+
value: 20
|
51
|
+
- title: Nano (0.25CPU, 0.5GB RAM)
|
52
|
+
value: 21
|
53
|
+
- title: Micro (0.5CPU, 1GB RAM)
|
54
|
+
value: 22
|
55
|
+
required: true
|
56
|
+
title: Instance Type ID
|
57
|
+
type: number
|
58
|
+
run:
|
59
|
+
- defaultValue: AVG
|
60
|
+
description: Select an aggregation function (e.g., AVG, SUM, COUNT)
|
61
|
+
name: agg_type
|
62
|
+
required: false
|
63
|
+
title: Agg Type
|
64
|
+
type: string
|
65
|
+
hideValue: true
|
66
|
+
- defaultValue: false
|
67
|
+
description: Enable email notifications
|
68
|
+
name: email_notifications
|
69
|
+
required: false
|
70
|
+
title: Email Notifications
|
71
|
+
type: boolean
|
72
|
+
- defaultValue: 10
|
73
|
+
description: Select the number of iterations
|
74
|
+
name: num_iterations
|
75
|
+
options:
|
76
|
+
- title: Low
|
77
|
+
value: 10
|
78
|
+
- title: Medium
|
79
|
+
value: 50
|
80
|
+
- title: High
|
81
|
+
value: 100
|
82
|
+
required: false
|
83
|
+
title: Number of Iterations
|
84
|
+
type: number
|
85
|
+
- defaultValue:
|
86
|
+
- input.csv
|
87
|
+
- output.csv
|
88
|
+
description: Specify input and output file names
|
89
|
+
name: file_names
|
90
|
+
required: true
|
91
|
+
title: File Names
|
92
|
+
type: string_array
|
93
|
+
artifact:
|
94
|
+
path: "."
|
95
|
+
ignore_files:
|
96
|
+
- ".gitignore"
|
97
|
+
- ".dockerignore"
|
98
|
+
featured: true
|
99
|
+
scope: shared
|
100
|
+
tenants:
|
101
|
+
- tenant1
|
102
|
+
- tenant2
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# block_spec_release.yaml
|
2
|
+
|
3
|
+
body:
|
4
|
+
release:
|
5
|
+
version: 2.0.0
|
6
|
+
notes: This is a new release
|
7
|
+
config:
|
8
|
+
serviceType: api
|
9
|
+
image:
|
10
|
+
dockerfile: Dockerfile
|
11
|
+
context: "."
|
12
|
+
version: 0.0.1
|
13
|
+
parameters:
|
14
|
+
env:
|
15
|
+
param1: value1
|
16
|
+
param2: value2
|
17
|
+
secrets:
|
18
|
+
- secret1
|
19
|
+
- secret2
|
20
|
+
resources:
|
21
|
+
instanceTypeId: "@param:instance_type_id"
|
22
|
+
healthCheckURL: "@param:health_check_url"
|
23
|
+
entrypoint: |
|
24
|
+
python
|
25
|
+
app.py
|
26
|
+
minInstances: 1
|
27
|
+
parameters:
|
28
|
+
build:
|
29
|
+
- defaultValue: /health
|
30
|
+
description: Enter the health check URL
|
31
|
+
name: health_check_url
|
32
|
+
required: true
|
33
|
+
title: Health Check URL
|
34
|
+
type: string
|
35
|
+
hideValue: false
|
36
|
+
- defaultValue: 20
|
37
|
+
description: Select an instance type
|
38
|
+
name: instance_type_id
|
39
|
+
options:
|
40
|
+
- title: Pico (0.125CPU, 0.125GB RAM)
|
41
|
+
value: 20
|
42
|
+
- title: Nano (0.25CPU, 0.5GB RAM)
|
43
|
+
value: 21
|
44
|
+
- title: Micro (0.5CPU, 1GB RAM)
|
45
|
+
value: 22
|
46
|
+
required: true
|
47
|
+
title: Instance Type ID
|
48
|
+
type: number
|
49
|
+
run:
|
50
|
+
- defaultValue: AVG
|
51
|
+
description: Select an aggregation function (e.g., AVG, SUM, COUNT)
|
52
|
+
name: agg_type
|
53
|
+
required: false
|
54
|
+
title: Agg Type
|
55
|
+
type: string
|
56
|
+
hideValue: true
|
57
|
+
- defaultValue: false
|
58
|
+
description: Enable email notifications
|
59
|
+
name: email_notifications
|
60
|
+
required: false
|
61
|
+
title: Email Notifications
|
62
|
+
type: boolean
|
63
|
+
- defaultValue: 10
|
64
|
+
description: Select the number of iterations
|
65
|
+
name: num_iterations
|
66
|
+
options:
|
67
|
+
- title: Low
|
68
|
+
value: 10
|
69
|
+
- title: Medium
|
70
|
+
value: 50
|
71
|
+
- title: High
|
72
|
+
value: 100
|
73
|
+
required: false
|
74
|
+
title: Number of Iterations
|
75
|
+
type: number
|
76
|
+
- defaultValue:
|
77
|
+
- input.csv
|
78
|
+
- output.csv
|
79
|
+
description: Specify input and output file names
|
80
|
+
name: file_names
|
81
|
+
required: true
|
82
|
+
title: File Names
|
83
|
+
type: string_array
|
84
|
+
artifact:
|
85
|
+
path: "."
|
86
|
+
ignore_files:
|
87
|
+
- ".gitignore"
|
88
|
+
- ".dockerignore"
|
@@ -0,0 +1,103 @@
|
|
1
|
+
body:
|
2
|
+
version: 1
|
3
|
+
kind: service
|
4
|
+
metadata:
|
5
|
+
name: webapp-service-block
|
6
|
+
title: Web App Service Block
|
7
|
+
summary: Web App Service Block
|
8
|
+
description: Creating a new service block spec of type web-app.
|
9
|
+
descriptionContentType: text/markdown
|
10
|
+
imageUrl: https://my-block-pics.com/image-0.jpg
|
11
|
+
tags:
|
12
|
+
- name: CLI
|
13
|
+
release:
|
14
|
+
version: 1.0.0
|
15
|
+
notes: This is the original release
|
16
|
+
config:
|
17
|
+
serviceType: web-app
|
18
|
+
image:
|
19
|
+
dockerfile: Dockerfile
|
20
|
+
context: "."
|
21
|
+
version: 0.0.1
|
22
|
+
parameters:
|
23
|
+
env:
|
24
|
+
param1: value1
|
25
|
+
param2: value2
|
26
|
+
secrets:
|
27
|
+
- secret1
|
28
|
+
- secret2
|
29
|
+
resources:
|
30
|
+
instanceTypeId: "@param:instance_type_id"
|
31
|
+
healthCheckURL: "@param:health_check_url"
|
32
|
+
sessionStickiness: false
|
33
|
+
entrypoint: |
|
34
|
+
python
|
35
|
+
app.py
|
36
|
+
minInstances: 1
|
37
|
+
parameters:
|
38
|
+
build:
|
39
|
+
- defaultValue: /health
|
40
|
+
description: Enter the health check URL
|
41
|
+
name: health_check_url
|
42
|
+
required: true
|
43
|
+
title: Health Check URL
|
44
|
+
type: string
|
45
|
+
hideValue: false
|
46
|
+
- defaultValue: 43
|
47
|
+
description: Select an instance type
|
48
|
+
name: instance_type_id
|
49
|
+
options:
|
50
|
+
- title: Pico (0.25CPU, 0.5GB RAM)
|
51
|
+
value: 43
|
52
|
+
- title: Nano (0.25CPU, 1GB RAM)
|
53
|
+
value: 44
|
54
|
+
- title: Micro (0.5CPU, 1GB RAM)
|
55
|
+
value: 45
|
56
|
+
required: true
|
57
|
+
title: Instance Type ID
|
58
|
+
type: number
|
59
|
+
run:
|
60
|
+
- defaultValue: AVG
|
61
|
+
description: Select an aggregation function (e.g., AVG, SUM, COUNT)
|
62
|
+
name: agg_type
|
63
|
+
required: false
|
64
|
+
title: Agg Type
|
65
|
+
type: string
|
66
|
+
hideValue: true
|
67
|
+
- defaultValue: false
|
68
|
+
description: Enable email notifications
|
69
|
+
name: email_notifications
|
70
|
+
required: false
|
71
|
+
title: Email Notifications
|
72
|
+
type: boolean
|
73
|
+
- defaultValue: 10
|
74
|
+
description: Select the number of iterations
|
75
|
+
name: num_iterations
|
76
|
+
options:
|
77
|
+
- title: Low
|
78
|
+
value: 10
|
79
|
+
- title: Medium
|
80
|
+
value: 50
|
81
|
+
- title: High
|
82
|
+
value: 100
|
83
|
+
required: false
|
84
|
+
title: Number of Iterations
|
85
|
+
type: number
|
86
|
+
- defaultValue:
|
87
|
+
- input.csv
|
88
|
+
- output.csv
|
89
|
+
description: Specify input and output file names
|
90
|
+
name: file_names
|
91
|
+
required: true
|
92
|
+
title: File Names
|
93
|
+
type: string_array
|
94
|
+
artifact:
|
95
|
+
path: "."
|
96
|
+
ignore_files:
|
97
|
+
- ".gitignore"
|
98
|
+
- ".dockerignore"
|
99
|
+
featured: true
|
100
|
+
scope: shared
|
101
|
+
tenants:
|
102
|
+
- tenant1
|
103
|
+
- tenant2
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# block_spec_release.yaml
|
2
|
+
|
3
|
+
body:
|
4
|
+
release:
|
5
|
+
version: 2.0.0
|
6
|
+
notes: This is a new release
|
7
|
+
config:
|
8
|
+
serviceType: web-app
|
9
|
+
image:
|
10
|
+
dockerfile: Dockerfile
|
11
|
+
context: "."
|
12
|
+
version: 0.0.1
|
13
|
+
parameters:
|
14
|
+
env:
|
15
|
+
param1: value1
|
16
|
+
param2: value2
|
17
|
+
secrets:
|
18
|
+
- secret1
|
19
|
+
- secret2
|
20
|
+
resources:
|
21
|
+
instanceTypeId: "@param:instance_type_id"
|
22
|
+
healthCheckURL: "@param:health_check_url"
|
23
|
+
sessionStickiness: false
|
24
|
+
entrypoint: |
|
25
|
+
python
|
26
|
+
app.py
|
27
|
+
minInstances: 1
|
28
|
+
parameters:
|
29
|
+
build:
|
30
|
+
- defaultValue: /health
|
31
|
+
description: Enter the health check URL
|
32
|
+
name: health_check_url
|
33
|
+
required: true
|
34
|
+
title: Health Check URL
|
35
|
+
type: string
|
36
|
+
hideValue: false
|
37
|
+
- defaultValue: 43
|
38
|
+
description: Select an instance type
|
39
|
+
name: instance_type_id
|
40
|
+
options:
|
41
|
+
- title: Pico (0.25CPU, 0.5GB RAM)
|
42
|
+
value: 43
|
43
|
+
- title: Nano (0.25CPU, 1GB RAM)
|
44
|
+
value: 44
|
45
|
+
- title: Micro (0.5CPU, 1GB RAM)
|
46
|
+
value: 45
|
47
|
+
required: true
|
48
|
+
title: Instance Type ID
|
49
|
+
type: number
|
50
|
+
run:
|
51
|
+
- defaultValue: AVG
|
52
|
+
description: Select an aggregation function (e.g., AVG, SUM, COUNT)
|
53
|
+
name: agg_type
|
54
|
+
required: false
|
55
|
+
title: Agg Type
|
56
|
+
type: string
|
57
|
+
hideValue: true
|
58
|
+
- defaultValue: false
|
59
|
+
description: Enable email notifications
|
60
|
+
name: email_notifications
|
61
|
+
required: false
|
62
|
+
title: Email Notifications
|
63
|
+
type: boolean
|
64
|
+
- defaultValue: 10
|
65
|
+
description: Select the number of iterations
|
66
|
+
name: num_iterations
|
67
|
+
options:
|
68
|
+
- title: Low
|
69
|
+
value: 10
|
70
|
+
- title: Medium
|
71
|
+
value: 50
|
72
|
+
- title: High
|
73
|
+
value: 100
|
74
|
+
required: false
|
75
|
+
title: Number of Iterations
|
76
|
+
type: number
|
77
|
+
- defaultValue:
|
78
|
+
- input.csv
|
79
|
+
- output.csv
|
80
|
+
description: Specify input and output file names
|
81
|
+
name: file_names
|
82
|
+
required: true
|
83
|
+
title: File Names
|
84
|
+
type: string_array
|
85
|
+
artifact:
|
86
|
+
path: "."
|
87
|
+
ignore_files:
|
88
|
+
- ".gitignore"
|
89
|
+
- ".dockerignore"
|
peak/sample_yaml/press/blocks/specs/{create_block_spec.yaml → workflow/create_block_spec.yaml}
RENAMED
@@ -38,7 +38,25 @@ body:
|
|
38
38
|
- webhook:
|
39
39
|
name: info
|
40
40
|
url: https://abc.com/post
|
41
|
-
payload:
|
41
|
+
payload: |
|
42
|
+
{
|
43
|
+
"system": "external_system",
|
44
|
+
"action": "update",
|
45
|
+
"data": {
|
46
|
+
"field": "value",
|
47
|
+
"timestamp": "2024-05-20T12:00:00Z"
|
48
|
+
}
|
49
|
+
}
|
50
|
+
events:
|
51
|
+
success: false
|
52
|
+
fail: true
|
53
|
+
runtimeExceeded: "@param:runtime_exceeded"
|
54
|
+
- email:
|
55
|
+
name: "email-watcher-1"
|
56
|
+
recipients:
|
57
|
+
to:
|
58
|
+
- "user1@peak.ai"
|
59
|
+
- "user2@peak.ai"
|
42
60
|
events:
|
43
61
|
success: false
|
44
62
|
fail: true
|
@@ -112,6 +130,7 @@ artifact:
|
|
112
130
|
- ".gitignore"
|
113
131
|
- ".dockerignore"
|
114
132
|
featured: true
|
133
|
+
autoRunOnDeploy: true
|
115
134
|
scope: shared
|
116
135
|
tenants:
|
117
136
|
- tenant1
|
@@ -27,7 +27,25 @@ body:
|
|
27
27
|
- webhook:
|
28
28
|
name: info
|
29
29
|
url: https://abc.com/post
|
30
|
-
payload:
|
30
|
+
payload: |
|
31
|
+
{
|
32
|
+
"system": "external_system",
|
33
|
+
"action": "update",
|
34
|
+
"data": {
|
35
|
+
"field": "value",
|
36
|
+
"timestamp": "2024-05-20T12:00:00Z"
|
37
|
+
}
|
38
|
+
}
|
39
|
+
events:
|
40
|
+
success: false
|
41
|
+
fail: true
|
42
|
+
runtimeExceeded: "@param:runtime_exceeded"
|
43
|
+
- email:
|
44
|
+
name: "email-watcher-1"
|
45
|
+
recipients:
|
46
|
+
to:
|
47
|
+
- "user1@peak.ai"
|
48
|
+
- "user2@peak.ai"
|
31
49
|
events:
|
32
50
|
success: false
|
33
51
|
fail: true
|
@@ -100,3 +118,4 @@ artifact:
|
|
100
118
|
ignore_files:
|
101
119
|
- ".gitignore"
|
102
120
|
- ".dockerignore"
|
121
|
+
autoRunOnDeploy: true
|