terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/snowflake/delphi/external-access-integrations/facts/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

provider "snowflake" {
  account_name = var.account
  role         = "PROD_ATLANTIS"
}

resource "snowflake_network_rule" "google_news" {
  database   = var.database_name
  schema     = var.schema_name
  name       = "GOOGLE_NEWS_NETWORK_RULE"
  mode       = "EGRESS"
  type       = "HOST_PORT"
  value_list = ["news.google.com", "gnews.io"]
}

resource "snowflake_execute" "google_news_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "GOOGLE_NEWS_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (${snowflake_network_rule.google_news.fully_qualified_name})
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"GOOGLE_NEWS_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"GOOGLE_NEWS_ACCESS_INTEGRATION\""
}

resource "snowflake_network_rule" "hugging_face" {
  database = var.database_name
  schema   = var.schema_name
  name     = "HUGGING_FACE_NETWORK_RULE"
  mode     = "EGRESS"
  type     = "HOST_PORT"
  value_list = ["huggingface.co",
    "hub-ci.huggingface.co",
    "cdn-lfs-us-1.hf.co",
    "cdn-lfs-eu-1.hf.co",
    "cdn-lfs.hf.co",
    "transfer.xethub.hf.co",
    "cas-server.xethub.hf.co",
    "cas-bridge.xethub.hf.co",
    "cdn-lfs.huggingface.co",
    "cdn-lfs-us-1.huggingface.co",
    "lfs.huggingface.co",
  "hub.huggingface.co"]
}

resource "snowflake_execute" "hugging_face_access_integration" {
  execute = <<-SQL
    CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION "HUGGING_FACE_ACCESS_INTEGRATION"
      ALLOWED_NETWORK_RULES = (${snowflake_network_rule.hugging_face.fully_qualified_name})
      ENABLED = TRUE
  SQL

  revert = "DROP INTEGRATION IF EXISTS \"HUGGING_FACE_ACCESS_INTEGRATION\""

  query = "DESCRIBE INTEGRATION \"HUGGING_FACE_ACCESS_INTEGRATION\""
}
