Dell DX6000 Application Manual

Dell DX6000 Application Manual

Dx object storage application guide version 5.0
Table of Contents
DX Object Storage Application Guide
Version 5.0
Table of Contents
loading

Summary of Contents for Dell DX6000

  • Page 1 DX Object Storage Application Guide Version 5.0...
  • Page 2 DX Object Storage Application Guide: Version 5.0 Copyright © 2010 Caringo, Inc. All Rights Reserved. No part of this document may be reproduced, transmitted, or transcribed without the written consent of Caringo, Inc.
  • Page 3: Table Of Contents

    Table of Contents 1. Introduction to DX Storage Objects ..................1 1.1. Introducing Named Objects ..................1 1.2. Summary of Named Objects and Unnamed Objects ............ 2 1.3. Common Named Object Terminology ................. 2 1.4. About DX Storage Object Types ................3 1.5.
  • Page 4 5.3.3. Other Normal READ Responses ..............25 5.4. Error Responses to READ ..................25 6. SCSP WRITE ........................27 6.1. Introduction to WRITE ..................... 27 6.1.1. About the Expect: 100-continue Header and WRITE ........28 6.1.2. About Replicate On Write ................28 6.2.
  • Page 5 13.3. Example: Creating Bucket Owners ................. 51 13.4. Examples of Creating Buckets and Named Objects ..........51 14. Managing Security for Domain Managers ................54 14.1. What Domain Managers Need to Know ..............54 14.2. About Domain Manager Tasks and Responsibilities ..........54 14.3.
  • Page 6: Introduction To Dx Storage Objects

    Chapter 1. Introduction to DX Storage Objects The following topics in this chapter provide application programmers an overview of working with objects in a DX Storage storage cloud: • Section 1.1, “Introducing Named Objects” • Section 1.2, “Summary of Named Objects and Unnamed Objects” •...
  • Page 7: Summary Of Named Objects And Unnamed Objects

    • Both named and unnamed objects in any proportion 1.2. Summary of Named Objects and Unnamed Objects You might find it useful to keep the following in mind when planning to implement named and unnamed objects in your cluster: • Unnamed objects: •...
  • Page 8: About Dx Storage Object Types

    the same as an object named /folder2/object.txt. These legitimate names specify two different objects. 1.4. About DX Storage Object Types DX Storage supports the following general types of objects: • Immutable unnamed objects, which can be deleted but not changed. If you delete an unnamed object, its UUID is not reused.
  • Page 9: Universal Resource Identifiers (Uris)

    If you are not sure how to create a domain, see the DX Object Storage Administration Guide or contact your cluster administrator. The following examples assume that the domain is named test.example.com and that you are sending commands to a node whose IP address is 172.16.0.35. You must send the domain name as the Host in each request.
  • Page 10: About Objects And Security

    Currently, DX Storage understands only one application-level protocol, the Simple Content Storage Protocol (SCSP), which is a subset of the Hypertext Transfer Protocol, HTTP/1.1 used by web servers and browsers. While it is possible that additional access protocols will be added to DX Storage in the future, HTTP is the only protocol supported for the URI at this time.
  • Page 11: Commonly Used Security Terminology

    1.8.2. Commonly Used Security Terminology Following is a list of commonly used terms: • Security realm: (Also referred to as a realm or a user list.) A list of user names and hashed passwords. Associating a realm with a bucket enables users in the realm privileges to execute specific SCSP operations on the bucket.
  • Page 12: About Immutable Objects

    doesn’t help to describe it or name it, because these can be ambiguous. No one else can retrieve your coat, unless they have the coat check. A DX Storage UUID is a 128-bit, 16-octet, case-insensitive, opaque sequence of bits. In text-based languages and protocols, notably the Simple Content Storage Protocol discussed in Chapter 4, Introduction to the Simple Content Storage Protocol...
  • Page 13: Document Typographical Conventions

    Note An anchor stream can be updated at a maximum frequency of once per second. Attempting more frequent updates can produce unpredictable results with the stored object version. 1.10. Document Typographical Conventions Unless otherwise noted, the following typographical conventions are used in this document to represent how commands are entered from the command line.
  • Page 14: Connecting To A Dx Storage Cluster

    Chapter 2. Connecting to a DX Storage Cluster The following topics in this chapter discuss how your application can connect to a DX Storage cluster or node: • Section 2.1, “About the Primary Access Node (PAN)” • Section 2.2, “Requirements for Node Accessibility” 2.1.
  • Page 15: Using Multicast-Dns (Mdns)

    2.2.2. Using Multicast-DNS (mDNS) Another way to make your nodes available on the network and of finding an initial PAN is to use mDNS. mDNS is often referred to by the name Zeroconf, the collective name form DNS and DNS Service Discovery to enable zero-configuration networking.
  • Page 16: Using A Pool Of Static Ip Addresses

    This method is supported and recommended for all deployments. Using some DNS servers, it is even possible to move the maintenance of the PAN addresses out of the applications and into the DNS itself. BIND, the most commonly used DNS server, allows an administrator to enter multiple A records that map a single DNS name to more than one IP address.
  • Page 17: Application Best Practices

    POST or DELETE calls on the high availability code path of your client application. Instead, Dell recommends you perform POST and DELETE on buckets using a separate initialization or setup routine that runs less frequently.
  • Page 18: Handling Redirects

    Most of these client libraries will take care of the low-level protocol issues for you. Formatting the requests and interpreting the responses are usually much easier with an existing framework. In fact, much of the SCSP discussion above can be skipped, allowing the framework to do the work for you. 3.5.
  • Page 19: Multi-Threading

    3.7. Multi-Threading DX Storage is a multi-threaded, multi-node cluster, which means that every node in a DX Storage cluster can establish and maintain connections with many different client applications at the same time. Normally, an application opens only one SCSP connection to the cluster and sends requests and receive responses in a sequential manner.
  • Page 20: Introduction To The Simple Content Storage Protocol (Scsp)

    Chapter 4. Introduction to the Simple Content Storage Protocol (SCSP) The mechanism that applications use to communicate with DX Storage is a simple, text-based protocol based on the HyperText Transfer Protocol (HTTP). Referred to as the Simple Content Storage Protocol, or SCSP, its methods and syntax are a proper subset of the HTTP/1.1 standard. Although many of the optional parts of HTTP/1.1 are not implemented in SCSP (which is why the protocol is referred to as Simple), all required components of the protocol are implemented as well as several of the common methods.
  • Page 21: Http Overview

    4.2. HTTP Overview The following is paraphrased from the HTTP/1.1 specification. The HTTP protocol is a request/response protocol. A client sends a request to the DX Storage server in the form of a request method, URI, and protocol version, followed by a MIME-like message containing request modifiers, client information, and possible body content over a connection with a server.
  • Page 22: Redirect Responses

    302: "Found", 303: "See Other", 304: "Not Modified", 305: "Use Proxy", 307: "Temporary Redirect", 400: "Bad Request", 401: "Unauthorized", 402: "Payment Required", 403: "Forbidden", 404: "Not Found", 405: "Method Not Allowed", 406: "Not Acceptable", 407: "Proxy Authentication Required", 408: "Request Time-out", 409: "Conflict", 410: "Gone", 411: "Length Required",...
  • Page 23: Undefined Responses From Dx Storage

    where bucketname is a simple, URL- encoded identifier that cannot contain slash characters (or any other character not allowed in HTTP URLs), and objectname is any legitimate URL, which can contain slash characters. The domain name must be passed as the Host in the request, unless the domain is the default cluster domain.
  • Page 24: Normal Response Headers

    HTTP/1.1 505 HTTP Version not supported Date: Wed, 1 Sept 2010 15:59:02 GMT Server: CAStor Cluster 5.0.0 Allow: GET, HEAD,POST,PUT, DELETE Connection: close Content-Length: 0 Content-Type: text/html The preceding response indicates a request was received with an HTTP version other than 1.1. DX Storage supports HTTP/1.1 only.
  • Page 25 Header SCSP operations Meaning operations on an unnamed anchor stream object or to delete an unnamed immutable object. INFO, READ, The UUID of the domain, bucket, or named Castor-System-CID DELETE object's parent. This UUID cannot be used for any SCSP operation. By definition, a domain has a CID value of all INFO, READ, A timestamp that specifies when the object was...
  • Page 26 Header SCSP operations Meaning on WRITE. For more information, see Section 18.2.4, “Expires”. Standard HTTP header. Last-Modified READ, INFO Returned for an object that was created with lifepoint a lifepoint header. See Chapter 16, Using Lifepoint Metadata Headers. INFO Specifies the number of known replicas of Replica-Count the object in the cluster;...
  • Page 27: Scsp Read

    Chapter 5. SCSP READ The following topics in this chapter discuss details about SCSP READ: • Section 5.1, “Introduction to READ” • Section 5.2, “Unnamed Object READ Details” • Section 5.3, “Normal Responses to READ” • Section 5.4, “Error Responses to READ” 5.1.
  • Page 28: Unnamed Object Read Details

    User-Agent: DX Storage Client/0.1 5.2. Unnamed Object READ Details If the UUID refers to an unnamed anchor stream object, you must add alias=yes to the URI, as shown in the following example. Failure to include alias=yes for an unnamed object anchor stream read results in a 403 Forbidden response from DX Storage.
  • Page 29: Normal Read Response For Unnamed Objects

    Castor-System-Version: 1287187180.959 Content-Length: 0 Last-Modified: Fri, 15 Oct 2010 18:35:56 GMT lifepoint: [] reps=16 Etag: "da8bfbb04d089b9c22ae77747f327233" Date: Sat, 16 Oct 2010 00:41:23 GMT Server: CAStor Cluster/5.0.0 The initial 401 (Unauthorized) is a normal part of HTTP authentication for a domain. Because access to a domain requires domain manager credentials, you always see an initial 401 on an INFO on a domain.
  • Page 30: Other Normal Read Responses

    Expires: Tue, 05 Oct 2010 19:40:23 GMT Allow: HEAD, GET, PUT, POST, COPY, APPEND, DELETE [application meta-information] Date: Wed, 06 Oct 2010 23:27:03 GMT Server: CAStor Cluster/5.0.0 [content-stream] This response means the node to which the request was sent is returning the requested content in the message body of the response.
  • Page 31 HTTP/1.1 400 Bad Request Date: Wed, 1 Sept 2010 15:59:02 GMT Server: CAStor Cluster/5.0.0 Connection: close Content-Length: 24 Content-Type: text/html CRLF Host header is required. The preceding response indicates a problem with the READ request, such as missing mandatory headers, invalid message body, or any other violation of HTTP/1.1 by the GET request. The actual reason for the error will be described in the message body of the response.
  • Page 32: Scsp Write

    Chapter 6. SCSP WRITE The following topics in this chapter discuss details about SCSP WRITE: • Section 6.1, “Introduction to WRITE” • Section 6.3, “Unnamed Object WRITE Details” • Section 6.4, “Normal Responses to WRITE” • Section 6.5, “Error Responses to WRITE” 6.1.
  • Page 33: About The Expect: 100-Continue Header And Write

    DX Storage makes no assumptions about User-Agent (except that it is an HTTP/1.1 client). The Host header is mandatory and must conform to the requirements of Section 14.23 of the HTTP/1.1 spec. 6.1.1. About the Expect: 100-continue Header and WRITE Expect: 100-continue header tells the server that the client will wait after sending just the header lines and before sending the content stream in the body of the message.
  • Page 34: Error Responses To Write

    Server: CAStor Cluster/5.0.0 Location: http://node-ip/name-or-uuid Content-UUID: 41a140b5271dc8d22ff8d027176a0821 Content-Type: text/html Content-Length: 68 CRLF A new content stream has been created as requested. Its URL is http://node-ip/name-or-uuid The preceding response means the DX Storage cluster has stored at least one copy of the supplied content stream.
  • Page 35 HTTP/1.1 411 Length Required Date: Wed, 1 Sept 2010 15:59:02 GMT Server: CAStor Cluster/5.0.0 Content-Type: text/html Content-Length: 93 CRLF WRITE requests must include a Content-Length header specifying the exact byte-length of the content stream to be stored. The preceding response indicates the WRITE request did not supply the actual length of the content stream, which is required.
  • Page 36: Scsp Delete

    Chapter 7. SCSP DELETE The following topics in this chapter discuss details about SCSP DELETE: • Section 7.1, “Introduction to DELETE” • Section 7.2, “Unnamed Object DELETE Details” • Section 7.3, “Named Object DELETE Details” • Section 7.4, “Normal Responses to DELETE” •...
  • Page 37: Unnamed Object Delete Details

    7.2. Unnamed Object DELETE Details The UUID of a deleted object is never reused, whether the object is immutable or mutable. The query argument ?alias=yes must be added to the URI portion of the HTTP request line for unnamed anchor stream object, as shown in the following example. Failure to include the ? alias=yes argument for an unnamed anchor stream delete will result in a 403 Forbidden response from DX Storage.
  • Page 38: Error Responses To Delete

    The preceding response is similar to the 301 response, except the client should continue to use the current node (the one generating this response) for future requests until further notice. 7.5. Error Responses to DELETE The DX Storage cluster might return the following responses when the specified content cannot be deleted from the cluster or there is a problem with the DELETE request itself.
  • Page 39: Scsp Update

    Chapter 8. SCSP UPDATE The following topics in this chapter discuss details about SCSP UPDATE: • Section 8.1, “Introduction to UPDATE” • Section 8.2, “Unnamed Object UPDATE Details” 8.1. Introduction to UPDATE This section discusses general information about SCSP UPDATE that applies to both named and unnamed objects.
  • Page 40: Normal Responses To Update

    illustrated below. Note that the query argument alias=yes is optional on an UPDATE because this operation applies to anchor streams only. The normal response to a PUT request, similar to a POST, is a 201 (Created) response. 8.3. Normal Responses to UPDATE For a list of response headers, see Section 4.6, “Normal Response Headers”.
  • Page 41: Scsp Copy

    Chapter 9. SCSP COPY The following topics in this chapter discuss details about SCSP COPY: • Section 9.1, “Introduction to COPY” • Section 9.2, “Unnamed Object COPY Details” 9.1. Introduction to COPY This section discusses general information about SCSP COPY that applies to both named and unnamed objects.
  • Page 42: Scsp Append

    Chapter 10. SCSP APPEND The following topics in this chapter discuss details about SCSP APPEND: • Section 10.1, “Introduction to APPEND” • Section 10.2, “Unnamed Object APPEND Details” 10.1. Introduction to APPEND This section discusses general information about SCSP APPEND that applies to both named and unnamed objects.
  • Page 43: Unnamed Object Append Details

    10.2. Unnamed Object APPEND Details The query argument alias=yes is required, and the object specified by the included UUID must be an anchor stream in DX Storage. DX Storage returns a 404 (Not Found) error in any of the following circumstances: •...
  • Page 44: Scsp Info

    Chapter 11. SCSP INFO The following topics in this chapter discuss details about SCSP INFO: • Section 11.1, “Introduction to INFO” • Section 11.2, “Unnamed Object INFO Details” • Section 11.4, “Error Responses to INFO” 11.1. Introduction to INFO This section discusses general information about SCSP INFO that applies to both named and unnamed objects.
  • Page 45: Unnamed Object Info Details

    A DX Storage cluster responds to the INFO request with one of several possible response codes, depending on whether the request can be fulfilled or not. 11.2. Unnamed Object INFO Details To INFO an unnamed anchor stream, add the alias=yes query argument to the URI portion of the HTTP request line, as shown in the following example.
  • Page 46: Normal Info Responses For Named Objects

    11.3.2. Normal INFO Responses for Named Objects INFO on a domain: HTTP/1.1 401 Unauthorized WWW-Authenticate: Digest realm="cluster.example.com/_administrators", / nonce="05d0a60ee1f44361f449496505e05116", opaque="fd9c8e14e20fb7c13408c049b7d222af" stale=false, qop="auth", algorithm=MD5 WWW-Authenticate: Basic realm="cluster.example.com/_administrators" Content-Length: 51 Content-Type: text/html Date: Sat, 16 Oct 2010 00:23:24 GMT Server: CAStor Cluster 5.0.0 Allow: HEAD, GET, PUT, POST, COPY, APPEND, DELETE HTTP/1.1 200 OK Castor-Authorization: cluster.example.com/_administrators, POST=...
  • Page 47: Normal Info Responses For Unnamed Objects

    Castor-System-CID: d36dfca69ba7752f4708b1fa9bf9918b Castor-System-Cluster: cluster.example.com Castor-System-Created: Fri, 15 Oct 2010 22:09:19 GMT Castor-System-Name: file.txt Castor-System-Version: 1287180559.436 Content-Length: 26 Content-Type: application/x-www-form-urlencoded Last-Modified: Fri, 15 Oct 2010 22:09:19 GMT Etag: "c744aa90d375aa3e1f228f74b7960e54" Date: Fri, 15 Oct 2010 23:51:44 GMT Server: CAStor Cluster/5.0.0 The response for a named object is very similar to the response for a bucket except that Castor- System-CID is the identifier of the named object's parent;...
  • Page 48: Introduction To Object Security

    Chapter 12. Introduction to Object Security Starting with DX Storage version 5.0, you can optionally provide security for domains, buckets, named objects, and unnamed objects. Because the UUIDs of unnamed objects are difficult to remember or to guess, this chapter focuses on providing security for named objects. The same procedures can be used to provide security to unnamed objects;...
  • Page 49: Security Realm Overview

    • Cluster administrators: The chapter on managing tenants in the DX Object Storage Administration Guide. • Application developers: Chapter 13, Managing Security for Application Developers • Domain managers: Chapter 14, Managing Security for Domain Managers 12.2. Security Realm Overview By default, domains, buckets, and objects are not secured so any user can perform any SCSP operation on them.
  • Page 50: About Authorization Header Syntax

    the user list yet for a bucket, DX Storage returns a 401 (Unauthorized). These errors stop after the realm cache interval has passed. 12.3. About Authorization Header Syntax You set an authorization specification using the Castor-Authorization header, which has the following syntax: Castor-Authorization: authorization-specification[, authorization- specification][...]...
  • Page 51: About Realm Names

    Make sure you use consistent URIs when you are accessing unnamed objects with the Castor-Authorization header. 12.3.1. About Realm Names The following topics discuss the syntax you must use for realm-name in the authorization specification: • Section 12.3.1.1, “About Realms and Buckets” •...
  • Page 52: About Authorization Header Evaluation

    • Castor-Authorization: cluster.example.com/mybucket enables only users in the cluster.example.com/mybucket realm to perform operations on an object. All other users are prevented from performing any operation on the object. • Castor-Authorization: view=cluster.example.com, change=cluster.example.com/mybucket enables users in the cluster.example.com/ mybucket realm to change the object but any user in the cluster.example.com realm to view the object.
  • Page 53: Creating Realms

    5. If the search returns no realms,DX Storage continues to execute the method without further authentication or authorization. If the search finds a security realm: 1. DX Storage examines the request headers (not the object metadata) to determine if the request headers include an HTTP Authorization header.
  • Page 54: Updating The Realm On A Bucket

    Apache wiki bug report page for up-to-date information about it. Dell testing and experience recommends you observe the following guidelines when using htdigest: • On Windows, avoid creating a password file with a reserved extension, such as .com. • If either the password file name or your realm name includes spaces, enclose the name in double quotes.
  • Page 55: Managing Security For Application Developers

    Chapter 13. Managing Security for Application Developers This chapter discusses specific security-related tasks that must be performed by application developers. Before you continue, make sure you review the information discussed in Chapter 12, Introduction to Object Security. For more information about managing security for named objects, see the following topics: •...
  • Page 56: Example: Creating Bucket Owners

    An example of creating a bucket and uploading a realm follows: curl -H "Castor-Authorization: authorization-specification/bucket-name" -H "Castor-Stream-Type: admin" --data-binary @realm --anyauth -u "authorized- user-name:password" --post301 --location-trusted http://node-ip/bucket- name [-D log-file-name] An example of getting the authorization list for a bucket follows: curl --anyauth -u "authorized-user-name: password"...
  • Page 57 1. Use the following commands to create the /mybucket realm: htdigest -c cluster_example_com_mybucket cluster.example.com/mybucket john.rogers htdigest cluster_example_com_mybucket cluster.example.com/mybucket jane.lalane 2. Create mybucket with its own authorization list. Restrict the ability to create objects to user john.rogers and allow any user in the realm to change the bucket. curl -i -X POST -H "Castor-Authorization: post=owner@, change=@owner"...
  • Page 58 u "john.rogers:john" --location-trusted http://172.16.0.35/mybucket/ file2.html --post301 -D write2.log This object requires credentials in the cluster.example.com/mybucket realm to change but can be viewed by any domain user. 7. Verify the object in a web browser. Start a web browser and enter the following URL in its location or address field: http://172.16.0.35/mybucket/file2.html 8.
  • Page 59: Managing Security For Domain Managers

    Chapter 14. Managing Security for Domain Managers This chapter discusses specific security-related tasks that must be performed by domain managers. Before you continue, make sure you review the information discussed in Chapter 12, Introduction to Object Security. See one of the following topics for more information: •...
  • Page 60: Updating The Domain Realm

    • You send your commands to a node whose IP address is 172.16.0.35. Note The examples show how to update user lists using APPEND, which is recommended because APPEND does not change the Castor-Authorization header for the object. If you use PUT instead of APPEND, make sure you first HEAD the domain object to get the Castor-Administrator header and pass the same header in with the PUT command.
  • Page 61: Updating The Domain Manager Realm

    curl --anyauth -u "fred.bell:fred" --location-trusted "http://172.16.0.35?domain=cluster.example.com" -D get-domain-realm2.log The domain realm displays: james.north:cluster.example.com:fef73c5a743a14bf0468a2a5c7177d22 sarah.jones:cluster.example.com:8ac9676459e241875098cd5e207c6a17 5. Use the following commands to update the realm for cluster.example.com, making sure to create at least one duplicate user entry, and to give the duplicate user a different password. htdigest -c cluster_example_com cluster.example.com earl.grey htdigest cluster_example_com cluster.example.com simba.lion htdigest cluster_example_com cluster.example.com james.north...
  • Page 62: Updating A Realm Using Put

    1. Use the following commands to create a new domain realm: htdigest -c cluster_example_com cluster.example.com john.rogers htdigest cluster_example_com cluster.example.com jane.lalane 2. Dell strongly recommends you HEAD the domain to get the Castor-Authorization header for the domain as follows: curl -I --anyauth -u "larry.green:larry" --location-trusted "http://172.16.0.35?domain=cluster.example.com"...
  • Page 63 The Castor-Authorization header in this example is: Castor-Authorization: cluster.example.com/_administrators, POST=cluster.example.com 3. PUT the updated realm on the domain: curl -X PUT --data-binary @cluster_example_com -H "Castor-Authorization: cluster.example.com/_administrators, POST=cluster.example.com" -H "Castor-Stream-Type: admin" --anyauth -u "jeannie.clark:jeannie" -- location-trusted "http://172.16.0.35?domain=cluster.example.com" -- post301 -D domain-realm-put.log 4.
  • Page 64: Using The Content-Md5 Metadata Header

    Chapter 15. Using the Content-MD5 Metadata Header This chapter discusses the Content-MD5 metadata header, which provides an end-to-end message integrity check of the content (excluding metadata) as it is sent to and returned from DX Storage. A proxy or client can check this header to detect accidental modification of the entity-body in transit. Also, a client can provide this header to indicate that DX Storage should compute and check it as it is storing or returning the object data.
  • Page 65: Using Lifepoint Metadata Headers

    Chapter 16. Using Lifepoint Metadata Headers This chapter discusses the optional lifepoint header, which defines a DX Storage storage policy for the associated object. For a list of all metadata headers supported by DX Storage, see the Content Metadata appendix. 16.1.
  • Page 66: Lifepoint/Lifecycle Specification

    If the current date is between the first and second lifepoints, the Health Processor allows the number of replicas to decrease, perhaps leaving only a single replica. However, the fact that this lifepoint specifies the deletable constraint enables a client to delete the content by sending a DELETE SCSP message with the object's name or UUID.
  • Page 67: Replication

    16.4.1. Replication The ReplicationConstraintSpecialist maintains the desired level of redundancy of content objects, as well as making sure they are being stored in the most efficient manner possible. ReplicationConstraintSpecialist understands one constraint name: reps, which can be set to any integer value. ReplicationConstraintSpecialist does this by making sure that, at all times, the actual number of replicas for an object is equal to reps.
  • Page 68 Note Do not use deletable=no and delete in the same lifepoint. Incorrect: Lifepoint: [Wed, 08 Jun 2008 15:59:02 GMT] reps=3, deletable=no, delete Correct: Lifepoint: [Fri, 12 Dec 2007 15:59:02 GMT] reps=3, deletable=no Lifepoint: [] delete Copyright © 2010 Caringo, Inc. Version 5.0 All rights reserved December 2010...
  • Page 69: Using The Allow Metadata Header

    Chapter 17. Using the Allow Metadata Header This chapter discusses the HTTP Allow entity header, which is used to specify which HTTP methods can be executed for a given object. For a list of all metadata headers supported by DX Storage, see the Content Metadata appendix.
  • Page 70 a WWW-Authenticate challenge containing the administrative domain named Castor administrator and other required items. If the request includes both the query argument and authorized administrator credentials, it proceeds and the Allow header is ignored. Administrative overrides cannot be used for methods that are never supported for an object, specifically application of update methods like PUT, COPY or APPEND to immutable objects.
  • Page 71: Using Caching Metadata Headers

    Chapter 18. Using Caching Metadata Headers This chapter discusses caching metadata headers, which enables clients and caching proxies to quickly determine whether or not a resource has been modified since the last time it was read. For a list of all metadata headers supported by DX Storage, see the Content Metadata appendix.
  • Page 72: Expires

    Since request header field is used with a method to make it conditional. If the requested object has not been modified since the time specified in this field, DX Storage will perform the requested operation as if the If-Unmodified-Since header were not present. If the requested object has been modified since the specified time, DX Storage will not perform the requested operation, and instead return a 412 Precondition failed.
  • Page 73: If-None-Match

    Examples of If-Match request headers: If-Match: "508941dc9b52243f64d964b058354b76" If-Match: "508941dc9b52243f64d964b058354b76", "fe3233d3c6881d5e8b654117b829d26c" If-Match: W/"508941dc9b52243f64d964b058354b76" If-Match: * If any of the entity tags match the primary UUID of the object that would have been returned in the response to a similar GET request (without the If-Match header) on that resource, or if "*" is given, then DX Storage will perform the requested method as if the If-Match header field did not exist.
  • Page 74 The value of the header can be either a single quoted string (possibly with some ignored flags outside the quotation marks) or an HTTP-date string (unquoted). Examples of If-Range request headers: If-Range: "508941dc9b52243f64d964b058354b76" If-Range: W/"508941dc9b52243f64d964b058354b76" If-Range: Tue, 07 Jul 2009 16:25:24 GMT If a client has a partial copy of an object in its cache, and wishes to have an up-to-date copy of the entire object in its cache, it could use the Range request-header with a conditional GET (using either or both of If-Unmodified-Since and If-Match.) However, if the condition fails because an anchor...
  • Page 75: Using Custom Metadata Headers

    Chapter 19. Using Custom Metadata Headers This chapter discusses custom metadata headers, which you can use to pass any data your application requires. For a list of all metadata headers supported by DX Storage, see the Content Metadata appendix. Starting with DX Storage version 5.0, you can use custom headers in the following formats: •...
  • Page 76: Basic Content Integrity Assurance

    Chapter 20. Basic Content Integrity Assurance DX Storage provides some basic capabilities for allowing applications to obtain and validate integrity guarantees on the stored data. Integrity here means an independently verifiable guarantee that the data returned for a given name or UUID is exactly the same data that was stored using that name or UUID, perhaps many months or years in the past.
  • Page 77: Application Initiated Hash Upgrading

    that the stored content has always been as it is now, and that it has always been associated with the same UUID. Note Range headers are not compatible with integrity seals. If the seal is incorrect, the connection might be closed prematurely. For more information about integrity seals, see Section 20.1, “Integrity Seals”.
  • Page 78: Content Header Metadata

    Appendix A. Content Header Metadata This appendix lists all supported HTTP headers that can be persisted and returned on a subsequent READ or INFO requests. All content metadata headers are case- insensitive but DX Storage preserves the case as given by the application. For more information about a particular header, click its name.
  • Page 79 For a non-CSN-managed cluster, the cluster name is specified by the value of the cluster parameter in your cluster or node configuration file. Dell recommends you set your cluster name to a fully qualified domain name. For more information, see the chapter on advanced configuration in the DX Object Storage Administration Guide.
  • Page 80: Sample Code And Client Library Behaviors With 100-Continue

    Appendix B. Sample Code and Client Library Behaviors with 100- Continue The best practice for integrators is to use the DX Storage Software Development Kit, which includes fully implementations of the SCSP protocol in multiple languages. Integrators not using the Software Development Kit should be aware of the following inconsistencies with 100-Continue: Python httplib.
  • Page 81: Open Source Software

    Appendix C. Open Source Software Regarding certain third party open source components also shipped with the product, please see the detailed information that appears in the document DX Storage OSS License Notices for 3rd Party Software.pdf. Your vendor will ship open/free/libre (for example, GPL-covered) source code for certain 3rd party items shipped with the product after receiving at vendor HQ a written request specifying the code component(s) that you seek accompanied by prepayment (check on U.S.

This manual is also suitable for:

Dx6004sDx6012sDx object storage

Table of Contents