dev/docker/iceberg-rest-server/rewrite_config.py (67 lines of code) (raw):
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
import os
env_map = {
"GRAVITINO_IO_IMPL" : "io-impl",
"GRAVITINO_URI" : "uri",
"GRAVITINO_CATALOG_BACKEND" : "catalog-backend",
"GRAVITINO_JDBC_DRIVER": "jdbc-driver",
"GRAVITINO_JDBC_USER": "jdbc-user",
"GRAVITINO_JDBC_PASSWORD": "jdbc-password",
"GRAVITINO_WAREHOUSE" : "warehouse",
"GRAVITINO_CREDENTIAL_PROVIDER_TYPE" : "credential-providers",
"GRAVITINO_CREDENTIAL_PROVIDERS" : "credential-providers",
"GRAVITINO_GCS_CREDENTIAL_FILE_PATH" : "gcs-service-account-file",
"GRAVITINO_GCS_SERVICE_ACCOUNT_FILE" : "gcs-service-account-file",
"GRAVITINO_S3_ACCESS_KEY" : "s3-access-key-id",
"GRAVITINO_S3_SECRET_KEY" : "s3-secret-access-key",
"GRAVITINO_S3_ENDPOINT" : "s3-endpoint",
"GRAVITINO_S3_REGION" : "s3-region",
"GRAVITINO_S3_ROLE_ARN" : "s3-role-arn",
"GRAVITINO_S3_EXTERNAL_ID" : "s3-external-id",
"GRAVITINO_AZURE_STORAGE_ACCOUNT_NAME" : "azure-storage-account-name",
"GRAVITINO_AZURE_STORAGE_ACCOUNT_KEY" : "azure-storage-account-key",
"GRAVITINO_AZURE_TENANT_ID" : "azure-tenant-id",
"GRAVITINO_AZURE_CLIENT_ID" : "azure-client-id",
"GRAVITINO_AZURE_CLIENT_SECRET" : "azure-client-secret",
"GRAVITINO_OSS_ACCESS_KEY": "oss-access-key-id",
"GRAVITINO_OSS_SECRET_KEY": "oss-secret-access-key",
"GRAVITINO_OSS_ENDPOINT": "oss-endpoint",
"GRAVITINO_OSS_REGION": "oss-region",
"GRAVITINO_OSS_ROLE_ARN": "oss-role-arn",
"GRAVITINO_OSS_EXTERNAL_ID": "oss-external-id",
}
init_config = {
"catalog-backend" : "jdbc",
"jdbc-driver" : "org.sqlite.JDBC",
"uri" : "jdbc:sqlite::memory:",
"jdbc-user" : "iceberg",
"jdbc-password" : "iceberg",
"jdbc-initialize" : "true",
"jdbc.schema-version" : "V1"
}
def parse_config_file(file_path):
config_map = {}
with open(file_path, 'r') as file:
for line in file:
stripped_line = line.strip()
if stripped_line and not stripped_line.startswith('#'):
key, value = stripped_line.split('=', 1)
key = key.strip()
value = value.strip()
config_map[key] = value
return config_map
config_prefix = "gravitino.iceberg-rest."
def update_config(config, key, value):
config[config_prefix + key] = value
config_file_path = 'conf/gravitino-iceberg-rest-server.conf'
config_map = parse_config_file(config_file_path)
for k, v in init_config.items():
update_config(config_map, k, v)
for k, v in env_map.items():
if k in os.environ:
update_config(config_map, v, os.environ[k])
if os.path.exists(config_file_path):
os.remove(config_file_path)
with open(config_file_path, 'w') as file:
for key, value in config_map.items():
line = "{} = {}\n".format(key, value)
file.write(line)