Hitachi Content Platform (HCP)

HCP supports the standard HTTP commands as well as range requests.

Available commands are:

Command

Description

PUT

Stores objects, versions, empty directories, annotations, ACLs and copies objects.

POST

Changes metadata values.

HEAD

Checks existence of objects, versions, directories, annotations, ACLs or retrieves metadata for objects or versions.

GET

Retrieves the contents and metadata of an object.

DELETE

Deletes objects, versions, empty directories, annotations, ACLs and symbolic links.

Configuration

An example with tears-of-steel from Verify Your Setup looks like the following:

PUT the content:

#!/bin/bash

curl -v -k \
 -H "Authorization: HCP dXNlcg==:76a2173be6393254e72ffa4d6df1030a" \
 -H "Host: <namespace>.<tenant>.content.us-nj1.cloud.hds.com" \
 -T $1
 https://<namespace><tenant>.content.us-nj1.cloud.hds.com/rest/test/$1

Similar to the Azure Storage, files have to be copied individually to their location.

GET the content:

#!/bin/bash

curl -v -k \
 -H "Authorization: HCP dXNlcg==:76a2173be6393254e72ffa4d6df1030a" \
 -H "Host: <namespace>.<tenant>.content.us-nj1.cloud.hds.com" \
 https://<namespace><tenant>.content.us-nj1.cloud.hds.com/rest/test/$1

Once the content is copied to HCP it can be accessed by the origin just like with S3, Azure or GCE.

The configuration of the origin is similar:

<Location "/">
  UspHandleIsm on
  UspEnableSubreq on
  IsmProxyPass http://hcp.unified-streaming.com/
</Location>

<Proxy "http://hcp.unified-streaming.com">
  ProxySet connectiontimeout=5 enablereuse=on keepalive=on retry=0 timeout=30 ttl=300
</Proxy>

The URL to the content then becomes the following, for instance for MPEG-DASH:

http://www.example.com/tears-of-steel/tears-of-steel.ism/.mpd

where www.example.com is the webserver running USP and has the previous vhost snippet. Note that in this case the IsmProxPass and Proxy directives point to 'hcp.unified-streaming.com' which is a proxy that adds an authorisation header - described below.

Header Authorization

The authorization header is mandatory on each call to HCP, as well as the use of SSL. In order to apply the header a proxy virtual host can be setup, on the same server:

       origin  <-- client
          |
hcp <-- proxy

When the request comes in the origin calls the proxy which in turn adds the request header and proxies the request over SSL to HCP.

The proxy virtual host config looks like the following:

<VirtualHost *:80>
  ServerName hcp

  ErrorLog /var/log/apache2/hcp-error.log
  CustomLog /var/log/apache2/hcp-access.log combined
  LogLevel info

  HostnameLookups Off
  UseCanonicalName On

  RequestHeader set Authorization "HCP dXNlcg==:76a2173be6393254e72ffa4d6df1030a"

  SSLProxyEngine on
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerName off

  ProxyPass / https://<namespace>.<tenant>.content.us-nj1.cloud.hds.com/rest/your-bucket/
  ProxyPassReverse / https://<namespace>.<tenant>.content.us-nj1.cloud.hds.com/rest/your-bucket/
</VirtualHost>