<commit_before><?xml version="1.0" encoding="UTF-8"?>
<section xmlns="http://docbook.org/ns/docbook"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
    xml:id="managing-openstack-object-storage-with-swift-cli">
    <title>Manage objects and containers</title>
    <?dbhtml stop-chunking?>
    <para>The OpenStack Object Storage service provides the
      <command>swift</command> client, which is a command-line interface (CLI).
    Use this client to list objects and containers, upload objects to
    containers, and download or delete objects from containers. You can also
    gather statistics and update metadata for accounts, containers, and
    objects.</para>
    <para>This client is based on the native swift client library,
            <literal>client.py</literal>, which seamlessly
        re-authenticates if the current token expires during
        processing, retries operations multiple times, and provides a
        processing concurrency of 10.</para>
    <section xml:id="cli_create_containers">
      <title>Create and manage containers</title>
      <itemizedlist>
      <listitem>
        <para>To create a container, run the following command and replace
            <replaceable>CONTAINER</replaceable> with the name of your
          container.</para>
        <screen><prompt>$</prompt> <userinput>swift post <replaceable>CONTAINER</replaceable></userinput></screen></listitem>
    <listitem>
      <para>To list all containers: run the following command:</para>
      <screen><prompt>$</prompt> <userinput>swift list</userinput></screen>
    </listitem>
      <listitem>
        <para>To check the status of containers, run the following
          command:</para>
        <screen><prompt>$</prompt> <userinput>swift stat</userinput></screen>
<screen><computeroutput>Account: <KEY>
Containers: 2
Objects: 3
Bytes: 268826
Accept-Ranges: bytes
X-Timestamp: 1392683866.17952
Content-Type: text/plain; charset=utf-8</computeroutput></screen>
        <para>You can also use the <command>swift stat</command> command with the
        <replaceable>ACCOUNT</replaceable> or <replaceable>CONTAINER</replaceable>
        names as parameters.</para>
        <screen><prompt>$</prompt> <userinput>swift stat <replaceable>CONTAINER</replaceable></userinput></screen>
<screen><computeroutput>Account: <KEY>
Container: storage1
Objects: 2
Bytes: 240221
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Timestamp: 1392683866.20180
Content-Type: text/plain; charset=utf-8</computeroutput></screen>
      </listitem>
      </itemizedlist>
    </section>
  <section xml:id="cli_manage_access_swift">
    <title>Manage access</title>
    <itemizedlist>
      <listitem>
        <para>Users have roles on accounts. For example, a user with the admin
          role has full access to all containers and objects in an account. You
          can set access control lists (ACLs) at the container level and support
          lists for read and write access, which you set with the
            <literal>X-Container-Read</literal> and
            <literal>X-Container-Write</literal> headers.</para>
        <para>To give a user read access, use the <command>swift post</command>
          command with the <parameter>-r</parameter> parameter. To give a user
          write access, use the <parameter>-w</parameter> parameter.</para>
        <para>The following example enables the <literal>testuser</literal> user
          to read objects in the container:</para>
        <screen><prompt>$</prompt> <userinput>swift post -r 'testuser'</userinput></screen>
        <para>You can also use this command with a list of users.</para>
      </listitem>
      <listitem>
        <para>If you use StaticWeb middleware to enable Object Storage to serve
          public web content, use <literal>.r:</literal>, followed by a list of
          allowed referrers.</para>
        <para>The following command gives object access to all referring
          domains:</para>
        <screen><prompt>$</prompt> <userinput>swift post -r '.r:*'</userinput></screen>
      </listitem>
    </itemizedlist>
  </section>
    <section xml:id="cli_manage_objects">
      <title>Manage objects</title>
      <itemizedlist>
        <listitem>
        <para>To upload an object to a container, run the following
          command:</para>
      <screen><prompt>$</prompt> <userinput>swift upload <replaceable>CONTAINER</replaceable> <replaceable>OBJECT_FILENAME</replaceable></userinput></screen>
        <para>To upload in chunks, for large files, run the following command:</para>
      <screen><prompt>$</prompt> <userinput>swift upload -S <replaceable>CHUNK_SIZE</replaceable> <replaceable>CONTAINER</replaceable> <replaceable>OBJECT_FILENAME</replaceable></userinput></screen>
      </listitem>
      <listitem>
        <para>To check the status of the object, run the following
          command:</para>
      <screen><prompt>$</prompt> <userinput>swift stat <replaceable>CONTAINER</replaceable> <replaceable>OBJECT_FILENAME</replaceable></userinput></screen>
<screen><computeroutput>Account: <KEY>
Container: storage1
Object: images
Content Type: application/octet-stream
Content Length: 211616
Last Modified: Tue, 18 Feb 2014 00:40:36 GMT
ETag: 82169623d55158f70a0d720f238ec3ef
Meta Orig-Filename: images.jpg
Accept-Ranges: bytes
X-Timestamp: 1392684036.33306</computeroutput></screen>
    </listitem>
      <listitem>
        <para>To list the objects in a container, run the following command:</para>
        <screen><prompt>$</prompt> <userinput>swift list <replaceable>CONTAINER</replaceable> <replaceable>OBJECT_FILENAME</replaceable></userinput></screen>
        </listitem>
      <listitem>
        <para>To download an object from a container:, run the following
          command:</para><commit_msg>Removed OBJECT_FILENAME in swift list container<commit_after><?xml version="1.0" encoding="UTF-8"?>
<section xmlns="http://docbook.org/ns/docbook"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
    xml:id="managing-openstack-object-storage-with-swift-cli">
    <title>Manage objects and containers</title>
    <?dbhtml stop-chunking?>
    <para>The OpenStack Object Storage service provides the
      <command>swift</command> client, which is a command-line interface (CLI).
    Use this client to list objects and containers, upload objects to
    containers, and download or delete objects from containers. You can also
    gather statistics and update metadata for accounts, containers, and
    objects.</para>
    <para>This client is based on the native swift client library,
            <literal>client.py</literal>, which seamlessly
        re-authenticates if the current token expires during
        processing, retries operations multiple times, and provides a
        processing concurrency of 10.</para>
    <section xml:id="cli_create_containers">
      <title>Create and manage containers</title>
      <itemizedlist>
      <listitem>
        <para>To create a container, run the following command and replace
            <replaceable>CONTAINER</replaceable> with the name of your
          container.</para>
        <screen><prompt>$</prompt> <userinput>swift post <replaceable>CONTAINER</replaceable></userinput></screen></listitem>
    <listitem>
      <para>To list all containers: run the following command:</para>
      <screen><prompt>$</prompt> <userinput>swift list</userinput></screen>
    </listitem>
      <listitem>
        <para>To check the status of containers, run the following
          command:</para>
        <screen><prompt>$</prompt> <userinput>swift stat</userinput></screen>
<screen><computeroutput>Account: <KEY>
Containers: 2
Objects: 3
Bytes: 268826
Accept-Ranges: bytes
X-Timestamp: 1392683866.17952
Content-Type: text/plain; charset=utf-8</computeroutput></screen>
        <para>You can also use the <command>swift stat</command> command with the
        <replaceable>ACCOUNT</replaceable> or <replaceable>CONTAINER</replaceable>
        names as parameters.</para>
        <screen><prompt>$</prompt> <userinput>swift stat <replaceable>CONTAINER</replaceable></userinput></screen>
<screen><computeroutput>Account: <KEY>
Container: storage1
Objects: 2
Bytes: 240221
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Timestamp: 1392683866.20180
Content-Type: text/plain; charset=utf-8</computeroutput></screen>
      </listitem>
      </itemizedlist>
    </section>
  <section xml:id="cli_manage_access_swift">
    <title>Manage access</title>
    <itemizedlist>
      <listitem>
        <para>Users have roles on accounts. For example, a user with the admin
          role has full access to all containers and objects in an account. You
          can set access control lists (ACLs) at the container level and support
          lists for read and write access, which you set with the
            <literal>X-Container-Read</literal> and
            <literal>X-Container-Write</literal> headers.</para>
        <para>To give a user read access, use the <command>swift post</command>
          command with the <parameter>-r</parameter> parameter. To give a user
          write access, use the <parameter>-w</parameter> parameter.</para>
        <para>The following example enables the <literal>testuser</literal> user
          to read objects in the container:</para>
        <screen><prompt>$</prompt> <userinput>swift post -r 'testuser'</userinput></screen>
        <para>You can also use this command with a list of users.</para>
      </listitem>
      <listitem>
        <para>If you use StaticWeb middleware to enable Object Storage to serve
          public web content, use <literal>.r:</literal>, followed by a list of
          allowed referrers.</para>
        <para>The following command gives object access to all referring
          domains:</para>
        <screen><prompt>$</prompt> <userinput>swift post -r '.r:*'</userinput></screen>
      </listitem>
    </itemizedlist>
  </section>
    <section xml:id="cli_manage_objects">
      <title>Manage objects</title>
      <itemizedlist>
        <listitem>
        <para>To upload an object to a container, run the following
          command:</para>
      <screen><prompt>$</prompt> <userinput>swift upload <replaceable>CONTAINER</replaceable> <replaceable>OBJECT_FILENAME</replaceable></userinput></screen>
        <para>To upload in chunks, for large files, run the following command:</para>
      <screen><prompt>$</prompt> <userinput>swift upload -S <replaceable>CHUNK_SIZE</replaceable> <replaceable>CONTAINER</replaceable> <replaceable>OBJECT_FILENAME</replaceable></userinput></screen>
      </listitem>
      <listitem>
        <para>To check the status of the object, run the following
          command:</para>
      <screen><prompt>$</prompt> <userinput>swift stat <replaceable>CONTAINER</replaceable> <replaceable>OBJECT_FILENAME</replaceable></userinput></screen>
<screen><computeroutput>Account: <KEY>
Container: storage1
Object: images
Content Type: application/octet-stream
Content Length: 211616
Last Modified: Tue, 18 Feb 2014 00:40:36 GMT
ETag: 82169623d55158f70a0d720f238ec3ef
Meta Orig-Filename: images.jpg
Accept-Ranges: bytes
X-Timestamp: 1392684036.33306</computeroutput></screen>
    </listitem>
      <listitem>
        <para>To list the objects in a container, run the following command:</para>
        <screen><prompt>$</prompt> <userinput>swift list <replaceable>CONTAINER</replaceable></userinput></screen>
        </listitem>
      <listitem>
        <para>To download an object from a container:, run the following
          command:</para>
{'fraction_non_alphanumeric': 0.1176922420414782, 'fraction_numerical': 0.02082444311683878, 'mean_word_length': 3.6097560975609757, 'pattern_counts': {'":': 0, '<': 391, '<?xml version=': 2, '>': 391, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 16}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3005617', 'n_tokens_mistral': 3558, 'n_tokens_neox': 3249, 'n_words': 971}