PRD 0026: Agent Provider Templates #91
+13
-1
@@ -143,7 +143,11 @@ class GitEntry:
|
|||||||
user, host, port, path = _parse_git_upstream(
|
user, host, port, path = _parse_git_upstream(
|
||||||
upstream, f"bottle '{bottle_name}' {label} '{name}' Upstream"
|
upstream, f"bottle '{bottle_name}' {label} '{name}' Upstream"
|
||||||
)
|
)
|
||||||
if host_key is not None and host_key != host:
|
if (
|
||||||
|
host_key is not None
|
||||||
|
and host_key != host
|
||||||
|
and not _is_ip_literal(host)
|
||||||
|
):
|
||||||
die(
|
die(
|
||||||
f"bottle '{bottle_name}' git.remotes key {host_key!r} "
|
f"bottle '{bottle_name}' git.remotes key {host_key!r} "
|
||||||
f"does not match Upstream host {host!r}"
|
f"does not match Upstream host {host!r}"
|
||||||
@@ -963,6 +967,14 @@ def _parse_git_upstream(url: str, label: str) -> tuple[str, str, str, str]:
|
|||||||
return (user, host, port, path)
|
return (user, host, port, path)
|
||||||
|
|
||||||
|
|
||||||
|
def _is_ip_literal(value: str) -> bool:
|
||||||
|
try:
|
||||||
|
ipaddress.ip_address(value)
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def _validate_egress_routes(
|
def _validate_egress_routes(
|
||||||
bottle_name: str,
|
bottle_name: str,
|
||||||
routes: tuple[EgressRoute, ...],
|
routes: tuple[EgressRoute, ...],
|
||||||
|
|||||||
@@ -205,6 +205,21 @@ class TestGitEntryCrossValidation(unittest.TestCase):
|
|||||||
"agents": {"demo": {"skills": [], "prompt": "", "bottle": "dev"}},
|
"agents": {"demo": {"skills": [], "prompt": "", "bottle": "dev"}},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def test_remote_key_can_name_logical_host_for_ip_upstream(self):
|
||||||
|
m = Manifest.from_json_obj({
|
||||||
|
"bottles": {"dev": {"git": {"remotes": {
|
||||||
|
"gitea.dideric.is": {
|
||||||
|
"Name": "bot-bottle",
|
||||||
|
"Upstream": "ssh://git@100.78.141.42:30009/didericis/bot-bottle.git",
|
||||||
|
"IdentityFile": "/dev/null",
|
||||||
|
},
|
||||||
|
}}}},
|
||||||
|
"agents": {"demo": {"skills": [], "prompt": "", "bottle": "dev"}},
|
||||||
|
})
|
||||||
|
e = m.bottles["dev"].git[0]
|
||||||
|
self.assertEqual("100.78.141.42", e.UpstreamHost)
|
||||||
|
self.assertEqual("30009", e.UpstreamPort)
|
||||||
|
|
||||||
def test_legacy_ssh_field_dies_with_hint(self):
|
def test_legacy_ssh_field_dies_with_hint(self):
|
||||||
# PRD 0009: bottle.ssh is removed; manifests carrying it must
|
# PRD 0009: bottle.ssh is removed; manifests carrying it must
|
||||||
# fail loudly with a hint pointing at bottle.git.
|
# fail loudly with a hint pointing at bottle.git.
|
||||||
|
|||||||
Reference in New Issue
Block a user