PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/swift.py |
""" Module for handling OpenStack Swift calls Author: Anthony Stanton <anthony.stanton@gmail.com> Inspired by the S3 and Nova modules :depends: - swiftclient Python module :configuration: This module is not usable until the user, tenant, auth URL, and password or auth_key are specified either in a pillar or in the minion's config file. For example:: keystone.user: admin keystone.tenant: admin keystone.auth_url: 'http://127.0.0.1:5000/v2.0/' keystone.password: verybadpass # or keystone.auth_key: 203802934809284k2j34lkj2l3kj43k If configuration for multiple OpenStack accounts is required, they can be set up as different configuration profiles: For example:: openstack1: keystone.user: admin keystone.tenant: admin keystone.auth_url: 'http://127.0.0.1:5000/v2.0/' keystone.password: verybadpass # or keystone.auth_key: 203802934809284k2j34lkj2l3kj43k openstack2: keystone.user: admin keystone.tenant: admin keystone.auth_url: 'http://127.0.0.2:5000/v2.0/' keystone.password: verybadpass # or keystone.auth_key: 303802934809284k2j34lkj2l3kj43k With this configuration in place, any of the swift functions can make use of a configuration profile by declaring it explicitly. For example:: salt '*' swift.get mycontainer myfile /tmp/file profile=openstack1 NOTE: For Rackspace cloud files setting keystone.auth_version = 1 is recommended. """ import logging import salt.utils.openstack.swift as suos # Get logging started log = logging.getLogger(__name__) def __virtual__(): """ Only load this module if swift is installed on this minion. """ return suos.check_swift() def _auth(profile=None): """ Set up openstack credentials """ if profile: credentials = __salt__["config.option"](profile) user = credentials["keystone.user"] password = credentials.get("keystone.password", None) tenant = credentials["keystone.tenant"] auth_url = credentials["keystone.auth_url"] auth_version = credentials.get("keystone.auth_version", 2) region_name = credentials.get("keystone.region_name", None) api_key = credentials.get("keystone.api_key", None) os_auth_system = credentials.get("keystone.os_auth_system", None) else: user = __salt__["config.option"]("keystone.user") password = __salt__["config.option"]("keystone.password", None) tenant = __salt__["config.option"]("keystone.tenant") auth_url = __salt__["config.option"]("keystone.auth_url") auth_version = __salt__["config.option"]("keystone.auth_version", 2) region_name = __salt__["config.option"]("keystone.region_name") api_key = __salt__["config.option"]("keystone.api_key") os_auth_system = __salt__["config.option"]("keystone.os_auth_system") kwargs = { "user": user, "password": password, "key": api_key, "tenant_name": tenant, "auth_url": auth_url, "auth_version": auth_version, "region_name": region_name, } return suos.SaltSwift(**kwargs) def delete(cont, path=None, profile=None): """ Delete a container, or delete an object from a container. CLI Example to delete a container:: salt myminion swift.delete mycontainer CLI Example to delete an object from a container:: salt myminion swift.delete mycontainer remoteobject """ swift_conn = _auth(profile) if path is None: return swift_conn.delete_container(cont) else: return swift_conn.delete_object(cont, path) def get(cont=None, path=None, local_file=None, return_bin=False, profile=None): """ List the contents of a container, or return an object from a container. Set return_bin to True in order to retrieve an object wholesale. Otherwise, Salt will attempt to parse an XML response. CLI Example to list containers: .. code-block:: bash salt myminion swift.get CLI Example to list the contents of a container: .. code-block:: bash salt myminion swift.get mycontainer CLI Example to return the binary contents of an object: .. code-block:: bash salt myminion swift.get mycontainer myfile.png return_bin=True CLI Example to save the binary contents of an object to a local file: .. code-block:: bash salt myminion swift.get mycontainer myfile.png local_file=/tmp/myfile.png """ swift_conn = _auth(profile) if cont is None: return swift_conn.get_account() if path is None: return swift_conn.get_container(cont) if return_bin is True: return swift_conn.get_object(cont, path, return_bin) if local_file is not None: return swift_conn.get_object(cont, path, local_file) return False def head(): pass def put(cont, path=None, local_file=None, profile=None): """ Create a new container, or upload an object to a container. CLI Example to create a container: .. code-block:: bash salt myminion swift.put mycontainer CLI Example to upload an object to a container: .. code-block:: bash salt myminion swift.put mycontainer remotepath local_file=/path/to/file """ swift_conn = _auth(profile) if path is None: return swift_conn.put_container(cont) elif local_file is not None: return swift_conn.put_object(cont, path, local_file) else: return False