- Joined
- Mar 23, 2024
- Messages
- 3
- Reaction score
- 0
I wrote the Python code to upload the .gz file from my local machine to the OpenStack object store using the following documentation: https://docs.openstack.org/python-swiftc...t-api.html.
The file gets uploaded successfully. However, when I tried to compress the file after downloading it from the object storage using the Swift commands (I cannot ssh to the object storage instance apart from using Swift commands), I got the following error:
What should I do to ensure the file gets uploaded in the same format and size to the object storage as the file on my local machine?
Any assistance will be appreciated.
Yours sincerely
What I have tried:
Below is the code I wrote to upload the compressed file (.gz)
The file gets uploaded successfully. However, when I tried to compress the file after downloading it from the object storage using the Swift commands (I cannot ssh to the object storage instance apart from using Swift commands), I got the following error:
Code:
# gzip -d object_netbox_2024-07-20.psql.gz
gzip: sanbox_nb01_netbox_2024-07-20.psql.gz: not in gzip format
What should I do to ensure the file gets uploaded in the same format and size to the object storage as the file on my local machine?
Any assistance will be appreciated.
Yours sincerely
What I have tried:
Below is the code I wrote to upload the compressed file (.gz)
Python:
from keystoneauth1 import session
from keystoneauth1.identity import v3
from swiftclient.client import Connection, logger
from swiftclient.client import ClientException
import gzip
# Create a password auth plugin
auth = v3.Password(
auth_url='https://cloud.company.com:5000/v3/',
username='myaccount',
password='mypassword',
user_domain_name='Default',
project_name='myproject',
project_domain_name='Default'
)
# Create swiftclient Connection
swift_conn = Connection(session=keystone_session)
# Create a new container
container = 'object-backups'
swift_conn.put_container(container)
res_headers, containers = swift_conn.get_account()
if container in containers:
print("The container " + container + " was created!")
# Create a new object with the contents of Netbox database backup
with gzip.open('/var/backup/netbox_backups/netbox_2024-07-20.psql.gz', 'rb') as f:
# Read the contents...
file_gz_content = f.read()
# Upload the returned contents to the Swift Object Storage container
swift_conn.put_object(
container,
"sanbox_nb01_netbox_2024-07-20.psql.gz",
contents=file_gz_content,
content_type='application/gzip'
)
# Confirm the presence of the object holding the Netbox database backup
obj1 = 'sanbox_nb01_netbox_2024-07-20.psql.gz'
container = 'object-backups'
try:
resp_headers = swift_conn.head_object(container, obj1)
print("The object " + obj1 + " was successfully created")
except ClientException as e:
if e.http_status == '404':
print("The object " + obj1 + " was not found!")
else:
print("An error occurred checking for the existence of the object " + obj1)
Last edited: