# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: v1
kind: Namespace
metadata:
  name: agent-sandbox
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: adk-agent-sa
  namespace: agent-sandbox
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: adk-agent-role
  namespace: agent-sandbox
rules:
- apiGroups: ["batch"]
  resources: ["jobs"]
  # create: Needed for _batch_v1.create_namespaced_job().
  # watch: Needed for watch.stream(self._batch_v1.list_namespaced_job, ...) to wait for completion
  # list/get: Required for the watch to initialize and to get job details.
  verbs: ["create", "get", "watch", "list", "delete"]
- apiGroups: [""]
  resources: ["configmaps"]
  # create: Needed mount the agent's code into the Job's Pod.
  # delete: Needed for cleanup in the finally block
  verbs: ["create", "get", "list", "delete"]
- apiGroups: [""]
  resources: ["pods"]
  # list: Needed to find the correct Pod _core_v1.list_namespaced_pod(label_selector=...)
  verbs: ["get", "list", "delete"]
- apiGroups: [""]
  # get: Needed for _core_v1.read_namespaced_pod_log() to get the code execution results and logs.
  resources: ["pods/log"]
  verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: adk-agent-binding
  namespace: agent-sandbox
subjects:
- kind: ServiceAccount
  name: adk-agent-sa
  namespace: agent-sandbox
roleRef:
  kind: Role
  name: adk-agent-role
  apiGroup: rbac.authorization.k8s.io
