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 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?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 machine
import 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.