infrahub-server 1.2.3__py3-none-any.whl → 1.2.4__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.
Files changed (41) hide show
  1. infrahub/cli/git_agent.py +4 -10
  2. infrahub/config.py +32 -0
  3. infrahub/core/constants/__init__.py +1 -0
  4. infrahub/core/constraint/node/runner.py +6 -5
  5. infrahub/core/graph/__init__.py +1 -1
  6. infrahub/core/migrations/graph/__init__.py +2 -0
  7. infrahub/core/migrations/graph/m018_uniqueness_nulls.py +68 -70
  8. infrahub/core/migrations/graph/m025_uniqueness_nulls.py +26 -0
  9. infrahub/core/migrations/schema/node_attribute_remove.py +16 -2
  10. infrahub/core/models.py +1 -1
  11. infrahub/core/node/constraints/grouped_uniqueness.py +6 -1
  12. infrahub/core/registry.py +18 -0
  13. infrahub/core/schema/basenode_schema.py +21 -1
  14. infrahub/core/schema/definitions/internal.py +2 -1
  15. infrahub/core/schema/generated/base_node_schema.py +1 -1
  16. infrahub/core/schema/manager.py +21 -0
  17. infrahub/core/schema/schema_branch.py +3 -4
  18. infrahub/database/__init__.py +10 -0
  19. infrahub/events/group_action.py +6 -1
  20. infrahub/events/node_action.py +5 -1
  21. infrahub/graphql/mutations/main.py +10 -12
  22. infrahub/message_bus/messages/__init__.py +0 -2
  23. infrahub/message_bus/operations/__init__.py +0 -1
  24. infrahub/message_bus/operations/event/__init__.py +2 -2
  25. infrahub/server.py +6 -11
  26. infrahub/services/adapters/cache/__init__.py +17 -0
  27. infrahub/services/adapters/cache/redis.py +11 -1
  28. infrahub/services/adapters/message_bus/__init__.py +20 -0
  29. infrahub/services/component.py +1 -2
  30. infrahub/tasks/registry.py +3 -7
  31. infrahub/workers/infrahub_async.py +4 -10
  32. infrahub_sdk/schema/__init__.py +10 -1
  33. {infrahub_server-1.2.3.dist-info → infrahub_server-1.2.4.dist-info}/METADATA +1 -1
  34. {infrahub_server-1.2.3.dist-info → infrahub_server-1.2.4.dist-info}/RECORD +39 -40
  35. infrahub_testcontainers/container.py +4 -0
  36. infrahub_testcontainers/helpers.py +1 -1
  37. infrahub/message_bus/messages/event_worker_newprimaryapi.py +0 -9
  38. infrahub/message_bus/operations/event/worker.py +0 -9
  39. {infrahub_server-1.2.3.dist-info → infrahub_server-1.2.4.dist-info}/LICENSE.txt +0 -0
  40. {infrahub_server-1.2.3.dist-info → infrahub_server-1.2.4.dist-info}/WHEEL +0 -0
  41. {infrahub_server-1.2.3.dist-info → infrahub_server-1.2.4.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,6 @@ from infrahub.message_bus import InfrahubMessage, InfrahubResponse
2
2
 
3
3
  from .check_generator_run import CheckGeneratorRun
4
4
  from .event_branch_merge import EventBranchMerge
5
- from .event_worker_newprimaryapi import EventWorkerNewPrimaryAPI
6
5
  from .finalize_validator_execution import FinalizeValidatorExecution
7
6
  from .git_file_get import GitFileGet, GitFileGetResponse
8
7
  from .git_repository_connectivity import GitRepositoryConnectivity
@@ -17,7 +16,6 @@ from .send_echo_request import SendEchoRequest, SendEchoRequestResponse
17
16
  MESSAGE_MAP: dict[str, type[InfrahubMessage]] = {
18
17
  "check.generator.run": CheckGeneratorRun,
19
18
  "event.branch.merge": EventBranchMerge,
20
- "event.worker.new_primary_api": EventWorkerNewPrimaryAPI,
21
19
  "finalize.validator.execution": FinalizeValidatorExecution,
22
20
  "git.file.get": GitFileGet,
23
21
  "git.repository.connectivity": GitRepositoryConnectivity,
@@ -18,7 +18,6 @@ from infrahub.tasks.check import set_check_status
18
18
  COMMAND_MAP = {
19
19
  "check.generator.run": check.generator.run,
20
20
  "event.branch.merge": event.branch.merge,
21
- "event.worker.new_primary_api": event.worker.new_primary_api,
22
21
  "finalize.validator.execution": finalize.validator.execution,
23
22
  "git.file.get": git.file.get,
24
23
  "git.repository.connectivity": git.repository.connectivity,
@@ -1,3 +1,3 @@
1
- from . import branch, worker
1
+ from . import branch
2
2
 
3
- __all__ = ["branch", "worker"]
3
+ __all__ = ["branch"]
infrahub/server.py CHANGED
@@ -33,10 +33,8 @@ from infrahub.lock import initialize_lock
33
33
  from infrahub.log import clear_log_context, get_logger, set_log_data
34
34
  from infrahub.middleware import InfrahubCORSMiddleware
35
35
  from infrahub.services import InfrahubServices
36
- from infrahub.services.adapters.cache.nats import NATSCache
37
- from infrahub.services.adapters.cache.redis import RedisCache
38
- from infrahub.services.adapters.message_bus.nats import NATSMessageBus
39
- from infrahub.services.adapters.message_bus.rabbitmq import RabbitMQMessageBus
36
+ from infrahub.services.adapters.cache import InfrahubCache
37
+ from infrahub.services.adapters.message_bus import InfrahubMessageBus
40
38
  from infrahub.services.adapters.workflow.local import WorkflowLocalExecution
41
39
  from infrahub.services.adapters.workflow.worker import WorkflowWorkerExecution
42
40
  from infrahub.trace import add_span_exception, configure_trace, get_traceid
@@ -70,14 +68,11 @@ async def app_initialization(application: FastAPI, enable_scheduler: bool = True
70
68
  else WorkflowLocalExecution()
71
69
  )
72
70
  component_type = ComponentType.API_SERVER
73
- message_bus = config.OVERRIDE.message_bus or (
74
- await NATSMessageBus.new(component_type=component_type)
75
- if config.SETTINGS.broker.driver == config.BrokerDriver.NATS
76
- else await RabbitMQMessageBus.new(component_type=component_type)
77
- )
78
- cache = config.OVERRIDE.cache or (
79
- await NATSCache.new() if config.SETTINGS.cache.driver == config.CacheDriver.NATS else RedisCache()
71
+ message_bus = config.OVERRIDE.message_bus or await InfrahubMessageBus.new_from_driver(
72
+ component_type=component_type, driver=config.SETTINGS.broker.driver
80
73
  )
74
+
75
+ cache = config.OVERRIDE.cache or (await InfrahubCache.new_from_driver(driver=config.SETTINGS.cache.driver))
81
76
  service = await InfrahubServices.new(
82
77
  cache=cache,
83
78
  database=database,
@@ -1,9 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import importlib
3
4
  from abc import ABC, abstractmethod
4
5
  from typing import TYPE_CHECKING
5
6
 
6
7
  if TYPE_CHECKING:
8
+ from infrahub.config import CacheDriver
7
9
  from infrahub.message_bus.types import KVTTL
8
10
 
9
11
 
@@ -34,3 +36,18 @@ class InfrahubCache(ABC):
34
36
  async def set(self, key: str, value: str, expires: KVTTL | None = None, not_exists: bool = False) -> bool | None:
35
37
  """Set a value in the cache."""
36
38
  raise NotImplementedError()
39
+
40
+ @classmethod
41
+ async def new_from_driver(cls, driver: CacheDriver) -> InfrahubCache:
42
+ """Imports and initializes the correct class based on the supplied driver.
43
+
44
+ This is to ensure that we only import the Python modules that we actually
45
+ need to operate and not import all possible options.
46
+ """
47
+ module = importlib.import_module(driver.driver_module_path)
48
+ broker_driver: InfrahubCache = getattr(module, driver.driver_class_name)
49
+ return await broker_driver.new()
50
+
51
+ @classmethod
52
+ async def new(cls) -> InfrahubCache:
53
+ raise NotImplementedError()
@@ -1,9 +1,15 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
1
5
  import redis.asyncio as redis
2
6
 
3
7
  from infrahub import config
4
- from infrahub.message_bus.types import KVTTL
5
8
  from infrahub.services.adapters.cache import InfrahubCache
6
9
 
10
+ if TYPE_CHECKING:
11
+ from infrahub.message_bus.types import KVTTL
12
+
7
13
 
8
14
  class RedisCache(InfrahubCache):
9
15
  def __init__(self) -> None:
@@ -44,3 +50,7 @@ class RedisCache(InfrahubCache):
44
50
 
45
51
  async def set(self, key: str, value: str, expires: KVTTL | None = None, not_exists: bool = False) -> bool | None:
46
52
  return await self.connection.set(name=key, value=value, ex=expires.value if expires else None, nx=not_exists)
53
+
54
+ @classmethod
55
+ async def new(cls) -> RedisCache:
56
+ return cls()
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import importlib
3
4
  from abc import ABC, abstractmethod
4
5
  from typing import TYPE_CHECKING, TypeVar
5
6
 
@@ -8,6 +9,8 @@ from infrahub.message_bus.messages import ROUTING_KEY_MAP
8
9
  ResponseClass = TypeVar("ResponseClass")
9
10
 
10
11
  if TYPE_CHECKING:
12
+ from infrahub.components import ComponentType
13
+ from infrahub.config import BrokerDriver, BrokerSettings
11
14
  from infrahub.message_bus import InfrahubMessage, InfrahubResponse
12
15
  from infrahub.message_bus.types import MessageTTL
13
16
  from infrahub.services import InfrahubServices
@@ -34,6 +37,23 @@ class InfrahubMessageBus(ABC):
34
37
  async def shutdown(self) -> None: # noqa: B027 We want a default empty behavior, so it's ok to have an empty non-abstract method.
35
38
  """Shutdown the Message bus"""
36
39
 
40
+ @classmethod
41
+ async def new(cls, component_type: ComponentType, settings: BrokerSettings | None = None) -> InfrahubMessageBus:
42
+ raise NotImplementedError()
43
+
44
+ @classmethod
45
+ async def new_from_driver(
46
+ cls, component_type: ComponentType, driver: BrokerDriver, settings: BrokerSettings | None = None
47
+ ) -> InfrahubMessageBus:
48
+ """Imports and initializes the correct class based on the supplied driver.
49
+
50
+ This is to ensure that we only import the Python modules that we actually
51
+ need to operate and not import all possible options.
52
+ """
53
+ module = importlib.import_module(driver.driver_module_path)
54
+ broker_driver: InfrahubMessageBus = getattr(module, driver.driver_class_name)
55
+ return await broker_driver.new(component_type=component_type, settings=settings)
56
+
37
57
  @abstractmethod
38
58
  async def publish(
39
59
  self, message: InfrahubMessage, routing_key: str, delay: MessageTTL | None = None, is_retry: bool = False
@@ -10,7 +10,6 @@ from infrahub.core.constants import GLOBAL_BRANCH_NAME
10
10
  from infrahub.core.registry import registry
11
11
  from infrahub.core.timestamp import Timestamp
12
12
  from infrahub.log import get_logger
13
- from infrahub.message_bus import messages
14
13
  from infrahub.message_bus.types import KVTTL
15
14
  from infrahub.worker import WORKER_IDENTITY
16
15
 
@@ -116,7 +115,7 @@ class InfrahubComponent:
116
115
  key=PRIMARY_API_SERVER, value=WORKER_IDENTITY, expires=KVTTL.FIFTEEN, not_exists=True
117
116
  )
118
117
  if result:
119
- await self.message_bus.send(message=messages.EventWorkerNewPrimaryAPI(worker_id=WORKER_IDENTITY))
118
+ log.info("api_worker promoted to primary", worker_id=WORKER_IDENTITY)
120
119
  else:
121
120
  log.debug("Primary node already set")
122
121
  primary_id = await self.cache.get(key=PRIMARY_API_SERVER)
@@ -22,7 +22,6 @@ async def refresh_branches(db: InfrahubDatabase) -> None:
22
22
 
23
23
  async with lock.registry.local_schema_lock():
24
24
  branches = await registry.branch_object.get_list(db=db)
25
- active_branches = [branch.name for branch in branches]
26
25
  for new_branch in branches:
27
26
  if new_branch.name in registry.branch:
28
27
  branch_registry: Branch = registry.branch[new_branch.name]
@@ -61,9 +60,6 @@ async def refresh_branches(db: InfrahubDatabase) -> None:
61
60
  include_types=True,
62
61
  )
63
62
 
64
- for branch_name in list(registry.branch.keys()):
65
- if branch_name not in active_branches:
66
- del registry.branch[branch_name]
67
- log.info(
68
- f"Removed branch {branch_name!r} from the registry", branch=branch_name, worker=WORKER_IDENTITY
69
- )
63
+ purged_branches = await registry.purge_inactive_branches(db=db, active_branches=branches)
64
+ for branch_name in purged_branches:
65
+ log.info(f"Removed branch {branch_name!r} from the registry", branch=branch_name, worker=WORKER_IDENTITY)
@@ -24,11 +24,7 @@ from infrahub.git import initialize_repositories_directory
24
24
  from infrahub.lock import initialize_lock
25
25
  from infrahub.services import InfrahubServices
26
26
  from infrahub.services.adapters.cache import InfrahubCache
27
- from infrahub.services.adapters.cache.nats import NATSCache
28
- from infrahub.services.adapters.cache.redis import RedisCache
29
27
  from infrahub.services.adapters.message_bus import InfrahubMessageBus
30
- from infrahub.services.adapters.message_bus.nats import NATSMessageBus
31
- from infrahub.services.adapters.message_bus.rabbitmq import RabbitMQMessageBus
32
28
  from infrahub.services.adapters.workflow import InfrahubWorkflow
33
29
  from infrahub.services.adapters.workflow.local import WorkflowLocalExecution
34
30
  from infrahub.services.adapters.workflow.worker import WorkflowWorkerExecution
@@ -198,15 +194,13 @@ class InfrahubWorkerAsync(BaseWorker):
198
194
 
199
195
  async def _init_message_bus(self, component_type: ComponentType) -> InfrahubMessageBus:
200
196
  return config.OVERRIDE.message_bus or (
201
- await NATSMessageBus.new(component_type=component_type)
202
- if config.SETTINGS.broker.driver == config.BrokerDriver.NATS
203
- else await RabbitMQMessageBus.new(component_type=component_type)
197
+ await InfrahubMessageBus.new_from_driver(
198
+ component_type=component_type, driver=config.SETTINGS.broker.driver
199
+ )
204
200
  )
205
201
 
206
202
  async def _init_cache(self) -> InfrahubCache:
207
- return config.OVERRIDE.cache or (
208
- await NATSCache.new() if config.SETTINGS.cache.driver == config.CacheDriver.NATS else RedisCache()
209
- )
203
+ return config.OVERRIDE.cache or (await InfrahubCache.new_from_driver(driver=config.SETTINGS.cache.driver))
210
204
 
211
205
  async def _init_services(self, client: InfrahubClient) -> None:
212
206
  component_type = ComponentType.GIT_AGENT
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
+ import json
4
5
  from collections.abc import MutableMapping
5
6
  from enum import Enum
6
7
  from time import sleep
@@ -13,6 +14,7 @@ from typing_extensions import TypeAlias
13
14
 
14
15
  from ..exceptions import (
15
16
  InvalidResponseError,
17
+ JsonDecodeError,
16
18
  SchemaNotFoundError,
17
19
  ValidationError,
18
20
  )
@@ -420,7 +422,14 @@ class InfrahubSchema(InfrahubSchemaBase):
420
422
  response = await self.client._get(url=url, timeout=timeout)
421
423
  response.raise_for_status()
422
424
 
423
- data: MutableMapping[str, Any] = response.json()
425
+ try:
426
+ data: MutableMapping[str, Any] = response.json()
427
+ except json.decoder.JSONDecodeError as exc:
428
+ raise JsonDecodeError(
429
+ message=f"Invalid Schema response received from the server at {response.url}: {response.text} [{response.status_code}] ",
430
+ content=response.text,
431
+ url=response.url,
432
+ ) from exc
424
433
 
425
434
  nodes: MutableMapping[str, MainSchemaTypesAPI] = {}
426
435
  for node_schema in data.get("nodes", []):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: infrahub-server
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Infrahub is taking a new approach to Infrastructure Management by providing a new generation of datastore to organize and control all the data that defines how an infrastructure should run.
5
5
  Home-page: https://opsmill.com
6
6
  License: AGPL-3.0-only
@@ -29,7 +29,7 @@ infrahub/cli/constants.py,sha256=CoCeTMnfsA3j7ArdLKLZK4VPxOM7ls17qpxGJmND0m8,129
29
29
  infrahub/cli/context.py,sha256=20CJj_D1VhigR9uhTDPHiVHnV7vzsgK8v-uLKs06kzA,398
30
30
  infrahub/cli/db.py,sha256=SGS2Gk69waX3Z0abmT0qpth2vvSPA9U0iSBLLML6ePw,15108
31
31
  infrahub/cli/events.py,sha256=nJmowQgTxRs6qaT41A71Ei9jm6qtYaL2amAT5TA1H_k,1726
32
- infrahub/cli/git_agent.py,sha256=O2DQvDlR72HZ2Ft7RLTh5_6hCFG0rzwSACWjMpr3MUw,5511
32
+ infrahub/cli/git_agent.py,sha256=ajT9-kdd3xLIysOPe8GqZyCDMkpNyhqfWjBg9HPWVcg,5240
33
33
  infrahub/cli/server.py,sha256=zeKgJE9V0usSMVBwye0sRNNh6Ctj-nSZHqHbNskqyz4,2248
34
34
  infrahub/cli/tasks.py,sha256=uVtMuUbcXwb6H3hnunUl9JJh99XShpWn2pwryVrR7hg,1952
35
35
  infrahub/cli/upgrade.py,sha256=GQWzga8AFTvfS_VY6s1Nmf_J1UJb533IUVQiF_FC9r0,5031
@@ -40,7 +40,7 @@ infrahub/computed_attribute/gather.py,sha256=TSv6_CWZH1DYRv430jzyJpFJWKzwPGka5wF
40
40
  infrahub/computed_attribute/models.py,sha256=-jS47FBYfbZptd0knzSm_m4GFFnQGMC09QNey1MQt04,12804
41
41
  infrahub/computed_attribute/tasks.py,sha256=2MYjXHOTyn3geFPXszvJ8MChlawlGDZ030L9bcMGuGg,17350
42
42
  infrahub/computed_attribute/triggers.py,sha256=ve1cUj0CZ7dU1VtZkxET9LD8StszKIL9mCkTZpCeUaI,2304
43
- infrahub/config.py,sha256=_N1Xqws1jYiwC0NeHSakkLKkwp4br5ok0sWzcdtIi6w,34202
43
+ infrahub/config.py,sha256=J3R-k2I5WHNAHZaCJWRFSNOhCn_T4Is1E8WeQqDaPYI,35222
44
44
  infrahub/context.py,sha256=8SZRKSECkkcsNNzDaKEUJ7Nyr0EzUfToAy969LXjQVk,1554
45
45
  infrahub/core/__init__.py,sha256=z6EJBZyCYCBqinoBtX9li6BTBbbGV8WCkE_4CrEsmDA,104
46
46
  infrahub/core/account.py,sha256=_RL8QTRsA7XmaTfWSfE6GGy8Z1BEPK5BWoc_LUjDfyE,26507
@@ -52,14 +52,14 @@ infrahub/core/branch/tasks.py,sha256=8qtq4KFcflzoUkhCn64mRKvaD8hFbjVQSOz2WEvedbA
52
52
  infrahub/core/changelog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  infrahub/core/changelog/diff.py,sha256=0BxCpsgJ-38x5BBz5XDtAvc9FPy82M0NlzXl8nQ-c70,13752
54
54
  infrahub/core/changelog/models.py,sha256=UgfJdOFUkMmjeUKe1mPCO7WE3jNENw0UJU3LWFf20HQ,29920
55
- infrahub/core/constants/__init__.py,sha256=5i9X29s-F-Qv2hO8CfmH_FTsFOe6GAR2iftMQF1NSdo,8539
55
+ infrahub/core/constants/__init__.py,sha256=0yESCw_I7KQzalo3gJ8Wjz0puLJH-DKsEQkhH7eyvG4,8578
56
56
  infrahub/core/constants/database.py,sha256=lxesWX2z6SZgGok1bAY6_pCBm5rFfu7k4ayMBr6w_Vo,336
57
57
  infrahub/core/constants/infrahubkind.py,sha256=08iJTK_RMMHbyF67bZLAIZFYiWaDv_IxU6Al53LPE6s,2492
58
58
  infrahub/core/constants/relationship_label.py,sha256=AWbWghu5MoAKg2DBE-ysdzSOXnWoWdBn98zpIHzn_co,87
59
59
  infrahub/core/constants/schema.py,sha256=uuddQniyGlSlvKjM5mQ_V2VhgZmQ8fUCAHysbZLvTEU,2006
60
60
  infrahub/core/constraint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  infrahub/core/constraint/node/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- infrahub/core/constraint/node/runner.py,sha256=oWtU0rqtp3i10S8WFCoatVU6Kq7sQeISeVaLklMSpt4,1970
62
+ infrahub/core/constraint/node/runner.py,sha256=l60GfQxqn6OaLUvfVYddsWor9qy2NiMY_0avnIb_Heg,1848
63
63
  infrahub/core/diff/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  infrahub/core/diff/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
65
  infrahub/core/diff/artifacts/calculator.py,sha256=qk1DspB3bkKeWJFesLbmziCALVnbRadjrez1kn_IZWU,4435
@@ -115,7 +115,7 @@ infrahub/core/diff/repository/deserializer.py,sha256=9CMYN17uQtDkp4w3PlCOnPIhE8R
115
115
  infrahub/core/diff/repository/repository.py,sha256=xgTzmd_fdc-n7iX8E83sd3fOz25O4P3CEDQFpRMZjpI,24946
116
116
  infrahub/core/diff/tasks.py,sha256=kHapEy7isn9zGsThYFauDkDnG-dIODanBaa-TaFD9EY,3278
117
117
  infrahub/core/enums.py,sha256=qGbhRVoH43Xi0iDkUfWdQiKapJbLT9UKsCobFk_paIk,491
118
- infrahub/core/graph/__init__.py,sha256=YGBgVRuiGOItsMOBdR7dp3NBq-JysiqLfU2lTFyyPmI,19
118
+ infrahub/core/graph/__init__.py,sha256=CCOnlFah5snRKavdR0jKRqQf_hsAau1CELo6rj4Ksq8,19
119
119
  infrahub/core/graph/constraints.py,sha256=lmuzrKDFoeSKRiLtycB9PXi6zhMYghczKrPYvfWyy90,10396
120
120
  infrahub/core/graph/index.py,sha256=oR6wyYpJbq2IVVzUdiuGyWA511hw2AvgklFoBmQk-bM,1619
121
121
  infrahub/core/graph/schema.py,sha256=FmEPPb1XOFv3nnS_XJCuUqlp8HsStX5A2frHjlhoqvE,10105
@@ -134,7 +134,7 @@ infrahub/core/ipam/utilization.py,sha256=d-zpXCaWsHgJxBLopCDd7y4sJYvHcIzzpYhbTMI
134
134
  infrahub/core/manager.py,sha256=nE5IL3Hk1ro_4seIbofEdIer3kbVVBtdvmVTbQFAyek,46169
135
135
  infrahub/core/merge.py,sha256=bZvToLKyphJlWMbQAzGuSHcrG2DfeqL69KSfqb1wWdc,10430
136
136
  infrahub/core/migrations/__init__.py,sha256=syPb3-Irf11dXCHgbT0UdmTnEBbpf4wXJ3m8ADYXDpk,1175
137
- infrahub/core/migrations/graph/__init__.py,sha256=aQao4LVtSO7xRSKIPRfiO7ek9TUrXYgG72uS2RL9288,2477
137
+ infrahub/core/migrations/graph/__init__.py,sha256=8Vb8DXQ2QO2Jt7mylidj578RTKp3hT_NHiRoOBEGvtg,2543
138
138
  infrahub/core/migrations/graph/m001_add_version_to_graph.py,sha256=YcLN6cFjE6IGheXR4Ujb6CcyY8bJ7WE289hcKJaENOc,1515
139
139
  infrahub/core/migrations/graph/m002_attribute_is_default.py,sha256=wB6f2N_ChTvGajqHD-OWCG5ahRMDhhXZuwo79ieq_II,1036
140
140
  infrahub/core/migrations/graph/m003_relationship_parent_optional.py,sha256=fRMmcOmBdHgOEjlf-5TaWsZ1Rzs6op1s75-r_jE_tZ0,2345
@@ -152,13 +152,14 @@ infrahub/core/migrations/graph/m014_remove_index_attr_value.py,sha256=UVTDnF00W0
152
152
  infrahub/core/migrations/graph/m015_diff_format_update.py,sha256=DETKst0UNXmuE0aQJep1SJxukajZSK8avF9Z-c0W4ME,1267
153
153
  infrahub/core/migrations/graph/m016_diff_delete_bug_fix.py,sha256=hcnJN3dOoDfbKcEzlRPew2XbJ-hqsEsjkDSGEnjwbFs,1275
154
154
  infrahub/core/migrations/graph/m017_add_core_profile.py,sha256=Z_--D73C8aUtmZPh1okxhY3ipf66vsLcvuIi6LphDTo,1361
155
- infrahub/core/migrations/graph/m018_uniqueness_nulls.py,sha256=rYHGk_Jt08H5bXtBiS5ousxHSv4HqEPk2RpIlZzz798,4851
155
+ infrahub/core/migrations/graph/m018_uniqueness_nulls.py,sha256=uo_le3UmKw-BmLZa9OgxGfpVtKHoe7SxFj-eZNvFDWg,4677
156
156
  infrahub/core/migrations/graph/m019_restore_rels_to_time.py,sha256=bDV-HcttkI9spZINMeJmooACgcque7nvDACDitLRhbk,11782
157
157
  infrahub/core/migrations/graph/m020_duplicate_edges.py,sha256=I5lEO3dz-5Yi8vMTu6xGqkejaHUEPe0GmEVd8A8_gQ4,6770
158
158
  infrahub/core/migrations/graph/m021_missing_hierarchy_merge.py,sha256=5SMcIoZITEUrmW20PTpp3fm5jU548xoRhviTJoUz5NI,1638
159
159
  infrahub/core/migrations/graph/m022_add_generate_template_attr.py,sha256=CmSxcXoWdjNXk4UxbUUeR7X49qiyNIIJuvigV9pOqNA,1748
160
160
  infrahub/core/migrations/graph/m023_deduplicate_cardinality_one_relationships.py,sha256=tW-su33h0K1zZk6GsOxqZcqpAsTNCmKo7kN88Te7jAA,3930
161
161
  infrahub/core/migrations/graph/m024_missing_hierarchy_backfill.py,sha256=NQm51OmkS4D6gCczo4OB1RlOtIU1SaV3qusu1kEF4_k,2502
162
+ infrahub/core/migrations/graph/m025_uniqueness_nulls.py,sha256=n_g09PDLs1yo3dMYL00HH2VtmYkjV1sVnxFL0KL4hOg,863
162
163
  infrahub/core/migrations/query/__init__.py,sha256=JoWOUWlV6IzwxWxObsfCnAAKUOHJkE7dZlOsfB64ZEo,876
163
164
  infrahub/core/migrations/query/attribute_add.py,sha256=zvOwd9afCtfBpR-rEWePEAnbpoeQorzkcSmD4t8myYA,3510
164
165
  infrahub/core/migrations/query/attribute_rename.py,sha256=-p3AInP1dWRO-v-i8MSajDeK5_2LcJwYr2jqLQ_vbgs,6971
@@ -170,18 +171,18 @@ infrahub/core/migrations/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
170
171
  infrahub/core/migrations/schema/attribute_name_update.py,sha256=gebaeQX1MLmOxupTPcCzLJdeEQlUzs3XIl7T15-RdXY,1595
171
172
  infrahub/core/migrations/schema/models.py,sha256=F1yp0GM-HutGdzhE0uPFq9JCTH9iHM3V4iDm2e2c4YU,1357
172
173
  infrahub/core/migrations/schema/node_attribute_add.py,sha256=4_g1W1wqfN3MT9GSAHAUEAZiLeAmvbUp88vauexTzdk,1085
173
- infrahub/core/migrations/schema/node_attribute_remove.py,sha256=x8C20cuUBstLj_l8xG6zW0EzqQqLL4nXA3sKDCQSp8A,4525
174
+ infrahub/core/migrations/schema/node_attribute_remove.py,sha256=pWja69aFjxblOf8x2KWqJ4cEko-MR6ihA0jTq7OOunM,5350
174
175
  infrahub/core/migrations/schema/node_kind_update.py,sha256=scVJz4FhiI2meIVSDTbc9Q6KfGksMDLMwnuxsaZX1aU,1454
175
176
  infrahub/core/migrations/schema/node_remove.py,sha256=uQZ6VwDyB2SkcICyvJIjy7H4LG5OiYImh-DvalzJc5k,6858
176
177
  infrahub/core/migrations/schema/placeholder_dummy.py,sha256=3T3dBwC_ZyehOJr2KRKFD6CXaq8QIjVk0N-nWAMvFYw,308
177
178
  infrahub/core/migrations/schema/tasks.py,sha256=x6c_5N0pcQ_lTH5Vaqg2_MwlQ08I35BdX-8NhRDozBE,4165
178
179
  infrahub/core/migrations/shared.py,sha256=e7HEBijWhG46UN8ODjSmxvGeK8KAQ3Twnj2q1dvb2m0,6983
179
- infrahub/core/models.py,sha256=-zATUEecIoNoTVFpDfVBlPmJQ6_yMkhH_tyKm3SwqGQ,24831
180
+ infrahub/core/models.py,sha256=43iDtUwlsJ5G_F8IP4XoxLeoilfgjudhN3ZfS7esyh8,24840
180
181
  infrahub/core/node/__init__.py,sha256=SnP6_KQebb0A2PG4Lryyp3YIvbV2ktAW3F98adyX2jw,36689
181
182
  infrahub/core/node/base.py,sha256=5HfcA2d3GPjEDqJAEHGF_eHh6RV3-QlNpAsTr499ZmI,2578
182
183
  infrahub/core/node/constraints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
184
  infrahub/core/node/constraints/attribute_uniqueness.py,sha256=9MThTmuqZ7RgK71ZZARlw1k1x3ARn1U67g2_Gatd6rE,2099
184
- infrahub/core/node/constraints/grouped_uniqueness.py,sha256=lLXZWJU8GvJEfZlU6JrE7yDAZ-p3HubNjeSUV1Dqlv8,11757
185
+ infrahub/core/node/constraints/grouped_uniqueness.py,sha256=GQ1-l4ZoZR6FoklHAdqCaNwX3TmW6qrvKYJEVtdPOfc,12056
185
186
  infrahub/core/node/constraints/interface.py,sha256=fwB32pRLxteQyKRArqekQ0RXlrDkyzp7Vmq03vSpUEo,291
186
187
  infrahub/core/node/delete_validator.py,sha256=mj_HQXkTeP_A3po65-R5bCJnDM9CmFFmcUQIxwPlofc,10559
187
188
  infrahub/core/node/ipam.py,sha256=NWb3TUlVQOGAzq1VvDwISLh61HML0jnalsJ7QojqGwQ,2669
@@ -209,7 +210,7 @@ infrahub/core/query/subquery.py,sha256=40MEDGSFPeXG6M4DpwfQfJMVqB_ET6WTMwhgueKV-
209
210
  infrahub/core/query/task.py,sha256=tLgn8S_KaLYLuOB66D1YM155teHZIHNThkt2iUiKKD4,3137
210
211
  infrahub/core/query/task_log.py,sha256=2RdthOAQrmpKZU8uhV_dJCPqwdsSA_1CYSKpL_eZ_yk,1120
211
212
  infrahub/core/query/utils.py,sha256=t9LMvZWdmi10c3E0HAU_5m7x5zMHhYXsUjX7ZBl2RpU,1091
212
- infrahub/core/registry.py,sha256=a0z8yBAZY1ooYjLAYpxpwXXcvMDEhy3tLXdLjWyYcvg,7700
213
+ infrahub/core/registry.py,sha256=LJfLiqw1fUrPWTI8k-hL0KYTLnK2nBCkKJYX5PZtduY,8570
213
214
  infrahub/core/relationship/__init__.py,sha256=broUBD0iwpSSGKJbUdG66uau67TQ_DRhqT_PFhuk1ag,154
214
215
  infrahub/core/relationship/constraints/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
215
216
  infrahub/core/relationship/constraints/count.py,sha256=4wSjiJtRd4fQ5qYNzGyWrt1WLV7x5Go2ZatMTtK79QQ,4157
@@ -220,7 +221,7 @@ infrahub/core/relationship/model.py,sha256=uLJ9HA5esUvwYO0MuTc1bb7mSBGYuD2EqTNK4
220
221
  infrahub/core/root.py,sha256=8ZLSOtnmjQcrjqX2vxNO-AGopEUArmBPo_X5NeZBdP0,416
221
222
  infrahub/core/schema/__init__.py,sha256=nzRFXRM2vlzS6HhRmEk2-HaZkOV6nOvLTPvt-ShMCvU,3978
222
223
  infrahub/core/schema/attribute_schema.py,sha256=e4HXS6Q3dU2V-RRvklmCTZKMSeYWkI6-ok7dyG23h5I,5260
223
- infrahub/core/schema/basenode_schema.py,sha256=M1mRfVS0SzHzVzSb9SGEvbWy7NLVlfOJbYB6ZUQcMFc,21667
224
+ infrahub/core/schema/basenode_schema.py,sha256=4px_CJjhjT7m5eGVDXRT0VVLhJ9m3M85Z1_j1yPgZ64,22189
224
225
  infrahub/core/schema/computed_attribute.py,sha256=9rznZJpGqX8fxLx0EguPmww8LoHsadMtQQUKaMoJPcI,1809
225
226
  infrahub/core/schema/constants.py,sha256=KtFrvwNckyKZSGIMD4XfxI5eFTZqBRiw54R7BE5h39Q,374
226
227
  infrahub/core/schema/definitions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -247,20 +248,20 @@ infrahub/core/schema/definitions/core/template.py,sha256=rgYhpimxW0vhTmpo5cv_QA2
247
248
  infrahub/core/schema/definitions/core/transform.py,sha256=Gh4OdUoQnVrHCep2V171dEPLQv7iMq2fW85v2WS173s,2964
248
249
  infrahub/core/schema/definitions/core/webhook.py,sha256=YHeFMdsQDoG804iO6beozkfzln5cZnXKAsjB0Twlqw0,4224
249
250
  infrahub/core/schema/definitions/deprecated.py,sha256=PUXfRupaxNT3R_a6eFnvAcvXKOZenVb7VnuLAskZfT0,829
250
- infrahub/core/schema/definitions/internal.py,sha256=VXylbCHFiH33M1n76U5kyks649XzEuF4bXIBTLXt0c4,32815
251
+ infrahub/core/schema/definitions/internal.py,sha256=O1kchtswTl9SO35ph3zKBWQ6WrbDuawiPse4QV_E3_w,32849
251
252
  infrahub/core/schema/dropdown.py,sha256=Vj4eGg9q3OLy3RZm7rjORifURntIMY9GHM7G4t-0Rcs,605
252
253
  infrahub/core/schema/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
254
  infrahub/core/schema/generated/attribute_schema.py,sha256=rSAlf5EM2JQzV3NB59OBi1wzJ6WLPINS9l5pxoR-2bo,4949
254
- infrahub/core/schema/generated/base_node_schema.py,sha256=XTKt_L6R6SQDQLyiYR8scM6uplYci5328PdoerR44ZY,4428
255
+ infrahub/core/schema/generated/base_node_schema.py,sha256=YR4FxbXd_K6Z0qim5oBQ4EsKSBJMf5DVCuoXZ8LnmMg,4428
255
256
  infrahub/core/schema/generated/genericnode_schema.py,sha256=FvfeYfld9YeKHOzyH6G3zFkZP_ETrWfvvOpggLT8waY,1059
256
257
  infrahub/core/schema/generated/node_schema.py,sha256=PMgbQX1PC5ixQsjOFw_bcEfa4txGNUI6BV6OkFDG3wQ,1631
257
258
  infrahub/core/schema/generated/relationship_schema.py,sha256=LZIEAPlF9vfYscGYbQ8xgdRvSlVKgow7DQUZ2QC-yKs,5350
258
259
  infrahub/core/schema/generic_schema.py,sha256=4qXhCm4G_MgDqxZOut_AJwatU4onXBECKeS1UZcusr8,1340
259
- infrahub/core/schema/manager.py,sha256=LWkxZbl5Okey4Egqrydcy7JvwRwqr9Im4vKvBCJKs6Y,31845
260
+ infrahub/core/schema/manager.py,sha256=5RCtpEvPmqynkFRVID1COI5UqKZWfL-0TSFddgMCOKI,32719
260
261
  infrahub/core/schema/node_schema.py,sha256=ld_Wrqf-RsoEUVz_lKE0tcSf5n_oYZYtRI0lTqtd63o,6150
261
262
  infrahub/core/schema/profile_schema.py,sha256=cOPSOt5KLgQ0nbqrAN_o33hY_pUtrKmiwSbY_YpVolI,1092
262
263
  infrahub/core/schema/relationship_schema.py,sha256=lVbyQKMP2jPZZwZGK6DBvXdXfEQEsQGMbZ2WYxOZKTw,8261
263
- infrahub/core/schema/schema_branch.py,sha256=cQh09-RUfjNT6PVtpK7tCwIN-iVaNmQ12Fdhw7g_zxE,97587
264
+ infrahub/core/schema/schema_branch.py,sha256=i4MKTIwTZ39-vcwU25Q_NBhV_YaF1610WqqBeLdRFc8,97644
264
265
  infrahub/core/schema/schema_branch_computed.py,sha256=HoBubn2UBQkEJO3LQCsxZQMnfVAgTZl5cHIEMDTBPsE,10038
265
266
  infrahub/core/schema/template_schema.py,sha256=O-PBS9IRM4JX6PxeoyZKwqZ0u0SdQ2zxWMc01PJ2_EA,1084
266
267
  infrahub/core/task/__init__.py,sha256=Ied1NvKGJUDmff27z_-yWW8ArenHxGvSvQTaQyx1iHs,128
@@ -304,7 +305,7 @@ infrahub/core/validators/uniqueness/checker.py,sha256=RpiLpIjbdkwwjivry-vjEkVim6
304
305
  infrahub/core/validators/uniqueness/index.py,sha256=Jw1o-UVinQquNduZ5vCCzt8GUfIEdVzBo-1XyRti8F8,5068
305
306
  infrahub/core/validators/uniqueness/model.py,sha256=V2aejcuHPhgC5nTrS7xX0JFMzprVu90QAau-rUzruCY,5135
306
307
  infrahub/core/validators/uniqueness/query.py,sha256=em_DKmzv0kiKl6VhD9G4-LkrtuQj4mTxT5kc5ZgFv7M,10150
307
- infrahub/database/__init__.py,sha256=xyGxQDjIKPBcOFIsNzV5aPuziEOOzDNAlkJyeDZKBls,20556
308
+ infrahub/database/__init__.py,sha256=m8Rkw7byTaz6eoYp3N9QlyJIxHQW8x2KXfn16sSAgwI,20982
308
309
  infrahub/database/constants.py,sha256=WmV1iuOk4xulxZHOVvO3sS_VF1eTf7fKh0TPe_RnfV4,507
309
310
  infrahub/database/index.py,sha256=y0sWXO3tdIr1wL1XC9O6iNRV-Elu2KAXFOiYXRIIhN4,1659
310
311
  infrahub/database/manager.py,sha256=BDXNw1RNBeSFV-EZd0aGFbPNuoqlKwrkDqmYB7sy4tU,317
@@ -373,9 +374,9 @@ infrahub/events/artifact_action.py,sha256=05R-idXAA_JMWi4KrICKyyLTfIVANHg5WZ9uxs
373
374
  infrahub/events/branch_action.py,sha256=QJ1Zk2kBzKoCllic36_00KjPgCbGVvAO4FKtk8wWNA0,4595
374
375
  infrahub/events/constants.py,sha256=B6sv4eWA_A0I6IKjVG6A4sn0xdV-rHSztlTwoe2kphY,29
375
376
  infrahub/events/generator.py,sha256=reEO-TefCvt5E9mayLXQJXfsKFc7sSIYg4P5g63kAsU,2716
376
- infrahub/events/group_action.py,sha256=IxAOFhyir3Z5ebEx8qZuqr8QhEhw4J1MXpIHpzppK4s,3678
377
+ infrahub/events/group_action.py,sha256=ld83pSfzEDvi7su3O0pzwTVRhsejnxRZx0iDonVLoa8,3862
377
378
  infrahub/events/models.py,sha256=IbYAeaL-wLFhv0WyTnh7EM0wSuRm1gnMl7ewvtzchm4,7244
378
- infrahub/events/node_action.py,sha256=P3S96swbHlQ5Uoe14bbUt6katdceScyYg9ySzLC5jTM,6879
379
+ infrahub/events/node_action.py,sha256=__jXKrRf0P2BiWqklZOWlq4bmTEze3aSaj8ofg6tn3s,7062
379
380
  infrahub/events/repository_action.py,sha256=5x0boObzGipVb_QGQfNOXBrtENs-SNAjruttBzG4HZg,919
380
381
  infrahub/events/schema_action.py,sha256=IvsCvEWsnl7CArJT5DqBn7nF7xmE8JdOHdcVqjeLWGk,1429
381
382
  infrahub/events/utils.py,sha256=JmyKKKDjyD3LS9LlY9_AetL8hBb8EdEfRlreUihskTs,649
@@ -435,7 +436,7 @@ infrahub/graphql/mutations/diff_conflict.py,sha256=JngQfyKXCVlmtlqQ_VyabmrOEDOEK
435
436
  infrahub/graphql/mutations/generator.py,sha256=Ulw4whZm8Gc8lJjwfUFoFSsR0cOUliFKl87Oca4B9O0,3579
436
437
  infrahub/graphql/mutations/graphql_query.py,sha256=mp_O2byChneCihUrEAFEiIAgJ1gW9WrgtwPetUQmkJw,3562
437
438
  infrahub/graphql/mutations/ipam.py,sha256=wIN8OcTNCHVy32YgatWZi2Of-snFYBd4wlxOAJvE-AY,15961
438
- infrahub/graphql/mutations/main.py,sha256=t6ElO2pG5tC15w__cKxWkvU3Adb_MeWVKFSVLBQ7TqM,26763
439
+ infrahub/graphql/mutations/main.py,sha256=QpB_iV4VFWYkUpk5tcSe0eFJXAn1YcwFruzNjyccvUY,26618
439
440
  infrahub/graphql/mutations/menu.py,sha256=u2UbOA-TFDRcZRGFkgYTmpGxN2IAUgOvJXd7SnsufyI,3708
440
441
  infrahub/graphql/mutations/models.py,sha256=ilkSLr8OxVO9v3Ra_uDyUTJT9qPOmdPMqQbuWIydJMo,264
441
442
  infrahub/graphql/mutations/node_getter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -504,10 +505,9 @@ infrahub/menu/models.py,sha256=qh0W-Lut6DtszRABx9Xa1QG1q7SYQsBcNT21QuUBFYM,9839
504
505
  infrahub/menu/repository.py,sha256=IQpEbQ1u9WiCl7cWCoElEVH_E9qhcLTaTsrf8BWmges,5044
505
506
  infrahub/menu/utils.py,sha256=tkTAeVCTUWgLNvL9QiPwJwys6os1Q92nhigHXxMwyQo,272
506
507
  infrahub/message_bus/__init__.py,sha256=MkDavdkUxCAJ_RCohO7cLBAzYTqftcXAI6hVj5FaoiE,3669
507
- infrahub/message_bus/messages/__init__.py,sha256=nxBbsM65wLKzALrsiekCm__6ZImj_jm_YAooVaUY-8c,2708
508
+ infrahub/message_bus/messages/__init__.py,sha256=Lu4kYX2EXpeXGrmeW5Rqvig38xWa-lK0DfZAdbdtT3w,2581
508
509
  infrahub/message_bus/messages/check_generator_run.py,sha256=l-3YmXbjFHSKfw53gVTa7SO7AYftGL25gdF0QJhhp4A,1535
509
510
  infrahub/message_bus/messages/event_branch_merge.py,sha256=c4sdKh6Fhq-zXcLdetYpQa7wOI4bVBq8ZS3V9yp7W2c,433
510
- infrahub/message_bus/messages/event_worker_newprimaryapi.py,sha256=qnlxlBaot2JKEWGbnLt4RGKxKqq-7Gt3dnHswwe1VgA,278
511
511
  infrahub/message_bus/messages/finalize_validator_execution.py,sha256=7Q6Qjjk2tVXaIE7j2IwSfcTzJpPw_h_fE5LsBRtoofk,815
512
512
  infrahub/message_bus/messages/git_file_get.py,sha256=YoLJzkpNOIInhfVdTUCPEA_xf5LUZ09BRXDTDy8ZiVE,967
513
513
  infrahub/message_bus/messages/git_repository_connectivity.py,sha256=O_x2EOXI9fhVQtz4nuQrRC3VB8FE6HOuAxcltImSF38,813
@@ -520,12 +520,11 @@ infrahub/message_bus/messages/refresh_registry_rebasedbranch.py,sha256=ozCj3kmNL
520
520
  infrahub/message_bus/messages/request_generatordefinition_check.py,sha256=-gkRdM91CRlzTWcEF_NTBd1zHuQQqmafVADT0RchFoI,1115
521
521
  infrahub/message_bus/messages/request_proposedchange_pipeline.py,sha256=oF8SA-NWVCT5WUhJYXID-5t1DoXnlQRE8zAXB-QD3hE,936
522
522
  infrahub/message_bus/messages/send_echo_request.py,sha256=Z9agbdXj1N8LdKFLKJzNnw3artk3b8WwQ-eA_MO1eAw,575
523
- infrahub/message_bus/operations/__init__.py,sha256=Yl6QI0IZF1VkAyknTTFCrC2OGxo47yEjJMErHyFF0dA,2356
523
+ infrahub/message_bus/operations/__init__.py,sha256=Y-7KaW2I_5lhataY9eQfLBeXlhWHrUR9YLAFZbsjvn4,2290
524
524
  infrahub/message_bus/operations/check/__init__.py,sha256=o8-DkZSNc3FQllWcvOK8nUqEknZ1Ef0WaQpxnqgEFz4,49
525
525
  infrahub/message_bus/operations/check/generator.py,sha256=YMDF7tjvUR6figkw2VXr3PB1L8F4CuF7J944lcbP4qw,6757
526
- infrahub/message_bus/operations/event/__init__.py,sha256=EBDiXN0j8Iv8G9KUYwuYbj-XRn_ckiUAh7T_4VNZHvE,61
526
+ infrahub/message_bus/operations/event/__init__.py,sha256=Wm5TKOF2jeEIstmIqC1VhGrHy73B8YD0IojTN1efyxw,43
527
527
  infrahub/message_bus/operations/event/branch.py,sha256=x4T_Ff9s5bFCrLwLzER51heAgzEdlXhAcykJf7XcOQw,2593
528
- infrahub/message_bus/operations/event/worker.py,sha256=v_lfqSx6e9mdc1nGQLj1QINhPQ9eXpwPKK9CAU1C8UM,349
529
528
  infrahub/message_bus/operations/finalize/__init__.py,sha256=5wo4BS6O_54Srh2249jRYzuLhJ42GjMJ7nuYaAbMCfo,49
530
529
  infrahub/message_bus/operations/finalize/validator.py,sha256=6SvWxyr5FSr0bGiCRGAoMdfgVsdyJah8l4KUbjG7EYM,5537
531
530
  infrahub/message_bus/operations/git/__init__.py,sha256=0Fbz1AnU8lWKdX7PS_b0BvjiKOPFqTcUXImTRYe6NLM,65
@@ -567,23 +566,23 @@ infrahub/serve/__init__.py,sha256=cWzvEH-Zwr1nQsoNJO9q1pef5KLuSK3VQLOumlnsQxk,73
567
566
  infrahub/serve/gunicorn_config.py,sha256=BkClF6yjz-sIhZ-oDizXUmGSEE-FQSmy21JfVnRI5tA,102
568
567
  infrahub/serve/log.py,sha256=qUidwbtE5AlyLHnWKVoEggOoHKhfMMjYlUH1d-iGwqg,953
569
568
  infrahub/serve/worker.py,sha256=nNGQORkUM474UiFNfb0GBHo2vx-NuAuZCcscwoKnGwE,1371
570
- infrahub/server.py,sha256=O0v884rwEQVWMZzX5_wIcyawB8HO9b24vC-fzCJcI4s,8389
569
+ infrahub/server.py,sha256=ruKMBwoYUDY3-7GuV6qYbsq-VkasCY6t9EZU-J9VkG4,8117
571
570
  infrahub/services/__init__.py,sha256=WQ9s6y0YFNrP8rRndKqQAB7iJa4-Q-5KvHxUXS4xlQA,7036
572
571
  infrahub/services/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
573
- infrahub/services/adapters/cache/__init__.py,sha256=j0y_NqC6p1ysGgUxhw5_R3_yFZVS3DipG5ExccPs-3k,1139
572
+ infrahub/services/adapters/cache/__init__.py,sha256=QPHboyYJU3TkNQRGnXR8e12ktVj1tCoyEEVQr2cW05E,1816
574
573
  infrahub/services/adapters/cache/nats.py,sha256=J1-7xB7hmnYB45NpiH15eoi-7nbtSpOpKEtzSCLpvkA,5646
575
- infrahub/services/adapters/cache/redis.py,sha256=jON7tMKeSkDzi9wFsYb4B1zLSs8PwJn6-hM4DfXbaX4,1859
574
+ infrahub/services/adapters/cache/redis.py,sha256=v2Am9T-toFQW0Xyrt7HO_Wa2uLJE6T7w5V9cHt-trDA,2029
576
575
  infrahub/services/adapters/event/__init__.py,sha256=KUA6mW-9JF1haFu4D0G8CTETcR7y_yvpTg7avbQ0wgM,1372
577
576
  infrahub/services/adapters/http/__init__.py,sha256=SyMHID_aqH6bGLVZgDxQFqhJB7v_5l1RbeQee0XCbhc,554
578
577
  infrahub/services/adapters/http/httpx.py,sha256=jUPbxnjYZzWxk7fnFt2D4eSbd4JmiAGZFPk0Tz-Eyo0,3652
579
- infrahub/services/adapters/message_bus/__init__.py,sha256=e8w8qWsTU8CP-GhKsFEi8cJZdWp22toch3MYvtJdhbU,2297
578
+ infrahub/services/adapters/message_bus/__init__.py,sha256=259um9F05MXukfbDvEyxY_iDDbPUmpkcYR8LWP_W_vY,3261
580
579
  infrahub/services/adapters/message_bus/local.py,sha256=wG4i-Bp6gW2bDaP0x6eMPtmmJYGbM5pavuaYrPNCBvI,2403
581
580
  infrahub/services/adapters/message_bus/nats.py,sha256=SPjwPZQHSdUbMoap0H38Ulbe1V58wP0W1TcHM7Ud9hI,12009
582
581
  infrahub/services/adapters/message_bus/rabbitmq.py,sha256=OHEnQlZiY58S-5OksaxxvpltOZ-VJ-HXmY7fzdCDWKM,10975
583
582
  infrahub/services/adapters/workflow/__init__.py,sha256=NvZnbwK2Gp5CYaMEiiQVClNa5u_4QWVN4G2KDtfNZBI,1642
584
583
  infrahub/services/adapters/workflow/local.py,sha256=4W-WIrq2LSsn35K0ITmaJXCi_RAI4qsMp0iuQBBR26I,1850
585
584
  infrahub/services/adapters/workflow/worker.py,sha256=71Nd0rHGvgqPQKSjbVHy9czyxkKCwnCZkycTw4SpiAk,3140
586
- infrahub/services/component.py,sha256=X-frmFgCMg6-nPi22NDE26bduJcodx25byYKZrtk5zY,5704
585
+ infrahub/services/component.py,sha256=uQvmhDtvPTfxYAdDkaQulbdIWh_kxrFAuhJooKufaac,5634
587
586
  infrahub/services/protocols.py,sha256=Ci4cnWK6L_R_5V2qAPnQpHtKXYS0hktp7CoJWIbcbc0,754
588
587
  infrahub/services/scheduler.py,sha256=LbuIyLsyYa5E8eWA6aXidGyhIIninGJ8ue5tO5qmiCA,3113
589
588
  infrahub/storage.py,sha256=bpK8m7GNlp5LHI0yXuFNZhhBVQpU7RZr7MeWCaAAPLk,1812
@@ -598,7 +597,7 @@ infrahub/tasks/check.py,sha256=WEdktFP1XzahHtF6N782OnNFzkg5uX3KIeNFRy3NEUM,730
598
597
  infrahub/tasks/dummy.py,sha256=6SxlQqQXZqgTuwLaAsK-p1O1TYNKfdGmUYjNJFNHe9s,1209
599
598
  infrahub/tasks/keepalive.py,sha256=D6yh3Vmlr1WCEpZibk2YLc2n0dCcX6tM62HCSxyGEu8,783
600
599
  infrahub/tasks/recurring.py,sha256=RJO2zdzCU-38Kb81lmCUbFQOBhGui8qn2QizTV4vj9I,447
601
- infrahub/tasks/registry.py,sha256=eqQ7ddbw_a9nDL8LynjoQH0bytIProNrksfNWAq5tS8,3137
600
+ infrahub/tasks/registry.py,sha256=wox2lo8JoW8abirN0LFF3Qeerspthviq8yFVe-LDu2g,3017
602
601
  infrahub/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
603
602
  infrahub/telemetry/constants.py,sha256=_5mJAZaT_wTCaF7Yzsd---Zn1N6GZkoP_954GK8K4-c,184
604
603
  infrahub/telemetry/database.py,sha256=0yqrfotO3lF-ij15v-tG1nxtoUJppXzHaKubN0Jw9CQ,3097
@@ -630,7 +629,7 @@ infrahub/webhook/tasks.py,sha256=kQz0BzOOKUGogHKN2X_tSKYk-7rpHMQ1FKjmGugzEc0,723
630
629
  infrahub/webhook/triggers.py,sha256=v1dzFV4wX0GO2n5hft_qzp-oJOA2P_9Q2eTcSP-i0pk,1574
631
630
  infrahub/worker.py,sha256=JtTM-temURUbpEy-bkKJuTt-GKoiHFDrOe9SyVTIXEM,49
632
631
  infrahub/workers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
633
- infrahub/workers/infrahub_async.py,sha256=eVgWPQUDw86pi1moXfparrvfBaa4Lst2yyTVrvoA7rs,9593
632
+ infrahub/workers/infrahub_async.py,sha256=NQ2HLmRFWW1_M9NZmmdkEctFCPgqGKFmweGlNkjdgyU,9207
634
633
  infrahub/workers/utils.py,sha256=m6FOKrYo53Aoj-JcEyQ7-J4Dc20R9JtHMDzTcqXiRpg,2407
635
634
  infrahub/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
636
635
  infrahub/workflows/catalogue.py,sha256=2HgFnrhwQYmV_AVNrsS69QTZEtJ4rUI8A9Tc2SkTgqE,14387
@@ -699,7 +698,7 @@ infrahub_sdk/queries.py,sha256=s4gnx67e-MNg-3jP4Vx1jreO9uiW3uYPllFQgaTODdQ,2308
699
698
  infrahub_sdk/query_groups.py,sha256=vcN67jWvDcVacXbgITOMt-UI_6T5eGrG4WJfb8LqUi4,10069
700
699
  infrahub_sdk/recorder.py,sha256=G134AfAwE5efSqArVJneurF2JIEuhvSJWWI3woPczgI,2194
701
700
  infrahub_sdk/repository.py,sha256=PbSHHl6ajIeZu1t4pH1j7qzR-DPOkGuzubcNM02NuV0,1011
702
- infrahub_sdk/schema/__init__.py,sha256=BXdJ7-d8vqFVXcwUkYocKUKYYYbZ4IQOVzP74sYHMXo,27572
701
+ infrahub_sdk/schema/__init__.py,sha256=CKCgXTnnSVgrg1Tjz2oi2PqgkA6WpfjH9xUlfb-HqZc,27943
703
702
  infrahub_sdk/schema/main.py,sha256=_24hapeJ7mXI_rfN2b9ariwsilQ1W-LVIfk8DXdtjbw,11087
704
703
  infrahub_sdk/schema/repository.py,sha256=AAITXGprCPb2WptJSRhj9gEbRrW1HHM-yEPYAgsztcU,11299
705
704
  infrahub_sdk/spec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -740,18 +739,18 @@ infrahub_sdk/uuidt.py,sha256=Tz-4nHkJwbi39UT3gaIe2wJeZNAoBqf6tm3sw7LZbXc,2155
740
739
  infrahub_sdk/yaml.py,sha256=L_sj5ds-0_uKe3aIfZu86kDLq8tffKzle9dcyDUTaEc,2937
741
740
  infrahub_testcontainers/__init__.py,sha256=oPpmesGgYBSdKTg1L37FGwYBeao1EHury5SJGul-CT8,216
742
741
  infrahub_testcontainers/constants.py,sha256=mZ4hLvcf4rKk9wC7EId4MQxAY0sk4V99deB04N0J2bg,85
743
- infrahub_testcontainers/container.py,sha256=jQ0du9E_xg5oNk8YSsDzbJqBI1W7_J6jJpuo1OeoG1M,10488
742
+ infrahub_testcontainers/container.py,sha256=FUkEVkPwUtYGfjHd6brLkI_3D4-qYmH5BGAOlyJrFU4,10652
744
743
  infrahub_testcontainers/docker-compose.test.yml,sha256=MqN8TPIAWNOZg93m_P2HH5etyYvtgYmwR92SyHR_GDQ,7017
745
744
  infrahub_testcontainers/haproxy.cfg,sha256=QUkG2Xu-hKoknPOeYKAkBT_xJH6U9CfIS0DTMFZJsnk,1305
746
- infrahub_testcontainers/helpers.py,sha256=RdKnBP7Mg-EVnXlSelj6INmoDLDRWabt9bOZcGjH7wM,3535
745
+ infrahub_testcontainers/helpers.py,sha256=zsvBOql5qM2OX1ybPcklqF-nzWYHkZI3Gk3KZhxWOtU,3578
747
746
  infrahub_testcontainers/host.py,sha256=Z4_gGoGKKeM_HGVS7SdYL1FTNGyLBk8wzicdSKHpfmM,1486
748
747
  infrahub_testcontainers/measurements.py,sha256=gR-uTasSIFCXrwvnNpIpfsQIopKftT7pBiarCgIShaQ,2214
749
748
  infrahub_testcontainers/models.py,sha256=R735sO9i6D1TTtwlB0rweN3rWmZMYoSFfk1zt5XgT-Y,909
750
749
  infrahub_testcontainers/performance_test.py,sha256=82g4hfDuEesV7T8U12UjMV7ujZQMy_q30CSNQCdDVlQ,5993
751
750
  infrahub_testcontainers/plugin.py,sha256=vk33oG44MA2zxZwqMsS8_CkScm5LwuwwFmSOtmeAdMU,5357
752
751
  infrahub_testcontainers/prometheus.yml,sha256=610xQEyj3xuVJMzPkC4m1fRnCrjGpiRBrXA2ytCLa54,599
753
- infrahub_server-1.2.3.dist-info/LICENSE.txt,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
754
- infrahub_server-1.2.3.dist-info/METADATA,sha256=Sh17vgP7MjLW08fSumGBTKkkSyiwzDLdLcS1BdY5HQU,8190
755
- infrahub_server-1.2.3.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
756
- infrahub_server-1.2.3.dist-info/entry_points.txt,sha256=UXIeFWDsrV-4IllNvUEd6KieYGzQfn9paga2YyABOQI,393
757
- infrahub_server-1.2.3.dist-info/RECORD,,
752
+ infrahub_server-1.2.4.dist-info/LICENSE.txt,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
753
+ infrahub_server-1.2.4.dist-info/METADATA,sha256=bbeRxYHNMiYzfzuCw2DOcl8olw_7KWAL4uHt8Ed_ocY,8190
754
+ infrahub_server-1.2.4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
755
+ infrahub_server-1.2.4.dist-info/entry_points.txt,sha256=UXIeFWDsrV-4IllNvUEd6KieYGzQfn9paga2YyABOQI,393
756
+ infrahub_server-1.2.4.dist-info/RECORD,,
@@ -57,6 +57,7 @@ PROJECT_ENV_VARIABLES: dict[str, str] = {
57
57
  "INFRAHUB_TESTING_API_SERVER_COUNT": "2",
58
58
  "INFRAHUB_TESTING_TASK_WORKER_COUNT": "2",
59
59
  "INFRAHUB_TESTING_PREFECT_UI_ENABLED": "true",
60
+ "INFRAHUB_TESTING_DOCKER_PULL": "true",
60
61
  }
61
62
 
62
63
 
@@ -173,6 +174,9 @@ class InfrahubDockerCompose(DockerCompose):
173
174
 
174
175
  up_cmd = [*base_cmd, "up"]
175
176
 
177
+ if self.get_env_var("INFRAHUB_TESTING_DOCKER_PULL") == "false":
178
+ up_cmd.extend(["--pull", "never"])
179
+
176
180
  # build means modifying the up command
177
181
  if self.wait:
178
182
  up_cmd.append("--wait")
@@ -12,7 +12,7 @@ from .container import PROJECT_ENV_VARIABLES, InfrahubDockerCompose
12
12
  class TestInfrahubDocker:
13
13
  @pytest.fixture(scope="class")
14
14
  def infrahub_version(self) -> str:
15
- return infrahub_version
15
+ return os.getenv("INFRAHUB_TESTING_IMAGE_VER") or infrahub_version
16
16
 
17
17
  @staticmethod
18
18
  def execute_ctl_run(address: str, script: str) -> str:
@@ -1,9 +0,0 @@
1
- from pydantic import Field
2
-
3
- from infrahub.message_bus import InfrahubMessage
4
-
5
-
6
- class EventWorkerNewPrimaryAPI(InfrahubMessage):
7
- """Sent on startup or when a new primary API worker is elected."""
8
-
9
- worker_id: str = Field(..., description="The worker ID that got elected")
@@ -1,9 +0,0 @@
1
- from prefect import flow
2
-
3
- from infrahub.message_bus import messages
4
- from infrahub.services import InfrahubServices
5
-
6
-
7
- @flow(name="event-worker-newprimary-api")
8
- async def new_primary_api(message: messages.EventWorkerNewPrimaryAPI, service: InfrahubServices) -> None:
9
- service.log.info("api_worker promoted to primary", worker_id=message.worker_id)