diff --git a/docs/resources/oms_migration_task.md b/docs/resources/oms_migration_task.md
index 7db0e83fc0c..8bd36ecba01 100644
--- a/docs/resources/oms_migration_task.md
+++ b/docs/resources/oms_migration_task.md
@@ -107,6 +107,68 @@ The following arguments are supported:
* `smn_config` - (Optional, List, ForceNew) Specifies the SMN message sending configuration.
The [object](#smn_config_object) structure is documented below. Changing this creates a new resource.
+* `object_overwrite_mode` - (Optional, String, ForceNew) Specifies whether to skip a source object or allow the source
+ object to overwrite its paired destination object. Value options are as follows:
+
+ + **NO_OVERWRITE**: indicates the system never allows override. The system always skips source objects and keeps
+ their paired destination objects.
+
+ + **SIZE_LAST_MODIFIED_COMPARISON_OVERWRITE**: indicates the system allows override based on the results of size or
+ modification time checks. If a source object is not as large as or was last modified more recently than its paired
+ destination object, the source object will overwrite the destination object. Otherwise, the source object will be
+ skipped.
+
+ + **CRC64_COMPARISON_OVERWRITE**: indicates the system allows override if the source and destination objects have
+ different CRC64 checksums. This option is only available for migration on Huawei Cloud or from Alibaba Cloud or
+ Tencent Cloud. If a source object has a CRC64 checksum different from the paired destination object, the source
+ object will overwrite the destination object. Otherwise, the source object will be skipped.
+ If any of them doesn't have a CRC64 checksum, their sizes and last modification times are checked.
+
+ + **FULL_OVERWRITE**: indicates the system always allows override. The system always allows source objects to
+ overwrite their paired destination objects.
+
+ The default value is **SIZE_LAST_MODIFIED_COMPARISON_OVERWRITE**. Changing this creates a new resource.
+
+* `consistency_check` - (Optional, String, ForceNew) Specifies the consistency check method, which is used to check
+ whether objects are consistent before and after migration. All check methods take effect for only objects that are
+ in the same encryption status in the source and destination buckets. The check method and results will be recorded
+ in the object list. Value options are as follows:
+
+ + **size_last_modified**: the system checks object consistency with object size and last modification time.
+ If a source object is as large as but was last modified earlier than its paired destination object, the system
+ considers the source object does not need to be migrated or has been already migrated successfully.
+
+ + **crc64**: this option is only available for migration on Huawei Cloud or from Alibaba Cloud or Tencent Cloud. If
+ a source object and its paired destination object have CRC64 checksums, the checksums are checked. Otherwise, their
+ sizes and last modification times are checked.
+
+ + **no_check**: this option is only available for migration of HTTP/HTTPS data. This option takes effect for source
+ objects whose sizes cannot be obtained using the content-length field in the standard HTTP protocol. These source
+ objects will overwrite their paired destination objects directly.
+ If the size of a source object can be obtained, its size and last modification time will be checked.
+
+ The default value is **size_last_modified**. Changing this creates a new resource.
+
+* `enable_requester_pays` - (Optional, Bool, ForceNew) Specifies whether to let the requester make payment.
+ After enabled, the requester pays the request and data transmission fees.
+ Default value: **false**. Changing this creates a new resource.
+
+* `enable_metadata_migration` - (Optional, Bool, ForceNew) Specifies whether metadata migration is enabled. Even if this
+ function is disabled, the ContentType metadata will still be migrated to ensure a successful migration.
+ Default value: **false**. Changing this creates a new resource.
+
+* `task_priority` - (Optional, String, ForceNew) Specifies the task priority.
+ The value can be **HIGH**, **MEDIUM**, or **LOW**. Changing this creates a new resource.
+
+* `dst_storage_policy` - (Optional, String, ForceNew) Specifies the destination storage class.
+ This parameter is required only when the destination is Huawei Cloud OBS. The default value is STANDARD.
+ + **STANDARD**: OBS Standard storage.
+ + **IA**: OBS Infrequent Access storage.
+ + **ARCHIVE**: OBS Archive storage
+ + **DEEP_ARCHIVE**: OBS Deep Archive storage
+ + **SRC_STORAGE_MAPPING**: converts the source storage class into an OBS storage class based on the predefined rules.
+ Changing this creates a new resource.
+
The `source_object` block supports:
@@ -150,6 +212,12 @@ The `source_object` block supports:
* `list_file_key` - (Optional, String, ForceNew) Specifies the object name of the list file or URL list file.
`list_file_key` is mandatory when `type` is set to **list** or **url_list**. Changing this creates a new resource.
+* `list_file_num` - (Optional, String, ForceNew) Specifies the number of stored object list files.
+ Changing this creates a new resource.
+
+* `json_auth_file` - (Optional, String, ForceNew) Specifies the file used for Google Cloud Storage authentication.
+ Changing this creates a new resource.
+
The `destination_object` block supports:
@@ -216,6 +284,10 @@ The `smn_config` block supports:
* `language` - (Optional, String, ForceNew) Specifies the SMN message language. The value can be **zh-cn** or
**en-us**. Default value: **en-us**. Changing this creates a new resource.
+* `message_template_name` - (Optional, String, ForceNew) Specifies the message template name.
+ If this parameter is specified, SMN messages are sent using the specified template.
+ Changing this creates a new resource.
+
## Attribute Reference
In addition to all arguments above, the following attributes are exported:
diff --git a/docs/resources/oms_migration_task_group.md b/docs/resources/oms_migration_task_group.md
index 6eb358f91ca..2aaad62f062 100644
--- a/docs/resources/oms_migration_task_group.md
+++ b/docs/resources/oms_migration_task_group.md
@@ -226,6 +226,19 @@ The following arguments are supported:
name during migration. The [object](#source_cdn_object) structure is documented below.
Changing this creates a new resource.
+* `enable_metadata_migration` - (Optional, Bool, ForceNew) Specifies whether metadata migration is enabled. Even if this
+ function is disabled, the ContentType metadata will still be migrated to ensure a successful migration.
+ Default value: **false**. Changing this creates a new resource.
+
+* `dst_storage_policy` - (Optional, String, ForceNew) Specifies the destination storage class.
+ This parameter is required only when the destination is Huawei Cloud OBS. The default value is STANDARD.
+ + **STANDARD**: OBS Standard storage.
+ + **IA**: OBS Infrequent Access storage.
+ + **ARCHIVE**: OBS Archive storage
+ + **DEEP_ARCHIVE**: OBS Deep Archive storage
+ + **SRC_STORAGE_MAPPING**: converts the source storage class into an OBS storage class based on the predefined rules.
+ Changing this creates a new resource.
+
The `source_object` block supports:
diff --git a/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_group_test.go b/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_group_test.go
index b1acf1af4b5..c9f9ba54752 100644
--- a/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_group_test.go
+++ b/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_group_test.go
@@ -226,6 +226,7 @@ resource "huaweicloud_oms_migration_task_group" "test" {
consistency_check = "crc64"
enable_requester_pays = true
enable_failed_object_recording = true
+ enable_metadata_migration = true
bandwidth_policy {
max_bandwidth = 1
diff --git a/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_test.go b/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_test.go
index ace19e6e152..79df586c43f 100644
--- a/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_test.go
+++ b/huaweicloud/services/acceptance/oms/resource_huaweicloud_oms_migration_task_test.go
@@ -205,6 +205,8 @@ resource "huaweicloud_oms_migration_task" "test" {
type = "object"
description = "test task"
+ enable_metadata_migration = true
+
bandwidth_policy {
max_bandwidth = 1
start = "15:00"
diff --git a/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task.go b/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task.go
index e347b422ea0..e6ee7714ac8 100644
--- a/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task.go
+++ b/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task.go
@@ -127,6 +127,16 @@ func ResourceMigrationTask() *schema.Resource {
"source_object.0.list_file_bucket",
},
},
+ "list_file_num": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
+ "json_auth_file": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
},
},
},
@@ -290,9 +300,44 @@ func ResourceMigrationTask() *schema.Resource {
Optional: true,
ForceNew: true,
},
+ "message_template_name": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
},
},
},
+ "enable_metadata_migration": {
+ Type: schema.TypeBool,
+ Optional: true,
+ ForceNew: true,
+ },
+ "dst_storage_policy": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
+ "task_priority": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
+ "consistency_check": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
+ "enable_requester_pays": {
+ Type: schema.TypeBool,
+ Optional: true,
+ ForceNew: true,
+ },
+ "object_overwrite_mode": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
"name": {
Type: schema.TypeString,
Computed: true,
@@ -319,12 +364,14 @@ func buildSrcNodeOpts(rawSrcNode []interface{}) map[string]interface{} {
"security_token": utils.ValueIgnoreEmpty(srcNode["security_token"]),
"app_id": utils.ValueIgnoreEmpty(srcNode["app_id"]),
"bucket": utils.ValueIgnoreEmpty(srcNode["bucket"]),
+ "json_auth_file": utils.ValueIgnoreEmpty(srcNode["json_auth_file"]),
}
if srcNode["list_file_bucket"].(string) != "" {
srcNodeOpts["list_file"] = map[string]interface{}{
"obs_bucket": srcNode["list_file_bucket"],
"list_file_key": srcNode["list_file_key"],
+ "list_file_num": utils.ValueIgnoreEmpty(srcNode["list_file_num"]),
}
}
@@ -464,6 +511,12 @@ func buildcreateTaskBodyParams(d *schema.ResourceData, cfg *config.Config) (map[
"enable_restore": d.Get("enable_restore"),
"enable_failed_object_recording": d.Get("enable_failed_object_recording"),
"source_cdn": buildSourceCdnOpts(d.Get("source_cdn").([]interface{})),
+ "enable_metadata_migration": d.Get("enable_metadata_migration").(bool),
+ "enable_requester_pays": d.Get("enable_requester_pays").(bool),
+ "task_priority": utils.ValueIgnoreEmpty(d.Get("task_priority").(string)),
+ "consistency_check": utils.ValueIgnoreEmpty(d.Get("consistency_check").(string)),
+ "object_overwrite_mode": utils.ValueIgnoreEmpty(d.Get("object_overwrite_mode").(string)),
+ "dst_storage_policy": utils.ValueIgnoreEmpty(d.Get("dst_storage_policy").(string)),
}
dstNodeOpts, err := buildDstNodeOpts(cfg, d.Get("destination_object").([]interface{}))
diff --git a/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task_group.go b/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task_group.go
index c9484f744bc..e59f59cc12f 100644
--- a/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task_group.go
+++ b/huaweicloud/services/oms/resource_huaweicloud_oms_migration_task_group.go
@@ -268,6 +268,16 @@ func ResourceMigrationTaskGroup() *schema.Resource {
},
},
},
+ "enable_metadata_migration": {
+ Type: schema.TypeBool,
+ Optional: true,
+ ForceNew: true,
+ },
+ "dst_storage_policy": {
+ Type: schema.TypeString,
+ Optional: true,
+ ForceNew: true,
+ },
"status": {
Type: schema.TypeInt,
Computed: true,
@@ -412,6 +422,8 @@ func buildTaskGroupCreateOpts(conf *config.Config, d *schema.ResourceData) (map[
"enable_requester_pays": utils.ValueIgnoreEmpty(d.Get("enable_requester_pays")),
"object_overwrite_mode": utils.ValueIgnoreEmpty(d.Get("object_overwrite_mode")),
"consistency_check": utils.ValueIgnoreEmpty(d.Get("consistency_check")),
+ "enable_metadata_migration": d.Get("enable_metadata_migration").(bool),
+ "dst_storage_policy": utils.ValueIgnoreEmpty(d.Get("dst_storage_policy").(string)),
}
return createOpts, nil