Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Datasync: Add missing option object_tags to aws_datasync_task #27811

Merged
merged 10 commits into from
Jun 16, 2023
7 changes: 7 additions & 0 deletions .changelog/27811.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
```release-note:enhancement
resource/aws_datasync_task: Add `object_tags` attribute to `options` configuration block
```

```release-note:bug
resource/aws_datasync_location_object_storage: Don't ignore `server_certificate` argument
```
2 changes: 1 addition & 1 deletion internal/service/datasync/location_efs.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ func resourceLocationEFSRead(ctx context.Context, d *schema.ResourceData, meta i
return sdkdiag.AppendErrorf(diags, "reading DataSync Location EFS (%s): %s", d.Id(), err)
}

subdirectory, err := SubdirectoryFromLocationURI(aws.StringValue(output.LocationUri))
subdirectory, err := subdirectoryFromLocationURI(aws.StringValue(output.LocationUri))

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading DataSync Location EFS (%s): %s", d.Id(), err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ func resourceLocationFSxLustreFileSystemRead(ctx context.Context, d *schema.Reso
return sdkdiag.AppendErrorf(diags, "reading DataSync Location Fsx Lustre (%s): %s", d.Id(), err)
}

subdirectory, err := SubdirectoryFromLocationURI(aws.StringValue(output.LocationUri))
subdirectory, err := subdirectoryFromLocationURI(aws.StringValue(output.LocationUri))

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading DataSync Location Fsx Lustre (%s): %s", d.Id(), err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ func resourceLocationFSxOpenZFSFileSystemRead(ctx context.Context, d *schema.Res
return sdkdiag.AppendErrorf(diags, "reading DataSync Location Fsx OpenZfs (%s): %s", d.Id(), err)
}

subdirectory, err := SubdirectoryFromLocationURI(aws.StringValue(output.LocationUri))
subdirectory, err := subdirectoryFromLocationURI(aws.StringValue(output.LocationUri))

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading DataSync Location Fsx OpenZfs (%s): %s", d.Id(), err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ func resourceLocationFSxWindowsFileSystemRead(ctx context.Context, d *schema.Res
return sdkdiag.AppendErrorf(diags, "reading DataSync Location Fsx Windows (%s): %s", d.Id(), err)
}

subdirectory, err := SubdirectoryFromLocationURI(aws.StringValue(output.LocationUri))
subdirectory, err := subdirectoryFromLocationURI(aws.StringValue(output.LocationUri))

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading DataSync Location Fsx Windows (%s): %s", d.Id(), err)
Expand Down
2 changes: 1 addition & 1 deletion internal/service/datasync/location_hdfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ func resourceLocationHDFSRead(ctx context.Context, d *schema.ResourceData, meta
return sdkdiag.AppendErrorf(diags, "reading DataSync Location HDFS (%s): %s", d.Id(), err)
}

subdirectory, err := SubdirectoryFromLocationURI(aws.StringValue(output.LocationUri))
subdirectory, err := subdirectoryFromLocationURI(aws.StringValue(output.LocationUri))

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading DataSync Location HDFS (%s): %s", d.Id(), err)
Expand Down
2 changes: 1 addition & 1 deletion internal/service/datasync/location_nfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ func resourceLocationNFSRead(ctx context.Context, d *schema.ResourceData, meta i
return sdkdiag.AppendErrorf(diags, "reading DataSync Location NFS (%s): %s", d.Id(), err)
}

subdirectory, err := SubdirectoryFromLocationURI(aws.StringValue(output.LocationUri))
subdirectory, err := subdirectoryFromLocationURI(aws.StringValue(output.LocationUri))

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading DataSync Location NFS (%s): %s", d.Id(), err)
Expand Down
63 changes: 27 additions & 36 deletions internal/service/datasync/location_object_storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func resourceLocationObjectStorageCreate(ctx context.Context, d *schema.Resource
input.SecretKey = aws.String(v.(string))
}

if v, ok := d.GetOk("server_certficate"); ok {
if v, ok := d.GetOk("server_certificate"); ok {
input.ServerCertificate = []byte(v.(string))
}

Expand Down Expand Up @@ -163,31 +163,22 @@ func resourceLocationObjectStorageRead(ctx context.Context, d *schema.ResourceDa
return sdkdiag.AppendErrorf(diags, "reading DataSync Location Object Storage (%s): %s", d.Id(), err)
}

subdirectory, err := SubdirectoryFromLocationURI(aws.StringValue(output.LocationUri))
uri := aws.StringValue(output.LocationUri)
hostname, bucketName, subdirectory, err := decodeObjectStorageURI(uri)

if err != nil {
return sdkdiag.AppendErrorf(diags, "parsing DataSync Location Object Storage (%s) location URI: %s", d.Id(), err)
return sdkdiag.AppendFromErr(diags, err)
}

d.Set("agent_arns", flex.FlattenStringSet(output.AgentArns))
d.Set("arn", output.LocationArn)
d.Set("server_protocol", output.ServerProtocol)
d.Set("subdirectory", subdirectory)
d.Set("access_key", output.AccessKey)
d.Set("server_port", output.ServerPort)
d.Set("agent_arns", aws.StringValueSlice(output.AgentArns))
d.Set("arn", output.LocationArn)
d.Set("bucket_name", bucketName)
d.Set("server_certificate", string(output.ServerCertificate))

uri := aws.StringValue(output.LocationUri)

hostname, bucketName, err := decodeObjectStorageURI(uri)

if err != nil {
return sdkdiag.AppendErrorf(diags, "parsing DataSync Location Object Storage (%s) object-storage URI: %s", d.Id(), err)
}

d.Set("server_hostname", hostname)
d.Set("bucket_name", bucketName)

d.Set("server_port", output.ServerPort)
d.Set("server_protocol", output.ServerProtocol)
d.Set("subdirectory", subdirectory)
d.Set("uri", uri)

return diags
Expand All @@ -197,19 +188,11 @@ func resourceLocationObjectStorageUpdate(ctx context.Context, d *schema.Resource
var diags diag.Diagnostics
conn := meta.(*conns.AWSClient).DataSyncConn(ctx)

if d.HasChangesExcept("tags_all", "tags") {
if d.HasChangesExcept("tags", "tags_all") {
input := &datasync.UpdateLocationObjectStorageInput{
LocationArn: aws.String(d.Id()),
}

if d.HasChange("server_protocol") {
input.ServerProtocol = aws.String(d.Get("server_protocol").(string))
}

if d.HasChange("server_port") {
input.ServerPort = aws.Int64(int64(d.Get("server_port").(int)))
}

if d.HasChange("access_key") {
input.AccessKey = aws.String(d.Get("access_key").(string))
}
Expand All @@ -218,12 +201,20 @@ func resourceLocationObjectStorageUpdate(ctx context.Context, d *schema.Resource
input.SecretKey = aws.String(d.Get("secret_key").(string))
}

if d.HasChange("subdirectory") {
input.Subdirectory = aws.String(d.Get("subdirectory").(string))
if d.HasChange("server_certificate") {
input.ServerCertificate = []byte(d.Get("server_certificate").(string))
}

if d.HasChange("server_certficate") {
input.ServerCertificate = []byte(d.Get("server_certficate").(string))
if d.HasChange("server_port") {
input.ServerPort = aws.Int64(int64(d.Get("server_port").(int)))
}

if d.HasChange("server_protocol") {
input.ServerProtocol = aws.String(d.Get("server_protocol").(string))
}

if d.HasChange("subdirectory") {
input.Subdirectory = aws.String(d.Get("subdirectory").(string))
}

_, err := conn.UpdateLocationObjectStorageWithContext(ctx, input)
Expand Down Expand Up @@ -258,17 +249,17 @@ func resourceLocationObjectStorageDelete(ctx context.Context, d *schema.Resource
return diags
}

func decodeObjectStorageURI(uri string) (string, string, error) {
func decodeObjectStorageURI(uri string) (string, string, string, error) {
prefix := "object-storage://"
if !strings.HasPrefix(uri, prefix) {
return "", "", fmt.Errorf("incorrect uri format needs to start with %s", prefix)
return "", "", "", fmt.Errorf("incorrect uri format needs to start with %s", prefix)
}
trimmedUri := strings.TrimPrefix(uri, prefix)
uriParts := strings.Split(trimmedUri, "/")

if len(uri) < 2 {
return "", "", fmt.Errorf("incorrect uri format needs to start with %sSERVER-NAME/BUCKET-NAME/SUBDIRECTORY", prefix)
return "", "", "", fmt.Errorf("incorrect uri format needs to start with %sSERVER-NAME/BUCKET-NAME/SUBDIRECTORY", prefix)
}

return uriParts[0], uriParts[1], nil
return uriParts[0], uriParts[1], "/" + strings.Join(uriParts[2:], "/"), nil
}
Loading