stackube/pkg/util/exec.go
Pengfei Ni 69dc3b3a6b Add CNI network plugin
This PR adds CNI network plugin to stackube.

Usage:

1. CNI network config

{
    "cniVersion": "0.3.1",
    "name": "net",
    "type": "kubestack",
    "kubestack-config": "/etc/kubestack.conf"
}

2. /etc/kubestack.conf

[Global]
auth-url=https://192.168.0.3/identity_admin/v2.0
username=admin
password=password
tenant-name=admin
region=RegionOne
ext-net-id=550370a3-4fc2-4494-919d-cae33f5b3de8
[Plugin]
plugin-name=ovs
integration-bridge=br-int

3. Put stackube command to /opt/cni/bin

Change-Id: I3a666aa2b0b90ef5d8e2f065ddda0deb6d0fcd94
Implements: blueprint cni-plugin
Signed-off-by: Pengfei Ni <feiskyer@gmail.com>
Signed-off-by: mozhuli <21621232@zju.edu.cn>
2017-07-10 16:07:46 +08:00

40 lines
758 B
Go

package util
import (
"os/exec"
"strings"
)
func absPath(cmd string) (string, error) {
cmdAbsPath, err := exec.LookPath(cmd)
if err != nil {
return "", err
}
return cmdAbsPath, nil
}
func buildCommand(cmd string, args ...string) (*exec.Cmd, error) {
cmdAbsPath, err := absPath(cmd)
if err != nil {
return nil, err
}
command := exec.Command(cmdAbsPath)
command.Args = append(command.Args, args...)
return command, nil
}
func RunCommand(cmd string, args ...string) ([]string, error) {
command, err := buildCommand(cmd, args...)
if err != nil {
return nil, err
}
output, err := command.CombinedOutput()
if err != nil {
return []string{string(output)}, err
}
return strings.Split(strings.TrimSpace(string(output)), "\n"), nil
}