From 03fef2d03d569c5b9f677bc48089a608a9ec604c Mon Sep 17 00:00:00 2001 From: Mahesh N Date: Wed, 20 Nov 2024 14:27:26 +0530 Subject: [PATCH 1/7] Update hpegl-provider-lib v0.0.22 --- .github/workflows/ci.yml | 4 +- .github/workflows/reusable-dev-acc.yml | 4 +- go.mod | 29 +++++++------ go.sum | 58 +++++++++++++------------- 4 files changed, 48 insertions(+), 47 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 048aef14..c2bb0266 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - go: [ '1.21' ] + go: [ '1.22' ] steps: - name: Checkout workspace uses: actions/checkout@v4 @@ -15,7 +15,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' - name: Install necessary tools run: make tools diff --git a/.github/workflows/reusable-dev-acc.yml b/.github/workflows/reusable-dev-acc.yml index 96d45391..3618ddce 100644 --- a/.github/workflows/reusable-dev-acc.yml +++ b/.github/workflows/reusable-dev-acc.yml @@ -57,7 +57,7 @@ jobs: runs-on: ubuntu-20.04 strategy: matrix: - go: [ '1.21' ] + go: [ '1.22' ] name: Acceptance Test Job steps: - name: Checkout workspace @@ -69,7 +69,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '1.22' - name: Install dependencies run: | sudo apt-get install -y wget jq diff --git a/go.mod b/go.mod index 6432bad5..f72a68a4 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/HewlettPackard/hpegl-vmaas-terraform-resources -go 1.21 +go 1.22.1 + +toolchain go1.22.9 require ( github.com/HewlettPackard/hpegl-vmaas-cmp-go-sdk v0.1.17 @@ -8,8 +10,8 @@ require ( github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 github.com/hashicorp/terraform-plugin-docs v0.9.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 - github.com/hewlettpackard/hpegl-provider-lib v0.0.17 - github.com/spf13/viper v1.18.2 + github.com/hewlettpackard/hpegl-provider-lib v0.0.22 + github.com/spf13/viper v1.19.0 github.com/tidwall/gjson v1.14.1 github.com/tshihad/tftags v0.0.10 ) @@ -30,7 +32,7 @@ require ( github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/uuid v1.4.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-checkpoint v0.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -38,7 +40,7 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-plugin v1.6.0 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/hc-install v0.6.3 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl/v2 v2.19.1 // indirect @@ -81,16 +83,17 @@ require ( github.com/zclconf/go-cty v1.14.2 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/crypto v0.24.0 // indirect + golang.org/x/crypto v0.26.0 // indirect golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect - golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect + golang.org/x/mod v0.20.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect + golang.org/x/tools v0.24.0 // indirect google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/grpc v1.61.1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect + google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 2f721cae..2195d96e 100644 --- a/go.sum +++ b/go.sum @@ -74,8 +74,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 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/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -96,8 +96,8 @@ github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/hc-install v0.6.3 h1:yE/r1yJvWbtrJ0STwScgEnCanb0U9v7zp0Gbkmcoxqs= github.com/hashicorp/hc-install v0.6.3/go.mod h1:KamGdbodYzlufbWh4r9NRo8y6GLHWZP2GBtdnms1Ln0= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -124,8 +124,8 @@ github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc= github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hewlettpackard/hpegl-provider-lib v0.0.17 h1:6sh4XjWK2hg2q5V78W4AypV0IBbDy0CpGoMfzE1CK1c= -github.com/hewlettpackard/hpegl-provider-lib v0.0.17/go.mod h1:Bw2DhefBjqXQI6s5vBBGiWUkFz7fx4KkbGfwmo9wv3U= +github.com/hewlettpackard/hpegl-provider-lib v0.0.22 h1:keW0HjvsMSvIyorqAKc1/XRHkIZqdGn8fqekeuVUSCc= +github.com/hewlettpackard/hpegl-provider-lib v0.0.22/go.mod h1:/gEz8+22QLJfmsdSpH8VPVgn4SpGxxGp+X1i17GUgFY= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= @@ -175,8 +175,6 @@ github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= @@ -213,8 +211,8 @@ github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -265,15 +263,15 @@ golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= @@ -282,15 +280,15 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -310,8 +308,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -327,15 +325,15 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -343,18 +341,18 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= -google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY= -google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= From 4cf81d3bb6685187ea65a0bf829298cb59077e5f Mon Sep 17 00:00:00 2001 From: Eamonn O'Toole Date: Fri, 22 Nov 2024 10:22:24 +0000 Subject: [PATCH 2/7] Reuse token retrieve function in BrokerClient The MetaFunction used to retrieve IAM API Client tokens in the BrokerClient created when initialising the Client creates a new Token Retrieve Function and a Token Handler each time that it is called. This means that an IAM call is made on every call and there is no IAM Token reuse. We fix this so that we create just the one handler and token retrive function and reuse in the MetaFunction. --- pkg/utils/meta.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/utils/meta.go b/pkg/utils/meta.go index d9366ce2..f61d11b5 100644 --- a/pkg/utils/meta.go +++ b/pkg/utils/meta.go @@ -35,15 +35,15 @@ func SetMeta(apiClient *client.APIClient, r *schema.ResourceData) { // SetMetaFnAndVersion sets the token-generation function and version for the Broker API client func SetMetaFnAndVersion(apiClient *client.APIClient, r *schema.ResourceData, version int) { + // Initialise token handler + h, err := serviceclient.NewHandler(r) + if err != nil { + log.Printf("[WARN] Unable to create token handler: %s", err) + } + // Get token retrieve func + trf := retrieve.NewTokenRetrieveFunc(h) + // We'll use trf from above in this closure apiClient.SetMetaFnAndVersion(nil, version, func(ctx *context.Context, meta interface{}) { - // Initialise token handler - h, err := serviceclient.NewHandler(r) - if err != nil { - log.Printf("[WARN] Unable to fetch token for SCM client: %s", err) - } - - // Get token retrieve func and put in c - trf := retrieve.NewTokenRetrieveFunc(h) token, err := trf(*ctx) if err != nil { log.Printf("[WARN] Unable to fetch token for SCM client: %s", err) From dfbcea5a0a0ed2efce254dae5eec0d3eaab2c4ce Mon Sep 17 00:00:00 2001 From: Mahesh N Date: Fri, 22 Nov 2024 18:58:11 +0530 Subject: [PATCH 3/7] set httpclient in cfg --- internal/acceptance_test/helper.go | 6 ++++++ pkg/client/client.go | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/internal/acceptance_test/helper.go b/internal/acceptance_test/helper.go index 3026eb4c..7e42d66c 100644 --- a/internal/acceptance_test/helper.go +++ b/internal/acceptance_test/helper.go @@ -5,6 +5,7 @@ package acceptancetest import ( "context" "log" + "net/http" "os" "strconv" "time" @@ -56,10 +57,15 @@ func getAPIClient() (*api_client.APIClient, api_client.Configuration) { if err != nil { log.Printf("[ERROR] Error getting cmp details: %s", err) } + tr := &http.Transport{ + MaxIdleConns: 20, + MaxIdleConnsPerHost: 20, + } cfg := api_client.Configuration{ Host: cmpDetails.URL, DefaultHeader: map[string]string{}, DefaultQueryParams: map[string]string{}, + HTTPClient: &http.Client{Transport: tr}, } cmpAPIClient := api_client.NewAPIClient(&cfg) cmpAPIClient.CMPToken = cmpDetails.AccessToken diff --git a/pkg/client/client.go b/pkg/client/client.go index 5ebef358..2f1fc841 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -4,6 +4,7 @@ package client import ( "fmt" + "net/http" "os" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -72,11 +73,15 @@ func (i InitialiseClient) NewClient(r *schema.ResourceData) (interface{}, error) brokerHeaders := getHeaders() tenantID := r.Get(constants.TenantID).(string) brokerHeaders["X-Tenant-ID"] = tenantID - // We don't add default query params to broker client + tr := &http.Transport{ + MaxIdleConns: 20, + MaxIdleConnsPerHost: 20, + } brokerCfgForAPIClient := api_client.Configuration{ Host: vmaasProviderSettings[constants.BROKERRURL].(string), DefaultHeader: brokerHeaders, DefaultQueryParams: queryParam, + HTTPClient: &http.Client{Transport: tr}, } brokerApiClient := api_client.NewAPIClient(&brokerCfgForAPIClient) utils.SetMetaFnAndVersion(brokerApiClient, r, 0) @@ -85,6 +90,7 @@ func (i InitialiseClient) NewClient(r *schema.ResourceData) (interface{}, error) Host: "", DefaultHeader: map[string]string{}, DefaultQueryParams: map[string]string{}, + HTTPClient: &http.Client{Transport: tr}, } apiClient := api_client.NewAPIClient(&cfg) err = utils.SetCMPVars(apiClient, brokerApiClient, &cfg) From f5e710dfd6f7a8c6d3efd1c1e074393f62689751 Mon Sep 17 00:00:00 2001 From: Mahesh N Date: Fri, 22 Nov 2024 19:21:02 +0530 Subject: [PATCH 4/7] add disable keep alive --- internal/acceptance_test/helper.go | 1 + pkg/client/client.go | 1 + 2 files changed, 2 insertions(+) diff --git a/internal/acceptance_test/helper.go b/internal/acceptance_test/helper.go index 7e42d66c..903cc17b 100644 --- a/internal/acceptance_test/helper.go +++ b/internal/acceptance_test/helper.go @@ -60,6 +60,7 @@ func getAPIClient() (*api_client.APIClient, api_client.Configuration) { tr := &http.Transport{ MaxIdleConns: 20, MaxIdleConnsPerHost: 20, + DisableKeepAlives: true, } cfg := api_client.Configuration{ Host: cmpDetails.URL, diff --git a/pkg/client/client.go b/pkg/client/client.go index 2f1fc841..e8716760 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -76,6 +76,7 @@ func (i InitialiseClient) NewClient(r *schema.ResourceData) (interface{}, error) tr := &http.Transport{ MaxIdleConns: 20, MaxIdleConnsPerHost: 20, + DisableKeepAlives: true, } brokerCfgForAPIClient := api_client.Configuration{ Host: vmaasProviderSettings[constants.BROKERRURL].(string), From 79858d759e642be1a0762e7d1a74829088b53e65 Mon Sep 17 00:00:00 2001 From: Mahesh N Date: Fri, 22 Nov 2024 20:14:47 +0530 Subject: [PATCH 5/7] add timeout and panic --- internal/acceptance_test/helper.go | 5 +++-- pkg/client/client.go | 5 +++-- pkg/utils/meta.go | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/acceptance_test/helper.go b/internal/acceptance_test/helper.go index 903cc17b..69f42d33 100644 --- a/internal/acceptance_test/helper.go +++ b/internal/acceptance_test/helper.go @@ -4,6 +4,7 @@ package acceptancetest import ( "context" + "fmt" "log" "net/http" "os" @@ -66,7 +67,7 @@ func getAPIClient() (*api_client.APIClient, api_client.Configuration) { Host: cmpDetails.URL, DefaultHeader: map[string]string{}, DefaultQueryParams: map[string]string{}, - HTTPClient: &http.Client{Transport: tr}, + HTTPClient: &http.Client{Transport: tr, Timeout: 2 * time.Minute}, } cmpAPIClient := api_client.NewAPIClient(&cfg) cmpAPIClient.CMPToken = cmpDetails.AccessToken @@ -146,7 +147,7 @@ func apiClientSetMeta(apiClient *api_client.APIClient, iamVersion string) error trf := retrieve.NewTokenRetrieveFunc(h) token, err := trf(*ctx) if err != nil { - log.Printf("[WARN] Unable to fetch token for SCM client: %s", err) + panic(fmt.Sprintf("[WARN] Unable to fetch token for SCM client: %s", err)) } else { *ctx = context.WithValue(*ctx, api_client.ContextAccessToken, token) } diff --git a/pkg/client/client.go b/pkg/client/client.go index e8716760..b2653610 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -6,6 +6,7 @@ import ( "fmt" "net/http" "os" + "time" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -82,7 +83,7 @@ func (i InitialiseClient) NewClient(r *schema.ResourceData) (interface{}, error) Host: vmaasProviderSettings[constants.BROKERRURL].(string), DefaultHeader: brokerHeaders, DefaultQueryParams: queryParam, - HTTPClient: &http.Client{Transport: tr}, + HTTPClient: &http.Client{Transport: tr, Timeout: 2 * time.Minute}, } brokerApiClient := api_client.NewAPIClient(&brokerCfgForAPIClient) utils.SetMetaFnAndVersion(brokerApiClient, r, 0) @@ -91,7 +92,7 @@ func (i InitialiseClient) NewClient(r *schema.ResourceData) (interface{}, error) Host: "", DefaultHeader: map[string]string{}, DefaultQueryParams: map[string]string{}, - HTTPClient: &http.Client{Transport: tr}, + HTTPClient: &http.Client{Transport: tr, Timeout: 2 * time.Minute}, } apiClient := api_client.NewAPIClient(&cfg) err = utils.SetCMPVars(apiClient, brokerApiClient, &cfg) diff --git a/pkg/utils/meta.go b/pkg/utils/meta.go index f61d11b5..9845b377 100644 --- a/pkg/utils/meta.go +++ b/pkg/utils/meta.go @@ -2,6 +2,7 @@ package utils import ( "context" + "fmt" "log" "time" @@ -23,7 +24,7 @@ func SetMeta(apiClient *client.APIClient, r *schema.ResourceData) { trf := retrieve.NewTokenRetrieveFunc(h) token, err := trf(*ctx) if err != nil { - log.Printf("[WARN] Unable to fetch token for SCM client: %s", err) + panic(fmt.Sprintf("[WARN] Unable to fetch token for SCM client: %s", err)) } else { *ctx = context.WithValue(*ctx, client.ContextAccessToken, token) } From 5d4cef0ddb7280320f55991fdb6e75005c5860ce Mon Sep 17 00:00:00 2001 From: Mahesh N Date: Mon, 25 Nov 2024 15:14:07 +0530 Subject: [PATCH 6/7] add retry client --- internal/acceptance_test/helper.go | 13 +++-- pkg/client/client.go | 16 +++--- pkg/utils/http_retry.go | 87 ++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 16 deletions(-) create mode 100644 pkg/utils/http_retry.go diff --git a/internal/acceptance_test/helper.go b/internal/acceptance_test/helper.go index 69f42d33..c3137c91 100644 --- a/internal/acceptance_test/helper.go +++ b/internal/acceptance_test/helper.go @@ -6,7 +6,6 @@ import ( "context" "fmt" "log" - "net/http" "os" "strconv" "time" @@ -58,16 +57,16 @@ func getAPIClient() (*api_client.APIClient, api_client.Configuration) { if err != nil { log.Printf("[ERROR] Error getting cmp details: %s", err) } - tr := &http.Transport{ - MaxIdleConns: 20, - MaxIdleConnsPerHost: 20, - DisableKeepAlives: true, - } + // tr := &http.Transport{ + // MaxIdleConns: 20, + // MaxIdleConnsPerHost: 20, + // DisableKeepAlives: true, + // } cfg := api_client.Configuration{ Host: cmpDetails.URL, DefaultHeader: map[string]string{}, DefaultQueryParams: map[string]string{}, - HTTPClient: &http.Client{Transport: tr, Timeout: 2 * time.Minute}, + HTTPClient: utils.NewRetryableClient(), } cmpAPIClient := api_client.NewAPIClient(&cfg) cmpAPIClient.CMPToken = cmpDetails.AccessToken diff --git a/pkg/client/client.go b/pkg/client/client.go index b2653610..ce21f7b6 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -4,9 +4,7 @@ package client import ( "fmt" - "net/http" "os" - "time" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -74,16 +72,16 @@ func (i InitialiseClient) NewClient(r *schema.ResourceData) (interface{}, error) brokerHeaders := getHeaders() tenantID := r.Get(constants.TenantID).(string) brokerHeaders["X-Tenant-ID"] = tenantID - tr := &http.Transport{ - MaxIdleConns: 20, - MaxIdleConnsPerHost: 20, - DisableKeepAlives: true, - } + // tr := &http.Transport{ + // MaxIdleConns: 20, + // MaxIdleConnsPerHost: 20, + // DisableKeepAlives: true, + // } brokerCfgForAPIClient := api_client.Configuration{ Host: vmaasProviderSettings[constants.BROKERRURL].(string), DefaultHeader: brokerHeaders, DefaultQueryParams: queryParam, - HTTPClient: &http.Client{Transport: tr, Timeout: 2 * time.Minute}, + HTTPClient: utils.NewRetryableClient(), } brokerApiClient := api_client.NewAPIClient(&brokerCfgForAPIClient) utils.SetMetaFnAndVersion(brokerApiClient, r, 0) @@ -92,7 +90,7 @@ func (i InitialiseClient) NewClient(r *schema.ResourceData) (interface{}, error) Host: "", DefaultHeader: map[string]string{}, DefaultQueryParams: map[string]string{}, - HTTPClient: &http.Client{Transport: tr, Timeout: 2 * time.Minute}, + HTTPClient: utils.NewRetryableClient(), } apiClient := api_client.NewAPIClient(&cfg) err = utils.SetCMPVars(apiClient, brokerApiClient, &cfg) diff --git a/pkg/utils/http_retry.go b/pkg/utils/http_retry.go new file mode 100644 index 00000000..9857e5a3 --- /dev/null +++ b/pkg/utils/http_retry.go @@ -0,0 +1,87 @@ +package utils + +import ( + "bytes" + "io" + "math" + "net/http" + "time" +) + +const RetryCount = 3 + +type retryableTransport struct { + transport http.RoundTripper +} + +func backoff(retries int) time.Duration { + return time.Duration(math.Pow(2, float64(retries))) * time.Second +} + +func shouldRetry(err error, resp *http.Response) bool { + if err != nil { + return true + } + + if resp.StatusCode == 401 { + return true + } + + return false +} + +func drainBody(resp *http.Response) { + if resp.Body != nil { + io.Copy(io.Discard, resp.Body) + resp.Body.Close() + } +} + +func (t *retryableTransport) RoundTrip(req *http.Request) (*http.Response, error) { + // Clone the request body + var bodyBytes []byte + if req.Body != nil { + bodyBytes, _ = io.ReadAll(req.Body) + req.Body = io.NopCloser(bytes.NewBuffer(bodyBytes)) + } + + // Send the request + resp, err := t.transport.RoundTrip(req) + + // Retry logic + retries := 0 + for shouldRetry(err, resp) && retries < RetryCount { + // Wait for the specified backoff period + time.Sleep(backoff(retries)) + + // We're going to retry, consume any response to reuse the connection. + drainBody(resp) + + // Clone the request body again + if req.Body != nil { + req.Body = io.NopCloser(bytes.NewBuffer(bodyBytes)) + } + + // Retry the request + resp, err = t.transport.RoundTrip(req) + + retries++ + } + + // Return the response + return resp, err +} + +func NewRetryableClient() *http.Client { + transport := &retryableTransport{ + transport: &http.Transport{ + MaxIdleConns: 20, + MaxIdleConnsPerHost: 20, + DisableKeepAlives: true}, + } + + return &http.Client{ + Transport: transport, + Timeout: 2 * time.Minute, + } +} From b6cf60ec9760b0eb68cc70737a258a734a180121 Mon Sep 17 00:00:00 2001 From: Mahesh N Date: Mon, 25 Nov 2024 15:32:47 +0530 Subject: [PATCH 7/7] update transport round trip --- pkg/utils/http_retry.go | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/pkg/utils/http_retry.go b/pkg/utils/http_retry.go index 9857e5a3..7ba6121c 100644 --- a/pkg/utils/http_retry.go +++ b/pkg/utils/http_retry.go @@ -1,8 +1,6 @@ package utils import ( - "bytes" - "io" "math" "net/http" "time" @@ -30,20 +28,20 @@ func shouldRetry(err error, resp *http.Response) bool { return false } -func drainBody(resp *http.Response) { - if resp.Body != nil { - io.Copy(io.Discard, resp.Body) - resp.Body.Close() - } -} +// func drainBody(resp *http.Response) { +// if resp.Body != nil { +// io.Copy(io.Discard, resp.Body) +// resp.Body.Close() +// } +// } func (t *retryableTransport) RoundTrip(req *http.Request) (*http.Response, error) { // Clone the request body - var bodyBytes []byte - if req.Body != nil { - bodyBytes, _ = io.ReadAll(req.Body) - req.Body = io.NopCloser(bytes.NewBuffer(bodyBytes)) - } + // var bodyBytes []byte + // if req.Body != nil { + // bodyBytes, _ = io.ReadAll(req.Body) + // req.Body = io.NopCloser(bytes.NewBuffer(bodyBytes)) + // } // Send the request resp, err := t.transport.RoundTrip(req) @@ -55,12 +53,12 @@ func (t *retryableTransport) RoundTrip(req *http.Request) (*http.Response, error time.Sleep(backoff(retries)) // We're going to retry, consume any response to reuse the connection. - drainBody(resp) + // drainBody(resp) // Clone the request body again - if req.Body != nil { - req.Body = io.NopCloser(bytes.NewBuffer(bodyBytes)) - } + // if req.Body != nil { + // req.Body = io.NopCloser(bytes.NewBuffer(bodyBytes)) + // } // Retry the request resp, err = t.transport.RoundTrip(req)