Skip to content
This repository was archived by the owner on May 6, 2022. It is now read-only.

Commit 7a10340

Browse files
robertscherbarthk8s-ci-robot
authored andcommitted
Add a DashboardURL row to svcat describe instances (#2262)
1 parent 3984a95 commit 7a10340

2 files changed

Lines changed: 68 additions & 0 deletions

File tree

cmd/svcat/output/instance.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"io"
2222

2323
"github.com/kubernetes-incubator/service-catalog/pkg/apis/servicecatalog/v1beta1"
24+
"github.com/olekukonko/tablewriter"
2425
)
2526

2627
func getInstanceStatusCondition(status v1beta1.ServiceInstanceStatus) v1beta1.ServiceInstanceCondition {
@@ -40,6 +41,15 @@ func getInstanceStatusShort(status v1beta1.ServiceInstanceStatus) string {
4041
return formatStatusShort(string(lastCond.Type), lastCond.Status, lastCond.Reason)
4142
}
4243

44+
func appendInstanceDashboardURL(status v1beta1.ServiceInstanceStatus, table *tablewriter.Table) {
45+
if status.DashboardURL != nil {
46+
dashboardURL := *status.DashboardURL
47+
table.AppendBulk([][]string{
48+
{"DashboardURL:", dashboardURL},
49+
})
50+
}
51+
}
52+
4353
func writeInstanceListTable(w io.Writer, instanceList *v1beta1.ServiceInstanceList) {
4454
t := NewListTable(w)
4555
t.SetHeader([]string{
@@ -133,6 +143,9 @@ func WriteInstanceDetails(w io.Writer, instance *v1beta1.ServiceInstance) {
133143
{"Name:", instance.Name},
134144
{"Namespace:", instance.Namespace},
135145
{"Status:", getInstanceStatusFull(instance.Status)},
146+
})
147+
appendInstanceDashboardURL(instance.Status, t)
148+
t.AppendBulk([][]string{
136149
{"Class:", instance.Spec.GetSpecifiedClusterServiceClass()},
137150
{"Plan:", instance.Spec.GetSpecifiedClusterServicePlan()},
138151
})

cmd/svcat/output/instance_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
Copyright 2018 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package output
18+
19+
import (
20+
"strings"
21+
"testing"
22+
23+
"github.com/kubernetes-incubator/service-catalog/pkg/apis/servicecatalog/v1beta1"
24+
"github.com/olekukonko/tablewriter"
25+
)
26+
27+
func Test_appendInstanceDashboardURL(t *testing.T) {
28+
dashboardURL := "grafana.example.com"
29+
table := &tablewriter.Table{}
30+
31+
tests := []struct {
32+
name string
33+
status v1beta1.ServiceInstanceStatus
34+
table *tablewriter.Table
35+
expectedString string
36+
}{
37+
{"dashboardURLOK", v1beta1.ServiceInstanceStatus{
38+
DashboardURL: &dashboardURL,
39+
}, table, "DashboardURL: grafana.example.com"},
40+
{"dashboardURLEmpty", v1beta1.ServiceInstanceStatus{}, table, ""},
41+
}
42+
for _, tt := range tests {
43+
t.Run(tt.name, func(t *testing.T) {
44+
var stringBuilder strings.Builder
45+
tt.table = NewDetailsTable(&stringBuilder)
46+
appendInstanceDashboardURL(tt.status, tt.table)
47+
tt.table.Render()
48+
actualString := strings.Trim(stringBuilder.String(), " \n")
49+
50+
if actualString != tt.expectedString {
51+
t.Fatalf("%v failed; expected %v; got %v", tt.name, tt.expectedString, actualString)
52+
}
53+
})
54+
}
55+
}

0 commit comments

Comments
 (0)