-
Notifications
You must be signed in to change notification settings - Fork 442
/
ovn-ic-nbctl.go
46 lines (41 loc) · 1.34 KB
/
ovn-ic-nbctl.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package ovs
import (
"fmt"
"os/exec"
"strings"
"time"
"k8s.io/klog/v2"
)
func (c LegacyClient) ovnIcNbCommand(cmdArgs ...string) (string, error) {
start := time.Now()
cmdArgs = append([]string{fmt.Sprintf("--timeout=%d", c.OvnTimeout), fmt.Sprintf("--db=%s", c.OvnICNbAddress)}, cmdArgs...)
raw, err := exec.Command(OVNIcNbCtl, cmdArgs...).CombinedOutput()
elapsed := float64((time.Since(start)) / time.Millisecond)
klog.V(4).Infof("command %s %s in %vms", OVNIcNbCtl, strings.Join(cmdArgs, " "), elapsed)
method := ""
for _, arg := range cmdArgs {
if !strings.HasPrefix(arg, "--") {
method = arg
break
}
}
code := "0"
defer func() {
ovsClientRequestLatency.WithLabelValues("ovn-ic-nb", method, code).Observe(elapsed)
}()
if err != nil {
code = "1"
klog.Warningf("ovn-ic-nbctl command error: %s %s in %vms", OVNIcNbCtl, strings.Join(cmdArgs, " "), elapsed)
return "", fmt.Errorf("%s, %q", raw, err)
} else if elapsed > 500 {
klog.Warningf("ovn-ic-nbctl command took too long: %s %s in %vms", OVNIcNbCtl, strings.Join(cmdArgs, " "), elapsed)
}
return trimCommandOutput(raw), nil
}
func (c LegacyClient) GetTsSubnet(ts string) (string, error) {
subnet, err := c.ovnIcNbCommand("get", "Transit_Switch", ts, "external_ids:subnet")
if err != nil {
return "", fmt.Errorf("failed to get ts subnet, %v", err)
}
return subnet, nil
}