Documentation
¶
Index ¶
- Constants
- func IsNotFound(err error) bool
- type AdminService
- func (s *AdminService) AddRegistry(ctx context.Context, req *generated.AddRegistryRequest) (*generated.AddRegistryResponse, error)
- func (s *AdminService) AdminBootstrap(ctx context.Context, _ *generated.AdminBootstrapRequest) (*generated.AdminBootstrapResponse, error)
- func (s *AdminService) BootstrapAuth(ctx context.Context, req *generated.BootstrapAuthRequest) (*generated.BootstrapAuthResponse, error)
- func (s *AdminService) GetRegistry(ctx context.Context, req *generated.GetRegistryRequest) (*generated.GetRegistryResponse, error)
- func (s *AdminService) ListRegistries(ctx context.Context, _ *generated.ListRegistriesRequest) (*generated.ListRegistriesResponse, error)
- func (s *AdminService) PolicyAttachToSubject(ctx context.Context, req *generated.PolicyAttachToSubjectRequest) (*generated.PolicyAttachToSubjectResponse, error)
- func (s *AdminService) PolicyCreate(ctx context.Context, req *generated.PolicyCreateRequest) (*generated.PolicyCreateResponse, error)
- func (s *AdminService) PolicyDelete(ctx context.Context, req *generated.PolicyDeleteRequest) (*generated.PolicyDeleteResponse, error)
- func (s *AdminService) PolicyDetachFromSubject(ctx context.Context, req *generated.PolicyDetachFromSubjectRequest) (*generated.PolicyDetachFromSubjectResponse, error)
- func (s *AdminService) PolicyGet(ctx context.Context, req *generated.PolicyGetRequest) (*generated.PolicyGetResponse, error)
- func (s *AdminService) PolicyList(ctx context.Context, _ *generated.PolicyListRequest) (*generated.PolicyListResponse, error)
- func (s *AdminService) PolicyUpdate(ctx context.Context, req *generated.PolicyUpdateRequest) (*generated.PolicyUpdateResponse, error)
- func (s *AdminService) RegistriesStatus(ctx context.Context, _ *generated.RegistriesStatusRequest) (*generated.RegistriesStatusResponse, error)
- func (s *AdminService) RemoveRegistry(ctx context.Context, req *generated.RemoveRegistryRequest) (*generated.RemoveRegistryResponse, error)
- func (s *AdminService) TestRegistry(ctx context.Context, req *generated.TestRegistryRequest) (*generated.TestRegistryResponse, error)
- func (s *AdminService) TokenList(ctx context.Context, _ *generated.TokenListRequest) (*generated.TokenListResponse, error)
- func (s *AdminService) UpdateRegistry(ctx context.Context, req *generated.UpdateRegistryRequest) (*generated.UpdateRegistryResponse, error)
- func (s *AdminService) UserCreate(ctx context.Context, req *generated.UserCreateRequest) (*generated.UserCreateResponse, error)
- func (s *AdminService) UserList(ctx context.Context, _ *generated.UserListRequest) (*generated.UserListResponse, error)
- type AuthService
- func (s *AuthService) CreateToken(ctx context.Context, req *generated.CreateTokenRequest) (*generated.CreateTokenResponse, error)
- func (s *AuthService) RevokeToken(ctx context.Context, req *generated.RevokeTokenRequest) (*generated.RevokeTokenResponse, error)
- func (s *AuthService) WhoAmI(ctx context.Context, _ *generated.WhoAmIRequest) (*generated.WhoAmIResponse, error)
- type ConfigmapService
- func (s *ConfigmapService) CreateConfigmap(ctx context.Context, req *generated.CreateConfigmapRequest) (*generated.ConfigmapResponse, error)
- func (s *ConfigmapService) DeleteConfigmap(ctx context.Context, req *generated.DeleteConfigmapRequest) (*generated.Status, error)
- func (s *ConfigmapService) GetConfigmap(ctx context.Context, req *generated.GetConfigmapRequest) (*generated.ConfigmapResponse, error)
- func (s *ConfigmapService) ListConfigmaps(ctx context.Context, req *generated.ListConfigmapsRequest) (*generated.ListConfigmapsResponse, error)
- func (s *ConfigmapService) UpdateConfigmap(ctx context.Context, req *generated.UpdateConfigmapRequest) (*generated.ConfigmapResponse, error)
- type ExecService
- type HealthService
- type InstanceService
- func (s *InstanceService) GetInstance(ctx context.Context, req *generated.GetInstanceRequest) (*generated.InstanceResponse, error)
- func (s *InstanceService) ListInstances(ctx context.Context, req *generated.ListInstancesRequest) (*generated.ListInstancesResponse, error)
- func (s *InstanceService) ProtoInstanceToInstanceModel(protoInstance *generated.Instance) (*types.Instance, error)
- func (s *InstanceService) RestartInstance(ctx context.Context, req *generated.InstanceActionRequest) (*generated.InstanceResponse, error)
- func (s *InstanceService) StartInstance(ctx context.Context, req *generated.InstanceActionRequest) (*generated.InstanceResponse, error)
- func (s *InstanceService) StopInstance(ctx context.Context, req *generated.InstanceActionRequest) (*generated.InstanceResponse, error)
- type LogService
- type MockExecServiceStream
- type NamespaceService
- func (s *NamespaceService) CreateNamespace(ctx context.Context, req *generated.CreateNamespaceRequest) (*generated.CreateNamespaceResponse, error)
- func (s *NamespaceService) DeleteNamespace(ctx context.Context, req *generated.DeleteNamespaceRequest) (*generated.DeleteNamespaceResponse, error)
- func (s *NamespaceService) GetNamespace(ctx context.Context, req *generated.GetNamespaceRequest) (*generated.GetNamespaceResponse, error)
- func (s *NamespaceService) ListNamespaces(ctx context.Context, req *generated.ListNamespacesRequest) (*generated.ListNamespacesResponse, error)
- func (s *NamespaceService) WatchNamespaces(req *generated.WatchNamespacesRequest, ...) error
- type ResourceTarget
- type SecretService
- func (s *SecretService) CreateSecret(ctx context.Context, req *generated.CreateSecretRequest) (*generated.SecretResponse, error)
- func (s *SecretService) DeleteSecret(ctx context.Context, req *generated.DeleteSecretRequest) (*generated.Status, error)
- func (s *SecretService) GetSecret(ctx context.Context, req *generated.GetSecretRequest) (*generated.SecretResponse, error)
- func (s *SecretService) ListSecrets(ctx context.Context, req *generated.ListSecretsRequest) (*generated.ListSecretsResponse, error)
- func (s *SecretService) UpdateSecret(ctx context.Context, req *generated.UpdateSecretRequest) (*generated.SecretResponse, error)
- type ServiceService
- func (s *ServiceService) CreateService(ctx context.Context, req *generated.CreateServiceRequest) (*generated.ServiceResponse, error)
- func (s *ServiceService) DeleteService(ctx context.Context, req *generated.DeleteServiceRequest) (*generated.DeleteServiceResponse, error)
- func (s *ServiceService) GetDeletionStatus(ctx context.Context, req *generated.GetDeletionStatusRequest) (*generated.GetDeletionStatusResponse, error)
- func (s *ServiceService) GetService(ctx context.Context, req *generated.GetServiceRequest) (*generated.ServiceResponse, error)
- func (s *ServiceService) ListDeletionOperations(ctx context.Context, req *generated.ListDeletionOperationsRequest) (*generated.ListDeletionOperationsResponse, error)
- func (s *ServiceService) ListServices(ctx context.Context, req *generated.ListServicesRequest) (*generated.ListServicesResponse, error)
- func (s *ServiceService) ScaleService(ctx context.Context, req *generated.ScaleServiceRequest) (*generated.ServiceResponse, error)
- func (s *ServiceService) UpdateService(ctx context.Context, req *generated.UpdateServiceRequest) (*generated.ServiceResponse, error)
- func (s *ServiceService) WatchScaling(req *generated.WatchScalingRequest, ...) error
- func (s *ServiceService) WatchServices(req *generated.WatchServicesRequest, ...) error
Constants ¶
const (
// DefaultNamespace is the default namespace for services.
DefaultNamespace = "default"
)
Variables ¶
This section is empty.
Functions ¶
func IsNotFound ¶
IsNotFound returns true if the error is a "not found" error.
Types ¶
type AdminService ¶
type AdminService struct {
generated.UnimplementedAdminServiceServer
// contains filtered or unexported fields
}
AdminService implements generated.AdminServiceServer
func NewAdminService ¶
func NewAdminService(st store.Store, logger log.Logger) *AdminService
func (*AdminService) AddRegistry ¶
func (s *AdminService) AddRegistry(ctx context.Context, req *generated.AddRegistryRequest) (*generated.AddRegistryResponse, error)
func (*AdminService) AdminBootstrap ¶
func (s *AdminService) AdminBootstrap(ctx context.Context, _ *generated.AdminBootstrapRequest) (*generated.AdminBootstrapResponse, error)
AdminBootstrap creates the built-in root subject and returns a management token (opaque secret once)
func (*AdminService) BootstrapAuth ¶
func (s *AdminService) BootstrapAuth(ctx context.Context, req *generated.BootstrapAuthRequest) (*generated.BootstrapAuthResponse, error)
func (*AdminService) GetRegistry ¶
func (s *AdminService) GetRegistry(ctx context.Context, req *generated.GetRegistryRequest) (*generated.GetRegistryResponse, error)
func (*AdminService) ListRegistries ¶
func (s *AdminService) ListRegistries(ctx context.Context, _ *generated.ListRegistriesRequest) (*generated.ListRegistriesResponse, error)
Registry admin RPCs
func (*AdminService) PolicyAttachToSubject ¶
func (s *AdminService) PolicyAttachToSubject(ctx context.Context, req *generated.PolicyAttachToSubjectRequest) (*generated.PolicyAttachToSubjectResponse, error)
PolicyAttachToSubject attaches a policy to a user subject (MVP: users only)
func (*AdminService) PolicyCreate ¶
func (s *AdminService) PolicyCreate(ctx context.Context, req *generated.PolicyCreateRequest) (*generated.PolicyCreateResponse, error)
PolicyCreate creates or updates a policy
func (*AdminService) PolicyDelete ¶
func (s *AdminService) PolicyDelete(ctx context.Context, req *generated.PolicyDeleteRequest) (*generated.PolicyDeleteResponse, error)
PolicyDelete deletes a policy
func (*AdminService) PolicyDetachFromSubject ¶
func (s *AdminService) PolicyDetachFromSubject(ctx context.Context, req *generated.PolicyDetachFromSubjectRequest) (*generated.PolicyDetachFromSubjectResponse, error)
PolicyDetachFromSubject detaches a policy from a user subject (MVP: users only)
func (*AdminService) PolicyGet ¶
func (s *AdminService) PolicyGet(ctx context.Context, req *generated.PolicyGetRequest) (*generated.PolicyGetResponse, error)
PolicyGet fetches a policy
func (*AdminService) PolicyList ¶
func (s *AdminService) PolicyList(ctx context.Context, _ *generated.PolicyListRequest) (*generated.PolicyListResponse, error)
PolicyList lists policies
func (*AdminService) PolicyUpdate ¶
func (s *AdminService) PolicyUpdate(ctx context.Context, req *generated.PolicyUpdateRequest) (*generated.PolicyUpdateResponse, error)
PolicyUpdate updates a policy
func (*AdminService) RegistriesStatus ¶
func (s *AdminService) RegistriesStatus(ctx context.Context, _ *generated.RegistriesStatusRequest) (*generated.RegistriesStatusResponse, error)
func (*AdminService) RemoveRegistry ¶
func (s *AdminService) RemoveRegistry(ctx context.Context, req *generated.RemoveRegistryRequest) (*generated.RemoveRegistryResponse, error)
func (*AdminService) TestRegistry ¶
func (s *AdminService) TestRegistry(ctx context.Context, req *generated.TestRegistryRequest) (*generated.TestRegistryResponse, error)
func (*AdminService) TokenList ¶
func (s *AdminService) TokenList(ctx context.Context, _ *generated.TokenListRequest) (*generated.TokenListResponse, error)
TokenList lists tokens (admin-only). Does not return secrets.
func (*AdminService) UpdateRegistry ¶
func (s *AdminService) UpdateRegistry(ctx context.Context, req *generated.UpdateRegistryRequest) (*generated.UpdateRegistryResponse, error)
func (*AdminService) UserCreate ¶
func (s *AdminService) UserCreate(ctx context.Context, req *generated.UserCreateRequest) (*generated.UserCreateResponse, error)
UserCreate upserts a user and attaches policies (MVP)
func (*AdminService) UserList ¶
func (s *AdminService) UserList(ctx context.Context, _ *generated.UserListRequest) (*generated.UserListResponse, error)
UserList lists users (subjects)
type AuthService ¶
type AuthService struct {
generated.UnimplementedAuthServiceServer
// contains filtered or unexported fields
}
AuthService implements generated.AuthServiceServer
func NewAuthService ¶
func NewAuthService(st store.Store, logger log.Logger) *AuthService
func (*AuthService) CreateToken ¶
func (s *AuthService) CreateToken(ctx context.Context, req *generated.CreateTokenRequest) (*generated.CreateTokenResponse, error)
func (*AuthService) RevokeToken ¶
func (s *AuthService) RevokeToken(ctx context.Context, req *generated.RevokeTokenRequest) (*generated.RevokeTokenResponse, error)
func (*AuthService) WhoAmI ¶
func (s *AuthService) WhoAmI(ctx context.Context, _ *generated.WhoAmIRequest) (*generated.WhoAmIResponse, error)
AuthService implementation
type ConfigmapService ¶
type ConfigmapService struct {
generated.UnimplementedConfigmapServiceServer
// contains filtered or unexported fields
}
func NewConfigmapService ¶
func NewConfigmapService(st store.Store, logger log.Logger) *ConfigmapService
func (*ConfigmapService) CreateConfigmap ¶
func (s *ConfigmapService) CreateConfigmap(ctx context.Context, req *generated.CreateConfigmapRequest) (*generated.ConfigmapResponse, error)
func (*ConfigmapService) DeleteConfigmap ¶
func (s *ConfigmapService) DeleteConfigmap(ctx context.Context, req *generated.DeleteConfigmapRequest) (*generated.Status, error)
func (*ConfigmapService) GetConfigmap ¶
func (s *ConfigmapService) GetConfigmap(ctx context.Context, req *generated.GetConfigmapRequest) (*generated.ConfigmapResponse, error)
func (*ConfigmapService) ListConfigmaps ¶
func (s *ConfigmapService) ListConfigmaps(ctx context.Context, req *generated.ListConfigmapsRequest) (*generated.ListConfigmapsResponse, error)
func (*ConfigmapService) UpdateConfigmap ¶
func (s *ConfigmapService) UpdateConfigmap(ctx context.Context, req *generated.UpdateConfigmapRequest) (*generated.ConfigmapResponse, error)
type ExecService ¶
type ExecService struct {
generated.UnimplementedExecServiceServer
// contains filtered or unexported fields
}
ExecService implements the gRPC ExecService.
func NewExecService ¶
func NewExecService(logger log.Logger, orchestrator orchestrator.Orchestrator) *ExecService
NewExecService creates a new ExecService with the given runners, store, and logger.
func (*ExecService) StreamExec ¶
func (s *ExecService) StreamExec(stream generated.ExecService_StreamExecServer) error
StreamExec provides bidirectional streaming for exec operations.
type HealthService ¶
type HealthService struct {
generated.UnimplementedHealthServiceServer
// contains filtered or unexported fields
}
HealthService implements the gRPC HealthService.
func NewHealthService ¶
func NewHealthService(store store.Store, logger log.Logger) *HealthService
NewHealthService creates a new HealthService with the given store and logger.
func (*HealthService) DetectAndSetCapacity ¶
func (s *HealthService) DetectAndSetCapacity()
DetectAndSetCapacity runs capacity detection and caches the result in the service.
func (*HealthService) GetHealth ¶
func (s *HealthService) GetHealth(ctx context.Context, req *generated.GetHealthRequest) (*generated.GetHealthResponse, error)
GetHealth retrieves health status of platform components.
func (*HealthService) SetCapacity ¶
func (s *HealthService) SetCapacity(cpuCores float64, memBytes int64)
SetCapacity allows the API server to inject cached node capacity for reporting.
type InstanceService ¶
type InstanceService struct {
generated.UnimplementedInstanceServiceServer
// contains filtered or unexported fields
}
InstanceService implements the gRPC InstanceService.
func NewInstanceService ¶
func NewInstanceService(store store.Store, runnerManager manager.IRunnerManager, logger log.Logger) *InstanceService
NewInstanceService creates a new InstanceService with the given store, runners, and logger.
func (*InstanceService) GetInstance ¶
func (s *InstanceService) GetInstance(ctx context.Context, req *generated.GetInstanceRequest) (*generated.InstanceResponse, error)
GetInstance retrieves an instance by ID.
func (*InstanceService) ListInstances ¶
func (s *InstanceService) ListInstances(ctx context.Context, req *generated.ListInstancesRequest) (*generated.ListInstancesResponse, error)
ListInstances lists instances with optional filtering.
func (*InstanceService) ProtoInstanceToInstanceModel ¶
func (s *InstanceService) ProtoInstanceToInstanceModel(protoInstance *generated.Instance) (*types.Instance, error)
ProtoInstanceToInstanceModel converts a protobuf message to a domain model instance.
func (*InstanceService) RestartInstance ¶
func (s *InstanceService) RestartInstance(ctx context.Context, req *generated.InstanceActionRequest) (*generated.InstanceResponse, error)
RestartInstance restarts an instance.
func (*InstanceService) StartInstance ¶
func (s *InstanceService) StartInstance(ctx context.Context, req *generated.InstanceActionRequest) (*generated.InstanceResponse, error)
StartInstance starts an instance.
func (*InstanceService) StopInstance ¶
func (s *InstanceService) StopInstance(ctx context.Context, req *generated.InstanceActionRequest) (*generated.InstanceResponse, error)
StopInstance stops an instance.
type LogService ¶
type LogService struct {
generated.UnimplementedLogServiceServer
// contains filtered or unexported fields
}
LogService implements the gRPC LogService.
func NewLogService ¶
func NewLogService(store store.Store, logger log.Logger, orchestrator orchestrator.Orchestrator) *LogService
NewLogService creates a new LogService with the given runners, store, and logger.
func (*LogService) StreamLogs ¶
func (s *LogService) StreamLogs(stream generated.LogService_StreamLogsServer) error
StreamLogs provides bidirectional streaming for logs.
type MockExecServiceStream ¶
type MockExecServiceStream struct {
mock.Mock
grpc.ServerStream
// contains filtered or unexported fields
}
MockExecServiceStream is a mock implementation of the generated.ExecService_StreamExecServer interface
func NewMockExecServiceStream ¶
func NewMockExecServiceStream(ctx context.Context) *MockExecServiceStream
NewMockExecServiceStream creates a new MockExecServiceStream with the given context
func (*MockExecServiceStream) Context ¶
func (m *MockExecServiceStream) Context() context.Context
Context returns the context
func (*MockExecServiceStream) Recv ¶
func (m *MockExecServiceStream) Recv() (*generated.ExecRequest, error)
Recv mocks the Recv method
func (*MockExecServiceStream) Send ¶
func (m *MockExecServiceStream) Send(resp *generated.ExecResponse) error
Send mocks the Send method
type NamespaceService ¶
type NamespaceService struct {
generated.UnimplementedNamespaceServiceServer
// contains filtered or unexported fields
}
NamespaceService implements the gRPC NamespaceService.
func NewNamespaceService ¶
func NewNamespaceService(store store.Store, logger log.Logger) *NamespaceService
NewNamespaceService creates a new NamespaceService with the given store and logger.
func (*NamespaceService) CreateNamespace ¶
func (s *NamespaceService) CreateNamespace(ctx context.Context, req *generated.CreateNamespaceRequest) (*generated.CreateNamespaceResponse, error)
CreateNamespace creates a new namespace.
func (*NamespaceService) DeleteNamespace ¶
func (s *NamespaceService) DeleteNamespace(ctx context.Context, req *generated.DeleteNamespaceRequest) (*generated.DeleteNamespaceResponse, error)
DeleteNamespace removes a namespace.
func (*NamespaceService) GetNamespace ¶
func (s *NamespaceService) GetNamespace(ctx context.Context, req *generated.GetNamespaceRequest) (*generated.GetNamespaceResponse, error)
GetNamespace retrieves a namespace by name.
func (*NamespaceService) ListNamespaces ¶
func (s *NamespaceService) ListNamespaces(ctx context.Context, req *generated.ListNamespacesRequest) (*generated.ListNamespacesResponse, error)
ListNamespaces lists namespaces with optional filtering.
func (*NamespaceService) WatchNamespaces ¶
func (s *NamespaceService) WatchNamespaces(req *generated.WatchNamespacesRequest, stream generated.NamespaceService_WatchNamespacesServer) error
WatchNamespaces watches namespaces for changes.
type ResourceTarget ¶
type ResourceTarget struct {
Type types.ResourceType
Resource interface{}
}
func (ResourceTarget) GetInstance ¶
func (r ResourceTarget) GetInstance() (*types.Instance, error)
func (ResourceTarget) GetService ¶
func (r ResourceTarget) GetService() (*types.Service, error)
type SecretService ¶
type SecretService struct {
generated.UnimplementedSecretServiceServer
// contains filtered or unexported fields
}
func NewSecretService ¶
func NewSecretService(coreStore store.Store, logger log.Logger) *SecretService
func (*SecretService) CreateSecret ¶
func (s *SecretService) CreateSecret(ctx context.Context, req *generated.CreateSecretRequest) (*generated.SecretResponse, error)
func (*SecretService) DeleteSecret ¶
func (s *SecretService) DeleteSecret(ctx context.Context, req *generated.DeleteSecretRequest) (*generated.Status, error)
func (*SecretService) GetSecret ¶
func (s *SecretService) GetSecret(ctx context.Context, req *generated.GetSecretRequest) (*generated.SecretResponse, error)
func (*SecretService) ListSecrets ¶
func (s *SecretService) ListSecrets(ctx context.Context, req *generated.ListSecretsRequest) (*generated.ListSecretsResponse, error)
func (*SecretService) UpdateSecret ¶
func (s *SecretService) UpdateSecret(ctx context.Context, req *generated.UpdateSecretRequest) (*generated.SecretResponse, error)
type ServiceService ¶
type ServiceService struct {
generated.UnimplementedServiceServiceServer
// contains filtered or unexported fields
}
ServiceService implements the gRPC ServiceService.
func NewServiceService ¶
func NewServiceService(store store.Store, orchestrator orchestrator.Orchestrator, runnerManager *manager.RunnerManager, logger log.Logger) *ServiceService
NewServiceService creates a new ServiceService with the given orchestrator and logger.
func (*ServiceService) CreateService ¶
func (s *ServiceService) CreateService(ctx context.Context, req *generated.CreateServiceRequest) (*generated.ServiceResponse, error)
CreateService creates a new service.
func (*ServiceService) DeleteService ¶
func (s *ServiceService) DeleteService(ctx context.Context, req *generated.DeleteServiceRequest) (*generated.DeleteServiceResponse, error)
DeleteService removes a service.
func (*ServiceService) GetDeletionStatus ¶
func (s *ServiceService) GetDeletionStatus(ctx context.Context, req *generated.GetDeletionStatusRequest) (*generated.GetDeletionStatusResponse, error)
GetDeletionStatus gets the status of a deletion operation.
func (*ServiceService) GetService ¶
func (s *ServiceService) GetService(ctx context.Context, req *generated.GetServiceRequest) (*generated.ServiceResponse, error)
GetService retrieves a service by name.
func (*ServiceService) ListDeletionOperations ¶
func (s *ServiceService) ListDeletionOperations(ctx context.Context, req *generated.ListDeletionOperationsRequest) (*generated.ListDeletionOperationsResponse, error)
ListDeletionOperations lists deletion operations with optional filtering.
func (*ServiceService) ListServices ¶
func (s *ServiceService) ListServices(ctx context.Context, req *generated.ListServicesRequest) (*generated.ListServicesResponse, error)
ListServices lists services with optional filtering.
func (*ServiceService) ScaleService ¶
func (s *ServiceService) ScaleService(ctx context.Context, req *generated.ScaleServiceRequest) (*generated.ServiceResponse, error)
ScaleService changes the scale of a service.
func (*ServiceService) UpdateService ¶
func (s *ServiceService) UpdateService(ctx context.Context, req *generated.UpdateServiceRequest) (*generated.ServiceResponse, error)
UpdateService updates an existing service.
func (*ServiceService) WatchScaling ¶
func (s *ServiceService) WatchScaling(req *generated.WatchScalingRequest, stream generated.ServiceService_WatchScalingServer) error
WatchScaling watches a service for scaling status changes and streams updates to the client.
func (*ServiceService) WatchServices ¶
func (s *ServiceService) WatchServices(req *generated.WatchServicesRequest, stream generated.ServiceService_WatchServicesServer) error
WatchServices watches services for changes.