Skip to content

Commit fb7e3de

Browse files
Merge pull request #25 from gabriel-samfira/compress-userdata
Comporess userdata
2 parents 4358083 + 6d5484f commit fb7e3de

File tree

63 files changed

+7611
-4523
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+7611
-4523
lines changed

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/aws/aws-sdk-go-v2 v1.36.5
1010
github.com/aws/aws-sdk-go-v2/config v1.29.17
1111
github.com/aws/aws-sdk-go-v2/credentials v1.17.70
12-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.225.2
12+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.231.0
1313
github.com/aws/smithy-go v1.22.4
1414
github.com/cloudbase/garm-provider-common v0.1.5
1515
github.com/invopop/jsonschema v0.13.0
@@ -43,8 +43,8 @@ require (
4343
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
4444
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
4545
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
46-
golang.org/x/crypto v0.39.0 // indirect
47-
golang.org/x/sys v0.33.0 // indirect
46+
golang.org/x/crypto v0.40.0 // indirect
47+
golang.org/x/sys v0.34.0 // indirect
4848
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
4949
gopkg.in/yaml.v3 v3.0.1 // indirect
5050
)

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR
1414
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8=
1515
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
1616
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
17-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.225.2 h1:IfMb3Ar8xEaWjgH/zeVHYD8izwJdQgRP5mKCTDt4GNk=
18-
github.com/aws/aws-sdk-go-v2/service/ec2 v1.225.2/go.mod h1:35jGWx7ECvCwTsApqicFYzZ7JFEnBc6oHUuOQ3xIS54=
17+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.231.0 h1:uhIwvt6crp2kQenKojfDShGw39WEIrtPRfYZ3FAFlJk=
18+
github.com/aws/aws-sdk-go-v2/service/ec2 v1.231.0/go.mod h1:35jGWx7ECvCwTsApqicFYzZ7JFEnBc6oHUuOQ3xIS54=
1919
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4 h1:CXV68E2dNqhuynZJPB80bhPQwAKqBWVer887figW6Jc=
2020
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.4/go.mod h1:/xFi9KtvBXP97ppCz1TAEvU1Uf66qvid89rbem3wCzQ=
2121
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.17 h1:t0E6FzREdtCsiLIoLCWsYliNsRBgyGD/MCK571qk4MI=
@@ -72,11 +72,11 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo
7272
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
7373
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
7474
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
75-
golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
76-
golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
75+
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
76+
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
7777
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
78-
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
79-
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
78+
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
79+
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
8080
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
8181
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
8282
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=

internal/spec/spec.go

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package spec
1717

1818
import (
19+
"archive/zip"
20+
"bytes"
1921
"encoding/base64"
2022
"encoding/json"
2123
"fmt"
@@ -250,22 +252,39 @@ func (r *RunnerSpec) ComposeUserData() (string, error) {
250252
bootstrapParams.UserDataOptions.DisableUpdatesOnBoot = r.DisableUpdates
251253
bootstrapParams.UserDataOptions.ExtraPackages = r.ExtraPackages
252254
bootstrapParams.UserDataOptions.EnableBootDebug = r.EnableBootDebug
255+
256+
var udata []byte
253257
switch bootstrapParams.OSType {
254258
case params.Linux:
255-
udata, err := cloudconfig.GetCloudConfig(bootstrapParams, r.Tools, bootstrapParams.Name)
259+
cloudCfg, err := cloudconfig.GetCloudConfig(bootstrapParams, r.Tools, bootstrapParams.Name)
256260
if err != nil {
257261
return "", fmt.Errorf("failed to generate userdata: %w", err)
258262
}
259-
asBase64 := base64.StdEncoding.EncodeToString([]byte(udata))
260-
return asBase64, nil
263+
udata = []byte(cloudCfg)
261264
case params.Windows:
262-
udata, err := cloudconfig.GetCloudConfig(bootstrapParams, r.Tools, bootstrapParams.Name)
265+
cloudCfg, err := cloudconfig.GetCloudConfig(bootstrapParams, r.Tools, bootstrapParams.Name)
263266
if err != nil {
264267
return "", fmt.Errorf("failed to generate userdata: %w", err)
265268
}
266-
wrapped := fmt.Sprintf("<powershell>%s</powershell>", udata)
267-
asBase64 := base64.StdEncoding.EncodeToString([]byte(wrapped))
268-
return asBase64, nil
269+
wrapped := fmt.Sprintf("<powershell>%s</powershell>", cloudCfg)
270+
udata = []byte(wrapped)
271+
default:
272+
return "", fmt.Errorf("unsupported OS type for cloud config: %s", bootstrapParams.OSType)
273+
}
274+
275+
var b bytes.Buffer
276+
zipped := zip.NewWriter(&b)
277+
fd, err := zipped.Create("udata")
278+
if err != nil {
279+
return "", err
269280
}
270-
return "", fmt.Errorf("unsupported OS type for cloud config: %s", bootstrapParams.OSType)
281+
if _, err := fd.Write(udata); err != nil {
282+
return "", fmt.Errorf("failed to compress cloud config: %w", err)
283+
}
284+
if err := zipped.Close(); err != nil {
285+
return "", err
286+
}
287+
288+
asBase64 := base64.StdEncoding.EncodeToString(b.Bytes())
289+
return asBase64, nil
271290
}

vendor/github.com/aws/aws-sdk-go-v2/service/ec2/CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/service/ec2/api_op_AssociateSecurityGroupVpc.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/service/ec2/api_op_AttachVolume.go

Lines changed: 10 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/service/ec2/api_op_CreateCustomerGateway.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/service/ec2/api_op_CreateImage.go

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/service/ec2/api_op_CreateInstanceConnectEndpoint.go

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/aws/aws-sdk-go-v2/service/ec2/api_op_CreateRoute.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)