# Copyright 2025 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: blueprints.cloud.google.com/v1alpha1
kind: BlueprintMetadata
metadata:
  name: terraform-google-apphub
  annotations:
    config.kubernetes.io/local-config: "true"
spec:
  info:
    title: terraform-google-apphub
    source:
      repo: https://github.com/GoogleCloudPlatform/terraform-google-apphub
      sourceType: git
    version: 0.3.0
    actuationTool:
      flavor: Terraform
      version: ">=1.3"
    description: {}
    icon: assets/icon.png
  content:
    examples:
      - name: simple_example
        location: examples/simple_example
  interfaces:
    variables:
      - name: project_id
        description: The project ID of the host project where AppHub application is created.
        varType: string
        required: true
      - name: location
        description: The location of AppHub application.
        varType: string
        required: true
      - name: service_project_ids
        description: The list of service projects to attach with host project.
        varType: list(string)
        defaultValue: []
      - name: create_application
        description: Create apphub application when true
        varType: bool
        defaultValue: false
      - name: application_id
        description: The AppHub application identifier
        varType: string
        required: true
      - name: display_name
        description: User-defined name for the AppHub application
        varType: string
        defaultValue: ""
      - name: description
        description: User-defined description of AppHub application
        varType: string
        defaultValue: ""
      - name: scope
        description: "Scope of the AppHub application. Possible values are: REGIONAL, GLOBAL."
        varType: "object({ type : string })"
        defaultValue:
          type: REGIONAL
      - name: attributes
        description: Attributes for the AppHub application
        varType: |-
          object({
              environment : optional(object({ type : string })),
              criticality : optional(object({ type : string })),
              business_owners : optional(object({ email : string, display_name : optional(string, "") })),
              developer_owners : optional(object({ email : string, display_name : optional(string, "") })),
              operator_owners : optional(object({ email : string, display_name : optional(string, "") }))
            })
      - name: service_uris
        description: The list of service uris in CAIS style to register
        varType: "list(object({ service_uri : string, service_id : string, location : string }))"
        defaultValue: []
        connections:
          - source:
              source: github.com/terraform-google-modules/terraform-google-sql-db//modules/postgresql
              version: ">= 23.0"
            spec:
              outputExpr: apphub_service_uri
          - source:
              source: github.com/terraform-google-modules/terraform-google-memorystore
              version: ">= 12.0"
            spec:
              outputExpr: apphub_service_uri
      - name: workload_uris
        description: The list of workload uris in CAIS style to register
        varType: "list(object({ workload_uri : string, workload_id : string, location : string }))"
        defaultValue: []
        connections:
          - source:
              source: github.com/GoogleCloudPlatform/terraform-google-cloud-run//modules/v2
              version: ">= 0.14"
            spec:
              outputExpr: apphub_service_uri
          - source:
              source: github.com/terraform-google-modules/terraform-google-vm//modules/mig
              version: ">= 12.1.2"
            spec:
              outputExpr: apphub_service_uri
    outputs:
      - name: application_id
        description: The apphub application id in format projects/{{project}}/locations/{{location}}/applications/{{application_id}}
        type: string
      - name: service_ids
        description: The list of service ids registered with application.
        type:
          - list
          - string
      - name: workload_ids
        description: The list of workload ids registered with application.
        type:
          - list
          - string
  requirements:
    roles:
      - level: Project
        roles:
          - roles/owner
    services:
      - apphub.googleapis.com
      - serviceusage.googleapis.com
    providerVersions:
      - source: hashicorp/google
        version: ">= 3.53, < 7"
