0% found this document useful (0 votes)
34 views78 pages

ECS - ECS PS Procedures-Centera To ECS Migration Via Data Transformation - 3.1.0.3 and Above

Uploaded by

ali2k2sec
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views78 pages

ECS - ECS PS Procedures-Centera To ECS Migration Via Data Transformation - 3.1.0.3 and Above

Uploaded by

ali2k2sec
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 78

ECS ™ Procedure Generator

Solution for Validating your engagement

Centera to ECS Migration via Data Transformation - 3.1.0.3


and above

Topic
ECS PS Procedures
Selections
ECS Professional Services Procedures: Centera to ECS Migration via Data Transformation

Generated: July 7, 2022 6:36 PM GMT

REPORT PROBLEMS

If you find any errors in this procedure or have comments regarding this application, send email to
[email protected]

Copyright © 2022 Dell Inc. or its subsidiaries. All Rights Reserved. Dell Technologies, Dell, EMC, Dell
EMC and other trademarks are trademarks of Dell Inc. or its subsidiaries. Other trademarks may be
trademarks of their respective owners.

The information in this publication is provided “as is.” Dell Inc. makes no representations or warranties of
any kind with respect to the information in this publication, and specifically disclaims implied warranties of
merchantability or fitness for a particular purpose.

Use, copying, and distribution of any software described in this publication requires an applicable
software license.

This document may contain certain words that are not consistent with Dell's current language guidelines.
Dell plans to update the document over subsequent future releases to revise these words accordingly.

This document may contain language from third party content that is not under Dell's control and is not
consistent with Dell's current guidelines for Dell's own content. When such third party content is updated
by the relevant third parties, this document will be revised accordingly.

Publication Date: July, 2022

Dell Technologies Confidential Information version: 2.3.6.91

Page 1 of 78
Contents
Preliminary Activity Tasks .......................................................................................................3
Read, understand, and perform these tasks.................................................................................................3

Centera to ECS Migration via Data Transformation................................................................5

Dell Technologies Confidential Information version: 2.3.6.91

Page 2 of 78
Preliminary Activity Tasks
This section may contain tasks that you must complete before performing this procedure.

Read, understand, and perform these tasks


1. Table 1 lists tasks, cautions, warnings, notes, and/or knowledgebase (KB) solutions that you need to
be aware of before performing this activity. Read, understand, and when necessary perform any
tasks contained in this table and any tasks contained in any associated knowledgebase solution.

Table 1 List of cautions, warnings, notes, and/or KB solutions related to this activity

519265: Review minimum ECS software version requirements for Transformation / Native migration.

534603: Review DTA 534603 - Potential data unavailability post migration of Centera data to ECS 3.3
and performing a cutover to ECS.

2. This is a link to the top trending service topics. These topics may or not be related to this activity.
This is merely a proactive attempt to make you aware of any KB articles that may be associated with
this product.

Note: There may not be any top trending service topics for this product at any given time.

ECS Top Service Topics

Dell Technologies Confidential Information version: 2.3.6.91

Page 3 of 78
ECS Data Migration Pre-Implementation Process
WARNING: Object Data Migrations can be complex and without proper skills and experience,
there is a significant risk of Data Unavailability, Data Loss, Errors and Poor Performance. Any
of these can negatively impact CSAT.

There are many factors to consider before starting an object data migration including having
requisite knowledge and understanding of:
• Data Source Migration for legacy systems such as Centera/Atmos/Other
• ECS-Sync Configuration & Setup
• Third Party Application Attributes & Impacts

If you do not have experience with previous object migrations, it is strongly advised to contact
the Cloud Object Migration Specialists in Specialty Deploy before you start. This team has many
years of experience working with large and complex object migrations.

In order to qualify that you are ready to begin, copy the form below into an email, fill out the
details and email to [email protected]

They will review the scope and advise if your project requires additional expertise from the
Cloud Migration Specialist Team to safely complete.

No Item Response
1 Customer Name
2 Region/Theatre/Location
3 Source Storage Type
4 Source Storage Serial Numbers
(If Centera/Atmos)
5 Target Storage Type
6 List of Applications
7 Number of Sites
8 Protocol (CAS/HTTP/S3/File
9 Project Details
10 (ID, Propel Code, Start Date etc)
11 Project Manager
12 Technical Contacts
13 Level of Experience with Source
Storage (High/Medium/Low)
14 Level of Experience with ECS
Sync (High/Medium/Low)
15 Any Other Relevant Details

Dell Technologies Confidential Information version: 2.3.6.91

Page 4 of 78
Centera to ECS Migration via Data Transformation

Note: The next section is an existing PDF document that is inserted into this procedure. You may see
two sets of page numbers because the existing PDF has its own page numbering. Page x of y on the
bottom will be the page number of the entire procedure.

Dell Technologies Confidential Information version: 2.3.6.91

Page 5 of 78
MIGRATING CENTERA STORAGE DATA TO
ECS
Using the ECS Portal, REST APIs and the ECS
Command Line Interface

ABSTRACT
This document provides a description of the process for migrating data from Centera
storage systems into ECS systems, a description of the ECS Portal Migration menu, a
list of the REST APIs required and a discussion of the ECS CLI commands to use to for
accomplishing that migration.

June, 2018

Page 6 of 78
To learn more about how EMC products, services, and solutions can help solve your business and IT challenges, contact your local
representative or authorized reseller, visit www.emc.com, or explore and compare products in the EMC Store

Copyright © 2018 EMC Corporation. All Rights Reserved.

EMC believes the information in this publication is accurate as of its publication date. The information is subject to change without
notice.

The information in this publication is provided “as is.” EMC Corporation makes no representations or warranties of any kind with
respect to the information in this publication, and specifically disclaims implied warranties of merchantability or fitness for a
particular purpose.

Use, copying, and distribution of any EMC software described in this publication requires an applicable software license.

For the most up-to-date listing of EMC product names, see EMC Corporation Trademarks on EMC.com.

VMware is a registered trademark or trademarks of VMware, Inc. in the United States and/or other jurisdictions. All other trademarks
used herein are the property of their respective owners.

Part Number H15105

Page 7 of 78
TABLE OF CONTENTS

INTRODUCTION ........................................................................................ 7
Audience ........................................................................................................... 7

MIGRATION PROCESS OVERVIEW ............................................................ 7


Source Selection Phase ....................................................................................... 8
Pre-check Phase ................................................................................................ 9
Enumeration Phase ............................................................................................ 9
Index Phase ...................................................................................................... 9
Migration Phase ............................................................................................... 10
Reconciliation Phase ......................................................................................... 10

MIGRATING CENTERA DATA USING THE ECS PORTAL MIGRATION


MENU ...................................................................................................... 10
Turning on the Migration menu .......................................................................... 10
Defining a Migration Instance ............................................................................ 10
Common features for all Migration session pages ................................................. 15
Prechecking data for Migration ........................................................................... 15
Obtaining a PEA File for a Centera Pool ............................................................... 16
Enumerating data for a Migration session ............................................................ 18
Indexing data for a Migration session ................................................................. 19
Migrating data from Centera into ECS ................................................................. 20
Reconciling data migrated from Centera into ECS ................................................. 22
Viewing the Centera to ECS Transformation Report .............................................. 23

APPENDIX A: PRIMARY REST API SEQUENCE FOR MIGRATION .............. 24


Common Headers for Transformation Operations ................................................. 25
Create a Transformation Instance ...................................................................... 26
Curl Example: Create a Transformation....................................................................... 26
ECS CLI Command: Creating a Transformation ............................................................ 27
Get Information for this Transformation Job ........................................................ 27
Curl Example: Getting Transformation Information ....................................................... 28
ECS CLI Command: Getting Transformation Information ............................................... 28
Get Profile Mappings for a Transformation ID ....................................................... 28
Curl Example: Getting Profile Mappings for a Transformation ID..................................... 30

Page 8 of 78
ECS CLI Command: Getting Profile Mappings for a Transformation ID ............................. 30
Set Profile Mappings for a Transformation ID ....................................................... 31
Curl Example: Setting Profile Mappings ....................................................................... 32
ECS CLI Command: Setting Profile Mappings ............................................................... 32
Set Transformation Sources .............................................................................. 33
Curl Example: Setting Transformation Sources ............................................................ 33
ECS CLI Command: Setting Transformation Sources .................................................... 34
Run a Transformation Pre-check Job ................................................................... 34
Curl Command: Running Transformation Pre-checks..................................................... 35
ECS CLI Command: Running Transformation Pre-checks ............................................... 35
Get Transformation Pre-check Results ................................................................ 35
Curl Example: Getting Transformation Pre-check Results .............................................. 37
ECS CLI Command: Getting Transformation Pre-check Results ...................................... 37
Run a Transformation Data Enumeration Job ....................................................... 37
Curl Example: Running Transformation Data Enumeration ............................................. 38
ECS CLI Command: Running Transformation Data Enumeration ..................................... 38
Get Transformation Data Enumeration Job Results ............................................... 38
Curl Command: Getting Transformation Data Enumeration Results ................................ 39
ECS CLI Command: Getting Transformation Data Enumeration Results ........................... 39
Run a Transformation Data Indexing Job ............................................................. 39
Curl Command: Running Transformation Data Indexing ................................................ 40
ECS CLI Command: Running Transformation Data Indexing .......................................... 40
Get Transformation Data Indexing Job Results ..................................................... 40
Curl Example: Getting Transformation Data Indexing Results ........................................ 41
ECS CLI Command: Getting Transformation Data Indexing Results ................................ 41
Run a Transformation Data Migration Job ............................................................ 42
Curl Command: Running Transformation Data Migration ............................................... 42
ECS CLI Command: Running Transformation Data Migration .......................................... 42
Get Transformation Data Migration Job Results .................................................... 43
Curl Command: Getting Transformation Data Migration Status ...................................... 43
ECS CLI Command: Getting Transformation Data Migration Status ................................. 44
Run a Transformation Data Reconciliation Job ...................................................... 44
Curl Command: Running Transformation Data Reconciliation ......................................... 44

Page 9 of 78
ECS CLI Command: Running Transformation Data Reconciliation ................................... 45
Get Transformation Data Reconciliation Status ..................................................... 45
Curl Command: Getting Transformation Data Reconciliation Status ................................ 46
ECS CLI Command: Getting Transformation Data Reconciliation Status ........................... 46
Get Transformation Data Reconciliation Mismatches ............................................. 46
Curl Command: Getting Transformation Data Reconciliation Mis-matches........................ 47
ECS CLI Command: Getting Transformation Data Reconciliation Mis-matches .................. 47

APPENDIX B: SUBSIDIARY REST APIS RELATED TO MIGRATION ............ 47


List ALL Transformation session on the ECS Host ................................................. 47
ECS CLI Command: Getting a List of Current Transformations ....................................... 48
Update Properties for a Transformation ............................................................... 48
ECS CLI Command: Updating a Transformation ........................................................... 49
Delete a Transformation Job .............................................................................. 50
ECS CLI Command: Deleting a Transformation Session ................................................. 51
Delete Transformation Sources .......................................................................... 51
Retry a Transformation Data Pre-checks Job........................................................ 51
ECS CLI Command: Retrying Transformation Pre-checks............................................... 52
Cancel a Transformation Data Pre-checks Job ...................................................... 52
ECS CLI Command: Cancelling a Transformation Data Pre-check ................................... 53
Retry a Transformation Data Enumeration Job ..................................................... 53
ECS CLI Command: Retrying a Transformation Data Enumeration .................................. 54
Cancel a Transformation Data Enumeration Job ................................................... 54
ECS CLI Command: Canceling Transformation Data Enumeration ................................... 55
Get Failed Enumeration Sources ........................................................................ 55
ECS CLI Command: Getting Failed Transformation Sources ........................................... 56
List Incomplete Centera Enumeration Ranges ...................................................... 56
ECS CLI Command: Getting Incomplete Enumeration Results ........................................ 57
Retry a Transformation Data Indexing Job........................................................... 57
ECS CLI Command: Retrying Transformation Data Indexing .......................................... 58
Cancel a Transformation Data Index Job ............................................................. 58
ECS CLI Command: Canceling Transformation Data Indexing ........................................ 59
Retry a Transformation Data Migration Job .......................................................... 59
ECS CLI Command: Retrying Transformation Data Migration ......................................... 60

Page 10 of 78
Cancel a Transformation Data Migration Job ........................................................ 60
ECS CLI Command: Cancelling Transformation Data Migration ....................................... 60
Retry a Transformation Data Reconciliation Job .................................................... 61
ECS CLI Command: Retrying Transformation Data Reconciliation ................................... 61
Cancel a Transformation Data Reconciliation Job .................................................. 61
ECS CLI Command: Cancelling Transformation Data Reconciliation................................. 62
Run a Transformation Recovery Migration Job ...................................................... 62
Get a Transformation Recovery Migration Job Report ............................................ 63
Retry a Recovery Migration Job .......................................................................... 64
Cancel a Transformation Recovery Migration Job .................................................. 65

APPENDIX C: TROUBLESHOOTING A DATA TRANSFORMATION SESSION 66


Transformation Engine Log File Locations ............................................................ 66
Error Conditions on the ECS End of a Transformation ........................................... 66

APPENDIX D: RE-CREATE UNREAD OBJECTS WHEN INDEXING FAILS ..... 67


RE-CREATE unread objects ................................................................................ 67

Page 11 of 78
INTRODUCTION
ECS 3.1.0.3 and later provides a data transformation engine which manages all Data Transformation activities. To perform a
transformation, ECS works in parallel with a legacy data storage solution to migrate data to ECS without interrupting access to ECS
services. All data traffic is directed to ECS and legacy storage is accessed only by ECS. The transformation engine currently supports
the migration of Centera data to ECS. When migrating Centera data, the legacy storage system is accessed only by ECS and all data
traffic is directed to ECS.

NOTE: By default, ECS accesses Centera legacy storage in read-only mode.

The Data Transformation feature consists of two main parts:

 Seamless access to the data located in legacy storage

 Background indexing of data located in legacy storage

In order to switch the Customer Application to point to ECS rather than to Centera, do the following:

 Register the Centera legacy storage in ECS as a part of Transformation session creation.

 Modify the Application connection parameters to point to ECS instead of the Centera legacy storage.

NOTE: ECS supports a feature called VLAN separation, which allows customers to separate traffic on separate VLANs, by default
using these traffic types: Data, Replication and Management.

AUDIENCE
This document is intended for use by internal EMC personnel who have an in-depth understanding of Centera and ECS systems.

MIGRATION PROCESS OVERVIEW


The following figure shows the phases involved in Transforming data from a legacy storage system into ECS.

Figure 1. Phases for Migrating from Centera to ECS

The process of Transforming data from a legacy storage system into ECS has the following phases:

NOTE: As per KB article 519265, use of ECS 3.1.0.3 or later is mandatory for data migration to ECS using this process.

1. Source Selection – Provision a legacy storage system into ECS as a System under Transformation, setting up pools/buckets and
users mapping.

2. Precheck – Determine that the System under Transformation is healthy and all configuration parameters are defined correctly.

Page 12 of 78
3. Enumeration - ECS creates a snapshot of data content in the legacy storage system.

4. Indexing - ECS processes the previously created snapshot and builds indexes of the legacy storage content.

5. Migration - ECS copies the legacy storage content into ECS.

6. Reconciliation– ECS verifies that all objects are migrated properly and can be read through ECS Object Services.

NOTE:

 It is a service interruption. You still have to restart the application to call into ECS. However, you can use ECS instantly for
writes.

 ECS executes Enumeration and Indexing as background tasks.

 A CAS query will not list the data under Transformation after the Precheck and Enumeration phases of a Transformation.
After the Indexing is completed, you can perform a CAS query on the Transformation data in the Centera storage system.

 Rollback implements by having the application recall the data or it will require engineering intervention to migrate the newly
written data back to Centera.

 Transformation now supports D@RE and it also supports renaming the namespace. There is no need to use a third-party
tool like Datadobi.

 ECS does not support bucket mapping, which means if a profile is linked to two different pools on Centera, the application
will only see the data in one of the buckets.

 Multiple pools can be migrated in parallel. But only a single migration job is supported from a single cluster.

 When migrating to a stand-alone ECS, the data can be reached after the Precheck phase. However, if migrating to an ECS
geo-federated environment, assuming migration was initiated on VDC1, you will not be able to reach the data on VDC2 until
the indexing phase has been completed on VDC1.

 Emphasis transformation does not support Atmos CAS. You cannot change the compliance. If you ce+ on Centera, the
namespace will have compliance enabled which means privilege delete will continue to be disabled.

SOURCE SELECTION PHASE


During the Source Selection phase, ECS creates and configures the Transformation instance. Each legacy storage system requires
you to configure a different set of parameters. We focus on the parameters required to transform Centera legacy storage in this
document.

The essential step of every transformation configuration is the mapping of legacy storage source pools/buckets to ECS pools and
buckets. Proceed with bucket and user mapping once initial transformation parameters are submitted. For the matter of simplicity,
this document refers to legacy storage source pools/buckets as source buckets.

To map ECS peer buckets to the Centera source pools and buckets, ECS assigns a unique source identifier (or sourceId) to each
legacy storage bucket/user pair. Once ECS has assigned all sourceIds, ECS attempts to auto-create a series of ProfileMapping
instances that defines which ECS pair of bucket/user corresponds to particular source bucket/user. ECS marks each single
ProfileMapping per each source bucket as the one to enumerate objects from the corresponding source bucket. ECS uses the source
user/bucket part of the selected ProfileMapping in the background ECS task, to list source bucket content, read objects meta-data
and identify source user which owns the object. The ECS user part of the selected ProfileMapping becomes the ECS bucket owner,
which is an ECS user profile that owns the bucket and has privileged access rights to it.

To create and configure a Centera legacy storage data transformation, perform these essential activities:

 Submit initial Centera Transformation properties including MAPI admin credentials, management and access node addresses.
See CREATE A TRANSFORMATION INSTANCE on Page 26.

 Fetch a list of auto-calculated ProfileMappings by the ECS. See GET PROFILE MAPPINGS FOR A TRANSFORMATION ID on Page
29.

Page 13 of 78
 Resolve user/bucket name conflicts in auto-calculated ProfileMappings if any. See SET PROFILE MAPPINGS FOR A
TRANSFORMATION ID on Page 29.

 Mark any ProfileMappings which will be used for enumeration and become ECS bucket owners. See SET TRANSFORMATION
SOURCES on Page 33.

Once you have configured the ProfileMappings and marked the source mappings, proceed with the Pre-check phase.

PRE-CHECK PHASE
The Pre-check phase is a kick-off phase for the Transformation process. ECS validates all of the configuration information (mappings
and user access), checks that Legacy Storage matches all the requirements and finishes creation of ECS name-spaces, buckets, and
users.

The Pre-Check phase has three possible results:

 Veto - some critical issue is found and the transformation session cannot be started until the issue is resolved.

 Error - some issue exists which could compromise the transformation session if we start it; it is up to the ECS customer support
representative to decide whether or not is it safe to proceed further.

 Success - everything is good and the data transformation session is officially started.

NOTE: In addition to the Pre-check results of Veto, Error, and Success, the Pre-Check phase may also result in a Warning which has
less of a severity than an Error. Such a Warning Pre-check result appears when a data transformation session is officially started but
there is a minor misalignment in ECS configuration which you must manually fix. For example, the transformation logic creates
several miscellaneous data and management ECS users in order to help with data verification in the Reconciliation phase. The Pre-
check phase generates a Warning if such users already exist but if those users' access rights are not high enough to successfully
access resources.

If the Pre-check result is not Success, use the Get Pre-checks Result REST API call to get information about the root cause. See GET
TRANSFORMATION PRE-CHECK RESULTS on Page 29.

NOTE: After you resolve any issues, use the Retry Pre-checks REST API call to trigger the Pre-Check phase again See RETRY
PRECHECKS on Page 52.

ENUMERATION PHASE
During the Enumeration phase, ECS builds a snapshot of the legacy storage content, including listing objects (and their meta-data)
and listing user access privileges. Every ECS node in the cluster performs this process simultaneously. Several source buckets could
be enumerated at the same time.

NOTE: The snapshot data that ECS builds is internal and cannot be accessed using the ECS REST API. Use the Get Enumeration
Result REST API call to monitor Enumeration process status and progress. The Data Enumeration process cannot finish on its own,
since the ECS system must constantly update the snapshot with newly ingested data which is propagated back to the Centera legacy
storage system.

The Enumeration process is automated and does not require ECS customer support representative attention while it is ongoing. If a
legacy storage content access issue appears during data enumeration, ECS records details, and presents them in the Enumeration
report. See GET FAILED ENUMERATION SOURCES on Page 55. See LIST INCOMPLETE CENTERA ENUMERATION RANGES on Page 56.

INDEX PHASE
The Indexing phase concludes the Transformation process. ECS uses the Data Indexing phase to learn about existing legacy storage
data.

ECS constructs various internal meta-data indexes. Beside indexes, no other information is created in ECS, which means that
referenced objects still remain in the legacy storage system. The ECS indexes are essential for the Migration phase and also makes
the Virtual Data Center (VDC) that hosts the Transformation process an owner of the indexed objects. ECS Indexed objects become
available across all VDCs in a replication group.

Page 14 of 78
NOTE: Once Indexing is complete, you can migrate the data from the Centera legacy storage into ECS.

MIGRATION PHASE
During the Migration phase, ECS copies data from the legacy storage system into ECS. The prerequisite for Migration is a successfully
completed Indexing phase.

NOTE: No space is reserved in ECS for objects migrating during the Data Indexing phase, thus any new data ingested into ECS
during the Migration phase, and thus coming to ECS in parallel with Migration can consume space needed for migrated objects
placement, which could cause Data Migration to fail.

RECONCILIATION PHASE
The Reconciliation phase verifies that all objects are migrated properly and can be read through ECS Object Services. ECS uses the
legacy storage enumeration snapshot when possible to read each migrated object through one of ECS Object Services, and employs
the legacy storage object hash code (CRC) to verify migrated object consistency. If no hash code is provided by the Centera legacy
storage API, ECS issues additional object read requests into the legacy storage system during the Data Reconciliation Phase.

ECS builds a list of any incorrectly migrated objects as the result of Reconciliation Phase. ECS does not automatically trigger an re-
migration attempts for incorrectly migrated objects. Re-migration is performed automatically for all failed objects.

MIGRATING CENTERA DATA USING THE ECS PORTAL MIGRATION MENU


In ECS 3.1.0.3 and later, the ECS Portal includes an optional User Interface to aid in transforming data from Centera legacy storage
into ECS. When you turn on the Migration menu, it appears on the Manage menu in the ECS Portal.

NOTE: The Migration menu does not appear by default, as it is intended only for use by EMC Professional Services personnel.

TURNING ON THE MIGRATION MENU


To expose the Migration menu in the ECS Portal, do the following:

Ctrl + Alt + Shift + M

NOTE: If you use this command sequence to turn on the Migration menu while the Manage menu is open, you may have to close
and re-open the Manage menu to see the Migration option.

DEFINING A MIGRATION INSTANCE


To begin the process of transforming data from a Centera legacy storage system into ECS, define a Migration instance, using the ECS
Portal. Do the following:

10

Page 15 of 78
1. At the ECS Portal, select Manage > Migration. The Migration page appears.

2. Select New Migration. The New Migration page appears.

11

Page 16 of 78
3. Assign a unique Name to this Transformation instance, along with a Description if needed.

4. In the IP field, enter the management IP address of the Centera legacy storage system from which you want to migrate data.

5. In the Admin Name field, enter the name of the Administrator account on the source Centera legacy storage system.

6. In the Password field, enter the password for the Administrator account on the source Centera legacy storage system.
NOTE: The Namespace field is optional. Enter a pre-defined namespace that adheres to your company’s naming convention
policy.

7. Select a Replication Group from among those available in the ECS configuration.

8. Select Save, and then Next. The Source Selection page appears.

12

Page 17 of 78
9. The transformation engine queries the source Centera legacy storage system for a list of pools and presents them in Pools.
Select a pool from that list.

NOTE: If the application reads from one pool and simultaneously writes to another pool, both pools cannot consolidate into a
single bucket.

13

Page 18 of 78
10. The transformation engine presents a list of possible profiles for that pool in Profiles. Select a profile from that list by clicking
the + sign next to that Profile name. The Source Pool and Target Bucket appear in the Pool Mapping table.

To change the name of the Target Bucket to which the Centera Source Pool is mapped, select the Target Bucket and chose Edit.
The Edit Pool Mapping dialog appears. Change the name and click Ok.

11. Select the Pool Mapping that you want to use. The Portal presents the related Source Profile and Target User pairing in the
Profile Mapping table.

To change the name of the Target User to which the Centera Source Profile is mapped, select the Target User and chose Edit.

12. The transformation engine displays the resultant mapping in the Sources table.

13. Select Save and then Next. The Migration Precheck page appears.
14

Page 19 of 78
COMMON FEATURES FOR ALL MIGRATION SESSION PAGES
The Migration pages for each of the data transformation phases (Precheck, Enumeration, Indexing, Migration, Reconciliation) all
present a Play button to begin the operations, a rolling percentage of progress, tables of appropriate object processing outcomes and
any related errors or messages.

The Play button appears the same for all phases:

NOTE: During the processing of a particular Transformation phase, the Migration UI queries the storage systems for progress every
60 seconds.

PRECHECKING DATA FOR MIGRATION


To validate all of the configuration information (mappings and user access) and finish creating ECS name-spaces, buckets, and users
for your Transformation instance, do the following:

1. On the Migration: Precheck page, the status appears as Not Started if you have not attempted to Precheck the session.

If your Transformation session is not showing, select it from the Migration table, and choose the Edit action.

2. Click the Play Button to begin the Precheck operation.

On the Migration: Precheck page, the UI displays the percentage completed for the operation.

15

Page 20 of 78
When it is finished, the UI displays the results as “Succeeded” or “Failed”, and show the number of items which Passed the Precheck,
caused Warnings, Errors or Vetoes.

If you have Warnings, Errors or Vetoes, you must resolve those issues in either the Centera or ECS systems. If you received the
result “Succeeded”, select to Next to move on to the next phase.

OBTAINING A PEA FILE FOR A CENTERA POOL


Once you have successfully completed the Precheck Phase, the Migration UI presents the option to obtain a Pool Entry Authorization
(or PEA) file for the Centera Pool that you are transforming.

Use this PEA file for ECS application switchover. The application switchover is the point at which you change your application from
pointing to CAS storage to access ECS instead. For the CAS pool that you are migrating from Centera to ECS, you update the CAS
ConnectionString to point to the ECS IP address. After you update the CAS ConnectionString, your application can continue with the
normal I/O operations, but all new ingested data goes directly into to ECS and for any objects that have not been migrated yet from
Centera storage, ECS fetches directly from Centera.
16

Page 21 of 78
Choose the Centera Pool that you are using as the Source Pool for this Migration. The PEA file appears.

For more information about the CAS ConnectionString, see the Centera 4.3 online help.

17

Page 22 of 78
ENUMERATING DATA FOR A MIGRATION SESSION
To build a snapshot of the legacy storage content, including listing objects (and their meta-data) and user access privileges:

1. On the Migration: Enumeration page, the status appears as Not Started if you have not attempted to start the Enumeration
session.

If your Transformation session is not showing, select it from the Migration table, and choose the Edit action.

2. Click the Play Button to begin the Enumeration operation.

On the Migration: Enumeration page, the UI displays the percentage completed for the operation. When it is finished, the UI
displays the results as “Succeeded” or “Failed”, and shows the number of objects that it processed, the number of objects that were
unread and the number of objects which had Execution Errors. If you have unread objects or execution errors, resolve those issues
in either the Centera or ECS systems. If you received the result “Succeeded”, select to Next to move on to the next phase.

18

Page 23 of 78
INDEXING DATA FOR A MIGRATION SESSION
To construct the required internal meta-data indexes to the location of existing legacy storage data, begin an Indexing session by
doing the following:

1. On the Migration: Indexing page, the status appears as Not Started if you have not attempted to start the Enumeration
session.

If your Transformation session is not showing, select it from the Migration table, and choose the Edit action.

19

Page 24 of 78
2. Click the Play Button to begin the data Indexing operation.

On the Migration: Indexing page, the UI displays the percentage completed for the operation. When it is finished, the UI displays
the results as “Succeeded” or “Failed”, and show the number of objects that it processed, amount of data processed and a count of
any Execution Errors.

If you have execution errors, resolve those issues in either the Centera or ECS systems. If you received the result “Succeeded”,
select to Next to move on to the next phase.

20

Page 25 of 78
MIGRATING DATA FROM CENTERA INTO ECS
Perform the actual migration of data objects from the existing Centera legacy storage system into ECS:

NOTE: This phase takes the longest and may take a significant amount of time.

1. On the Migration page, the status appears as Not Started if you have not attempted to start the Migration session.

If your Transformation session is not showing, select it from the Migration table, and choose the Edit action.

2. Click the Play Button to begin the data Migration operation.

On the Migration page, the UI displays the percentage completed for the operation. When it is finished, the UI displays the results
as “Succeeded” or “Failed”, and shows the amount of data processed and a count of any Execution Errors.

If you have execution errors, resolve those issues in either the Centera or ECS systems. If you succeeded, select Next.

21

Page 26 of 78
RECONCILING DATA MIGRATED FROM CENTERA INTO ECS
Validate that the data from the Centera legacy storage system now also exists in ECS:

3. On the Migration: Reconciliation page, the status appears as Not Started if you have not attempted to start the Migration
session.

If your Transformation session is not showing, select it from the Migration table, and choose the Edit action.

4. Click the Play Button to begin the data Reconciliation operation.

On the Migration: Reconciliation page, the UI displays the percentage completed for the operation. When it is finished, the UI
displays the results as “Succeeded” or “Failed”, and shows the number of objects that were unread and the number of objects which
had Execution Errors. If you have unread objects or execution errors, resolve those issues in either the Centera or ECS systems.

22

Page 27 of 78
VIEWING THE CENTERA TO ECS TRANSFORMATION REPORT
View the summary of the data transformation effort:

1. On the Migration: Report page, the transformation session summary report appears. The report includes source and migration
details. Reconciliation mismatches can also be downloaded from the report. Use the Export Report button to download the
report.

2. To download the list of Enumeration Objects, select the number of the total objects found for migration. The Download
Enumeration Object List dialog appears.

3. In the Select Resources list, choose your Centera Pool and click the “+” sign next to it. The pool appears in the Selected
Resources list.

4. Select the Download List button.

23

Page 28 of 78
APPENDIX A: PRIMARY REST API SEQUENCE FOR MIGRATION
The following table contains an ordered list of the REST APIs to use in migrating data from Centera legacy storage into ECS.

STEP DESCRIPTION

METHOD AND RESOURCE


1 Create a Transformation Instance
POST /object/transformation
2 Get Transformation Information
GET /object/transformation/<transformation_id>
3 Get Profile Mappings for this Transformation ID
GET /object/transformation/<transformation_id>/profile/mapping
4 Set Profile Mappings
POST /object/transformation/<transformation_id>/profile/mapping
5 Set Transformation Sources
POST /object/transformation/<transformation_id>/transformationSources
6 Run Pre-checks
POST /object/transformation/<transformation_id>/precheck
7 Get Pre-check Results
GET /object/transformation/<transformation_id>/precheck
8 Run Data Enumeration
POST /object/transformation/<transformation_id>/enumeration
9 Get Enumeration Result and Wait for Completion
GET /object/transformation/<transformation_id>/enumeration
10 Run Indexing
POST /object/transformation/<transformation_id>/indexing
11 Get Indexing Result and Wait for Completion
GET /object/transformation/<transformation_id>/indexing
12 Run Data Migration
POST /object/transformation/<transformation_id>/migration
13 Get Migration Results
GET /object/transformation/<transformation_id>/migration
14 Run Reconciliation
POST /object/transformation/<transformation_id>/reconciliation
15 Get Reconciliation Results
GET /object/transformation/<transformation_id>/reconciliation
16 Get Reconciliation Mismatches
GET /object/transformation/<transformation_id>/reconciliation/mismatches

24

Page 29 of 78
COMMON HEADERS FOR TRANSFORMATION OPERATIONS
The transformation APIs share these common header types:

NAME VALUE REQUIRED DESCRIPTION


Accept application/json or true Defines format of returned response
application/xml object
Content-Type application/json or true Defines format of request object
application/xml
X-SDS-AUTH- String true Authentication token
TOKEN

25

Page 30 of 78
CREATE A TRANSFORMATION INSTANCE
Create Transformation with the specified properties.

Call:
POST /object/transformation

Principal Role:
SYSTEM_ADMIN

Request Body:
An object with following properties:

NAME TYPE REQUIRED DESCRIPTION


type String yes Type of the transformation, for instance - "centera", "s3", etc.
name String yes Human friendly Transformation name
description String yes Human friendly Transformation description
replication_group String yes Id of existing replication group where Transformation will create
namespace and will put written/migrated objects
admin String yes Centera MAPI Administrator login
password String yes Centera MAPI Administrator password
management_ip String yes Centera MAPI interface host IP address
port Integer no Centera MAPI interface port, default= 3682
access_ip String no Centera Access Node IP address, default= management_ip
datagram_port Integer no Centera Access Node datagram port, default= 3218
NOTE: You can include the parameter auto_mode to run the transformation phases automatically (optional).

Response Code:
200 OK

Response Body:
An object with following properties:

NAME TYPE DESCRIPTION


transformation_id String An identifier of created Transformation

Curl Example: Create a Transformation


The curl example stores arguments in the file request_body1.tmp:

{
"type": "centera",
"name": "Centera Transformation",
"description": "Centera transformation",
"replication_group": "urn:storageos:ReplicationGroupInfo:b3bf2d47-d732-457c-bb9b-d260eb53a76a:global",
"admin": "admin",
"password": "centera",
"management_ip": "10.247.195.19",
"port": 3682,
"access_ip": "10.247.195.19",
"datagram_port": 3218
}
The curl command to accomplish this is:

curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json -d


@request_body1.tmp https://10.247.200.192:4443/object/transformation

26

Page 31 of 78
Output:
{"transformation_id":"urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-9b1603e01545"}

ECS CLI Command: Creating a Transformation


ecscli.py transformation create

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_file>]
[-type centera]
[-admin <Centera_Admin_UserName>]
[-pw <Centera_Admin_Password>]
[-mgmt_ip <Centera_Management_Node_IP_addr>]
[-name <transformation_name>]
[-d <transformation_name>]
[-rg <replication_group_current>]

Optional Arguments
[-access_ip <Centera_Access_Node_IP_addr>] Default
[-mgmt_port 3682] Default
[-datagram_port 3218] Default

GET INFORMATION FOR THIS TRANSFORMATION JOB


List all phases and source ids in the transformation.

Call:
GET /object/transformation/<transformation_id>

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A TransformationInfo object

Response Example:
{
"phases": [
{
"phase_id": "Enumeration",

27

Page 32 of 78
"status": "Succeeded"
},
{
"phase_id": "Indexing",
"status": "Succeeded"
},
{
"phase_id": "PreCheck",
"status": "Succeeded"
}
],
"source_ids": [
"default/profile",
"pool1/transform_profile1"
],
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Possible Response Parameters:


PATH TYPE DESCRIPTION
phases Array List of phases
phases[*].phase_id String Phase identifier
phases[*].status String Phase status
source_ids Array A list of configured Legacy Storage profile identifiers
transformation_id String Transformation identifier

Curl Example: Getting Transformation Information


curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json
https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545

ECS CLI Command: Getting Transformation Information


ecscli.py transformation get

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET PROFILE MAPPINGS FOR A TRANSFORMATION ID


Use this API to return a list of currently available ProfileMapping entries. The list includes previously manually-set Profile Mappings as
well as auto-calculated values.

A ProfileMapping defines a mapping between a pair of data instances defined as a Legacy Storage bucket and Legacy Storage user
and a pair of data instances defined as an ECS bucket and an ECS user. ECS needs this mapping to redirect requests to a Legacy
Storage bucket using correct Legacy Storage user credentials when some ECS bucket is accessed by an ECS user.

ECS logic, depending on a Legacy Storage type, may offer a set of auto-calculated Profile Mappings. ECS calculates the Profile
Mappings based on information about Legacy Storage buckets and users. This simplifies the transformation provision procedure in
cases where there are many Legacy Storage buckets and users to be transformed.

Auto-calculated Profile Mappings are less authoritative than manually created ones. If a target_user or target_bucket of an auto-
calculated Profile Mapping matches an already existing ECS user or ECS bucket, ECS marks that auto-calculated Profile Mapping as a

28

Page 33 of 78
conflicting one. You cannot start a transformation if conflicting Profile Mappings exist. You can over-ride a conflicting auto-calculated
Profile Mapping by setting a manual Profile Mapping entry for a Legacy Storage source profile.

Call:
GET /object/transformation/<transformation_id>/profile/mapping

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A ProfileMappingsRestRep object

Response Example:
{
"mappings" : [{
"profile_mapping": {
"source_id": "centeraProfile1",
"target_user": "profile",
"target_bucket": "default",
"target_namespace": "ecs_namespace"
},
"centera_profile": {
"source_id": "centeraProfile1",
"pool": "default",
"profile": "profile",
"mask": "rdqeDcwh"
}
}, {
"profile_mapping": {
"source_id": "centeraProfile3",
"target_user": "profile",
"target_bucket": "pool2",
"target_namespace": "ecs_namespace"
},
"centera_profile": {
"source_id": "centeraProfile3",
"pool": "pool2",
"profile": "profile",
"mask": "rdqeDcwh"
}

29

Page 34 of 78
}, {
"profile_mapping": {
"source_id": "centeraProfile3",
"target_user": "existingProfile",
"target_bucket": "existingBucket",
"target_namespace": "ecs_namespace"
},
"centera_profile": {
"source_id": "centeraProfile3",
"pool": "existingBucket",
"profile": "existingProfile",
"mask": "rdqeDcwh"
},
"conflicts": [ "userExists", "bucketExists" ]
},
]
}

Possible Response Parameters:


PATH TYPE REQUIRED DESCRIPTION
mappings Array yes A list of mappings
mappings[*] Object no Contains Legacy Storage profile, ECS
ProfileMapping and optional list of
conflicts
mappings[*].profile_mapping Object yes ECS ProfileMapping to Legacy Storage
one
mappings[*].profile_mapping.source_id String yes Legacy Storage profile identifier
mappings[*].profile_mapping.target_user String yes ECS user name
mappings[*].profile_mapping.target_bucket String yes ECS bucket name
mappings[*].profile_mapping.target_namespace String yes ECS namespace to place user and bucket
mappings[*].centera_profile Object yes Centera Storage profile
mappings[*].centera_profile.source_id String yes Centera Storage profile identifier
mappings[*].centera_profile.pool String yes Centera pool name
mappings[*].centera_profile.profile String yes Centera profile name
mappings[*].centera_profile.mask String yes Centera profile's grants mask for the pool
mappings[*].conflicts Array no A list of conflicts for an auto calculated
ProfileMapping
mappings[*].conflicts[*] String yes Conflict type

Curl Example: Getting Profile Mappings for a Transformation ID


The curl command to accomplish this is:

curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/profile/mapping

ECS CLI Command: Getting Profile Mappings for a Transformation ID


ecscli.py transformation get-profile-mapping

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

30

Page 35 of 78
SET PROFILE MAPPINGS FOR A TRANSFORMATION ID
Use this API to set a ProfileMapping for one or several ECS user profiles to corresponding profiles from a Centera legacy storage
system.

A ProfileMapping defines a mapping between a pair of data instances defined as a legacy storage bucket and legacy storage user
mapped to a pair of data instances defined as an ECS bucket and an ECS user. ECS needs this mapping to redirect requests to a
legacy storage bucket using correct legacy storage user credentials when some ECS bucket is accessed by an ECS user.

Both pairs are correlated using the source_id identifier. For instance, if user A has access to two buckets B and C in the Legacy
Storage, then ECS should assign two source_id identifiers: sourceProfile1 and sourceProfile2, one for each legacy storage
bucket. Set two ECS Profile Mapping entries, one for each legacy storage bucket, as in this example:

{
"source_id": "centeraPool1/centeraProfile1",
"target_user": "ecs_user_a",
"target_bucket": "ecs_bucket_b",
"target_namespace": "ecs_namespace"
},
{
"source_id": "centeraPool2/centeraProfile2",
"target_user": "ecs_user_a",
"target_bucket": "ecs_bucket_c",
"target_namespace": "ecs_namespace"
}
NOTE: The Target namespace ("target_namespace": "ecs_namespace") should be the namespace created by this transformation.
If you specify some other existing namespace irrespective of the target namespace provided in your request body, ECS creates the
pool/profile in the namespace created by this transformation.

Passed ProfileMapping entries override any previously set or auto-calculated ones for the same source_id identifier. Overriding an
auto-calculated Profile Mapping with the same one effectively clears any existing conflicts. Use this call to resolve conflicting Profile
Mappings by setting them manually.

Call:
POST /object/transformation/<transformation_id>/profile/mapping

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

Request Body:
A ProfileMappingsObjParam object with one of several ProfileMappingParam objects

Request Body Example:


{
"mappings": [{
"source_id": "centeraPool1/centeraProfile1",
"target_user": "ecs_user_1",
"target_bucket": "ecs_bucket_1",
"target_namespace": "ecs_namespace"
},{
"source_id": "centeraPool2/centeraProfile2",
"target_user": "ecs_user_2",

31

Page 36 of 78
"target_bucket": "ecs_bucket_2",
"target_namespace": "ecs_namespace"
}, {
"source_id": "centeraPool3/centeraProfile3",
"target_user": "ecs_user_3",
"target_bucket": "ecs_bucket_3",
"target_namespace": "ecs_namespace"
}
]
}

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
None

Curl Example: Setting Profile Mappings


The curl example stores arguments in the file req_body.tmp:

{
"mappings": [
{
"source_id": "buck_1/user_n1",
"target_user": "ecs_user_n1",
"target_bucket": "ecs_buck_1",
"target_namespace": "centera_7b4985d2-1dd2-11b2-9ac4-9b1603e01545"
}
]
}
The curl command to accomplish this is:

curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json -d


@req_body.tmp https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-
9ac4-9b1603e01545/profile/mapping

After you set the mapping, use the GET /object/transformation/<transformation_id>/profile/mapping API again to view the
revised state of the profile mapping information.

ECS CLI Command: Setting Profile Mappings


ecscli.py transformation do-profile-mapping

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]
[-mp <TARGET_NAMESPACE>]

32

Page 37 of 78
SET TRANSFORMATION SOURCES
You must inform the ECS system as to which bucket you are transforming from the Centera legacy storage. Use this API to inform
ECS of the user profile to use for accessing the legacy bucket during the process of building an enumeration snapshot.

Call:
POST /object/transformation/<transformation_id>/transformationSources

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

Request Body:
An object with source_ids property containing a list of source identifiers. See Get Profile Mappings for an example how to get
available source identifiers.

Request Body Example:


{
"source_ids": [
"default/profile","pool1/transform_profile1"
]
}

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Curl Example: Setting Transformation Sources


The curl example stores arguments in the file request_body.tmp:

{
"source_ids":
[
"buck_1/user_n1"
]
}

33

Page 38 of 78
The curl command to accomplish this is:

curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json -d


@request_body.tmp https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-
11b2-9ac4-9b1603e01545/transformationSources

Output:
{"transformation_id":"urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-9b1603e01545"}
When you have set the values, use a similar call to get the transformation sources and check whether the transformation sources are
set correctly:

curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json -d


@request_body.tmp https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-
11b2-9ac4-9b1603e01545/transformationSources {"phases":[],"namespace":"centera_7b4985d2-1dd2-11b2-9ac4-
9b1603e01545","source_ids":["buck_1/user_n1"],"replication_group":"urn:storageos:ReplicationGroupInfo:b3bf2d47-
d732-457c-bb9b-d260eb53a76a:global","transformation_id":""urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545"}

ECS CLI Command: Setting Transformation Sources


ecscli.py transformation do-trans-sources

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]
[-si <source_id_bucket>/<source_id_user>]

RUN A TRANSFORMATION PRE-CHECK JOB


Validate all the configurations that you have performed, and check that the Centera legacy storage matches all the requirements and
finish creating ECS name-spaces/buckets/users.

Call:
POST /object/transformation/<transformation_id>/precheck

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

34

Page 39 of 78
Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Curl Command: Running Transformation Pre-checks


The curl command to accomplish this is:

curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/precheck

Output:
{"transformation_id":"urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-9b1603e01545"}

ECS CLI Command: Running Transformation Pre-checks


esccli.py transformation do-precheck

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET TRANSFORMATION PRE-CHECK RESULTS


Use this API to receive information about the status of the Transformation Pre-check phase. The Pre-Check phase has three possible
outcomes:

 Veto - some critical issue is found and transformation cannot be started until the issue is resolved.

 In-Process – gives the progress of the pre-check phase.

 Error - some issue is found which could compromise transformation if started and it is up to the ECS customer support
representative to decide whether or not is it safe to proceed further.

 Succeeded - everything is good and the transformation is officially started.

If the Pre-check outcome is not success, get the root cause for the issue using the Get Pre-checks Result REST API call.

Call this API, ideally in a timed loop, until the API returns both "status": "Succeeded" and "progress": 100.0.

NOTE: If you have a pre-check error, and after you resolve whatever errors exists, you must re-try the Pre-Checks using the Retry
Pre-checks API call. See RETRY A TRANSFORMATION DATA PRE-CHECKS JOB on Page 52.

NOTE: After the pre-check succeeds, the mapped pools, profiles and namespace are visible in the ECS Portal.

Call:
GET /object/transformation/<transformation_id>/precheck

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

35

Page 40 of 78
Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 Transformation Pre-check job is in progress or has ended.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A PrecheckReport object

Response Example
{
"errors": [],
"status": "Succeeded",
"prechecks": [
{
"message": "",
"name": "DATA_INTEGRITY_CHECK",
"status": "OK"
},
{
"message": "",
"name": "HW_VERSION_CHECK",
"status": "OK"
},
{
"message": "",
"name": "SW_VERSION_CHECK",
"status": "OK"
},
{
"message": "",
"name": "COMPLIANCE_MODE_CHECK",
"status": "OK"
},
{
"message": "",
"name": "ADVANCED_RETENTION_CHECK",
"status": "OK"
},
{
"message": "",
"name": "UPGRADE_STATUS_CHECK",
"status": "OK"
}
36

Page 41 of 78
],
"progress": 100.0
}

Response Body Parameters:


PATH TYPE DESCRIPTION
errors Array List of error names occurred during this phase
errors[*] String Error name
status String Phase status
progress Double Phase progress % indicator
prechecks Array List of Pre-Check phase results
prechecks[*] Object Pre-Check status
prechecks[*].message String Message describing Pre-Check failure, empty if Pre-Check succeeded
prechecks[*].name String Name or identifier of Pre-Check
prechecks[*].status String Status of Pre-Check: OK, WARNING, ERROR, VETO

Curl Example: Getting Transformation Pre-check Results


The curl command to accomplish this is:

curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/precheck

ECS CLI Command: Getting Transformation Pre-check Results


esccli.py transformation get-precheck

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RUN A TRANSFORMATION DATA ENUMERATION JOB


Use this call to begin the Data Enumeration phase, where ECS builds a snapshot of the legacy storage content.

Call:
POST /object/transformation/<transformation_id>/enumeration

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Pre-check phase is finished successfully.

Request Body:
None

37

Page 42 of 78
Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Curl Example: Running Transformation Data Enumeration


The curl command to accomplish this is:

curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/enumeration

Output:
{"transformation_id":"urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-9b1603e01545"}

ECS CLI Command: Running Transformation Data Enumeration


esccli.py transformation do-enum

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET TRANSFORMATION DATA ENUMERATION JOB RESULTS


Call this API to obtain the status of the Data Enumeration phase on the Transformation session. Be prepared to call this API many
times or iterate it in an asynchronous loop.

Call this API, ideally in a timed loop, until the API returns both "status": "Succeeded" and "progress": 100.0.

Call:
GET /object/transformation/<transformation_id>/enumeration

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Enumeration job is in process or has ended.


38

Page 43 of 78
Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
Report object

Response Example:
{
"errors": [],
"status": "Succeeded",
"progress": 100.0
}

Response Body Parameters:


PATH TYPE DESCRIPTION
errors Array List of error names occurred during this phase
errors[*] String Error name
status String Phase status
progress Double Phase progress % indicator

Curl Command: Getting Transformation Data Enumeration Results


The curl command to accomplish this is:

curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/enumeration

Output:
{"status":"Succeeded","errors":[],"progress":100.0,"start_time":"2015-10-07T08:41:16.398"}

ECS CLI Command: Getting Transformation Data Enumeration Results


ecscli.py transformation get-enum

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RUN A TRANSFORMATION DATA INDEXING JOB


Use this call to begin the Data Indexing phase, which teaches ECS about the existing Centera legacy storage data.

Call:
POST /object/transformation/<transformation_id>/indexing

Principal Role:
SYSTEM_ADMIN

39

Page 44 of 78
Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Enumeration phase is finished successfully.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Curl Command: Running Transformation Data Indexing


The curl command to accomplish this is:

curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/indexing

Output:
{"transformation_id":"urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-9b1603e01545"}

ECS CLI Command: Running Transformation Data Indexing


ecscli.py transformation do-index

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET TRANSFORMATION DATA INDEXING JOB RESULTS


Use this API to receive information about the status of the Transformation Data Indexing job.

Call this API, ideally in a timed loop, until the API returns both "status": "Succeeded" and "progress": 100.0.

Call:
GET /object/transformation/<transformation_id>/indexing
40

Page 45 of 78
Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Indexing job is in progress or has ended.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A Report object

Response Example:
{
"errors": [],
"status": "Succeeded",
"progress": 100.0
}

Response Body Parameters:


PATH TYPE DESCRIPTION
errors Array List of error names occurred during this phase
errors[*] String Error name
status String Phase status
progress Double Phase progress % indicator

Curl Example: Getting Transformation Data Indexing Results


The curl command to accomplish this is:

curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/indexing

Output:
{"status":"Succeeded","errors":[],"progress":100.0,"start_time":"2015-10-07T08:45:48.102"}curl

ECS CLI Command: Getting Transformation Data Indexing Results


ecscli.py transformation get-indexing

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

41

Page 46 of 78
RUN A TRANSFORMATION DATA MIGRATION JOB
Use this API to perform the Data Migration phase, which actually copies data from the Centera legacy storage into ECS.

NOTE: You must already have succeeded at the Data Indexing phase to begin the Data Migration phase.

Call:
POST /object/transformation/<transformation_id>/migration

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Indexing phase is finished successfully.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Curl Command: Running Transformation Data Migration


The curl command to accomplish this is:

curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json


https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/migration

Output:
{"transformation_id":"urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-9b1603e01545"}

ECS CLI Command: Running Transformation Data Migration


ecscli.py transformation do-migration

Required Arguments:
[-hostname <HOSTIP>]

42

Page 47 of 78
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET TRANSFORMATION DATA MIGRATION JOB RESULTS


Use this API to receive information about the status of the Transformation Data Migration job.

Call this API, ideally in a timed loop, until the API returns both "status": "Succeeded" and "progress": 100.0.

Call:
GET /object/transformation/<transformation_id>/migration

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Migration job is in progress or has ended.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A Report object

Response Example
{
"errors": [],
"status": "Succeeded",
"progress": 100.0
}

Response Body Parameters:


PATH TYPE DESCRIPTION
errors Array List of error names occurred during this phase
errors[*] String Error name
status String Phase status
progress Double Phase progress % indicator

Curl Command: Getting Transformation Data Migration Status


curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json
https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/migration

Output:
{"status":"Succeeded","errors":[],"progress":100.0,"start_time":"2015-10-07T08:51:05.573"}

43

Page 48 of 78
ECS CLI Command: Getting Transformation Data Migration Status
ecscli.py transformation get-migration

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RUN A TRANSFORMATION DATA RECONCILIATION JOB


Use this API to perform the Data Reconciliation phase, which verifies that data has been correctly copied from the Centera legacy
storage into ECS.

Call:
POST /object/transformation/<transformation_id>/reconciliation

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Data Migration phase is finished successfully.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Curl Command: Running Transformation Data Reconciliation


curl -s -k -X POST -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json
https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/reconciliation

Output:
{"transformation_id":"urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-9b1603e01545"}
44

Page 49 of 78
ECS CLI Command: Running Transformation Data Reconciliation
ecscli.py transformation do-reconcile

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET TRANSFORMATION DATA RECONCILIATION STATUS


Use this API to receive information about the status of the Transformation Data Reconciliation job.

Call this API, ideally in a timed loop, until the API returns both "status": "Succeeded" and "progress": 100.0.

Call:
GET /object/transformation/<transformation_id>/reconciliation

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Data Reconciliation job is in progress or has ended.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A Report object

Response Example:
{
"errors": [],
"status": "Succeeded",
"progress": 100.0
}

Response Body Parameters:


PATH TYPE DESCRIPTION
errors Array List of error names occurred during this phase
errors[*] String Error name
status String Phase status
progress Double Phase progress % indicator

45

Page 50 of 78
Curl Command: Getting Transformation Data Reconciliation Status
curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json
https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/reconciliation

Output:
{"status":"Succeeded","errors":[],"progress":100.0,"start_time":"2015-10-07T10:21:31.721"}

ECS CLI Command: Getting Transformation Data Reconciliation Status


ecscli.py transformation get-recon

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET TRANSFORMATION DATA RECONCILIATION MISMATCHES


Use this API to get a list of object names which were not successfully migrated.

Call:
GET /object/transformation/<transformation_id>/reconciliation/mismatches

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Data Reconciliation job is finished successfully.

Request Body:
None

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Query Parameters:
NAME TYPE REQUIRED DESCRIPTION
sourceId String yes source id
token String no Optional base64 encoded token string for pagination

Response Code:
200 OK

Response Body:
A ReconciliationMismatchesRestRep object

Response Example:
{
"mismatches": [],
"token": 100.0
}
46

Page 51 of 78
Response Body Parameters:
PATH TYPE MANDATORY DESCRIPTION
mismatches Array yes List of mismatch objects
mismatches[*] Object no Mismatch object
mismatches[*].namespace String yes Namespace of an object
mismatches[*].bucket_name String yes Bucket name of an object
mismatches[*].object_name String yes An object name
mismatches[*].object_version String yes An object version id
token String yes A token to fetch next portion of incomplete ranges

Curl Command: Getting Transformation Data Reconciliation Mis-matches


curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H ACCEPT:application/json
https://10.247.200.192:4443/object/transformation/urn:Transformation:Centera:7b4985d2-1dd2-11b2-9ac4-
9b1603e01545/reconciliation/mismatches

Output:
{"mismatches":[]}

ECS CLI Command: Getting Transformation Data Reconciliation Mis-matches


ecscli.py transformation get-recon-mismatches

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

APPENDIX B: SUBSIDIARY REST APIS RELATED TO MIGRATION


This section includes descriptions of REST APIs that you might need for operations related to cleaning up after migrating data from
Centera storage into ECS, or for removing data structures for unsuccessful migration attempts.

LIST ALL TRANSFORMATION SESSION ON THE ECS HOST


List transformations that exist on this host.

Call:
GET /object/transformation

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Request Body:
None

Response Code:
200 OK

Response Body:
An object with following properties

NAME TYPE DESCRIPTION


transformations Array An array of TransformationDetails objects

47

Page 52 of 78
Response Example:
{
"transformations": [
{
"id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000",
"namespace": "centera_a000s000-0aa0-00a0-0aa0-a0a00a000000",
"replication_group": "urn:storageos:ReplicationGroupInfo:b3bf2d47-d732-457c-bb9b-
d260eb53a76b:global"
}
]
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformations[*].id String Transformation identifier
transformations[*]namespace String Automatically generated namespace where buckets will be created
transformations[*]replication_group String Identifier of replication group where namespace is created

ECS CLI Command: Getting a List of Current Transformations


ecscli.py transformation get

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
NOTE: If you send a transformation get command without a -transId argument, ECS returns the current list of Transformations
that have been registed.

UPDATE PROPERTIES FOR A TRANSFORMATION


Use this API to modify transformation properties for a particular transformation ID.

NOTE: You cannot change the Type of the transformation. You cannot modify properties once the Pre-Check phase passes.

Call:
PUT /object/transformation/<transformation_id>

Path Parameters:
NAME TYPE DESCRIPTION
transformation_id String Transformation identifier

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Pre-check process is still on-going.

Request Body:
An object with following properties

48

Page 53 of 78
NAME TYPE REQUIRED DESCRIPTION
type String yes Type of the transformation, for instance - "centera", "s3", etc.
name String no Human friendly Transformation name
description String no Human friendly Transformation description
replication_group String no Id of existing replication group where Transformation will create
namespace and will put written/migrated objects
admin String no Centera MAPI Administrator login
password String no Centera MAPI Administrator password
management_ip String no Centera MAPI interface host IP address
port Integer no Centera MAPI interface port, default 3682
access_ip String no Centera Access Node IP address, default managment_ip
datagram_port Integer no Centera Access Node datagram port, default 3218
namespace String no Namespace for Transformation to use

Request Example:
{
"type": "centera",
"name": "Centera Transformation",
"description": "Centera transformation",
"replication_group": "urn:storageos:ReplicationGroupInfo:b3bf2d47-d732-457c-bb9b-d260eb53a76b:global",
"admin": "admin",
"password": "adminPassword",
"management_ip": "127.0.0.1",
"port": 3682,
"access_ip": "127.0.0.1",
"datagram_port": 3218,
"namespace": "transformation_namespace"
}

Response Code:
200 OK

Response Body:
An object with following properties:

NAME TYPE DESCRIPTION


transformation_id String An identifier of the created Transformation

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Updating a Transformation


ecscli.py transformation update

Required Arguments:
[-transId <TRANSID_CURRENT>]
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_file>]
[-type centera]

49

Page 54 of 78
[-admin <Centera_Admin_UserName>]
[-pw <Centera_Admin_Password>]
[-mgmt_ip <Centera_Management_Node_IP_addr>]
[-name <transformation_name>]
[-d <transformation_name>]
[-rg <replication_group_current>]

Optional Arguments
[-access_ip <Centera_Access_Node_IP_addr>] Default
[-mgmt_port 3682] Default
[-datagram_port 3218] Default

DELETE A TRANSFORMATION JOB


This API deletes a Transformation session and all created artifacts including buckets, users and all indexes.

NOTE: This API does not delete ECS buckets and users if they contain migrated or written data.

Call:
DELETE /object/transformation/<transformation_id>

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 No Transformation phases should be in progress.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"phase_id": "Deletion",
"status": "InProgress"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
phase_id String Phase identifier
status String Phase status

50

Page 55 of 78
ECS CLI Command: Deleting a Transformation Session
ecscli.py transformation delete-transformation

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

DELETE TRANSFORMATION SOURCES


This API deletes the specified transformation sources, e.g. pools/buckets that you created to use in the transformation session. This
API expects a list of source profile identifiers which unequally identifies a source pool/bucket and its owner.

Call:
DELETE /object/transformation/<transformation_id>/transformationSourcesId={sourceId}

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Pre-check should be failed/ not started.

Query Parameters:
NAME TYPE DESCRIPTION
id String Source identifier

Request Example:
DELETE /object/transformation/urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-
a0a00a000000/transformationSources?id=default/profile&id=pool1/transform_profile1

Response Code:
200 OK

Response Body:
A TransformationInfo object

Response Example
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

RETRY A TRANSFORMATION DATA PRE-CHECKS JOB


After resolving issues that occurred in the initial Pre-check phase, use this API to re-run the Pre-check analysis.

51

Page 56 of 78
Call:
POST /object/transformation/<transformation_id>/precheck/retry

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Pre-check job has failed/aborted.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Retrying Transformation Pre-checks


esccli.py transformation do-precheck-retry

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

CANCEL A TRANSFORMATION DATA PRE-CHECKS JOB


Use this API to abort a running Pre-check analysis.

Call:
POST /object/transformation/<transformation_id>/precheck/cancel

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

52

Page 57 of 78
 The Transformation must exist.

 The Transformation Pre-check job is on-going.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Cancelling a Transformation Data Pre-check


ecscli.py transformation cancel-precheck

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RETRY A TRANSFORMATION DATA ENUMERATION JOB


After resolving issues that occurred in the initial Data Enumeration job, use this API to re-run the Data Enumeration process, using
already established resources.

Call:
POST /object/transformation/<transformation_id>/enumeration/retry

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Enumeration job has failed/aborted.

Request Body:
None

53

Page 58 of 78
Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Retrying a Transformation Data Enumeration


esccli.py transformation do-enum-retry

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

CANCEL A TRANSFORMATION DATA ENUMERATION JOB


Use this API to abort a running Transformation Data Enumeration job.

Call:
POST /object/transformation/<transformation_id>/enumeration/cancel

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Enumeration job is on-going.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A TransformationInfo object
54

Page 59 of 78
Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Canceling Transformation Data Enumeration


esccli.py transformation cancel-enum

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

GET FAILED ENUMERATION SOURCES


If a legacy storage content access issue appears during the Data Enumeration phase, ECS records details, and presents them in the
Enumeration report. Use this API to examine those details.

Call:
GET /object/transformation/<transformation_id>/enumeration/failedSources

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Enumeration job has ended.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A List of Sources

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000",
"source_ids": [
"default/profile"
]
}

55

Page 60 of 78
Response Body Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier
source_ids Array List of Legacy Storage source identifiers used for enumeration which has incomplete
enumeration results
source_ids[*] String Legacy Storage source identifier for which enumeration encountered incomplete results

ECS CLI Command: Getting Failed Transformation Sources


esccli.py transformation get-failed-sources

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

LIST INCOMPLETE CENTERA ENUMERATION RANGES


ECS enumerates objects in the Centera legacy storage using the Centera SDK Query API. The overall time frame of the objects
stored in Centera is split into several shorter ones which are processed simultaneously by different ECS nodes. ECS keeps track of
time ranges for which Centera SDK Query results were incomplete (error or abort as well) and allows to fetch them through this call.
Response contains a list of pairs indicating start and end of problematic time range. Number of entries in the response list is limited
and token value is retuned to fetch next portion of incomplete ranges.

Call:
GET /object/transformation/<transformation_id>/centera/incompleteEnumerationResults?sourceId={sourceId}
&token={token : (\\w+)?}

Principal Role:
SYSTEM_ADMIN, SYSTEM_MONITOR

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Enumeration job has ended.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Query Parameters:
NAME TYPE REQUIRED DESCRIPTION
sourceId String yes source id, returned by 1.19 Get Failed Enumeration Sources
token String no Optional base64 encoded token string for pagination

Response Code:
200 OK

Response Body:
An IncompleteEnumerationResult object

56

Page 61 of 78
Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000",
"source_id": "default/profile",
"incomplete_ranges": [
{
"from": 1435795200000
"to": 1436400000000
}
],
"token" : "Y29tcGxldGVseSBvcGFxdWUgdG9rZW4gc3RyaW5nCg=="
}

Response Body Parameters:


PATH TYPE OPTIONAL DESCRIPTION
transformation_id String no Transformation identifier
source_id String no Identifier of a Centera Storage profile used to enumerate pool
incomplete_ranges Array no A list of incomplete ranges
incomplete_ranges[*].from Long no Start time of incomplete range, measured in milliseconds,
starting from midnight, January 1, 1970 UTC.
incomplete_ranges[*].to Long no End time of incomplete range, measured in milliseconds,
starting from midnight, January 1, 1970 UTC.
Token String yes A token to fetch next portion of incomplete ranges

ECS CLI Command: Getting Incomplete Enumeration Results


ecscli.py transformation get_inc_enums

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RETRY A TRANSFORMATION DATA INDEXING JOB


After resolving issues that occurred in the initial Data Index phase, use this API to re-run the Data Index process, using already
established resources.

Call:
POST /object/transformation/<transformation_id>/indexing/retry

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Data Indexing job has failed/aborted.

Request Body:
None

57

Page 62 of 78
Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Retrying Transformation Data Indexing


ecscli.py transformation do-index-retry

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

CANCEL A TRANSFORMATION DATA INDEX JOB


Use this API to abort a running Data Index job.

Call:
POST /object/transformation/<transformation_id>/indexing/cancel

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Data Indexing job is on-going.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A TransformationInfo object
58

Page 63 of 78
Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Canceling Transformation Data Indexing


ecscli.py transformation cancel-indexing

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RETRY A TRANSFORMATION DATA MIGRATION JOB


After resolving issues that occurred in the initial Data Migration job, use this API to re-run the Data Migration process, using already
established resources.

Call:
POST /object/transformation/<transformation_id>/migration/retry

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Data Migration job has failed/aborted.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

59

Page 64 of 78
Response Body Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Retrying Transformation Data Migration


ecscli.py transformation do-migration-retry

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

CANCEL A TRANSFORMATION DATA MIGRATION JOB


Use this API to abort a running Data Migration job.

Call:
POST /object/transformation/<transformation_id>/migration/cancel

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Data Migration job is ongoing.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Cancelling Transformation Data Migration


ecscli.py transformation cancel-migration

60

Page 65 of 78
Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RETRY A TRANSFORMATION DATA RECONCILIATION JOB


After resolving issues that occurred in the initial Data Reconciliation phase, use this API to re-run the Data Reconciliation process,
using already established resources.

Call:
POST /object/transformation/<transformation_id>/reconciliation/retry

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Data Reconciliation job has failed/aborted.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
202 Accepted

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Retrying Transformation Data Reconciliation


ecscli.py transformation do-recon-retry

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

CANCEL A TRANSFORMATION DATA RECONCILIATION JOB


Use this API to abort a running Data Reconciliation job.

61

Page 66 of 78
Call:
POST /object/transformation/<transformation_id>/reconciliation/cancel

Principal Role:
SYSTEM_ADMIN

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Transformation Data Reconciliation job is on-going.

Request Body:
None

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Response Code:
200 OK

Response Body:
A TransformationInfo object

Response Example:
{
"transformation_id": "urn:Transformation:Centera:a000s000-0aa0-00a0-0aa0-a0a00a000000"
}

Response Body Parameters:


PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

ECS CLI Command: Cancelling Transformation Data Reconciliation


ecscli.py transformation cancel-recon

Required Arguments:
[-hostname <HOSTIP>]
[-cookiefile <COOKIE_FILE>]
[-transId <TRANSID_CURRENT>]

RUN A TRANSFORMATION RECOVERY MIGRATION JOB


Run a transformation recovery migration operation.

Call:
POST /object/transformation/<transformation_id>/recoveryMigration

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Principal Roles:
This call has no restrictions.
62

Page 67 of 78
Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Data Reconciliation process must have already ended with failures.

Request Example:
{
HttpServletResponse
}

Response Code:
202 Accepted

Response Body:
A TransformationInfo object.

Response Body Parameters:


FIELD TYPE REQUIRED DESCRIPTION
transformation_id URI yes ID of this transformation
phase_id string Optional Phase id of transformation. Possible values: PreCheck, Enumeration,
Indexing, Migration, Reconciliation, Deletion.
Status string optional Phase status. Possible values: Pending, InProgress, Succeeded, Failed,
Canceled.
source_ids string optional List of sources (profile and bucket mappings) for transformation.
Range=0-* Elements.
namespace string optional Namespace for transformation. If namespace is not provided by the user,
this namespace will be used by transformation during bucket creation.
replication_group string optional Replication group for the transformation. If bucket is not provided by the
user, this replication group will be used by transformation during bucket
creation.

GET A TRANSFORMATION RECOVERY MIGRATION JOB REPORT


Return report of executed recovery migration.

Call:
GET /object/transformation/<transformation_id>/recoveryMigration

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Principal Role:
This call has no restrictions.

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation Data Recovery Migration must be in progress or ended.

Response Code:
202 Accepted

63

Page 68 of 78
Response Body:
Reply contains a summary of migration process.

Response Body Parameters:


FIELD TYPE DESCRIPTION
Errors array List of phase errors. Range=0-* Elements.
Status string Phase status Possible values: PreCheck, Enumeration, Indexing,
Migration, Reconciliation, Deletion.
progress Double Phase progress.
processing_speed Double Object processing speed in object/second.
processing_speed_for_last_hour Double Average object processing speed for last hour in object/second.
processing_speed_for_last_day Double Average object processing speed for last day in object/second.
start_time string Phase start time represented as string in ISO8601 with UTC time zone
entry_count Long Entry count

RETRY A RECOVERY MIGRATION JOB


Retry a migration recovery process for a given transformation.

Call:
POST /object/transformation/<transformation_id>/recoveryMigration/retry

Path Parameters:
transformation_idTransformation ID for the recovery migration that will be re-tried.

Principal Role:
This call has no restrictions.

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The previous Migration session must have failed/aborted.

Request Body:
All parameters are required unless otherwise stated.

Request Body Example:


{
HttpServletResponse
}

Response Code:
202 Accepted

Response Body:
A TransformationInfo object.

64

Page 69 of 78
Response Body Parameters:
FIELD TYPE REQUIRED DESCRIPTION
transformation_id URI yes ID of this transformation.
phase_id string optional Phase id of transformation. Possible values: PreCheck, Enumeration,
Indexing, Migration, Reconciliation, Deletion
Status string optional Phase status. Possible values: Pending, InProgress, Succeeded, Failed,
Canceled.
source_ids string optional List of sources (profile and bucket mappings) for the transformation.
Range=0-* Elements.
Namespace string optional Namespace for transformation. If namespace not provided by user, this
namespace will be used by transformation during bucket creation.
replication_group string optional Replication group for transformation. If bucket not provided by user, this
replication group will be used by transformation during bucket creation.

CANCEL A TRANSFORMATION RECOVERY MIGRATION JOB


Cancel a running transformation recovery migration operation.

Call:
POST /object/transformation/<transformation_id>/recoveryMigration/cancel

Path Parameters:
PATH TYPE DESCRIPTION
transformation_id String Transformation identifier

Principal Roles:
This call has no restrictions.

Prerequisites:
The following conditions must be met in order to call this operation.

 The Transformation must exist.

 The Transformation recovery Migration process is on-going.

Request Body:
None.

Response Code:
202 Accepted

Response Body:
A TransformationInfo object.

65

Page 70 of 78
Response Body Parameters:
FIELD TYPE REQUIRED DESCRIPTION
transformation_id URI yes ID of this transformation
phase_id string Optional Phase id of transformation. Possible values: PreCheck, Enumeration,
Indexing, Migration, Reconciliation, Deletion.
Status string optional Phase status. Possible values: Pending, InProgress, Succeeded, Failed,
Canceled.
source_ids string optional List of sources (profile and bucket mappings) for transformation.
Range=0-* Elements.
namespace string optional Namespace for transformation. If namespace is not provided by the user,
this namespace will be used by transformation during bucket creation.
replication_group string optional Replication group for the transformation. If bucket is not provided by the
user, this replication group will be used by transformation during bucket
creation.

APPENDIX C: TROUBLESHOOTING A DATA TRANSFORMATION SESSION


This section includes information about how to resolve issues that occur during data migration operations.

TRANSFORMATION ENGINE LOG FILE LOCATIONS


The Transformation Engine creates and stores messages about operations and progress in a log file placed in the following location:

/var/log/transformsvc.log

Similarly, the Transformation Engine stores error messages about operations in a log file located at:

/var/log/transformsvc-error.log

The Transformation Engine creates and stores messages about performance and statistics in these locations:

/var/log/transformsvc-perf-counter.log
/var/log/transformsvc-stats.log

ERROR CONDITIONS ON THE ECS END OF A TRANSFORMATION


The following table lists some error conditions that might occur from the ECS end of a Transformation session, the Transformation
Phase in which they occur, and suggestions for remediation.

ERROR PHASE SOLUTION


Failed to create instance with Create Instance You cannot use the same Centera system as the basis
<transformation_id> already exists for another Transformation instance until you Delete the
existing instance.
Source IP address is invalid. Create Instance Check for a correct Centera IP address.
Please specify correct IP address
before saving
failed to create transformation: Create Instance You must provide valid credentials for the Centera
Hit manageability client exception. system.
Could not connect <AdminName>[<IP>]
Selected pool/profile displayed in Source Selection Rename pool/profile names with edit option provided.
red
Unresolved profile mappings are Precheck Rename the pool/profile names using the edit option
found:[prats1/prats1, ...] provided in the Migration UI source selection page.
Data integrity is vulnerable Precheck Retry precheck once regen in centera is completed or
user can proceed to next phase with this error.
Data integrity is incomplete(VETO) Precheck Regen in Centera, and Retry the Precheck.
66

Page 71 of 78
ERROR PHASE SOLUTION
Version 4.1.0-3343-0-0 is not Precheck Migration is only support from the Centera side, when
supported the Centera version is 4.1.1 or later.
INTERNAL_ERROR and Migration Retry the migration once the ECS node is up.
PERSISTING_TASK_ENTRY_FAILED
Reconciliation failed and Read Reconciliation If there are clips that have been deleted in Centera after
Object failed you ran the Indexing phase, the Transformation engine
cannot reconcile the deleted clips. No remedies when
reconciliation fails for the deleted clips.
Reconciliation failed and Read Reconciliation Correct the corrupted clips and retry migration and
Object failed reconciliation, when reconciliation failed for corrupted
clips.

APPENDIX D: RE-CREATE UNREAD OBJECTS WHEN INDEXING FAILS


Indexing task may fail to create unread object entry.

RE-CREATE UNREAD OBJECTS


Corrupted objects are available through indexing/unreadObjects REST API:

standalone:~ # curl -s -k -X GET -H Content-Type:application/json -H X-SDS-AUTH-TOKEN:$TOKEN -H


ACCEPT:application/json
{"failed_objects":[
{"object_name":"CM9V1LNIQVP51e5QB8ILDRQ8HOAG41AR34IT5K03DF7VL9L22BAFE","source_id":"poolf/proff"}
]}
Build used: #500 (3.0.0.0.85202.38d6897)

2016-08-24T07:04:09,329 [TaskScheduler-transform-TRANSFORMATION_TASK_RUNNER-ParallelExecutor-073]
ERROR IndexingTaskExecutor [ urn:Transformation:Centera:2c2ff11e-1dd2-11b2-bb89-9b7c56760934
Indexing index-demo/demo-0x09-0x0000000000000000 ] Indexi
ng task failed due to exception:
com.emc.storageos.data.transformation.TransformationInternalException: Failed to ingest key
at
com.emc.storageos.data.transformation.centera.CenteraEnumerationEntryHandler.apply(CenteraEnumerati
onEntryHandler.java:105)
at
com.emc.storageos.data.transformation.centera.CenteraEnumerationEntryHandler.apply(CenteraEnumerati
onEntryHandler.java:45)
at
com.emc.storageos.data.transformation.common.EnumerationEntryHandlerStatsDecorator.accept(Enumerati
onEntryHandlerStatsDecorator.java:36)
at
com.emc.storageos.data.transformation.common.EnumerationEntryHandlerStatsDecorator.accept(Enumerati
onEntryHandlerStatsDecorator.java:17)
at
com.emc.storageos.data.transformation.common.AbstractIndexingTaskExecutor.lambda$null$0(AbstractInd
exingTaskExecutor.java:70)
at
com.emc.storageos.data.transformation.statistic.FunctionWithTelemetry.apply(FunctionWithTelemetry.j
ava:57)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.LongPipeline.reduce(LongPipeline.java:438)
at java.util.stream.LongPipeline.sum(LongPipeline.java:396)
at java.util.stream.ReferencePipeline.count(ReferencePipeline.java:526)
67

Page 72 of 78
at
com.emc.storageos.data.transformation.common.AbstractIndexingTaskExecutor.lambda$processEntries$1(A
bstractIndexingTaskExecutor.java:72)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.lambda$withSpeedometerFact
oryAndCollector$6(ProcessingSpeedCollector.java:115)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector$SpeedCollector.withSpeedCo
nsumer(ProcessingSpeedCollector.java:187)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector$SpeedPublisher.withSpeedCo
nsumer(ProcessingSpeedCollector.java:162)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.withSpeedConsumer(Processi
ngSpeedCollector.java:141)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.withSpeedometerFactoryAndC
ollector(ProcessingSpeedCollector.java:111)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.withSpeedometerFactory(Pro
cessingSpeedCollector.java:88)
at
com.emc.storageos.data.transformation.common.AbstractIndexingTaskExecutor.processEntries(AbstractIn
dexingTaskExecutor.java:64)
at
com.emc.storageos.data.transformation.common.IndexingTaskExecutor.doExecute(IndexingTaskExecutor.ja
va:112)
at
com.emc.storageos.data.transformation.common.IndexingTaskExecutor.execute(IndexingTaskExecutor.java
:76)
at
com.emc.storageos.data.transformation.common.IndexingTaskExecutor.execute(IndexingTaskExecutor.java
:48)
at
com.emc.storageos.data.transformation.processing.Executors$SampledExecutableEntryValueExecutor.exec
ute(Executors.java:176)
at
com.emc.storageos.data.transformation.processing.Executors$SampledExecutableEntryValueExecutor.exec
ute(Executors.java:144)
at
com.emc.storageos.data.transformation.processing.ExecutableEntryExecutor.execute(ExecutableEntryExe
cutor.java:87)
at
com.emc.storageos.data.transformation.processing.ExecutableEntryExecutor.execute(ExecutableEntryExe
cutor.java:51)
at
com.emc.storageos.data.transformation.processing.ExecutableEntryExecutor.execute(ExecutableEntryExe
cutor.java:113)
at
com.emc.storageos.data.transformation.processing.parallel.ParallelExecutor$1.call(ParallelExecutor.
java:70)
at
com.emc.storageos.data.transformation.processing.parallel.ParallelExecutor$1.call(ParallelExecutor.
java:67)
at
com.emc.storageos.data.transformation.processing.parallel.ExecutableEntryTask.call(ExecutableEntryT
ask.java:39)
at
com.emc.storageos.data.transformation.processing.parallel.ExecutableEntryTask.call(ExecutableEntryT
ask.java:24)
at
com.emc.storageos.data.transformation.processing.TaskSchedulerAdapter$SampledSubmitter$1.call(TaskS
chedulerAdapter.java:217)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

68

Page 73 of 78
Caused by: java.lang.RuntimeException: java.lang.RuntimeException:
com.emc.storageos.data.object.exception.ObjectControllerException: Can not find queried in source
system object.
at com.emc.storageos.data.object.utils.ThrowingFunction.apply(ThrowingFunction.java:19)
at
com.emc.storageos.data.object.utils.PartialFunctions.composeAndApply(PartialFunctions.java:24)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter.lambda$queryObjectM
etadata$1(CenteraUnderTransformationAdapter.java:133)
at com.emc.storageos.data.object.utils.Throwings.processThrower(Throwings.java:25)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter.queryObjectMetadata
(CenteraUnderTransformationAdapter.java:133)
at
com.emc.storageos.data.transformation.SystemUnderTransformationAdapterFactory$SampledTransformation
Adapter.queryObjectMetadata(SystemUnderTransformationAdapterFactory.java:236)
at
com.emc.storageos.data.transformation.common.EnumerationEntryHandler.fetchMetadata(EnumerationEntry
Handler.java:165)
at
com.emc.storageos.data.transformation.centera.CenteraEnumerationEntryHandler.lambda$apply$0(Centera
EnumerationEntryHandler.java:74)
at
com.emc.storageos.data.transformation.processing.parallel.UnInterruptibleThread.invokeUnInterruptib
le(UnInterruptibleThread.java:142)
at
com.emc.storageos.data.transformation.processing.parallel.UnInterruptibleThread.tryInvokeUnInterrup
tible(UnInterruptibleThread.java:55)
at
com.emc.storageos.data.transformation.centera.CenteraEnumerationEntryHandler.apply(CenteraEnumerati
onEntryHandler.java:73)
... 40 more

Caused by: java.lang.RuntimeException:


com.emc.storageos.data.object.exception.ObjectControllerException: Can not find queried in source
system object.
at com.emc.storageos.data.object.utils.ThrowingFunction.apply(ThrowingFunction.java:19)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter$IfExistsInSourceSys
tem.lambda$applyThrows$0(CenteraUnderTransformationAdapter.java:189)
at
com.emc.storageos.data.transformation.centera.CenteraConnectionPool.withConnection(CenteraConnectio
nPool.java:85)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter$IfExistsInSourceSys
tem.applyThrows(CenteraUnderTransformationAdapter.java:185)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter$IfExistsInSourceSys
tem.applyThrows(CenteraUnderTransformationAdapter.java:173)
at com.emc.storageos.data.object.utils.ThrowingFunction.apply(ThrowingFunction.java:17)
... 50 more
Caused by: com.emc.storageos.data.object.exception.ObjectControllerException: Can not find queried
in source system object.
Caused by: com.emc.storageos.data.transformation.TransformationInternalException: Cannot open
clipInfo: 5PQQGB2MHACCMe4DS71PAFAB3CF. due to error -10036(FP_BLOBIDMISMATCH_ERR)
at
com.emc.storageos.data.transformation.centera.CenteraRemoteClipParser.doParseClip(CenteraRemoteClip
Parser.java:213)
at
com.emc.storageos.data.transformation.centera.CenteraRemoteClipParser.parseClip(CenteraRemoteClipPa
rser.java:105)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter.fetchCenteraObjectM
etadata(CenteraUnderTransformationAdapter.java:244)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter.lambda$null$0(Cente
raUnderTransformationAdapter.java:137)
69

Page 74 of 78
at com.emc.storageos.data.object.utils.ThrowingFunction.apply(ThrowingFunction.java:17)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter$IfExistsInSourceSys
tem.lambda$applyThrows$0(CenteraUnderTransformationAdapter.java:189)
at
com.emc.storageos.data.transformation.centera.CenteraConnectionPool.withConnection(CenteraConnectio
nPool.java:85)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter$IfExistsInSourceSys
tem.applyThrows(CenteraUnderTransformationAdapter.java:185)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter$IfExistsInSourceSys
tem.applyThrows(CenteraUnderTransformationAdapter.java:173)
at com.emc.storageos.data.object.utils.ThrowingFunction.apply(ThrowingFunction.java:17)
at
com.emc.storageos.data.object.utils.PartialFunctions.composeAndApply(PartialFunctions.java:24)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter.lambda$queryObjectM
etadata$1(CenteraUnderTransformationAdapter.java:133)
at com.emc.storageos.data.object.utils.Throwings.processThrower(Throwings.java:25)
at
com.emc.storageos.data.transformation.centera.CenteraUnderTransformationAdapter.queryObjectMetadata
(CenteraUnderTransformationAdapter.java:133)
at
com.emc.storageos.data.transformation.SystemUnderTransformationAdapterFactory$SampledTransformation
Adapter.queryObjectMetadata(SystemUnderTransformationAdapterFactory.java:236)
at
com.emc.storageos.data.transformation.common.EnumerationEntryHandler.fetchMetadata(EnumerationEntry
Handler.java:165)
at
com.emc.storageos.data.transformation.centera.CenteraEnumerationEntryHandler.lambda$apply$0(Centera
EnumerationEntryHandler.java:74)
at
com.emc.storageos.data.transformation.processing.parallel.UnInterruptibleThread.invokeUnInterruptib
le(UnInterruptibleThread.java:142)
at
com.emc.storageos.data.transformation.processing.parallel.UnInterruptibleThread.tryInvokeUnInterrup
tible(UnInterruptibleThread.java:55)
at
com.emc.storageos.data.transformation.centera.CenteraEnumerationEntryHandler.apply(CenteraEnumerati
onEntryHandler.java:73)
at
com.emc.storageos.data.transformation.centera.CenteraEnumerationEntryHandler.apply(CenteraEnumerati
onEntryHandler.java:45)
at
com.emc.storageos.data.transformation.common.EnumerationEntryHandlerStatsDecorator.accept(Enumerati
onEntryHandlerStatsDecorator.java:36)
at
com.emc.storageos.data.transformation.common.EnumerationEntryHandlerStatsDecorator.accept(Enumerati
onEntryHandlerStatsDecorator.java:17)
at
com.emc.storageos.data.transformation.common.AbstractIndexingTaskExecutor.lambda$null$0(AbstractInd
exingTaskExecutor.java:70)
at
com.emc.storageos.data.transformation.statistic.FunctionWithTelemetry.apply(FunctionWithTelemetry.j
ava:57)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.LongPipeline.reduce(LongPipeline.java:438)
at java.util.stream.LongPipeline.sum(LongPipeline.java:396)
at java.util.stream.ReferencePipeline.count(ReferencePipeline.java:526)

70

Page 75 of 78
at
com.emc.storageos.data.transformation.common.AbstractIndexingTaskExecutor.lambda$processEntries$1(A
bstractIndexingTaskExecutor.java:72)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.lambda$withSpeedometerFact
oryAndCollector$6(ProcessingSpeedCollector.java:115)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector$SpeedCollector.withSpeedCo
nsumer(ProcessingSpeedCollector.java:187)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector$SpeedPublisher.withSpeedCo
nsumer(ProcessingSpeedCollector.java:162)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.withSpeedConsumer(Processi
ngSpeedCollector.java:141)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.withSpeedometerFactoryAndC
ollector(ProcessingSpeedCollector.java:111)
at
com.emc.storageos.data.transformation.statistic.ProcessingSpeedCollector.withSpeedometerFactory(Pro
cessingSpeedCollector.java:88)
at
com.emc.storageos.data.transformation.common.AbstractIndexingTaskExecutor.processEntries(AbstractIn
dexingTaskExecutor.java:64)
at
com.emc.storageos.data.transformation.common.IndexingTaskExecutor.doExecute(IndexingTaskExecutor.ja
va:112)
at
com.emc.storageos.data.transformation.common.IndexingTaskExecutor.execute(IndexingTaskExecutor.java
:76)
at
com.emc.storageos.data.transformation.common.IndexingTaskExecutor.execute(IndexingTaskExecutor.java
:48)
at
com.emc.storageos.data.transformation.processing.Executors$SampledExecutableEntryValueExecutor.exec
ute(Executors.java:176)
at
com.emc.storageos.data.transformation.processing.Executors$SampledExecutableEntryValueExecutor.exec
ute(Executors.java:144)
at
com.emc.storageos.data.transformation.processing.ExecutableEntryExecutor.execute(ExecutableEntryExe
cutor.java:87)
at
com.emc.storageos.data.transformation.processing.ExecutableEntryExecutor.execute(ExecutableEntryExe
cutor.java:51)
at
com.emc.storageos.data.transformation.processing.ExecutableEntryExecutor.execute(ExecutableEntryExe
cutor.java:113)
at
com.emc.storageos.data.transformation.processing.parallel.ParallelExecutor$1.call(ParallelExecutor.
java:70)
at
com.emc.storageos.data.transformation.processing.parallel.ParallelExecutor$1.call(ParallelExecutor.
java:67)
at
com.emc.storageos.data.transformation.processing.parallel.ExecutableEntryTask.call(ExecutableEntryT
ask.java:39)
at
com.emc.storageos.data.transformation.processing.parallel.ExecutableEntryTask.call(ExecutableEntryT
ask.java:24)
at
com.emc.storageos.data.transformation.processing.TaskSchedulerAdapter$SampledSubmitter$1.call(TaskS
chedulerAdapter.java:217)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

71

Page 76 of 78
Caused by: com.filepool.fplibrary.FPLibraryException: BlobID mismatch between client & server, blob
corrupt? (transid='vipr-host-10_77_33_80/468/READ_CLIP')
at com.filepool.fplibrary.FPClip.<init>(Unknown Source)
at
com.emc.storageos.data.transformation.centera.natives.FPClipExt.<init>(FPClipExt.java:20)
at
com.emc.storageos.data.transformation.centera.FpLibraryObjectsFactory.openFPClip(FpLibraryObjectsFa
ctory.java:80)
at
com.emc.storageos.data.transformation.centera.CenteraRemoteClipParser.doParseClip(CenteraRemoteClip
Parser.java:134)
... 59 more

72

Page 77 of 78
Dell Technologies Confidential Information version: 2.3.6.91

Page 78 of 78

You might also like