Create a SnapMirror policy
POST /snapmirror/policies
Introduced In: 9.6
Creates a SnapMirror policy. The property "identity_preservation" is applicable to only SnapMirror relationships with SVM endpoints and it indicates which configuration of the source SVM is replicated to the destination SVM.
It takes the following values:
-
full
- indicates that the source SVM configuration is replicated to the destination SVM endpoint. -
exclude_network_config
- indicates that the source SVM configuration other than network configuration is replicated to the destination SVM endpoint. -
exclude_network_and_protocol_config
- indicates that the source SVM configuration is not replicated to the destination SVM endpoint.
Important notes
-
The property "identity_preservation" is applicable to only SnapMirror relationships with SVM endpoints and it indicates which configuration of the source SVM is replicated to the destination SVM.
-
The properties "identity_preservation" and "transfer_schedule" are not applicable for "sync" type policies.
-
The properties "copy_all_source_snapshots", "copy_latest_source_snapshot", and "create_snapshot_on_source" are mutually exclusive.
-
The properties "copy_all_source_snapshots", "copy_latest_source_snapshot", and "create_snapshot_on_source" are not applicable for "sync" type policies.
-
No "retention" properties can be specified if "copy_all_source_snapshots" or 'copy_latest_source_snapshot' is specified.
-
The properties "retention.creation_schedule" and "retention.prefix" are not applicable for "sync" type policies.
-
The property "retention.creation_schedule" is not applicable for "async" policies with "create_snapshot_on_source" set to "false".
-
The property "sync_common_snapshot_schedule" is not applicable for an "async" type policy.
-
The property "retention.count" specifies the maximum number of Snapshot copies that are retained on the SnapMirror destination volume.
-
When the property "retention.label" is specified, the Snapshot copies that have a SnapMirror label matching this property is transferred to the SnapMirror destination.
-
When the property "retention.creation_schedule" is specified, Snapshot copies are directly created on the SnapMirror destination. The Snapshot copies created have the same content as the latest Snapshot copy already present on the SnapMirror destination.
-
The property "transfer_schedule" cannot be set to null (no-quotes) during SnapMirror policy POST.
-
The properties "retention.label" and "retention.count" must be specified for "async" policies with "create_snapshot_on_source" set to "false".
-
The property "rentention.warn" is not supported for a policy when the "retention.preserve" property is false.
-
The property "retention.warn" value must be less than the property "retention.count" value for a rule in a policy.
-
The property "archive.enabled" can be set to "true" only for "async" policies with "create_snapshot_on_source" set to "false". The property "archive.after_days" can be set only when "archive.enabled" is true.
Required properties
-
name
- Name of the new SnapMirror policy.
Recommended optional properties
-
svm.name
orsvm.uuid
- Name or UUID of the SVM that owns the SnapMirror policy.
Default property values
If not specified in POST, the following default property values are assigned:
-
type
- async -
sync_type
- sync (whentype
is sync) -
network_compression_enabled
- false -
throttle
- 0 -
identity_preservation
-exclude_network_and_protocol_config
-
archive.after_days
- 0 (whenarchive.enabled
is true)
Related ONTAP commands
-
snapmirror policy create
Examples
Creating a SnapMirror policy of type "sync"
POST "/api/snapmirror/policies/" '{"name": "policy1", "svm.name": "VS0", "type": "sync", "sync_type": "sync"}'
Creating a SnapMirror policy of type "async" with two sets of retention values, one with a creation_schedule
POST "/api/snapmirror/policies" '{"name": "policy_ret", "svm": {"name": "vs1"}, "retention": [{"label": "weekly", "count": "2", "creation_schedule": {"name": "weekly"}}, {"label":"daily", "count":"7"}]}'
Creating a SnapMirror policy of type "async"
POST "/api/snapmirror/policies" '{"name": "newPolicy", "svm":{"name" : "vs1"}, "type": "async"}'
Creating a SnapMirror policy of type "async" which replicates all Snapshot copies
POST "/api/snapmirror/policies" '{"name": "newPolicy", "svm":{"name" : "vs1"}, "type": "async", "copy_all_source_snapshots": "true"}'
Creating a SnapMirror policy of type "async" which replicates latest Snapshot copy
POST "/api/snapmirror/policies" '{"name": "newPolicy2", "svm":{"name" : "vs1"}, "type": "async", "copy_latest_source_snapshot": "true"}'
Creating a SnapMirror policy of type "async" which does not create Snapshot copies on source
POST "/api/snapmirror/policies" '{"name": "newPolicy", "svm":{"name" : "vs1"}, "type": "async", "create_snapshot_on_source": "false", "retention": [{"label": "daily", "count": 7}]}'
Creating a SnapMirror policy of type "sync" with sync_type as "automated_failover"
POST "/api/snapmirror/policies/" '{"name": "policy1", "svm.name": "VS0", "type": "sync", "sync_type": "automated_failover" }'
Creating a SnapMirror policy of type "sync" with sync_type as "automated_failover_duplex"
POST "/api/snapmirror/policies/" '{"name": "policy_afd", "svm.name": "VS0", "type": "sync", "sync_type": "automated_failover_duplex" }'
Creating a SnapMirror policy of type "async" which does not create Snapshot copies on source and archive is triggered after 30 days
POST "/api/snapmirror/policies" '{"name": "newPolicy", "svm":{"name" : "vs1"}, "type": "async", "create_snapshot_on_source": "false", "retention": [{"label": "daily", "count": 7}], "archive": {"enabled": "true", "after_days": 30}}'
Creating a SnapMirror policy of type "async" which does not create Snapshot copies on source, and the Snapshot copies with a daily label in the object store will be locked in "compliance" mode for a default period of 30 days.
POST "/api/snapmirror/policies" '{"name": "NewPolicy", "svm":{"name" : "vs1"}, "type": "async", "create_snapshot_on_source": "false", "snapshot_lock_mode":"compliance","retention": [{"label": "daily", "count": 7}]}'
Creating a SnapMirror policy of type "async" which does not create Snapshot copies on source, and the Snapshot copies with a daily label in the object store will be locked in "enterprise" mode for a period of 2 years
POST "/api/snapmirror/policies" '{"name": "NewPolicy", "svm":{"name" : "vs1"}, "type": "async", "create_snapshot_on_source": "false", "snapshot_lock_mode":"enterprise","retention": [{"label": "daily", "count": 7, "period":"P2Y"}]}'
Creating a SnapMirror policy of type "async" with two sets of retention values and retention periods
POST "/api/snapmirror/policies" '{"name": "policy_ret", "svm": {"name": "vs1"}, "retention": [{"label": "weekly", "count": "2", "period": "P7D"}, {"label":"daily", "count":"7", "period": "PT3H"}]}'
Creating a SnapMirror policy of type "async" with retention value as "infinite"
POST "/api/snapmirror/policies" '{"name": "policy_ret", "svm": {"name": "vs1"}, "retention": [{"label": "weekly", "count": "5", "period": "infinite"}]}'
Creating a SnapMirror policy of type "async" with properties retention preserve as true and retention warn as 3.
POST "/api/snapmirror/policies" '{"name": "policy_ret", "svm": {"name": "vs1"}, "retention": [{"label": "weekly", "count": "5", "preserve": true, "warn": 3}]}'
Learn more
Parameters
Name | Type | In | Required | Description |
---|---|---|---|---|
return_records |
boolean |
query |
False |
The default is false. If set to true, the records are returned.
|
return_timeout |
integer |
query |
False |
The number of seconds to allow the call to execute before returning. When doing a POST, PATCH, or DELETE operation on a single record, the default is 0 seconds. This means that if an asynchronous operation is started, the server immediately returns HTTP code 202 (Accepted) along with a link to the job. If a non-zero value is specified for POST, PATCH, or DELETE operations, ONTAP waits that length of time to see if the job completes so it can return something other than 202.
|
Request Body
Name | Type | Description |
---|---|---|
_links |
||
archive |
Archive information for the objects in an object store SnapMirror relationship. This property is applicable only for "async" policies with "create_snapshot_on_source" set to "false". |
|
comment |
string |
Comment associated with the policy. |
copy_all_source_snapshots |
boolean |
Specifies that all the source Snapshot copies (including the one created by SnapMirror before the transfer begins) should be copied to the destination on a transfer. "Retention" properties cannot be specified along with this property. This is applicable only to async policies. Property can only be set to 'true'. |
copy_latest_source_snapshot |
boolean |
Specifies that the latest source Snapshot copy (created by SnapMirror before the transfer begins) should be copied to the destination on a transfer. "Retention" properties cannot be specified along with this property. This is applicable only to async policies. Property can only be set to 'true'. |
create_snapshot_on_source |
boolean |
Specifies whether a new Snapshot copy should be created on the source at the beginning of an update or resync operation. This is applicable only to async policies. Property can only be set to 'false'. |
identity_preservation |
string |
Specifies which configuration of the source SVM is replicated to the destination SVM. This property is applicable only for SVM data protection with "async" policy type. |
name |
string |
Name of the policy. |
network_compression_enabled |
boolean |
Specifies whether network compression is enabled for transfers. This is applicable only to the policies of type "async". |
retention |
array[snapmirror_policy_rule] |
Rules for Snapshot copy retention. |
rpo |
integer |
Specifies the duration of time for which a change to be propagated to a mirror should be delayed, in seconds. This is an intentional propagation delay between mirrors and is configurable down to zero, which means an immediate propagation. This is supported for policies of type 'continuous'. |
scope |
string |
Set to "svm" for policies owned by an SVM, otherwise set to "cluster". |
snapshot_lock_mode |
string |
Specifies the lock mode of the Snapshot copies stored in the object store. This property is applicable only to policies of type "async" with "create_snapshot_on_source" set to "false". When set to enterprise or compliance, the policy can be associated only with SnapMirror relationships where the source endpoint is a FlexVol volume and the destination endpoint is an object store. When set to compliance, no users can delete a Snapshot copy until the retention period has expired. When set to enterprise, users that have special permissions can delete a Snapshot copy before the retention period has expired. |
svm |
SVM, applies only to SVM-scoped objects. |
|
sync_common_snapshot_schedule |
Schedule used to create common Snapshot copies for synchronous relationships. |
|
sync_type |
string |
|
throttle |
integer |
Throttle in KB/s. Default to unlimited. |
transfer_schedule |
The schedule used to update asynchronous relationships. Only cron schedules are supported for SnapMirror. |
|
type |
string |
|
uuid |
string |
Unique identifier of the SnapMirror policy. |
Example request
{
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"comment": "string",
"copy_all_source_snapshots": 1,
"copy_latest_source_snapshot": 1,
"create_snapshot_on_source": "",
"identity_preservation": "string",
"name": "Asynchronous",
"retention": [
{
"count": 7,
"creation_schedule": {
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"name": "weekly",
"uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
},
"label": "hourly",
"period": "P30D",
"prefix": "string",
"preserve": 1,
"warn": 4
}
],
"rpo": 0,
"scope": "string",
"snapshot_lock_mode": "string",
"svm": {
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"name": "svm1",
"uuid": "02c9e252-41be-11e9-81d5-00a0986138f7"
},
"sync_common_snapshot_schedule": {
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"name": "weekly",
"uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
},
"sync_type": "string",
"throttle": 0,
"transfer_schedule": {
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"name": "weekly",
"uuid": "1cd8a442-86d1-11e0-ae1c-123478563412"
},
"type": "string",
"uuid": "4ea7a442-86d1-11e0-ae1c-123478563412"
}
Response
Status: 202, Accepted
Name | Type | Description |
---|---|---|
job |
Example response
{
"job": {
"_links": {
"self": {
"href": "/api/resourcelink"
}
},
"uuid": "string"
}
}
Headers
Name | Description | Type |
---|---|---|
Location |
Useful for tracking the resource location |
string |
Response
Status: 201, Created
Error
Status: Default
ONTAP Error Response codes
Error code | Description |
---|---|
6619714 |
Schedule specified is an interval schedule. SnapMirror does not support interval schedules. |
13304126 |
Enter a value for "count" in the range indicated in the error message. |
13303887 |
Failed to create SnapMirror policy. Reason: Maximum number of allowed retention rules reached |
13304083 |
The specified property is not supported because all nodes in the cluster are not capable of supporting this property. |
13304084 |
Properties specified are mutually exclusive. Provide only one property. |
13304085 |
The specified property does not support the specified value. |
13304092 |
Input value of the retention period property is invalid. For relationships with FlexVol volume or FlexGroup volume destinations, the duration must be in ISO 6801 format or can be infinite. For relationships with object store destinations, only duration values with Y, M or D and supported and must be in the specified range. |
13303932 |
Invalid input property |
13303947 |
The specified property needs another property to be specified |
13303948 |
The specified properties cannot be set to the specified values. |
13304047 |
An additional property is required with the specified policy property. |
13304051 |
The property only supports values from 0 to 999. |
13303872 |
Property specified requires an effective cluster version of ONTAP specified or later. |
13303850 |
Input parameter specified is not valid for SnapMirror policy type specified. |
13304096 |
Property archive is not supported when property snapshot_lock_mode is set to compliance or enterprise. |
| 6621045 | The property rentention.warn is not supported for a policy when the retention.preserve property is false. | 13304129 | The property retention.warn value must be less than the property retention.count value for a rule in a policy. | 13304130 | The total retention.count value for all rules in a policy cannot exceed the value indicated in the error message. | 6621060 | Failed to create specified policy. Reason: A policy with this name already exists. | | 13304118 | The specified properties cannot be both set at the same time: retention.creation_schedule and retention.period | | 6621972 | Schedule specified is not supported by SnapMirror Synchronous. The allowed time interval for the creation of common Snapshot copies can range between 30 minutes and 24 hours. | | 13304011 | Failed to create or modify the specified SnapMirror policy. Reason: The property retention.count cannot have a value greater than 1. | | 6621091 | The specified SnapMirror policy cannot have a rule with a preserve value of true. | | 6621088 | The specified SnapMirror policy must have at least one rule without a schedule. |
Name | Type | Description |
---|---|---|
error |
Example error
{
"error": {
"arguments": [
{
"code": "string",
"message": "string"
}
],
"code": "4",
"message": "entry doesn't exist",
"target": "uuid"
}
}
Definitions
See Definitions
href
Name | Type | Description |
---|---|---|
href |
string |
_links
Name | Type | Description |
---|---|---|
self |
archive
Archive information for the objects in an object store SnapMirror relationship. This property is applicable only for "async" policies with "create_snapshot_on_source" set to "false".
Name | Type | Description |
---|---|---|
after_days |
integer |
Number of days after which the objects are archived. This is only applicable when "archive.enabled" is "true". If this property is not set when "archive.enabled" is "true", the default value is "0" and therefore archiving will be triggered instantly. The value range is 0..999. If the value is set to "0", the latest snapshot copy will be archived. The value of after_days cannot be changed from "0" if any FlexVol SnapMirror relationship is associated with the policy. |
enabled |
boolean |
When set to "true", the objects are archived. When set to "false", the objects are not archived. |
creation_schedule
Schedule used to create Snapshot copies on the destination for long term retention. Only cron schedules are supported for SnapMirror.
Name | Type | Description |
---|---|---|
_links |
||
name |
string |
Job schedule name |
uuid |
string |
Job schedule UUID |
snapmirror_policy_rule
SnapMirror policy rule for retention.
Name | Type | Description |
---|---|---|
count |
integer |
Number of Snapshot copies to be kept for retention. Maximum value will differ based on type of relationship and scaling factor. For normal SnapMirror relationship without Snapshot copy scaling enabled maximum value can be 251 and with Snapshot copy scaling enabled it can be 1019. For object store SnapMirror relationships maximum value can be 4091. |
creation_schedule |
Schedule used to create Snapshot copies on the destination for long term retention. Only cron schedules are supported for SnapMirror. |
|
label |
string |
Snapshot copy label |
period |
string |
Specifies the duration for which the Snapshot copies are locked. The retention period value represents a duration and must be in the ISO-8601 duration format. Years, months, days, hours, minutes, and seconds are represented as "P |
prefix |
string |
Specifies the prefix for the Snapshot copy name to be created as per the schedule. If no value is specified, then the label is used as the prefix. |
preserve |
boolean |
Specifies the behavior when the Snapshot copy retention count is reached on the SnapMirror destination for the rule. The default value is false, which means that the oldest Snapshot copy is deleted to make room for new ones but only if the number of Snapshot copies has exceeded the retention count specified in the 'count' property. When set to true and where the Snapshot copies have reached the retention count, an incremental SnapMirror transfer will fail or if the rule has a schedule, Snapshot copies will be no longer be created on the SnapMirror destination. |
warn |
integer |
Specifies the warning threshold count for the rule. The default value is zero. When set to a value greater than zero, an event is generated after the number of Snapshot copies (for the particular rule) retained on a SnapMirror destination reaches the specified warning limit. The preserve property for the rule must be true in order to set the warn property to a value greater than zero. |
svm
SVM, applies only to SVM-scoped objects.
Name | Type | Description |
---|---|---|
_links |
||
name |
string |
The name of the SVM. This field cannot be specified in a PATCH method. |
uuid |
string |
The unique identifier of the SVM. This field cannot be specified in a PATCH method. |
sync_common_snapshot_schedule
Schedule used to create common Snapshot copies for synchronous relationships.
Name | Type | Description |
---|---|---|
_links |
||
name |
string |
Job schedule name |
uuid |
string |
Job schedule UUID |
transfer_schedule
The schedule used to update asynchronous relationships. Only cron schedules are supported for SnapMirror.
Name | Type | Description |
---|---|---|
_links |
||
name |
string |
Job schedule name |
uuid |
string |
Job schedule UUID |
snapmirror_policy
SnapMirror policy information. SnapMirror policy can either be of type "async", "sync" or "continuous". The policy type "async" can be associated with a SnapMirror relationship that has either a FlexVol volume, FlexGroup volume or SVM as the endpoint. The policy type "sync" along with "sync_type" as "sync" or "strict_sync" can be associated with a SnapMirror relationship that has a FlexVol volume as the endpoint. The policy type "sync" can have a "sync_type" of either "sync", "strict_sync", "automated_failover" or "automated_failover_duplex". If the "sync_type" is "sync", a write success is returned to the client after writing the data to the source endpoint and before writing the data to the destination endpoint. If the "sync_type" is "strict_sync", a write success is returned to the client after writing the data to both source and destination endpoints. If the "sync_type" is "automated_failover", the policy can be associated with a SnapMirror active sync relationship that has a consistency group as the endpoint and provides asymmetric active active access to the two storage copies. If the "sync_type" is "automated_failover_duplex", the policy can be associated with a SnapMirror active sync relationship that has a consistency group as the endpoint and provides symmetric active active access to the two storage copies. Use the "sync" policy with "sync_type" as "automated_failover" or "automated_failover_duplex" to establish SnapMirror active sync relationships for business continuity use cases. SnapMirror relationships with policy types as "sync" and "sync_type" as "automated_failover" or "automated_failover_duplex" can be monitored by the Mediator, if configured. If the source Consistency Group endpoint is not reachable, the Mediator might trigger a failover to the destination consistency group endpoint. A policy type of "continuous" can be associated with SnapMirror relationships that have either ONTAP S3 buckets or non-ONTAP object stores as endpoints. This type of policy is used for FabricLink owned targets.
Name | Type | Description |
---|---|---|
_links |
||
archive |
Archive information for the objects in an object store SnapMirror relationship. This property is applicable only for "async" policies with "create_snapshot_on_source" set to "false". |
|
comment |
string |
Comment associated with the policy. |
copy_all_source_snapshots |
boolean |
Specifies that all the source Snapshot copies (including the one created by SnapMirror before the transfer begins) should be copied to the destination on a transfer. "Retention" properties cannot be specified along with this property. This is applicable only to async policies. Property can only be set to 'true'. |
copy_latest_source_snapshot |
boolean |
Specifies that the latest source Snapshot copy (created by SnapMirror before the transfer begins) should be copied to the destination on a transfer. "Retention" properties cannot be specified along with this property. This is applicable only to async policies. Property can only be set to 'true'. |
create_snapshot_on_source |
boolean |
Specifies whether a new Snapshot copy should be created on the source at the beginning of an update or resync operation. This is applicable only to async policies. Property can only be set to 'false'. |
identity_preservation |
string |
Specifies which configuration of the source SVM is replicated to the destination SVM. This property is applicable only for SVM data protection with "async" policy type. |
name |
string |
Name of the policy. |
network_compression_enabled |
boolean |
Specifies whether network compression is enabled for transfers. This is applicable only to the policies of type "async". |
retention |
array[snapmirror_policy_rule] |
Rules for Snapshot copy retention. |
rpo |
integer |
Specifies the duration of time for which a change to be propagated to a mirror should be delayed, in seconds. This is an intentional propagation delay between mirrors and is configurable down to zero, which means an immediate propagation. This is supported for policies of type 'continuous'. |
scope |
string |
Set to "svm" for policies owned by an SVM, otherwise set to "cluster". |
snapshot_lock_mode |
string |
Specifies the lock mode of the Snapshot copies stored in the object store. This property is applicable only to policies of type "async" with "create_snapshot_on_source" set to "false". When set to enterprise or compliance, the policy can be associated only with SnapMirror relationships where the source endpoint is a FlexVol volume and the destination endpoint is an object store. When set to compliance, no users can delete a Snapshot copy until the retention period has expired. When set to enterprise, users that have special permissions can delete a Snapshot copy before the retention period has expired. |
svm |
SVM, applies only to SVM-scoped objects. |
|
sync_common_snapshot_schedule |
Schedule used to create common Snapshot copies for synchronous relationships. |
|
sync_type |
string |
|
throttle |
integer |
Throttle in KB/s. Default to unlimited. |
transfer_schedule |
The schedule used to update asynchronous relationships. Only cron schedules are supported for SnapMirror. |
|
type |
string |
|
uuid |
string |
Unique identifier of the SnapMirror policy. |
job_link
Name | Type | Description |
---|---|---|
_links |
||
uuid |
string |
The UUID of the asynchronous job that is triggered by a POST, PATCH, or DELETE operation. |
error_arguments
Name | Type | Description |
---|---|---|
code |
string |
Argument code |
message |
string |
Message argument |
returned_error
Name | Type | Description |
---|---|---|
arguments |
array[error_arguments] |
Message arguments |
code |
string |
Error code |
message |
string |
Error message |
target |
string |
The target parameter that caused the error. |