@@ -5,10 +5,10 @@ package view
5
5
6
6
import (
7
7
"errors"
8
-
9
8
"github.com/derailed/k9s/internal/client"
10
9
"github.com/derailed/k9s/internal/dao"
11
10
"github.com/derailed/k9s/internal/ui"
11
+ "github.com/derailed/tcell/v2"
12
12
appsv1 "k8s.io/api/apps/v1"
13
13
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14
14
)
@@ -47,6 +47,7 @@ func (d *Deploy) bindKeys(aa *ui.KeyActions) {
47
47
ui .KeyShiftR : ui .NewKeyAction ("Sort Ready" , d .GetTable ().SortColCmd (readyCol , true ), false ),
48
48
ui .KeyShiftU : ui .NewKeyAction ("Sort UpToDate" , d .GetTable ().SortColCmd (uptodateCol , true ), false ),
49
49
ui .KeyShiftL : ui .NewKeyAction ("Sort Available" , d .GetTable ().SortColCmd (availCol , true ), false ),
50
+ ui .KeyR : ui .NewKeyAction ("Show Replicasets" , d .replicaSetsCmd , true ),
50
51
})
51
52
}
52
53
@@ -63,6 +64,20 @@ func (d *Deploy) logOptions(prev bool) (*dao.LogOptions, error) {
63
64
return podLogOptions (d .App (), path , prev , dp .ObjectMeta , dp .Spec .Template .Spec ), nil
64
65
}
65
66
67
+ func (d * Deploy ) replicaSetsCmd (evt * tcell.EventKey ) * tcell.EventKey {
68
+ dName := d .GetTable ().GetSelectedItem ()
69
+ if dName == "" {
70
+ return evt
71
+ }
72
+ dp , err := d .getInstance (dName )
73
+ if err != nil {
74
+ d .App ().Flash ().Err (err )
75
+ return nil
76
+ }
77
+ showReplicasetsFromSelector (d .App (), dName , dp .Spec .Selector )
78
+ return nil
79
+ }
80
+
66
81
func (d * Deploy ) showPods (app * App , model ui.Tabular , gvr client.GVR , fqn string ) {
67
82
dp , err := d .getInstance (fqn )
68
83
if err != nil {
@@ -73,6 +88,16 @@ func (d *Deploy) showPods(app *App, model ui.Tabular, gvr client.GVR, fqn string
73
88
showPodsFromSelector (app , fqn , dp .Spec .Selector )
74
89
}
75
90
91
+ func (d * Deploy ) showReplicasets (app * App , model ui.Tabular , gvr client.GVR , fqn string ) {
92
+ dp , err := d .getInstance (fqn )
93
+ if err != nil {
94
+ app .Flash ().Err (err )
95
+ return
96
+ }
97
+
98
+ showReplicasetsFromSelector (app , fqn , dp .Spec .Selector )
99
+ }
100
+
76
101
func (d * Deploy ) getInstance (fqn string ) (* appsv1.Deployment , error ) {
77
102
var dp dao.Deployment
78
103
dp .Init (d .App ().factory , d .GVR ())
@@ -92,3 +117,13 @@ func showPodsFromSelector(app *App, path string, sel *metav1.LabelSelector) {
92
117
93
118
showPods (app , path , l .String (), "" )
94
119
}
120
+
121
+ func showReplicasetsFromSelector (app * App , path string , sel * metav1.LabelSelector ) {
122
+ l , err := metav1 .LabelSelectorAsSelector (sel )
123
+ if err != nil {
124
+ app .Flash ().Err (err )
125
+ return
126
+ }
127
+
128
+ showReplicasets (app , path , l .String (), "" )
129
+ }
0 commit comments