# rax_files_objects – Upload, download, and delete objects in Rackspace Cloud Files

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Status

## Synopsis

- Upload, download, and delete objects in Rackspace Cloud Files

## Requirements

The below requirements are needed on the host that executes this module.

- pyrax
- python >= 2.6

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
api_key string |  | Rackspace API key, overrides credentials. aliases: password
auth_endpoint - | Default: "https://identity.api.rackspacecloud.com/v2.0/" | The URI of the authentication service.

clear_meta
boolean

Choices:
- no ←
- yes

Optionally clear existing metadata when applying metadata to existing objects. Selecting this option is only appropriate when setting type=meta

container - / required |  | The container to use for file object operations.
credentials path |  | File to find the Rackspace credentials in. Ignored if api_key and username are provided. aliases: creds_file
dest - |  | The destination of a "get" operation; i.e. a local directory, "/home/user/myfolder". Used to specify the destination of an operation on a remote object; i.e. a file name, "file1", or a comma-separated list of remote objects, "file1,file2,file17"
env string |  | Environment as configured in ~/.pyrax.cfg, see https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#pyrax-configuration.
expires - |  | Used to set an expiration on a file or folder uploaded to Cloud Files. Requires an integer, specifying expiration in seconds
identity_type - | Default: "rackspace" | Authentication mechanism to use, such as rackspace or keystone.
meta - |  | A hash of items to set as metadata values on an uploaded file or folder

method
-

Choices:
- get ←
- put
- delete

The method of operation to be performed. For example, put to upload files to Cloud Files, get to download files from Cloud Files or delete to delete remote objects in Cloud Files

region string | Default: "DFW" | Region to create an instance in.
src - |  | Source from which to upload files. Used to specify a remote object as a source for an operation, i.e. a file name, "file1", or a comma-separated list of remote objects, "file1,file2,file17". src and dest are mutually exclusive on remote-only object operations

state
-

Choices:
- present ←
- absent

Indicate desired state of the resource

structure
boolean

Choices:
- no
- yes ←

Used to specify whether to maintain nested directory structure when downloading objects from Cloud Files. Setting to false downloads the contents of a container to a single, flat directory

tenant_id - |  | The tenant ID used for authentication.
tenant_name - |  | The tenant name used for authentication.

type
-

Choices:
- file ←
- meta

Type of object to do work on
Metadata object or a file object

username string |  | Rackspace username, overrides credentials.

validate_certs
boolean

Choices:
- no
- yes

Whether or not to require SSL validation of API endpoints.
aliases: verify_ssl

## Notes

Note

- The following environment variables can be used, `RAX_USERNAME`, `RAX_API_KEY`, `RAX_CREDS_FILE`, `RAX_CREDENTIALS`, `RAX_REGION`.
- `RAX_CREDENTIALS` and `RAX_CREDS_FILE` points to a credentials file appropriate for pyrax. See https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#authenticating
- `RAX_USERNAME` and `RAX_API_KEY` obviate the use of a credentials file
- `RAX_REGION` defines a Rackspace Public Cloud region (DFW, ORD, LON, ...)
- The following environment variables can be used, `RAX_USERNAME`, `RAX_API_KEY`, `RAX_CREDS_FILE`, `RAX_CREDENTIALS`, `RAX_REGION`.
- `RAX_CREDENTIALS` and `RAX_CREDS_FILE` points to a credentials file appropriate for pyrax. See https://github.com/rackspace/pyrax/blob/master/docs/getting_started.md#authenticating
- `RAX_USERNAME` and `RAX_API_KEY` obviate the use of a credentials file
- `RAX_REGION` defines a Rackspace Public Cloud region (DFW, ORD, LON, ...)

## Examples

    - name: "Test Cloud Files Objects"
      hosts: local
      gather_facts: False
      tasks:
        - name: "Get objects from test container"
          rax_files_objects:
            container: testcont
            dest: ~/Downloads/testcont

        - name: "Get single object from test container"
          rax_files_objects:
            container: testcont
            src: file1
            dest: ~/Downloads/testcont

        - name: "Get several objects from test container"
          rax_files_objects:
            container: testcont
            src: file1,file2,file3
            dest: ~/Downloads/testcont

        - name: "Delete one object in test container"
          rax_files_objects:
            container: testcont
            method: delete
            dest: file1

        - name: "Delete several objects in test container"
          rax_files_objects:
            container: testcont
            method: delete
            dest: file2,file3,file4

        - name: "Delete all objects in test container"
          rax_files_objects:
            container: testcont
            method: delete

        - name: "Upload all files to test container"
          rax_files_objects:
            container: testcont
            method: put
            src: ~/Downloads/onehundred

        - name: "Upload one file to test container"
          rax_files_objects:
            container: testcont
            method: put
            src: ~/Downloads/testcont/file1

        - name: "Upload one file to test container with metadata"
          rax_files_objects:
            container: testcont
            src: ~/Downloads/testcont/file2
            method: put
            meta:
              testkey: testdata
              who_uploaded_this: someuser@example.com

        - name: "Upload one file to test container with TTL of 60 seconds"
          rax_files_objects:
            container: testcont
            method: put
            src: ~/Downloads/testcont/file3
            expires: 60

        - name: "Attempt to get remote object that does not exist"
          rax_files_objects:
            container: testcont
            method: get
            src: FileThatDoesNotExist.jpg
            dest: ~/Downloads/testcont
          ignore_errors: yes

        - name: "Attempt to delete remote object that does not exist"
          rax_files_objects:
            container: testcont
            method: delete
            dest: FileThatDoesNotExist.jpg
          ignore_errors: yes

    - name: "Test Cloud Files Objects Metadata"
      hosts: local
      gather_facts: false
      tasks:
        - name: "Get metadata on one object"
          rax_files_objects:
            container: testcont
            type: meta
            dest: file2

        - name: "Get metadata on several objects"
          rax_files_objects:
            container: testcont
            type: meta
            src: file2,file1

        - name: "Set metadata on an object"
          rax_files_objects:
            container: testcont
            type: meta
            dest: file17
            method: put
            meta:
              key1: value1
              key2: value2
            clear_meta: true

        - name: "Verify metadata is set"
          rax_files_objects:
            container: testcont
            type: meta
            src: file17

        - name: "Delete metadata"
          rax_files_objects:
            container: testcont
            type: meta
            dest: file17
            method: delete
            meta:
              key1: ''
              key2: ''

        - name: "Get metadata on all objects"
          rax_files_objects:
            container: testcont
            type: meta

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- Paul Durivage (@angstwad)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.