PowerScale OneFS API Reference 9.2.0.0
PowerScale OneFS API Reference 9.2.0.0
API Reference
9.2.0.0
November 2021
Rev. 02
Notes, cautions, and warnings
NOTE: A NOTE indicates important information that helps you make better use of your product.
CAUTION: A CAUTION indicates either potential damage to hardware or loss of data and tells you how to avoid
the problem.
WARNING: A WARNING indicates a potential for property damage, personal injury, or death.
© 2015 -2021 Dell Inc. or its subsidiaries. All rights reserved. Dell, EMC, and other trademarks are trademarks of Dell Inc. or its subsidiaries.
Other trademarks may be trademarks of their respective owners.
Contents
Contents 3
SyncIQ backup and recovery................................................................................................................................... 113
SmartLock................................................................................................................................................................... 128
Deduplication.............................................................................................................................................................. 130
General cluster configuration..................................................................................................................................132
Licensing...................................................................................................................................................................... 149
Security hardening.....................................................................................................................................................150
External key management for SEDs using KMIP............................................................................................... 152
Upgrading OneFS.......................................................................................................................................................157
Cluster date and time............................................................................................................................................... 162
Managing SNMP settings........................................................................................................................................ 163
Hardware..................................................................................................................................................................... 163
File pools...................................................................................................................................................................... 165
Storage pools.............................................................................................................................................................. 168
CloudPools................................................................................................................................................................... 174
SmartQuotas............................................................................................................................................................... 178
Common Anti-Virus Agent (CAVA)....................................................................................................................... 183
ICAP anti-virus............................................................................................................................................................184
Performance................................................................................................................................................................187
4 Contents
1
Introduction to this guide
The OneFS API reference guide is an introduction to the OneFS API, and documents the system configuration API resource
handlers and the file system API.
Topics:
• About this guide
• About the PowerScale SDK
• Scale-out NAS overview
• Getting help
The PowerScale software development kit (PowerScale SDK) is a collection of documentation, resources, tools, and code
samples that allow the creation of applications for the PowerScale family of products.
Getting help
This topic contains resources for getting answers to questions about PowerScale products.
Term Definition
Access point Root path of the URL to the file system. You can define an
access point for any directory in the file system.
Collection Group of objects of a similar type. For example, all the user-
defined quotas in the system make up a collection of quotas.
Data object An object that contains content data, such as a file on the
system
Namespace The file system structure on the cluster
Object Containers or data objects
This term is also known as system configuration data that a
user creates, or a global setting on the system.
For example, a user-created object can be a file system
snapshot, quota, share, export, logical unit, or synchronization
policy.
Component Definition
my_cluster The IPv4 or IPv6 address or hostname for the cluster.
obj_port The number of the port. The default setting is 8080.
resource_path The file path to the directory that you want to access.
api_version The version of the OneFS API. It is an optional component, as
OneFS automatically uses the latest API.
collection_pattern The namespace, collection name, and object ID of the
resource that you want to configure.
In both types of API requests, you can append query parameters to the end of resource URIs to refine your request. For
example, you can revise a GET request to return only a set number of entries. In the following example, a maximum of 1,000
SMB shares are returned:
GET https://192.168.1.100:8080/platform/12/protocols/smb/shares?limit="1000"
https://<my_cluster>:<obj_port>/<api-version>/<collection_pattern>
For example, you can send a GET request to the following URI to retrieve all SMB shares on a cluster. Where protocols is the
namespace, SMB is the collection name, and shares is the object ID:
GET https://192.168.1.100:8080/platform/12/protocols/smb/shares
https://<my_cluster>:<obj_port>/namespace/<access_point>/<resource_path>
For example, you can send a GET request to the following URI to view files that are stored in the folder at /ifs/users/
folder1:
GET https://192.168.0.25:8080/namespace/ifs/users/folder1
PUT https://10.7.146.164:8080/namespace/user1store/dir6
If you specify the header x-isi-ifs-mode-mask value as preserve, then it copies the file/dir mode, ownership, ACL,
timestamps information along with file data.
Also, in file system access API requests, you can indicate a special operation in your request by appending a predefined keyword
to the end of the resource URI. These keywords must be placed first in the argument list and must not contain any value. If
these keywords are placed in any other position in the argument list, the keywords are ignored. Predefined keywords are acl,
metadata, worm, and query. For example:
GET https://192.168.0.25:8080/namespace/ifs/users/folder1?acl
HTTP methods
You can apply certain HTTP methods to resource URIs through the OneFS API to modify file system settings or to access file
system content.
The following conditions apply to the HTTP methods available for the OneFS API:
● The GET method returns an object or collection.
● The HEAD method returns response header metadata without the response body content.
● The DELETE method removes an object from a collection.
● The POST method creates objects.
● The POST method returns a document indicating the success of the request and the location of the created resource.
● The PUT method enables partial modification of a resource.
● The PUT and POST methods do not return full resource entity bodies upon success; these methods return success or failure
codes.
Privileges
Privileges permit users to complete tasks on a cluster.
Privileges are associated with an area of cluster administration such as Job Engine, SMB, or statistics.
Privileges have one of two forms:
Privileges are granted to the user on login to a cluster through the OneFS API, the web administration interface, SSH, or a
console session. A token is generated for the user, which includes a list of all privileges that are granted to the user. Each
URI, web-administration interface page, and command requires a specific privilege to view or modify the information available
through any of these interfaces.
Sometimes, privileges cannot be granted or there are privilege limitations.
● Privileges are not granted to users that do not connect to the System Zone during login or to users that connect through
the deprecated Telnet service, even if they are members of a role.
● Privileges do not provide administrative access to configuration paths outside of the OneFS API. For example, the
ISI_PRIV_SMB privilege does not grant a user the right to configure SMB shares using the Microsoft Management Console
(MMC).
● Privileges do not provide administrative access to all log files. Most log files require root access.
The privilege ISI_PRIV_RESTRICTED_AUTH provides limited administrative privileges. Administrators with the
ISI_PRIV_RESTRICTED_AUTH privilege can modify only those users and groups that have the same or less privilege. For
example, a help desk administrator can be granted ISI_PRIV_RESTRICTED_AUTH privileges to enable performing basic user and
group management operations without having the full abilities of the ISI_PRIV_AUTH privilege.
Session cookies
Establish a session by creating a session cookie through the session resource.
You can create a session cookie by sending credentials to a session service resource, which responds with a Set-Cookie header.
The Set-Cookie header contains an authentication token that can then be sent with subsequent requests to provide immediate
authentication.
Object properties
Steps
1. Send a POST request to /session/1/session by specifying the JSON content-type in the request header. Also specify your
username, password, and the service that you want to access in the request body. In the services property, specify
platform for system configuration or namespace for file system access.
Content-type: application/json
Body:
{
"username": "<string>",
"password": "<string>",
"services": ["platform" | “namespace”]
}
If the server validates your username and password, a Set-Cookie header is returned.
2. Obtain the isisessid value from the Set-Cookie header.
201 Created
Content-Length:104
Content-Type:application/json
Date:Fri, 22 Feb 2013 19:08:36 GMT
Set-Cookie:isisessid=12345678-abcd-1234-abcd-1234567890ab; path=/;
HttpOnly; Secure
Response Body:
{
"services":[
"platform",
"namespace"
],
"timeout_absolute":14400,
"timeout_inactive":900,
"username":"user123"
}
This value authenticates the session when you send a request through a session cookie.
Results
A session is created on the node on which the POST request was performed.
Prerequisites
Create a session and obtain an isisessid value from the Set-Cookie header.
Steps
● Send a GET request to any API resource by typing the isisessid value in the Cookie request header.
If the server validates your username and password, access is granted.
GET 10.10.111.120:8080/platform/1/quota/quotas
Cookie: isisessid=12345678-abcd-1234-abcd-1234567890ab
Response example
200 OK
Content-Type:application/json
{
//JSON content
}
Request syntax
GET /session/1/session
Cookie: isisessid=12345678-abcd-1234-abcd-1234567890ab
Response body
If authorization is successful:
"username": <string>
"services": [<string>, ...]
"timeout_absolute": <integer>,
"timeout_inactive": <integer>
{
"services":[
"platform",
"namespace"
],
"timeout_absolute":14396,
"timeout_inactive":900,
"username":"user123"
}
If authorization fails:
401 Unauthorized
Content-Type: application/json
{
"errors":[
{
"message":"authorization required"
}
]
}
Request syntax
DELETE /session/1/session
Cookie: isisessid=12345678-abcd-1234-abcd-1234567890ab
Response body
If authorization is successful:
204 No Content
Set-Cookie:isisessid=deleted; path=/; Expires=Thu, 01-Jan-1970 00:00:01 GMT; HttpOnly;
Secure
Content-Length: 0
If authorization fails:
401 Unauthorized
Content-Type: application/json
{
"errors":[
{
"message":"authorization required"
}
]
}
Steps
1. Send an authentication request with credentials to the OneFS session API (/session/11/session).
The server validates supplied credentials and performs global API authorization checks. If client identity is confirmed and
authorization checks pass, the server responds with two tokens: a session token (isisessid) and an anti-CSRF token
(isicsrf). Save both tokens and submit them on subsequent API requests to pass authentication checks. If authentication
fails, then an appropriate HTTP error code is returned.
Response:
{"services":
["platform"],"timeout_absolute":14400,"timeout_inactive":900,"username":"testuser"}
2. For authenticated requests to the OneFS platform API, the client sends their OneFS session cookie. For successful CSRF
request validation checks, the client also sends the CSRF token cookie that is obtained at initial authentication in a special
header (X-CSRF-Token). Also send a populated Referrer header matching the connecting host.
Response:
HTTP/1.1 200 Ok
Date: Thu, 25 Jan 2020 22:53:03 GMT
Server: Apache/2.2.34 (FreeBSD) mod_ssl/2.2.34 OpenSSL/1.0.2k-fips
mod_fastcgi/2.4.6
Allow: GET, HEAD
Transfer-Encoding: chunked
Content-Type: application/json
{
"ntoken": {
"additional_id": [
{
"id": "SID:S-1-5-11"
}
],
"gid": {
"id": "GID:1800"
},
"group_sid": {
"id": "SID:S-1-5-21-902947705-743178377-3070079125-800"
},
"ifs_restricted": false,
"local_address": "00.0.000.000",
"on_disk_group_id": {
"id": "GID:1800"
},
"on_disk_user_id": {
"id": "UID:2000"
},
"privilege": [
{
"id": "ISI_PRIV_LOGIN_PAPI",
"name": "Platform API",
"read_only": true
}
],
"protocol": 10,
"remote_address": "00.0.000.000",
"uid": {
"id": "UID:2000"
},
"user_sid": {
"id": "SID:S-1-5-21-902947705-743178377-3070079125-1000"
},
"zid": 1,
"zone_id": "System"
}
}
Collection patterns
You can configure the file system on your cluster through the OneFS API. You can do so by applying HTTP methods to resource
URIs according to a set of collection patterns.
NOTE:
GET https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<object-id>
Response:
Content-Type: application/json
{
"<object>": {
"<property>": <value>,
...
}
}
PUT https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<object-id>
Content-Type: application/json
Response:
GET https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<collection-name>
Response:
Content-Type: application/json
{
"<collection>": [
"<property>": <value>
...
]
}
GET https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<collection-name>/
<object-id>
Response:
Content-Type: application/json
{
"<collection>": [
"<property>": <value>
...
]
}
POST https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<collection-
name>
Content-Type: application/json
{
"<property>": <value>,
...
}
Location: https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<collection-
name>/<new-object-id>
Content-Type: application/json
PUT https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<collection-name>/
<object-id>
Content-Type: application/json
{
"parameter_name": <value>
...
}
Response:
DELETE https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<collection-
name>/<object-id>
Response:
Filter a collection
You can apply a filter to a collection to retrieve user objects that match some common criteria.
Request pattern:
GET https://<cluster-ip-or-host-name>:<port>/<api-version>/<namespace>/<collection-name>?
<parameter_name>=<match-pattern>&...
Response:
Content-Type: application/json
{
"count": <integer>,
"<collection-name>": [
{
"<parameter-name>":
<matched-value>,
...
},
...
]
}
/platform/12/<path-to-resource>
Where resources have older versions, the older versions can be accessed at:
/platform/<version>/<path-to-resource>
The functionality of each resource is preserved, even with subsequent API versions. For example, if /resource/x is
introduced in API version 1, updated in API version 3, and then updated again in API version 8, the following URI-to-resource
mapping applies:
You are guaranteed that when you write code to a specific resource version, that behavior continues to function even if
subsequent API versions are released.
These are the OneFS API versions and their corresponding releases:
In future OneFS releases, when the configuration API version is incremented, the /platform/latest URI returns the latest
version number. You are guaranteed to access to the latest version of any resource by using the applicable version number in
the resource URI.
Older versions of certain resources might be deprecated in the future. Large changes in the underlying OneFS system and
configuration can cause certain fields or sets of fields to no longer be applicable. PowerScale only deprecates resources when
necessary. If an old version of a resource can function, it is accessible at its original API version number URI.
The following table lists deprecated APIs, by OneFS version, that are removed from OneFS when upgrading to a newer version.
8.1.1.X 6 N/A
8.1.2.X
8.1.3.X
8.1.0.X 5 N/A
8.0.1.X 4 N/A
8.0.0.X 3 Upgrade supported from 8.0.0.X.
The following table lists deleted APIs that have been replaced with newer versions in later OneFS releases.
8.1.1.X 6 N/A
8.1.2.X
8.1.3.X
8.1.0.X 5 N/A
8.0.1.X 4 N/A
The following table shows deleted APIs that were replaced in a later API version.
/3/cloud/accounts /3.1/cloud/accounts
/4/cloud/accounts /4.1/cloud/accounts
7/cloud/accounts
/4/network/interfaces /7/network/interfaces
/3/network/interfaces
/3/network/groupnets/<GROUPNET>/subnets/<SUBNET>/ /7/network/groupnets/<GROUPNET>/subnets/
pools/<POOL>/interfaces <SUBNET>/pools/<POOL>/interfaces
/4/network/groupnets/<GROUPNET>/subnets/<SUBNET>/
pools/<POOL>/interfaces
/3/cloud/accounts/<ACCOUNT> /3.1/cloud/accounts/<ACCOUNT>
/4/cloud/accounts/<ACCOUNT> /4.1/cloud/accounts/<ACCOUNT>
/7/cloud/accounts/<ACCOUNT>
/3/cloud/pools /3.1/cloud/pools
/7/cloud/pools
/3/cloud/pools/<POOL> /3.1/cloud/pools/<POOL>
/7/cloud/pools/<POOL>
/4/performance/settings /7/performance/settings
https://<cluster-ip>:<port>/platform/?describe&list
The example above retrieves a separate listing for every update of each resource. For example, the resource for /cluster/
config was introduced in API version 1 and updated in version 3, so /platform/?describe&list lists both:
"/1/cluster/config"
"/3/cluster/config"
NOTE: /2/cluster/config is also a valid URI, and forwards the same resource as /1/cluster/config, because
there were no updates to the resource in API version 2.
https://<cluster-ip>:<port>/platform/<version>/?describe&list
For example, the following retrieves all URIs available for API version 14:
https://<cluster-ip>:<port>/platform/14/?describe&list
{
"directory" :
[
"/14/api/sessions/invalidations
/14/api/sessions/invalidations/<USER>
/14/api/sessions/rekey
/14/api/settings/sessions",
.
.
.
"/14/upgrade/cluster/patch/patches",
"/14/upgrade/cluster/patch/patches/<ID>",
]
}
List all URIs updated and newly created in a specific API version
You can list all the URIs that changed in a specific version of the system configuration API.
To retrieve a list of changed URIs that were updated for a specific API version:
https://<cluster-ip>:<port>/platform/changed/<version>
The previous example also returns a list of any removed URIs that were originally introduced or updated at the specified version.
But that now have been permanently deprecated and can no longer be accessed.
NOTE: Usually there is at least one new resource that provides the current functionality to replace any deprecated
resources.
For example, to list all URIs that changed in API version 12:
https://<cluster-ip>:<port>/platform/changed/12
{
"changed" :
[
"/12/auth/log-level",
"/12/cluster/nodes",
"/12/cluster/nodes/<LNN>",
"/12/cluster/nodes/<LNN>/hardware",
"/12/cluster/nodes/<LNN>/state",
"/12/cluster/nodes/<LNN>/state/servicelight",
"/12/cluster/nodes/<LNN>/status",
"/12/cluster/nodes/<LNN>/status/nvram",
"/12/cluster/nodes/<LNN>/status/powersupplies",
"/12/config/exports",
"/12/config/exports/<ID>",
"/12/config/imports",
"/12/config/imports/<ID>",
"/12/event/channels",
"/12/event/channels/<ID>",
"/12/event/eventgroup-definitions",
https://<cluster-ip>:<port>/platform/updated/<path-to-resource>
For example, to retrieve information about when the API resource for OneFS audit settings was introduced or updated:
https://<cluster-ip>:<port>/platform/updated/audit/settings
{
"removed" : [],
"updated" : [ "/1/audit/settings", "/3/audit/settings", "/7/audit/settings" ]
}
https://<cluster-ip>:<port>/platform/versions/<path-to-resource>
For example, to list the versions of the resource for NFS NLM sessions:
https://<cluster-ip>:<port>/platform/versions/protocols/nfs/nlm/sessions
{
"versions" :
[
"/1/protocols/nfs/nlm/sessions",
"/2/protocols/nfs/nlm/sessions",
"/3/protocols/nfs/nlm/sessions",
"/3.0/protocols/nfs/nlm/sessions",
"/3.1/protocols/nfs/nlm/sessions",
"/3.2/protocols/nfs/nlm/sessions",
"/4/protocols/nfs/nlm/sessions",
"/4.0/protocols/nfs/nlm/sessions",
"/4.1/protocols/nfs/nlm/sessions",
"/5/protocols/nfs/nlm/sessions",
"/5.0/protocols/nfs/nlm/sessions",
"/5.1/protocols/nfs/nlm/sessions",
"/6/protocols/nfs/nlm/sessions",
"/7/protocols/nfs/nlm/sessions",
"/8/protocols/nfs/nlm/sessions",
"/9/protocols/nfs/nlm/sessions",
"/10/protocols/nfs/nlm/sessions",
"/11/protocols/nfs/nlm/sessions"
]
}
https://<cluster-ip>:<port>/platform/<version>/<path-to-resource>?describe
For example, the following retrieves the API version 12 JSON schema documentation for upgrading nodes on a OneFS cluster:
https://<cluster-ip>:<port>/platform/12/upgrade/cluster/nodes?describe
Methods: GET
********************************************************************************
Query arguments:
by_domain=<boolean> If true, tag nodes that are assigned to like-failure domains
You can retrieve a list of all the resources for a feature by appending the describe, list, and all query parameters. The
content is returned as mime-type text or plain. For example, to return a list of all resource URIs for snapshots, type the following
URL:
https://<cluster-ip-or-host-name>:<port>/platform/12/snapshot/snapshots?describe&list&all
You can retrieve a list of all the resource URIs on your cluster by typing the following URL:
https://<cluster-ip-or-host-name>:<port>/platform?describe&list
https://<cluster-ip-or-host-name>:<port>/platform/12/quota/quotas?describe&json
If you include any values for either the describe or json parameters, the values are ignored.
Authentication classes
Authentication classes define values for the object properties in authentication resources.
<persona-id>
The <persona-id> class must be set in the following format: user:<string>, group:<string>, SID:<string>,
UID:<string>, GID:<string>, such as: GID:2003 or user:johndoe.
<persona>
The <persona> class must be set with either the persona-id or the type and name parameters, as follows:
<user>
The <user> class contains the following properties:
<group-id>
The <group-id> class must be set in the following format: group:<string>, SID:<string>, GID:<string>, such as:
GID:2003 or group:admins.
<group>
The <group> class contains the following properties:
<privilege>
The <privilege> class must be set as follows:
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/id?
information about query parameters and object properties. describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. access/<user-id>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. users/<user-id>/change_password?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. users?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. users/<user-id>/member_of?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. groups?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. groups/<group-id>/members?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. netgroups/<netgroup>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. settings/mapping/defaults?describe
Manually set or modify the mapping between two personae. POST <cluster-ip:port>/platform/12/auth/
mapping/identities
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. mapping/users/rules?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. mapping/users/lookup?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/summary?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/krb5?describe
GET <cluster-ip:port>/platform/12/auth/
providers/krb5/<PROVIDER-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. settings/krb5/default?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. settings/krb5/realms?describe
GET <cluster-ip:port>/platform/12/auth/
settings/krb5/realms/<realm name or ID>?
describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. settings/krb5/domains?describe
GET <cluster-ip:port>/platform/12/auth/
settings/krb5/domains/<domain name or ID>?
describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/ldap-
information about query parameters and object properties. templates?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/ads/<ID>/domains?describe
GET <cluster-ip:port>/
platform/12/auth/providers/ads/<ID>/domains/
<ADS-DOMAIN>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/ads?describe
GET <cluster-ip:port>/platform/12/auth/
providers/ads/<PROVIDER-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/
information about query parameters and object properties. platform/12/auth/providers/ads/<domain-id>/
controllers?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/ads/<OBJECT>/search?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/duo?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/file?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/ldap?describe
GET <cluster-ip:port>/platform/12/auth/
providers/ldap/<PROVIDER-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/local?describe
GET <cluster-ip:port>/platform/12/auth/
providers/local/<PROVIDER-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. providers/nis?describe
GET <cluster-ip:port>/platform/12/auth/
providers/nis/<PROVIDER-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. settings/acls?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. roles?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. roles/<ROLE-ID>/members?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. roles/<ID>/privileges?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. settings/global?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. shells?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. wellknowns?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. certificate/authority?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. certificate/server?describe
GET <cluster-ip:port>/platform/12/
certificate/server/<CERTIFICATE-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. certificate/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/auth/
information about query parameters and object properties. error/<error-id>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/id-
information about query parameters and object properties. resolution/paths?describe
GET <cluster-ip:port>/platform/12/id-
resolution/paths/<LIN>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/id-
information about query parameters and object properties. resolution/domains/<DOMAIN-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/id-
information about query parameters and object properties. resolution/lins/<LIN-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/id-
information about query parameters and object properties. resolution/zones/<ZONE-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/id-
information about query parameters and object properties. resolution/zones/<ZONE-ID>/groups?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/id-
information about query parameters and object properties. resolution/zones/<ZONE-ID>/users?describe
Request example
Specify both the new and old password.
PUT /platform/12/auth/users/USER:johndoe/change_password
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"new_password":"ABC12345",
"old_password":"12345ABC"}
Response example
204 No Content
Content-type: text/plain
Request example
POST /platform/12/auth/group
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
201 Created
Content-type: application/json
{
"id" : "SID:S-1-5-21-4224731515-2571109568-2823010237-1003"
}
Request example
Include the force parameter when modifying an authentication group.
PUT /platform/12/auth/groups/GROUP:mygroup?force=true
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"gid": 2004}
Response example
204 No Content
Content-type: text/plain
Request example
POST /platform/12/auth/groups/GROUP:mygroup/members
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"id": "USER:user01"}
Response example
201 Created
Content-type: application/json
{"id" : "SID:S-1-5-21-4224731515-2571109568-2823010237-1003"}
Request example
Create the user "user123" through the following request:
POST /platform/12/auth/users
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
201 Created
Content-type: application/json
{
"id" : "SID:S-1-5-21-4224731515-2571109568-2823010237-1005"
}
Request example
Then, add "user123" to a group called "administrators" through the following request:
POST /platform/12/auth/groups/administrators/members
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
201 Created
Content-type: application/json
{
"id" : "SID:S-7-6-25-4784731515-2575609568-2323010237-2005"
}
Modify a user
Modify the properties for a user.
Request example
In this example, an email address is added for the user.
PUT /platform/12/auth/users/USER:user123
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"email": "[email protected]"}
Response example
204 No Content
Content-type: application/json
Request example
POST /platform/12/auth/providers/ads
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"server.company.com",
"user":"Administrator",
"password":"abc123"}
Response example
201 Created
Content-type: application/json
{
"id" : "SERVER.COMPANY.COM"
}
Request example
PUT /platform/12/auth/providers/ads/server1.company.com
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"home_directory_template":"/ifs/home/ads"}
Response example
204 No Content
Content-type: text/plain
Request example
POST /platform/12/auth/providers/ldap
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"ldaptest",
"server_uris":["ldap://ldaptest.company.com"],
"base_dn":"dc=company,dc=com"}
Response example
201 Created
Content-type: application/json
{
"id" : "ldaptest"
}
Request example
PUT /platform/12/auth/providers/ldap/ldaptest
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"ldaptest2",
"server_uris":["ldap://ldaptest.company.com"],
"base_dn":"dc=company,dc=com"}
Response example
204 No Content
Content-type: text/plain
Request example
PUT /platform/12/auth/providers/local/zone1
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"home_directory_template" : "/ifs/home/%Z/%U"}
Response example
204 No Content
Content-type: text/plain
Request example
POST /platform/12/auth/roles
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"dba"}
Response example
201 Created
Content-type: application/json
{
"id" : "dba"
}
Request example
PUT /platform/12/auth/roles/dba
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"dba2"}
Response example
204 No Content
Content-type: text/plain
Request example
PUT /platform/12/auth/settings/global
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"send_ntlmv2":"true"}
Response example
204 No Content
Content-type: text/plain
Request example
POST /platform/12/auth/settings/krb5/realms
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"realm":"test_realm"}
Response example
201 Created
Content-type: application/json
{"id" : "2024839292}
Request example
POST /platform/12/auth/settings/krb5/domains
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"domain":"test_domain",
"realm":"test_realm"
}
Response example
201 Created
Content-type: application/json
{
"id" : "29274939282"
}
Request example
PUT /platform/12/auth/settings/krb5/domains/test_domain
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"domain":"test_domain2",
"realm":"test_realm4"
}
Response example
204 No Content
Content-type: application/json
Request example
PUT /platform/12/auth/settings/krb5/defaults
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"dns_lookup_realm":"true"
"dns_lookup_kdc":"true"
}
204 No Content
Content-type: application/json
Auditing overview
You can audit system configuration changes and protocol activity on an PowerScale cluster. All audit data is stored and
protected in the cluster file system and organized by audit topics.
Auditing can detect many potential sources of data loss, including fraudulent activities, inappropriate entitlements, and
unauthorized access attempts. Customers in industries such as financial services, health care, life sciences, and media and
entertainment, as well as in governmental agencies, must meet stringent regulatory requirements developed to protect against
these sources of data loss.
System configuration auditing tracks and records all configuration events that are handled by the OneFS HTTP API. The process
involves auditing the command-line interface (CLI), web administration interface, and OneFS APIs. When you enable system
configuration auditing, no additional configuration is required. System configuration auditing events are stored in the config
audit topic directories.
Protocol auditing tracks and stores activity performed through SMB, NFS, and HDFS protocol connections. You can enable
and configure protocol auditing for one or more access zones in a cluster. If you enable protocol auditing for an access zone,
file-access events through the SMB, NFS, and HDFS protocols are recorded in the protocol audit topic directories. You can
specify which events to log in each access zone. For example, you might want to audit the default set of protocol events in
the System access zone but audit only successful attempts to delete files in a different access zone.
The audit events are logged on the individual nodes where the SMB, NFS, or HDFS client initiated the activity. The events are
then stored in a binary file under /ifs/.ifsvar/audit/logs. The logs automatically roll over to a new file after the size
reaches 1 GB. The logs are then compressed to reduce space.
The protocol audit log file is consumable by auditing applications that support the Common Event Enabler (CEE).
Audit resources
You can retrieve and modify OneFS audit topics and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/audit/
information about query parameters and object properties. settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/audit/
information about query parameters and object properties. logs?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/audit/
information about query parameters and object properties. topics?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/audit/
information about query parameters and object properties. progress?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/audit/
information about query parameters and object properties. progress/global?describe
Request example
In the following example, protocol auditing is enabled for the "myZone" and "System" zones.
PUT /platform/12/audit/settings
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'audited_zones': ['myZone', 'System'],
'protocol_auditing_enabled': True
}
Response example
In the following example, the request was successful, and protocol auditing is enabled on the system for the specified zones. No
message body is returned for this request.
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
Request example
PUT /platform/12/audit/settings
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'config_auditing_enabled': True
}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
Request example
PUT /12/audit/topics/protocol
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/zones?
information about query parameters and object properties. describe
GET <cluster-ip:port>/platform/12/zones/
<ZONE-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/zones-
information about query parameters and object properties. summary?describe
GET <cluster-ip:port>/platform/12/zones-
summary/<ZONE>?describe
Request example
POST /platform/12/zones
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"MyZone", "path":"/ifs/data/myzone"}
Response example
201 Created
Content-type: application/json
{"id":"MyZone"}
Request example
In the following example, the name for ZoneA is changed to ZoneB.
PUT /platform/12/zones/ZoneA
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"ZoneB"}
Response example
204 No Content
Content-type: 'text/plain
NFS security
OneFS provides an NFS server so you can share files on your cluster with NFS clients that adhere to the RFC1813 (NFSv3) and
RFC3530 (NFSv4) specifications.
NFS is disabled by default. To enable NFS, use the following command:
In OneFS, the NFS server is fully optimized as a multithreaded service running in user space instead of the kernel. This
architecture load balances the NFS service across all nodes of the cluster, providing the stability and scalability necessary to
manage up to thousands of connections across multiple NFS clients.
NFS mounts run and refresh quickly, and the server constantly monitors fluctuating demands on NFS services and makes
adjustments across all nodes to ensure continuous, reliable performance. Using an integrated process scheduler, OneFS helps
ensure fair allocation of node resources so that no client can seize more than its fair share of NFS services.
The NFS server also supports access zones that are defined in OneFS, so that clients can access only the exports appropriate
to their zone. For example, if NFS exports are specified for Zone 2, only clients that are assigned to Zone 2 can access these
exports.
To simplify client connections, especially for exports with large path names, the NFS server also supports aliases, which are
shortcuts to mount points that clients can specify directly.
For secure NFS file sharing, OneFS supports NIS and LDAP authentication providers.
NFS classes
NFS classes define values for the object properties in NFS resources.
<user-mapping>
The <user-mapping> class must be set as follows:
<persona>
The <persona> class must be set with either the <persona-id> or the <type> and <name> parameters, as follows:
name String Specifies the persona name, which must be combined with
a type
<persona-id>
The <persona-id> class must be set in the following format: user:<string>, group:<string>, SID:<string>,
UID:<string>, GID:<string>, such as: GID:2003 or user:johndoe.
NFS resources
You can retrieve, create, modify, or delete NFS export configurations and settings.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/nfs/
which has information about query parameters and exports-summary?describe
object properties.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/nfs/check?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/nfs/aliases?describe
GET <cluster-ip:port>/platform/12/
protocols/nfs/aliases/<AID>?describe
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/nfs/nlm/
which has information about query parameters and waiters?describe
object properties.
Delete all lock states for a specific NFS NLM DELETE <cluster-ip:port>/platform/12/protocols/nfs/nlm/
session. sessions/<ID>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/nfs/log-level?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/nfs/netgroup?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/nfs/netgroup/check?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/nfs/netgroup/flush?describe
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/nfs/
which has information about query parameters settings/export?describe
and object properties.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/nfs/
which has information about query parameters and check?describe
object properties.
View the detailed JSON schema for this resource, which GET <cluster-ip:port>/platform/12/
has information about query parameters and object protocols/nfs/reload?describe
properties.
Request example
POST /platform/12/protocols/nfs/aliases
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"name":"nfs_alias_01",
"path":"/ifs/nfs/aliases"
}
Response example
201 Created
Content-type: application/json
{
"id":"204"
}
Request example
PUT /platform/12/protocols/nfs/aliases/204
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"nfs_alias_02"}
Response example
204 No Content
Content-type: text/plain
Request example
POST /platform/12/protocols/nfs/exports
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"paths":[
"/ifs/nfs/exports/test",
"/ifs/nfs/exports/test2"
]
}
201 Created
Content-type: application/json
{
"id":24
}
Request example
PUT /platform/12/protocols/nfs/exports/24
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"write_transfer_max_size":1024,
"write_transfer_multiple":512
}
Response example
204 No Content
Content-type: text/plain
Request example
PUT /platform/12/protocols/nfs/settings/export
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"block_size":512,
"can_set_time":true,
"case_insensitive":false
}
Response example
204 No Content
Content-type: text/plain
Request example
PUT /platform/12/protocols/nfs/settings/global
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
204 No Content
Content-type: text/plain
Request example
PUT /platform/12/protocols/nfs/settings/zone
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"nfsv4_allow_numeric_ids":true,
"nfsv4_domain":"test_domain"
}
Response example
204 No Content
Content-type: text/plain
SMB
OneFS includes a configurable SMB service to create and manage SMB shares. SMB shares provide Windows clients network
access to file system resources on the cluster. You can grant permissions to users and groups to carry out operations such as
reading, writing, and setting access permissions on SMB shares.
SMB shares act as checkpoints, and users must have access to a share in order to access objects in a file system on a share.
If the user security mode is enabled, users who connect to a share from an SMB client must provide a valid username with
proper credentials. If a user has access that is granted to a file system, but not to the share on which it resides, that user
cannot access the file system regardless of privileges. For example, assume a share that is named ABCDocs contains a file that
is named file1.txt in a path such as: /ifs/data/ABCDocs/file1.txt. If a user attempting to access file1.txt does
not have share privileges on ABCDocs, that user cannot access the file even if originally granted read and/or write privileges to
the file.
The SMB protocol uses security identifiers (SIDs) for authorization data. All identities are converted to SIDs during retrieval and
are converted back to their on-disk representation before they are stored on the cluster.
When a file or directory is created, OneFS checks the access control list (ACL) of its parent directory. If the ACL contains any
inheritable access control entries (ACEs), a new ACL is generated from those ACEs. Otherwise, OneFS creates an ACL from the
combined file and directory create mask and create mode settings.
Supported clients
The table lists the clients that are supported by OneFS.
OneFS supports the following clients. Clients running Operating System X can connect to a Isilon cluster using the NFS or SMB
protocol.
Supported Clients
Any NFS client that complies with NFSv3 or NFSv4.0 client implementations compliant with RFC1813 and RFC3530
respectively.
EMC Isilon tests SMB clients that are covered under Extended Support Policy of Microsoft and the following:
● Operating system X 10.9
● Operating system X 10.10
● Operating system X 10.11
MacOS X
Clients running MacOS X can connect to a Isilon cluster using the NFS or SMB protocol. To take advantage of Apple-specific
SMB2 features such as color tagging, enable the Apple extensions for SMB2.
SMB resources
You can retrieve, create, modify, or delete SMB share configurations and settings.
POST <cluster-ip:port>/platform/12/protocols/smb/shares?zid=2
Specify the share name, path, and other properties in the JSON body of the request.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/smb/shares?describe
GET <cluster-ip:port>/platform/12/
protocols/smb/shares/<SHARE>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/smb/settings/share?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/smb/settings/global?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/smb/openfiles?describe
GET <cluster-ip:port>/platform/12/
protocols/smb/openfiles/<FILE-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/smb/sessions?describe
NOTE: The node-lnn is optional for /protocols/smb/sessions . With this parameter, the output lists the
connected client's information of interested node. When the parameter is missing, it is assumed as local node.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/smb/log-level?describe
POST /platform/12/zones
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response
{
"zones": [
{
"alternate_system_provider": "lsa-file-provider:System",
"auth_providers": [
"lsa-local-provider:System",
"lsa-file-provider:System"
],
"cache_entry_expiry": 14400,
"groupnet": "groupnet0",
"home_directory_umask": 63,
"id": "System",
"ifs_restricted": [],
"map_untrusted": "",
"name": "System",
"negative_cache_entry_expiry": 60,
"netbios_name": "",
"path": "/ifs",
"skeleton_directory": "/usr/share/skel",
"system": true,
"system_provider": "lsa-file-provider:System",
"user_mapping_rules": [],
"zone_id": 1
},
{
"alternate_system_provider": "lsa-file-provider:MinimumRequired",
"auth_providers": [
"lsa-local-provider:home-admin"
],
"cache_entry_expiry": 14400,
"groupnet": "groupnet0",
"home_directory_umask": 63,
"id": "home-admin",
"ifs_restricted": [],
"map_untrusted": "",
"name": "home-admin",
"negative_cache_entry_expiry": 60,
"netbios_name": "",
"path": "/ifs/home/admin",
"skeleton_directory": "/usr/share/skel",
"system": false,
"system_provider": "lsa-file-provider:System",
"user_mapping_rules": [],
"zone_id": 2
}
POST /platform/12/protocols/smb/shares?zid=2
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"MyShare", "path":"/ifs/home/admin/share"}
Response
201 Created
Content-type: application/json
{"id": "MyShare"}
S3
OneFS supports the Simple Storage Service (S3) protocol for reading data from and writing data to the PowerScale platform.
The OneFS API for the S3 protocol supplements the S3 API.
The S3 objects map to the PowerScale file system as follows:
● Bucket = base directory
● Object prefix = directory path within bucket
● Object = file
The S3 object key maps directly to a file system path.
The S3 protocol supports bucket and object creation, retrieving, updating, and deletion. Object retrievals and updates are
atomic. Bucket properties can be updated.
Objects are accessible using NFS and SMB as normal files, providing cross-protocol support. The S3 access control lists (ACLs)
translate into SMB ACLs as follows:
● The S3 Predefined group AllUsers translates to SMB well known 'Everyone'.
● The S3 Predefined group AllAuthenticatedUsers translates to SMB well-known 'Authenticated Users'.
● An S3 request without a signature is treated as if they were the user 'nobody'.
Administrators generate access IDs and secret keys for authenticated users for access to use S3. Secret keys expire, and when
an administrator generates a new secret key, the old key validity overlaps briefly with the new key validity.
See the Amazon Simple Storage Service documentation for more information.
S3 resources
You can retrieve, create, modify, or delete S3 configurations and settings.
S3 buckets resource
Retrieve a list of buckets and retrieve, create, modify, and delete a bucket. When creating a bucket, AWS S3 restrictions apply.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/s3/buckets?describe
GET <cluster-ip:port>/platform/12/
protocols/s3/buckets/<BUCKET>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/s3/keys/<USER>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/s3/log-level?describe
S3 mykeys resource
Retrieve, generate, and delete the secret key information of the current requestor.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/s3/mykeys?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/s3/settings/global?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/s3/settings/zone?describe
S3 API examples
Code samples for using S3 protocol with OneFS.
Generate a key
Create a key for S3 object access.
Request example
POST /platform/12/protocols/s3/keys/admin
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
{
"keys" :
{
"access_id" : "1_admin_accid",
"old_key_expiry" : 1584753428,
"old_key_timestamp" : 1584742174,
"old_secret_key" : "jegc8mY7vI93SGBiLDdsnRYqGdCB",
"secret_key" : "E3DyE_-aQtMrhGPqPZ22AczK_z6j",
"secret_key_timestamp" : 1584752828
}
}
Request example
GET /platform/12/protocols/s3/buckets/mybucket
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
{
"buckets" :
[
{
"acl" : [],
"bucketid" : 844424930230273,
"clients" : [],
"creationtime" : "2020-03-19T21:28:31.000Z",
"description" : "Objects for user12",
"id" : "mybucket",
"name" : "mybucket",
"object_acl_policy" : "replace",
"owner" : "admin",
"path" : "/ifs/home/user12",
"zid" : 1
}
]
}
Create a bucket
Create a bucket.
Request example
POST /platform/12/protocols/s3/buckets
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"create_path": true,
"description" : "New bucket",
"name" : "bucket123",
"owner" : "admin",
"path" : "/ifs/home/user13"
}
Response example
{
"buckets" :
[
{
"acl" : [],
"description" : "",
"id" : "mybucket",
"name" : "mybucket",
"object_acl_policy" : "replace",
"owner" : "root",
"path" : "/ifs/mybucket",
"zid" : 1
}
Manage S3 settings
Retrieve and set S3 settings.
Request example
Retrieve the zone settings.
GET /platform/12/protocols/s3/settings/zone
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
{
"settings" :
{
"base_domain" : "",
"bucket_directory_create_mode" : 511,
"object_acl_policy" : "replace",
"root_path" : "/ifs",
"use_md5_for_etag" : true,
"validate_content_md5" : true
}
}
Request example
Set the root path of the zone.
put /platform/12/protocols/s3/settings/zone
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"root_path" : "/ifs/home"
}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain
FTP
OneFS includes a secure FTP service that is called Very Secure FTP Daemon (VSFTPD), that you can configure for standard
FTP and FTPS file transfers.
FTP is disabled by default. To enable FTP, use the following command:
FTP resources
You can retrieve or modify global FTP configuration settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/ftp/settings?describe
NOTE: Set the file and directory permissions to allow HTTP or HTTPS to access them.
OneFS supports both HTTP and its secure variant, HTTPS. Each node in the cluster runs an instance of the Apache HTTP
Server to provide HTTP access. You can configure the HTTP service to run in different modes.
Both HTTP and HTTPS are supported for file transfer, but only HTTPS is supported for API calls. The HTTPS-only requirement
includes the web administration interface. OneFS supports a form of the web-based DAV (WebDAV) protocol that enables users
to modify and manage files on remote web servers. OneFS performs distributed authoring, but does not support versioning and
does not perform security checks. You can enable DAV in the web administration interface.
HTTP resources
You can retrieve and modify global HTTP configuration settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. http/settings?describe
HDFS security
Aside from what is contained in the OneFS PowerScale HDFS Reference Guide, the only additional security consideration is that
Cloudera Data Platform (CDP) Hadoop supports only secure URLs.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/settings/global?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/racks?describe
GET <cluster-ip:port>/platform/12/protocols/
hdfs/racks/<rack ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/proxyusers?describe
GET <cluster-ip:port>/platform/12/protocols/
hdfs/proxyusers/<NAME>?describe
PUT <cluster-ip:port>/platform/12/protocols/
hdfs/proxyusers/<NAME>/members/<MEMBER>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/proxyusers/<NAME>/members?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/log-level?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/ranger-plugin/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/crypto/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. hdfs/crypto/encryption-zones?describe
Request example
Put a forward slash (/) before the rack name.
POST /platform/12/protocols/hdfs/racks
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
201 Created
Content-type: application/json
{
"id" : "1-5-21-4224731515-2571109568-2823010237-1003"
}
Request example
Put a forward slash (/) before the rack name. In the URL, replace the forward slash with the escape character %2F.
PUT /platform/12/protocols/hdfs/racks/%2Fracktest
{
"name":"/rack2test"
}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
Request example
PUT /platform/12/protocols/hdfs/settings/global
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"service_enabled":true
}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
Request example
PUT /platform/12/protocols/hdfs/settings?zone=MyZone
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"default_checksum_type":"crc32"
}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
Request example
POST /platform/12/protocols/hdfs/proxyusers
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"proxy_user_test"}
Response example
201 Created
Content-type: application/json
You can also create an HDFS proxy user through the PUT method.
Request example
PUT /platform/12/protocols/hdfs/proxyusers/proxy_user_test
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{}
Response example
204 No Content
Content-type: text/plain
Request example
POST /platform/12/protocols/hdfs/proxyusers/proxy_user_test/members
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"name":"proxy_user_member_test"}
Response example
201 Created
Content-type: application/json
You can also create an HDFS proxy user member through the PUT method.
Request example
PUT /platform/12/protocols/hdfs/proxyusers/proxy_user_test/members/
USER:proxy_user_member_test
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{}
Response example
204 No Content
Content-type: text/plain
OpenStack Swift
OneFS supports OpenStack Swift, an object storage interface compatible with the OpenStack Swift 1.0 application
programming interface (API). Through OpenStack Swift, you can access file-based data that is stored on your cluster as
objects. The Swift API is implemented as a set of Representational State Transfer (REST) web services over HTTP or
secure HTTP (HTTPS). Since the Swift API is considered as a protocol, content and metadata can be ingested as objects
and concurrently accessed through protocols that are configured on the cluster. The cluster requires a licensed to support
OpenStack Swift.
NOTE: Support for OpenStack Swift will be removed for OneFS in a future release. Dell Technologies recommends using
the OneFS S3 protocol support instead. See KB#542999 for more information.
The OpenStack Swift protocol service is a licensed feature. Contact your Dell Technologies representative to obtain a license
key to access the Swift protocol and RESTful APIs for object storage operations.
Swift resources
You can list, create, modify, or delete Swift account information.
Networking
After you determine the topology of your network, you can set up and manage your internal and external networks.
There are two types of networks on the PowerScale cluster:
Internal Nodes communicate with each other using a high-speed low latency InfiniBand network. You can
optionally configure a second InfiniBand network to enable failover for redundancy.
External Clients connect to the cluster through the external network with Ethernet. The cluster supports standard
network communication protocols, including NFS, SMB, HDFS, HTTP, and FTP. The cluster includes
various external Ethernet connections, providing flexibility for a wide variety of network configurations.
Network resources
List, create, modify, or delete information specific to OneFS networks.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. external?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. subnets?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. dnscache?describe
View the detailed JSON schema for this resource, which has GET<cluster-ip:port>/platform/12/network/
information about query parameters and object properties. dnscache/flush?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. interfaces?describe
Request example
GET /platform/12/network/interfaces?
lnn=1&type=network_pool_ips&owner=groupnet0.subnet0.pool0 HTTP/1.1
Host: <CLUSTER_IP>:8080
User-Agent: curl/7.73.0
Accept: */*
Response example
{
"errors" : null,
"interfaces" :
[
{
"flags" : [ "ACCEPT_ROUTER_ADVERT" ],
"id" : "1:ext-1",
"ip_addrs" : [ "<IP>" ],
"ipv4_gateway" : "<IP>",
"ipv6_gateway" : "<IP>",
"lnn" : 1,
"mtu" : 1500,
"name" : "ext-1",
"nic_name" : "em1",
"owners" :
[
{
"access_zone" : "System",
"groupnet" : "groupnet0",
"id" : "groupnet0.subnet0.pool0",
"ip_addrs" : [ "<IP>" ],
"pool" : "pool0",
"subnet" : "subnet0",
"type" : "static",
"vlan_id" : null
}
],
"status" : "up",
"type" : "gige",
"vlans" : []
}
],
"resume" : null,
"total" : 1
}
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. pools?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. rules?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. sc-rebalance-all?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. groupnets?describe
GET <cluster-ip:port>/platform/12/network/
groupnets/<GROUPNET>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. groupnets/<groupnet>/subnets?describe
GET <cluster-ip:port>/
platform/12/network/groupnets/<groupnet>/
subnets/<subnet>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. groupnets/<groupnet>/subnets/<subnet>/pools?
describe
GET <cluster-ip:port>/platform/12/network/
groupnets/<groupnet>/subnets/<subnet>/pools/
<pool>?describe
NOTE:
/7/network/groupnets/<GROUPNET>/subnets/<SUBNET>/pools/<POOL>/interfaces
with
/12/network/interfaces?owner=<GROUPNET>.<SUBNET>.<POOL>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/7/network/
information about query parameters and object properties. groupnets/<GROUPNET>/subnets/<SUBNET>/pools/
<POOL>/interfaces?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. groupnets/<GROUPNET>/subnets/<SUBNET>/pools/
<POOL>/rebalance-ips?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. groupnets/<groupnet>/subnets/<subnet>/pools/
<pool>/rules?describe
GET <cluster-ip:port>/platform/12/network/
groupnets/<groupnet>/subnets/<subnet>/pools/
<pool>/rules/<name>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. groupnets/<groupnet>/subnets/<subnet>/pools/
<pool>/sc-suspend-nodes?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/network/
information about query parameters and object properties. groupnets/<groupnet>/subnets/<subnet>/pools/
<pool>/sc-resume-nodes?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/ipmi/
information about query parameters and object properties. config/features?describe
GET <cluster-ip:port>/platform/12/ipmi/
config/features/<FEATURE>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/ipmi/
information about query parameters and object properties. config/network?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/ipmi/
information about query parameters and object properties. config/nodes?describe
GET <cluster-ip:port>/platform/12/ipmi/
config/nodes/<LNN>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/ipmi/
information about query parameters and object properties. config/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/ipmi/
information about query parameters and object properties. config/user?describe
NOTE: To initiate any Job Engine tasks, you must have the role of SystemAdmin in the OneFS system.
View the detailed JSON schema for this resource, which has GET /platform/12/event/maintenance?describe
information about query parameters and object properties.
Jobs resource
Modify, create, or retrieve information about OneFS system jobs.
View the detailed JSON schema for this resource, which has GET /platform/12/job/jobs?describe
information about query parameters and object properties.
GET /platform/12/job/jobs/<JID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/job/types?
information about query parameters and object properties. describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/job/
information about query parameters and object properties. policies?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/job/job-
information about query parameters and object properties. summary?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/job/
information about query parameters and object properties. events?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/job/
information about query parameters and object properties. statistics?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/job/
information about query parameters and object properties. recent?describe
Request example
PUT /platform/12/job/types/AVScan
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'policy': 'MEDIUM',
'enabled': True
}
Response example
204 No Content
Content-type: 'text/plain',
Allow: 'GET, PUT, HEAD'
Request example
POST /platform/12/job/policies
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'intervals': [
{
'impact': 'High',
'begin': 'Tuesday 00:00',
'end': 'Thursday 23:59'}
],
'name': 'myPolicy',
'description': 'Custom policy'
}
Response example
201 CREATED
Content-type: application/json,
Allow: 'GET, PUT, POST, DELETE'
{
'id': 'myPolicy'
}
Request example
PUT /platform/12/job/policies/myPolicy
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'intervals': [
Response example
204 No Content
Content-type: 'text/plain',
Allow: 'GET, PUT, POST, DELETE, HEAD'
Request example
POST /platform/12/job/jobs
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'type': 'AVScan',
'allow_dup': True
}
Response example
201 CREATED
Content-type: application/json,
Allow: 'GET, PUT, POST, HEAD'
{
"id": 1234
}
Request example
PUT /platform/12/job/jobs/AVScan
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'state': 'pause'
}
Response example
204 No Content
Content-type: 'text/plain',
Allow: 'GET, PUT, POST, HEAD'
Statistics resources
You can retrieve information about OneFS statistics through the following resources.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/current?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/keys?describe
GET <cluster-ip:port>/platform/12/
statistics/keys/<key>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/history?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/operations?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/protocols?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/summary/client?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/summary/drive?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/summary/heat?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/summary/protocol?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/summary/protocol-stats?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/summary/system?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. statistics/summary/workload?describe
FSA
The FS Analyze job gathers and reports information about all files and directories beneath the /ifs path. This job requires you to
activate an InsightIQ license. You can use reports from this job to analyze the OneFS file system.
For more information, see the Isilon InsightIQ User Guide.
FSA resources
Retrieve, create, modify, or delete FSAnalyze (FSA) job-related configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/path?
information about query parameters and object properties. describe
List a single index entry from the index table. GET <cluster-ip:port>/platform/12/fsa/index/
<NAME>/lins/<LIN>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/index?
information about query parameters and object properties. describe
GET <cluster-ip:port>/platform/12/fsa/index/
<NAME>/lins?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/index/
information about query parameters and object properties. <NAME>/lins/<LIN>?describe
Modify the pinned property for an FSA job result set. PUT <cluster-ip:port>/platform/12/fsa/
results/<RESULT-SET-ID>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/
information about query parameters and object properties. results?describe
GET <cluster-ip:port>/platform/12/fsa/
results/<RESULT-SET-ID>?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/fsa/results/
<RESULT-SET-ID>/dir_pool_usage?describe
GET <cluster-
ip:port>/platform/12/fsa/results/<RESULT-
SET-ID>/dir_pool_usage/<LIN>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/
information about query parameters and object properties. results/<RESULT-SET-ID>/directories?describe
GET
<cluster-ip:port>/platform/12/fsa/results/
<RESULT-SET-ID>/directories/<LIN>?describe
Retrieve a histogram breakout for an individual FSA result set. GET <cluster-ip:port>/platform/12/fsa/
results/<RESULT-SET-ID>/histogram/<STAT>/by
GET <cluster-ip:port>/platform/12/fsa/
results/<RESULT-SET-ID>/histogram/<STAT>/by/
<BREAKOUT>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/
information about query parameters and object properties. <result-set-id>/top-dirs?describe
GET <cluster-ip:port>/platform/12/fsa/
<result-set-id>/top-dirs/<stat>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/
information about query parameters and object properties. <RESULT-SET-ID>/top-files?describe
GET <cluster-ip:port>/platform/12/fsa/
<RESULT-SET-ID>/top-files/<STAT>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/fsa/
information about query parameters and object properties. settings?describe
Event resources
Retrieve, create, modify, or delete event-related configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. alert-conditions?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. categories?describe
GET <cluster-ip:port>/platform/12/event/
categories/<CATEGORY-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. channels?describe
GET <cluster-ip:port>/platform/12/event/
channels/<CHANNEL-ID>?describe
View the detailed JSON schema for this resource, which has GET /platform/12/event/suppress?describe
information about query parameters and object properties.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. eventgroup-definitions?describe
GET <cluster-ip:port>/
platform/12/event/eventgroup-definitions/
<EVENTGROUP-DEFINITION-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. eventgroup-occurrences?describe
GET <cluster-ip:port>/
platform/12/event/eventgroup-occurrences/
<EVENTGROUP-OCCURRENCE-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. eventlists?describe
GET <cluster-ip:port>/platform/12/event/
eventlists/<EVENT-OCCURRENCE-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. events?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/event/
information about query parameters and object properties. settings?describe
HealthCheck
The HealthCheck feature enables you to evaluate the status of specific software and hardware components of the cluster and
the cluster's environment.
Aspects of the cluster or its environment that can be evaluated are called items. Depending on the nature of the item, when
the item is evaluated, either each node in the cluster is checked or the cluster as a whole is checked. For example, an item
that evaluates the number of DIMM errors that have been logged checks the logs in to each node in the cluster. An item that
evaluates the amount of free space remaining on the cluster evaluates the cluster as a whole.
Parameters are elements of items to which you can assign specific values. For example, the item auth_ad_clock_skew
contains a parameter that is named ad_provider. You can assign a value such as win_ad to the ad_provider parameter
using the healthcheck/parameters/<ID> call.
Items and checklists can be evaluated according to a defined schedule. When an item or checklist is evaluated, the results are
saved in the /ifs/.ifsvar/modules/health-check/results/evaluations directory.
HealthCheck resources
You can retrieve, create, modify, or delete HealthCheck configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. healthcheck/evaluations?describe
GET <cluster-ip:port>/platform/12/
healthcheck/evaluations/<ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. healthcheck/items?describe
GET <cluster-ip:port>/platform/12/
healthcheck/items/<ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. healthcheck/parameters?describe
GET <cluster-ip:port>/platform/12/
healthcheck/parameters/<ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. healthcheck/schedules?describe
GET <cluster-ip:port>/platform/12/
healthcheck/schedules/<ID>?describe
Snapshots overview
A OneFS snapshot is a logical pointer to data that is stored on a cluster at a specific point in time.
A snapshot references a directory on a cluster, including all data stored in the directory and its subdirectories. If the data
referenced by a snapshot is modified, the snapshot stores a physical copy of the data that was modified. Snapshots are created
according to user specifications or are automatically generated by OneFS to facilitate system operations.
To create and manage snapshots, you must activate a SnapshotIQ license on the cluster. Some applications must generate
snapshots to function but do not require you to activate a SnapshotIQ license; by default, these snapshots are automatically
deleted when OneFS no longer needs them. However, if you activate a SnapshotIQ license, you can retain these snapshots. You
can view snapshots that are generated by other modules without activating a SnapshotIQ license.
You can identify and locate snapshots by name or ID. A snapshot name is specified by a user and assigned to the virtual
directory that contains the snapshot. A snapshot ID is a numerical identifier that OneFS automatically assigns to a snapshot.
Snapshots resources
You can retrieve, create, modify, or delete snapshot configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/snapshot/
information about query parameters and object properties. license?describe
View the detailed JSON schema for this resource, which GET <cluster-ip:port>/platform/12/snapshot/
has information about query parameters and object snapshots-summary?describe
properties.
Snapshots resource
Create, modify, delete, or retrieve information about file system snapshots.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/snapshot/
information about query parameters and object properties. pending?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/snapshot/
information about query parameters and object properties. aliases?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/snapshot/
information about query parameters and object properties. changelists?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/snapshot/
information about query parameters and object properties. changelists/<CHANGELIST>/lins?describe
GET <cluster-ip:port>platform/12/snapshot/
changelists/<CHANGELIST>/lins/<LIN>?describe
Retrieve a collection of snap diff regions for a specified LIN. GET <cluster-ip:port>/platform/12/snapshot/
changelists/<CHANGELIST>/diff-regions/<LIN>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>platform/12/
information about query parameters and object properties. snapshot/changelists/<CHANGELIST>/entries/
<ID>?describe
GET <cluster-ip:port>/platform/12/snapshot/
changelists/<CHANGELIST>/entries?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/snapshot/
information about query parameters and object properties. repstates?describe
GET <cluster-ip:port>/platform/12/snapshot/
repstates/<REPSTATE>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/snapshot/
information about query parameters and object properties. settings?describe
Create a snapshot
You can create a snapshot.
Request example
POST /platform/12/snapshot/snapshots
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"name" : "admin_snap",
"path" : "/ifs/home/admin"
}
201 Created
Content-type: application/json
{
"created": 1589486376,
"expires": null,
"has_locks": false,
"id": 2,
"name": "admin_snap",
"path": "/ifs/home/admin",
"pct_filesystem": 6.816916993557243e-06,
"pct_reserve": 0.0,
"schedule": null,
"shadow_bytes": 0,
"size": 4096,
"state": "active",
"target_id": null,
"target_name": null
}
Request example
PUT /platform/12/snapshot/aliases/AdminSnapshot
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"name" : "InitialAdminSnapshot"
}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain
NDMP resources
You can retrieve, create, modify, or delete NDMP configurations and settings.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters contexts/backup?describe
and object properties.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters contexts/bre?describe
and object properties.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters contexts/restore?describe
and object properties.
NDMP diagnostics
Retrieve or modify NDMP diagnostic information.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters diagnostics?describe
and object properties.
NDMP dumpdates
Retrieve or delete information about NDMP dump dates.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters dumpdates/<path*>?describe
and object properties.
NDMP logs
Retrieve NDMP logs.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters logs?describe
and object properties.
NDMP sessions
Retrieve information about NDMP sessions.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters sessions?describe
and object properties.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters settings/global?describe
and object properties.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/protocols/
information about query parameters and object properties. ndmp/settings/preferred-ips?describe
GET <cluster-ip:port>/platform/12/protocols/
ndmp/settings/preferred-ips/<ID>?describe
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters settings/variables/<path*>?describe
and object properties.
NDMP users
List, create, modify, or delete NDMP administrators.
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/protocols/ndmp/
which has information about query parameters users?describe
and object properties.
Sync resources
You can retrieve, create, modify, or delete resources for data replication with SyncIQ.
<file_matching_pattern> := {
"or_criteria" : [
{
"and_criteria": [
<file_criterion>,
<file_criterion> = {
"type": <string>,
"operator": <string>,
"value": {<string> | <integer>}
}
operator Description
== Equal
! Not
Type Conditions
"file_matching_filter": {
"or_criteria" : [
{
"and_criteria": [
{
"type": "size",
"operator": ">=",
"value": "500000KB"
},
{
"type": "file_type",
"operator": "==",
"value": "file"
}
]
},
{
"and_criteria": [
{
"type": "posix_regex_name",
"operator": "==",
"value": "some_special_prefix_*"
}
]
},
{
"and_criteria": [
{
"type": "file_type",
"operator": "==",
"value": "symlink"
}
]
}
]
}
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. license?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. certificates/server?describe
GET <cluster-ip:port>/platform/12/sync/
certificates/server/<SERVER>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. certificates/peer?describe
GET <cluster-ip:port>/platform/12/sync/
certificates/peer/<PEER>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. jobs?describe
GET <cluster-ip:port>/platform/12/sync/
jobs/<JOB>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. policies?describe
GET <cluster-ip:port>/platform/12/sync/
policies/<POLICY>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. policy/<POLICY>/reset?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. reports?describe
GET <cluster-ip:port>/platform/12/sync/
reports/<REPORT>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. reports-rotate?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. target/policies?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. target/policies/<POLICY>/cancel?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. target/reports?describe
GET <cluster-ip:port>/platform/12/sync/
target/reports/<REPORT>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. target/reports/<REPORT>/subreports?describe
GET
<cluster-ip:port>/platform/12/sync/target/
reports/<REPORT>/subreports/<SUBREPORT-ID>?
describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. service/policies?describe
GET <cluster-ip:port>/platform/12/sync/
service/policies/<POLICY>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. service/policies/<POLICY>/reset?describe
Break association with a specific SyncIQ target service policy. DELETE <cluster-ip:port>/platform/12/sync/
service/target/policies/<POLICY>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. service/target/policies?describe
GET <cluster-ip:port>/platform/12/sync/
service/target/policies/<POLICY>?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/sync/service/
target/policies/<POLICY>/cancel?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. rules?describe
GET <cluster-ip:port>/platform/12/sync/
rules/<RULE>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. settings?describe
NOTE: You can configure RPO alert time through preferred_rpo_alert property of SyncIQ settings. For example
when the preferred_rpo_alert is set to null, it sets preferences as Do not send RPO alerts. When the
preferred_rpo_alert is set to 172800, it sets preferences as Send RPO alerts after 2 days.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. settings/advanced?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. history/cpu?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. history/file?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. history/network?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/sync/
information about query parameters and object properties. history/worker?describe
Request example
POST /platform/12/sync/jobs
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'id': 'testpol'
}
Response example
201 Created
Content-type: application/json,
Allow: 'GET, POST, HEAD'
{
"id":"testpol"
}
Request example
You can only modify the state object property for a replication job. Options are pause, cancel, and restart.
PUT /platform/12/sync/jobs/testpol
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'state': cancel,
}
Response example
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT'
Request example
POST /platform/12/sync/policies
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'log_level': 'fatal',
'name': 'myNewPolicy',
'schedule': 'every 3 weeks',
'source_root_path': '/ifs/data/sync2',
'target_path': '/ifs/data/sync/target2',
'action': 'copy',
'report_max_count': 144,
'source_exclude_directories': ['/ifs/data/sync2/exclude'],
'source_include_directories': ['/ifs/data/sync2/include'],
'target_host': 'localhost'
}
Response examples
In the following example, the request was successful and a replication policy ID is returned for the created object.
201 Created
Content-type: application/json,
Allow: 'DELETE, GET, POST, HEAD'
{
"id":"a33006f364842eefb629fc6b95c92559"
}
In following example, the replication policy was not created and an error was returned.
{
"errors":[
{
Request example
PUT /platform/12/sync/policies/myNewPolicy
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'target_compare_initial_sync': True,
'enabled': True,
'description': 'New policy',
'target_host': 'newHostname'
}
Response examples
The request was successful. No message body is returned for this request.
204 No Content
content-type: text/plain,
allow: 'DELETE, GET, PUT, HEAD'
In the following example, the policy was not modified and an error message was returned.
{
"errors":[
{
"code":"AEC_BAD_REQUEST",
"field":"source_network",
"message":"Flexnet subnet not found"
}
]
}
Request example
POST /platform/12/sync/policy/testPolicy/reset
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
201 Created
Content-type: application/json,
Allow: 'POST'
Request example
POST /platform/12/sync/reports-rotate
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
201 Created
Content-type: application/json,
Allow: 'DELETE, GET, POST, HEAD'
{
"id":"a33006f364842eefb629fc6b95c92559"
}
Request example
POST /platform/12/sync/target/policies/testpol/cancel
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
200 OK
Content-type: application/json,
Allow: 'DELETE, GET, PUT, HEAD'
{
"policies" :
[
{
"failover_failback_state" : "writes_disabled",
"id" : "021a24618064135c5df4c431fd132437",
"last_job_state" : "paused",
"last_source_coordinator_ip" : "127.0.0.1",
"last_update_from_source" : 1371769450,
"legacy_policy" : false,
"name" : "testpol",
"source_cluster_guid" : "005056300217c137c2512b163880cb4d843d",
"source_host" : "jgregory",
"target_path" : "/ifs/data/tgt"
}
]
}
Request example
POST /platform/12/sync/rules
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'type': 'file_count',
'limit': 123,
'schedule':
{
'begin': '09:00',
'end': '17:00',
'monday': True,
'tuesday': True,
'friday': True,
'wednesday': True,
'thursday': True,
'sunday': False,
'saturday': False
}
}
Response example
201 Created
Content-type: application/json,
Allow: 'DELETE, GET, POST, HEAD'
{
"id":"fc-0"
}
Request example
PUT /platform/12/sync/rules/
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
204 No Content
Content-type: text/plain,
Allow: 'DELETE, GET, PUT, POST'
Request example
PUT /platform/12/sync/settings
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
Response example
204 No Content
Content-type: text/plain,
Allow: 'DELETE, GET, PUT, HEAD'
SmartLock overview
With the SmartLock software module, you can protect files on a PowerScale cluster from being modified, overwritten, or
deleted. To protect files in this manner, you must activate a SmartLock license.
With SmartLock, you can identify a directory in OneFS as a WORM domain. WORM stands for write once, read many. All files
within the WORM domain can be committed to a WORM state, meaning that those files cannot be overwritten, modified, or
deleted.
After a file is removed from a WORM state, you can delete the file. However, you can never modify a file that has been
committed to a WORM state, even after it is removed from a WORM state.
In OneFS, SmartLock can be deployed in one of two modes: compliance mode or enterprise mode.
SmartLock resources
You can retrieve, create, or modify SmartLock configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/worm/
information about query parameters and object properties. domains?describe
GET <cluster-ip:port>/platform/12/worm/
domains?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/worm/
information about query parameters and object properties. settings?describe
Create a SmartLock
You can create a SmartLock domain.
Request example
POST /platform/12/worm/domains
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"path":"/ifs/test/domain_test"
}
Response example
201 Created
Content-type: application/json
{
"id" : "224731515-4837484-928237-1003"
}
Modify a SmartLock
You can modify a SmartLock domain.
Request example
PUT /platform/12/worm/domains/domaintest
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"privileged_delete":"on"}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain
Request example
In this example, you can set the compliance clock to the current system time. Do this task by sending a PUT request to this
resource with an empty JSON object {} for the cdate value. This cluster must be in compliance mode to set the compliance
clock.
PUT /platform/12/worm/domains/settings
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{"cdate" : }
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain
Deduplication overview
SmartDedupe enables you to save storage space on your cluster by reducing redundant data. Deduplication maximizes the
efficiency of your cluster by decreasing the amount of storage that is required to store multiple files with identical blocks.
The SmartDedupe software module deduplicates data by scanning a PowerScale cluster for identical data blocks. Each block is
8 KB. If SmartDedupe finds duplicate blocks, SmartDedupe moves a single copy of the blocks to a hidden file called a shadow
store. SmartDedupe then deletes the duplicate blocks from the original files and replaces the blocks with pointers to the shadow
store.
Deduplication is applied at the directory level, targeting all files and directories underneath one or more root directories.
SmartDedupe not only deduplicates identical blocks in different files, it also deduplicates identical blocks within a single file.
Before you deduplicate a directory, you can get an estimate of the amount of space you can expect to save. After you begin
deduplicating a directory, you can monitor the amount of space that deduplication is saving in real time.
To enable deduplicating two or more files, the files must have the same disk pool policy ID and protection policy. If either or both
of these attributes differ between two or more identical files, or files with identical 8 K blocks, the files are not deduplicated.
Because it is possible to specify protection policies on a per-file or per-directory basis, deduplication can be further
affected. Consider the example of two files, /ifs/data/projects/alpha/logo.jpg and /ifs/data/projects/
beta/logo.jpg. Even if the logo.jpg files in both directories are identical, they would not be deduplicated if they have
different protection policies.
If you have activated a SmartPools license on your cluster, you can also specify custom file pool policies. These file pool policies
might result in identical files or files with identical 8 K blocks being stored in different node pools. Those files would have
different disk pool policy IDs and would not be deduplicated.
SmartDedupe also does not deduplicate files that are 32 KB or smaller, because doing so would consume more cluster resources
than the storage savings are worth. The default size of a shadow store is 2 GB. Each shadow store can contain up to 256,000
blocks. Each block in a shadow store can be referenced up to 32,000 times.
Deduplication resources
You can retrieve, create, modify, or delete SmartDedupe configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/dedupe/
information about query parameters and object properties. dedupe-summary?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/dedupe/
information about query parameters and object properties. inline/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/dedupe/
information about query parameters and object properties. settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/dedupe/
information about query parameters and object properties. reports?describe
GET <cluster-ip:port>/platform/12/dedupe/
reports/<id>?describe
Request example
PUT /platform/12/dedupe/settings
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'paths': [
'/ifs/data/dedupeme1',
'/ifs/data/dedupeme2'
]
}
Response example
204 No Content
Content-type: 'text/plain,
Allow: 'GET, PUT, HEAD'
Request example
POST /platform/config/exports
Response example
{
"task_id" : "fliu-9peydb2-20210223085519"
}
Request example
GET /platform/config/exports
Response example
{
"exports" :
[
{
"done" : "['http', 'quota', 'snapshot', 'nfs', 'smb', 's3', 'ndmp']",
"failed" : "['quota', 'snapshot']",
"id" : "fliu-9peydb2-20210223085519",
"message" : "Components: ['quota', 'snapshot'] are not licensed.",
"path" : "/ifs/data/Isilon_Support/config_mgr/backup/fliu-9peydb2-20210223085519",
"pending" : "[]",
"status" : "Failed"
},
{
"done" : "['http', 'quota', 'snapshot', 'nfs', 'smb', 's3', 'ndmp']",
"failed" : "[]",
"id" : "fliu-9peydb2-20210223085829",
"message" : "",
"path" : "/ifs/data/Isilon_Support/config_mgr/backup/fliu-9peydb2-20210223085829",
"pending" : "[]",
"status" : "Successful"
}
Request example
GET /platform/config/exports/<id>
Parameter:
"id" : "fliu-9peydb2-20210223085829"
Response example
{
"exports" :
[
{
"done" : "['http', 'quota', 'snapshot', 'nfs', 'smb', 's3', 'ndmp']",
"failed" : "[]",
"id" : "fliu-9peydb2-20210223085829",
"message" : "",
"path" : "/ifs/data/Isilon_Support/config_mgr/backup/fliu-9peydb2-20210223085829",
"pending" : "[]",
"status" : "Successful"
}
]
}
Request example
POST /platform/config/imports
Parameter:
Response example
{
"task_id" : "fliu-9peydb2-20210223090538"
}
Request example
GET /platform/config/imports
Response example
{
"imports" :
[
{
"done" : "['http', 'quota', 'snapshot', 'nfs', 'smb', 's3', 'ndmp']",
"export_id" : "fliu-9peydb2-20210223085829",
"failed" : "[]",
"id" : "fliu-9peydb2-20210223090538",
"message" : "",
"path" : "/ifs/data/Isilon_Support/config_mgr/restore/fliu-9peydb2-20210223090538",
"pending" : "[]",
"status" : "Successful"
},
{
"done" : "['http', 'quota', 'snapshot', 'nfs', 'smb', 's3', 'ndmp']",
"export_id" : "fliu-9peydb2-20210223085829",
"failed" : "[]",
"id" : "fliu-9peydb2-20210223090613",
"message" : "",
"path" : "/ifs/data/Isilon_Support/config_mgr/restore/fliu-9peydb2-20210223090613",
"pending" : "[]",
"status" : "Successful"
}
]
}
Request example
GET /platform/config/imports/<id>
Parameter:
"id" : "fliu-9peydb2-20210223090613"
{
"imports" :
[
{
"done" : "['http', 'quota', 'snapshot', 'nfs', 'smb', 's3', 'ndmp']",
"export_id" : "fliu-9peydb2-20210223085829",
"failed" : "[]",
"id" : "fliu-9peydb2-20210223090613",
"message" : "",
"path" : "/ifs/data/Isilon_Support/config_mgr/restore/fliu-9peydb2-20210223090613",
"pending" : "[]",
"status" : "Successful"
}
]
}
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. config?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. config/join-mode?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. email?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. identity?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. internal-networks?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. add-node?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes-available?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. update-lnns?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/driveconfig?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/drives?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/drives/<DRIVEID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/drives/<DRIVEID>/add?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/cluster/nodes/
<LNN>/drives/<DRIVEID>/firmware?describe
View the detailed JSON schema for this resource, which has GET <cluster-
information about query parameters and object properties. ip:port>/platform/12/cluster/nodes/<LNN>/
drives/<DRIVEID>/firmware/update?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/drives/<driveid>/format?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/cluster/nodes/
<LNN>/drives/<DRIVEID>/purpose?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/cluster/nodes/
<LNN>/drives<DRIVEID>/smartfail?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/cluster/nodes/
<LNN>/drives/<DRIVEID>/stopfail?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/hardware?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/internal-ip-address?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/partition?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/reboot?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/sensors?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/shutdown?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/sleds?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/sleds/<SLEDID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/state?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/state/readonly?describe
Modify one or more node service light state settings. PUT <cluster-ip:port>/platform/12/cluster/
nodes/<LNN>/state/servicelight
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/state/servicelight?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/state/smartfail?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<lnn>/status?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/status/batterystatus?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/status/cpu?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/status/nvram?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. nodes/<LNN>/status/powersupplies?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/local/
information about query parameters and object properties. cluster/nodes?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/local/
information about query parameters and object properties. cluster/nodes/<LNN>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/local/
information about query parameters and object properties. cluster/nodes/<LNN>/drives?describe
GET <cluster-ip:port>/platform/12/local/
cluster/nodes/<LNN>/drives/<DRIVE>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/local/
information about query parameters and object properties. cluster/nodes/<LNN>/driveconfig?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/local/cluster/
nodes/<LNN>/internal-ip-address?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. owner?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. statfs?describe
Set the cluster time. Time gets synchronized across nodes, PUT <cluster-ip:port>/platform/12/cluster/
but there can be slight drift. time
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. time?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. timezone?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. timezone/regions/<REGION>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. timezone/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/local/
information about query parameters and object properties. cluster/time?describe
NOTE: The versions of OneFS should be the same on all nodes unless an upgrade is in progress.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. version
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. protocols/ssh/settings?describe
IP address pools
Within a subnet, you can partition an external network interfaces a cluster into pools of IP address ranges. The pools enable you
to customize your storage network to serve different groups of users. You can configure subnets in IPv4 or IPv6.
You can associate IP address pools with a node, a group of nodes, or NIC ports. For example, you can set up one subnet for
storage nodes and another subnet for accelerator nodes. Similarly, you can allocate ranges of IP addresses on a subnet to
different teams, such as engineering and sales. These options help you create a storage topology that matches the demands of
your network.
In addition, network provisioning rules streamline the setup of external connections. After you configure the rules with network
settings, you can apply the settings to new nodes.
As a standard feature, the OneFS SmartConnect module balances connections among nodes. A round-robin policy with static
IP addresses and one IP address pool for each subnet. Activating a SmartConnect Advanced license adds features, such as
defining IP address pools to support multiple DNS zones.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cluster/
information about query parameters and object properties. external-ips?describe
Modify the default character encodings settings for the PUT <cluster-ip:port>/platform/12/
cluster. filesystem/settings/character-encodings
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/
information about query parameters and object properties. platform/12/filesystem/settings/character-
encodings?describe
Modify the file system compression settings for the cluster. PUT <cluster-ip:port>/platform/12/
filesystem/settings/compression
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. filesystem/settings/compression?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. filesystem/settings/access-time?describe
Licensing
All PowerScale software and hardware must be licensed through Dell Technologies Software Licensing Central (SLC).
A license file contains a record of your active software licenses and your cluster hardware. One copy of the license file is stored
in the SLC repository, and another copy of the license file is stored on your cluster. The license file on your cluster and the
license file in the SLC repository must match. The license file contains a record of the following:
● OneFS license
● Optional software module licenses
● Hardware information
Licensing resources
You can retrieve information about OneFS feature licenses, or install a new license key.
View the detailed JSON schema for this resource, which has GET <cluster-ip>:<port>/platform/12/license/
information about query parameters and object properties. licenses?describe
GET <cluster-ip>:<port>/platform/12/license/
licenses/<NAME>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip>:<port>/platform/12/license/
information about query parameters and object properties. eula?describe
Security hardening
Security hardening is the process of configuring a system to reduce or eliminate as many security risks to support the Security
Technical Implementation Guides (STIGs).
When you apply a hardening profile on a PowerScale cluster, OneFS reads the security profile file and applies the configuration
that is defined in the profile to the cluster. If required, OneFS identifies configuration issues that prevent hardening on the
nodes. For example, the file permissions on a particular directory might not be set to the expected value, or the required
directories might be missing. When an issue is found, you can choose to allow OneFS to resolve the issue, or you can defer
resolution and fix the issue manually.
NOTE: The intention of the hardening profile is to support STIGs defined by the Defense Information Systems Agency
(DISA) and applicable to OneFS. The hardening profile only supports a subset of requirements that are defined by DISA in
STIGs. The hardening profile is meant to be primarily used in Federal accounts.
If you determine that the hardening configuration is not right for your system, OneFS allows you to revert the security hardening
profile. Reverting a hardening profile returns OneFS to the configuration before hardening.
You must have an active security hardening license and be logged in to the PowerScale cluster as the root user to apply
hardening to OneFS. To obtain a license, contact your PowerScale sales representative.
Hardening resources
Apply, resolve, revert, or retrieve information about hardening on a cluster.
NOTE: This is different from the hardening status resource, which retrieves the overall hardening status on the cluster.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/hardening/
information about query parameters and object properties. state?describe
NOTE: This is different from the hardening state resource, which returns that state of a specific hardening operation.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/hardening/
information about query parameters and object properties. status?describe
KMIP examples
View examples regarding selective KMIP API requests.
Request example
POST /platform/12/keymanager/kmip/server/verify
Body:
{
"nodes" :
[
{
"id" : 1,
"lnn" : 1,
"message" : "Success",
"status" : true
}
],
"total" : 1
}
Response example
{
"client_cert_path": "/ifs/kmip_client_bundle.pem",
"minimum_tls_version": "1.2",
"host": "aimakmip.west.isilon.com",
"ca_cert_path": "/ifs/kmip_ca.pem"
}
Request example
GET platform/12/keymanager/kmip/servers/aimakmip
Response example
{
"servers" :
[
{
"ca_cert" :
{
"expiration_date" : 1780854384,
"fingerprint" : "77dca16aeaf912e41fd6aed1c6e579c5c6457d80ab2db115f63e862185c36c86",
"serial" : 0,
"subject" : "C=US, ST=Washington, L=Seattle, O=Isilon, OU=AIMA, CN=KMIP CA,
emailAddress="
},
"client_cert" :
View the current KMIP status for a specific node. GET <cluster-ip-or-host-name>:<port>/platform/12/
Status supports display options. keymanager/sed/status/<LNN>
SED examples
View examples regarding selective SED API requests.
Request example
GET platform/12/keymanager/sed/settings
Response example
{
"settings" :
{
"kmip_enabled" : true,
"kmip_server" : "aimakmip",
"supported" : true
}
}
Request example
GET platform/12/keymanager/sed/status
Response example
{
"nodes" :
[
{
"error_msg" : "",
"id" : 2,
"lnn" : 2,
"location" : "Local",
"remote_key_id" : "",
"status" : "LOCAL"
},
{
"error_msg" : "",
"id" : 3,
"lnn" : 3,
"location" : "Local",
"remote_key_id" : "",
"status" : "LOCAL"
},
{
"error_msg" : "",
"id" : 4,
"lnn" : 4,
"location" : "Local",
"remote_key_id" : "",
"status" : "LOCAL"
}
],
"total" : 4
}
Request example
PUT platform/12/keymanager/sed/settings
Body:
{
"kmip_enabled" : "true"
}
Response example
Request example
POST platform/12/keymanager/sed/migrate
Body:
{
Response example
{
"migration_msg" : "Migration started. Please check status for progress."
}
Upgrading OneFS
Before upgrading the OneFS cluster, it is recommended to perform preupgrade checks to confirm that your OneFS cluster is
ready for an upgrade. These checks scan the current OneFS cluster and operating system for issues and compare the current
OneFS version with the new version to ensure that the cluster meets certain criteria, such as configuration compatibility (SMB,
LDAP, SmartPools), disk availability, and the absence of critical cluster events. Some preupgrade checks are optional, but it is
recommended to perform all preupgrade checks before upgrading.
If upgrading puts the cluster at risk, OneFS warns you, provides information about the risks, and prompts you to confirm
whether to continue the upgrade.
There are three options available for upgrading the OneFS cluster: parallel upgrades, rolling upgrades, or simultaneous upgrades.
For more information about how to plan, prepare, and perform an upgrade on your OneFS cluster, see the PowerScale OneFS
Upgrade Planning and Process Guide.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/pause?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/resume?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/upgrade?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/assess?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/commit?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/add_remaining_nodes?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/archive?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/nodes?describe
GET <cluster-ip:port>/platform/12/upgrade/
cluster/nodes/<lnn>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/nodes/<LNN>/firmware/status?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/nodes/<LNN>/patch/sync?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/firmware/progress?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/firmware/status?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/firmware/upgrade?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/retry_last_action?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/rolling-reboot?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/patch/patches?describe
GET <cluster-ip:port>/platform/12/upgrade/
cluster/patch/patches/<patch>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/patch/abort?describe
Retrieve the cluster-wide drain timeout and drain alert timeout PUT <cluster-ip:port>/platform/12/upgrade/
values. cluster/drain/timeout
Modify the cluster-wide drain timeout and drain alert timeout GET <cluster-ip:port>/platform/12/upgrade/
values. cluster/drain/timeout
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. cluster/drain?describe
NOTE: The default drain-timeout value is -1, which is specified for upgrade to start without waiting for all the SMB
clients to be disconnected.
NTP resources
List, modify, create, or delete Network Time Protocol (NTP) configuration information.
Hardware
You can update certain information about PowerScale hardware ports and tapes through the OneFS system configuration API.
Hardware resources
You can list, modify, or delete information about ports and tapes, and you can rescan tape devices.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. hardware/start?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/upgrade/
information about query parameters and object properties. hardware/status?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip>:<port>/platform/12/
information about query parameters and object properties. hardware/fcports?describe
GET <cluster-ip>:<port>/platform/12/
hardware/fcports/<PORT>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip>:<port>/platform/12/
information about query parameters and object properties. hardware/tapes?describe
GET <cluster-ip>:<port>/platform/12/
hardware/tapes/<NAME*>?describe
File pools
File pools are sets of files that you define to apply policy-based control of the storage characteristics of your data.
The initial installation of OneFS places all files in the cluster into a single file pool, which is subject to the default file pool policy.
SmartPools enables you to define additional file pools, and create policies that move files in these pools to specific node pools
and tiers.
File pool policies match specific file characteristics (such as file size, type, date of last access or a combination of these and
other factors). Then, it defines specific storage operations for files that match them. The following examples demonstrate a few
ways that you can configure file pool policies:
● You can create a file pool policy for a specific file extension that requires high availability.
● You can configure a file pool policy to store that type of data in a storage pool that provides the fastest reads or read/
writes.
● You can create another file pool policy to evaluate last accessed date. You can use this pool to store older files in storage
pool that is best suited for archiving for historical or regulatory purposes.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/filepool/
information about query parameters and object properties. default-policy?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/filepool/
information about query parameters and object properties. policies?describe
GET <cluster-ip:port>/platform/12/filepool/
policies/<POLICY-NAME>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/filepool/
information about query parameters and object properties. templates?describe
GET <cluster-ip:port>/platform/12/filepool/
templates/<TEMPLATE-NAME>?describe
Request example
POST /platform/12/filepool/policies
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{'file_matching_pattern':
{'or_criteria':
[
{'and_criteria':
[
{'operator': '==', 'type': 'path', 'value': '/ifs/data/vms'}
Response example
201 Created
Content-type: application/json
{
"id" : "mirror_vms"
}
Request example
In the following example, "vms_mirror" is the ID of the file pool policy.
PUT /platform/12/filepool/policies/vms_mirror
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"action_param":"false"
"action_type":"set_requested_protection"
}
Response example
No message body is returned for this request.
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
Request example
PUT /platform/12/filepool/policies/
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"action_param":"random"
"action_type":"set_data_access_pattern"
}
204 No Content
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. storagepool/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. storagepool/tiers?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. storagepool/nodepools?describe
GET <cluster-ip:port>/platform/12/
storagepool/nodepools/<POOL NAME or ID>?
describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. storagepool/storagepools?describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/storagepool/
suggested_protection/<NID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/
information about query parameters and object properties. platform/12/storagepool/compatibilities/ssd/
active?describe
GET <cluster-ip:port>/
platform/12/storagepool/compatibilities/ssd/
active/<COMPATIBILITY-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/
information about query parameters and object properties. platform/12/storagepool/compatibilities/ssd/
available?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. storagepool/compatibilities/class/available?
describe
View the detailed JSON schema for this resource, which has GET
information about query parameters and object properties. <cluster-ip:port>/platform/12/storagepool/
compatibilities/class/active?describe
GET
<cluster-ip:port>/platform/12/storagepool/
compatibilities/class/active/<ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. storagepool/status?describe
Request example
Specify at least one property in the request.
PUT /platform/12/storagepool/settings
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'global_namespace_acceleration_enabled': false,
'automatically_manage_protection': 'all'
}
Response example
No message body is returned for this request.
204 NO CONTENT
Content-type: text/plain,
Allow: 'GET, PUT, HEAD'
Create a tier
Create a tier on the system.
Request example
POST /platform/12/storagepool/tiers
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'name': 'myTier'
}
Response example
201 CREATED
Content-type: application/json,
Allow: 'GET, POST, HEAD, DELETE'
{
"id":"myTier"
}
Modify a tier
Modify a tier.
Request example
When you modify a set of nodes that belong to a tier, you should set the tier property on that node pool through the /
platform/12/storagepool/nodepools URI.
PUT /platform/12/storagepool/tiers/myTier
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
PUT /platform/12/storagepool/nodepools
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
"tier": myTier
}
Response example
No message body is returned for this request.
204 NO CONTENT
Content-type: application/json,
Allow: 'GET, POST, PUT, DELETE'
Request example
Specify a minimum of three LNNs. After these nodes are added to the newly created node pool and removed from their current
node pool, the number of nodes in the original node pool must either be 0 or greater than 2.
POST /platform/12/storagepool/nodepools
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'name': 'myPool',
'lnns': [2, 3, 1]
}
Response example
201 CREATED
Content-type: application/json,
Allow: 'GET, POST, HEAD, DELETE'
{
"id":"myPool"
}
Request example
Specify at least one property in the body. Also, you can only specify LNNs for manually managed node pools and you should
specify a minimum of three LNNs when modifying a manually managed node pool. If nodes are moved to a new node pool and
removed from their current node pool, the number of nodes in the original node pool must either be 0 or greater than 2.
PUT /platform/12/storagepool/nodepools/myPool
Authorization: Basic QWxhZGRpbjpvcGVuIHN1c2FtZQ==
{
'tier': 'myTier',
'name': 'myNewPoolName'
}
204 No Content
Content-type: application/json,
Allow: 'GET, POST, PUT, DELETE'
CloudPools
CloudPools extends the capabilities of OneFS by enabling you to specify data to be moved to lower-cost cloud storage.
CloudPools can seamlessly connect to Dell EMC EMC-based cloud storage systems and to popular third-party providers,
Amazon S3, Google, and Microsoft Azure.
CloudPools is a licensed module that is built on the SmartPools file pool policy framework, which gives you granular control
of file storage on your cluster. CloudPools extends this file storage control to one or more cloud repositories, which act as
additional tiers of OneFS storage.
Prior to the introduction of CloudPools, SmartPools enabled the grouping of nodes into storage pools that are called node
pools, and the classification of node pools as different storage tiers. SmartPools includes a policy framework that allows you to
segregate files into logical groups called file pools, and to store those file pools in specific storage tiers.
CloudPools expands the SmartPools framework by treating a cloud repository as an additional storage tier. This enables you to
move older or seldom-used data to cloud storage and free up space on your cluster.
As with SmartPools, you define files to be stored in the cloud by creating file pool policies. These policies use file matching
criteria to determine which file pools are to be moved to the cloud.
CloudPools resources
List, create, modify, or delete CloudPools information.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. pools?describe
GET <cluster-ip:port>/platform/12/cloud/
pools/<POOL>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. access?describe
GET <cluster-ip:port>/platform/12/cloud/
access/<GUID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. accounts?describe
GET <cluster-ip:port>/platform/12/cloud/
accounts/<ACCOUNT-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. certificates?describe
GET <cluster-ip:port>/platform/12/cloud/
certificates/<CERTIFICATE-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. jobs?describe
GET <cluster-ip:port>/platform/12/cloud/
jobs/<JOB-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. jobs-files/<JOB-ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. proxies?describe
GET <cluster-ip:port>/platform/12/cloud/
proxies/<PROXY-ID> ?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. settings/encryption_key?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/cloud/
information about query parameters and object properties. settings/reporting_eula?describe
The SmartQuotas module requires a separate license. For more information about the SmartQuotas module or to activate the
module, contact your Dell Technologies sales representative.
Quotas resources
You can retrieve, create, modify, or delete SmartQuotas configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/quota/
information about query parameters and object properties. license?describe
View the detailed JSON schema for this resource, which GET <cluster-ip:port>/platform/12/quota/quotas-
has information about query parameters and object summary?describe
properties.
Quotas resource
Create, modify, delete, or retrieve information about file system quotas.
GET /platform/quota/quotas
"quotas": [
"container": false,
"efficiency_ratio": 0.6644405405460209,
"enforced": false,
"id": "gAEDAAEAAAAAAAAAAAAAQAEAAAAAAAAA",
"linked": false,
"notifications": "default",
"path": "/ifs/test",
"persona": null,
"ready": true,
"reduction_ratio": 1.000002479553223,
"thresholds": {
"advisory": null,
"advisory_exceeded": false,
"advisory_last_exceeded": null,
"hard": null,
"hard_exceeded": false,
"hard_last_exceeded": null,
"percent_advisory": null,
"percent_soft": null,
"soft": null,
"soft_exceeded": false,
"soft_grace": null,
"soft_last_exceeded": null
},
"thresholds_on": "fslogicalsize",
"type": "directory",
"usage": {
"applogical": 10485760,
"applogical_ready": true,
"fslogical": 10485786,
"fslogical_ready": true,
"fsphysical": 15781376,
"fsphysical_ready": true,
"inodes": 2,
"inodes_ready": true,
"physical": 15781376,
"physical_data": 10485760,
"physical_data_ready": true,
"physical_protection": 5242880,
"physical_protection_ready": true,
"shadow_refs": 0,
"shadow_refs_ready": true
],
"resume": null
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/quota/reports?
which has information about query parameters and describe
object properties.
GET <cluster-ip:port>/platform/12/quota/reports/
<REPORT-ID>?describe
View the detailed JSON schema for this resource, GET <cluster-ip:port>/platform/12/quota/settings/
which has information about query parameters and mappings?describe
object properties.
GET <cluster-ip:port>/platform/12/quota/settings/
mappings/<DOMAIN>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/avscan/
information about query parameters and object properties. settings?describe
GET <cluster-ip:port>/platform/12/avscan/
settings/<ZONE>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/avscan/
information about query parameters and object properties. jobs?describe
GET <cluster-ip:port>/platform/12/avscan/
jobs/<JOB>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/avscan/
information about query parameters and object properties. nodes/<LNN>/status?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/avscan/
information about query parameters and object properties. servers?describe
GET <cluster-ip:port>/platform/12/avscan/
servers/<SERVER>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/avscan/
information about query parameters and object properties. settings?describe
ICAP anti-virus
You can scan the files that you store on a PowerScale cluster for system viruses and other security threats by integrating with
third-party scanning services through the Internet Content Adaptation Protocol (ICAP).
OneFS sends files through ICAP to a server running third-party anti-virus scanning software. These servers are seen as ICAP
servers. ICAP servers scan files for viruses.
NOTE: Anti-virus scanning is available only if all nodes in the cluster are connected to the external network.
Antivirus resources
Retrieve, create, modify, or delete antivirus configurations and settings.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/antivirus/
information about query parameters and object properties. policies?describe
GET <cluster-ip:port>/platform/12/antivirus/
policies/<policy-name>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/antivirus/
information about query parameters and object properties. quarantine/<path>?describe
Delete anti-virus scan reports, and any threat reports DELETE <cluster-ip:port>/platform/12/
associated with those scans. antivirus/reports/scans
Delete a specific anti-virus scan report, and any threat reports DELETE <cluster-ip:port>/platform/12/
associated with the scan. antivirus/reports/scans<ID>
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/antivirus/
information about query parameters and object properties. reports/scans?describe
GET <cluster-ip:port>/platform/12/antivirus/
reports/scans/<ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/antivirus/
information about query parameters and object properties. reports/threats?describe
GET <cluster-ip:port>/platform/12/antivirus/
reports/threats/<ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/antivirus/
information about query parameters and object properties. scan/?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/antivirus/
information about query parameters and object properties. servers?describe
GET <cluster-ip:port>/platform/12/antivirus/
servers/<ID>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/antivirus/
information about query parameters and object properties. settings?describe
Performance
This chapter documents the performance-related resource handlers for the OneFS system configuration API.
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. performance/settings?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. performance/datasets?describe
GET <cluster-ip:port>/platform/12/
performance/datasets/<DATASET>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/
information about query parameters and object properties. platform/12/performance/datasets/<DATASET>/
filters?describe
GET <cluster-ip:port>/
platform/12/performance/datasets/<DATASET>/
filters/<FILTER>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/
information about query parameters and object properties. platform/12/performance/datasets/<DATASET>/
workloads?describe
GET <cluster-ip:port>/
platform/12/performance/datasets/<DATASET>/
workloads/<WORKLOAD>?describe
View the detailed JSON schema for this resource, which has GET <cluster-ip:port>/platform/12/
information about query parameters and object properties. performance/metrics?describe
GET <cluster-ip:port>/platform/12/
performance/metrics/<METRIC>?describe
Topics:
• File system access API overview
• Troubleshooting
• File system access operations
• Code samples for file system access
Operation Description
Access points Identify and configure access points and obtain protocol
information.
Directory List directory content; get and set directory attributes; delete
directories from the file system.
File View, move, copy, and delete files from the file system.
Access control Manage user rights; set ACL or POSIX permissions for files
and directories.
Query Search and tag files
SmartLock Allow retention dates to be set on files; commit a file to a
WORM state.
Also, you can create an external client or application to access the OneFS API in any major language, such as C, C++, Python,
Java, or .net.
Content-length Provides the length of the body message in the response. Integer
Date Provides the date when the object store last responded. HTTP-date
Server Provides platform and version information about the server that responded String
to the request.
x-isi-ifs-target-type Provides the resource type. This value can be a container or an object. String
Date Specifies the current date according to the HTTP-date No. A client should only send a
requestor. Date header in a request that
includes an entity-body, such
as in PUT and POST requests.
A client without a clock must
not send a Date header in a
request.
x-isi-ifs-target-type Specifies the resource type. For PUT operations, String Yes, for PUT operations.
this value can be container or object. For
Conditional, for GET
GET operations, this value can be container,
operations.
object, or any, or this parameter can be
omitted.
blocks Specifies the number of blocks that compose the object. Integer
last_modified Specifies the time when the object data was last modified in HTTP date/time format. HTTP date
create_time Specifies the date when the object data was created in HTTP date/time format. HTTP date
access_time Specifies the date when the object was last accessed in HTTP date/time format. HTTP date
change_time Specifies the date when the object was last changed (including data and metadata String
changes) in HTTP date/time format.
type Specifies the object type, which can be one of the following values: container, object, String
pipe, character_device, block_device, symbolic_link, socket, or whiteout_file.
mtime_val Specifies the time when the object data was last modified in UNIX Epoch format. Integer
btime_val Specifies the time when the object data was created in UNIX Epoch format. Integer
atime_val Specifies the time when the object was last accessed in UNIX Epoch format. Integer
ctime_val Specifies the time when the object was last changed (including data and metadata Integer
changes) in UNIX Epoch format.
owner Specifies the user name for the owner of the object. String
group Specifies the group name for the owner of the object. String
id Specifies the object ID, which is also the INODE number. Integer
Troubleshooting
You can troubleshoot failed requests to the namespace by resolving common errors and viewing activity logs.
{
"errors":[
{
"code":"<Error code>",
"message":"<some detailed error msg>"
}
]
}
The following table shows the descriptions for common error codes.
Activity Logs
Activity logs capture server and object activity, and can help identify problems. The following table shows the location of
different types of activity logs.
Steps
1. Create a user account by running the following command, where user1 is the new user account name:
2. Grant users read-privilege to a OneFS access point through by applying the PUT method to the URI.
In the following example, user1 is granted access to the ifs-ap1 access point by modifying the ACL read-privilege on the
access point.
Request syntax
{
"path" : "<absolute_filesystem_path>"
}
NOTE:
The path to the namespace access point must begin at /ifs, which is the root directory of the OneFS file system.
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
Example request
The following request creates an access point named 'accesspoint1' on the namespace.
{
"path": "/ifs/home/"
}
Example response
HTTP/1.1 200 OK
Date: Fri, 15 Mar 2013 21:51:50 GMT
Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8x mod_webkit2/1.0
mod_fastcgi/2.4.6
Allow: DELETE, GET, HEAD, POST, PUT
x-isi-ifs-spec-version: 1.0
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=15, max=335
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/plain
Request syntax
Request headers
This call sends common request headers.
Response header
This call returns common response headers.
Response body
An array of namespace access points is output in JSON. Only the access points that the user has privileges for are returned.
Example request
This example retrieves a list of all access points for the namespace on this cluster by the root user.
Example response
HTTP/1.1 200 OK
Allow: GET, HEAD
Connection: Keep-Alive
Content-Type: application/json
Date: Mon, 25 Mar 2013 20:31:33 GMT
Keep-Alive: timeout=15, max=499
Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8x mod_webkit2/1.0
mod_fastcgi/2.4.6
Transfer-Encoding: chunked
x-isi-ifs-spec-version: 1.0
{
"namespaces": [
{
"name": "user1",
"path": "/ifs/home/user1"
},
{
"name": "ifs",
"path": "/ifs/"
}
]
}
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
The access control list for the namespace access point is returned for the GET operation.
No message body is returned upon success for the PUT operation.
Example request 1
In this example, the GET operation retrieves the access control list from the namespace.
HTTP/1.1 200 OK
Date: Mon, 25 Mar 2013 18:42:16 GMT
x-isi-ifs-spec-version: 1.0
Transfer-Encoding: chunked
Content-Type: application/json
{
"acl":[
{
"accessrights":[
"file_read"
],
"accesstype":"allow",
"inherit_flags":[
],
"trustee":{
"id":"UID:2000",
"name":"user1",
"type":"user"
}
}
],
"authoritative":"acl",
"group":{
"id":"GID:0",
"name":"wheel",
"type":"group"
},
"mode":"0060",
"owner":{
"id":"UID:0",
"name":"root",
"type":"user"
}
}
Example request 2
In this example, the request sets an access control list for the access point.
{
"authoritative":"acl",
"acl":[
{
"trustee":{
"name":"user1",
"type":"user"
},
"accesstype":"allow",
"accessrights":[
"file_read"
],
"op":"add"
}
]
}
HTTP/1.1 200 OK
Date: Mon, 25 Mar 2013 17:24:55 GMT
Transfer-Encoding: chunked
Content-Type: text/plain
x-isi-ifs-spec-version: 1.0
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
An array of version strings that are supported by the current namespace API server is output in JSON.
Example request
This example retrieves a list of all versions that are supported for the namespace access server.
Example response
This example shows that the namespace access server supports only version 1.0.
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
{"versions": ["1.0"]}
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
Example request
This example shows the delete operation for an access point that is named 'user1.'
Example response
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
Create a directory
Creates a directory with a specified path.
Request syntax
PUT /namespace/<access_point>/<container_path>[?recursive=<boolean>][?
overwrite=<boolean>] HTTP/1.1
Host <hostname>[:<port>]
Content-Length: <length>
Date: <date>
Authorization: <signature>
x-isi-ifs-target-type: container
Request headers
Response headers
This call returns common response headers.
Example request
This request creates a directory on the namespace named 'folder1/folder2'.
Example response
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
Request syntax
Request headers
Response body
No message body is returned upon success.
Example request
Example response
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
Connection: close
Server: Apache2/2.2.19
Last-Modified: Wed, 21 Sep 2011 12:00:00 GMT
x-isi-ifs-access-control: 0600
x-isi-ifs-attr-color: red
x-isi-ifs-missing-attr: 1
x-isi-ifs-spec-version: 1.0
x-isi-ifs-target-type: container
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/xml; charset=UTF-8
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
The object attribute information is returned in JSON format.
{
"attrs":[
{
"name":"<key_name>",
"value":"<key_value>",
"namespace":"<namespace_value>"
},
...
]
}
NOTE:
The namespace parameter is optional. When this parameter is missing, the attribute is considered to be a system defined
attribute. When <namespace_value> is set to user, the attribute is considered a user-defined attribute.
Example request
Example response
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
Content-Length: <Length>
Content-Type: application/JSON
Connection: close
Server: Apache2/2.2.19
{
"attrs":[
{
"name":"is_hidden",
Request syntax
NOTE:
The query argument is optional and can include the parameters in the following table.
isi_gconfig -t oapi
max_sort_dir_sz=<integer>
Request headers
Response headers
Response body
An array of objects in the directory is output in JSON format.
Example request
The following request returns the contents of a directory named 'folder1/folder2'.
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
Content-Type: application/JSON
Connection: close
Server: Apache2/2.2.19
{
"children":[
{
"name":"cover"
},
{
"name":"f2"
},
{
"name":"cover.txt"
},
{
"name":"cover8"
}
]
}
Request example 2
This request returns object details for the directory named 'folder1/folder2'.
Response example 2
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
Content-Type: application/JSON
Connection: close
{
"resume":"<the_resume_token>",
"children":[
{
"last_modified":"Fri, 18 Nov 2011 22:45:31 GMT",
"name":"cover",
"size":24,
"type":"object",
},
{
"last_modified":"Fri, 18 Nov 2011 20:01:04 GMT",
"name":"f2",
"size":4,
"type":"object",
},
{
"last_modified":"Fri, 18 Nov 2011 22:45:40 GMT",
"name":"finance",
"size":0,
"type":"container",
Copy a directory
Recursively copies a directory to a specified destination path. Symbolic links are copied as regular files.
Request syntax
Request headers
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
For this operation, the HTTP status code 200 OK does not always indicate a complete success. If the response body contains a
JSON message, the operation has partially failed, and the error message is reported in a structured JSON array.
If the server fails to initiate a copy due to an error (such as an invalid copy source), an error is returned. If the server initiates
the copy, and then fails, "copy_errors" are returned in structured JSON format.
Because the copy operation is synchronous, the client cannot stop an ongoing copy or check the status of a copy
asynchronously.
Example response 1
HTTP/1.1 200 Ok
Date: Thu, 22 Sep 2011 12:00:00 GMT
Server: Apache2/2.2.19
Content-Encoding: gzip
x-isi-ifs-spec-version: 1.0
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/plain
Example request 2
In this example, the directory 'src1' contains files {f1, f2, f3, f4} and the directory 'dest1' exists and contains files {f1, f2}.
Example response 2
HTTP/1.1 200 OK
Date: Thu, 22 Sep 2011 12:00:00 GMT
Server: Apache2/2.2.19
x-isi-ifs-spec-version: 1.0
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json
{
"copy_errors":[
{
"source":"/ap1/src1/f1",
"target":"/ap1/dest1/f1",
"error_src":"target side",
"message":"target exists(not copied)",
},
{
"source":"/ap1/src1/f2",
"target":"/ap1/dest1/f2",
"error_src":"target side",
"message":"target exists(not copied)"
}
],
Request syntax
Request headers
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
Example request
Example response
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
Example request
Example response
Request syntax
{
"action":"<action_value>",
"attrs":[
{
"name":"<key_name>",
"value":"<key_value>",
"namespace":"<namespace_value>",
"op":"<operation_value>"
},
...
]
}
NOTE:
You can omit attribute values or enter "" for the value.
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
Example request
{
"action":"replace",
"attrs":[
{
"name":"Manufacture",
"value":"Foo",
"namespace":"user"
}
]
}
Example response
HTTP/1.1 200 OK
Date: Wed, 20 Mar 2013 17:19:15 GMT
Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8x mod_webkit2/1.0
mod_fastcgi/2.4.6
Allow: DELETE, GET, HEAD, POST, PUT
x-isi-ifs-spec-version: 1.0
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=15, max=500
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/plain
Request syntax
[Message Body]
Request headers
x-isi-ifs-access- Specifies a predefined ACL value or POSIX mode 0600 (read, write String No
control with a string in octal string format. with owner
permissions).
x-isi-ifs-attr- Specifies the extended attributes that were set None String No
<attr_name> in the message header. The attributes names
are stored in upper case, and all dashes (-) are
converted to underscores (_).
Response body
No message body is returned upon success.
Example request
Example response
Request syntax
Request headers
If-Modified-Since Returns only files that were modified since the None HTTP date No
specified time. If no files were modified since this
time, a 304 message is returned.
If-Unmodified- Returns only files that were not modified since None HTTP date No
Since the specified time. If there are no unmodified
files since this time, a 412 message is returned
to indicate that the precondition failed.
Response headers
Response body
No message body is returned upon success.
Example request
Example response
HTTP/1.1 200 OK
Date: Thu Sep 22 16:06:32 GMT 2011
Content-Length: 54380
Content-Type: image/jpeg
Connection: close
Server: Apache2/2.2.19
Request syntax
Request headers
Response headers
This call returns common response headers.
Response body
No message body is returned upon success. For this operation, the HTTP status code 200 OK may not indicate a complete
success.
If the response body contains a JSON message, the operation has partially failed. If the server fails to initiate a copy due to
an error (such as an invalid copy source), an error is returned. If the server initiates the copy, and then fails, "copy_errors"
are returned in structured JSON format. Because the copy operation is synchronous, the client cannot stop an ongoing copy
operation or check the status of a copy operation asynchronously.
Example request 1
This example shows a successful copy.
HTTP/1.1 200 Ok
Date: Thu, 22 Sep 2011 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
Example request 2
This example shows a failed copy, where the file is not overwritten.
Example response 2
HTTP/1.1 200 OK
Date: Wed, 20 Mar 2013 21:33:55 GMT
Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8x mod_webkit2/1.0
mod_fastcgi/2.4.6
Allow: DELETE, GET, HEAD, POST, PUT
x-isi-ifs-spec-version: 1.0
Keep-Alive: timeout=15, max=500
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json
{
"copy_errors":[
{
"error_src":"target side",
"message":"target exists(not copied)",
"source":"/accesspoint1/directory1/file2",
"target":"/accesspoint1/directory1/file2_copy"
}
],
"success":false
}
Move a file
Moves a file to a destination path that does not yet exist.
Request syntax
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
Example request
Example response
Delete a file
Deletes the specified file.
Request syntax
Request headers
This call sends common request headers.
Response body
No message body is returned upon success.
Example request
Example response
Clone a file
Clone a file to the destination path. If the parameter is set as a snapshot name, the file is cloned from that snapshot.
Request syntax
Response headers
This call returns common response headers.
Response body
No response body is returned upon success.
Example request
Example response
HTTP/1.1 200 OK
Date: Thu, 21 Mar 2013 14:33:29 GMT
Content-Length: 0
Connection: close
Request syntax
{
"action":"<action_value>",
"attrs":[
{
"name":"<key_name>",
"value":"<key_value>",
"namespace":"<namespace_value>",
"op":"<operation_value>"
},
...
NOTE:
You can modify only the <content_type> and user specified attributes. All other system attributes are ignored.
namespace Specifies the value for the namespace that user String No
the attribute associates with a directory. This
parameter must be set to user if the attributes
are specified by users.
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
No response body is returned upon success.
{
"action":"replace",
"attrs":[
{
"name":"Manufacture",
"value":"Foo",
"namespace":"user"
},
{
"name":"user.Material",
"value":"Steel",
"namespace":"user"
}
]
}
Example response
HTTP/1.1 200 OK
Date: Thu, 21 Mar 2013 14:33:29 GMT
Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8x mod_webkit2/1.0
mod_fastcgi/2.4.6
Allow: DELETE, GET, HEAD, POST, PUT
x-isi-ifs-spec-version: 1.0
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=15, max=500
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/plain
Request syntax
Response headers
Response body
No message body is returned upon success.
Example request
Example response
HTTP/1.1 200 OK
Date: Thu Sep 22 16:06:32 GMT 2011
Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8x mod_webkit2/1.0
mod_fastcgi/2.4.6
Allow: DELETE, GET, HEAD, POST, PUT
Last-Modified: Wed, 20 Mar 2013 18:16:17 GMT
x-isi-ifs-access-control: 0600
x-isi-ifs-attr-color: red
x-isi-ifs-missing-attr: 1
x-isi-ifs-spec-version: 1.0
x-isi-ifs-target-type: object
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
The object attribute information is returned in JSON format.
{
"attrs":[
{
"name":"<key_name>",
"value":"<key_value>",
"namespace":"<namespace_value>"
},
...
]
}
}
NOTE:
The namespace parameter is optional. When this parameter is missing, the attribute is considered to be a system defined
attribute. When the <namespace_value> field is set to user, the attribute is considered a user-defined attribute.
Example request
Example response
HTTP/1.1 200 Ok
Date: Thu, 21 Mar 2013 19:58:11 GMT
Server: Apache/2.2.21 (FreeBSD) mod_ssl/2.2.21 OpenSSL/0.9.8x mod_webkit2/1.0
mod_fastcgi/2.4.6
Allow: DELETE, GET, HEAD, POST, PUT
x-isi-ifs-spec-version: 1.0
Keep-Alive: timeout=15, max=436
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/json
{
"attrs": [
{
"name": "content_type",
"value": "text/xml; charset=UTF-8"
},
{
"name": "is_hidden",
"value": false
},
{
"name": "size",
"value": 27
},
{
"name": "block_size",
"value": 8192
},
{
"name": "blocks",
"value": 52
},
{
"name": "last_modified",
"value": "Wed, 20 Mar 2013 18:16:17 GMT"
},
{
"name": "change_time",
"value": "Wed, 20 Mar 2013 18:16:17 GMT"
},
{
"name": "access_time",
"value": "Wed, 20 Mar 2013 18:16:17 GMT"
},
{
"name": "create_time",
"value": "Wed, 20 Mar 2013 18:16:17 GMT"
},
{
"name": "mtime_val",
"value": 1363803377
},
{
"name": "ctime_val",
"value": 1363803377
},
{
"name": "atime_val",
"value": 1363803377
},
{
"name": "btime_val",
"value": 1363803377
},
{
"id":"<ID>",
"name":"<name>",
"type":"<type>"
}
For PUT operations, you can specify either the ID or both the name and type. The ID value takes precedence when all fields are
available.
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
{
"owner":{
"id":"<owner id>",
"name":"<owner name>",
"type":"<type>"
},
"group":{
"id":"<group id>",
"name":"<group name>",
"type":"<type>"
},
"authoritative":"acl"|"mode",
"mode":"<POSIX mode>",
"acl":[
{
"trustee":{
"id":"<trustee id>",
"name":"<trustee name>",
"type":"<trustee type>"
},
"accesstype":"allow" | "deny",
"accessrights":"<accessrights_list>",
"inherit_flags":"<inherit_flags_list>"
}
]
}
access rights Provides the list of access rights that are defined for the directory.
inherit_flags Provides the inherit flags set for the directory.
Example request
Example response
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
{
"owner":{
"id":"UID:0",
"name":"root",
"type":"user"
},
"group":{
"id":"GID:0",
"name":"wheel",
"type":"group"
},
"authoritative":"acl",
"mode":"0722",
"acl":[
{
"trustee":{
"id":"UID:2001",
"name":"foo1",
"type":"user"
},
"accesstype":"allow",
"accessrights":[
"dir_gen_read",
"dir_gen_write"
],
"inherit_flags":[
"container_inherit"
]
},
{
"trustee":{
"id":"GID:23",
"name":"group1",
"type":"group"
},
"accesstype":"allow",
"accessrights":[
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
{
"owner":{
"id":"<owner id>",
"name":"<owner name>",
"type":"<type>"
},
"group":{
"id":"<group id>",
"name":"<group name>",
"type":"<type>"
},
"authoritative":"acl"|"mode",
"mode":"<POSIX mode>",
"acl":[
{
"trustee":{
"id":"<trustee id>",
"name":"<trustee name>",
"type":"<trustee type>"
access rights Provides the list of access rights that are defined for the file.
inherit_flags Provides the inherit flags set for the file.
Example request
Example response
HTTP/1.1 200 OK
Date: Thu, 12 Jan 2011 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
{
"owner":{
"id":"UID:0",
"name":"root",
"type":"user"
},
"group":{
"id":"GID:0",
"name":"wheel",
"type":"group"
},
"authoritative":"acl",
"mode":"0022",
"acl":[
{
"trustee":{
"id":"UID:2000",
"name":"foo2",
Request syntax
NOTE:
The attribute x-isi-ifs-access-control can be set to a predefined ACL value or to a POSIX mode in octal string. If this header
is not specified, the directory mode is set to 0700 by default when the directory is created.
public_read_write The directory owner has the following rights: list Directory owner: "access rights":
entries, read attributes, read extended attributes, ["dir_gen_all"],"inherit_flags":[]
read access control list, create files, create
All users: "access rights":
subdirectories, write attributes, write extended
["dir_gen_read","dir_gen_write","dir_gen_execu
attributes, access files in subdirectories, delete
te"],"inherit_flags":[]
children (including read-only files), change owner,
write the access control list, and delete current
directory.
All users have the following rights: list entries,
read attributes, read extended attributes,
read access control lists, create files, create
subdirectories, write attributes, write extended
attributes, and access files in subdirectories.
public All users have the following rights: list entries, All users: "access rights":
read attributes, read extended attributes, ["dir_gen_all"],"inherit_flags":[]
read access control list, create files, create
subdirectories, write attributes, write extended
attributes, access files in subdirectories, delete
children (including read-only files), change owner,
write access control list, and delete current
directory.
The POSIX mode is an absolute mode that is constructed from the sum of one or more octal numbers that are listed in the
following table.
Octal Description
number
4000 The set-user-ID-on-execution bit. Executable files with this bit have their UID set to the UID of the file owner.
2000 The set-group-ID-on-execution bit. Executable files with this bit have their GID set to the GID of the file owner.
1000 The sticky bit.
0400 Allows read by owner.
0200 Allows write by owner.
0100 For files, allows execution by owner. For directories, allows directory queries by owner.
0040 Allows read by group members.
0020 Allows write by group members.
0010 For files, allows execution by group members. For directories, allows directory queries by group members.
0004 Allows read by others.
0002 Allows write by others.
0001 For files, allows execution by others. For directories, allows directory queries by others.
Response headers
This call returns common response headers.
Response body
There is no message body for this response.
Example request
Example response
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
Request syntax
NOTE:
The attribute x-isi-ifs-access-control can be set to a predefined ACL value or to POSIX mode with octal string. By default,
the mode for the file is set to 0600.
public_read_write The file owner has the following rights: read file, File owner: "accessrights":
read attributes, read extended attributes, read ["file_gen_all"],"inherit_flags":[]
access control list, write to the file, append to
All users: "accessrights":
the file, write file attributes, write extended file
["file_gen_read","file_gen_write","file_gen_ex
attributes, run file, write/modify the access control
ecute"],"inherit_flags":[]
list, change owner, and delete current file.
All users have the following rights: read files, read
attributes, read extended attributes, read access
control lists, write to the file, append to the file,
write file attributes, write extended file attributes,
and run files.
public All users have the following rights: read file, read All users: "accessrights":
attributes, read extended attributes, read access ["file_gen_all"],"inherit_flags":[]
control list, write to the file, append to the file,
write file attributes, write extended file attributes,
run file, write/modify the access control list,
change owner, and delete current file.
The POSIX mode is an absolute mode, which consists of an octal number that is constructed from the sum of one or more octal
numbers that are listed in the following table.
Octal Description
number
4000 The set-user-ID-on-execution bit. Executable files with this bit have their uid set to the uid of the file owner.
2000 The set-group-ID-on-execution bit. Executable files with this bit have their gd set to the gid of the file owner.
1000 The sticky bit.
0400 Allows read by owner.
0200 Allows write by owner.
0100 For files, allows execution by owner. For directories, allows directory queries by owner.
0040 Allows read by group members.
0020 Allows write by group members.
0010 For files, allows execution by group members. For directories, allows directory queries by group member.
0004 Allows read by others.
0002 Allows write by others.
0001 For files, allows execution by others. For directories, allows directory queries by others.
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
There is no message body for this response.
Example request
Example response
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
Request syntax
{
"owner":{
"id":"<owner id>",
"name":"<owner name>",
"type":"<type>"
},
"group":{
"id":"<group id>",
"name":"<group name>",
"type":"<type>"
},
"authoritative":"acl"|"mode",
"mode":"<POSIX mode>",
acl Specifies the JSON array of access rights. N/A JSON object Conditional.
Mandatory when
the
<action_value>
field is set to
update; optional
when the
<action_value>
is set to
replace
accesstype Can be set to allow or deny. N/A String Yes, unless the
<action_value>
allow: Allows access to the directory based on
field is set to
the access rights set for the trustee. replace and
deny: Denies access to the directory based on the acl
the access rights set for the trustee. structure is
empty.
inherit_flags Specifies the inherit flag values for directories. N/A List of string Conditional
values
op The <operation_value> field is applied when the add, when String No
<action_value> field is set to update. You <action_value>
can set the <operation_value> field to add, is set to
replace, or delete. If no <operation_value> update.
field is specified, the default value is add.
add: Creates an access control entry (ACE) if
an ACE is not already present for a trustee and
trustee access type. If an entry is already present
for that trustee and trustee access type, this
operation appends the access rights list to the
current ACE for that trustee and trustee access
type.
delete: Removes the access rights list provided
from the existing ACE for a trustee and trustee
access type. If the input access rights list is
empty , the entire ACE that corresponds to the
trustee and trustee access type is deleted.
replace: Replaces the entire ACE for the
trustee and trustee access type with the input
access rights list.
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Example request 1
This sample sets the ACL of a directory.
{
"authoritative":"acl",
"action":"update",
"acl":[
{
"trustee":{
"id":"UID:1001",
"name":"user23",
"type":"user"
},
"accesstype":"allow",
"accessrights":[
"std_write_dac"
],
"inherit_flags":[
"object_inherit",
"inherit_only"
],
"op":"add"
},
{
"trustee":{
"id":"GID:1210",
"name":"group12",
"type":"group"
},
"accesstype":"allow",
"accessrights":[],
"op":"delete"
}
]
}
Example response 1
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
Example request 2
This sample replaces the existing ACL of the directory with the access control entries that are specified in the acl structure. If
the acl structure is empty, the existing ACL is replaced with default system values. The directory owner has default read and
write access to the access control list.
{
"owner":{
"id":"UID:2001",
"name":"foo1",
"type":"user"
},
"group":{
"id":"GID:0",
"name":"wheel",
"type":"group"
},
"authoritative":"acl",
"action":"replace",
"acl":[]
}
Example response 2
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
Request syntax
{
"owner":{
"id":"<owner id>",
"name":"<owner name>",
"type":"<type>"
},
"group":{
"id":"<group id>",
"name":"<group name>",
"type":"<type>"
},
"authoritative":"acl"|"mode",
"mode":"<POSIX mode>",
"action":"<action_value>",
"acl":[
{
"trustee":{
"id":"<trustee id>",
"name":"<trustee name>",
"type":"<trustee type>"
},
"accesstype":"allow"|"deny",
"accessrights":"<accessrights_list>",
acl Specifies the JSON array of access rights. N/A JSON object Conditional
Mandatory when
the
<action_value>
field is set to
update and
optional when
the
<action_value>
field is set to
replace.
accesstype Can be set to allow or deny. N/A String Yes, unless the
<action_value>
allow: Allows access to the file based on the
field is set to
access rights set for the trustee. replace and
deny: Denies access to the file based on the the acl
access rights set for the trustee. structure is
empty.
accessrights Specifies the access right values that are defined N/A List of string Conditional
for the file. values
Mandatory when
the
<action_value>
field is set to
update and the
<operation_value
>field is set to
either add or
replace, and
when the
<inherit_flags_lis
t> field is
unspecified.
Optional when
the
<action_value>
field is set to
update and the
<operation_value
> is set to
delete.
inherit_flags Specifies the inherit flag values for the file. N/A List of string Conditional
values
Either the
<accessrights_lis
t> or
<inherit_flags_lis
t> must be
specified when
the
<action_value>
field is set to
update and the
<operation_value
> field is set to
add or
replace.
op The <operation_value> field is applied when the add, when the String No
<action_value> field is set to update. You <action_value>
can set the <operation_value> field to add, field is set to
replace, or delete. If no <operation_value> update
field is specified, the default value is add.
add: Creates an access control entry (ACE) if
an ACE is not already present for a trustee and
trustee access type. If an entry is already present
for that trustee and trustee access type, this
operation appends the access rights list to the
current ACE for that trustee and trustee access
type.
delete: Removes the access rights list provided
from the existing ACE for a trustee and trustee
access type. If the input access rights list is
empty , the entire ACE that corresponds to the
trustee and trustee access type is deleted.
replace: Replaces the entire ACE for the
trustee and trustee access type with the input
access rights list.
Request headers
This call sends common request headers.
Response body
No message body is returned upon success.
Example request
This sample sets the ACL of a file named 'file1'.
{
"owner":{
"id":"UID:0",
"name":"root",
"type":"user"
},
"group":{
"id":"GID:0",
"name”:"wheel",
"type":"group"
},
"authoritative":"acl",
"action":"update",
"acl": [
{
"trustee":{
"id":"UID:0",
"name":"root",
"type":"user"
},
"accesstype":"allow",
"accessrights":[
"file_read",
"file_write"
],
"op":"add"
},
{
"trustee":{
"id":"GID:1201",
"name":"group12",
"type":"group"
},
"accesstype":"allow",
"accessrights":"std_write_dac"
],
"op":"replace"
}
]
}
Example response
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Query operations
You can search for files and directories on the namespace that matches certain criteria. Files are searched for through a
namespace traverse and a filtering mechanism.
Query an object
Query objects by system-defined and user-defined attributes in a directory.
Request syntax
[JSON BODY]
detail=size,container,content_typ
e
Request headers
This call sends common request headers.
Response body
An array of the objects that match the query filter criteria are returned in the JSON body.
Example request
{
"result":[
"name",
"size",
"last_modified",
"container_path",
"user.color",
"content_type"
],
"scope":{
"logic":"and",
"conditions":[
{
"operator":">=",
"attr":"last_modified",
"value":"Thu, 15 Dec 2011 06:41:04"
},
{
"operator":"like",
"attr":"name",
"value":"ta.*"
}
]
}
}
Example response
{
"children" :
[
{
"content_type " : "text/plain; charset=UTF-8",
"container_path" : "/ifs/movie",
"last_modified" : "Thu, 05 Jan 2012 04:29:56 GMT",
"name" : "fantasy",
"size" : 56
},
{
"content_type " : "text/plain; charset=UTF-8",
"container_path" : "/ifs/folder",
"last_modified" : "Thu, 15 Dec 2011 06:41:04 GMT",
"name" : "tar",
"size" : 3359,
"user.color" : "green"
}
]
}
query = <scope_query> |
{
"result":<attribute_list>,
"scope":<scope_query>
}scope_query = predicate |{
"logic":"<logic_operator>",
"conditions":[
<condition>
]
}
The attribute_list is an array of attribute names, which include system attributes and user-defined attributes. For example:
logic_operator = and|or|not
The conditions parameter includes an array of conditions. Each condition is defined as follows:
condition = scope_query|predicate
predicate =
{
"operator":"<comparison_operator>",
"attr":"attr_name",
"value":"attr_value" | string_array
}
The <comparison_operator> value can be any of the following operators: =, !=, <, <=, >, >=, like, or in.
The arithmetic comparison operators are self-explanatory. The "like" operator matches the specified attribute with a pattern of
regular expressions. For example, the following JSON query returns all objects with the attribute "Model" prefixed with "T75":
{
"operator":"like",
"attr":"user.Model",
"value":"^T75.*"
}
If the operator is set to "in", the value must be an array of strings, with at least one element in the array. When only one element
is in the array, the "in" operator behaves the same way as the "=" operator. For example, the following query returns objects
with the attribute "color" set to either "blue", "green", or "turquoise":
{
"operator":"in",
"attr":"user.color",
"value":[
"blue",
"green",
"turquoise"
]
}
If the attribute is the user-defined attribute, the attribute must be prefixed with "user." to differentiate the attribute from a
system attribute with the same name. For example, if there is a user-defined attribute that is called "name", you should write the
attribute as "user.name."
Multiple query predicates can be combined through logical operators. For example, the following query returns objects that
satisfy one of the following conditions: "Model" is prefixed with T75 or the "color" attribute is either "red," "green," or
"turquoise," or the "manufacture" attribute is ACME.
{
"logic":"or",
"conditions":[
{
"operator":"like",
"attr":"user.Model",
"value":"^T75.*"
},
{
"operator":"in",
"attr":"user.color",
"value":[
"red",
"green",
"turquoise"
]
},
{
"operator":"=",
"attr":"user.manufacture",
"value":"ACME"
}
]
}
Instead of basic predicates, the element of the conditions array can be a subquery, which allows more complex queries. For
example, the following query returns objects in which either the attribute "manufacture" is set to "ACME" or the "model"
attribute is set to "T750," and the "color" attribute is set to "black."
{
"logic":"or",
"conditions":[
{
"operator":"=",
"attr":"user.manufacture",
"value":"ACME"
},
{
"logic":"and",
"conditions":[
{
"operator":"=",
"attr":"user.model",
"value":"T750"
},
{
"operator":"=",
"attr":"user.color",
"value":"black"
}
]
}
SmartLock settings
Only root users can configure SmartLock Write Once Read Many (WORM) retention dates and commit flag settings for a file in
a SmartLock directory. A SmartLock license must be active on the cluster to configure these settings.
Request syntax
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
{
"worm_committed":<boolean>,
"worm_override_retention_date":<"YYYY-MM-DD hh:mm:ss GMT">|null,
"worm_override_retention_date_val":<seconds from the Epoch>|null,
"worm_retention_date":<"YYYY-MM-DD hh:mm:ss GMT">|null,
"worm_retention_date_val":<seconds from the Epoch>|null
}
worm_override_retention_date_val Provides the override retention date that is set on the SmartLock directory
where the file resides. If the date is not set or if the date is set to earlier than
or equal to the file retention date, this field has a null value. Otherwise, the
date is expressed in seconds from UNIX Epoch and UTC, and is the retention
expiration date set for the file if the worm_committed parameter is set to
true. This parameter is the same as worm_override_retention_date, but
is expressed in seconds from the Epoch or UTC.
Example request
Example response
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: <length>
Connection: close
Server: Apache2/2.2.19
{
"worm_committed":true,
"worm_retention_date":"2013-01-22 15:11:36 GMT",
"worm_override_retention_date":null,
"worm_retention_date_val":1358885496,
"worm_override_retention_date_val":null
}
Request syntax
{
"worm_retention_date":<"YYYY-MM-DD hh:mm:ss GMT">,
"commit_to_worm":<Boolean>
}
NOTE:
If a file is not explicitly committed and an autocommit time period is configured for the SmartLock directory where the file
resides, the file is automatically committed when the autocommit period elapses.
For details about SmartLock WORM behavior, see the OneFS Administration Guide.
Request headers
This call sends common request headers.
Response headers
This call returns common response headers.
Response body
No message body is returned upon success.
Example request
Set the retention date for a file in a SmartLock directory.
{
"worm_retention_date":"2013-04-11 12:00:00 GMT",
"commit_to_worm":true
}
HTTP/1.1 200 OK
Date: Tue, 22 May 2012 12:00:00 GMT
Content-Length: 0
Connection: close
Server: Apache2/2.2.19