mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-18 12:37:05 +02:00
This extends apid to cover the time api. Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
1176 lines
37 KiB
Go
1176 lines
37 KiB
Go
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
// source: api.proto
|
|
|
|
package api
|
|
|
|
import (
|
|
context "context"
|
|
fmt "fmt"
|
|
io "io"
|
|
math "math"
|
|
sync "sync"
|
|
|
|
proto "github.com/golang/protobuf/proto"
|
|
empty "github.com/golang/protobuf/ptypes/empty"
|
|
go_multierror "github.com/hashicorp/go-multierror"
|
|
grpc "google.golang.org/grpc"
|
|
credentials "google.golang.org/grpc/credentials"
|
|
metadata "google.golang.org/grpc/metadata"
|
|
|
|
common "github.com/talos-systems/talos/api/common"
|
|
machine "github.com/talos-systems/talos/api/machine"
|
|
os "github.com/talos-systems/talos/api/os"
|
|
time "github.com/talos-systems/talos/api/time"
|
|
constants "github.com/talos-systems/talos/pkg/constants"
|
|
tls "github.com/talos-systems/talos/pkg/grpc/tls"
|
|
)
|
|
|
|
// Reference imports to suppress errors if they are not otherwise used.
|
|
var _ = proto.Marshal
|
|
var _ = fmt.Errorf
|
|
var _ = math.Inf
|
|
|
|
// This is a compile-time assertion to ensure that this generated file
|
|
// is compatible with the proto package it is being compiled against.
|
|
// A compilation error at this line likely means your copy of the
|
|
// proto package needs to be updated.
|
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
|
|
|
// ContainersRequest from public import os/os.proto
|
|
type ContainersRequest = os.ContainersRequest
|
|
|
|
// Container from public import os/os.proto
|
|
type Container = os.Container
|
|
|
|
// ContainerResponse from public import os/os.proto
|
|
type ContainerResponse = os.ContainerResponse
|
|
|
|
// ContainersReply from public import os/os.proto
|
|
type ContainersReply = os.ContainersReply
|
|
|
|
// Data from public import os/os.proto
|
|
type Data = os.Data
|
|
|
|
// DataResponse from public import os/os.proto
|
|
type DataResponse = os.DataResponse
|
|
|
|
// DataReply from public import os/os.proto
|
|
type DataReply = os.DataReply
|
|
|
|
// LogsRequest from public import os/os.proto
|
|
type LogsRequest = os.LogsRequest
|
|
|
|
// ProcessesRequest from public import os/os.proto
|
|
type ProcessesRequest = os.ProcessesRequest
|
|
|
|
// ProcessesReply from public import os/os.proto
|
|
type ProcessesReply = os.ProcessesReply
|
|
|
|
// ProcessResponse from public import os/os.proto
|
|
type ProcessResponse = os.ProcessResponse
|
|
|
|
// Process from public import os/os.proto
|
|
type Process = os.Process
|
|
|
|
// RestartRequest from public import os/os.proto
|
|
type RestartRequest = os.RestartRequest
|
|
|
|
// RestartResponse from public import os/os.proto
|
|
type RestartResponse = os.RestartResponse
|
|
|
|
// RestartReply from public import os/os.proto
|
|
type RestartReply = os.RestartReply
|
|
|
|
// StatsRequest from public import os/os.proto
|
|
type StatsRequest = os.StatsRequest
|
|
|
|
// StatsResponse from public import os/os.proto
|
|
type StatsResponse = os.StatsResponse
|
|
|
|
// StatsReply from public import os/os.proto
|
|
type StatsReply = os.StatsReply
|
|
|
|
// Stat from public import os/os.proto
|
|
type Stat = os.Stat
|
|
|
|
// ContainerDriver from public import os/os.proto
|
|
type ContainerDriver = os.ContainerDriver
|
|
|
|
var ContainerDriver_name = os.ContainerDriver_name
|
|
var ContainerDriver_value = os.ContainerDriver_value
|
|
|
|
const ContainerDriver_CONTAINERD = ContainerDriver(os.ContainerDriver_CONTAINERD)
|
|
const ContainerDriver_CRI = ContainerDriver(os.ContainerDriver_CRI)
|
|
|
|
// RebootResponse from public import machine/machine.proto
|
|
type RebootResponse = machine.RebootResponse
|
|
|
|
// RebootReply from public import machine/machine.proto
|
|
type RebootReply = machine.RebootReply
|
|
|
|
// ResetResponse from public import machine/machine.proto
|
|
type ResetResponse = machine.ResetResponse
|
|
|
|
// ResetReply from public import machine/machine.proto
|
|
type ResetReply = machine.ResetReply
|
|
|
|
// ShutdownResponse from public import machine/machine.proto
|
|
type ShutdownResponse = machine.ShutdownResponse
|
|
|
|
// ShutdownReply from public import machine/machine.proto
|
|
type ShutdownReply = machine.ShutdownReply
|
|
|
|
// UpgradeRequest from public import machine/machine.proto
|
|
type UpgradeRequest = machine.UpgradeRequest
|
|
|
|
// UpgradeResponse from public import machine/machine.proto
|
|
type UpgradeResponse = machine.UpgradeResponse
|
|
|
|
// UpgradeReply from public import machine/machine.proto
|
|
type UpgradeReply = machine.UpgradeReply
|
|
|
|
// ServiceListResponse from public import machine/machine.proto
|
|
type ServiceListResponse = machine.ServiceListResponse
|
|
|
|
// ServiceListReply from public import machine/machine.proto
|
|
type ServiceListReply = machine.ServiceListReply
|
|
|
|
// ServiceInfo from public import machine/machine.proto
|
|
type ServiceInfo = machine.ServiceInfo
|
|
|
|
// ServiceEvents from public import machine/machine.proto
|
|
type ServiceEvents = machine.ServiceEvents
|
|
|
|
// ServiceEvent from public import machine/machine.proto
|
|
type ServiceEvent = machine.ServiceEvent
|
|
|
|
// ServiceHealth from public import machine/machine.proto
|
|
type ServiceHealth = machine.ServiceHealth
|
|
|
|
// ServiceStartRequest from public import machine/machine.proto
|
|
type ServiceStartRequest = machine.ServiceStartRequest
|
|
|
|
// ServiceStartResponse from public import machine/machine.proto
|
|
type ServiceStartResponse = machine.ServiceStartResponse
|
|
|
|
// ServiceStartReply from public import machine/machine.proto
|
|
type ServiceStartReply = machine.ServiceStartReply
|
|
|
|
// ServiceStopRequest from public import machine/machine.proto
|
|
type ServiceStopRequest = machine.ServiceStopRequest
|
|
|
|
// ServiceStopResponse from public import machine/machine.proto
|
|
type ServiceStopResponse = machine.ServiceStopResponse
|
|
|
|
// ServiceStopReply from public import machine/machine.proto
|
|
type ServiceStopReply = machine.ServiceStopReply
|
|
|
|
// ServiceRestartRequest from public import machine/machine.proto
|
|
type ServiceRestartRequest = machine.ServiceRestartRequest
|
|
|
|
// ServiceRestartResponse from public import machine/machine.proto
|
|
type ServiceRestartResponse = machine.ServiceRestartResponse
|
|
|
|
// ServiceRestartReply from public import machine/machine.proto
|
|
type ServiceRestartReply = machine.ServiceRestartReply
|
|
|
|
// StartRequest from public import machine/machine.proto
|
|
type StartRequest = machine.StartRequest
|
|
|
|
// StartReply from public import machine/machine.proto
|
|
type StartReply = machine.StartReply
|
|
|
|
// StopRequest from public import machine/machine.proto
|
|
type StopRequest = machine.StopRequest
|
|
|
|
// StopReply from public import machine/machine.proto
|
|
type StopReply = machine.StopReply
|
|
|
|
// StreamingData from public import machine/machine.proto
|
|
type StreamingData = machine.StreamingData
|
|
|
|
// CopyOutRequest from public import machine/machine.proto
|
|
type CopyOutRequest = machine.CopyOutRequest
|
|
|
|
// LSRequest from public import machine/machine.proto
|
|
type LSRequest = machine.LSRequest
|
|
|
|
// FileInfo from public import machine/machine.proto
|
|
type FileInfo = machine.FileInfo
|
|
|
|
// MountsResponse from public import machine/machine.proto
|
|
type MountsResponse = machine.MountsResponse
|
|
|
|
// MountsReply from public import machine/machine.proto
|
|
type MountsReply = machine.MountsReply
|
|
|
|
// MountStat from public import machine/machine.proto
|
|
type MountStat = machine.MountStat
|
|
|
|
// VersionResponse from public import machine/machine.proto
|
|
type VersionResponse = machine.VersionResponse
|
|
|
|
// VersionReply from public import machine/machine.proto
|
|
type VersionReply = machine.VersionReply
|
|
|
|
// VersionInfo from public import machine/machine.proto
|
|
type VersionInfo = machine.VersionInfo
|
|
|
|
// TimeRequest from public import time/time.proto
|
|
type TimeRequest = time.TimeRequest
|
|
|
|
// TimeReply from public import time/time.proto
|
|
type TimeReply = time.TimeReply
|
|
|
|
// TimeResponse from public import time/time.proto
|
|
type TimeResponse = time.TimeResponse
|
|
|
|
// NodeMetadata from public import common/common.proto
|
|
type NodeMetadata = common.NodeMetadata
|
|
|
|
// Empty from public import google/protobuf/empty.proto
|
|
type Empty = empty.Empty
|
|
|
|
func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) }
|
|
|
|
var fileDescriptor_00212fb1f9d3bf1c = []byte{
|
|
// 151 bytes of a gzipped FileDescriptorProto
|
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x2c, 0xcb, 0x31, 0xce, 0xc2, 0x30,
|
|
0x0c, 0x05, 0xe0, 0xff, 0xa7, 0x08, 0x09, 0x18, 0x90, 0x40, 0x2c, 0x65, 0x43, 0xac, 0xd4, 0x03,
|
|
0x37, 0xe0, 0x04, 0x99, 0xd9, 0x92, 0x28, 0xa4, 0x96, 0xea, 0xda, 0xc2, 0xee, 0xd0, 0xdb, 0x23,
|
|
0x9a, 0x2c, 0x7e, 0x7a, 0x9f, 0xf5, 0x76, 0x5b, 0x2f, 0xd8, 0xc9, 0x87, 0x8d, 0x8f, 0x8d, 0x17,
|
|
0x6c, 0xf7, 0xac, 0xc0, 0x5a, 0xa4, 0x3d, 0x93, 0x8f, 0x3d, 0x8e, 0x09, 0x6a, 0x56, 0x3e, 0x18,
|
|
0x52, 0x82, 0xdf, 0xa9, 0x70, 0x8a, 0x4c, 0xc4, 0x23, 0x94, 0xa8, 0x78, 0xc9, 0xcc, 0x79, 0x48,
|
|
0xb0, 0xb4, 0x30, 0xbd, 0x21, 0x91, 0xd8, 0x5c, 0x9e, 0xcf, 0xdb, 0xeb, 0x9a, 0xd1, 0xfa, 0x29,
|
|
0x74, 0x91, 0x09, 0xcc, 0x0f, 0xac, 0x77, 0x9d, 0xd5, 0x12, 0x69, 0x69, 0xe0, 0x05, 0xdd, 0x9f,
|
|
0xfb, 0x77, 0x2b, 0xd7, 0xb8, 0x75, 0xd8, 0x2c, 0xb3, 0xc7, 0x37, 0x00, 0x00, 0xff, 0xff, 0xf0,
|
|
0x38, 0xc4, 0xa9, 0xaf, 0x00, 0x00, 0x00,
|
|
}
|
|
|
|
type ApiProxy struct {
|
|
Provider tls.CertificateProvider
|
|
}
|
|
|
|
func NewApiProxy(provider tls.CertificateProvider) *ApiProxy {
|
|
return &ApiProxy{
|
|
Provider: provider,
|
|
}
|
|
}
|
|
|
|
func (p *ApiProxy) UnaryInterceptor() grpc.UnaryServerInterceptor {
|
|
return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
|
md, _ := metadata.FromIncomingContext(ctx)
|
|
if _, ok := md["proxyfrom"]; ok {
|
|
return handler(ctx, req)
|
|
}
|
|
ca, err := p.Provider.GetCA()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
certs, err := p.Provider.GetCertificate(nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
tlsConfig, err := tls.New(
|
|
tls.WithClientAuthType(tls.Mutual),
|
|
tls.WithCACertPEM(ca),
|
|
tls.WithKeypair(*certs),
|
|
)
|
|
return p.Proxy(ctx, info.FullMethod, credentials.NewTLS(tlsConfig), req)
|
|
}
|
|
}
|
|
|
|
func (p *ApiProxy) Proxy(ctx context.Context, method string, creds credentials.TransportCredentials, in interface{}, opts ...grpc.CallOption) (proto.Message, error) {
|
|
var (
|
|
err error
|
|
errors *go_multierror.Error
|
|
msgs []proto.Message
|
|
ok bool
|
|
response proto.Message
|
|
targets []string
|
|
)
|
|
md, _ := metadata.FromIncomingContext(ctx)
|
|
// default to target node specified in config or on cli
|
|
if targets, ok = md["targets"]; !ok {
|
|
targets = md[":authority"]
|
|
}
|
|
proxyMd := metadata.New(make(map[string]string))
|
|
proxyMd.Set("proxyfrom", md[":authority"]...)
|
|
|
|
switch method {
|
|
case "/os.OS/Containers":
|
|
// Initialize target clients
|
|
clients, err := createOSClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &os.ContainersReply{}
|
|
msgs, err = proxyOSRunner(clients, in, proxyContainers)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*os.ContainersReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/os.OS/Dmesg":
|
|
// Initialize target clients
|
|
clients, err := createOSClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &os.DataReply{}
|
|
msgs, err = proxyOSRunner(clients, in, proxyDmesg)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*os.DataReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/os.OS/Kubeconfig":
|
|
// Initialize target clients
|
|
clients, err := createOSClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &os.DataReply{}
|
|
msgs, err = proxyOSRunner(clients, in, proxyKubeconfig)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*os.DataReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/os.OS/Processes":
|
|
// Initialize target clients
|
|
clients, err := createOSClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &os.ProcessesReply{}
|
|
msgs, err = proxyOSRunner(clients, in, proxyProcesses)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*os.ProcessesReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/os.OS/Restart":
|
|
// Initialize target clients
|
|
clients, err := createOSClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &os.RestartReply{}
|
|
msgs, err = proxyOSRunner(clients, in, proxyRestart)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*os.RestartReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/os.OS/Stats":
|
|
// Initialize target clients
|
|
clients, err := createOSClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &os.StatsReply{}
|
|
msgs, err = proxyOSRunner(clients, in, proxyStats)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*os.StatsReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/Mounts":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.MountsReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyMounts)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.MountsReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/Reboot":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.RebootReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyReboot)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.RebootReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/Reset":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.ResetReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyReset)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.ResetReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/Shutdown":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.ShutdownReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyShutdown)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.ShutdownReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/Upgrade":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.UpgradeReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyUpgrade)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.UpgradeReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/ServiceList":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.ServiceListReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyServiceList)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.ServiceListReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/ServiceStart":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.ServiceStartReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyServiceStart)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.ServiceStartReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/ServiceStop":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.ServiceStopReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyServiceStop)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.ServiceStopReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/ServiceRestart":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.ServiceRestartReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyServiceRestart)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.ServiceRestartReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/machine.Machine/Version":
|
|
// Initialize target clients
|
|
clients, err := createMachineClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &machine.VersionReply{}
|
|
msgs, err = proxyMachineRunner(clients, in, proxyVersion)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*machine.VersionReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/time.Time/Time":
|
|
// Initialize target clients
|
|
clients, err := createTimeClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &time.TimeReply{}
|
|
msgs, err = proxyTimeRunner(clients, in, proxyTime)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*time.TimeReply).Response[0])
|
|
}
|
|
response = resp
|
|
case "/time.Time/TimeCheck":
|
|
// Initialize target clients
|
|
clients, err := createTimeClient(targets, creds, proxyMd)
|
|
if err != nil {
|
|
break
|
|
}
|
|
resp := &time.TimeReply{}
|
|
msgs, err = proxyTimeRunner(clients, in, proxyTimeCheck)
|
|
for _, msg := range msgs {
|
|
resp.Response = append(resp.Response, msg.(*time.TimeReply).Response[0])
|
|
}
|
|
response = resp
|
|
|
|
}
|
|
|
|
if err != nil {
|
|
errors = go_multierror.Append(errors, err)
|
|
}
|
|
return response, errors.ErrorOrNil()
|
|
}
|
|
|
|
func copyClientServer(msg interface{}, client grpc.ClientStream, srv grpc.ServerStream) error {
|
|
for {
|
|
err := client.RecvMsg(msg)
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = srv.SendMsg(msg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
type runnerOSFn func(*proxyOSClient, interface{}, *sync.WaitGroup, chan proto.Message, chan error)
|
|
|
|
func proxyOSRunner(clients []*proxyOSClient, in interface{}, runner runnerOSFn) ([]proto.Message, error) {
|
|
var (
|
|
errors *go_multierror.Error
|
|
wg sync.WaitGroup
|
|
)
|
|
respCh := make(chan proto.Message, len(clients))
|
|
errCh := make(chan error, len(clients))
|
|
wg.Add(len(clients))
|
|
for _, client := range clients {
|
|
go runner(client, in, &wg, respCh, errCh)
|
|
}
|
|
wg.Wait()
|
|
close(respCh)
|
|
close(errCh)
|
|
|
|
var response []proto.Message
|
|
for resp := range respCh {
|
|
response = append(response, resp)
|
|
}
|
|
for err := range errCh {
|
|
errors = go_multierror.Append(errors, err)
|
|
}
|
|
return response, errors.ErrorOrNil()
|
|
}
|
|
|
|
type proxyOSClient struct {
|
|
Conn os.OSClient
|
|
Context context.Context
|
|
Target string
|
|
DialOpts []grpc.DialOption
|
|
}
|
|
|
|
func proxyContainers(client *proxyOSClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Containers(client.Context, in.(*os.ContainersRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyDmesg(client *proxyOSClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Dmesg(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyKubeconfig(client *proxyOSClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Kubeconfig(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyProcesses(client *proxyOSClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Processes(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyRestart(client *proxyOSClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Restart(client.Context, in.(*os.RestartRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyStats(client *proxyOSClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Stats(client.Context, in.(*os.StatsRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
type runnerMachineFn func(*proxyMachineClient, interface{}, *sync.WaitGroup, chan proto.Message, chan error)
|
|
|
|
func proxyMachineRunner(clients []*proxyMachineClient, in interface{}, runner runnerMachineFn) ([]proto.Message, error) {
|
|
var (
|
|
errors *go_multierror.Error
|
|
wg sync.WaitGroup
|
|
)
|
|
respCh := make(chan proto.Message, len(clients))
|
|
errCh := make(chan error, len(clients))
|
|
wg.Add(len(clients))
|
|
for _, client := range clients {
|
|
go runner(client, in, &wg, respCh, errCh)
|
|
}
|
|
wg.Wait()
|
|
close(respCh)
|
|
close(errCh)
|
|
|
|
var response []proto.Message
|
|
for resp := range respCh {
|
|
response = append(response, resp)
|
|
}
|
|
for err := range errCh {
|
|
errors = go_multierror.Append(errors, err)
|
|
}
|
|
return response, errors.ErrorOrNil()
|
|
}
|
|
|
|
type proxyMachineClient struct {
|
|
Conn machine.MachineClient
|
|
Context context.Context
|
|
Target string
|
|
DialOpts []grpc.DialOption
|
|
}
|
|
|
|
func proxyMounts(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Mounts(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyReboot(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Reboot(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyReset(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Reset(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyShutdown(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Shutdown(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyUpgrade(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Upgrade(client.Context, in.(*machine.UpgradeRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyServiceList(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.ServiceList(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyServiceStart(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.ServiceStart(client.Context, in.(*machine.ServiceStartRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyServiceStop(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.ServiceStop(client.Context, in.(*machine.ServiceStopRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyServiceRestart(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.ServiceRestart(client.Context, in.(*machine.ServiceRestartRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyVersion(client *proxyMachineClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Version(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
type runnerTimeFn func(*proxyTimeClient, interface{}, *sync.WaitGroup, chan proto.Message, chan error)
|
|
|
|
func proxyTimeRunner(clients []*proxyTimeClient, in interface{}, runner runnerTimeFn) ([]proto.Message, error) {
|
|
var (
|
|
errors *go_multierror.Error
|
|
wg sync.WaitGroup
|
|
)
|
|
respCh := make(chan proto.Message, len(clients))
|
|
errCh := make(chan error, len(clients))
|
|
wg.Add(len(clients))
|
|
for _, client := range clients {
|
|
go runner(client, in, &wg, respCh, errCh)
|
|
}
|
|
wg.Wait()
|
|
close(respCh)
|
|
close(errCh)
|
|
|
|
var response []proto.Message
|
|
for resp := range respCh {
|
|
response = append(response, resp)
|
|
}
|
|
for err := range errCh {
|
|
errors = go_multierror.Append(errors, err)
|
|
}
|
|
return response, errors.ErrorOrNil()
|
|
}
|
|
|
|
type proxyTimeClient struct {
|
|
Conn time.TimeClient
|
|
Context context.Context
|
|
Target string
|
|
DialOpts []grpc.DialOption
|
|
}
|
|
|
|
func proxyTime(client *proxyTimeClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.Time(client.Context, in.(*empty.Empty))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func proxyTimeCheck(client *proxyTimeClient, in interface{}, wg *sync.WaitGroup, respCh chan proto.Message, errCh chan error) {
|
|
defer wg.Done()
|
|
resp, err := client.Conn.TimeCheck(client.Context, in.(*time.TimeRequest))
|
|
if err != nil {
|
|
errCh <- err
|
|
return
|
|
}
|
|
resp.Response[0].Metadata = &NodeMetadata{Hostname: client.Target}
|
|
respCh <- resp
|
|
}
|
|
|
|
func createOSClient(targets []string, creds credentials.TransportCredentials, proxyMd metadata.MD) ([]*proxyOSClient, error) {
|
|
var errors *go_multierror.Error
|
|
clients := make([]*proxyOSClient, 0, len(targets))
|
|
for _, target := range targets {
|
|
c := &proxyOSClient{
|
|
// TODO change the context to be more useful ( ex cancelable )
|
|
Context: metadata.NewOutgoingContext(context.Background(), proxyMd),
|
|
Target: target,
|
|
}
|
|
// TODO: i think we potentially leak a client here,
|
|
// we should close the request // cancel the context if it errors
|
|
// Explicitly set OSD port
|
|
conn, err := grpc.Dial(fmt.Sprintf("%s:%d", target, 50000), grpc.WithTransportCredentials(creds))
|
|
if err != nil {
|
|
// TODO: probably worth wrapping err to add some context about the target
|
|
errors = go_multierror.Append(errors, err)
|
|
continue
|
|
}
|
|
c.Conn = os.NewOSClient(conn)
|
|
clients = append(clients, c)
|
|
}
|
|
return clients, errors.ErrorOrNil()
|
|
}
|
|
|
|
func createMachineClient(targets []string, creds credentials.TransportCredentials, proxyMd metadata.MD) ([]*proxyMachineClient, error) {
|
|
var errors *go_multierror.Error
|
|
clients := make([]*proxyMachineClient, 0, len(targets))
|
|
for _, target := range targets {
|
|
c := &proxyMachineClient{
|
|
// TODO change the context to be more useful ( ex cancelable )
|
|
Context: metadata.NewOutgoingContext(context.Background(), proxyMd),
|
|
Target: target,
|
|
}
|
|
// TODO: i think we potentially leak a client here,
|
|
// we should close the request // cancel the context if it errors
|
|
// Explicitly set OSD port
|
|
conn, err := grpc.Dial(fmt.Sprintf("%s:%d", target, 50000), grpc.WithTransportCredentials(creds))
|
|
if err != nil {
|
|
// TODO: probably worth wrapping err to add some context about the target
|
|
errors = go_multierror.Append(errors, err)
|
|
continue
|
|
}
|
|
c.Conn = machine.NewMachineClient(conn)
|
|
clients = append(clients, c)
|
|
}
|
|
return clients, errors.ErrorOrNil()
|
|
}
|
|
|
|
func createTimeClient(targets []string, creds credentials.TransportCredentials, proxyMd metadata.MD) ([]*proxyTimeClient, error) {
|
|
var errors *go_multierror.Error
|
|
clients := make([]*proxyTimeClient, 0, len(targets))
|
|
for _, target := range targets {
|
|
c := &proxyTimeClient{
|
|
// TODO change the context to be more useful ( ex cancelable )
|
|
Context: metadata.NewOutgoingContext(context.Background(), proxyMd),
|
|
Target: target,
|
|
}
|
|
// TODO: i think we potentially leak a client here,
|
|
// we should close the request // cancel the context if it errors
|
|
// Explicitly set OSD port
|
|
conn, err := grpc.Dial(fmt.Sprintf("%s:%d", target, 50000), grpc.WithTransportCredentials(creds))
|
|
if err != nil {
|
|
// TODO: probably worth wrapping err to add some context about the target
|
|
errors = go_multierror.Append(errors, err)
|
|
continue
|
|
}
|
|
c.Conn = time.NewTimeClient(conn)
|
|
clients = append(clients, c)
|
|
}
|
|
return clients, errors.ErrorOrNil()
|
|
}
|
|
|
|
type Registrator struct {
|
|
os.OSClient
|
|
machine.MachineClient
|
|
time.TimeClient
|
|
}
|
|
|
|
func (r *Registrator) Register(s *grpc.Server) {
|
|
os.RegisterOSServer(s, r)
|
|
machine.RegisterMachineServer(s, r)
|
|
time.RegisterTimeServer(s, r)
|
|
}
|
|
|
|
func (r *Registrator) Containers(ctx context.Context, in *os.ContainersRequest) (*os.ContainersReply, error) {
|
|
return r.OSClient.Containers(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Dmesg(ctx context.Context, in *empty.Empty) (*os.DataReply, error) {
|
|
return r.OSClient.Dmesg(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Kubeconfig(ctx context.Context, in *empty.Empty) (*os.DataReply, error) {
|
|
return r.OSClient.Kubeconfig(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Logs(in *os.LogsRequest, srv os.OS_LogsServer) error {
|
|
client, err := r.OSClient.Logs(srv.Context(), in)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var msg os.Data
|
|
return copyClientServer(&msg, client, srv)
|
|
}
|
|
|
|
func (r *Registrator) Processes(ctx context.Context, in *empty.Empty) (*os.ProcessesReply, error) {
|
|
return r.OSClient.Processes(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Restart(ctx context.Context, in *os.RestartRequest) (*os.RestartReply, error) {
|
|
return r.OSClient.Restart(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Stats(ctx context.Context, in *os.StatsRequest) (*os.StatsReply, error) {
|
|
return r.OSClient.Stats(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) CopyOut(in *machine.CopyOutRequest, srv machine.Machine_CopyOutServer) error {
|
|
client, err := r.MachineClient.CopyOut(srv.Context(), in)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var msg machine.StreamingData
|
|
return copyClientServer(&msg, client, srv)
|
|
}
|
|
|
|
func (r *Registrator) Mounts(ctx context.Context, in *empty.Empty) (*machine.MountsReply, error) {
|
|
return r.MachineClient.Mounts(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) LS(in *machine.LSRequest, srv machine.Machine_LSServer) error {
|
|
client, err := r.MachineClient.LS(srv.Context(), in)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var msg machine.FileInfo
|
|
return copyClientServer(&msg, client, srv)
|
|
}
|
|
|
|
func (r *Registrator) Reboot(ctx context.Context, in *empty.Empty) (*machine.RebootReply, error) {
|
|
return r.MachineClient.Reboot(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Reset(ctx context.Context, in *empty.Empty) (*machine.ResetReply, error) {
|
|
return r.MachineClient.Reset(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Shutdown(ctx context.Context, in *empty.Empty) (*machine.ShutdownReply, error) {
|
|
return r.MachineClient.Shutdown(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Upgrade(ctx context.Context, in *machine.UpgradeRequest) (*machine.UpgradeReply, error) {
|
|
return r.MachineClient.Upgrade(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) ServiceList(ctx context.Context, in *empty.Empty) (*machine.ServiceListReply, error) {
|
|
return r.MachineClient.ServiceList(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) ServiceStart(ctx context.Context, in *machine.ServiceStartRequest) (*machine.ServiceStartReply, error) {
|
|
return r.MachineClient.ServiceStart(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) ServiceStop(ctx context.Context, in *machine.ServiceStopRequest) (*machine.ServiceStopReply, error) {
|
|
return r.MachineClient.ServiceStop(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) ServiceRestart(ctx context.Context, in *machine.ServiceRestartRequest) (*machine.ServiceRestartReply, error) {
|
|
return r.MachineClient.ServiceRestart(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Start(ctx context.Context, in *machine.StartRequest) (*machine.StartReply, error) {
|
|
return r.MachineClient.Start(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Stop(ctx context.Context, in *machine.StopRequest) (*machine.StopReply, error) {
|
|
return r.MachineClient.Stop(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Version(ctx context.Context, in *empty.Empty) (*machine.VersionReply, error) {
|
|
return r.MachineClient.Version(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) Time(ctx context.Context, in *empty.Empty) (*time.TimeReply, error) {
|
|
return r.TimeClient.Time(ctx, in)
|
|
}
|
|
|
|
func (r *Registrator) TimeCheck(ctx context.Context, in *time.TimeRequest) (*time.TimeReply, error) {
|
|
return r.TimeClient.TimeCheck(ctx, in)
|
|
}
|
|
|
|
type LocalOSClient struct {
|
|
os.OSClient
|
|
}
|
|
|
|
func NewLocalOSClient() (os.OSClient, error) {
|
|
conn, err := grpc.Dial("unix:"+constants.OSSocketPath,
|
|
grpc.WithInsecure(),
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &LocalOSClient{
|
|
OSClient: os.NewOSClient(conn),
|
|
}, nil
|
|
}
|
|
|
|
func (c *LocalOSClient) Containers(ctx context.Context, in *os.ContainersRequest, opts ...grpc.CallOption) (*os.ContainersReply, error) {
|
|
return c.OSClient.Containers(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalOSClient) Dmesg(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*os.DataReply, error) {
|
|
return c.OSClient.Dmesg(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalOSClient) Kubeconfig(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*os.DataReply, error) {
|
|
return c.OSClient.Kubeconfig(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalOSClient) Logs(ctx context.Context, in *os.LogsRequest, opts ...grpc.CallOption) (os.OS_LogsClient, error) {
|
|
return c.OSClient.Logs(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalOSClient) Processes(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*os.ProcessesReply, error) {
|
|
return c.OSClient.Processes(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalOSClient) Restart(ctx context.Context, in *os.RestartRequest, opts ...grpc.CallOption) (*os.RestartReply, error) {
|
|
return c.OSClient.Restart(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalOSClient) Stats(ctx context.Context, in *os.StatsRequest, opts ...grpc.CallOption) (*os.StatsReply, error) {
|
|
return c.OSClient.Stats(ctx, in, opts...)
|
|
}
|
|
|
|
type LocalMachineClient struct {
|
|
machine.MachineClient
|
|
}
|
|
|
|
func NewLocalMachineClient() (machine.MachineClient, error) {
|
|
conn, err := grpc.Dial("unix:"+constants.MachineSocketPath,
|
|
grpc.WithInsecure(),
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &LocalMachineClient{
|
|
MachineClient: machine.NewMachineClient(conn),
|
|
}, nil
|
|
}
|
|
|
|
func (c *LocalMachineClient) CopyOut(ctx context.Context, in *machine.CopyOutRequest, opts ...grpc.CallOption) (machine.Machine_CopyOutClient, error) {
|
|
return c.MachineClient.CopyOut(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Mounts(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*machine.MountsReply, error) {
|
|
return c.MachineClient.Mounts(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) LS(ctx context.Context, in *machine.LSRequest, opts ...grpc.CallOption) (machine.Machine_LSClient, error) {
|
|
return c.MachineClient.LS(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Reboot(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*machine.RebootReply, error) {
|
|
return c.MachineClient.Reboot(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Reset(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*machine.ResetReply, error) {
|
|
return c.MachineClient.Reset(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Shutdown(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*machine.ShutdownReply, error) {
|
|
return c.MachineClient.Shutdown(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Upgrade(ctx context.Context, in *machine.UpgradeRequest, opts ...grpc.CallOption) (*machine.UpgradeReply, error) {
|
|
return c.MachineClient.Upgrade(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) ServiceList(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*machine.ServiceListReply, error) {
|
|
return c.MachineClient.ServiceList(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) ServiceStart(ctx context.Context, in *machine.ServiceStartRequest, opts ...grpc.CallOption) (*machine.ServiceStartReply, error) {
|
|
return c.MachineClient.ServiceStart(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) ServiceStop(ctx context.Context, in *machine.ServiceStopRequest, opts ...grpc.CallOption) (*machine.ServiceStopReply, error) {
|
|
return c.MachineClient.ServiceStop(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) ServiceRestart(ctx context.Context, in *machine.ServiceRestartRequest, opts ...grpc.CallOption) (*machine.ServiceRestartReply, error) {
|
|
return c.MachineClient.ServiceRestart(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Start(ctx context.Context, in *machine.StartRequest, opts ...grpc.CallOption) (*machine.StartReply, error) {
|
|
return c.MachineClient.Start(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Stop(ctx context.Context, in *machine.StopRequest, opts ...grpc.CallOption) (*machine.StopReply, error) {
|
|
return c.MachineClient.Stop(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalMachineClient) Version(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*machine.VersionReply, error) {
|
|
return c.MachineClient.Version(ctx, in, opts...)
|
|
}
|
|
|
|
type LocalTimeClient struct {
|
|
time.TimeClient
|
|
}
|
|
|
|
func NewLocalTimeClient() (time.TimeClient, error) {
|
|
conn, err := grpc.Dial("unix:"+constants.TimeSocketPath,
|
|
grpc.WithInsecure(),
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &LocalTimeClient{
|
|
TimeClient: time.NewTimeClient(conn),
|
|
}, nil
|
|
}
|
|
|
|
func (c *LocalTimeClient) Time(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*time.TimeReply, error) {
|
|
return c.TimeClient.Time(ctx, in, opts...)
|
|
}
|
|
|
|
func (c *LocalTimeClient) TimeCheck(ctx context.Context, in *time.TimeRequest, opts ...grpc.CallOption) (*time.TimeReply, error) {
|
|
return c.TimeClient.TimeCheck(ctx, in, opts...)
|
|
}
|