Storage controller registration

The Storage Controller Registration APIs provide the capability to specify the storage controllers that must be managed by the PowerVC Management System. The capabilities include adding new storage controller, removing storage controllers, updating the registration information for existing storage controllers, or retrieving the information about storage controllers that are currently managed. You can also use this API to register pluggable storage.

Storage controller registration API options

Table 1. Options for storage controller registration API
Method URI Description

POST

/v3/{tenant_id}/os-hosts

Registers or adds storage controller.

DELETE

/v3/{tenant_id}/os-hosts/{host_name}

Unregisters or removes a managed storage controller.

PUT

/v3/{tenant_id}/os-hosts/{host_name}

Updates or edits a managed storage controller.

Registers a secondary storage for global mirror for a primary storage provider.
Note: Only for IBM® Storwize®.
Example:
PUT https://<PowerVC IP>/powervc/openstack/volume/v3/<tenant ID>/os-hosts/<Primary storage name>

GET

/v3/{tenant_id}/os-hosts

Lists all storage controllers that are managed.

GET

/v3/{tenant_id}/os-hosts/{host_name}

Shows details of a managed storage controller.

POST

/v3/{tenant_id}/os-hosts/connect

Lists volumes pools that are available on a storage controller.1

POST

/v3/{tenant_id}/os-hosts/connect

When Storwize is registered with HyperSwap® enabled, the connect API shows details of HyperSwap capable and the peer pools.

POST

/v3/{tenant_id}/os-hosts/

Enables HyperSwap while registering Storwize in PowerVC.

PUT

/v3/{tenant_id}/os-hosts/{host_name}

Enables HyperSwap after Storwize is registered in PowerVC.

POST

/v3/<tenant_id>/storage-providers/<provider_id>/host-site-assignment

Maps the host port WWPNs with the Storwize site information.

GET

/v3/<tenant_id>/storage-providers/<provider_id>/host-site-assignment

Shows mapping details between host port WWPNs and the Storwize sites.

1: Does not support pluggable storage.

Register or add a storage controller

This operation registers or adds storage controller to the list that is managed by PowerVC. This API takes the IP address and credentials for the storage controller in the request body and registers the storage controller with PowerVC.

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Bad Request (400), Server Error (500)
Request parameters
Table 2. Parameters that are used in storage controller registration requests
Name Style Type Description

access_ip2

body

string

IP address or the host name to connect to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

fc_ports3

body

list of strings

The Hitachi storage system target port names to be specified in the default Hitachi storage template. When a Hitachi volume is deployed with the default storage template, PowerVC uses these ports to map volumes to a virtual machine. Some Hitachi platforms can have up to 192 Fibre Channel ports. PowerVC might not always assign all of the ports. Example: [CL4-B, CL4-C, CL8-A, CL8-B, CL9-A, CL9-B].

hitachi_ldev_end3

body

integer

The end of the range of Hitachi storage system devices that are allocated to PowerVC usage. The default range of 0 - 65535 is allowable if a single PowerVC management instance is the only user of the Hitachi controller. Otherwise, specify a range of devices that are not in use by other systems.

hitachi_ldev_start3

body

integer

The start of the range of Hitachi storage system devices that are allocated to PowerVC usage. The default range of 0 - 65535 is allowable if a single PowerVC management instance is the only user of the Hitachi controller. Otherwise, specify a range of devices that are not in use by other systems.

user_id2

body

string

User ID for connecting to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

password2

body

string

Conditional. Password for connecting to the storage controller. You must specify either the password or the private_key_data. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

private_key_data2

body

string

Conditional. The SSH private key to connect to the storage controller. This attribute is only valid for SVC and IBM Storwize v7000 storage.

volume_backend_name2

body

string

The name of the backing storage device.

volume_pool_name2

body

string

The default storage pool.

default_volume_type2

body

string

Optional. The name of the storage template to create as the default for the storage controller.

ssh_port2

body

integer

Optional. The TCP port to connect to SSH on the storage controller.

wbem_port2

body

integer

Optional - EMC PowerMax only. The TCP port to connect to the EMC SMI-S provider for the EMC PowerMax storage. The default value is 5989.

storage_array_id

body

string

Required for EMC PowerMax storage. The identifier for the EMC PowerMax storage array. This value can be determined by calling the /os-hosts/connect API.

host_type

body

string

The type of the storage system to be configured. Only these values are supported: svc, ds8k , emc_vmax, hitachi, or generic (pluggable storage only).

host_display_name

body

string

User-specified name to give to the storage controller. The value defaults to the resolved host short name.

volume_driver1

body

string

Python Class Name for the provider's Cinder volume driver.

configuration_properties1

body

object

Driver-specific properties for the configuration file, such as the user ID and password.

auto_add_host_key

body

Boolean

Optional value. Whether to auto-accept or add the SSH fingerprint for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the SSH fingerprint can be verified. Default value is True.

Note: This attribute is only for SVC and Storwize v7000 storage.

auto_add_certificate

body

Boolean

Optional value. Whether to auto-accept or add the X.509 Certificate for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the certificate can be verified. Default value is True.

Note: This attribute is only for EMC PowerMax and DS8000® storage types.
  1. Used for pluggable storage only.
  2. Not used for pluggable storage. To specify this information, use configuration_properties.
  3. Only required when using Hitachi storage.
Example of registering PowerVC supported storage:
{"host": { 
 "registration": {
  "host_display_name": "HDS", 
  "access_ip": "1.2.3.4", 
  "fc_ports": [
   "CL1-C",
   "Cl1-D"
  ],
   
  "hitachi_ldev_start": 2000,
  "host_type": "hitachi",
  
  
  "volume_pool_name": "PowerVC1",
  
  "user_id": "maintenance",
  "password": "passw0rd",
  "hitachi_ldev_end": 3000
  }
 }
}
Example of registering pluggable storage:
{"host": {
  "registration": { 
  "host_type": "generic", 
  "host_display_name": "My Provider 1", 
  "volume_driver": "cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver", 
  "configuration_properties": { 
   "san_login": "superuser", 
   "san_password": "passw0rd", 
   "san_ip": "192.168.1.9", 
   "storwize_svc_volpool_name" : 
   "powervc_npiv_pool"… 
   } 
  } 
 } 
}
Response body
Table 3. Parameters in the response for storage controller registration
Name Style Type Description

access_ip2

body

string

IP address or the host name to connect to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

user_id2

body

string

User ID for connecting to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

volume_pool_name2

body

string

The name of the storage pool that is used as the default for managing the storage.

default_volume_type

body

string

The name of the storage template that is created as the default for the storage controller.

ssh_port2

body

integer

The TCP port that is used to connect to SSH on the storage controller.

wbem_port2

body

integer

Optional - EMC PowerMax only. The TCP port to connect to the EMC SMI-S provider for the EMC PowerMax storage. The default value is 5989.

storage_array_id

body

string

Required for EMC PowerMax storage. The identifier for the EMC PowerMax storage array. This value can be determined by calling the /os-hosts/connect API.

host_type

body

string

The type of the storage system to be configured. Only these values are supported: svc, ds8k , emc_vmax, hitachi, or generic (pluggable storage only).

host_name2

body

string

An internally generated unique name for the registered storage controller.

host_display_name

body

string

User-specified name that is given to the storage controller.

volume_driver1

body

string

Python Class Name for the provider's Cinder volume driver.

registered_at

body

string

The date and time that the storage provider was registered with PowerVC.

auto_add_host_key

body

Boolean

Optional value. Whether to auto-accept or add the SSH fingerprint for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the SSH fingerprint can be verified. Default value is True.

Note: This attribute is only for SVC and Storewize v7000 storage.

auto_add_certificate

body

Boolean

Optional value. Whether to auto-accept or add the X.509 Certificate for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the certificate can be verified. Default value is True.

Note: This attribute is only for EMC PowerMax and DS8000 storage types.
1: Used for pluggable storage only.

2: Not used for pluggable storage.

Example response when registering PowerVC supported storage:
{"host": { 
 "registration": { 
  "access_ip": "1.2.3.4",
  "user_id": "root",
  "volume_pool_name": "pool1",
  "host_type": "svc",
  "host_name": "myhostname", 
  "host_diplay_name": "My SVC 1",
  "ssh_port": 22, 
  "default_volume_type": "my dflt"
  }
 }
}

Example response when registering pluggable storage:

{"host": {
 "registration": {
 "host_type": "generic",
 "host_display_name": "My Provider 1",
 "volume_driver": "cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver",
 "registered_at": "2013-10-19T16:06:53Z"
  } 
 } 
}

Unregister or remove a managed storage controller

This operation unregisters or removes a managed storage controller so that it is no longer managed by PowerVC. This API takes the storage controller name in the URI as input and takes no request body. The API returns no response body.

Response codes
  • Normal Response Code: No Content (204)
  • Error Response Codes: Bad Request (400), Not Found (404), Server Error (500)

Update a managed storage controller

This operation updates or edits the registration information for a storage controller that is managed by PowerVC. This API takes the name of the storage controller in the URI and the attributes that you want to change in the body as input. The response body contains the attributes that are updated by the request.

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Bad Request (400), Not Found (404), Server Error (500)

Request parameters

Table 4. Parameters in the request for updating a storage controller
Name Style Type Description

access_ip2

body

string

IP address or the host name to connect to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

user_id2

body

string

User ID for connecting to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

password2

body

string

Conditional. Password for connecting to the storage controller. You must specify either the password or the private_key_data. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

private_key_data2

body

string

Conditional. The SSH private key to connect to the storage controller. This attribute is only valid for SVC and Storewize v7000 storage.

volume_pool_name2

body

string

The name of the storage pool to be used as default for managing the storage.

default_volume_type2

body

string

Optional. The name of the storage template to create as the default for the storage controller.

ssh_port2

body

integer

Optional. The TCP port to connect to SSH on the storage controller.

wbem_port2

body

integer

Optional - EMC PowerMax only. The TCP port to connect to the EMC SMI-S provider for the EMC PowerMax storage. The default value is 5989.

storage_array_id

body

string

Required for EMC PowerMax storage. The identifier for the EMC PowerMax storage array. This value can be determined by calling the /os-hosts/connect API.

host_display_name

body

string

User-specified name to give to the storage controller. The value defaults to the resolved host short name.

configuration_properties1

body

object

Driver-specific properties for the configuration file, such as the user ID and password.

auto_add_host_key

body

Boolean

Optional value. Whether to auto-accept or add the SSH fingerprint for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the SSH fingerprint can be verified. Default value is True.

Note: This attribute is only for SVC and Storewize v7000 storage.

auto_add_certificate

body

Boolean

Optional value. Whether to auto-accept or add the X.509 Certificate for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the certificate can be verified. Default value is True.

Note: This attribute is only for EMC Power Max and DS8000 storage types.

pvm_host_name

body

string

Optional - applies only when the registration host type is ssp and when switching the controlling node to a NovaLink host. To determine the host name, use the nova GET /os-hosts API.

You can specify pvm_host_name or hmc_uuids.

hmc_uuids

body

list of strings

Optional - applies only when the registration host type is ssp. This lists a single HMC uuid for the HMC that should be the new provider of the shared storage pool management API.

You can specify pvm_host_name or hmc_uuids.

1: Used for pluggable storage only.

2: Not used for pluggable storage. To specify this information, use configuration_properties.

All the attributes are optional in the request body. Example of updating PowerVC supported storage:
{"registration": { 
 "access_ip": "1.2.3.4",
 "user_id": "root", 
 "password": "mypassword",
 "private_key_data": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAs...",
 "volume_pool_name": "pool1",
 "host_diplay_name": "My SVC 1", 
 "ssh_port": 22,
 "default_volume_type": "my dflt"
 }
}
Example of updating pluggable storage:
{"registration": {
 "host_display_name": "My Provider 1",
 "configuration_properties": { "san_login": "superuser", "san_password": "passw0rd", … }
  } 
 } 
}
Response body
Table 5. Parameters in the response for updating a storage controller
Name Style Type Description

access_ip2

body

string

IP address or the host name to connect to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

user_id2

body

string

User ID for connecting to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

volume_pool_name2

body

string

The name of the storage pool that is used as the default for managing the storage.

default_volume_type2

body

string

The name of the storage template that is used to create as the default for the storage controller.

ssh_port2

body

integer

The TCP port that is used to connect to SSH on the storage controller.

wbem_port2

body

integer

Optional - EMC PowerMax only. The TCP port to connect to the EMC SMI-S provider for the EMC PowerMax storage. The default value is 5989.

storage_array_id

body

string

Required for EMC PowerMax storage. The identifier for the EMC PowerMax storage array. This value can be determined by calling the /os-hosts/connect API.

host_display_name

body

string

User-specified name that is given to the storage controller.

auto_add_host_key

body

Boolean

Optional value. Whether to auto-accept or add the SSH fingerprint for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the SSH fingerprint can be verified. Default value is True.

Note: This attribute is only for SVC and Storewize v7000 storage.

auto_add_certificate

body

Boolean

Optional value. Whether to auto-accept or add the X.509 Certificate for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the certificate can be verified. Default value is True.

Note: This attribute is only for EMC Power Max and DS8000 storage types.

pvm_host_name

body

string

Optional - applies only when the registration host type is ssp. When switching the controlling node to a NovaLink host. To determine the host name, use the nova GET /os-hosts API.

Either pvm_host_name or hmc_uuids will be returned.

hmc_uuids

body

string

Optional - applies only when the registration host type is ssp. This lists a single HMC uuid for the HMC that should be the new provider of the shared storage pool management API.

Either pvm_host_name or hmc_uuids will be returned.

1: Used for pluggable storage only.

2: Not used for pluggable storage.

Example response when updating PowerVC supported storage:
{"host": "myhostname",
 "registration": { 
  "access_ip": "1.2.3.4",
  "user_id": "root", 
  "volume_pool_name": "pool1",
  "host_diplay_name": "My SVC 1",
  "ssh_port": 22,
  "default_volume_type": "my dflt"
 }
}

Example response when updating pluggable storage:

{"host": {
 "registration": {
 "host_display_name": "My Provider 1",
  } 
 } 
}

Register a secondary storage for global mirror for a primary storage provider

Use this operation to register a secondary storage for global mirror for a primary storage provider in PowerVC. You can also add or manage secondary GMCV details by using PowerVC GUI. The response body contains the attributes that are updated by the request.

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Bad Request (400), Not Found (404), Server Error (500)

Request parameters

Table 6. Parameters in the request for registering a secondary storage
Name Style Type Description

mirror_private_key_data

body

string

Provide complete SSH private key.

mirror_private_key

body

string

Provide path to SSH private key.

enable_mirror

body

Boolean

Enables global mirror. Set option to True for enabling global mirror.

enable_gmcv

body

Boolean

Enables global mirror change volume. Set option to True for enabling global mirror change volume.

cycle_period_seconds

body

integer

Indicates the cycle period in seconds for GMCV. The value must be a number (integer) within the range 60 - 86400. The default value is 300.

source_child_pool_for_change_volumes

body

string

Optional. Specify the child pool at the source storage where the change volume should be stored. If not specified, both volume and change volume will reside on the same pool.

target_child_pool_for_change_volumes

body

string

Optional. Specify the child pool at the target storage where the change volume should be stored. If not specified, both volume and change volume will reside on the same pool.

mirror_access_ip

body

string

Provide the mirror (secondary) storage IP.

mirror_user_id

body

string

Parameter to provide mirror storage user ID.

mirror_password

body

string

Parameter to provide mirror storage password.

mirror_pool

body

string

Parameter to provide mirror storage pool name

All the attributes are optional in the request body. Example of registering secondary storage in PowerVC and enabling global mirror:
{
        "registration": {
        "enable_mirror": true,
        "mirror_private_key_data": "<full SSH private key">
        "mirror_access_ip": "<secondary storage IP>",
        "mirror_user_id": "<secondary storage user ID>",
        "mirror_password": "<secondary storage password>",
        "mirror_pool": "<secondary storage storage pool name>",
    }
}
Example request to register Global Mirror Change Volume.
{
        "registration": {
        "enable_mirror": true,
        "enable_gmcv": true,
        "cycle_period_seconds": 500,
        "mirror_access_ip": "9.114.23.121",
        "mirror_user_id": "superuser",
        "mirror_password": "Passw0rd",
        "mirror_pool": "Powervc",
        "source_child_pool_for_change_volumes": "PowerVC_Pool0_child",
        "target_child_pool_for_change_volumes": "Powervc_child"
    }
}
Response body
Table 7. Parameters in the response for registering a secondary storage
Name Style Type Description

enable_mirror

body

Boolean

Enables global mirror. Set option to true for enabling global mirror.

mirror_private_key_data

body

string

Provides complete SSH private key.

mirror_private_key

body

string

Provides path to SSH private key.

enable_gmcv

body

Boolean

Enables global mirror change volume. Set option to True for enabling global mirror change volume.

cycle_period_seconds

body

integer

Indicates the cycle period in seconds for GMCV. The value must be a number (integer) within the range 60 - 86400. The default value is 300.

source_child_pool_for_change_volumes

body

string

Optional. Specify the child pool at the source storage where the change volume should be stored. If not specified, both volume and change volume will reside on the same pool.

target_child_pool_for_change_volumes

body

string

Optional. Specify the child pool at the target storage where the change volume should be stored. If not specified, both volume and change volume will reside on the same pool.

mirror_access_ip

body

string

Provide the mirror (secondary) storage IP.

mirror_user_id

body

string

Parameter to provide mirror storage user ID.

mirror_password

body

string

Parameter to provide mirror storage password.

mirror_pool

body

string

Parameter to provide mirror storage pool name

replication_device

body

string

Parameter with information about backend ID of secondary storage, secondary storage IP, secondary storage user ID, secondary storage encrypted password and secondary storage pool name.

Example response when registering secondary storage in PowerVC for global mirror:
{
    "host": "<primary storage host name>",
    "registration": {
        "enable_mirror": true,
        "mirror_private_key_data": "<full SSH private key">
        "mirror_access_ip": "<secondary storage IP>",
        "mirror_user_id": "secondary storage user ID",
        "mirror_password": "secondary storage password",
        "mirror_pool": "secondary storage storage pool",
        "replication_device": "backend_id:<backend_id of secondary storage>,san_ip:<secondary storage IP>,san_login:<secondary storage user ID>,san_password:<encrypted password for secondary storage>,pool_name:secondary storage pool name"
    }
}
Example response to register Global Mirror Change Volume.
{
    "host": "ip9_114_23_117",
    "registration": {
        "enable_mirror": true,
        "enable_gmcv": true,
        "cycle_period_seconds": 500,
        "mirror_access_ip": "9.114.23.121",
        "mirror_user_id": "superuser",
        "mirror_password": "Passw0rd",
        "mirror_pool": "Powervc",
        "source_child_pool_for_change_volumes": "PowerVC_Pool0_child",
        "target_child_pool_for_change_volumes": "Powervc_child",
        "replication_device": "backend_id:00000100204026B4,san_ip:9.114.23.121,san_login:superuser,san_password:aes-ctr:Njc1ODgyNzQ5Nzc2MTA4OTk4NjrOhJ7eJ4UvMqVB1Ws=,pool_name:Powervc"
    }
}

View all storage controllers that are managed

This operation lists basic information about all the storage controllers that are managed by PowerVC. This API takes no input in the request body and returns the name and display name for each of the storage controllers that are managed in the response body.

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Server Error (500)
Response body
Table 8. Parameters in the response for viewing all storage controllers
Name Style Type Description

host_name

body

string

An internally generated unique name for the registered storage controller.

{"hosts": [ 
  {"host_name": "myhostname1", "service": "cinder-volume", "zone": "nova"}, 
  {"host_name": "myhostname2", "service": "cinder-volume", "zone": "nova"}, ]
}

View details of a managed storage controller

This operation shows detailed information about one of the storage controllers that is managed by PowerVC. This API takes the storage controller name in the URI as input and takes request body. The API returns the IP address and credential information about the storage controller in the response body.

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Not Found (404), Server Error (500)
Response body
Table 9. Parameters in the response for viewing a storage controller
Name Style Type Description

access_ip2

body

string

IP address or the host name to connect to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

user_id2

body

string

User ID for connecting to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

volume_pool_name2

body

string

The name of the storage pool that is used as the default for managing the storage.

default_volume_type2

body

string

The name of the storage template that is created as the default for the storage controller.

ssh_port2

body

integer

The TCP port that is used connect to SSH on the storage controller.

wbem_port2

body

integer

Optional - EMC PowerMax only. The TCP port to connect to the EMC SMI-S provider for the EMC PowerMax storage. The default value is 5989.

storage_array_id

body

string

Required for EMC PowerMax storage. The identifier for the EMC PowerMax storage array. This value can be determined by calling the /os-hosts/connect API.

host_type

body

string

The type of the storage system to be configured. Only these values are supported: svc, ds8k , emc_vmax, hitachi, or generic (pluggable storage only).

host_name

body

string

An internally generated unique name for the registered storage controller.

host_display_name

body

string

User-specified name that is given to the storage controller.

registered_at

body

string

The date and time when the storage controller was registered in PowerVC.

access_state

body

string

Shows the overall connectivity state to the storage controller and whether PowerVC can access it.

resource

body

object

Resource capacity information of the storage controller.

volume_driver1

body

string

Python Class Name for the provider's Cinder volume driver.

1: Used for pluggable storage only.

2: Not used for pluggable storage. To specify this information, use configuration_properties.

Example of viewing the details of a PowerVC supported storage controller:
{"host": { "resource": { "project": "(total)", "host": "host1", "volume_count": 16, 
 "total_capacity_gb": "1570", "free_capcity_gb": "117", "total_volume_gb": "1420"
 }, 
 "registration": { 
  "host_name": "myhostname", 
  "host_diplay_name": "My SVC 1",
  "access_ip": "1.2.3.4", 
  "user_id": "root",
  "ssh_port": 22,
  "volume_pool_name": "pool1",
  "default_volume_type", "my dflt",
  "host_type": "svc",
  "registered_at": "2013-06-18T13:24:21Z",
  "access_state": "ok"
  }
 }
}
Example of viewing the details of a pluggable storage controller:
{"host": {
 "registration": {
 "host_type": "generic",
 "host_display_name": "My Provider 1",
 "volume_driver": "cinder.volume.drivers.ibm.storwize_svc.StorwizeSVCDriver",
 "registered_at": "2013-10-19T16:06:53Z"
  } 
 } 
}

View available volumes pools on a storage controller

This operation uses the specified IP address and credentials to verify the connection to the storage controller, then returns a list of storage pools that can be used when you register this storage controller. It cannot be used with pluggable storage.

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Bad Request (400), Server Error (500)
Request parameters
Table 10. Parameters in the request for viewing volume pools that are available on a storage controller
Name Style Type Description

access_ip

body

string

IP address or the host name to connect to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

user_id

body

string

User ID for connecting to the storage controller. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

password

body

string

Conditional. Password for connecting to the storage controller. You must specify either the password or the private_key_data. When using EMC PowerMax storage, this value applies to the EMC SMI-S provider.

private_key_data

body

string

Conditional. The SSH private key to connect to the storage controller. This attribute is only valid for SVC and Storewize v7000 storage.

ssh_port

body

integer

Optional. The TCP port to connect to SSH on the storage controller.

wbem_port2

body

integer

Optional - EMC PowerMax only. The TCP port to connect to the EMC SMI-S provider for the EMC PowerMax storage. The default value is 5989.

storage_array_id

body

string

Required for EMC PowerMax storage. The identifier for the EMC PowerMax storage array. This value can be determined by calling the /os-hosts/connect API.

host_type

body

string

The type of the storage system to be configured. Only these values are supported: svc, ds8k , emc_vmax, hitachi, or generic (pluggable storage only).

auto_add_host_key

body

Boolean

Optional value. Whether to auto-accept or add the SSH fingerprint for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the SSH fingerprint can be verified. Default value is True.

Note: This attribute is only for SVC and Storewize v7000 storage.

auto_add_certificate

body

Boolean

Optional value. Whether to auto-accept or add the X.509 Certificate for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the certificate can be verified. Default value is True.

Note: This attribute is only for EMC Power Max and DS8000 storage types.
Example of a request to view volume pools that are available on a storage controller (PowerVC supported storage):
{"host": { 
 "registration": { 
  "access_ip": "1.2.3.4",
  "user_id": "root",
  "password": "mypassword",
  "private_key_data": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAs...", 
  "host_type": "svc",
  "ssh_port": 22
  }
 }
}
Response body
Table 11. Parameters in the response for viewing volume pools that are available on a storage controller
Name Style Type Description

pool_name

body

string

The name of the storage pool on the storage controller.

pool_free_capacity_gb

body

string

Free space in the storage pool in GB.

pool_total_capacity_gb

body

string

Total capacity in the storage pool in GB.

auto_add_host_key

body

Boolean

Optional value. Whether to auto-accept or add the SSH fingerprint for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the SSH fingerprint can be verified. Default value is True.

Note: This attribute is only for SVC and Storewize v7000 storage.

auto_add_certificate

body

Boolean

Optional value. Whether to auto-accept or add the X.509 Certificate for the system (if the fingerprint is not yet trusted or is different from the previously trusted fingerprint) or to fail with a 403 response code so that the certificate can be verified. Default value is True.

Note: This attribute is only for EMC Power Max and DS8000 storage types.
Example response when viewing volume pools that are available on a PowerVC supported storage controller:
{"host": { 
  "volumePools": [ {
   "pool_name": "pool1",
   "pool_free_capacity_gb": "8810.0", // Free Space in the Storage Pool in GB 
   "pool_total_capacity_gb": "9010.0" // Total Capacity in the Storage Pool in GB 
  }, 
  {
   "pool_name": "pool2", .......
  }
 }
}

Register and enable HyperSwap storage for IBM Storwize

HyperSwap storage registration uses existing storage registration API. Below are the new attributes which are needed for registering the HyperSwap storage controller.

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Bad Request (400) and Server Error (500)
Request and response parameters
Table 12. Parameters in the request and response for HyperSwap registration
Name Style Type Description

hyperswap_capable

body

Boolean

If hyperswap_capable is set to true, it shows that IBM Storwize controller is configured with prerequisite for HyperSwap configuration.

enable_hyperswap

body

Boolean

Set this property to true in API request body to enable HyperSwap.

peerPools

body

object

Response in os-hosts/connect showing details of the peer pool mapping.

peer_pool_name

body

string

Pool name in another site.

site_id

body

string

Site ID of Storwize site.

site_name

body

string

Site name of Storwize site.
Examples
Below are the examples for the registration API for HyperSwap registration.
  1. Connect to the HyperSwap storage controller
    Request body
    {
        "host": {
            "registration": {
                "host_type": "svc",
                "access_ip": "9.x.x.x",
                "user_id": "superuser",
                "auto_add_host_key": true,
                "password": "password",
                "host_display_name": "SVC_188"
            }
        }
    }
    
    Response body
    {
      "host": {
        "hyperswap_capable": true,
        "volumePools": [{
          "pool_name": "mdiskgrp0",
          "pool_total_capacity_gb": 22340.0,
          "pool_free_capacity_gb": 5329.0,
          "site_id": "1",
          "site_name": "site1"
        }, {
          "pool_name": "Pool1",
          "pool_total_capacity_gb": 15576.0,
          "pool_free_capacity_gb": 13649.0,
          "site_id": "2",
          "site_name": "site2"
        }],
        "peerPools": {
          "mdiskgrp0": ["Pool1"],
          "Pool1": ["mdiskgrp0"]
        }
      }
    }
  2. Enable HyperSwap during add storage API
    Request body
    {
        "host": {
            "registration": {
                "host_type": "svc",
                "access_ip": "9.x.x.x",
                "user_id": "superuser",
                "auto_add_host_key": true,
                "password": "passw0rd",
                "volume_pool_name": "mdiskgrp0",
                "host_display_name": "SVC_188",
                "host_name": "c340f9u05v7k",
                "peer_pool_name": "Pool1",
                "enable_hyperswap": true
            }
        }
    }
    Response body
    {
      "host": {
        "registration": {
          "host_type": "svc",
          "access_ip": "9.x.x.x",
          "user_id": "superuser",
          "auto_add_host_key": true,
          "volume_pool_name": "mdiskgrp0",
          "host_display_name": "SVC_188",
          "host_name": "c340f9u05v7k",
          "peer_pool_name": "Pool1",
          "enable_hyperswap": true,
          "pvc_cluster_service": true,
          "default_volume_type": "SVC_188 base template",
          "registered_at": "2021-07-23T10:04:14Z"
        }
      }
    }
  3. Update existing storage registration to enable HyperSwap during add storage API
    Request body
    {
        "registration": {
            "access_ip": "9.x.x.x",
            "host_display_name": "svc-188",
            "auto_add_host_key": true,
            "auto_add_certificate": true,
            "volume_pool_name": "mdiskgrp0",
            "peer_pool_name": "Pool1",
            "enable_hyperswap": true
        }
    }
    Response body
    {
      "host": "c340f9u05v7k",
      "registration": {
        "access_ip": "9.x.x.x",
        "host_display_name": "svc-188",
        "auto_add_host_key": true,
        "auto_add_certificate": true,
        "volume_pool_name": "mdiskgrp0",
        "peer_pool_name": "Pool1",
        "enable_hyperswap": true
      }
    }

Host site assignment

This API signs the PowerVM® host physical port WWPNs with the IBM Storwize HyperSwap site information. You can select multiple host port WWPNs, and assign the site id based on the preferred path for I/O optimization.

Response codes
  • Normal Response Code: Created (201)
  • Error Response Codes: Bad Request (400), Forbidden (403), and Not Found (404)
Request parameters
Table 13. Parameters in the request for host site assignment
Name Style Type Description

id

body

integer

Storwize site ID.

hosts

body

list of strings

List of host port WWPNs.
Example of a request body
{
                "sites" : [
                    {
                        "id": 1,
                        "hosts": ["wwpn1", "wwpn2"]
                    },
                    {
                        "id": 2,
                        "hosts": ["wwpn3", "wwpn4"]
                    }
                ]
            }
Response body
Table 14. Parameters in the response for host site assignment
Name Style Type Description

site_name

body

string

Site name of Storwize site

hosts

body

list of strings

List of host port WWPNs.

Example response
{
                "1": {
                        "site_name": "site1",
                        "hosts": ["wwpn1", "wwpn2"]
                     },
                "2": {
                         "site_name": "site2",
                         "hosts": ["wwpn3", "wwpn4"]
                     }
            }

Register a secondary or tertiary Pure Storage for a primary storage provider

Use this operation to register a secondary storage or a tertiary storage or both for Pure Storage for a primary storage provider in PowerVC. The response body contains the attributes that are updated by the request

Response codes
  • Normal Response Code: OK (200)
  • Error Response Codes: Bad Request (400) and Server Error (500)
  • Request parameters
Register sync/async replication type storages
Table 15. Secondary storage details for sync/async storage
Name Style Type Description

enable_replication

body

string

Enables the replication. Set the option to sync/async for enabling respective replication types.

replication_type

body

string Provide the replication type of the storage. Replication types can be sync/async.

access_ip

body

string

Parameter to provide the secondary storage IP.

user_id

body

string

Parameter to provide secondary storage user ID.

password

body

string

Parameter to provide secondary storage password.
Example of registering secondary storage in PowerVC and enabling sync/async replication.
Request body
{
	"registration": {
		"enable_replication": "sync/async",
		"secondary_storage": {
			"replication_type": "sync/async",
			"access_ip": "<secondary storage access IP>",
			"user_id": "<secondary storage user ID>",
			"password": "<secondary storage password>"
		}
       }
}
Request to enable sync replication.
{
  {
	"registration": {
		"enable_replication": "sync",
		"secondary_storage": {
			"replication_type": "sync",
			"access_ip": "9.3.250.136",
			"user_id": "pureuser",
			"password": "pureuser"
		}
	}
}
Request to register async replication.
{
	"registration": {
		"enable_replication": "async",
		"secondary_storage": {
			"replication_type": "async",
			"access_ip": "9.3.250.136",
			"user_id": "pureuser",
			"password": "pureuser"
		}
	}
}

Response body for sync/async registration

Table 16. Response body for sync/async registration
Name Style Type Description

replication_type

body

string Provide the replication type of the secondary storage.

access_ip

body

string

Provide the secondary storage IP.

user_id

body

string

Parameter to provide secondary storage user ID.

password

body

string

Parameter to provide secondary storage password.
replication_device

body

string

Parameter with information about backend ID of secondary storage, secondary storage IP, secondary storage API token, and secondary storage replication type that is enabled.
Response when registering sync/async replication.
{
	"host": "<primary storage host name>",
	"registration": {
		"enable_replication": "async/sync",
		"secondary_storage": {
			"replication_type": "async/sync",
			"access_ip": "<secondary storage IP>",
			"user_id": "<secondary storage user ID>",
			"password": "<secondary storage password>"
		},
		"replication_device": "backend_id:<backend_id of the secondary storage>,san_ip: <secondary storage IP>,api_token:<secondary storage API token>,type:<secondary storage replication type>"
	}
}
Response of sync replication.

{
	"host": "pvc75",
	"registration": {
		"enable_replication": "sync",
		"secondary_storage": {
			"replication_type": "sync",
			"access_ip": "9.3.250.136",
			"user_id": "pureuser",
			"password": "pureuser"
		},
		"replication_device": "backend_id:pvc126,san_ip:9.3.250.136,api_token:b529b479-f7b6-aa55-d142-f5b11bf9f04b,type:sync"
	}
}
Response of async replication.
{
   "host": "pvc75",
   "registration":    {
      "enable_replication": "async",
      "secondary_storage": {
         "replication_type": "async",
         "access_ip": "9.3.250.136",
         "user_id": "pureuser",
         "password": "pureuser"
      },
      "replication_device": "backend_id:pvc126,san_ip:9.3.250.136,api_token:b529b479-f7b6-aa55-d142-f5b11bf9f04b,type:async"
   }
}
Register secondary and tertiary storage and enable trisync replication.
Table 17. Secondary and tertiary storage details for trisync registration
Name Style Type Description
enable_replication

body

string Enables the replication. Set the option to trisync for enabling replication in both secondary and tertiary storages.

replication_type

body

string Provide the replication type of the secondary and tertiary storages. Replication types can be sync/async. Secondary storage replication type must be sync and tertiary storage replication type must be async.

access_ip

body

string

Provide the secondary and tertiary storage IP.

user_id

body

string

Parameter to provide secondary and tertiary storage user ID.

password

body

string

Parameter to provide secondary and tertiary storage password.

Example of registering secondary and tertiary storage in PowerVC and enabling trisync replication.

Request body
{
	"registration": {
		"enable_replication": "trisync",
		"secondary_storage": {
			"replication_type": "sync",
			"access_ip": "<secondary storage IP>",
			"user_id": "<secondary storage user ID>",
			"password": "<secondary storage password>"
		},
		"tertiary_storage": {
			"replication_type": "async",
			"access_ip": "< tertiary storage IP>",
			"user_id": "< tertiary storage user ID>",
			"password": "< tertiary storage password>"
		}
	}
}

Response body for trisync registration

Table 18. Response body for trisync registration
Name Style Type Description

replication_type

body

string Provide the replication type of the secondary and tertiary storage.

access_ip

body

string

Provide the secondary and tertiary storage IP.

user_id

body

string

Parameter to provide secondary and tertiary storage user ID.

password

body

string

Parameter to provide secondary and tertiary storage password.
pure_trisync_enabled body Boolean Enables trisync. The option is set as true if trisync is enabled.
replication_device body list

List of two replication device parameters.

Information about backend ID of secondary storage, secondary storage IP, secondary storage API token, and secondary storage replication type that is enabled in the first one.

Information about backend ID of tertiary storage, tertiary storage IP, tertiary storage API token, and tertiary storage replication type that is enabled in the second one.

Response body
{
	"host": "pvc75",
	"registration": {
		"enable_replication": "trisync",
		"secondary_storage": {
			"replication_type": "sync",
			"access_ip": "<secondary storage IP>",
			"user_id": "<secondary storage user ID>",
			"password": "<secondary storage password>"
		},
		"tertiary_storage": {
			"replication_type": "async",
			"access_ip": "< tertiary storage IP>",
			"user_id": "< tertiary storage user ID>",
			"password": "< tertiary storage password>"
		},
              "pure_trisync_enabled": True,
		"replication_device": [
			" backend_id:<backend_id of the secondary storage>,san_ip: <secondary storage IP>,api_token:<secondary storage API token>,type:<secondary storage replication type>",
			" backend_id:<backend_id of the tertiary storage>,san_ip: <tertiary storage IP>,api_token:<tertiary storage API token>,type:<tertiary storage replication type>"
		]
	}
}
Example
{
	"host": "pvc75",
	"registration": {
		"enable_replication": "trisync",
		"secondary_storage": {
			"replication_type": "sync",
			"access_ip": "9.3.250.136",
			"user_id": "pureuser"
		},
		"tertiary_storage": {
			"replication_type": "async",
			"access_ip": "9.3.250.136",
			"user_id": "pureuser"
		},
		"pure_trisync_enabled": True,
		"replication_device": [
			"backend_id:pvc126,san_ip:9.3.250.136,api_token:b529b479-f7b6-aa55-d142-f5b11bf9f04b,type:sync,uniform:True",
			"backend_id:pvc126,san_ip:9.3.250.136,api_token:b529b479-f7b6-aa55-d142-f5b11bf9f04b,type:async"
		]
	}
}