Browse code

enable deployments and replica sets in rsh

Michal Fojtik authored on 2016/12/15 18:30:58
Showing 2 changed files
... ...
@@ -23,7 +23,8 @@ var (
23 23
 		Open a remote shell session to a container
24 24
 
25 25
 		This command will attempt to start a shell session in a pod for the specified resource.
26
-		It works with pods, deployment configs, jobs, daemon sets, and replication controllers.
26
+		It works with pods, deployment configs, deployments, jobs, daemon sets, replication controllers
27
+		and replica sets.
27 28
 		Any of the aforementioned resources (apart from pods) will be resolved to a ready pod.
28 29
 		It will default to the first container if none is specified, and will attempt to use
29 30
 		'/bin/sh' as the default shell. You may pass any flags supported by this command before
... ...
@@ -976,6 +976,42 @@ func (f *Factory) PodForResource(resource string, timeout time.Duration) (string
976 976
 			return "", err
977 977
 		}
978 978
 		return pod.Name, nil
979
+	case extensions.Resource("deployments"):
980
+		kc, err := f.Client()
981
+		if err != nil {
982
+			return "", err
983
+		}
984
+		d, err := kc.Extensions().Deployments(namespace).Get(name)
985
+		if err != nil {
986
+			return "", err
987
+		}
988
+		selector, err := unversioned.LabelSelectorAsSelector(d.Spec.Selector)
989
+		if err != nil {
990
+			return "", err
991
+		}
992
+		pod, _, err := cmdutil.GetFirstPod(kc, namespace, selector, timeout, sortBy)
993
+		if err != nil {
994
+			return "", err
995
+		}
996
+		return pod.Name, nil
997
+	case extensions.Resource("replicasets"):
998
+		kc, err := f.Client()
999
+		if err != nil {
1000
+			return "", err
1001
+		}
1002
+		rs, err := kc.Extensions().ReplicaSets(namespace).Get(name)
1003
+		if err != nil {
1004
+			return "", err
1005
+		}
1006
+		selector, err := unversioned.LabelSelectorAsSelector(rs.Spec.Selector)
1007
+		if err != nil {
1008
+			return "", err
1009
+		}
1010
+		pod, _, err := cmdutil.GetFirstPod(kc, namespace, selector, timeout, sortBy)
1011
+		if err != nil {
1012
+			return "", err
1013
+		}
1014
+		return pod.Name, nil
979 1015
 	case extensions.Resource("jobs"):
980 1016
 		kc, err := f.Client()
981 1017
 		if err != nil {