Skip to main content

We've Moved!

Product Documentation has moved to docs.hitachivantara.com
Hitachi Vantara Knowledge

Volume migration resources

Attaching volumes to storage

You can set up connections between volumes on the source storage system and the target storage system according to FC or iSCSI protocols in Storage Advisor during Volume Migration.

HTTP request syntax (URI)
POST https://ipAddress/v1/volume-manager/attach-to-storage
Request structure The request body structure is shown below:
{
    "sourceStorageSystemId": "",
    "targetStorageSystemId" : "",
    "chapUser": {    
            "userName" : "",
            "secret" : ""
     }
      "mutualUser" :    
    { 
           "userName" : "",
           "secret" : ""
    }
  
    "portsInfo" : [
                {
                    "srcPort" : "",  
                    "targetPort": "" 
                   
                },
                {
                    "srcPort" : "",
                    "targetWwn" : "",
                    "targetPort": null 
                }
    ],
    "volumes" : [
                {
                    "lun" : , (optional)
                    "volumeId" : 62
                }
    ]
}
Parameter Required Type Description
sourceStorageSystemId String ID of the source storage system.
targetStorageSystemId String ID of the target storage system.
chapUser Object Information about the CHAP user.
userName String User name.
secret String Secret of the user.
mutualUser Object Information about the mutual user.
portsInfo List Information about the ports.
srcPort String Source port.
targetPort String Target port.
volumes List List of logical units.
lun Integer Logical unit.
volumeId Integer Volume ID.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes
Status Code HTTP Name Description
202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified URI is not valid or the resource does not exist.
Example request
{
	"sourceStorageSystemId": "420209",
	"targetStorageSystemId": "430209",
  "portsInfo": [
    {
      "srcPort": "CL1-A",
      "targetPort": "CL1-A"
    },
    {
      "srcPort": "CL1-D",
      "targetPort": "CL1-C"
    }
  ],
  "volumes": [
    {
      "volumeId": 138
    }
  ]
}

Example response
 {
  "jobId": "660f1c51-2e0b-4fef-8b25-e68486ce419f",
  "title": {
    "text": "Attach volumes to servers.",
    "messageCode": "AttachVolumesToServersJobTitleMessage",
    "parameters": {}
  },
  "user": "sysadmin",
  "status": "SUCCESS",
  "startDate": 1527037563303,
  "endDate": 1527037838400,
  "parentJobId": null,
  "reports": [
    {
        "reportMessage": {
        "text": "Storage System 410209. Attaching volumes with IDs: [113] to servers with IDs: [13].",
        "messageCode": "AttachVolumesToServersPreStepMessage",
        "parameters": {
          "servers": [
            13
          ],
          "storageSystemId": "410209",
          "volumes": [
            113
          ]
        }
      },
      "severity": "INFORMATION",
      "creationDate": 1527037563355
    },
    {
      "reportMessage": {
        "text": "Storage System 410209. Completed attaching volumes with IDs: [113] to servers with IDs: [13].",
        "messageCode": "AttachVolumesToServersPostStepMessage",
        "parameters": {
          "servers": [
            13
          ],
          "storageSystemId": "410209",
          "volumes": [
            113
          ]
        }
      },
      "severity": "INFORMATION",
      "creationDate": 1527037838345
    }
  ],
  "links": [
    {
      "rel": "_self",
      "href": "/v1/jobs/660f1c51-2e0b-4fef-8b25-e68486ce419f"
    }
  ],
  "tags": [
    {
      "tag": "rainier"
    }
  ],
  "isSystem": false
}       


Virtualizing volumes

You can create a single path for all given LUNs, create external parity groups per LUN, add LDEVs to each external parity group, and attach the server to the given LUNs in Storage Advisor for the virtualization phase of volume migration.

NoteThis method is deprecated in Hitachi Storage Advisor 3.1. Use Creating external volumes instead.
HTTP request syntax (URI)
POST https://ipAddress/v1/volume-manager/virtualize
Request structure The request body structure is shown below:
{
 "targetPortInfo" : 
       [ 
            {  
               "portId": "",
               "external_wwn": "",
               "external_iscsiName": "",
               "protocol":"" 
            }
       ]
  "serverInfos":
       [
            {   
               "targetPortForHost" : "",
               "serverWwn": "",
               "iscsiInitiatorNames" : ["",""],
            },
...      
       ],
  "luns":[ , ]
  "storageSystemId": "",
  "hostMode" : "",
  "hostModeOptions": ["", ""],
  "enableZoning": ,
  "forceOverwriteChapSecret":
}
Parameter Required Type Description
targetPortInfo List Information about the target port.
portId String Port ID.
external_wwn String External World Wide Name.
external_iscsiName String Name of the iSCSI external port.
protocol String Type of protocol. Can be FIBRE or ISCSI.
serverInfos List Information about the server such as the target port for the host and a list of iSCSI initiator names.
targetPortForHost String Target port for the host.
serverWwn String World Wide Name of the server.
iscsInitiatorNames List List of iSCSI initiator names.
luns List Information about the logical units (LUNs).
StorageSystemId String ID of the storage system.
hostMode String Host mode set for the volume.
hostModeOptions List Host mode options for the volume.
enableZoning Whether to enable zoning.
forceOverwriteChapSecret Whether to force overwriting the CHAP secret.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes
Status Code HTTP Name Description
202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified URI is not valid or the resource does not exist.
Example request
 
{
  "targetPorts": [
    "CL6-B"
  ],
  "serverInfos": [
    {
      "targetPortForHost": "CL3-A",
      "serverId": 7,
      "serverWwns": [
        "5000087000536422"
      ]
    }
  ],
  "externalLuns": [
    {
      "portId": "CL6-B",
      "wwn": "50060e8012272f21",
      "lunId": 0
    },
    {
      "portId": "CL6-B",
      "wwn": "50060e8012272f21",
      "lunId": 5
    }
  ],
  "storageSystemId": "50101",
  "enableZoning": true,
  "hostMode": "VMWARE_EX",
  "hostModeOptions": [
    54,
    63
  ]
}
Example response

{
  "jobId": "d704f1a6-8116-47fc-8dc3-ba1c20c72e25",
  "title": {
    "text": "Create external Volume on Storage System 50101",
    "messageCode": "CreateExternalVolumeJobTitleMessage",
    "parameters": {
      "storageSystemId": "50101"
    }
  },
  "user": "sysadmin",
  "status": "IN_PROGRESS",
  "startDate": 1527805000127,
  "endDate": null,
  "parentJobId": null,
  "reports": [],
  "links": [
    {
      "rel": "_self",
      "href": "/v1/jobs/d704f1a6-8116-47fc-8dc3-ba1c20c72e25"
    }
  ],
  "tags": [
    {
      "tag": "rainier"
    }
  ],
  "isSystem": false
}

Creating external volumes

You can create external volumes in Storage Advisor.

HTTP request syntax (URI)
POST https://ipAddress/v1/external-volume-manager/create
Request structure

The request body structure is shown below:

{
 "storageSystemId": "",
 "externalDevices": [
   {
     "externalDeviceId": ""
     "externalPaths": [
       {
         "portId": "",
         "externalWwn": "",
         "externalIscsiInformation": [
           {
             "iscsiName": "",
             "ipAddress": ""
           }
         ],
         "externalLun": ""
       }
     ]
   }
 ],
 "attachExternalVolumeToServer":
 {
   "intendedImageType": "",
   "hostModeOptions": [],
   "enableZoning": ,
   "enableLunUnification": ,
   "forceOverwriteChapSecret": ,
   "shareHgByAllServers": ,
   "ports":[
   {
     "serverId": ,
     "serverWwns": [""],
     "iscsiInitiatorNames": [""],
     "portIds": [""]
   }]
 }
}

Parameter

Type

Required

Description

externalDeviceId String Yes ID of the external device.
externalPaths Object No List of the available external paths. If you do not specify a path, the method automatically selects an available path.
PortId String Yes ID of the storage port of the internal storage system.
externalWwn String Yes WWN of the storage port of the external storage system.
externalIscsiInformation Object Yes iSCSI information of the storage port of the external storage system.
iscsiName String Yes iSCSI target name of the storage port of the external storage system.
ipAddress String Yes IP address of the storage port of the external storage system.
externalLun Integer Yes ID of the LUN.
attachExternalVolumeToServer Object Yes Information about the external volumes attached to the server.
intendedImageType No String Host mode set for the volume.
hostModeOptions No List Host mode options set for the volume. Default values are automatically set in case the server OS is either VMWARE_EX or WIN_EX. The valid value is a host mode options number without any prefix, or null for auto select.
enableZoning No Boolean Whether or not zones are created on the SAN fabric. If enableZoning is set to false, then zoning is disabled.

The default value is false.

This is valid only for FC servers and must be NULL for iSCSI servers.

enableLunUnification No Boolean Whether or not Lun (logical unit number) assignments for volumes that span multiple servers are consistent.
forceOverwriteChapSecret No Boolean Whether or not Hitachi Storage Advisor overwrites the CHAP user secret when there is any port that exists with the same CHAP user name. The default value is FALSE.
shareHgByAllServers No Boolean Whether to share host groups among servers. The default setting is False, which does not allow sharing. Specify True to share host groups among servers.
serverId Yes Integer ID of the server.
serverWwns No List The WWNs for a server. If a WWN is not specified, then all WWNs associated with the server are used.

You must specify either serverWwns or iscsiInitiatorNames.

iscsiInitiatorNames No List The iSCSI names of the server to attach.

If iscsiInitiatorNames is not specified, then all iSCSI names of the server are used to attach.

You must specify either serverWwns or iscsiInitiatorNames but not both.

portIds No List Port IDs.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes

Status code

HTTP name

Description

202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request contains invalid request payload or required HTTP header was not specified.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example request
{
		  "storageSystemId": "410209",
"externalDevices": [
  {
           "externalDeviceId": " XYZ 50405F7702BC",
    "externalPaths": [
               {
                   "portId": "CL1-E",
                   "externalWwn": "50060E80125F7700",
                   "externalIscsiInformation": null,
                   "externalLun": 12
               },
               {
                   "portId": "CL1-E",
                   "externalWwn": "50060E80125F7710",
                   "externalIscsiInformation": null,
                   "externalLun": 12
               }
    ]
  }
],
"attachExternalVolumeToServer":
{
  "intendedImageType": "LINUX",
  "hostModeOptions": [ ],
  "enableZoning": false,
  "enableLunUnification": false,
  "forceOverwriteChapSecret": null,
  "shareHgByAllServers": true,
  "ports" :[
  {
    "serverId": 1,
    "serverWwns": ["50:00:00:11:22:33:44:55"],
    "iscsiInitiatorNames": null,
    "portIds": ["CL3-E"]
  }]
 }
}

External paths auto select

{
		  "storageSystemId": "410209",
"externalDevices": [
  {
    "externalDeviceId": "ExampleCompany 50405F7701DC",
    "externalPaths": []
  }
],
"attachExternalVolumeToServer":
{
  "intendedImageType": "LINUX",
  "hostModeOptions": [ ],
  "enableZoning": false,
  "enableLunUnification": false,
  "forceOverwriteChapSecret": null,
  "ports" :[
  {
    "serverId": 1,
    "serverWwns": ["50:00:00:11:22:33:44:55"],
    "iscsiInitiatorNames": null,
    "portIds": ["CL3-E"]
  }]
}
}

Unvirtualizing volumes

You can delete external paths and logical devices that are created during the virtualization phase of volume migration in Storage Advisor.

NoteThis method is deprecated in Hitachi Storage Advisor 3.1. Use Deleting external volumes instead.
HTTP request syntax (URI)
POST https://ipAddress/v1/volume-manager/unvirtualize 
Request structure
{
  "storageSystemId": "",
  "volumeIds": [],
  "cleanupZones":
}
Parameter Required Type Description
storageSystemId YesString ID of the storage system.
volumeIds YesList List of volume IDs. Volume ID type is long.
cleanupZones No Boolean Remove zone for the Fibre Channel, if applicable.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes
Status Code HTTP Name Description
202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified URI is not valid or the resource does not exist.
Example request
{
  "storageSystemId": "",
  "volumeIds": [],
  "cleanupZones":
}
Example response
{ 
  "jobId": "e15119d7-2ea0-4ffe-9c28-18f905df5c687", 
  "title": { 
     "text": "Deleting Volume", 
     "messageCode": "DeletingExternalVolumeJobTitleMessage", 
     "parameters": {} 
  }, 
  "user": "sysadmin", 
  "status": "IN_PROGRESS", 
  "startDate": 1510816371239, 
  "endDate": null, 
  "parentJobId": null, 
  "reports": [], 
  "links": [
     { 
        "rel": "_self", 
        "href": "/v1/jobs/e15119d7-2ea0-4ffe-9c28-18f905df5c687" 
     }
  ], 
  "tags": [
     { 
        "tag": "rainier" 
     }
  ], 
  "isSystem": false 
} 

Deleting external volumes

You can delete external volumes in Storage Advisor.

HTTP request syntax (URI)
POST https://ipAddress/v1/external-volume-manager/delete
Request structure
{
  "storageSystemId": "",
  "volumeIds": [],
  "cleanupZones":
}
Parameter Required Type Description
storageSystemId YesString ID of the storage system.
volumeIds YesList List of volume IDs. Volume ID type is long.
cleanupZones No Boolean Remove zone for the Fibre Channel, if applicable.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes
Status Code HTTP Name Description
202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified URI is not valid or the resource does not exist.
Example request
Example response
{ 
 "jobId": "e15119d7-2ea0-4ffe-9c28-18f905df5c687", 
 "title": { 
    "text": "Deleting Volume", 
    "messageCode": "DeletingExternalVolumeJobTitleMessage", 
    "parameters": {} 
 }, 
 "user": "sysadmin", 
 "status": "IN_PROGRESS", 
 "startDate": 1510816371239, 
 "endDate": null, 
 "parentJobId": null, 
 "reports": [], 
 "links": [
    { 
       "rel": "_self", 
       "href": "/v1/jobs/e15119d7-2ea0-4ffe-9c28-18f905df5c687" 
    }
 ], 
 "tags": [
    { 
       "tag": "rainier" 
    }
 ], 
 "isSystem": false 
}

Discovering external LUNs on target port

You can query all external volumes on a target storage system for volume migration in Storage Advisor. This should be called after attaching volumes to storage in order to choose LUNs and then proceed with volume virtualization.

NoteThis method is deprecated in Hitachi Storage Advisor 3.1. Use Discovering external devices and Listing external devicesinstead.
HTTP request syntax (URI)
POST https://ipAddress/v1/storage-systems/storageSystemId/storage-ports/storagePortId/discover-groups
Request structure To show all external LUNs:
      {
          "wwn": null,
          "iscsiInfo": null
      }

To show all external LUNs on one specific source port. Port protocol is FC:

      {
          "wwn": "ff00000000000000",
          "iscsiInfo": null
      }

To show all external LUNs on one specific source port. Port protocol is iSCSI:

      {
          "wwn": null,
          "iscsiInfo": 
              {
                  "ip" : 172.17.91.xx,
                  "iscsiName" : "iqn.1994-04.com.example:rsd.h8h.t.10011.1d097"
              }
      }
Parameter Required Type Description
wwn String World wide name.
iscsiInfo Object iSCSI information.
ip String IP address.
iscsiName String iSCSI name.
Response structure The response body structure is shown below:
[

   {
       "portId": "",
       "wwn": "",
       "lunId": ,
       "capacity": ,
       "productId": "",
       "eVolIdC": ""
       "externalIscsiInformation": { 
            "ipAddress" : "",
            "iscsiName" : "",
            "amd" : "CHAP",
            "direction" : "MUTUAL",
            "chapUser" : {
               "userName": "-",
               "secret": "-"
            }
            "iscsiVirtualPortId" : "-"
       },
       "isDDM": false

] 
Parameter Type Description
portId String ID of the port.
wwn String World Wide Name.
lunId Integer ID of the logical unit.
capacity Integer Capacity of the volume.
productId String ID of the product.
eVolIdC String
externalIscsiInformation Object Information about the external iSCSI port.
ipAddress String IP address of the port.
iscsiName String Name of the iSCSI port.
amd String
direction String
chapUser Object Information about the CHAP user.
userName String Name of the user.
secret String Secret of the user.
iscsiVirtualPortId String iSCSI virtual port ID.
isDDM Boolean Whether there is Direct Data Mapping.
Return codes
Status Code HTTP Name Description
202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified URI is not valid or the resource does not exist.
Example response
[
  {
    "portId": "CL6-B",
    "wwn": "50060e8012284012",
    "lunId": 0,
    "capacity": 2593929560064,
    "serialNumber": "410304",
    "productId": "VSP Gx00",
    "vendorId": "XYZ",
    "eVolIdC": "XYZ 50402840000C",
    "externalIscsiInformation": null,
    "isDDM": false
  },
  {
    "portId": "CL6-B",
    "wwn": "50060e8012284012",
    "lunId": 1,
    "capacity": 2593929560064,
    "serialNumber": "410304",
    "productId": "VSP Gx00",
    "vendorId": "ExampleCompany",
    "eVolIdC": "ExampleCompany 50402840000B",
    "externalIscsiInformation": null,
    "isDDM": false
  }
]

Discovering external devices

You can update the external device cache of the specified port in Storage Advisor. If you are updating a different port between the last time and this time, the external device cache of the previous port is not changed.

HTTP request syntax (URI)
POST https://ipAddress/v1/storage-systems/storageSystemId/external-devices/discover
Request structure

The request body structure is shown below:

{
 "storagePortIds": [ "" ]
}

Parameter

Type

Required

Description

storagePortIds List Yes The IDs of the storage port.
Response structure

The response body structure is shown below:

    {
        "jobId": "",
        "title":
        {
            "text": "",
            "messageCode": "",
            "parameters":
            {
            }
        },
        "user": "",
        "status": "",
        "startDate": ,
        "endDate": ,
        "parentJobId": ,
        "reports":
        [
        ],
        "links":
        [
            {
                "rel": "",
                "href": ""
            }
        ],
        "tags":
        [
        ],
        "isSystem": 
    }

Parameter

Type

Description

jobId String The ID of the job that is created to carry out the request.
title Object The title of the job in progress.
text String Text of the message.
messageCode String ID of the message. This maps to the message description.
parameters Object List of parameters and the values, as captured in the job message.
user String Name of the user who started the job.
status String

Job status. Valid values:

• In Progress

• Failed

• Success

• Success With Errors

startDate Integer The date and time this job started. Format is the Unix epoch.
endDate Integer Date and time when this job ended. If the job is still in progress, this parameter does not return a value. Format is the Unix epoch.
parentJobId Integer The ID of the job that spawned this job. If not applicable, the value null is returned.
reports List Messages associated with this job.
links List Displays related resources.
self String URI that includes the resource ID.
tags List List of user-defined identifiers. Each identifier (tag) must be a minimum of three characters in length.
isSystem Boolean Whether a job was created by a system or a user. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets to false.
Return codes

Status code

HTTP name

Description

202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request contains invalid request payload or required HTTP header was not specified.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example request

Listing external devices

You can retrieve external devices in Storage Advisor.

HTTP request syntax (URI)
GET https://ipAddress/v1/storage_systems/storageSystemId/external-devices
Request structure Not applicable.
Response structure

The request body structure is shown below:

{
  "resources":[{
  {
    "storageSystemId": "",
    "externalDeviceId": "",
    "size": ,
    "productId": ,
    "externalStorageSystemInformation":
    {
      "serialNumber": "",
      "vendorId": "",
      "productId": ""
    },
    "externalPaths": [{
      "portId": "",
      "externalWwn": "",
      "externalIscsiInformation"
      {
        "iscsiName": "",
        "ipAddress": ""
      },
      "externalLun":
    }],
    "mapped": ""
  }
 }]
 "total": ,
 "nextToken": 
}

Parameter

Type

Description

storageSystemId String ID of the storage system.
externalDeviceId String ID of the external device.
size Long Size of the volume, in bytes.
productId String Product name of the external device.
externalStorageSystemInformation Object External storage system of the external device.
serialNumber String ID of the external storage system.
vendorId String Vendor name of the external storage system.
productId String Product name of the external storage system.
externalPaths Object List of the available external paths.
portId String ID of the storage port of the internal storage system.
externalWwn String WWN of the storage port of the external storage system.
externalIscsiInformation Object iSCSI information of the storage port of the external storage system.
iscsiName String iSCSI name of the storage port of the external storage system.
ipAddress String IP address of the storage port of the external storage system.
externalLun String ID of the LUN of the storage port of the external storage system.
mapped Boolean Whether the external device has already been mapped to an external parity group.
Return codes
Example response
{
   "resources": [
       {
           "storageSystemId": "410209",
           "externalDeviceId": "XYZ 50405F7702BC",
           "size": 1073741824,
           "productId": "OPEN-V",
           "externalStorageSystemInformation": {
               "serialNumber": "424439",
               "vendorId": "XYZ",
               "productId": "VSP Gx00"
           },
           "externalPaths": [
               {
                   "portId": "CL1-E",
                   "externalWwn": "50060E80125F7700",
                   "externalIscsiInformation": null,
                   "externalLun": 12
               },
               {
                   "portId": "CL1-E",
                   "externalWwn": "50060E80125F7710",
                   "externalIscsiInformation": null,
                   "externalLun": 12
               }
           ],
           "mapped": false
       },
   ],
   "total": 1,
   "nextToken": null
}

Listing external volumes

You can retrieve external volumes for Volume Migration in Storage Advisor.

HTTP request syntax (URI)
GET https://ipAddress/v1/storage-system/storageSystemId/external-volumes
Request structure Not applicable.
Response structure The response body structure is shown below:
{
    "resources": [
        {
            "volumeId": ,
            "mappedVolumeId": ,
            "externalParityGroupId": "",
            "storageSystemId": "",
            "poolId": ,
            "label": "",
            "size": ,
            "usedCapacity": ,
            "availableCapacity": ,
            "utilization": ,
            "status": "",
            "type": "",
            "provisioningStatus": "",
            "attachedVolumeServerSummary":
            {
              [
                {
                  "serverId": ,
                  "paths":
                  [
                    {
                      "storagePortId": "",
                      "storageSystemId": "",
                      "lun": ,
                      "name": "",
                      "hostMode": "",
                      "wwns": [],
                      "hostModeOptions": [],
                      "preferredPath": , 
                      "iscsiTargetInformation": {
                        "iscsiTargetName": "",
                        "iscsiInitiatorNames": [""],
                        "mutualChapUser": "",
                        "chapUsers": [""],
                        "authenticationMode": "",
                        "authenticationDirection": ""
                      }
                    }
                  ]
                }
              ]
            },
            "migrationSummary": {
                "ownerTaskId": ,
                "migrationType": ""
            }
        }
    ],
    "total": ,
    "nextToken": 
}

Parameter Type Description
volumeId Long ID number of the volume within the parent storage system.
mappedVolumeId Long ID of the mapped volume.
externalParityGroupId String ID of the external parity group.
storageSystemId String ID of the storage system.
poolId String ID of the pool from which the resource is allocated.
label String Name of the volume.
size Long Size of the volume, in bytes.
usedCapacity Long Sum of used capacity per volume resource, in bytes.
availableCapacity Long Unused capacity of the resource, in bytes.
utilization Integer The percentage usage of the volume capacity. The utilization percentage=(usedCapacity/size)*100.
status String Volume status. Valid values:
  • NORMAL
  • BLOCKED
  • BUSY
  • UNKNOWN
  • NONE
type String Type of pool from which the volume is allocated. Valid value:
  • EXTERNAL
provisioningStatus String Provisioning status of a volume. Valid values:
  • ATTACHED
  • UNATTACHED
  • UNMANAGED
attachedVolumeServerSummary List Volume provisioning summary details.
serverId Integer ID of the server.
paths List Paths that exist on the volume.
storagePortId String ID of the storage port.
storageSystemId String ID of the storage system.
lun Integer ID of the LUN.
name String Name of the resource.
hostMode String Host mode set for the volume.
wwns List List of WWNs of connected hosts. NULL for iSCSI path.
hostModeOptions List of Integers Host mode options for the volume.
preferredPath Boolean Whether the LU path (host group) is preferred or not.
iscsiTargetInformation Object Displays iSCSI target information. NULL for FC host groups.
iscsiTargetName String Displays the iSCSI name of the iSCSI target.
iscsiInitiatorNames String Displays the list of iSCSI names of the host bus adapters registered in the iSCSI target formatted in IQN or EUI format.
mutualChapUser String Displays the CHAP user name of the iSCSI target.
chapUsers String Displays the list of CHAP users of the host bus adapters registered in the iSCSI target.
authenticationMode Enum CHAP authentication mode for the iSCSI target. This information is obtained in the case of an iSCSI port.
  • CHAP: CHAP authentication mode.
  • NONE: No authentication mode.
  • BOTH: Both CHAP authentication and no authentication mode.
authenticationDirection Enum CHAP authentication direction for the iSCSI target. This information is obtained in the case of an iSCSI port.
  • ONEWAY: The iSCSI target authenticates the iSCSI initiator.
  • MUTUAL: The iSCSI target and the iSCSI initiator authenticate each other.
migrationSummary Object List of migration attributes for the volume.
ownerTaskId String The ID of the owner migration task.
migrationType String Migration type. Valid values:
  • MIGRATION
  • NONE
Return codes
Status Code HTTP Name Description
200 OK The server has started the operation.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example request
GET https://10.76.48.147/v1/storage-systems/410209/external-volumes
Example response
{
    "resources":[
        {
            "volumeId":87,
            "mappedVolumeId":70,
            "externalDeviceId":"XYZ 50402904033B",
            "externalParityGroupId":"1-5",
            "storageSystemId":"410209",
            "poolId":"7",
            "label":"",
            "size":4398046511104,
            "usedCapacity":4398426095616,
            "availableCapacity":0,
            "utilization":100,
            "status":"NORMAL",
            "type":"EXTERNAL",
            "provisioningStatus":"UNMANAGED",
            "attachedVolumeServerSummary":[
                {
                    "serverId":null,
                    "paths":[
                        {
                            "storagePortId":"CL1-F",
                            "storageSystemId":"410209",
                            "lun":1,
                            "hostGroupId":"CL1-F-2",
                            "name":"Win-9121_001",
                            "hostMode":"WIN_EX",
                            "wwns":["100000053326F7CC"
                            ],
                            "hostModeOptions":[40,
                                73
                            ],
                            "iscsiTargetInformation":null,
                            "preferredPath":null
                        }
                    ]
                }
            ],
            "migrationSummary":
            {
                "ownerTaskId":null,
                "migrationType":"NONE"
            }
        },
        ...
    "total":11,
    "nextToken":null
}

Getting a specific external volume

You can retrieve a specific external volume for Volume Migration in Storage Advisor.

HTTP request syntax (URI)
GET https://ipAddress/v1/storage-system/storageSystemId/external-volumes/volumeId
Request structure Not applicable.
Response structure The response body structure is shown below:
        {
            "volumeId": ,
            "mappedVolumeId": ,
            "externalParityGroupId": "",
            "storageSystemId": "",
            "poolId": ,
            "label": "",
            "size": ,
            "usedCapacity": ,
            "availableCapacity": ,
            "utilization": ,
            "status": "",
            "type": "E",
            "provisioningStatus": "",
            "attachedVolumeServerSummary":
            {
              [
                {
                  "serverId": ,
                  "paths":
                  [
                    {
                      "storagePortId": "",
                      "storageSystemId": "",
                      "lun": ,
                      "name": "",
                      "hostMode": "",
                      "wwns": [],
                      "hostModeOptions": [],
                      "preferredPath": , 
                      "iscsiTargetInformation": {
                        "iscsiTargetName": "",
                        "iscsiInitiatorNames": [""],
                        "mutualChapUser": "",
                        "chapUsers": [""],
                        "authenticationMode": "",
                        "authenticationDirection": ""
                      }
                    }
                  ]
                }
              ]
            },
            "migrationSummary": {
                "ownerTaskId": ,
                "migrationType": ""
            }
        }
Parameter Type Description
volumeId Long ID number of the volume within the parent storage system.
mappedVolumeId Long Mapped volume ID.
externalParityGroupId String ID of the external parity group.
storageSystemId String ID of the storage system.
poolId String ID of the pool from which the resource is allocated.
label String Name of the volume.
size Long Size of the volume, in bytes.
usedCapacity Long Sum of used capacity per volume resource, in bytes.
availableCapacity Long Unused capacity of the resource, in bytes.
utilization Integer The percentage usage of the volume capacity. The utilization percentage=(usedCapacity/size)*100.
status String Volume status. Valid values:
  • NORMAL
  • BLOCKED
  • BUSY
  • UNKNOWN
  • NONE
type String Type of pool from which the volume is allocated. Valid value:
  • EXTERNAL
provisioningStatus String Provisioning status of a volume. Valid values:
  • ATTACHED
  • UNATTACHED
  • UNMANAGED
attachedVolumeServerSummary List Volume provisioning summary details.
serverId Integer ID of the server.
paths List Paths that exist on the volume.
storagePortId String ID of the storage port.
storageSystemId String ID of the storage system.
lun Integer ID of the LUN.
name String Name of the resource.
hostMode String Host mode set for the volume.
wwns List List of WWNs of connected hosts. NULL for iSCSI path.
hostModeOptions List of Integers Host mode options for the volume.
preferredPath Boolean Whether the LU path (host group) is preferred or not.
iscsiTargetInformation Object Displays iSCSI target information. NULL for FC host groups.
iscsiTargetName String Displays the iSCSI name of the iSCSI target.
iscsiInitiatorNames String Displays the list of iSCSI names of the host bus adapters registered in the iSCSI target formatted in IQN or EUI format.
mutualChapUser String Displays the CHAP user name of the iSCSI target.
chapUsers String Displays the list of CHAP users of the host bus adapters registered in the iSCSI target.
authenticationMode Enum CHAP authentication mode for the iSCSI target. This information is obtained in the case of an iSCSI port.
  • CHAP: CHAP authentication mode.
  • NONE: No authentication mode.
  • BOTH: Both CHAP authentication and no authentication mode.
authenticationDirection Enum CHAP authentication direction for the iSCSI target. This information is obtained in the case of an iSCSI port.
  • ONEWAY: The iSCSI target authenticates the iSCSI initiator.
  • MUTUAL: The iSCSI target and the iSCSI initiator authenticate each other.
migrationSummary Object List of migration attributes for the volume.
ownerTaskId String The ID of the owner migration task.
migrationType String Migration type. Valid values:
  • MIGRATION
  • NONE
Return codes
Status Code HTTP Name Description
200 OK The server has started the operation.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example response

       {
            "volumeId":87,
            "mappedVolumeId":70,
            "externalDeviceId":"XYZ 50402904033B",
            "externalParityGroupId":"1-5",
            "storageSystemId":"410209",
            "poolId":"7",
            "label":"",
            "size":4398046511104,
            "usedCapacity":4398426095616,
            "availableCapacity":0,
            "utilization":100,
            "status":"NORMAL",
            "type":"EXTERNAL",
            "provisioningStatus":"UNMANAGED",
            "attachedVolumeServerSummary":[
                {
                    "serverId":null,
                    "paths":[
                        {
                            "storagePortId":"CL1-F",
                            "storageSystemId":"410209",
                            "lun":1,
                            "hostGroupId":"CL1-F-2",
                            "name":"Win-9121_001",
                            "hostMode":"WIN_EX",
                            "wwns":["100000053326F7CC"
                            ],
                            "hostModeOptions":
                            [40,
                                73
                            ],
                            "iscsiTargetInformation":null,
                            "preferredPath":null
                        }
                    ]
                }
            ],
            "migrationSummary":
            {
                "ownerTaskId":null,
                "migrationType":"NONE"
            }
        
     }

Detaching volumes from storage

This operation deletes the paths from source storage system to target storage system in Storage Advisor.

HTTP request syntax (URI)
POST https://ipAddress/v1/storage-systems/storageSystemId/volumes/volumeId/detach-from-storage
Request structure The request body structure is shown below:
{
  targetStorageSystemId : ""
}
 
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes
Status Code HTTP Name Description
202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified URI is not valid or the resource does not exist.

Listing migration tasks

You can retrieve a list of migration tasks for Volume Migration in Storage Advisor.

HTTP request syntax (URI)
GET https://ipAddress/v1/storage-systems/storageSystemId/migration-tasks
Request structure Not applicable.
Response structure

The response body structure is shown below:

{
"resources": [
  {
   "migrationTaskId": "",
   "migrationTaskName": "",
   "comments": "",
   "jobId": "",
   "schedule": {
     "datetime": ""
   },
   "migrationPairCount":
  },
...
 ],
"total": ,
"nextToken": 
}

Parameter

Type

Description

migrationTaskId Integer ID of the migration task.
migrationTaskName String Name of the migration task. Min=1, max=32 characters.
comments String Comment for the migration task. Min = 1, max = 255 characters.
jobId String ID of the corresponding migration job. This parameter is only available once the job is executed.
schedule Object Schedule of the migration job.
datetime String Scheduled date and time of the migration job to be executed (in ISO 8601 format).
migrationPairCount Integer Number of migration pairs defined in the task.
Return codes

Status Code

HTTP name

Description

200 OK The server has started the operation.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example response
{
    "resources": [
        {
            "migrationTaskId": 1,
            "migrationTaskName": "MigrationTest",
            "comments": null,
            "jobId": null,
            "schedule": {
                "datetime": "2018-01-01T00:00:00.000Z"
            },
            "migrationPairCount": 1
        }
    ],
    "total": 1,
    "nextToken": null
}

Getting a specific migration task

You can retrieve a specific migration task for Volume Migration in Storage Advisor.

HTTP request syntax (URI)
GET https://ipAddress/v1/storage-systems/storageSystemId/migration-tasks/migrationTaskId
Request structure N/A
Response structure

The response body structure is shown below:

 {
   "migrationTaskId": "",
   "migrationTaskName": "",
   "comments": "",
   "jobId": "",
   "schedule": {
     "datetime": ""
   },
   "migrationPairCount":
 }

Parameter

Type

Description

migrationTaskId Integer ID of the migration task.
migrationTaskName String Name of the migration task. Min=1, max=32 characters.
comments String Comment for the migration task. Min=1, max=255 characters.
jobId String ID of the corresponding migration job. This parameter is only available once the job is executed.
schedule Object Schedule of the migration job.
datetime String Scheduled date and time of the migration job to be executed (in ISO 8601 format).
migrationPairCount Integer Number of migration pairs defined in the task.
Return codes

Status Code

HTTP name

Description

200 OK The server has started the operation.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example response
{
    "resources": [
        {
            "migrationTaskId": 1,
            "migrationTaskName": "MigrationTest",
            "comments": null,
            "jobId": null,
            "schedule": {
                "datetime": "2018-01-01T00:00:00.000Z"
            },
            "migrationPairCount": 1
        }
    ],
    "total": 1,
    "nextToken": null
}

Creating a migration task

You can create a migration task for Volume Migration in Storage Advisor.

HTTP request syntax (URI)
POST https://ipAddress/v1/storage-systems/storageSystemId/migration-tasks
Request structure

The request body structure is shown below:

 {
   "migrationTaskName": "",
   "comments": "",
   "schedule": {
     "datetime": ""
   },
   "targetPoolId":,
   "sourceVolumeIds": []
 }
Parameter Required Type Description
migrationTaskName Yes String Name of the migration task. Min=1, max=32 characters.
comments No String Comment for the migration task. Min=1, max=255 characters.
schedule No Object Schedule information of the migration job, such as:
  • datetime: Scheduled date and time of the migration job to be executed in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ). If executing immediately, specify null.
targetPoolId Yes Integer ID of the storage pool to be migrated.
sourceVolumeIds Yes List List of up to 300 migration source volume IDs.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes

Status code

HTTP name

Description

202 Accepted The request has been accepted for processing, but the processing has not been completed.
400 Bad request The request contains an invalid request payload or the required HTTP header was not specified.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
Example request
{
    "migrationTaskName": "test-migration",
    "comments": "",
    "schedule": {
        "datetime": "2018-01-01T00:00:00.000Z"
    },
    "targetPoolId": 0,
    "sourceVolumeIds": [
        684
    ]
}

Interrupting a running migration job

You can interrupt a running migration job in Storage Advisor.

HTTP request syntax (URI)
POST https://ipAddress/v1/storage-systems/storageSystemId/migration-tasks/migrationTaskId/interrupt
Request structure Not applicable.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes

Status code

HTTP name

Description

202 Accepted The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.

Updating a migration task

You can update a migration task for Volume Migration in Storage Advisor.

HTTP request syntax (URI)
POST https://ipAddress/v1/storage-systems/storageSystemId/migration-tasks/migrationTaskId
Request structure

The request body structure is shown below:

 {
   "migrationTaskName": "",
   "comments": "",
   "schedule": {
     "datetime": ""
   },
   "targetPoolId":
 }

Parameter

Required

Type

Description

migrationTaskName No String Name of the migration task. Min=1, max=32 characters.
comments No String Comment for the migration task. Min=1, max=255 characters.
schedule No Object Schedule information for the migration job, such as:
  • datetime: Scheduled date and time of the migration job to be executed in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ). If executing immediately, specify null.
targetPoolId No Integer ID of the target pool.
Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes

Status code

HTTP name

Description

202 Accepted The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example request
{
    "migrationTaskName": "MigrationTest",
    "comments": null,
    "schedule": {
        "datetime": "2018-01-01T00:00:00.000Z"
    }
}

Deleting a migration task

You can delete a migration task in Storage Advisor. There are 2 use cases for this method. 1) After the job for the migration task is finished, you should delete the migration task in order to clean up the resource in Storage Advisor. 2) If the migration task is scheduled for the future and the job has not started, you can cancel the job as well as cleaning up the resource in Storage Advisor.

HTTP request syntax (URI)
DELETE https://ipAddress/v1/storage-systems/storageSystemId/migration-tasks/migrationTaskId
Request structure

Not applicable.

Response structure

The response body structure is shown below:

{
  "jobId": "",
  "title":
   {
     "text": "",
     "messageCode": "",
     "parameters":
      {
      }
   },
   "user": "",
   "status": "",
   "startDate": ,
   "endDate": ,
   "parentJobId": ,
   "reports":
   [
   ],
   "links":
   [
      {
         "rel": "_self",
         "href": "/v1/jobs/jobId"
      }
   ],
   "tags":
   [
   ],
   "isSystem": 
}
Parameter Type Description
jobId String ID of the job.
text String Title of the task that is in progress.
messageCode String ID of the message.
parameters Object List of parameters and the values, as captured in the job message.
user String User who initiated the request.
status String Status of the job:In_progress,Success,Success_With_Errors, orFailed.
startDate Long Start date and time of the job (in Epoch time format).
endDate Long End date and time of the job (in Epoch time format).
parentJobId String ID of the job that spawned this job. If there is no parent job, this value is null.
reports List Messages associated with this job.
rel String Indicates the type of link for the href parameter. If the value is _self, it identifies a resource equivalent to the containing element.
href String URL of this job.
tags Set Any tags applied to this job.
isSystem Boolean Whether or not a system or a user has created a job. If the job is generated by a system, the system automatically sets it to true. If a user generates a job, the system sets it to false.
Return codes

Status code

HTTP name

Description

202 Accepted The request has been accepted for processing, but the processing has not been completed.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.

Getting migration pairs

You can retrieve a list of migration pairs for Volume Migration in Storage Advisor.

HTTP request syntax (URI)
GET https://ipAddress/v1/storage-systems/storageSystemId/migration-pairs?q=migrationTaskId:migrationTaskId
Request structure

Not applicable.

Response structure

The response body structure is shown below:

 {
   "migrationPairId": ,
   "migrationTaskId": ,
   "sourceVolumeId": ,
   "sourcePoolId":,
   "sourceExternalParityGroupId", ""
   "targetVolumeId": ,
   "targetPoolId": ,
   "status": "",
   "copyProgress": 
   "copyGroupName": ""
 }

Parameter

Type

Description

migrationPairId Integer ID of the migration pair.
migrationTaskId Integer ID of the migration task.
sourceVolumeId Long ID of the migration source volume.
sourcePoolId Integer ID of the pool from which the migration source volume is allocated.
sourceExternalParityGroupId String ID of the external parity group from which the migration source volume is allocated.
targetVolumeId Long ID of the migration target volume.
targetPoolId Integer ID of the pool from which the migration target volume is allocated.
status String The status of the migration copy. Valid values:
  • NOT_MIGRATED: Volume Migration has not started.
  • MIGRATING: Volume Migration is in progress.
  • MIGRATED: Volume Migration has completed.
  • INVALID: source or target volume does not exist, or the pool of source or target volume changed.
copyProgress Integer The progress of the migration copy (0-100).
copyGroupName String The name of the copy group for migration.
Return codes

Status code

HTTP name

Description

200 OK The server has started the operation.
401 Unauthorized The operation is not authorized.
403 Forbidden The server failed to authenticate the request.
404 Not found The specified resource ID is not valid or the resource does not exist.
Example response
{
    "resources": [
        {
            "migrationPairId": 2,
            "migrationTaskId": 2,
            "sourceVolumeId": 684,
            "sourcePoolId": 10,
            "sourceExternalParityGroupId": null,
            "targetVolumeId": null,
            "targetPoolId": 0,
            "status": "NOT_MIGRATED",
            "copyProgress": null,
            "copyGroupName": null
        }
    ],
    "total": 1,
    "nextToken": null
}