skip to Main Content

I am trying to create a composer environment with the approach of infrastructure as code.
For this, I need to be able to store and retrieve airflow variables programmatically, and keep them versioned somewhere.

The following command lets me list all my connections within the specified $COMPOSER_ENV

gcloud composer environments run `$COMPOSER_ENV` --location <location> connections -- --list

Here’s the output :

╒════════════════════════════════╤═════════════════════════════╤════════════════════════════════╤════════╤════════════════╤══════════════════════╤════════════════════════════════╕
│ Conn Id                        │ Conn Type                   │ Host                           │ Port   │ Is Encrypted   │ Is Extra Encrypted   │ Extra                          │
╞════════════════════════════════╪═════════════════════════════╪════════════════════════════════╪════════╪════════════════╪══════════════════════╪════════════════════════════════╡
│ 'airflow_db'                   │ 'mysql'                     │ 'airflow-sqlp...rvice.default' │ None   │ True           │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'beeline_default'              │ 'beeline'                   │ 'localhost'                    │ 10000  │ False          │ True                 │ 'gAAAAABfdZs0...yjt7nj1C2Dzgm' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'bigquery_default'             │ 'google_cloud_platform'     │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs2...AOdwY-EnZLg==' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'local_mysql'                  │ 'mysql'                     │ 'localhost'                    │ None   │ True           │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'presto_default'               │ 'presto'                    │ 'localhost'                    │ 3400   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'google_cloud_default'         │ 'google_cloud_platform'     │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs2...oMm2saUwAxQ==' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'hive_cli_default'             │ 'hive_cli'                  │ None                           │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'pig_cli_default'              │ 'pig_cli'                   │ None                           │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'hiveserver2_default'          │ 'hiveserver2'               │ 'localhost'                    │ 10000  │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'metastore_default'            │ 'hive_metastore'            │ 'localhost'                    │ 9083   │ False          │ True                 │ 'gAAAAABfdZs0...vNSgFh1mE1HY=' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'mongo_default'                │ 'mongo'                     │ 'mongo'                        │ 27017  │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'mysql_default'                │ 'mysql'                     │ 'mysql'                        │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'postgres_default'             │ 'postgres'                  │ 'postgres'                     │ None   │ True           │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'sqlite_default'               │ 'sqlite'                    │ '/tmp/sqlite_default.db'       │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'http_default'                 │ 'http'                      │ 'https://www.httpbin.org/'     │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'mssql_default'                │ 'mssql'                     │ 'localhost'                    │ 1433   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'vertica_default'              │ 'vertica'                   │ 'localhost'                    │ 5433   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'wasb_default'                 │ 'wasb'                      │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs0...ST7E2347-uG4=' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'webhdfs_default'              │ 'hdfs'                      │ 'localhost'                    │ 50070  │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'ssh_default'                  │ 'ssh'                       │ 'localhost'                    │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'sftp_default'                 │ 'sftp'                      │ 'localhost'                    │ 22     │ False          │ True                 │ 'gAAAAABfdZs0...guLrr1ky5XpN2' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'fs_default'                   │ 'fs'                        │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs0...WqhP9ZLa8gQ==' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'aws_default'                  │ 'aws'                       │ None                           │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'spark_default'                │ 'spark'                     │ 'yarn'                         │ None   │ False          │ True                 │ 'gAAAAABfdZs0...18ws2BelkcL8=' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'druid_broker_default'         │ 'druid'                     │ 'druid-broker'                 │ 8082   │ False          │ True                 │ 'gAAAAABfdZs0...sC6Kcd9mOKhE=' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'druid_ingest_default'         │ 'druid'                     │ 'druid-overlord'               │ 8081   │ False          │ True                 │ 'gAAAAABfdZs0...CpBdCkHuk5lqw' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'redis_default'                │ 'redis'                     │ 'redis'                        │ 6379   │ False          │ True                 │ 'gAAAAABfdZs0...E1qdjhMngIg==' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'sqoop_default'                │ 'sqoop'                     │ 'rmdbs'                        │ None   │ False          │ False                │ ''                             │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'emr_default'                  │ 'emr'                       │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs0...GsJIS8IjaBuM=' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'databricks_default'           │ 'databricks'                │ 'localhost'                    │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'qubole_default'               │ 'qubole'                    │ 'localhost'                    │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'segment_default'              │ 'segment'                   │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs0...oawClUj4Qzj8i' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'azure_data_lake_default'      │ 'azure_data_lake'           │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs0...DMIAMmOeZNg==' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'azure_cosmos_default'         │ 'azure_cosmos'              │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs0...tusOfGrWviAk=' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'azure_contai...ances_default' │ 'azure_container_instances' │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs0...q460BKvTu4Lk=' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'cassandra_default'            │ 'cassandra'                 │ 'cassandra'                    │ 9042   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'dingding_default'             │ 'http'                      │ ''                             │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'opsgenie_default'             │ 'http'                      │ ''                             │ None   │ False          │ False                │ None                           │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'google_cloud...store_default' │ 'google_cloud_platform'     │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs2...ltsxQHWUgxA==' │
├────────────────────────────────┼─────────────────────────────┼────────────────────────────────┼────────┼────────────────┼──────────────────────┼────────────────────────────────┤
│ 'google_cloud_storage_default' │ 'google_cloud_platform'     │ None                           │ None   │ False          │ True                 │ 'gAAAAABfdZs2...RNLazPEE7gQ==' │
╘════════════════════════════════╧═════════════════════════════╧════════════════════════════════╧════════╧════════════════╧══════════════════════╧════════════════════════════════╛

The issue with this output is that it returns a hardly usable table of data (See image bellow). Ideally, it should return a json like structure.

  • Question 1 : Is there a quick way to export (and import?) the connections (and variables) as a json?
  • Question 2 : If Question 1 is "there isn’t a way", then how do I turn this data into a beautiful dictionary or key-value like structure?

Also, any additional explanation on the awk/grep patterns would be very much appreciated.

3

Answers


  1. As I can see you want to export your connections to a .json file.

    Currently, according to the documentation, using the latest and the stable version of Airflow , you can export the connections to a .json file. The command is as follows,

    airflow connections export connections.json
    

    Or,

    airflow connections export /tmp/connections --format json
    

    The .json format uses the schema,

    {
      "airflow_db": {
        "conn_type": "mysql",
        "host": "mysql",
        "login": "root",
        "password": "plainpassword",
        "schema": "airflow",
        "port": null,
        "extra": null
      },
      "druid_broker_default": {
        "conn_type": "druid",
        "host": "druid-broker",
        "login": null,
        "password": null,
        "schema": null,
        "port": 8082,
        "extra": "{"endpoint": "druid/v2/sql"}"
      }
    } 
    

    In addition, each connection is store in a environment variable respecting this naming convention: AIRFLOW_CONN_{CONN_ID}, here.

    Login or Signup to reply.
  2. Using cat file instead of your gcloud command which I don’t have to generate the table in your question:

    $ cat tst.awk
    !/[[:space:]]/ {
        # Skip all lines that separate the data rows
        next
    }
    (++nr) == 1 {
        # Set FS to whatever the combination of control chars is at the start of the first data line
        match($0,/[^[:blank:]]+/)
        FS = "[[:blank:]]*" substr($0,1,RLENGTH) "[[:blank:]]*"
    }
    {
        # Get rid of the FSs at the start and end of the line to avoid leading/trailing null fields
        gsub("^" FS "|" FS "$","")
    }
    nr == 1 {
        # Store the header lines for later use
        for (i=1; i<=NF; i++) {
            gsub(/[[:blank:]]+/,"_",$i)
            hdr[i] = $i
        }
        print "{"
        next
    }
    {
        # Print the json-equivalent for the data on the current line
        gsub(/47/,""")
        printf "%s  %s: {n", (nr>2 ? ",n" : ""), $1
        for (i=2; i<=NF; i++) {
            printf "    "%s": %s%sn", hdr[i], $i, (i<NF ? "," : "")
        }
        printf "  }", $1
    }
    END {
        print "n}"
    }
    

    $ cat file | awk -f tst.awk
    {
      "airflow_db": {
        "Conn_Type": "mysql",
        "Host": "airflow-sqlp...rvice.default",
        "Port": None,
        "Is_Encrypted": True,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "beeline_default": {
        "Conn_Type": "beeline",
        "Host": "localhost",
        "Port": 10000,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...yjt7nj1C2Dzgm"
      },
      "bigquery_default": {
        "Conn_Type": "google_cloud_platform",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs2...AOdwY-EnZLg=="
      },
      "local_mysql": {
        "Conn_Type": "mysql",
        "Host": "localhost",
        "Port": None,
        "Is_Encrypted": True,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "presto_default": {
        "Conn_Type": "presto",
        "Host": "localhost",
        "Port": 3400,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "google_cloud_default": {
        "Conn_Type": "google_cloud_platform",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs2...oMm2saUwAxQ=="
      },
      "hive_cli_default": {
        "Conn_Type": "hive_cli",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "pig_cli_default": {
        "Conn_Type": "pig_cli",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "hiveserver2_default": {
        "Conn_Type": "hiveserver2",
        "Host": "localhost",
        "Port": 10000,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "metastore_default": {
        "Conn_Type": "hive_metastore",
        "Host": "localhost",
        "Port": 9083,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...vNSgFh1mE1HY="
      },
      "mongo_default": {
        "Conn_Type": "mongo",
        "Host": "mongo",
        "Port": 27017,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "mysql_default": {
        "Conn_Type": "mysql",
        "Host": "mysql",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "postgres_default": {
        "Conn_Type": "postgres",
        "Host": "postgres",
        "Port": None,
        "Is_Encrypted": True,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "sqlite_default": {
        "Conn_Type": "sqlite",
        "Host": "/tmp/sqlite_default.db",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "http_default": {
        "Conn_Type": "http",
        "Host": "https://www.httpbin.org/",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "mssql_default": {
        "Conn_Type": "mssql",
        "Host": "localhost",
        "Port": 1433,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "vertica_default": {
        "Conn_Type": "vertica",
        "Host": "localhost",
        "Port": 5433,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "wasb_default": {
        "Conn_Type": "wasb",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...ST7E2347-uG4="
      },
      "webhdfs_default": {
        "Conn_Type": "hdfs",
        "Host": "localhost",
        "Port": 50070,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "ssh_default": {
        "Conn_Type": "ssh",
        "Host": "localhost",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "sftp_default": {
        "Conn_Type": "sftp",
        "Host": "localhost",
        "Port": 22,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...guLrr1ky5XpN2"
      },
      "fs_default": {
        "Conn_Type": "fs",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...WqhP9ZLa8gQ=="
      },
      "aws_default": {
        "Conn_Type": "aws",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "spark_default": {
        "Conn_Type": "spark",
        "Host": "yarn",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...18ws2BelkcL8="
      },
      "druid_broker_default": {
        "Conn_Type": "druid",
        "Host": "druid-broker",
        "Port": 8082,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...sC6Kcd9mOKhE="
      },
      "druid_ingest_default": {
        "Conn_Type": "druid",
        "Host": "druid-overlord",
        "Port": 8081,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...CpBdCkHuk5lqw"
      },
      "redis_default": {
        "Conn_Type": "redis",
        "Host": "redis",
        "Port": 6379,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...E1qdjhMngIg=="
      },
      "sqoop_default": {
        "Conn_Type": "sqoop",
        "Host": "rmdbs",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": ""
      },
      "emr_default": {
        "Conn_Type": "emr",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...GsJIS8IjaBuM="
      },
      "databricks_default": {
        "Conn_Type": "databricks",
        "Host": "localhost",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "qubole_default": {
        "Conn_Type": "qubole",
        "Host": "localhost",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "segment_default": {
        "Conn_Type": "segment",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...oawClUj4Qzj8i"
      },
      "azure_data_lake_default": {
        "Conn_Type": "azure_data_lake",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...DMIAMmOeZNg=="
      },
      "azure_cosmos_default": {
        "Conn_Type": "azure_cosmos",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...tusOfGrWviAk="
      },
      "azure_contai...ances_default": {
        "Conn_Type": "azure_container_instances",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs0...q460BKvTu4Lk="
      },
      "cassandra_default": {
        "Conn_Type": "cassandra",
        "Host": "cassandra",
        "Port": 9042,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "dingding_default": {
        "Conn_Type": "http",
        "Host": "",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "opsgenie_default": {
        "Conn_Type": "http",
        "Host": "",
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": False,
        "Extra": None
      },
      "google_cloud...store_default": {
        "Conn_Type": "google_cloud_platform",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs2...ltsxQHWUgxA=="
      },
      "google_cloud_storage_default": {
        "Conn_Type": "google_cloud_platform",
        "Host": None,
        "Port": None,
        "Is_Encrypted": False,
        "Is_Extra_Encrypted": True,
        "Extra": "gAAAAABfdZs2...RNLazPEE7gQ=="
      }
    }
    

    Note that idk if that’s actually valid json or not, I’m just moving blocks of text from positions in your input to positions in your output. Hopefully it’ll be easy enough for you to make whatever changes you need to make to produce whatever output you actually wanted to get (which was missing from your question).

    Login or Signup to reply.
  3. For Airflow 1

    1. Connect to correct pod
    gcloud container clusters get-credentials PROJECT_PATH  --zone ZONE
    

    PROJECT_PATH is something like projects/…./..gke : this is the value of GKE cluster field in the Environment detail section

    kubectl get pods --all-namespaces
     
    
    1. From the NAMESPACE column take the name of a composer-* row and from the NAME column take the name of an airflow-worker-* row. Then connect to the worker as follows:
    kubectl exec -itn composer-1-10-0-airflow-1-10-6-5983e0fe airflow-worker-8d8c49c87-9v7c4 -- /bin/bash
    
    1. Once inside the worker, connect to database shell.
    airflow shell
    

    NOTE: If shell command is not available, use the instruction on https://cloud.google.com/composer/docs/access-airflow-database#airflow-1 to access the database.
    And then run the SQL

    select   json_arrayagg(
                json_object(
                 'id', id,
                 'conn_id', conn_id,
                 'conn_type', conn_type,
                 'host', host,
                 'login',login,
                 'password',password,
                 'port',port,
                 'extra', extra,
                 'is_encrypted', is_encrypted,
                 'is_extra_encrypted', is_extra_encrypted,
                 'schema',IFNULL(`schema`, null)
               )
            ) as json_result
    from (select * from connection  ) x;
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search