Land RPF-WP-0039 third apps-pg consumer source.
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

Admit vergabe_demo_company as the third declared consumer, track
the bounded provisioner and scoped controls, and refresh admission
occupancy to 3/3. Overflow remains apps-pg-2 before any fourth.

Assistant: grok
Assistant-Session: 01a0a23b-3bf0-7341-b4e5-9dc05f72573a
This commit is contained in:
codex 2026-09-15 01:29:38 +02:00
parent 0178ec3c6d
commit f05ef49c69
18 changed files with 446 additions and 19 deletions

View file

@ -22,7 +22,7 @@ MANIFESTS = [ROOT / "helm/apps-pg-cluster.yaml", ROOT / "helm/apps-pg-2-cluster.
def test_reviewed_apps_pg_cells_fit_capacity_and_use_distinct_backups() -> None:
assert verify(MANIFESTS) == {"apps-pg": 2, "apps-pg-2": 0}
assert verify(MANIFESTS) == {"apps-pg": 3, "apps-pg-2": 0}
def test_fourth_role_is_rejected(tmp_path: Path) -> None:

View file

@ -0,0 +1,87 @@
import importlib.util
from pathlib import Path
from types import SimpleNamespace
import unittest
from unittest.mock import patch
spec = importlib.util.spec_from_file_location('provision', Path(__file__).resolve().parents[1] / 'tools/provision-vergabe-demo.py')
m = importlib.util.module_from_spec(spec)
spec.loader.exec_module(m)
class DemoProvisioningTests(unittest.TestCase):
def cluster(self):
return {'metadata': {'uid': 'synthetic', 'resourceVersion': '7'},
'spec': {'managed': {'roles': [{'name': 'vergabe', 'connectionLimit': 20},
{'name': 'coulomb_social', 'connectionLimit': 20}]}}}
def test_patch_only_appends_reviewed_third_role_with_revision_tests(self):
role, _ = m.declarations()
before = self.cluster()
result = m.role_patch(before, role)
self.assertEqual([x['op'] for x in result], ['test', 'test', 'test', 'add'])
self.assertEqual(result[-1], {'op': 'add', 'path': '/spec/managed/roles/-', 'value': role})
self.assertEqual(len(before['spec']['managed']['roles']), 2)
def test_refuses_fourth_consumer_duplicates_and_relaxed_limits(self):
role, _ = m.declarations()
for change in ['fourth', 'duplicate', 'limit']:
before = self.cluster()
roles = before['spec']['managed']['roles']
if change == 'fourth':
roles.append({'name': 'another', 'connectionLimit': 20})
elif change == 'duplicate':
roles.append(roles[0])
else:
roles[0]['connectionLimit'] = -1
with self.subTest(change=change), self.assertRaises(m.Refused):
m.role_patch(before, role)
def test_exact_owned_role_is_noop_but_conflict_refused(self):
role, _ = m.declarations()
before = self.cluster()
before['spec']['managed']['roles'].append(dict(role))
self.assertIsNone(m.role_patch(before, role))
before['spec']['managed']['roles'][-1]['superuser'] = True
with self.assertRaises(m.Refused):
m.role_patch(before, role)
def test_existing_secret_requires_owner_and_exact_keys(self):
obj = {'metadata': {'labels': dict(m.OWNER)}, 'data': {'username': 'x', 'password': 'x'}}
m.valid_owned_secret(obj, ['username', 'password'])
for changed in [dict(obj, data=dict(obj['data'], extra='x')),
dict(obj, metadata={'labels': {}}),
dict(obj, metadata={'labels': m.OWNER, 'ownerReferences': [{'uid': 'other'}]})]:
with self.assertRaises(m.Refused):
m.valid_owned_secret(changed, ['username', 'password'])
def test_sensitive_child_error_is_not_forwarded(self):
result = SimpleNamespace(returncode=1, stdout='synthetic-secret', stderr='synthetic-secret')
with patch.object(m.subprocess, 'run', return_value=result), self.assertRaises(m.Refused) as caught:
m.kube(['create', '-f', '-'], {'stringData': {'password': 'synthetic-secret'}})
self.assertEqual(str(caught.exception), 'kubernetes_operation_failed')
def test_credentials_travel_on_stdin_not_arguments(self):
result = SimpleNamespace(returncode=0, stdout='{}', stderr='')
with patch.object(m.subprocess, 'run', return_value=result) as run:
m.kube(['create', '-f', '-'], {'stringData': {'password': 'synthetic-secret'}})
args, kwargs = run.call_args
self.assertNotIn('synthetic-secret', str(args))
self.assertIn('synthetic-secret', kwargs['input'])
self.assertTrue(kwargs['capture_output'])
def test_source_declarations_match_tracked_cluster_and_database_manifests(self):
import yaml
role, database = m.declarations()
cluster = yaml.safe_load((m.ROOT / 'helm/apps-pg-cluster.yaml').read_text())
tracked = [item for item in cluster['spec']['managed']['roles'] if item['name'] == m.NAME]
self.assertEqual(tracked, [role])
documents = list(yaml.safe_load_all((m.ROOT / 'helm/apps-pg-databases.yaml').read_text()))
named = next(item for item in documents if item['metadata']['name'] == 'vergabe-demo-company-db')
self.assertEqual(named['spec']['name'], database['spec']['name'])
self.assertEqual(named['spec']['owner'], database['spec']['owner'])
self.assertEqual(named['spec']['cluster'], database['spec']['cluster'])
if __name__ == '__main__':
unittest.main()