blob: 5220a3dedcdad5097bd081ddaa598461a0348a68 [file] [log] [blame]
#!/usr/bin/env python
# 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.
"""
Script which uploads pricing data file (pricing.json) to an S3 bucket.
Based on https://github.com/scalyr/scalyr-agent-2/blob/master/
scripts/circleci/upload-coverage-data-to-s3.py (ASF 2.0)
"""
import os
import sys
from libcloud.storage.types import Provider
from libcloud.storage.providers import get_driver
BUCKET_NAME = os.environ.get("PRICING_DATA_BUCKET_NAME", "libcloud-pricing-data")
ACCESS_KEY_ID = os.environ.get("AWS_ACCESS_KEY_ID", None)
ACCESS_KEY_SECRET = os.environ.get("AWS_ACCESS_KEY_SECRET", None)
AWS_REGION = os.environ.get("AWS_REGION", "us-east-1")
if not ACCESS_KEY_ID:
raise ValueError("AWS_ACCESS_KEY_ID env variable not set")
if not ACCESS_KEY_SECRET:
raise ValueError("AWS_ACCESS_KEY_SECRET env variable not set")
def upload_file(file_path):
if not os.path.isfile(file_path):
raise ValueError("File %s doesn't exist" % (file_path))
print("Uploading pricing data files to S3")
cls = get_driver(Provider.S3)
driver = cls(ACCESS_KEY_ID, ACCESS_KEY_SECRET, region=AWS_REGION)
file_paths = [
file_path,
"%s.sha256" % (file_path),
"%s.sha512" % (file_path),
]
for file_path in file_paths:
file_name = os.path.basename(file_path)
object_name = file_name
container = driver.get_container(container_name=BUCKET_NAME)
obj = container.upload_object(file_path=file_path, object_name=object_name)
print(("Object uploaded to: %s/%s" % (BUCKET_NAME, object_name)))
print(obj)
if __name__ == "__main__":
file_path = os.path.abspath(sys.argv[1])
upload_file(file_path)