3from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory
import CompFactory
12 model_version: str =
"",
18 """Configure TritonTool in Control/AthOnnx/AthTritonComps/src"""
20 acc = ComponentAccumulator()
23 from AthenaCommon.Logging
import log
as msg
24 from urllib.parse
import urlsplit
26 split_url = urlsplit(url)
if "//" in url
else urlsplit(f
"http://{url}")
27 host = split_url.hostname
30 if split_url.port
is not None and split_url.port != port:
32 f
"Triton URL is {url} and port is {port}"
33 f
" which differs from port in URL"
37 "Triton port is not set to 8001."
38 " Can't assume HTTP port is 8000, not checking health."
41 msg.info(
"SSL is turned on for Triton, not checking health")
46 r = requests.get(f
"http://{host}:8000/v2/health/live")
47 except requests.exceptions.ConnectionError:
49 f
"No running triton server found at http://{host}:8000/")
50 if r.status_code != 200:
52 f
"No running triton server found at http://{host}:8000/")
53 if model_version !=
"":
55 f
"http://{host}:8000/v2/models/{model_name}"
56 f
"/versions/{model_version}/ready"
58 model_str = f
"{model_name} (version {model_version})"
61 f
"http://{host}:8000/v2/models/{model_name}/ready")
62 model_str = model_name
63 if r.status_code != 200:
65 f
"The {model_str} model is not ready for inference on {host}"
68 kwargs.setdefault(
"ModelName", model_name)
69 kwargs.setdefault(
"URL", url)
70 kwargs.setdefault(
"Port", port)
71 kwargs.setdefault(
"ModelVersion", model_version)
72 kwargs.setdefault(
"ClientTimeout", timeout)
77 kwargs.setdefault(
"UseSSL", ssl)
79 acc.setPrivateTools(CompFactory.AthInfer.TritonTool(name=name, **kwargs))