Jul-24-2024, 03:24 PM
(This post was last modified: Jul-24-2024, 03:24 PM by Hanginium65.)
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 decompress 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
Below is the code I wrote to upload the file to the Swift object storage
Yours sincerely
The file gets uploaded successfully. However, when I tried to decompress 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
Output:# gzip -d object_netbox_2024-07-20.psql.gz
gzip: sanbox_nb01_netbox_2024-07-20.psql.gz: not in gzip formatWhat 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?Below is the code I wrote to upload the file to the Swift object storage
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-03-16.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,
"object_netbox_2024-06-16.psql.gz",
contents=file_gz_content,
content_type='application/gzip'
)
# Confirm the presence of the object holding the Netbox database backup
obj1 = 'object_netbox_2024-06-16.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)Below is the code I wrote to download the file from the Swift object storage to my local machineimport gzip
import shutil
import tarfile
# 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 session
keystone_session = session.Session(auth=auth)
# Create swiftclient Connection
swift_conn = Connection(session=keystone_session)
# Create a new container
container = 'netbox-backups'
swift_conn.put_container(container)
res_headers, containers = swift_conn.get_account()
if container in containers:
print("The container " + container + " was created!")
# Download the created object from the Object Storage
obj = 'sanbox_nb01_netbox_2024-07-20.psql.gz'
container = 'netbox-backups'
resp_headers, obj_contents = swift_conn.get_object(container, obj)
with open('sanbox_netbox_2024-07-20.psql.gz', 'wb') as local:
local.write(obj_contents)Any assistance will be appreciated.Yours sincerely
Gribouillis write Jul-22-2024, 02:47 PM:
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
