Skip to content

Commit 08f2f0f

Browse files
yfodilremyleone
andauthored
feat(lb): improve backend get output (#2575)
Co-authored-by: Rémy Léone <[email protected]>
1 parent 121b725 commit 08f2f0f

18 files changed

+3900
-1582
lines changed

internal/namespaces/lb/v1/custom.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ func GetCommands() *core.Commands {
1313
human.RegisterMarshalerFunc(lb.ACLActionType(""), human.EnumMarshalFunc(aclMarshalSpecs))
1414
human.RegisterMarshalerFunc(lb.BackendServerStatsHealthCheckStatus(""), human.EnumMarshalFunc(backendServerStatsHealthCheckStatusMarshalSpecs))
1515
human.RegisterMarshalerFunc(lb.BackendServerStatsServerState(""), human.EnumMarshalFunc(backendServerStatsServerStateMarshalSpecs))
16+
human.RegisterMarshalerFunc(lb.LB{}, lbMarshalerFunc)
17+
human.RegisterMarshalerFunc(lb.Backend{}, lbBackendMarshalerFunc)
1618

1719
cmds := GetGeneratedCommands()
1820

internal/namespaces/lb/v1/custom_backend.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,27 @@ var (
2121
lb.BackendServerStatsServerStateStopping: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "stopping"},
2222
}
2323
)
24+
25+
func lbBackendMarshalerFunc(i interface{}, opt *human.MarshalOpt) (string, error) {
26+
type tmp lb.Backend
27+
backend := tmp(i.(lb.Backend))
28+
29+
opt.Sections = []*human.MarshalSection{
30+
{
31+
FieldName: "HealthCheck",
32+
},
33+
{
34+
FieldName: "Pool",
35+
},
36+
{
37+
FieldName: "LB",
38+
},
39+
}
40+
41+
str, err := human.Marshal(backend, opt)
42+
if err != nil {
43+
return "", err
44+
}
45+
46+
return str, nil
47+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package lb
2+
3+
import (
4+
"testing"
5+
6+
"github.com/scaleway/scaleway-cli/v2/internal/core"
7+
"github.com/scaleway/scaleway-cli/v2/internal/namespaces/instance/v1"
8+
)
9+
10+
func Test_GetBackend(t *testing.T) {
11+
cmds := GetCommands()
12+
cmds.Merge(instance.GetCommands())
13+
14+
t.Run("Simple", core.Test(&core.TestConfig{
15+
Commands: cmds,
16+
BeforeFunc: core.BeforeFuncCombine(
17+
createLB(),
18+
createInstance(),
19+
createBackend(80),
20+
addIP2Backend("{{ .Instance.PublicIP.Address }}"),
21+
),
22+
Cmd: "scw lb backend get {{ .Backend.ID }}",
23+
Check: core.TestCheckGolden(),
24+
AfterFunc: core.AfterFuncCombine(
25+
deleteLB(),
26+
deleteInstance(),
27+
),
28+
}))
29+
}

internal/namespaces/lb/v1/custom_certificate.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,13 @@ func certificateCreateBuilder(c *core.Command) *core.Command {
8484
}
8585
}
8686

87+
c.View = &core.View{
88+
Sections: []*core.ViewSection{
89+
{
90+
FieldName: "LB",
91+
},
92+
},
93+
}
94+
8795
return c
8896
}

internal/namespaces/lb/v1/custom_certificate_test.go

Lines changed: 82 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -13,89 +13,89 @@ func Test_CreateCertificate(t *testing.T) {
1313
// openssl x509 -req -sha256 -days 365 -in csr.txt -signkey private_key.txt -out certificate.txt -extensions req_ext
1414

1515
customCertificateChain := `
16-
-----BEGIN RSA PRIVATE KEY-----
17-
MIIJKAIBAAKCAgEAtmpvK5p1lPG2xL/AObtv3xJXhAmSkqn/uhObSwuo8JkK+Lpi
18-
86AQ/XRAjxAzfkEOQF3MOJGSK1uOqrZ/G5yH2XqK86HnoUkVpIy60yiF5fzeed3D
19-
f8pF1ymi4IEe2Y+Uzs4rMP5jxAxHPbLYKQgfg1u7PNlwpngw3uo7ZPcL/jZJNMwy
20-
Yj3aeu2vh8obmCQDiE2hIKqW9V7M95bcWpWtmVCcplFMfbvq0pByPmOtCwx22IUO
21-
uRgx3dxTRrXmAXzERRjfnzJLr1WYrApmrmUkdQSgSf5TOZpopHd4SWJLvlHLh30/
22-
bCO2ofr1y7DOICnLNURBqRdnjIYlJ2Atup9h2x11NwgmxkeWfvoxcuP0XUZnFQbf
23-
gVkKQWZM6Dy2xIZPz8oRmYXiJDXs4yTDbUbWdP9BzmWlPDWQeIYPokX/9bpEe9OF
24-
SHzBaQpFUKzlmo6Yra+RJzLa0EctMrzgME16oGZFBPkULHrPMhbdniHgVcql2A2P
25-
l9UQxw6Qqo3jMloci7NFEqWF3c3DazjYbXaveojIJa3MXveSulUgiBFgiJs0wvfi
26-
AY49p9jhj5LiS5tYvDULjzeIsHaLgzCG8zTA86zW/Enx5/8SIyPUKtHtrkjzsjlH
27-
dbQ2DSnQQ5Sk6kBp9tX0RliDgGrbQ7upZ4jPdl9YbY1Wfy1+cMwGqjJ+cEUCAwEA
28-
AQKCAgAC5npSBSitb5JqWmoiANrsfwwpK0XLUyyftsQXU14iRSype70rBnZ+sSR9
29-
odJPxZUGbPdcRuQ+EDyadkBbHggC6zHeYcqfA9x2O06VIOXQHE8lPONo2rx1iVHv
30-
o93rs564EwsYwlKvwUo4rulE7b4ihojZlNN3sh2EzdCX8F2ecxqC3mRGr5kTr0fF
31-
Lu91Yc00k5dmP5Aa4qD7pshmIE8cSu3SryQ6M4yuQGGwoEEWFeKl2qe7Rak1T9V7
32-
IFVB3Mv6FUUo8NHHPeMpiRjM2QrVWXd69bI5Dj1vr/6XnBp8Miy8QL+LZp32wVi7
33-
HlqIpGF4vVcV6ytYTqG0mJDhkLsri9Lwe5OvN+gJe8/VLrJUb6PoJ12wWgQ80uWi
34-
YMQr/3H/fFU8vkfXqDEWa6fq3RYy8IimE5L+stsVtrkejdyFx8XyQhDnucfrFkrS
35-
X/3pceozQRquFrpcrk8RpMNE8chP8M+BhO4pvAORT1dVCdDXzuVQWjanxocIc/GD
36-
x7EHqDFKwxBrxAjobGdlIWZoj+sz3nAXAetMgmZMbSHHPUB5PGRuGy3HnLX7APR6
37-
1b1C8c+QpuKUv3uoSKRIzeiF5nwMMKsNsLa7ZtYBZXbrUOkrKVlj6mRNuGFC0n1P
38-
vrPT0XI+4T+xgdBobS1YH5qQn2TLhwoPW8FPb1V6/iU+IO6GWQKCAQEA27fGQ0pf
39-
5VgdcCsSml2HpjcAOLZraN4TI5xImZ4VnyA7esyIV9rV5VFNyihNxESZ3chl4NcD
40-
5WQaJ2zWBIto5Y/5gbhrNCvyeWuoJQ9YqviwKpCN0lqkvm1P8lLJmJrYbyhEm2T9
41-
2LZIcbgv2eW8pzeLtdr7Qpep8pwhvFIUGUXmNjka6T/WlIrQl3VVfzjHxd/mUmV2
42-
zzAVYjs45mHFZDwxSi+f4xM9q9wYkG7oAq4QoDLXcVQ+FIV12QjzmTA7erBBm9NK
43-
ScFinS5YZxZGqw95Oc3yjskO34I/538uWjAdDQlDOghde6igw0f8UPTSgxBhmV4l
44-
TIex0npXhdAWqwKCAQEA1InFpd0v8WnFUqs60FepaRIoo3NZ0ZA2Vb2TvvgQxz+Q
45-
ye7QcDf3VdRuWoXd6X6vtfeJ4G1avsh7aEItTfdXMx0pYTzyPlpJTweut+uGOyy5
46-
ZBjfyYqiR3WzqWghKn4RZNJ5gKYsn8/doQ68IDUpqcngW+FUDR16uDdtf09vhOec
47-
EKgEZh6bSvRrQ6Zrav3gDhiJjPRQZpcEacFZO8WlB2QOFuBgEvF8niliz1NITtZJ
48-
sI0jXe+2m91ntIZmDhDMqEOhrYZD5R+PB06osXqE+Kh0/2u6AsoOkQczVco2bVXH
49-
PL0hNpQjCUveMTWhxQSrw1LCS0S2GMEbcWH/l2RUzwKCAQBKyFgA2zWcd8s9PEvO
50-
onrjBeFbbCtOvBdDjZPgRUASswPLngXh8SfQL0YMwn8FiFvecrDKQCShVNraBF8r
51-
mM+RItnHXx+N2E9lKFFIm9qQBqjfM+gxaoycC9SkI61d9YYo/0mqoksMEa7ClfAj
52-
d+AoAe3ZbbkLR1eeramF0WHp4DKkzfbs4L+GO2EXy+XXsVm9baGU9dfkWPdOQd3x
53-
++EVZq9YErGWthvNfNIXhsgM8XXTMLrHZebjUTF1N2jCAPqdnZQXF2k3hUytNvL7
54-
00cmPdQC6qfeFWysgkaB4nXCWJHqt/ZbsDExP4nILZ4hZ9KmrVKqwrJrQ9wwSVe0
55-
wciVAoIBAQCgqn11Ax3o+zIlajeNo5b3TLjXxq1RVBke+66ioFfep1jGrfd3vXcF
56-
tQ6u859rkU822aeqtj/xFRDlIZGp7J5Ij3TmgvIE3K+qRH55nlvcg9SprHwPmPNP
57-
3dQw7fyUaLSxaMJc1EHLlZFO3RqtpkKWjXtDObUWLQDGHXBy2xPMfmFl3f1lTSHL
58-
qbUkcLunJ7+mKDpjCZV12BeH8peILcKxMZvNA1TdPRwdW9/MJoL0xdzyz966dimu
59-
7dIlj6u6Wky7rlScHnFY1WCD/5xafenjJ0U6iK8WyLP2QmE2KyS1xjBU5AwlfBp4
60-
Ppf6zzY4/2zwvLEPwSN+1wvtzE0wnrHVAoIBAEV+CnNJSTACRtbEymmdVXXUh632
61-
E7D99ggrmYTRHplrcg/8Vibnkq7lEdHR801nR0b1cTZZ0DR/8goxjiJpnFtAhMnp
62-
pc+GzYt1OayWxYuY5y9MdXZZLD0IVae5yxlz0rCTq9WQ+kxOZTrddJ14nNXdM+wr
63-
pg2cIt8R/OWVfH7DvspNi88IvUVVz828qt1OkxvunC4MNIkz/6OBkOhYp4+LkvD2
64-
TG3xuK+574wgTbQrlUTLsA2RYSaWVYaXQKDBPujNGnIbYym3J5+4XSkiDz0KapeU
65-
naBi1WZgzi1fm8aacu7YXxUTIbyJpXdc8Mz5+6NNAk0K2clKoYsO/VbQswY=
66-
-----END RSA PRIVATE KEY-----
16+
-----BEGIN PRIVATE KEY-----
17+
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
66+
MepiPn3PLfsjd0iqJJ/3k3oqCMAUrw==
67+
-----END PRIVATE KEY-----
6768
-----BEGIN CERTIFICATE-----
68-
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
98-
u7hOptIAnzVMFt9d/EhtaU6+KoWS/sI=
69+
MIIFijCCA3KgAwIBAgIJAI+myVDGPxI7MA0GCSqGSIb3DQEBCwUAMG4xCzAJBgNV
70+
BAYTAkZSMRYwFAYDVQQIDA1JbGUtZGUtRnJhbmNlMQ4wDAYDVQQHDAVQYXJpczEd
71+
MBsGA1UECgwUTXlJbnRlcm5ldENvbXBhbnlMVEQxGDAWBgNVBAMMD3d3dy5leGFt
72+
cGxlLmNvbTAeFw0yMjExMTQxNjA5MTFaFw0yMzExMTQxNjA5MTFaMG4xCzAJBgNV
73+
BAYTAkZSMRYwFAYDVQQIDA1JbGUtZGUtRnJhbmNlMQ4wDAYDVQQHDAVQYXJpczEd
74+
MBsGA1UECgwUTXlJbnRlcm5ldENvbXBhbnlMVEQxGDAWBgNVBAMMD3d3dy5leGFt
75+
cGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKOJJZJWGKyR
76+
MBTSwA1dzTz7NGoJLXLWQyOq2rOiqfG2uZ3Djy+ATjb6/mP+/SgEFHiS4ETCmvZZ
77+
PWU4bITm+FgEiOzyQ8EqdplH5Jrw54xim428ETydiASgghoiSSE+M9qzK4ROIrrf
78+
LHQPmrBGyb0Chr87mQo6kDDXs3Pdssk1ORhaPAul9vsnIbZWEX09rZ1+vuxqFjVM
79+
G70Zjwc1W9elYIYRYI1bwNCncHLbdHoGxSvAx6t/zxd/mGTEzji4dUJPAlrNx0yE
80+
8RiGzixruer+1YNRYXHeg9Y/FxhgQ2gIIm7pVQgac9wNcBcUxqiUFIPvyjiPSgK3
81+
SoBml4GAl3d1nP5+zAahV0UMty9Ez35lJq/qeLBTj2vyU34B7dEABG9JMllKxVLc
82+
n97xDjSL22cSSWB63wDHB1oVWLBnlSLZDZFLuWdAW3t05qvnkwieqgtrrIubxClF
83+
9VP92cyeggYNPmF3YspqYCxps22Y9JPU4m/cw6XRc/uBJUA6AMnw2OHUk3lfiq07
84+
ca9NTMGiN+pt6Bwwt7wZTxlSLc9MSOon7TGddeLhkdOfevVrAhXKaYJU4/+ldsNS
85+
J+V8FtVZk5C7k4XSUk8h6glLkDHlHcLS4OkK3w7T8LaSVrwVOw6BIWit359s43/7
86+
SuNA8revIlYJgq33KeWDGv9vnZqHZTiLAgMBAAGjKzApMCcGA1UdEQQgMB6CC2V4
87+
YW1wbGUuY29tgg93d3cuZXhhbXBsZS5jb20wDQYJKoZIhvcNAQELBQADggIBAD/F
88+
iIwu462RaaN8dZ7G0vhTGoz70hGsaLw7Qi8mOCN1hUfMrxh+oxLNUu9A/pNCx9zA
89+
g4N/8xvA3L85kv4RkvPDP5KQ9h/zIKgV2ADv8Swu67fclEVa6Mk4BmRPghfhs/h/
90+
9TEc3oyEyG6TQx5msPz9z9ghQyhgbYlo4DigAv8Gjz7RyGg1stD0LOeVg6pSVhK0
91+
37+dg55hox5mMN36g2O+xEM85u4uB4dqp4ibvKPapq+wAYg0YK3R79+KmlsbCVC1
92+
zFWyDwaH3H3VLb1a/aAHxUqvpTMmrJpeZWTPeVcsIKsml9NpjQgeIy4MjkjcHBJk
93+
ZfZ9/R3OaM9Bl/OtUWEDadEXhMA/neJ0bZh8Bt2ql1GnKUYJPH0qWKgMwFThykcU
94+
l54C512JDGk8tBiNAh2cqbbKX+M0jqTuDmSeLZOcvWM+k0T/VbeERalPdH3xXO3L
95+
x4FFaqNY5W1sndunzYeWCpVNfK2unwcocj8hXl+Vcm0YgzDhz8CrgFQgp7qmtGH8
96+
eewzvqkUm8i+N4c7Rax25M06EcT8dCfjHG0ScC+iOOrgm9V8bVNNsnUQzAqhwozp
97+
FKQ9WcK8j+KuYrWQJihn/omlWXSQ+zs12N7yKVLVRuY8aw4XuWZwvuu4EkRLYcUD
98+
5h467I4rNC2+9W+AcNkzCE2i/dCyt3f3y1Rtu8l0
9999
-----END CERTIFICATE-----
100100
`
101101
t.Run("Import", core.Test(&core.TestConfig{

internal/namespaces/lb/v1/custom_lb.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,29 @@ var (
2323
}
2424
)
2525

26+
func lbMarshalerFunc(i interface{}, opt *human.MarshalOpt) (string, error) {
27+
type tmp lb.LB
28+
loadbalancer := tmp(i.(lb.LB))
29+
30+
opt.Sections = []*human.MarshalSection{
31+
{
32+
FieldName: "IP",
33+
Title: "IPs",
34+
},
35+
{
36+
FieldName: "Instances",
37+
Title: "Backends",
38+
},
39+
}
40+
41+
str, err := human.Marshal(loadbalancer, opt)
42+
if err != nil {
43+
return "", err
44+
}
45+
46+
return str, nil
47+
}
48+
2649
func lbWaitCommand() *core.Command {
2750
return &core.Command{
2851
Short: `Wait for a load balancer to reach a stable state`,

0 commit comments

Comments
 (0)