Skip to content

Commit 121f4d2

Browse files
authored
Add support for --delete in push all command (#267)
* extracting to a single client * configure client base URL and base headers at the source * fix typo * remove individual delete flag in favor of persistent flag * remove debug flag * fix lint and bump libs * try to bump go lint * fix binary reference * fix lint * fix tests
1 parent af6ce58 commit 121f4d2

44 files changed

Lines changed: 333 additions & 348 deletions

Some content is hidden

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

.circleci/config.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
resource_class: large
2020
docker:
2121
# Note the goreleaser version is also referenced in the release and snapshot jobs.
22-
- image: goreleaser/goreleaser:v2.10.2
22+
- image: goreleaser/goreleaser:v2.11.2
2323
steps:
2424
- checkout
2525
- run:
@@ -31,8 +31,8 @@ jobs:
3131
echo "$output"
3232
exit 1
3333
fi
34-
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.63.4
35-
golangci-lint run -v --timeout 2m0s
34+
wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s v2.3.1
35+
./bin/golangci-lint run -v --timeout 2m0s
3636
- run: ./.circleci/scripts/e2e-env.sh
3737
- *install_vault
3838
- rok8s/get_vault_env:
@@ -47,7 +47,7 @@ jobs:
4747
resource_class: large
4848
docker:
4949
# Note the goreleaser version is also referenced in the release and test jobs.
50-
- image: goreleaser/goreleaser:v2.10.2
50+
- image: goreleaser/goreleaser:v2.11.2
5151
steps:
5252
- checkout
5353
- setup_remote_docker:
@@ -63,7 +63,7 @@ jobs:
6363
shell: /bin/bash
6464
docker:
6565
# Note the goreleaser version is also referenced in the snapshot and test jobs.
66-
- image: goreleaser/goreleaser:v2.10.2
66+
- image: goreleaser/goreleaser:v2.11.2
6767
steps:
6868
- checkout
6969
- run: ./.circleci/scripts/e2e-env.sh
@@ -73,8 +73,8 @@ jobs:
7373
- rok8s/get_vault_env:
7474
vault_path: repo/insights-cli/env
7575
- run: |
76-
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.63.4
77-
golangci-lint run -v --timeout 2m0s
76+
wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s v2.3.1
77+
./bin/golangci-lint run -v --timeout 2m0s
7878
go test -tags e2e ./pkg/...
7979
- setup_remote_docker:
8080
version: docker24

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@
1414
# Dependency directories (remove the comment below to include it)
1515
# vendor/
1616
main
17-
insights-cli
17+
insights-cli
18+
19+
.tool-versions

go.mod

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ module github.com/fairwindsops/insights-cli
22

33
go 1.24.4
44

5+
toolchain go1.24.5
6+
57
require (
6-
github.com/fairwindsops/insights-plugins/plugins/opa v0.0.0-20250715140540-2403ef57f5b0
8+
github.com/fairwindsops/insights-plugins/plugins/opa v0.0.0-20250731170703-4746d9c4a102
79
github.com/fatih/color v1.18.0
810
github.com/google/go-cmp v0.7.0
911
github.com/hashicorp/go-multierror v1.1.1
1012
github.com/imroc/req/v3 v3.54.0
11-
github.com/open-policy-agent/opa v1.6.0
13+
github.com/open-policy-agent/opa v1.7.1
1214
github.com/rogpeppe/go-internal v1.14.1
1315
github.com/samber/lo v1.51.0
1416
github.com/sirupsen/logrus v1.9.3
@@ -19,7 +21,7 @@ require (
1921
gopkg.in/yaml.v2 v2.4.0
2022
gopkg.in/yaml.v3 v3.0.1
2123
k8s.io/apimachinery v0.33.3
22-
sigs.k8s.io/yaml v1.5.0
24+
sigs.k8s.io/yaml v1.6.0
2325
)
2426

2527
require (
@@ -29,7 +31,6 @@ require (
2931
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3032
github.com/cloudflare/circl v1.6.1 // indirect
3133
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
32-
github.com/dgraph-io/badger/v4 v4.8.0 // indirect
3334
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
3435
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
3536
github.com/fsnotify/fsnotify v1.9.0 // indirect
@@ -70,20 +71,15 @@ require (
7071
github.com/quic-go/quic-go v0.53.0 // indirect
7172
github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 // indirect
7273
github.com/refraction-networking/utls v1.7.3 // indirect
73-
github.com/sergi/go-diff v1.4.0 // indirect
74-
github.com/spf13/pflag v1.0.6 // indirect
74+
github.com/spf13/pflag v1.0.7 // indirect
7575
github.com/tchap/go-patricia/v2 v2.3.3 // indirect
7676
github.com/vektah/gqlparser/v2 v2.5.30 // indirect
7777
github.com/x448/float16 v0.8.4 // indirect
7878
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
7979
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
8080
github.com/yashtewari/glob-intersection v0.2.0 // indirect
8181
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
82-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.62.0 // indirect
8382
go.opentelemetry.io/otel v1.37.0 // indirect
84-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect
85-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect
86-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.37.0 // indirect
8783
go.opentelemetry.io/otel/metric v1.37.0 // indirect
8884
go.opentelemetry.io/otel/sdk v1.37.0 // indirect
8985
go.opentelemetry.io/otel/trace v1.37.0 // indirect
@@ -102,7 +98,6 @@ require (
10298
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
10399
google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79 // indirect
104100
google.golang.org/genproto/googleapis/rpc v0.0.0-20250715232539-7130f93afb79 // indirect
105-
google.golang.org/grpc v1.73.0 // indirect
106101
google.golang.org/protobuf v1.36.6 // indirect
107102
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
108103
gopkg.in/inf.v0 v0.9.1 // indirect

go.sum

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lSh
3737
github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
3838
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
3939
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
40-
github.com/fairwindsops/insights-plugins/plugins/opa v0.0.0-20250715140540-2403ef57f5b0 h1:rFEeAq834U5fvrgKr6jDEK3yt1Ymeq2r1W/iE8pqisI=
41-
github.com/fairwindsops/insights-plugins/plugins/opa v0.0.0-20250715140540-2403ef57f5b0/go.mod h1:oEFUk4MCD+xHeaJdwOy7afX18OnhheXSn3EOjEqw8qk=
40+
github.com/fairwindsops/insights-plugins/plugins/opa v0.0.0-20250731170703-4746d9c4a102 h1:4T2M9ybtnfJjjmU7uj3ELfsNkRh7mI8yXH11pLrGRuA=
41+
github.com/fairwindsops/insights-plugins/plugins/opa v0.0.0-20250731170703-4746d9c4a102/go.mod h1:oEFUk4MCD+xHeaJdwOy7afX18OnhheXSn3EOjEqw8qk=
4242
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
4343
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
4444
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
@@ -110,11 +110,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
110110
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
111111
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
112112
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
113-
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
114113
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
115114
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
116-
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
117-
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
118115
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
119116
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
120117
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
@@ -138,8 +135,8 @@ github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU
138135
github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk=
139136
github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
140137
github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
141-
github.com/open-policy-agent/opa v1.6.0 h1:/S/cnNQJ2MUMNzizHPbisTWBHowmLkPrugY5jjkPlRQ=
142-
github.com/open-policy-agent/opa v1.6.0/go.mod h1:zFmw4P+W62+CWGYRDDswfVYSCnPo6oYaktQnfIaRFC4=
138+
github.com/open-policy-agent/opa v1.7.1 h1:bhA2UGq5oS25471WB9aCJBWEp5/7WK+Nyb2PMAChQIg=
139+
github.com/open-policy-agent/opa v1.7.1/go.mod h1:7cPuErOAt7k/oVWAVJnxqAC6mwArrAazkvk0RXiih2A=
143140
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
144141
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
145142
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -172,13 +169,13 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
172169
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
173170
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
174171
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
175-
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
176172
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
173+
github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M=
174+
github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
177175
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
178176
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
179177
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
180178
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
181-
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
182179
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
183180
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
184181
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
@@ -285,19 +282,17 @@ google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79 h1:
285282
google.golang.org/genproto/googleapis/api v0.0.0-20250715232539-7130f93afb79/go.mod h1:HKJDgKsFUnv5VAGeQjz8kxcgDP0HoE0iZNp0OdZNlhE=
286283
google.golang.org/genproto/googleapis/rpc v0.0.0-20250715232539-7130f93afb79 h1:1ZwqphdOdWYXsUHgMpU/101nCtf/kSp9hOrcvFsnl10=
287284
google.golang.org/genproto/googleapis/rpc v0.0.0-20250715232539-7130f93afb79/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
288-
google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok=
289-
google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc=
285+
google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4=
286+
google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM=
290287
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
291288
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
292289
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
293-
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
294290
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
295291
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
296292
gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
297293
gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
298294
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
299295
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
300-
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
301296
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
302297
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
303298
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -329,5 +324,5 @@ sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxO
329324
sigs.k8s.io/structured-merge-diff/v4 v4.7.0 h1:qPeWmscJcXP0snki5IYF79Z8xrl8ETFxgMd7wez1XkI=
330325
sigs.k8s.io/structured-merge-diff/v4 v4.7.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
331326
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
332-
sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ=
333-
sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4=
327+
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
328+
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=

pkg/appgroups/appgroups.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"reflect"
88

99
"github.com/fairwindsops/insights-cli/pkg/directory"
10+
"github.com/imroc/req/v3"
1011
"github.com/samber/lo"
1112
"github.com/sirupsen/logrus"
1213
"github.com/xlab/treeprint"
@@ -23,14 +24,14 @@ func AddAppGroupsBranch(tree treeprint.Tree, appGroups []AppGroup) error {
2324
}
2425

2526
// PushAppGroups pushes app-groups to insights
26-
func PushAppGroups(pushDir, org, insightsToken, host string, deleteMissing, dryRun bool) error {
27+
func PushAppGroups(client *req.Client, pushDir, org string, deleteMissing, dryRun bool) error {
2728
logrus.Debugln("Pushing app-groups")
2829
_, err := os.Stat(pushDir)
2930
if err != nil {
3031
return err
3132
}
3233

33-
existingAppGroups, err := FetchAppGroups(org, insightsToken, host)
34+
existingAppGroups, err := FetchAppGroups(client, org)
3435
if err != nil {
3536
return fmt.Errorf("error during API call: %w", err)
3637
}
@@ -43,9 +44,9 @@ func PushAppGroups(pushDir, org, insightsToken, host string, deleteMissing, dryR
4344
for _, appGroup := range upserts {
4445
logrus.Infof("upsert app-group: %s", appGroup.Name)
4546
if !dryRun {
46-
err = upsertAppGroup(org, insightsToken, host, appGroup)
47+
err = upsertAppGroup(client, org, appGroup)
4748
if err != nil {
48-
return fmt.Errorf("Error while upsert app-group %s to Fairwinds Insights: %w", appGroup.Name, err)
49+
return fmt.Errorf("error while upsert app-group %s to Fairwinds Insights: %w", appGroup.Name, err)
4950
}
5051
}
5152
}
@@ -54,9 +55,9 @@ func PushAppGroups(pushDir, org, insightsToken, host string, deleteMissing, dryR
5455
for _, appGroupForDelete := range deletes {
5556
logrus.Infof("Deleting app-group: %s", appGroupForDelete.Name)
5657
if !dryRun {
57-
err = deleteAppGroup(org, insightsToken, host, appGroupForDelete)
58+
err = deleteAppGroup(client, org, appGroupForDelete)
5859
if err != nil {
59-
return fmt.Errorf("Error while deleting app-group %s from insights: %w", appGroupForDelete.Name, err)
60+
return fmt.Errorf("error while deleting app-group %s from insights: %w", appGroupForDelete.Name, err)
6061
}
6162
}
6263
}

pkg/appgroups/appgroups_requests.go

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,26 @@ import (
44
"fmt"
55

66
"github.com/fairwindsops/insights-cli/pkg/utils"
7-
"github.com/fairwindsops/insights-cli/pkg/version"
87
"github.com/imroc/req/v3"
98
"github.com/sirupsen/logrus"
109
)
1110

1211
const (
13-
appGroupURLFormat = "%s/v0/organizations/%s/app-groups"
14-
appGroupURLSingleFormat = "%s/v0/organizations/%s/app-groups/%s"
12+
appGroupURLFormat = "/v0/organizations/%s/app-groups"
13+
appGroupURLSingleFormat = "/v0/organizations/%s/app-groups/%s"
1514
)
1615

1716
// FetchAppGroups queries Fairwinds Insights to retrieve all of the app-groups for an organization
18-
func FetchAppGroups(org, token, hostName string) ([]AppGroup, error) {
19-
url := fmt.Sprintf(appGroupURLFormat, hostName, org)
17+
func FetchAppGroups(client *req.Client, org string) ([]AppGroup, error) {
18+
url := fmt.Sprintf(appGroupURLFormat, org)
2019
logrus.Debugf("fetchAppGroups: appGroups URL: %s", url)
21-
resp, err := req.C().R().SetHeaders(utils.GetHeaders(version.GetVersion(), token, "")).Get(url)
20+
resp, err := client.R().SetHeaders(utils.GetHeaders("")).Get(url)
2221
if err != nil {
2322
return nil, fmt.Errorf("unable to fetch app-groups from insights: %w", err)
2423
}
2524
var appGroups []AppGroup
26-
if !utils.IsSuccessful(resp.Response.StatusCode) {
27-
return nil, fmt.Errorf("invalid response code - expected 200, got %d: %s", resp.Response.StatusCode, string(resp.Bytes()))
25+
if resp.IsErrorState() {
26+
return nil, fmt.Errorf("invalid response code - expected 200, got %d: %s", resp.StatusCode, string(resp.Bytes()))
2827
}
2928
err = resp.Unmarshal(&appGroups)
3029
if err != nil {
@@ -34,40 +33,39 @@ func FetchAppGroups(org, token, hostName string) ([]AppGroup, error) {
3433
}
3534

3635
// upsertAppGroup requests Fairwinds Insights to upsert an app-group for an organization
37-
func upsertAppGroup(org, token, hostName string, appGroup AppGroup) error {
38-
url := fmt.Sprintf(appGroupURLFormat, hostName, org)
36+
func upsertAppGroup(client *req.Client, org string, appGroup AppGroup) error {
37+
url := fmt.Sprintf(appGroupURLFormat, org)
3938
logrus.Debugf("upsertAppGroup: appGroups URL: %s", url)
40-
resp, err := req.C().R().SetHeaders(utils.GetHeaders(version.GetVersion(), token, "")).SetBody(&appGroup).Post(url)
39+
resp, err := client.R().SetHeaders(utils.GetHeaders("")).SetBody(&appGroup).Post(url)
4140
if err != nil {
4241
return fmt.Errorf("unable to fetch app-groups from insights: %w", err)
4342
}
44-
if !utils.IsSuccessful(resp.Response.StatusCode) {
45-
return fmt.Errorf("invalid response code - expected 200, got %d: %s", resp.Response.StatusCode, string(resp.Bytes()))
43+
if resp.IsErrorState() {
44+
return fmt.Errorf("invalid response code - expected 200, got %d: %s", resp.StatusCode, string(resp.Bytes()))
4645
}
4746
var response AppGroup
4847
err = resp.Unmarshal(&response)
4948
if err != nil {
50-
return fmt.Errorf("Unable to convert response to json for app-groups: %w", err)
51-
49+
return fmt.Errorf("unable to convert response to json for app-groups: %w", err)
5250
}
5351
return nil
5452
}
5553

5654
// deleteAppGroup requests Fairwinds Insights to remove an app-group for an organization
57-
func deleteAppGroup(org, token, hostName string, appGroup AppGroup) error {
58-
url := fmt.Sprintf(appGroupURLSingleFormat, hostName, org, appGroup.Name)
55+
func deleteAppGroup(client *req.Client, org string, appGroup AppGroup) error {
56+
url := fmt.Sprintf(appGroupURLSingleFormat, org, appGroup.Name)
5957
logrus.Debugf("deleteAppGroup: appGroups URL: %s", url)
60-
resp, err := req.C().R().SetHeaders(utils.GetHeaders(version.GetVersion(), token, "")).Delete(url)
58+
resp, err := client.R().SetHeaders(utils.GetHeaders("")).Delete(url)
6159
if err != nil {
6260
return fmt.Errorf("unable to fetch app-groups from insights: %w", err)
6361
}
64-
if !utils.IsSuccessful(resp.Response.StatusCode) {
65-
return fmt.Errorf("invalid response code - expected 200, got %d: %s", resp.Response.StatusCode, string(resp.Bytes()))
62+
if resp.IsErrorState() {
63+
return fmt.Errorf("invalid response code - expected 200, got %d: %s", resp.StatusCode, string(resp.Bytes()))
6664
}
6765
var response AppGroup
6866
err = resp.Unmarshal(&response)
6967
if err != nil {
70-
return fmt.Errorf("Unable to convert response to json for app-groups: %w", err)
68+
return fmt.Errorf("unable to convert response to json for app-groups: %w", err)
7169
}
7270
return nil
7371
}

pkg/cli/disable.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var disablePolicyMappings = &cobra.Command{
2828
Long: "Disable policy mappings",
2929
PreRun: validateAndLoadInsightsAPIConfigWrapper,
3030
Run: func(cmd *cobra.Command, args []string) {
31-
err := organizations.ManageOrganizationPolicyMappings(configurationObject.Options.Organization, insightsToken, configurationObject.Options.Hostname, false)
31+
err := organizations.ManageOrganizationPolicyMappings(client, configurationObject.Options.Organization, false)
3232
if err != nil {
3333
logrus.Fatal(err)
3434
}

pkg/cli/download.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,11 @@ func IsEmpty(path string) (bool, error) {
113113
if err != nil {
114114
return false, err
115115
}
116-
defer f.Close()
116+
defer func() {
117+
if err := f.Close(); err != nil {
118+
logrus.Errorf("error closing file %s: %v", path, err)
119+
}
120+
}()
117121

118122
_, err = f.Readdirnames(1) // Or f.Readdir(1)
119123
if err == io.EOF {

pkg/cli/download_app_groups.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ var downloadAppGroupsCmd = &cobra.Command{
2222
PreRun: validateAndLoadInsightsAPIConfigWrapper,
2323
Run: func(cmd *cobra.Command, args []string) {
2424
org := configurationObject.Options.Organization
25-
host := configurationObject.Options.Hostname
26-
appGroups, err := appgroups.FetchAppGroups(org, insightsToken, host)
25+
appGroups, err := appgroups.FetchAppGroups(client, org)
2726
if err != nil {
2827
logrus.Fatalf("unable to fetch app-groups from insights: %v", err)
2928
}

0 commit comments

Comments
 (0)