Unexport grpc service types

Since these are registered and the interface is what matters, these
Service types do not need to be exported.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby 2017-10-20 11:18:37 -04:00
parent 3679a55883
commit 9bd1dc78cb
11 changed files with 111 additions and 100 deletions

View File

@ -33,12 +33,14 @@ type Config struct {
md toml.MetaData md toml.MetaData
} }
// GRPCConfig provides GRPC configuration for the socket
type GRPCConfig struct { type GRPCConfig struct {
Address string `toml:"address"` Address string `toml:"address"`
Uid int `toml:"uid"` Uid int `toml:"uid"`
Gid int `toml:"gid"` Gid int `toml:"gid"`
} }
// Debug provides debug configuration
type Debug struct { type Debug struct {
Address string `toml:"address"` Address string `toml:"address"`
Uid int `toml:"uid"` Uid int `toml:"uid"`
@ -46,10 +48,12 @@ type Debug struct {
Level string `toml:"level"` Level string `toml:"level"`
} }
// MetricsConfig provides metrics configuration
type MetricsConfig struct { type MetricsConfig struct {
Address string `toml:"address"` Address string `toml:"address"`
} }
// CgroupConfig provides cgroup configuration
type CgroupConfig struct { type CgroupConfig struct {
Path string `toml:"path"` Path string `toml:"path"`
} }

View File

@ -34,21 +34,22 @@ func init() {
}) })
} }
type Service struct { type service struct {
db *metadata.DB db *metadata.DB
publisher events.Publisher publisher events.Publisher
} }
// NewService returns the container GRPC server
func NewService(db *metadata.DB, publisher events.Publisher) api.ContainersServer { func NewService(db *metadata.DB, publisher events.Publisher) api.ContainersServer {
return &Service{db: db, publisher: publisher} return &service{db: db, publisher: publisher}
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
api.RegisterContainersServer(server, s) api.RegisterContainersServer(server, s)
return nil return nil
} }
func (s *Service) Get(ctx context.Context, req *api.GetContainerRequest) (*api.GetContainerResponse, error) { func (s *service) Get(ctx context.Context, req *api.GetContainerRequest) (*api.GetContainerResponse, error) {
var resp api.GetContainerResponse var resp api.GetContainerResponse
return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store containers.Store) error { return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store containers.Store) error {
@ -63,7 +64,7 @@ func (s *Service) Get(ctx context.Context, req *api.GetContainerRequest) (*api.G
})) }))
} }
func (s *Service) List(ctx context.Context, req *api.ListContainersRequest) (*api.ListContainersResponse, error) { func (s *service) List(ctx context.Context, req *api.ListContainersRequest) (*api.ListContainersResponse, error) {
var resp api.ListContainersResponse var resp api.ListContainersResponse
return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store containers.Store) error { return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store containers.Store) error {
@ -77,7 +78,7 @@ func (s *Service) List(ctx context.Context, req *api.ListContainersRequest) (*ap
})) }))
} }
func (s *Service) Create(ctx context.Context, req *api.CreateContainerRequest) (*api.CreateContainerResponse, error) { func (s *service) Create(ctx context.Context, req *api.CreateContainerRequest) (*api.CreateContainerResponse, error) {
var resp api.CreateContainerResponse var resp api.CreateContainerResponse
if err := s.withStoreUpdate(ctx, func(ctx context.Context, store containers.Store) error { if err := s.withStoreUpdate(ctx, func(ctx context.Context, store containers.Store) error {
@ -108,7 +109,7 @@ func (s *Service) Create(ctx context.Context, req *api.CreateContainerRequest) (
return &resp, nil return &resp, nil
} }
func (s *Service) Update(ctx context.Context, req *api.UpdateContainerRequest) (*api.UpdateContainerResponse, error) { func (s *service) Update(ctx context.Context, req *api.UpdateContainerRequest) (*api.UpdateContainerResponse, error) {
if req.Container.ID == "" { if req.Container.ID == "" {
return nil, status.Errorf(codes.InvalidArgument, "Container.ID required") return nil, status.Errorf(codes.InvalidArgument, "Container.ID required")
} }
@ -148,7 +149,7 @@ func (s *Service) Update(ctx context.Context, req *api.UpdateContainerRequest) (
return &resp, nil return &resp, nil
} }
func (s *Service) Delete(ctx context.Context, req *api.DeleteContainerRequest) (*empty.Empty, error) { func (s *service) Delete(ctx context.Context, req *api.DeleteContainerRequest) (*empty.Empty, error) {
if err := s.withStoreUpdate(ctx, func(ctx context.Context, store containers.Store) error { if err := s.withStoreUpdate(ctx, func(ctx context.Context, store containers.Store) error {
return store.Delete(ctx, req.ID) return store.Delete(ctx, req.ID)
}); err != nil { }); err != nil {
@ -168,14 +169,14 @@ func (s *Service) Delete(ctx context.Context, req *api.DeleteContainerRequest) (
return &empty.Empty{}, nil return &empty.Empty{}, nil
} }
func (s *Service) withStore(ctx context.Context, fn func(ctx context.Context, store containers.Store) error) func(tx *bolt.Tx) error { func (s *service) withStore(ctx context.Context, fn func(ctx context.Context, store containers.Store) error) func(tx *bolt.Tx) error {
return func(tx *bolt.Tx) error { return fn(ctx, metadata.NewContainerStore(tx)) } return func(tx *bolt.Tx) error { return fn(ctx, metadata.NewContainerStore(tx)) }
} }
func (s *Service) withStoreView(ctx context.Context, fn func(ctx context.Context, store containers.Store) error) error { func (s *service) withStoreView(ctx context.Context, fn func(ctx context.Context, store containers.Store) error) error {
return s.db.View(s.withStore(ctx, fn)) return s.db.View(s.withStore(ctx, fn))
} }
func (s *Service) withStoreUpdate(ctx context.Context, fn func(ctx context.Context, store containers.Store) error) error { func (s *service) withStoreUpdate(ctx context.Context, fn func(ctx context.Context, store containers.Store) error) error {
return s.db.Update(s.withStore(ctx, fn)) return s.db.Update(s.withStore(ctx, fn))
} }

View File

@ -21,7 +21,7 @@ import (
"google.golang.org/grpc/codes" "google.golang.org/grpc/codes"
) )
type Service struct { type service struct {
store content.Store store content.Store
publisher events.Publisher publisher events.Publisher
} }
@ -32,7 +32,7 @@ var bufPool = sync.Pool{
}, },
} }
var _ api.ContentServer = &Service{} var _ api.ContentServer = &service{}
func init() { func init() {
plugin.Register(&plugin.Registration{ plugin.Register(&plugin.Registration{
@ -53,19 +53,20 @@ func init() {
}) })
} }
func NewService(cs content.Store, publisher events.Publisher) (*Service, error) { // NewService returns the content GRPC server
return &Service{ func NewService(cs content.Store, publisher events.Publisher) (api.ContentServer, error) {
return &service{
store: cs, store: cs,
publisher: publisher, publisher: publisher,
}, nil }, nil
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
api.RegisterContentServer(server, s) api.RegisterContentServer(server, s)
return nil return nil
} }
func (s *Service) Info(ctx context.Context, req *api.InfoRequest) (*api.InfoResponse, error) { func (s *service) Info(ctx context.Context, req *api.InfoRequest) (*api.InfoResponse, error) {
if err := req.Digest.Validate(); err != nil { if err := req.Digest.Validate(); err != nil {
return nil, grpc.Errorf(codes.InvalidArgument, "%q failed validation", req.Digest) return nil, grpc.Errorf(codes.InvalidArgument, "%q failed validation", req.Digest)
} }
@ -80,7 +81,7 @@ func (s *Service) Info(ctx context.Context, req *api.InfoRequest) (*api.InfoResp
}, nil }, nil
} }
func (s *Service) Update(ctx context.Context, req *api.UpdateRequest) (*api.UpdateResponse, error) { func (s *service) Update(ctx context.Context, req *api.UpdateRequest) (*api.UpdateResponse, error) {
if err := req.Info.Digest.Validate(); err != nil { if err := req.Info.Digest.Validate(); err != nil {
return nil, grpc.Errorf(codes.InvalidArgument, "%q failed validation", req.Info.Digest) return nil, grpc.Errorf(codes.InvalidArgument, "%q failed validation", req.Info.Digest)
} }
@ -95,7 +96,7 @@ func (s *Service) Update(ctx context.Context, req *api.UpdateRequest) (*api.Upda
}, nil }, nil
} }
func (s *Service) List(req *api.ListContentRequest, session api.Content_ListServer) error { func (s *service) List(req *api.ListContentRequest, session api.Content_ListServer) error {
var ( var (
buffer []api.Info buffer []api.Info
sendBlock = func(block []api.Info) error { sendBlock = func(block []api.Info) error {
@ -137,7 +138,7 @@ func (s *Service) List(req *api.ListContentRequest, session api.Content_ListServ
return nil return nil
} }
func (s *Service) Delete(ctx context.Context, req *api.DeleteContentRequest) (*empty.Empty, error) { func (s *service) Delete(ctx context.Context, req *api.DeleteContentRequest) (*empty.Empty, error) {
if err := req.Digest.Validate(); err != nil { if err := req.Digest.Validate(); err != nil {
return nil, grpc.Errorf(codes.InvalidArgument, err.Error()) return nil, grpc.Errorf(codes.InvalidArgument, err.Error())
} }
@ -155,7 +156,7 @@ func (s *Service) Delete(ctx context.Context, req *api.DeleteContentRequest) (*e
return &empty.Empty{}, nil return &empty.Empty{}, nil
} }
func (s *Service) Read(req *api.ReadContentRequest, session api.Content_ReadServer) error { func (s *service) Read(req *api.ReadContentRequest, session api.Content_ReadServer) error {
if err := req.Digest.Validate(); err != nil { if err := req.Digest.Validate(); err != nil {
return grpc.Errorf(codes.InvalidArgument, "%v: %v", req.Digest, err) return grpc.Errorf(codes.InvalidArgument, "%v: %v", req.Digest, err)
} }
@ -223,7 +224,7 @@ func (rw *readResponseWriter) Write(p []byte) (n int, err error) {
return len(p), nil return len(p), nil
} }
func (s *Service) Status(ctx context.Context, req *api.StatusRequest) (*api.StatusResponse, error) { func (s *service) Status(ctx context.Context, req *api.StatusRequest) (*api.StatusResponse, error) {
status, err := s.store.Status(ctx, req.Ref) status, err := s.store.Status(ctx, req.Ref)
if err != nil { if err != nil {
return nil, errdefs.ToGRPCf(err, "could not get status for ref %q", req.Ref) return nil, errdefs.ToGRPCf(err, "could not get status for ref %q", req.Ref)
@ -242,7 +243,7 @@ func (s *Service) Status(ctx context.Context, req *api.StatusRequest) (*api.Stat
return &resp, nil return &resp, nil
} }
func (s *Service) ListStatuses(ctx context.Context, req *api.ListStatusesRequest) (*api.ListStatusesResponse, error) { func (s *service) ListStatuses(ctx context.Context, req *api.ListStatusesRequest) (*api.ListStatusesResponse, error) {
statuses, err := s.store.ListStatuses(ctx, req.Filters...) statuses, err := s.store.ListStatuses(ctx, req.Filters...)
if err != nil { if err != nil {
return nil, errdefs.ToGRPC(err) return nil, errdefs.ToGRPC(err)
@ -263,7 +264,7 @@ func (s *Service) ListStatuses(ctx context.Context, req *api.ListStatusesRequest
return &resp, nil return &resp, nil
} }
func (s *Service) Write(session api.Content_WriteServer) (err error) { func (s *service) Write(session api.Content_WriteServer) (err error) {
var ( var (
ctx = session.Context() ctx = session.Context()
msg api.WriteContentResponse msg api.WriteContentResponse
@ -283,7 +284,7 @@ func (s *Service) Write(session api.Content_WriteServer) (err error) {
// identically across all GRPC methods. // identically across all GRPC methods.
// //
// This is pretty noisy, so we can remove it but leave it for now. // This is pretty noisy, so we can remove it but leave it for now.
log.G(ctx).WithError(err).Error("(*Service).Write failed") log.G(ctx).WithError(err).Error("(*service).Write failed")
} }
return return
@ -319,7 +320,7 @@ func (s *Service) Write(session api.Content_WriteServer) (err error) {
ctx = log.WithLogger(ctx, log.G(ctx).WithFields(fields)) ctx = log.WithLogger(ctx, log.G(ctx).WithFields(fields))
log.G(ctx).Debug("(*Service).Write started") log.G(ctx).Debug("(*service).Write started")
// this action locks the writer for the session. // this action locks the writer for the session.
wr, err := s.store.Writer(ctx, ref, total, expected) wr, err := s.store.Writer(ctx, ref, total, expected)
if err != nil { if err != nil {
@ -444,7 +445,7 @@ func (s *Service) Write(session api.Content_WriteServer) (err error) {
} }
} }
func (s *Service) Abort(ctx context.Context, req *api.AbortRequest) (*empty.Empty, error) { func (s *service) Abort(ctx context.Context, req *api.AbortRequest) (*empty.Empty, error) {
if err := s.store.Abort(ctx, req.Ref); err != nil { if err := s.store.Abort(ctx, req.Ref); err != nil {
return nil, errdefs.ToGRPC(err) return nil, errdefs.ToGRPC(err)
} }

View File

@ -21,20 +21,21 @@ func init() {
}) })
} }
type Service struct { type service struct {
events *events.Exchange events *events.Exchange
} }
// NewService returns the GRPC events server
func NewService(events *events.Exchange) api.EventsServer { func NewService(events *events.Exchange) api.EventsServer {
return &Service{events: events} return &service{events: events}
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
api.RegisterEventsServer(server, s) api.RegisterEventsServer(server, s)
return nil return nil
} }
func (s *Service) Publish(ctx context.Context, r *api.PublishRequest) (*empty.Empty, error) { func (s *service) Publish(ctx context.Context, r *api.PublishRequest) (*empty.Empty, error) {
if err := s.events.Publish(ctx, r.Topic, r.Event); err != nil { if err := s.events.Publish(ctx, r.Topic, r.Event); err != nil {
return nil, errdefs.ToGRPC(err) return nil, errdefs.ToGRPC(err)
} }
@ -42,7 +43,7 @@ func (s *Service) Publish(ctx context.Context, r *api.PublishRequest) (*empty.Em
return &empty.Empty{}, nil return &empty.Empty{}, nil
} }
func (s *Service) Forward(ctx context.Context, r *api.ForwardRequest) (*empty.Empty, error) { func (s *service) Forward(ctx context.Context, r *api.ForwardRequest) (*empty.Empty, error) {
if err := s.events.Forward(ctx, r.Envelope); err != nil { if err := s.events.Forward(ctx, r.Envelope); err != nil {
return nil, errdefs.ToGRPC(err) return nil, errdefs.ToGRPC(err)
} }
@ -50,7 +51,7 @@ func (s *Service) Forward(ctx context.Context, r *api.ForwardRequest) (*empty.Em
return &empty.Empty{}, nil return &empty.Empty{}, nil
} }
func (s *Service) Subscribe(req *api.SubscribeRequest, srv api.Events_SubscribeServer) error { func (s *service) Subscribe(req *api.SubscribeRequest, srv api.Events_SubscribeServer) error {
ctx, cancel := context.WithCancel(srv.Context()) ctx, cancel := context.WithCancel(srv.Context())
defer cancel() defer cancel()

View File

@ -8,7 +8,7 @@ import (
"google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/health/grpc_health_v1"
) )
type Service struct { type service struct {
serve *health.Server serve *health.Server
} }
@ -22,13 +22,14 @@ func init() {
}) })
} }
func NewService() (*Service, error) { // NewService returns the GRPC health server
return &Service{ func NewService() (*service, error) {
return &service{
health.NewServer(), health.NewServer(),
}, nil }, nil
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
grpc_health_v1.RegisterHealthServer(server, s.serve) grpc_health_v1.RegisterHealthServer(server, s.serve)
return nil return nil
} }

View File

@ -34,24 +34,25 @@ func init() {
}) })
} }
type Service struct { type service struct {
db *metadata.DB db *metadata.DB
publisher events.Publisher publisher events.Publisher
} }
// NewService returns the GRPC image server
func NewService(db *metadata.DB, publisher events.Publisher) imagesapi.ImagesServer { func NewService(db *metadata.DB, publisher events.Publisher) imagesapi.ImagesServer {
return &Service{ return &service{
db: db, db: db,
publisher: publisher, publisher: publisher,
} }
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
imagesapi.RegisterImagesServer(server, s) imagesapi.RegisterImagesServer(server, s)
return nil return nil
} }
func (s *Service) Get(ctx context.Context, req *imagesapi.GetImageRequest) (*imagesapi.GetImageResponse, error) { func (s *service) Get(ctx context.Context, req *imagesapi.GetImageRequest) (*imagesapi.GetImageResponse, error) {
var resp imagesapi.GetImageResponse var resp imagesapi.GetImageResponse
return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store images.Store) error { return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store images.Store) error {
@ -65,7 +66,7 @@ func (s *Service) Get(ctx context.Context, req *imagesapi.GetImageRequest) (*ima
})) }))
} }
func (s *Service) List(ctx context.Context, req *imagesapi.ListImagesRequest) (*imagesapi.ListImagesResponse, error) { func (s *service) List(ctx context.Context, req *imagesapi.ListImagesRequest) (*imagesapi.ListImagesResponse, error) {
var resp imagesapi.ListImagesResponse var resp imagesapi.ListImagesResponse
return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store images.Store) error { return &resp, errdefs.ToGRPC(s.withStoreView(ctx, func(ctx context.Context, store images.Store) error {
@ -79,7 +80,7 @@ func (s *Service) List(ctx context.Context, req *imagesapi.ListImagesRequest) (*
})) }))
} }
func (s *Service) Create(ctx context.Context, req *imagesapi.CreateImageRequest) (*imagesapi.CreateImageResponse, error) { func (s *service) Create(ctx context.Context, req *imagesapi.CreateImageRequest) (*imagesapi.CreateImageResponse, error) {
if req.Image.Name == "" { if req.Image.Name == "" {
return nil, status.Errorf(codes.InvalidArgument, "Image.Name required") return nil, status.Errorf(codes.InvalidArgument, "Image.Name required")
} }
@ -111,7 +112,7 @@ func (s *Service) Create(ctx context.Context, req *imagesapi.CreateImageRequest)
} }
func (s *Service) Update(ctx context.Context, req *imagesapi.UpdateImageRequest) (*imagesapi.UpdateImageResponse, error) { func (s *service) Update(ctx context.Context, req *imagesapi.UpdateImageRequest) (*imagesapi.UpdateImageResponse, error) {
if req.Image.Name == "" { if req.Image.Name == "" {
return nil, status.Errorf(codes.InvalidArgument, "Image.Name required") return nil, status.Errorf(codes.InvalidArgument, "Image.Name required")
} }
@ -149,7 +150,7 @@ func (s *Service) Update(ctx context.Context, req *imagesapi.UpdateImageRequest)
return &resp, nil return &resp, nil
} }
func (s *Service) Delete(ctx context.Context, req *imagesapi.DeleteImageRequest) (*empty.Empty, error) { func (s *service) Delete(ctx context.Context, req *imagesapi.DeleteImageRequest) (*empty.Empty, error) {
if err := s.withStoreUpdate(ctx, func(ctx context.Context, store images.Store) error { if err := s.withStoreUpdate(ctx, func(ctx context.Context, store images.Store) error {
return errdefs.ToGRPC(store.Delete(ctx, req.Name)) return errdefs.ToGRPC(store.Delete(ctx, req.Name))
}); err != nil { }); err != nil {
@ -169,14 +170,14 @@ func (s *Service) Delete(ctx context.Context, req *imagesapi.DeleteImageRequest)
return &empty.Empty{}, nil return &empty.Empty{}, nil
} }
func (s *Service) withStore(ctx context.Context, fn func(ctx context.Context, store images.Store) error) func(tx *bolt.Tx) error { func (s *service) withStore(ctx context.Context, fn func(ctx context.Context, store images.Store) error) func(tx *bolt.Tx) error {
return func(tx *bolt.Tx) error { return fn(ctx, metadata.NewImageStore(tx)) } return func(tx *bolt.Tx) error { return fn(ctx, metadata.NewImageStore(tx)) }
} }
func (s *Service) withStoreView(ctx context.Context, fn func(ctx context.Context, store images.Store) error) error { func (s *service) withStoreView(ctx context.Context, fn func(ctx context.Context, store images.Store) error) error {
return s.db.View(s.withStore(ctx, fn)) return s.db.View(s.withStore(ctx, fn))
} }
func (s *Service) withStoreUpdate(ctx context.Context, fn func(ctx context.Context, store images.Store) error) error { func (s *service) withStoreUpdate(ctx context.Context, fn func(ctx context.Context, store images.Store) error) error {
return s.db.Update(s.withStore(ctx, fn)) return s.db.Update(s.withStore(ctx, fn))
} }

View File

@ -28,22 +28,23 @@ func init() {
}) })
} }
type Service struct { type service struct {
plugins []api.Plugin plugins []api.Plugin
} }
// NewService returns the GRPC introspection server
func NewService(plugins []api.Plugin) api.IntrospectionServer { func NewService(plugins []api.Plugin) api.IntrospectionServer {
return &Service{ return &service{
plugins: plugins, plugins: plugins,
} }
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
api.RegisterIntrospectionServer(server, s) api.RegisterIntrospectionServer(server, s)
return nil return nil
} }
func (s *Service) Plugins(ctx context.Context, req *api.PluginsRequest) (*api.PluginsResponse, error) { func (s *service) Plugins(ctx context.Context, req *api.PluginsRequest) (*api.PluginsResponse, error) {
filter, err := filters.ParseAll(req.Filters...) filter, err := filters.ParseAll(req.Filters...)
if err != nil { if err != nil {
return nil, errdefs.ToGRPCf(errdefs.ErrInvalidArgument, err.Error()) return nil, errdefs.ToGRPCf(errdefs.ErrInvalidArgument, err.Error())

View File

@ -34,26 +34,27 @@ func init() {
}) })
} }
type Service struct { type service struct {
db *metadata.DB db *metadata.DB
publisher events.Publisher publisher events.Publisher
} }
var _ api.NamespacesServer = &Service{} var _ api.NamespacesServer = &service{}
// NewService returns the GRPC namespaces server
func NewService(db *metadata.DB, publisher events.Publisher) api.NamespacesServer { func NewService(db *metadata.DB, publisher events.Publisher) api.NamespacesServer {
return &Service{ return &service{
db: db, db: db,
publisher: publisher, publisher: publisher,
} }
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
api.RegisterNamespacesServer(server, s) api.RegisterNamespacesServer(server, s)
return nil return nil
} }
func (s *Service) Get(ctx context.Context, req *api.GetNamespaceRequest) (*api.GetNamespaceResponse, error) { func (s *service) Get(ctx context.Context, req *api.GetNamespaceRequest) (*api.GetNamespaceResponse, error) {
var resp api.GetNamespaceResponse var resp api.GetNamespaceResponse
return &resp, s.withStoreView(ctx, func(ctx context.Context, store namespaces.Store) error { return &resp, s.withStoreView(ctx, func(ctx context.Context, store namespaces.Store) error {
@ -71,7 +72,7 @@ func (s *Service) Get(ctx context.Context, req *api.GetNamespaceRequest) (*api.G
}) })
} }
func (s *Service) List(ctx context.Context, req *api.ListNamespacesRequest) (*api.ListNamespacesResponse, error) { func (s *service) List(ctx context.Context, req *api.ListNamespacesRequest) (*api.ListNamespacesResponse, error) {
var resp api.ListNamespacesResponse var resp api.ListNamespacesResponse
return &resp, s.withStoreView(ctx, func(ctx context.Context, store namespaces.Store) error { return &resp, s.withStoreView(ctx, func(ctx context.Context, store namespaces.Store) error {
@ -98,7 +99,7 @@ func (s *Service) List(ctx context.Context, req *api.ListNamespacesRequest) (*ap
}) })
} }
func (s *Service) Create(ctx context.Context, req *api.CreateNamespaceRequest) (*api.CreateNamespaceResponse, error) { func (s *service) Create(ctx context.Context, req *api.CreateNamespaceRequest) (*api.CreateNamespaceResponse, error) {
var resp api.CreateNamespaceResponse var resp api.CreateNamespaceResponse
if err := s.withStoreUpdate(ctx, func(ctx context.Context, store namespaces.Store) error { if err := s.withStoreUpdate(ctx, func(ctx context.Context, store namespaces.Store) error {
@ -129,7 +130,7 @@ func (s *Service) Create(ctx context.Context, req *api.CreateNamespaceRequest) (
} }
func (s *Service) Update(ctx context.Context, req *api.UpdateNamespaceRequest) (*api.UpdateNamespaceResponse, error) { func (s *service) Update(ctx context.Context, req *api.UpdateNamespaceRequest) (*api.UpdateNamespaceResponse, error) {
var resp api.UpdateNamespaceResponse var resp api.UpdateNamespaceResponse
if err := s.withStoreUpdate(ctx, func(ctx context.Context, store namespaces.Store) error { if err := s.withStoreUpdate(ctx, func(ctx context.Context, store namespaces.Store) error {
if req.UpdateMask != nil && len(req.UpdateMask.Paths) > 0 { if req.UpdateMask != nil && len(req.UpdateMask.Paths) > 0 {
@ -181,7 +182,7 @@ func (s *Service) Update(ctx context.Context, req *api.UpdateNamespaceRequest) (
return &resp, nil return &resp, nil
} }
func (s *Service) Delete(ctx context.Context, req *api.DeleteNamespaceRequest) (*empty.Empty, error) { func (s *service) Delete(ctx context.Context, req *api.DeleteNamespaceRequest) (*empty.Empty, error) {
if err := s.withStoreUpdate(ctx, func(ctx context.Context, store namespaces.Store) error { if err := s.withStoreUpdate(ctx, func(ctx context.Context, store namespaces.Store) error {
return errdefs.ToGRPC(store.Delete(ctx, req.Name)) return errdefs.ToGRPC(store.Delete(ctx, req.Name))
}); err != nil { }); err != nil {
@ -198,14 +199,14 @@ func (s *Service) Delete(ctx context.Context, req *api.DeleteNamespaceRequest) (
return &empty.Empty{}, nil return &empty.Empty{}, nil
} }
func (s *Service) withStore(ctx context.Context, fn func(ctx context.Context, store namespaces.Store) error) func(tx *bolt.Tx) error { func (s *service) withStore(ctx context.Context, fn func(ctx context.Context, store namespaces.Store) error) func(tx *bolt.Tx) error {
return func(tx *bolt.Tx) error { return fn(ctx, metadata.NewNamespaceStore(tx)) } return func(tx *bolt.Tx) error { return fn(ctx, metadata.NewNamespaceStore(tx)) }
} }
func (s *Service) withStoreView(ctx context.Context, fn func(ctx context.Context, store namespaces.Store) error) error { func (s *service) withStoreView(ctx context.Context, fn func(ctx context.Context, store namespaces.Store) error) error {
return s.db.View(s.withStore(ctx, fn)) return s.db.View(s.withStore(ctx, fn))
} }
func (s *Service) withStoreUpdate(ctx context.Context, fn func(ctx context.Context, store namespaces.Store) error) error { func (s *service) withStoreUpdate(ctx context.Context, fn func(ctx context.Context, store namespaces.Store) error) error {
return s.db.Update(s.withStore(ctx, fn)) return s.db.Update(s.withStore(ctx, fn))
} }

View File

@ -34,7 +34,7 @@ import (
) )
var ( var (
_ = (api.TasksServer)(&Service{}) _ = (api.TasksServer)(&service{})
empty = &google_protobuf.Empty{} empty = &google_protobuf.Empty{}
) )
@ -46,11 +46,11 @@ func init() {
plugin.RuntimePlugin, plugin.RuntimePlugin,
plugin.MetadataPlugin, plugin.MetadataPlugin,
}, },
InitFn: New, InitFn: initFunc,
}) })
} }
func New(ic *plugin.InitContext) (interface{}, error) { func initFunc(ic *plugin.InitContext) (interface{}, error) {
rt, err := ic.GetByType(plugin.RuntimePlugin) rt, err := ic.GetByType(plugin.RuntimePlugin)
if err != nil { if err != nil {
return nil, err return nil, err
@ -75,7 +75,7 @@ func New(ic *plugin.InitContext) (interface{}, error) {
if len(runtimes) == 0 { if len(runtimes) == 0 {
return nil, errors.New("no runtimes available to create task service") return nil, errors.New("no runtimes available to create task service")
} }
return &Service{ return &service{
runtimes: runtimes, runtimes: runtimes,
db: m.(*metadata.DB), db: m.(*metadata.DB),
store: cs, store: cs,
@ -83,19 +83,19 @@ func New(ic *plugin.InitContext) (interface{}, error) {
}, nil }, nil
} }
type Service struct { type service struct {
runtimes map[string]runtime.Runtime runtimes map[string]runtime.Runtime
db *metadata.DB db *metadata.DB
store content.Store store content.Store
publisher events.Publisher publisher events.Publisher
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
api.RegisterTasksServer(server, s) api.RegisterTasksServer(server, s)
return nil return nil
} }
func (s *Service) Create(ctx context.Context, r *api.CreateTaskRequest) (*api.CreateTaskResponse, error) { func (s *service) Create(ctx context.Context, r *api.CreateTaskRequest) (*api.CreateTaskResponse, error) {
var ( var (
checkpointPath string checkpointPath string
err error err error
@ -160,7 +160,7 @@ func (s *Service) Create(ctx context.Context, r *api.CreateTaskRequest) (*api.Cr
}, nil }, nil
} }
func (s *Service) Start(ctx context.Context, r *api.StartRequest) (*api.StartResponse, error) { func (s *service) Start(ctx context.Context, r *api.StartRequest) (*api.StartResponse, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -183,7 +183,7 @@ func (s *Service) Start(ctx context.Context, r *api.StartRequest) (*api.StartRes
}, nil }, nil
} }
func (s *Service) Delete(ctx context.Context, r *api.DeleteTaskRequest) (*api.DeleteResponse, error) { func (s *service) Delete(ctx context.Context, r *api.DeleteTaskRequest) (*api.DeleteResponse, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -203,7 +203,7 @@ func (s *Service) Delete(ctx context.Context, r *api.DeleteTaskRequest) (*api.De
}, nil }, nil
} }
func (s *Service) DeleteProcess(ctx context.Context, r *api.DeleteProcessRequest) (*api.DeleteResponse, error) { func (s *service) DeleteProcess(ctx context.Context, r *api.DeleteProcessRequest) (*api.DeleteResponse, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -253,7 +253,7 @@ func processFromContainerd(ctx context.Context, p runtime.Process) (*task.Proces
}, nil }, nil
} }
func (s *Service) Get(ctx context.Context, r *api.GetRequest) (*api.GetResponse, error) { func (s *service) Get(ctx context.Context, r *api.GetRequest) (*api.GetResponse, error) {
task, err := s.getTask(ctx, r.ContainerID) task, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -273,7 +273,7 @@ func (s *Service) Get(ctx context.Context, r *api.GetRequest) (*api.GetResponse,
}, nil }, nil
} }
func (s *Service) List(ctx context.Context, r *api.ListTasksRequest) (*api.ListTasksResponse, error) { func (s *service) List(ctx context.Context, r *api.ListTasksRequest) (*api.ListTasksResponse, error) {
resp := &api.ListTasksResponse{} resp := &api.ListTasksResponse{}
for _, r := range s.runtimes { for _, r := range s.runtimes {
tasks, err := r.Tasks(ctx) tasks, err := r.Tasks(ctx)
@ -296,7 +296,7 @@ func addTasks(ctx context.Context, r *api.ListTasksResponse, tasks []runtime.Tas
} }
} }
func (s *Service) Pause(ctx context.Context, r *api.PauseTaskRequest) (*google_protobuf.Empty, error) { func (s *service) Pause(ctx context.Context, r *api.PauseTaskRequest) (*google_protobuf.Empty, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -308,7 +308,7 @@ func (s *Service) Pause(ctx context.Context, r *api.PauseTaskRequest) (*google_p
return empty, nil return empty, nil
} }
func (s *Service) Resume(ctx context.Context, r *api.ResumeTaskRequest) (*google_protobuf.Empty, error) { func (s *service) Resume(ctx context.Context, r *api.ResumeTaskRequest) (*google_protobuf.Empty, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -320,7 +320,7 @@ func (s *Service) Resume(ctx context.Context, r *api.ResumeTaskRequest) (*google
return empty, nil return empty, nil
} }
func (s *Service) Kill(ctx context.Context, r *api.KillRequest) (*google_protobuf.Empty, error) { func (s *service) Kill(ctx context.Context, r *api.KillRequest) (*google_protobuf.Empty, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -337,7 +337,7 @@ func (s *Service) Kill(ctx context.Context, r *api.KillRequest) (*google_protobu
return empty, nil return empty, nil
} }
func (s *Service) ListPids(ctx context.Context, r *api.ListPidsRequest) (*api.ListPidsResponse, error) { func (s *service) ListPids(ctx context.Context, r *api.ListPidsRequest) (*api.ListPidsResponse, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -365,7 +365,7 @@ func (s *Service) ListPids(ctx context.Context, r *api.ListPidsRequest) (*api.Li
}, nil }, nil
} }
func (s *Service) Exec(ctx context.Context, r *api.ExecProcessRequest) (*google_protobuf.Empty, error) { func (s *service) Exec(ctx context.Context, r *api.ExecProcessRequest) (*google_protobuf.Empty, error) {
if r.ExecID == "" { if r.ExecID == "" {
return nil, grpc.Errorf(codes.InvalidArgument, "exec id cannot be empty") return nil, grpc.Errorf(codes.InvalidArgument, "exec id cannot be empty")
} }
@ -387,7 +387,7 @@ func (s *Service) Exec(ctx context.Context, r *api.ExecProcessRequest) (*google_
return empty, nil return empty, nil
} }
func (s *Service) ResizePty(ctx context.Context, r *api.ResizePtyRequest) (*google_protobuf.Empty, error) { func (s *service) ResizePty(ctx context.Context, r *api.ResizePtyRequest) (*google_protobuf.Empty, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -407,7 +407,7 @@ func (s *Service) ResizePty(ctx context.Context, r *api.ResizePtyRequest) (*goog
return empty, nil return empty, nil
} }
func (s *Service) CloseIO(ctx context.Context, r *api.CloseIORequest) (*google_protobuf.Empty, error) { func (s *service) CloseIO(ctx context.Context, r *api.CloseIORequest) (*google_protobuf.Empty, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -426,7 +426,7 @@ func (s *Service) CloseIO(ctx context.Context, r *api.CloseIORequest) (*google_p
return empty, nil return empty, nil
} }
func (s *Service) Checkpoint(ctx context.Context, r *api.CheckpointTaskRequest) (*api.CheckpointTaskResponse, error) { func (s *service) Checkpoint(ctx context.Context, r *api.CheckpointTaskRequest) (*api.CheckpointTaskResponse, error) {
container, err := s.getContainer(ctx, r.ContainerID) container, err := s.getContainer(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -471,7 +471,7 @@ func (s *Service) Checkpoint(ctx context.Context, r *api.CheckpointTaskRequest)
}, nil }, nil
} }
func (s *Service) Update(ctx context.Context, r *api.UpdateTaskRequest) (*google_protobuf.Empty, error) { func (s *service) Update(ctx context.Context, r *api.UpdateTaskRequest) (*google_protobuf.Empty, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -482,7 +482,7 @@ func (s *Service) Update(ctx context.Context, r *api.UpdateTaskRequest) (*google
return empty, nil return empty, nil
} }
func (s *Service) Metrics(ctx context.Context, r *api.MetricsRequest) (*api.MetricsResponse, error) { func (s *service) Metrics(ctx context.Context, r *api.MetricsRequest) (*api.MetricsResponse, error) {
filter, err := filters.ParseAll(r.Filters...) filter, err := filters.ParseAll(r.Filters...)
if err != nil { if err != nil {
return nil, err return nil, err
@ -498,7 +498,7 @@ func (s *Service) Metrics(ctx context.Context, r *api.MetricsRequest) (*api.Metr
return &resp, nil return &resp, nil
} }
func (s *Service) Wait(ctx context.Context, r *api.WaitRequest) (*api.WaitResponse, error) { func (s *service) Wait(ctx context.Context, r *api.WaitRequest) (*api.WaitResponse, error) {
t, err := s.getTask(ctx, r.ContainerID) t, err := s.getTask(ctx, r.ContainerID)
if err != nil { if err != nil {
return nil, err return nil, err
@ -557,7 +557,7 @@ func getTasksMetrics(ctx context.Context, filter filters.Filter, tasks []runtime
} }
} }
func (s *Service) writeContent(ctx context.Context, mediaType, ref string, r io.Reader) (*types.Descriptor, error) { func (s *service) writeContent(ctx context.Context, mediaType, ref string, r io.Reader) (*types.Descriptor, error) {
writer, err := s.store.Writer(ctx, ref, 0, "") writer, err := s.store.Writer(ctx, ref, 0, "")
if err != nil { if err != nil {
return nil, err return nil, err
@ -580,7 +580,7 @@ func (s *Service) writeContent(ctx context.Context, mediaType, ref string, r io.
}, nil }, nil
} }
func (s *Service) getContainer(ctx context.Context, id string) (*containers.Container, error) { func (s *service) getContainer(ctx context.Context, id string) (*containers.Container, error) {
var container containers.Container var container containers.Container
if err := s.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
store := metadata.NewContainerStore(tx) store := metadata.NewContainerStore(tx)
@ -593,7 +593,7 @@ func (s *Service) getContainer(ctx context.Context, id string) (*containers.Cont
return &container, nil return &container, nil
} }
func (s *Service) getTask(ctx context.Context, id string) (runtime.Task, error) { func (s *service) getTask(ctx context.Context, id string) (runtime.Task, error) {
container, err := s.getContainer(ctx, id) container, err := s.getContainer(ctx, id)
if err != nil { if err != nil {
return nil, err return nil, err
@ -601,7 +601,7 @@ func (s *Service) getTask(ctx context.Context, id string) (runtime.Task, error)
return s.getTaskFromContainer(ctx, container) return s.getTaskFromContainer(ctx, container)
} }
func (s *Service) getTaskFromContainer(ctx context.Context, container *containers.Container) (runtime.Task, error) { func (s *service) getTaskFromContainer(ctx context.Context, container *containers.Container) (runtime.Task, error) {
runtime, err := s.getRuntime(container.Runtime.Name) runtime, err := s.getRuntime(container.Runtime.Name)
if err != nil { if err != nil {
return nil, errdefs.ToGRPCf(err, "runtime for task %s", container.Runtime.Name) return nil, errdefs.ToGRPCf(err, "runtime for task %s", container.Runtime.Name)
@ -613,7 +613,7 @@ func (s *Service) getTaskFromContainer(ctx context.Context, container *container
return t, nil return t, nil
} }
func (s *Service) getRuntime(name string) (runtime.Runtime, error) { func (s *service) getRuntime(name string) (runtime.Runtime, error) {
runtime, ok := s.runtimes[name] runtime, ok := s.runtimes[name]
if !ok { if !ok {
return nil, grpc.Errorf(codes.NotFound, "unknown runtime %q", name) return nil, grpc.Errorf(codes.NotFound, "unknown runtime %q", name)

View File

@ -9,29 +9,29 @@ import (
"google.golang.org/grpc" "google.golang.org/grpc"
) )
var _ api.VersionServer = &Service{} var _ api.VersionServer = &service{}
func init() { func init() {
plugin.Register(&plugin.Registration{ plugin.Register(&plugin.Registration{
Type: plugin.GRPCPlugin, Type: plugin.GRPCPlugin,
ID: "version", ID: "version",
InitFn: New, InitFn: initFunc,
}) })
} }
func New(ic *plugin.InitContext) (interface{}, error) { func initFunc(ic *plugin.InitContext) (interface{}, error) {
return &Service{}, nil return &service{}, nil
} }
type Service struct { type service struct {
} }
func (s *Service) Register(server *grpc.Server) error { func (s *service) Register(server *grpc.Server) error {
api.RegisterVersionServer(server, s) api.RegisterVersionServer(server, s)
return nil return nil
} }
func (s *Service) Version(ctx context.Context, _ *empty.Empty) (*api.VersionResponse, error) { func (s *service) Version(ctx context.Context, _ *empty.Empty) (*api.VersionResponse, error) {
return &api.VersionResponse{ return &api.VersionResponse{
Version: ctrdversion.Version, Version: ctrdversion.Version,
Revision: ctrdversion.Revision, Revision: ctrdversion.Revision,

View File

@ -1,2 +1,2 @@
// hcsshimtypes holds the windows runtime specific types // Package hcsshimtypes holds the windows runtime specific types
package hcsshimtypes package hcsshimtypes