mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
Merge pull request #1873 from derekwaynecarr/kubelet_handleRun_namespace_aware
Make kubelet handleRun work for pods in non-default namespace
This commit is contained in:
commit
7611c839e9
@ -301,23 +301,24 @@ func (s *Server) handleRun(w http.ResponseWriter, req *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
parts := strings.Split(u.Path, "/")
|
parts := strings.Split(u.Path, "/")
|
||||||
var podID, uuid, container string
|
var podNamespace, podID, uuid, container string
|
||||||
if len(parts) == 4 {
|
if len(parts) == 5 {
|
||||||
podID = parts[2]
|
podNamespace = parts[2]
|
||||||
container = parts[3]
|
podID = parts[3]
|
||||||
} else if len(parts) == 5 {
|
|
||||||
podID = parts[2]
|
|
||||||
uuid = parts[3]
|
|
||||||
container = parts[4]
|
container = parts[4]
|
||||||
|
} else if len(parts) == 6 {
|
||||||
|
podNamespace = parts[2]
|
||||||
|
podID = parts[3]
|
||||||
|
uuid = parts[4]
|
||||||
|
container = parts[5]
|
||||||
} else {
|
} else {
|
||||||
http.Error(w, "Unexpected path for command running", http.StatusBadRequest)
|
http.Error(w, "Unexpected path for command running", http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
podFullName := GetPodFullName(&api.BoundPod{
|
podFullName := GetPodFullName(&api.BoundPod{
|
||||||
TypeMeta: api.TypeMeta{
|
TypeMeta: api.TypeMeta{
|
||||||
ID: podID,
|
ID: podID,
|
||||||
// TODO: I am broken
|
Namespace: podNamespace,
|
||||||
Namespace: api.NamespaceDefault,
|
|
||||||
Annotations: map[string]string{ConfigSourceAnnotationKey: "etcd"},
|
Annotations: map[string]string{ConfigSourceAnnotationKey: "etcd"},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -386,8 +386,9 @@ func TestServeLogs(t *testing.T) {
|
|||||||
func TestServeRunInContainer(t *testing.T) {
|
func TestServeRunInContainer(t *testing.T) {
|
||||||
fw := newServerTest()
|
fw := newServerTest()
|
||||||
output := "foo bar"
|
output := "foo bar"
|
||||||
|
podNamespace := "other"
|
||||||
podName := "foo"
|
podName := "foo"
|
||||||
expectedPodName := podName + ".default.etcd"
|
expectedPodName := podName + "." + podNamespace + ".etcd"
|
||||||
expectedContainerName := "baz"
|
expectedContainerName := "baz"
|
||||||
expectedCommand := "ls -a"
|
expectedCommand := "ls -a"
|
||||||
fw.fakeKubelet.runFunc = func(podFullName, uuid, containerName string, cmd []string) ([]byte, error) {
|
fw.fakeKubelet.runFunc = func(podFullName, uuid, containerName string, cmd []string) ([]byte, error) {
|
||||||
@ -404,7 +405,7 @@ func TestServeRunInContainer(t *testing.T) {
|
|||||||
return []byte(output), nil
|
return []byte(output), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := http.Get(fw.testHTTPServer.URL + "/run/" + podName + "/" + expectedContainerName + "?cmd=ls%20-a")
|
resp, err := http.Get(fw.testHTTPServer.URL + "/run/" + podNamespace + "/" + podName + "/" + expectedContainerName + "?cmd=ls%20-a")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Got error GETing: %v", err)
|
t.Fatalf("Got error GETing: %v", err)
|
||||||
@ -425,8 +426,9 @@ func TestServeRunInContainer(t *testing.T) {
|
|||||||
func TestServeRunInContainerWithUUID(t *testing.T) {
|
func TestServeRunInContainerWithUUID(t *testing.T) {
|
||||||
fw := newServerTest()
|
fw := newServerTest()
|
||||||
output := "foo bar"
|
output := "foo bar"
|
||||||
|
podNamespace := "other"
|
||||||
podName := "foo"
|
podName := "foo"
|
||||||
expectedPodName := podName + ".default.etcd"
|
expectedPodName := podName + "." + podNamespace + ".etcd"
|
||||||
expectedUuid := "7e00838d_-_3523_-_11e4_-_8421_-_42010af0a720"
|
expectedUuid := "7e00838d_-_3523_-_11e4_-_8421_-_42010af0a720"
|
||||||
expectedContainerName := "baz"
|
expectedContainerName := "baz"
|
||||||
expectedCommand := "ls -a"
|
expectedCommand := "ls -a"
|
||||||
@ -447,7 +449,7 @@ func TestServeRunInContainerWithUUID(t *testing.T) {
|
|||||||
return []byte(output), nil
|
return []byte(output), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
resp, err := http.Get(fw.testHTTPServer.URL + "/run/" + podName + "/" + expectedUuid + "/" + expectedContainerName + "?cmd=ls%20-a")
|
resp, err := http.Get(fw.testHTTPServer.URL + "/run/" + podNamespace + "/" + podName + "/" + expectedUuid + "/" + expectedContainerName + "?cmd=ls%20-a")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Got error GETing: %v", err)
|
t.Fatalf("Got error GETing: %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user