{
  "repo": "tidbcloud/aws-pca-issuer",
  "binary": "aws-pca-issuer",
  "binary_path": "main.go",
  "dependencies": {
    "MetricsAPI.Metrics": {
      "infrastructure": {
        "prometheus": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Expose controller-runtime metrics",
              "trigger": "Serve manager metrics endpoint",
              "implementation": "ctrl.NewManager(..., ctrl.Options{MetricsBindAddress: metricsAddr})"
            }
          ]
        }
      },
      "services": []
    },
    "ProbeAPI.Healthz": {
      "infrastructure": {},
      "services": []
    },
    "ProbeAPI.Readyz": {
      "infrastructure": {},
      "services": []
    },
    "AWSPCAIssuerController.Reconcile": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Watch and update AWSPCAIssuer resources and referenced Secrets",
              "trigger": "Controller-runtime reconcile loop",
              "implementation": "AWSPCAIssuerReconciler.SetupWithManager(...) and GenericIssuerReconciler.Client.Get(...)"
            }
          ]
        },
        "aws": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Create AWS session and PCA provisioner",
              "trigger": "Issuer verification succeeds",
              "implementation": "session.NewSession(&config) and awspca.NewProvisioner(sess, spec.Arn)"
            }
          ]
        }
      },
      "services": []
    },
    "AWSPCAClusterIssuerController.Reconcile": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Watch and update AWSPCAClusterIssuer resources",
              "trigger": "Controller-runtime reconcile loop",
              "implementation": "AWSPCAClusterIssuerReconciler.SetupWithManager(...) and GenericIssuerReconciler.Reconcile(...)"
            }
          ]
        },
        "aws": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Create AWS session and PCA provisioner",
              "trigger": "Cluster issuer verification succeeds",
              "implementation": "session.NewSession(&config) and awspca.NewProvisioner(sess, spec.Arn)"
            }
          ]
        }
      },
      "services": []
    },
    "CertificateRequestController.Reconcile": {
      "infrastructure": {
        "kubernetes": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Watch CertificateRequest resources and update their status",
              "trigger": "cert-manager submits a CertificateRequest",
              "implementation": "CertificateRequestReconciler.SetupWithManager(...) and r.Client.Status().Update(...)"
            }
          ]
        },
        "aws": {
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Sign certificates with AWS Private CA",
              "trigger": "Ready issuer provisioner exists for the request",
              "implementation": "provisioner.Sign(ctx, cr)"
            }
          ]
        }
      },
      "services": [
        {
          "name": "cert-manager",
          "target_interface": "CertificateRequest custom resources",
          "operation_type": "controller_watch",
          "conditions": [
            "Always"
          ],
          "operations": [
            {
              "operation": "Consume and fulfill certificate signing requests",
              "trigger": "cert-manager creates or updates CertificateRequest resources",
              "implementation": "For(&cmapi.CertificateRequest{})"
            }
          ]
        }
      ]
    }
  }
}
