aboutsummaryrefslogtreecommitdiffstats
path: root/library/go/yandex/tvm/client.go
diff options
context:
space:
mode:
authorqrort <qrort@yandex-team.com>2022-11-30 23:47:12 +0300
committerqrort <qrort@yandex-team.com>2022-11-30 23:47:12 +0300
commit22f8ae0e3f5d68b92aecccdf96c1d841a0334311 (patch)
treebffa27765faf54126ad44bcafa89fadecb7a73d7 /library/go/yandex/tvm/client.go
parent332b99e2173f0425444abb759eebcb2fafaa9209 (diff)
downloadydb-22f8ae0e3f5d68b92aecccdf96c1d841a0334311.tar.gz
validate canons without yatest_common
Diffstat (limited to 'library/go/yandex/tvm/client.go')
-rw-r--r--library/go/yandex/tvm/client.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/library/go/yandex/tvm/client.go b/library/go/yandex/tvm/client.go
new file mode 100644
index 0000000000..2a969fb1c6
--- /dev/null
+++ b/library/go/yandex/tvm/client.go
@@ -0,0 +1,56 @@
+package tvm
+
+//go:generate ya tool mockgen -source=$GOFILE -destination=mocks/tvm.gen.go Client
+
+import (
+ "context"
+ "fmt"
+)
+
+type ClientStatus int
+
+// This constants must be in sync with EStatus from library/cpp/tvmauth/client/client_status.h
+const (
+ ClientOK ClientStatus = iota
+ ClientWarning
+ ClientError
+)
+
+func (s ClientStatus) String() string {
+ switch s {
+ case ClientOK:
+ return "OK"
+ case ClientWarning:
+ return "Warning"
+ case ClientError:
+ return "Error"
+ default:
+ return fmt.Sprintf("Unknown%d", s)
+ }
+}
+
+type ClientStatusInfo struct {
+ Status ClientStatus
+
+ // This message allows to trigger alert with useful message
+ // It returns "OK" if Status==Ok
+ LastError string
+}
+
+// Client allows to use aliases for ClientID.
+//
+// Alias is local label for ClientID which can be used to avoid this number in every checking case in code.
+type Client interface {
+ GetServiceTicketForAlias(ctx context.Context, alias string) (string, error)
+ GetServiceTicketForID(ctx context.Context, dstID ClientID) (string, error)
+
+ // CheckServiceTicket returns struct with SrcID: you should check it by yourself with ACL
+ CheckServiceTicket(ctx context.Context, ticket string) (*CheckedServiceTicket, error)
+ CheckUserTicket(ctx context.Context, ticket string, opts ...CheckUserTicketOption) (*CheckedUserTicket, error)
+ GetRoles(ctx context.Context) (*Roles, error)
+
+ // GetStatus returns current status of client:
+ // * you should trigger your monitoring if status is not Ok
+ // * it will be unable to operate if status is Invalid
+ GetStatus(ctx context.Context) (ClientStatusInfo, error)
+}