ViPR 2.1 - Create ViPR Virtual Pools for File Storage using the ViPR REST API

Table of Contents

Overview

Provides ViPR System Administrators the necessary information to create and configure ViPR virtual pools for file storage systems, using the ViPR REST API.

This article is part of a series

Virtual pools for file storage can be added to to ViPR at anytime. If, however, you are setting up the ViPR Controller virtual data center for the first time, before you continue to provision storage, complete the following steps.
  1. Authenticate with the ViPR REST API
  2. Add physical assets to ViPR:
  3. Create ViPR virtual assets:
    1. Create and configure a virtual array
    2. Create virtual pools:

Back to Top

Create ViPR virtual pools for file storage

Create a virtual pool for file storage by specifying the criteria for provisioned file storage volumes. These criteria are also used to match physical storage pools which can be used for virtual pool volumes.

Before you begin

A complete list of parameters for POST /file/vpools is described in the EMC ViPR REST API Reference.

The following steps describe how to create a virtual pool for file storage to ViPR using the REST API. To use the ViPR UI to add create a virtual pool for file storage see the Create ViPR virtual pools for file storage article.

This example shows how to create a virtual pool for file storage and apply an ACL to the virtual pool. It also describes the optional step of finding storage pools that match the set of properties of the file virtual pool, and then assigning those storage pools to the virtual pool.

Procedure

  1. Create a virtual pool for file storage by sending a POST /file/vpools. The representation of the new file virtual pool is returned.
    Request
    POST https://<ViPR_VIP>:4443/file/vpools
    Content-Type: application/xml
    X-SDS-AUTH-TOKEN: <AUTH_TOKEN>
    
    <file_vpool_create>
      <name>Isilon VPool</name>
      <description>Isilon VPool</description>
      <varrays>
            <varray>urn:storageos:VirtualArray:f66ee94d-12d2-4a99-8514-f74beb4844e6:vdc1</varray>
      </varrays>
      <provisioning_type>Thick</provisioning_type>
      <protocols>
            <protocol>NFS</protocol>
      </protocols>
      <protection>
            <snapshots>
                <max_native_snapshots>0</max_native_snapshots>
            </snapshots>
      </protection>
      <use_matched_pools>true</use_matched_pools>
      <long_term_retention>false</long_term_retention>
    </file_vpool_create>
    Response
    HTTP 200 OK
    Content-Type: application/xml
    
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <file_vpool>
        <creation_time>1399901093414</creation_time>
        <global>false</global>
        <id>urn:storageos:VirtualPool:07f9b2f4-baa2-4136-b0f7-cfb6572c853c:vdc1</id>
        <inactive>false</inactive>
        <internal>false</internal>
        <link rel="self" href="/file/vpools/urn:storageos:VirtualPool:07f9b2f4-baa2-4136-b0f7-cfb6572c853c:vdc1"/>
        <name>Isilon VPool</name>
        <remote>false</remote>
        <tags/>
        <vdc>
            <id>urn:storageos:VirtualDataCenter:ed581473-3453-4c05-bd61-2068ad66942a:vdc1</id>
            <link rel="self" href="/vdc/urn:storageos:VirtualDataCenter:ed581473-3453-4c05-bd61-2068ad66942a:vdc1"/>
        </vdc>
        <assigned_storage_pools/>
        <description>Isilon VPool</description>
        <invalid_matched_pools/>
        <matched_storage_pools>
            <storage_pool>
                <id>urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1</id>
                <link rel="self" href="/vdc/storage-systems/urn:storageos:StorageSystem:de38e08a-8cf4-4767-8291-5765bba63091:vdc1/storage-pools/urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1"/>
            </storage_pool>
        </matched_storage_pools>
        <num_resources>1</num_resources>
        <protocols>
            <protocol>NFS</protocol>
        </protocols>
        <provisioning_type>Thick</provisioning_type>
        <system_type>NONE</system_type>
        <type>file</type>
        <use_matched_pools>true</use_matched_pools>
        <varrays>
            <varray>
                <id>urn:storageos:VirtualArray:f66ee94d-12d2-4a99-8514-f74beb4844e6:vdc1</id>
                <link rel="self" href="/vdc/varrays/urn:storageos:VirtualArray:f66ee94d-12d2-4a99-8514-f74beb4844e6:vdc1"/>
            </varray>
        </varrays>
        <long_term_retention>false</long_term_retention>
        <protection>
            <snapshots>
                <max_native_snapshots>0</max_native_snapshots>
            </snapshots>
        </protection>
    </file_vpool>
    
    
  2. Tenant access to each virtual pool is controlled by an Access Control List (ACL). Only tenants that are included in the virtual pool's ACL are permitted access to that virtual pool. If no ACL is set, the virtual pool can be accessed by all tenants. Apply an ACL to the virtual pool by sending a PUT request to /file/vpools/{vpool_urn}/acl. The updated ACL is returned.
    Request
    PUT https://<ViPR_VIP>:4443/file/vpools/urn:storageos:VirtualPool:07f9b2f4-baa2-4136-b0f7-cfb6572c853c:vdc1/acl
    Content-Type: application/xml
    X-SDS-AUTH-TOKEN: <AUTH_TOKEN>
    
    <acl_assignment_changes>
        <add>
            <privilege>USE</privilege>
            <tenant>urn:storageos:TenantOrg:757053b7-b952-41b9-83e1-44204b67a368:vdc1</tenant>
        </add>
    </acl_assignment_changes>
    Response
    HTTP 200 OK
    Content-Type: application/xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <acl_assignments>
        <acl_assignment>
            <privilege>USE</privilege>
            <tenant>urn:storageos:TenantOrg:757053b7-b952-41b9-83e1-44204b67a368:vdc1</tenant>
        </acl_assignment>
    </acl_assignments>
  3. ViPR automatically matches existing physical pools on the ViPR-managed storage systems to the virtual pool characteristics. You have the option of allowing ViPR to automatically associate the matching physical pools to the virtual pool you created, or you can manually select a subset of the matching physical pools to associate to the virtual pool. To manually select a subset of matching physical pools:
    1. POST /file/vpools/matching-pools is used to get a list of storage pools that match a given set of criteria. In this example, the criterial that are sent in the request payload match the properties of the virtual pool that was just created.
      Request
      POST https://<ViPR_VIP>:4443/file/vpools/matching-pools
      Content-Type: application/xml
      X-SDS-AUTH-TOKEN: <AUTH_TOKEN>
      
      <file_vpool_create>
        <name>Isilon VPool</name>
        <description>Isilon VPool</description>
        <varrays>
              <varray>urn:storageos:VirtualArray:f66ee94d-12d2-4a99-8514-f74beb4844e6:vdc1</varray>
        </varrays>
        <provisioning_type>Thick</provisioning_type>
        <protocols>
              <protocol>NFS</protocol>
        </protocols>
        <protection>
              <snapshots>
                  <max_native_snapshots>0</max_native_snapshots>
              </snapshots>
        </protection>
        <use_matched_pools>true</use_matched_pools>
      </file_vpool_create>
      Response
      HTTP 200 OK
      Content-Type: application/xml
      
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <storage_pools>
          <storage_pool>
              <id>urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1</id>
              <link rel="self" href="/vdc/storage-systems/urn:storageos:StorageSystem:de38e08a-8cf4-4767-8291-5765bba63091:vdc1/storage-pools/urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1"/>
              <name>ISILON+6805ca00ad44cad54252f514e871a3c03333+POOL+x200_5.5tb_200gb-ssd_6gb</name>
          </storage_pool>
      </storage_pools>
    2. Using the URN returned for the new virtual pool returned from the POST /file/vpools request, assign one or more of the storage pools that match the properties of the virtual pool by sending a PUT/file/vpools/{identifier}/assign-matched-pools request. The representation of the updated virtual pool is returned.
      Request
      PUT https://<ViPR_VIP>:4443/file/vpools/urn:storageos:VirtualPool:07f9b2f4-baa2-4136-b0f7-cfb6572c853c:vdc1/assign-matched-pools
      Content-Type: application/xml
      X-SDS-AUTH-TOKEN: <AUTH_TOKEN>
      
      <vpool_pool_update>
          <assigned_pool_changes>
              <add>
                  <storage_pool>
                      <storage_pool>urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1</storage_pool>
                  </storage_pool>
              </add>
          </assigned_pool_changes>
      </vpool_pool_update>
      Response
      HTTP 200 OK
      Content-Type: application/xml
      
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <file_vpool>
          <creation_time>1399901093414</creation_time>
          <global>false</global>
          <id>urn:storageos:VirtualPool:07f9b2f4-baa2-4136-b0f7-cfb6572c853c:vdc1</id>
          <inactive>false</inactive>
          <internal>false</internal>
          <link rel="self" href="/file/vpools/urn:storageos:VirtualPool:07f9b2f4-baa2-4136-b0f7-cfb6572c853c:vdc1"/>
          <name>Isilon VPool</name>
          <remote>false</remote>
          <tags/>
          <vdc>
              <id>urn:storageos:VirtualDataCenter:ed581473-3453-4c05-bd61-2068ad66942a:vdc1</id>
              <link rel="self" href="/vdc/urn:storageos:VirtualDataCenter:ed581473-3453-4c05-bd61-2068ad66942a:vdc1"/>
          </vdc>
          <assigned_storage_pools>
              <storage_pool>
                  <id>urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1</id>
                  <link rel="self" href="/vdc/storage-systems/urn:storageos:StorageSystem:de38e08a-8cf4-4767-8291-5765bba63091:vdc1/storage-pools/urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1"/>
              </storage_pool>
          </assigned_storage_pools>
          <description>Isilon VPool</description>
          <invalid_matched_pools/>
          <matched_storage_pools>
              <storage_pool>
                  <id>urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1</id>
                  <link rel="self" href="/vdc/storage-systems/urn:storageos:StorageSystem:de38e08a-8cf4-4767-8291-5765bba63091:vdc1/storage-pools/urn:storageos:StoragePool:6a3eb06f-4670-4ee3-b812-dc04771c5118:vdc1"/>
              </storage_pool>
          </matched_storage_pools>
          <protocols>
              <protocol>NFS</protocol>
          </protocols>
          <provisioning_type>Thick</provisioning_type>
          <system_type>NONE</system_type>
          <type>file</type>
          <use_matched_pools>true</use_matched_pools>
          <varrays>
              <varray>
                  <id>urn:storageos:VirtualArray:f66ee94d-12d2-4a99-8514-f74beb4844e6:vdc1</id>
                  <link rel="self" href="/vdc/varrays/urn:storageos:VirtualArray:f66ee94d-12d2-4a99-8514-f74beb4844e6:vdc1"/>
              </varray>
          </varrays>
          <long_term_retention>false</long_term_retention>
          <protection>
              <snapshots>
                  <max_native_snapshots>0</max_native_snapshots>
              </snapshots>
          </protection>
      </file_vpool>
Back to Top