opentf-toolkit-nightly 0.57.0.dev1098__py3-none-any.whl → 0.57.0.dev1106__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.
@@ -448,13 +448,24 @@ def make_app(
448
448
 
449
449
 
450
450
  def get_context_parameter(
451
- app: Flask, name: str, validator: Optional[Any] = None
451
+ app: Flask,
452
+ name: str,
453
+ validator: Optional[Any] = None,
454
+ default: Optional[Any] = None,
452
455
  ) -> Any:
453
456
  """Get an integer parameter from configuration context.
454
457
 
455
458
  Exits with an error code of 2 if the parameter is not properly
456
459
  valued or is not defined.
457
460
 
461
+ Resolution order:
462
+
463
+ - `{app.name.upper()}_{name.upper()}` environment variable
464
+ - `{name.upper()}` environment variable (if spec is shared)
465
+ - `name` in configuration context
466
+ - `spec['default']` if spec defines a default value
467
+ - `default` if not None
468
+
458
469
  # Required parameters
459
470
 
460
471
  - app: a Flask object
@@ -463,6 +474,7 @@ def get_context_parameter(
463
474
  # Optional parameters
464
475
 
465
476
  - validator: a function of two arguments or None (None by default)
477
+ - default: any value or None (None by default)
466
478
 
467
479
  # Returned value
468
480
 
@@ -484,15 +496,19 @@ def get_context_parameter(
484
496
  sys.exit(2)
485
497
 
486
498
  spec = _get_contextparameter_spec(app, name)
487
- if name not in app.config['CONTEXT']:
499
+ val = os.environ.get(name.upper()) if spec and spec.get('shared') else None
500
+ val = os.environ.get(f'{app.name.upper()}_{name.upper()}', val)
501
+ if val is None and name not in app.config['CONTEXT']:
488
502
  if spec and 'default' in spec:
489
503
  return _maybe_validate(spec['default'])
504
+ if default is not None:
505
+ return _maybe_validate(default)
490
506
  _fatal(
491
507
  'Context parameter %s not in current context and no default value specified.',
492
508
  name,
493
509
  )
494
510
 
495
- val = app.config['CONTEXT'][name]
511
+ val = val if val is not None else app.config['CONTEXT'][name]
496
512
  if not spec:
497
513
  return _maybe_validate(val)
498
514
  if spec.get('type') == 'int':
opentf/commons/schemas.py CHANGED
@@ -36,6 +36,7 @@ PROVIDERCONFIG = 'opentestfactory.org/v1beta1/ProviderConfig'
36
36
  SUBSCRIPTION = 'opentestfactory.org/v1alpha1/Subscription'
37
37
 
38
38
  WORKFLOW = 'opentestfactory.org/v1/Workflow'
39
+ WORKFLOWCANCELLATION = 'opentestfactory.org/v1/WorkflowCancellation'
39
40
  WORKFLOWCOMPLETED = 'opentestfactory.org/v1/WorkflowCompleted'
40
41
  WORKFLOWCANCELED = 'opentestfactory.org/v1/WorkflowCanceled'
41
42
  WORKFLOWRESULT = 'opentestfactory.org/v1alpha1/WorkflowResult'
@@ -63,6 +64,7 @@ RETENTION_POLICY = 'opentestfactory.org/v1alpha1/RetentionPolicy'
63
64
  TRACKER_PUBLISHER = 'opentestfactory.org/v1alpha1/TrackerPublisher'
64
65
  INSIGHT_COLLECTOR = 'opentestfactory.org/v1alpha1/InsightCollector'
65
66
 
67
+
66
68
  ########################################################################
67
69
  # JSON Schema Helpers
68
70
 
@@ -139,17 +139,32 @@
139
139
  {
140
140
  "required": [
141
141
  "generator"
142
- ]
142
+ ],
143
+ "not": {
144
+ "required": [
145
+ "outputs"
146
+ ]
147
+ }
143
148
  },
144
149
  {
145
150
  "required": [
146
151
  "uses"
147
- ]
152
+ ],
153
+ "not": {
154
+ "required": [
155
+ "outputs"
156
+ ]
157
+ }
148
158
  },
149
159
  {
150
160
  "required": [
151
161
  "jobs"
152
- ]
162
+ ],
163
+ "not": {
164
+ "required": [
165
+ "with"
166
+ ]
167
+ }
153
168
  }
154
169
  ],
155
170
  "additionalProperties": false
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema#",
3
+ "title": "JSON SCHEMA for opentestfactory.org/v1 WorkflowCancellation manifests",
4
+ "type": "object",
5
+ "properties": {
6
+ "apiVersion": {
7
+ "const": "opentestfactory.org/v1"
8
+ },
9
+ "kind": {
10
+ "const": "WorkflowCancellation"
11
+ },
12
+ "metadata": {
13
+ "type": "object",
14
+ "properties": {
15
+ "name": {
16
+ "type": "string"
17
+ },
18
+ "namespace": {
19
+ "type": "string",
20
+ "pattern": "^[a-z0-9][a-z0-9-]*$"
21
+ },
22
+ "workflow_id": {
23
+ "type": "string"
24
+ },
25
+ "labels": {
26
+ "type": "object",
27
+ "patternProperties": {
28
+ "^([a-zA-Z0-9-.]+/)?[a-zA-Z0-9]([a-zA-Z0-9._-]*[a-zA-Z0-9])?$": {
29
+ "type": "string"
30
+ }
31
+ },
32
+ "minProperties": 1,
33
+ "additionalProperties": false
34
+ }
35
+ },
36
+ "additionalProperties": true,
37
+ "required": [
38
+ "name",
39
+ "workflow_id"
40
+ ]
41
+ },
42
+ "details": {
43
+ "type": "object",
44
+ "properties": {
45
+ "reason": {
46
+ "type": "string"
47
+ },
48
+ "source": {
49
+ "type": "string"
50
+ }
51
+ },
52
+ "patternProperties": {
53
+ "^.*\\..*$": {
54
+ "type": [
55
+ "string",
56
+ "array",
57
+ "object"
58
+ ]
59
+ }
60
+ },
61
+ "additionalProperties": false
62
+ }
63
+ },
64
+ "required": [
65
+ "apiVersion",
66
+ "kind",
67
+ "metadata"
68
+ ],
69
+ "additionalProperties": false
70
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentf-toolkit-nightly
3
- Version: 0.57.0.dev1098
3
+ Version: 0.57.0.dev1106
4
4
  Summary: OpenTestFactory Orchestrator Toolkit
5
5
  Home-page: https://gitlab.com/henixdevelopment/open-source/opentestfactory/python-toolkit
6
6
  Author: Martin Lafaix
@@ -1,18 +1,19 @@
1
- opentf/commons/__init__.py,sha256=pHeXaleOQxz0b0Ds8zIvMu2COi7jYuj6dNne08o0UU0,22092
1
+ opentf/commons/__init__.py,sha256=3gZyXpN2Dmpkn-MRE_Ns1kYHiGyQfXQ8YF25fErVXwE,22728
2
2
  opentf/commons/auth.py,sha256=bM2Z3kxm2Wku1lKXaRAIg37LHvXWAXIZIqjplDfN2P8,15899
3
3
  opentf/commons/config.py,sha256=dyus4K5Zdmcftc3Y9Z1YRkzA1KwiRLHoeAlg2_A49QM,7876
4
4
  opentf/commons/datasources.py,sha256=lIQf81riLHWYj1bG0Mxez7rf9cxSL50NVOf2bmKkWT4,26032
5
5
  opentf/commons/expressions.py,sha256=jM_YKXVOFhvOE2aE2IuacuvxhIsOYTFs2oQkpcbWR6g,19645
6
6
  opentf/commons/pubsub.py,sha256=DVrSara5FRfNdPBwXKUkTobqGki0RPDehylTEFcJnFc,7341
7
- opentf/commons/schemas.py,sha256=C4DE5LXTMTLHTiLGhcwtS-8za8d9ZgkMPiA9PDLpAJ4,4195
7
+ opentf/commons/schemas.py,sha256=QtgVr_I2PAUAAQbutrhZ8y2AM-0w9GOQ6CztxZkkCYw,4265
8
8
  opentf/commons/selectors.py,sha256=DEpLgRAr5HXSpSYI4liXP2hLUTvOSexFa9Vfa1xIQTk,7134
9
9
  opentf/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  opentf/schemas/abac.opentestfactory.org/v1alpha1/Policy.json,sha256=JXsfNAPSEYggeyaDutSQBeG38o4Bmcr70dPLWWeqIh8,2105
11
11
  opentf/schemas/opentestfactory.org/v1/ExecutionCommand.json,sha256=UtmAlTaYdPSZDeQnx-ocX8IonyEPWoNmgDkHwQwQxWE,4126
12
12
  opentf/schemas/opentestfactory.org/v1/GeneratorResult.json,sha256=neoFocJGkVTQQPtnG5xnbqNLX8ivFBJbanbbPweId7s,16608
13
13
  opentf/schemas/opentestfactory.org/v1/ProviderResult.json,sha256=Ej4zhCE3rCqCGKcaeAoIHwSJTV_7fw-rAxhJ52qA-Gs,9641
14
- opentf/schemas/opentestfactory.org/v1/Workflow.json,sha256=mpWxJfP3aV3sYzVxxWOivD55Top4J5WXTTKBzp7gjIw,22486
14
+ opentf/schemas/opentestfactory.org/v1/Workflow.json,sha256=WAFvCAIxmp22-AN1wPuOkd3BYs8UP5u3hj74NnlO3vU,22945
15
15
  opentf/schemas/opentestfactory.org/v1/WorkflowCanceled.json,sha256=BCWxnm3rt4VWh9GXkIhdNY9JYohFWxi9Wg3JjXIavaU,1694
16
+ opentf/schemas/opentestfactory.org/v1/WorkflowCancellation.json,sha256=HAtc8xjrr-WwXwIck9B86BrHELkCb1oPYhTsRzHMMOE,1993
16
17
  opentf/schemas/opentestfactory.org/v1/WorkflowCompleted.json,sha256=KtC9-oeaBNM3D60SFpmYnLMtqewUAGRoOJfVzb7CdHg,1635
17
18
  opentf/schemas/opentestfactory.org/v1alpha1/AgentRegistration.json,sha256=NQykqU-lKE8LtBhBiFUcpVJq00MRG6dZsoM1xedx6uQ,1230
18
19
  opentf/schemas/opentestfactory.org/v1alpha1/AllureCollectorOutput.json,sha256=-L9DDWA0A4x54bPMn4m6Qwi2tf2nHvzIPFOElTjaVck,1366
@@ -54,8 +55,8 @@ opentf/scripts/startup.py,sha256=Da2zo93pBWbdRmj-wgekgLcF94rpNc3ZkbvR8R0w8XY,212
54
55
  opentf/toolkit/__init__.py,sha256=nbllYXON3Rzd-hU7Cred7r4hPaCPbfSJmoY7cQ6RShc,22589
55
56
  opentf/toolkit/channels.py,sha256=6xcVKHUK2FdyVKIQmPQbakngfVuQDzCcD_lInOdKpro,17171
56
57
  opentf/toolkit/core.py,sha256=6nud1vqcfjs9swZu_Z-rbvdbejtrlSjOd8eZXIF0ChE,9795
57
- opentf_toolkit_nightly-0.57.0.dev1098.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
58
- opentf_toolkit_nightly-0.57.0.dev1098.dist-info/METADATA,sha256=uPhQAxjwlGe5OUfel_BAR_JEbwnkreTZzEpleEdePxM,1946
59
- opentf_toolkit_nightly-0.57.0.dev1098.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
60
- opentf_toolkit_nightly-0.57.0.dev1098.dist-info/top_level.txt,sha256=_gPuE6GTT6UNXy1DjtmQSfCcZb_qYA2vWmjg7a30AGk,7
61
- opentf_toolkit_nightly-0.57.0.dev1098.dist-info/RECORD,,
58
+ opentf_toolkit_nightly-0.57.0.dev1106.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
59
+ opentf_toolkit_nightly-0.57.0.dev1106.dist-info/METADATA,sha256=cvfIn7vsCaFTCwbtH9WAQY6LzB5b9B_2p0bRoTEdEmA,1946
60
+ opentf_toolkit_nightly-0.57.0.dev1106.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
61
+ opentf_toolkit_nightly-0.57.0.dev1106.dist-info/top_level.txt,sha256=_gPuE6GTT6UNXy1DjtmQSfCcZb_qYA2vWmjg7a30AGk,7
62
+ opentf_toolkit_nightly-0.57.0.dev1106.dist-info/RECORD,,