Resolve "(CTTC) Link WebUI with Agentic component"

Closes #428 (closed)

Merge request reports

Loading
+8 −0
Changes for deploy/component.sh: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -161,6 +161,14 @@ for COMPONENT in $TFS_COMPONENTS; do

    echo "  Deploying '$COMPONENT' component to Kubernetes..."
    DEPLOY_LOG="$TMP_LOGS_FOLDER/deploy_${COMPONENT}.log"
    if [ "$COMPONENT" == "agentic" ]; then
        kubectl --namespace $TFS_K8S_NAMESPACE delete ingress \
            tfs-ingress-agentic --ignore-not-found >> "$DEPLOY_LOG"
        kubectl --namespace $TFS_K8S_NAMESPACE delete ingress \
            tfs-ingress-agentic-api --ignore-not-found >> "$DEPLOY_LOG"
        kubectl --namespace $TFS_K8S_NAMESPACE delete ingress \
            tfs-ingress-agentic-web --ignore-not-found >> "$DEPLOY_LOG"
    fi
    kubectl --namespace $TFS_K8S_NAMESPACE delete -f "$MANIFEST" > "$DEPLOY_LOG"
    kubectl --namespace $TFS_K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG"
    COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/")
+16 −0
Changes for deploy/tfs.sh: 16 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -340,12 +340,28 @@ for COMPONENT in $TFS_COMPONENTS; do
        sed -E -i "s#image: $GITLAB_REPO_URL/$COMPONENT:${VERSION}#image: $IMAGE_URL#g" "$MANIFEST"
    fi

    if [ "$COMPONENT" == "webui" ] && [[ "$TFS_COMPONENTS" == *"agentic"* ]]; then
        sed -E -i '/value: "\/webui\/"/ a\
            - name: AGENTICSERVICE_SERVICE_HOST\
              value: "agenticservice"\
            - name: AGENTICSERVICE_SERVICE_PORT_HTTP\
              value: "8000"' "$MANIFEST"
    fi

    sed -E -i "s#imagePullPolicy: .*#imagePullPolicy: Always#g" "$MANIFEST"

    # TODO: harmonize names of the monitoring component

    echo "  Deploying '$COMPONENT' component to Kubernetes..."
    DEPLOY_LOG="$TMP_LOGS_FOLDER/deploy_${COMPONENT}.log"
    if [ "$COMPONENT" == "agentic" ]; then
        kubectl --namespace $TFS_K8S_NAMESPACE delete ingress \
            tfs-ingress-agentic --ignore-not-found > "$DEPLOY_LOG"
        kubectl --namespace $TFS_K8S_NAMESPACE delete ingress \
            tfs-ingress-agentic-api --ignore-not-found >> "$DEPLOY_LOG"
        kubectl --namespace $TFS_K8S_NAMESPACE delete ingress \
            tfs-ingress-agentic-web --ignore-not-found >> "$DEPLOY_LOG"
    fi
    kubectl --namespace $TFS_K8S_NAMESPACE apply -f "$MANIFEST" > "$DEPLOY_LOG"
    COMPONENT_OBJNAME=$(echo "${COMPONENT}" | sed "s/\_/-/g")
    #kubectl --namespace $TFS_K8S_NAMESPACE scale deployment --replicas=0 ${COMPONENT_OBJNAME}service >> "$DEPLOY_LOG"
+20 −9
Changes for manifests/agenticservice.yaml: 20 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ metadata:
data:
  ADK_MODEL: "openai/gpt-4.1-mini"
  ADK_AGENT_GRAPH: "single"
  ADK_HTTP_ROOT_PATH: "/agentic"
  ADK_DOMAIN_ID: "A"
  ADK_DOMAIN_NAME: "domain-a"
  ADK_PEERS: ""
@@ -58,6 +59,8 @@ kind: Deployment
metadata:
  name: agenticservice
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: agenticservice
@@ -72,8 +75,14 @@ spec:
        - name: server
          image: labs.etsi.org:5050/tfs/controller/agentic:latest
          imagePullPolicy: Always
          workingDir: /var/teraflow/adk_apps
          command:
            - python
          args:
            - -m
            - agentic.service.adk_web
          ports:
            - containerPort: 8800
            - containerPort: 8000
          env:
            - name: LOG_LEVEL
              value: "INFO"
@@ -83,6 +92,8 @@ spec:
              value: ""
            - name: ADK_DISABLE_JSON_SCHEMA_FOR_FUNC_DECL
              value: "1"
            - name: PYTHONPATH
              value: "/var/teraflow"
          envFrom:
            - configMapRef:
                name: agentic-config
@@ -93,15 +104,15 @@ spec:
              mountPath: /var/lib/tfs-agentic
          readinessProbe:
            httpGet:
              path: /health
              port: 8800
              path: /agentic/dev-ui/
              port: 8000
            initialDelaySeconds: 10
            periodSeconds: 10
            failureThreshold: 12
          livenessProbe:
            httpGet:
              path: /health
              port: 8800
              path: /agentic/dev-ui/
              port: 8000
            initialDelaySeconds: 20
            periodSeconds: 20
            failureThreshold: 6
@@ -130,8 +141,8 @@ spec:
  ports:
    - name: http
      protocol: TCP
      port: 8800
      targetPort: 8800
      port: 8000
      targetPort: 8000
---
apiVersion: networking.k8s.io/v1
kind: Ingress
@@ -143,7 +154,7 @@ metadata:
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "60"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
    - http:
@@ -154,4 +165,4 @@ spec:
              service:
                name: agenticservice
                port:
                  number: 8800
                  number: 8000
+2 −0
Changes for src/agentic/service/agents/granular_root.py: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ from google.adk.models.lite_llm import LiteLlm

from agentic.service.agents.mutation import mutation_router_agent
from agentic.service.agents.retrieval import retrieval_router_agent
from agentic.service.adk_a2a_bridge import handle_a2a_action_message
from agentic.service.llm import build_litellm


@@ -47,4 +48,5 @@ root_agent = Agent(
    description="Minimal TFS Agentic root router for specialist agents.",
    instruction=GRANULAR_ROOT_ROUTER_INSTRUCTION,
    sub_agents=[retrieval_router_agent, mutation_router_agent],
    before_agent_callback=handle_a2a_action_message,
)
+2 −0
Changes for src/agentic/service/agents/root.py: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ from __future__ import annotations
from google.adk.agents.llm_agent import Agent
from google.adk.models.lite_llm import LiteLlm

from agentic.service.adk_a2a_bridge import handle_a2a_action_message
from agentic.service.llm import build_litellm


@@ -70,4 +71,5 @@ inventory_service_root_agent = Agent(
    ),
    instruction=ROOT_AGENT_INSTRUCTION,
    sub_agents=[inventory_agent, service_agent],
    before_agent_callback=handle_a2a_action_message,
)
Loading
Loading