Fix netns path setting from hook

Previously hook expected data with a wrong type.
Full netns path is not included with the data
passed with the hook.

Fixes #829

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi 2016-02-01 09:58:07 -08:00
parent 4298c7517d
commit e84aad941e
3 changed files with 5 additions and 11 deletions

View File

@ -1232,10 +1232,6 @@ func TestExternalKey(t *testing.T) {
externalKeyTest(t, false)
}
func TestExternalKeyWithReexec(t *testing.T) {
externalKeyTest(t, true)
}
func externalKeyTest(t *testing.T, reexec bool) {
if !testutils.IsRunningInContainer() {
defer testutils.SetupTestOSContext(t)()

View File

@ -12,7 +12,6 @@ import (
"github.com/Sirupsen/logrus"
"github.com/docker/libnetwork/types"
"github.com/opencontainers/runc/libcontainer"
"github.com/opencontainers/runc/libcontainer/configs"
)
@ -21,7 +20,7 @@ const success = "success"
// processSetKeyReexec is a private function that must be called only on an reexec path
// It expects 3 args { [0] = "libnetwork-setkey", [1] = <container-id>, [2] = <controller-id> }
// It also expects libcontainer.State as a json string in <stdin>
// It also expects configs.HookState as a json string in <stdin>
// Refer to https://github.com/opencontainers/runc/pull/160/ for more information
func processSetKeyReexec() {
var err error
@ -40,20 +39,19 @@ func processSetKeyReexec() {
}
containerID := os.Args[1]
// We expect libcontainer.State as a json string in <stdin>
// We expect configs.HookState as a json string in <stdin>
stateBuf, err := ioutil.ReadAll(os.Stdin)
if err != nil {
return
}
var state libcontainer.State
var state configs.HookState
if err = json.Unmarshal(stateBuf, &state); err != nil {
return
}
controllerID := os.Args[2]
key := state.NamespacePaths[configs.NamespaceType("NEWNET")]
err = SetExternalKey(controllerID, containerID, key)
err = SetExternalKey(controllerID, containerID, fmt.Sprintf("/proc/%d/ns/net", state.Pid))
return
}

View File

@ -11,7 +11,7 @@ import (
// processSetKeyReexec is a private function that must be called only on an reexec path
// It expects 3 args { [0] = "libnetwork-setkey", [1] = <container-id>, [2] = <controller-id> }
// It also expects libcontainer.State as a json string in <stdin>
// It also expects configs.HookState as a json string in <stdin>
// Refer to https://github.com/opencontainers/runc/pull/160/ for more information
func processSetKeyReexec() {
}