module "upbound-crossplane" {
  source = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-next-gen-upbound-crossplane.yaml"
  parameters = {
    cloud             = "alicloud"
    env               = var.env
    region            = var.cloud_region
    logicalRegionName = var.logical_region_name
    cluster           = local.cluster_name
  }
  check_before_destroy = false
  services = [
    {
      name      = "deploy/crossplane"
      namespace = "crossplane-system"
    },
    {
      name      = "deploy/crossplane-rbac-manager"
      namespace = "crossplane-system"
    },
    {
      name      = "crd/providers.pkg.crossplane.io"
      namespace = "crossplane-system"
      wait_for  = "condition=established"
    }
  ]
}

module "upbound-aws-provider" {
  depends_on = [module.upbound-crossplane]
  source     = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-next-gen-upbound-aws-provider.yaml"
  parameters = {
    cloud             = "alicloud"
    env               = var.env
    region            = var.cloud_region
    logicalRegionName = var.logical_region_name
    cluster           = local.cluster_name
    awsIrsaRoleArn    = module.aws_controlplane.crossplane_role_arn
  }
  check_before_destroy = false
  services = [
    {
      name      = "provider.pkg.crossplane.io/provider-aws-iam"
      namespace = "crossplane-system"
      wait_for = trimspace(<<EOT
        jsonpath='{.status.conditions[?(@.type=="Healthy")].status}'=True
      EOT
      )
    },
    {
      name      = "provider.pkg.crossplane.io/provider-family-aws"
      namespace = "crossplane-system"
      wait_for = trimspace(<<EOT
        jsonpath='{.status.conditions[?(@.type=="Healthy")].status}'=True
      EOT
      )
    }
  ]
}


module "crossplane-alibabacloud-provider" {
  depends_on = [module.upbound-crossplane, module.external-secrets-operator]

  source = "../../modules/app"

  kubeconfig_path = module.kubeconfig.path
  workflow        = "deploy-new-region-next-gen-crossplane-alibabacloud-provider.yaml"
  parameters = {
    env                 = var.env
    cluster             = local.cluster_name
    logicalRegionName   = var.logical_region_name
    rrsaRole            = module.ram.dataplane_manager_role_name
    dataplaneAccountIds = jsonencode(var.dataplane_accounts)
  }
  check_before_destroy = false
  services = [
    {
      name      = "provider.pkg.crossplane.io/provider-upjet-alibabacloud"
      namespace = "crossplane-system"
      wait_for = trimspace(<<EOT
        jsonpath='{.status.conditions[?(@.type=="Healthy")].status}'=True
      EOT
      )
    }
  ]
}
