Skip to content

Commit

Permalink
[glance v2]: add support for xz image decompression
Browse files Browse the repository at this point in the history
  • Loading branch information
kayrus committed Jun 12, 2023
1 parent b5277d5 commit e5d534f
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ require (
github.com/hashicorp/terraform-plugin-sdk/v2 v2.25.0
github.com/mitchellh/go-homedir v1.1.0
github.com/stretchr/testify v1.7.2
github.com/ulikunitz/xz v0.5.11
gopkg.in/yaml.v2 v2.4.0
)

Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gophercloud/gophercloud v1.1.1/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gophercloud/gophercloud v1.2.1-0.20230309142102-36ac4a411ba7 h1:wDr3jLA3vAtpH5DvqdTHtn34Uo15qA7F6EdEIJtm7+s=
github.com/gophercloud/gophercloud v1.2.1-0.20230309142102-36ac4a411ba7/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gophercloud/gophercloud v1.3.1-0.20230517135124-33412becb1d0 h1:NSIQAuPoktKrxJryRQRmiNbYD2udN3w267oJalbW0zw=
github.com/gophercloud/gophercloud v1.3.1-0.20230517135124-33412becb1d0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gophercloud/utils v0.0.0-20230324070755-05e9e7f5ea4d h1:AfRlf5NnsYsHIW5nNxhYp+99Bmj/fLeOYwD5Z4CMlzw=
Expand Down Expand Up @@ -213,6 +211,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
Expand Down
9 changes: 8 additions & 1 deletion openstack/images_image_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/openstack/imageservice/v2/images"
"github.com/gophercloud/gophercloud/openstack/imageservice/v2/members"
"github.com/ulikunitz/xz"
)

func resourceImagesImageV2MemberStatusFromString(v string) images.ImageMemberStatus {
Expand Down Expand Up @@ -119,7 +120,7 @@ func resourceImagesImageV2File(client *gophercloud.ServiceClient, d *schema.Reso

resp, err := client.Do(request)
if err != nil {
return "", fmt.Errorf("Error downloading image from %q", furl)
return "", fmt.Errorf("Error downloading image from %q: %s", furl, err)
}

// check for credential error among other errors
Expand All @@ -144,6 +145,12 @@ func resourceImagesImageV2File(client *gophercloud.ServiceClient, d *schema.Reso
case "bzip2", "application/bzip2", "application/x-bzip2":
bz2Reader := bzip2.NewReader(resp.Body)
reader = io.NopCloser(bz2Reader)
case "xz", "application/xz", "application/x-xz":
xzReader, err := xz.NewReader(resp.Body)
if err != nil {
return "", fmt.Errorf("Error decompressing xz image: %s", err)
}
reader = io.NopCloser(xzReader)
default:
return "", fmt.Errorf("Error decompressing image, format %s is not supported", resp.Header.Get("Content-Type"))
}
Expand Down

0 comments on commit e5d534f

Please sign in to comment.