Skip to content

Commit

Permalink
Merge pull request #1202 from s1061123/add-timeout
Browse files Browse the repository at this point in the history
Add timeout
  • Loading branch information
dougbtv committed Jan 5, 2024
2 parents ab7d64e + 6e4f62f commit 003fbd5
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 20 deletions.
10 changes: 5 additions & 5 deletions cmd/cert-approver/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,15 @@ var (
// ControllerName provides controller name
ControllerName = "csr-approver"
// NamePrefix specifies which name in certification request should be target to approve
NamePrefix = "system:multus"
NamePrefix = "system:multus"
// Organization specifies which org in certification request should be target to approve
Organization = []string{"system:multus"}
Organization = []string{"system:multus"}
// Groups specifies which group in certification request should be target to approve
Groups = sets.New[string]("system:nodes", "system:multus", "system:authenticated")
Groups = sets.New[string]("system:nodes", "system:multus", "system:authenticated")
// UserPrefixes specifies which name prefix in certification request should be target to approve
UserPrefixes = sets.New[string]("system:node", NamePrefix)
UserPrefixes = sets.New[string]("system:node", NamePrefix)
// Usages specifies which usage in certification request should be target to approve
Usages = sets.New[certificatesv1.KeyUsage](
Usages = sets.New[certificatesv1.KeyUsage](
certificatesv1.UsageDigitalSignature,
certificatesv1.UsageClientAuth)
)
Expand Down
13 changes: 1 addition & 12 deletions cmd/multus-daemon/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
"path/filepath"
"sync"
"syscall"
"time"

utilwait "k8s.io/apimachinery/pkg/util/wait"

Expand Down Expand Up @@ -113,7 +112,7 @@ func main() {

// Wait until daemon ready
logging.Verbosef("API readiness check")
if waitUntilAPIReady(daemonConf.SocketDir) != nil {
if api.WaitUntilAPIReady(daemonConf.SocketDir) != nil {
logging.Panicf("failed to ready multus-daemon socket: %v", err)
os.Exit(1)
}
Expand All @@ -140,16 +139,6 @@ func main() {
logging.Verbosef("multus daemon is exited")
}

func waitUntilAPIReady(socketPath string) error {
apiReadyPollDuration := 100 * time.Millisecond
apiReadyPollTimeout := 1000 * time.Millisecond

return utilwait.PollImmediate(apiReadyPollDuration, apiReadyPollTimeout, func() (bool, error) {
_, err := api.DoCNI(api.GetAPIEndpoint(api.MultusHealthAPIEndpoint), nil, api.SocketPath(socketPath))
return err == nil, nil
})
}

func startMultusDaemon(ctx context.Context, daemonConfig *srv.ControllerNetConf, ignoreReadinessIndicator bool) error {
if user, err := user.Current(); err != nil || user.Uid != "0" {
return fmt.Errorf("failed to run multus-daemon with root: %v, now running in uid: %s", err, user.Uid)
Expand Down
6 changes: 4 additions & 2 deletions cmd/thin_entrypoint/main_test.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package main

// disable dot-imports only for testing
//revive:disable:dot-imports
import (
"fmt"
"os"
"testing"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
. "github.com/onsi/ginkgo/v2" //nolint:golint
. "github.com/onsi/gomega" //nolint:golint
)

func TestThinEntrypoint(t *testing.T) {
Expand Down
16 changes: 16 additions & 0 deletions pkg/server/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,17 @@ import (
"net"
"net/http"
"strings"
"time"

utilwait "k8s.io/apimachinery/pkg/util/wait"
)

const (
// APIReadyPollDuration specifies duration for API readiness check polling
APIReadyPollDuration = 100 * time.Millisecond
// APIReadyPollTimeout specifies timeout for API readiness check polling
APIReadyPollTimeout = 60000 * time.Millisecond

// MultusCNIAPIEndpoint is an endpoint for multus CNI request (for multus-shim)
MultusCNIAPIEndpoint = "/cni"
// MultusDelegateAPIEndpoint is an endpoint for multus delegate request (for hotplug)
Expand Down Expand Up @@ -88,3 +96,11 @@ func CreateDelegateRequest(cniCommand, cniContainerID, cniNetNS, cniIFName, podN
InterfaceAttributes: interfaceAttributes,
}
}

// WaitUntilAPIReady checks API readiness
func WaitUntilAPIReady(socketPath string) error {
return utilwait.PollImmediate(APIReadyPollDuration, APIReadyPollTimeout, func() (bool, error) {
_, err := DoCNI(GetAPIEndpoint(MultusHealthAPIEndpoint), nil, SocketPath(socketPath))
return err == nil, nil
})
}
13 changes: 12 additions & 1 deletion pkg/server/api/shim.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import (
cnitypes "github.com/containernetworking/cni/pkg/types"

"gopkg.in/k8snetworkplumbingwg/multus-cni.v4/pkg/logging"

utilwait "k8s.io/apimachinery/pkg/util/wait"
)

// ShimNetConf for the SHIM cni config file written in json
Expand Down Expand Up @@ -77,12 +79,21 @@ func postRequest(args *skel.CmdArgs) (*Response, string, error) {
return nil, "", fmt.Errorf("invalid CNI configuration passed to multus-shim: %w", err)
}

// check API readiness
if err := WaitUntilAPIReady(multusShimConfig.MultusSocketDir); err != nil {
return nil, multusShimConfig.CNIVersion, err
}

cniRequest, err := newCNIRequest(args)
if err != nil {
return nil, multusShimConfig.CNIVersion, err
}

body, err := DoCNI("http://dummy/cni", cniRequest, SocketPath(multusShimConfig.MultusSocketDir))
var body []byte
err = utilwait.PollImmediate(APIReadyPollDuration, APIReadyPollTimeout, func() (bool, error) {
body, err = DoCNI("http://dummy/cni", cniRequest, SocketPath(multusShimConfig.MultusSocketDir))
return err == nil, nil
})
if err != nil {
return nil, multusShimConfig.CNIVersion, err
}
Expand Down
2 changes: 2 additions & 0 deletions pkg/server/config/config_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

package config

// disable dot-imports only for testing
//revive:disable:dot-imports
import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
Expand Down
2 changes: 2 additions & 0 deletions pkg/server/config/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

package config

// disable dot-imports only for testing
//revive:disable:dot-imports
import (
"encoding/json"
"fmt"
Expand Down
2 changes: 2 additions & 0 deletions pkg/server/config/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

package config

// disable dot-imports only for testing
//revive:disable:dot-imports
import (
"context"
"encoding/json"
Expand Down

0 comments on commit 003fbd5

Please sign in to comment.