A loaded mzcompose.py file.
| 109 | |
| 110 | |
| 111 | class Composition: |
| 112 | """A loaded mzcompose.py file.""" |
| 113 | |
| 114 | def __init__( |
| 115 | self, |
| 116 | repo: mzbuild.Repository, |
| 117 | name: str, |
| 118 | preserve_ports: bool = False, |
| 119 | silent: bool = False, |
| 120 | munge_services: bool = True, |
| 121 | resolve_image_specs: bool = True, |
| 122 | project_name: str | None = None, |
| 123 | sanity_restart_mz: bool = False, |
| 124 | host_network: bool = False, |
| 125 | ): |
| 126 | self.conns = {} |
| 127 | self.name = name |
| 128 | self.description = None |
| 129 | self.repo = repo |
| 130 | self.preserve_ports = preserve_ports |
| 131 | self.project_name = project_name or name |
| 132 | self.silent = silent |
| 133 | self.workflows: dict[str, Callable[..., None]] = {} |
| 134 | self.test_results: OrderedDict[str, TestResult] = OrderedDict() |
| 135 | self.has_testdrive_junit: bool = False |
| 136 | self.has_sqllogictest_junit: bool = False |
| 137 | # Per-thread cached YAML file is held in self._tls.file_and_gen. |
| 138 | # When self.compose is mutated, _invalidate_compose_files() bumps |
| 139 | # self._compose_gen so each thread regenerates on its next invoke. |
| 140 | # Avoids cross-thread races on a shared dict that previously caused |
| 141 | # docker compose children to inherit the wrong /dev/fd/N. |
| 142 | self._compose_gen: object = object() |
| 143 | self._tls = threading.local() |
| 144 | self.sources_and_sinks_ignored_from_validation = set() |
| 145 | self.is_sanity_restart_mz = sanity_restart_mz |
| 146 | self.current_test_case_name_override: str | None = None |
| 147 | self.host_network = host_network |
| 148 | self.resolve_image_specs = resolve_image_specs |
| 149 | |
| 150 | if name in self.repo.compositions: |
| 151 | self.path = self.repo.compositions[name] |
| 152 | else: |
| 153 | raise UnknownCompositionError(name) |
| 154 | |
| 155 | self.compose: dict[str, Any] = { |
| 156 | "services": {}, |
| 157 | "networks": {}, |
| 158 | # "networks": { |
| 159 | # "mzcompose": {"ipam": {"config": [{"subnet": "10.10.0.0/24"}]}} |
| 160 | # }, |
| 161 | } |
| 162 | |
| 163 | # Add default volumes |
| 164 | self.compose.setdefault("volumes", {}).update( |
| 165 | { |
| 166 | "mzdata": None, |
| 167 | "pgdata": None, |
| 168 | "mysqldata": None, |
no test coverage detected