/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.hadoop.fs.swift.http; import org.apache.hadoop.util.VersionInfo; /** * Constants used in the Swift REST protocol, * and in the properties used to configure the {@link SwiftRestClient}. */ public class SwiftProtocolConstants { /** * Swift-specific header for authentication: {@value} */ public static final String HEADER_AUTH_KEY = "X-Auth-Token"; /** * Default port used by Swift for HTTP */ public static final int SWIFT_HTTP_PORT = 8080; /** * Default port used by Swift Auth for HTTPS */ public static final int SWIFT_HTTPS_PORT = 443; /** HTTP standard {@value} header */ public static final String HEADER_RANGE = "Range"; /** HTTP standard {@value} header */ public static final String HEADER_DESTINATION = "Destination"; /** HTTP standard {@value} header */ public static final String HEADER_LAST_MODIFIED = "Last-Modified"; /** HTTP standard {@value} header */ public static final String HEADER_CONTENT_LENGTH = "Content-Length"; /** HTTP standard {@value} header */ public static final String HEADER_CONTENT_RANGE = "Content-Range"; /** * Patten for range headers */ public static final String SWIFT_RANGE_HEADER_FORMAT_PATTERN = "bytes=%d-%d"; /** * section in the JSON catalog provided after auth listing the swift FS: * {@value} */ public static final String SERVICE_CATALOG_SWIFT = "swift"; /** * section in the JSON catalog provided after auth listing the cloudfiles; * this is an alternate catalog entry name * {@value} */ public static final String SERVICE_CATALOG_CLOUD_FILES = "cloudFiles"; /** * section in the JSON catalog provided after auth listing the object store; * this is an alternate catalog entry name * {@value} */ public static final String SERVICE_CATALOG_OBJECT_STORE = "object-store"; /** * entry in the swift catalog defining the prefix used to talk to objects * {@value} */ public static final String SWIFT_OBJECT_AUTH_ENDPOINT = "/object_endpoint/"; /** * Swift-specific header: object manifest used in the final upload * of a multipart operation: {@value} */ public static final String X_OBJECT_MANIFEST = "X-Object-Manifest"; /** * Swift-specific header -#of objects in a container: {@value} */ public static final String X_CONTAINER_OBJECT_COUNT = "X-Container-Object-Count"; /** * Swift-specific header: no. of bytes used in a container {@value} */ public static final String X_CONTAINER_BYTES_USED = "X-Container-Bytes-Used"; /** * Header to set when requesting the latest version of a file: : {@value} */ public static final String X_NEWEST = "X-Newest"; /** * throttled response sent by some endpoints. */ public static final int SC_THROTTLED_498 = 498; /** * W3C recommended status code for throttled operations */ public static final int SC_TOO_MANY_REQUESTS_429 = 429; public static final String FS_SWIFT = "fs.swift"; /** * Prefix for all instance-specific values in the configuration: {@value} */ public static final String SWIFT_SERVICE_PREFIX = FS_SWIFT + ".service."; /** * timeout for all connections: {@value} */ public static final String SWIFT_CONNECTION_TIMEOUT = FS_SWIFT + ".connect.timeout"; /** * timeout for all connections: {@value} */ public static final String SWIFT_SOCKET_TIMEOUT = FS_SWIFT + ".socket.timeout"; /** * the default socket timeout in millis {@value}. * This controls how long the connection waits for responses from * servers. */ public static final int DEFAULT_SOCKET_TIMEOUT = 60000; /** * connection retry count for all connections: {@value} */ public static final String SWIFT_RETRY_COUNT = FS_SWIFT + ".connect.retry.count"; /** * delay in millis between bulk (delete, rename, copy operations: {@value} */ public static final String SWIFT_THROTTLE_DELAY = FS_SWIFT + ".connect.throttle.delay"; /** * the default throttle delay in millis {@value} */ public static final int DEFAULT_THROTTLE_DELAY = 0; /** * blocksize for all filesystems: {@value} */ public static final String SWIFT_BLOCKSIZE = FS_SWIFT + ".blocksize"; /** * the default blocksize for filesystems in KB: {@value} */ public static final int DEFAULT_SWIFT_BLOCKSIZE = 32 * 1024; /** * partition size for all filesystems in KB: {@value} */ public static final String SWIFT_PARTITION_SIZE = FS_SWIFT + ".partsize"; /** * The default partition size for uploads: {@value} */ public static final int DEFAULT_SWIFT_PARTITION_SIZE = 4608*1024; /** * request size for reads in KB: {@value} */ public static final String SWIFT_REQUEST_SIZE = FS_SWIFT + ".requestsize"; /** * The default reqeuest size for reads: {@value} */ public static final int DEFAULT_SWIFT_REQUEST_SIZE = 64; public static final String HEADER_USER_AGENT="User-Agent"; /** * The user agent sent in requests. */ public static final String SWIFT_USER_AGENT= "Apache Hadoop Swift Client " + VersionInfo.getBuildVersion(); /** * Key for passing the service name as a property -not read from the * configuration : {@value} */ public static final String DOT_SERVICE = ".SERVICE-NAME"; /** * Key for passing the container name as a property -not read from the * configuration : {@value} */ public static final String DOT_CONTAINER = ".CONTAINER-NAME"; public static final String DOT_AUTH_URL = ".auth.url"; public static final String DOT_TENANT = ".tenant"; public static final String DOT_USERNAME = ".username"; public static final String DOT_PASSWORD = ".password"; public static final String DOT_HTTP_PORT = ".http.port"; public static final String DOT_HTTPS_PORT = ".https.port"; public static final String DOT_REGION = ".region"; public static final String DOT_PROXY_HOST = ".proxy.host"; public static final String DOT_PROXY_PORT = ".proxy.port"; public static final String DOT_LOCATION_AWARE = ".location-aware"; public static final String DOT_APIKEY = ".apikey"; public static final String DOT_USE_APIKEY = ".useApikey"; /** * flag to say use public URL */ public static final String DOT_PUBLIC = ".public"; public static final String SWIFT_SERVICE_PROPERTY = FS_SWIFT + DOT_SERVICE; public static final String SWIFT_CONTAINER_PROPERTY = FS_SWIFT + DOT_CONTAINER; public static final String SWIFT_AUTH_PROPERTY = FS_SWIFT + DOT_AUTH_URL; public static final String SWIFT_TENANT_PROPERTY = FS_SWIFT + DOT_TENANT; public static final String SWIFT_USERNAME_PROPERTY = FS_SWIFT + DOT_USERNAME; public static final String SWIFT_PASSWORD_PROPERTY = FS_SWIFT + DOT_PASSWORD; public static final String SWIFT_APIKEY_PROPERTY = FS_SWIFT + DOT_APIKEY; public static final String SWIFT_HTTP_PORT_PROPERTY = FS_SWIFT + DOT_HTTP_PORT; public static final String SWIFT_HTTPS_PORT_PROPERTY = FS_SWIFT + DOT_HTTPS_PORT; public static final String SWIFT_REGION_PROPERTY = FS_SWIFT + DOT_REGION; public static final String SWIFT_PUBLIC_PROPERTY = FS_SWIFT + DOT_PUBLIC; public static final String SWIFT_USE_API_KEY_PROPERTY = FS_SWIFT + DOT_USE_APIKEY; public static final String SWIFT_LOCATION_AWARE_PROPERTY = FS_SWIFT + DOT_LOCATION_AWARE; public static final String SWIFT_PROXY_HOST_PROPERTY = FS_SWIFT + DOT_PROXY_HOST; public static final String SWIFT_PROXY_PORT_PROPERTY = FS_SWIFT + DOT_PROXY_PORT; public static final String HTTP_ROUTE_DEFAULT_PROXY = "http.route.default-proxy"; /** * Topology to return when a block location is requested */ public static final String TOPOLOGY_PATH = "/swift/unknown"; /** * Block location to return when a block location is requested */ public static final String BLOCK_LOCATION = "/default-rack/swift"; /** * Default number of attempts to retry a connect request: {@value} */ static final int DEFAULT_RETRY_COUNT = 3; /** * Default timeout in milliseconds for connection requests: {@value} */ static final int DEFAULT_CONNECT_TIMEOUT = 15000; }