-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
this is a test #1
Comments
Storage TieringThe storage tiering rule base provides iRODS the capability of automatically moving data between identified tiers of storage. Each storage resource is tagged as part of a group with an indicator as to where in the group the resource resides. Each resource is also tagged with a value which describes the maximum time a data object may reside on that resource. Should a data object's last time of access exceed this given value it will be migrated to the next resource in the tier. This package also includes a rule base feature which tags objects with their last time of access for this computation. Rulebase ConfigurationAdd the four included rule bases above "core" in the re_rule_base_set array of the native iRODS rule language plugin:
Creating a Tier GroupTier groups are defined via metadata attached to the resources which participate in the group. In iRODS terminology the attribute is defined by a function in the rule base storage_tiering_configuration.re, which by default is irods::storage_tier_group. The value of the metadata triple is the name of the tier group, and the Unit holds the numeric position of the resource within the group. To define a tier group simply choose a name and apply metadata to the selected root resources of given compositions. For example:
Setting Tiering PolicyOnce a tier group is defined, the age limit for each tier must also be configured via metadata. Once a data object has remained unaccessed on a given tier for more than the configured time, it will be staged to the next tier in the group and then trimmed from the previous tier. This is configured via the default attribute irods::storage_tier_time, which is also defined in the storage_tiering_configuration.re rulebase. In order to configure the tiering time, apply a tag to the resource using the given attribute and a positive numeric value in seconds. For example, to configure the fast_resc to only hold data for 30 minutes:
We can then configure the _medium_resc to hold data for 8 hours:
Customizing the Violating Objects QueryA tier within a tier group may identify data objects which are in violation by an additional mechanism beyond the built in time based constraint. This allows the data grid administrator to take additional context into account when identifying data objects to migrate. Data objects given a metadata attribute, a specific collection, a particular user or a project may be identified through a custom query attached to the root resource of a given tier within a group. The default attribute irods::storage_tier_query is used to hold the query. To configure the custom query, attach the query to the root resource of the tier within the tier group. This query will be used in place of the default.
This example implements the default query. Note that the string TIME_CHECK_STRING is used in place of an actual time. This string will be replaced by the storage tiering framework with the appropriately computed time given the previous parameters. |
SC17 Workshop Demo Configuration Add to /etc/irods/server_config.json
Create resources and annotate
Teardown
|
iRODS C++ REST Mid-Tier APIBuilding this repositoryThis is a standard CMake project which may be built with either Ninja or Make. This code base is built with the iRODS toolchain, which uses Clang. Since this project depends on Pistache, we also need to build Pistache with Clang in order to link against that project. First clone the iRODS externals repository.
Install the latest iRODS CMake and Clang packages
Then within the externals repository, build Pistache with
Then install Pistache with
You will then need to install iRODS packages
Once this is done you can create a build directory for the REST API and run CMake, then run
to build the REST API package. Configuring the serviceThe REST API provides an executable for each individual API endpoint. These endpoints may be grouped behind a reverse proxy in order to provide a single port for access. The services rely on a configuration file in
Once the REST API is running install nginx and then copy Interacting with the API endpointsThe design of this API using JWTs to contain authorization and identity. The Auth endpoint must be invoked first in order to authenticate and receive a JWT. This token will then need to be included in the Authorization header of each subsequent request. /AccessThis endpoint provides a service for the generation of an iRODS ticket to a given logical path, be that a collection or a data object. Method : POST Parameters:
Example CURL Command:
Returns An iRODS ticket token within the X-API-KEY header, and a URL for streaming the object.
/AdminThe administration interface to the iRODS Catalog which allows the creation, removal and modification of users, groups, resources, and other entities within the zone. Method : POST Parameters
Example CURL Command:
Returns "Success" or an iRODS exception /AuthThis endpoint provides an authentication service for the iRODS zone, using one of the available iRODS authentication methodologies, such as: native, pam, krb or gsk. Method : POST Parameters:
Example CURL Command:
Returns: An encrypted JWT which contains everything necessary to interact with the other endpoints. This token is expected in the Authorization header for the other services. /ListThis endpoint provides a recursive listing of a collection, or stat, metadata, and access control information for a given data object Method : GET Parameters
Example CURL Command:
Returns A JSON structured response within the body containing the listing, or an iRODS exception
QueryThis endpoint provides access to the iRODS General Query language, which is a generic query service for the iRODS catalog. Method : GET Parameters
Example CURL Command:
Returns
StreamStream data into and out of an iRODS data object Method : GET and PUT Parameters
Returns GET : The data requested in the body of the response Example CURL Command:
or
Zone ReportRequests a JSON formatted iRODS Zone report, containing all configuration information for every server in the grid. Parameters Example CURL Command:
Returns
|
Dummy issue to use the editor
The text was updated successfully, but these errors were encountered: