-
Notifications
You must be signed in to change notification settings - Fork 507
/
version_check.go
35 lines (31 loc) · 1.32 KB
/
version_check.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
package util
import (
"context"
"fmt"
empty "google.golang.org/protobuf/types/known/emptypb"
"github.com/telepresenceio/telepresence/rpc/v2/connector"
"github.com/telepresenceio/telepresence/v2/pkg/client/errcat"
"github.com/telepresenceio/telepresence/v2/pkg/version"
)
func versionCheck(ctx context.Context, daemonBinary string, userD connector.ConnectorClient) error {
// Ensure that the already running daemons have the correct version
vu, err := userD.Version(ctx, &empty.Empty{})
if err != nil {
return fmt.Errorf("unable to retrieve version of User Daemon: %w", err)
}
if version.Version != vu.Version {
// OSS Version mismatch. We never allow this
return errcat.User.Newf("version mismatch. Client %s != User Daemon %s, please run 'telepresence quit -s' and reconnect",
version.Version, vu.Version)
}
if daemonBinary != "" && vu.Executable != daemonBinary {
return errcat.User.Newf("executable mismatch. Connector using %s, configured to use %s, please run 'telepresence quit -s' and reconnect",
vu.Executable, daemonBinary)
}
vr, err := userD.RootDaemonVersion(ctx, &empty.Empty{})
if err == nil && version.Version != vr.Version {
return errcat.User.Newf("version mismatch. Client %s != Root Daemon %s, please run 'telepresence quit -s' and reconnect",
version.Version, vr.Version)
}
return nil
}