Add leases manager to the leases package and use the interface on the client and service. Signed-off-by: Derek McGowan <derek@mcgstyle.net>
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
   Copyright The containerd Authors.
 | 
						|
 | 
						|
   Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
   you may not use this file except in compliance with the License.
 | 
						|
   You may obtain a copy of the License at
 | 
						|
 | 
						|
       http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 | 
						|
   Unless required by applicable law or agreed to in writing, software
 | 
						|
   distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
   See the License for the specific language governing permissions and
 | 
						|
   limitations under the License.
 | 
						|
*/
 | 
						|
 | 
						|
package containerd
 | 
						|
 | 
						|
import (
 | 
						|
	containersapi "github.com/containerd/containerd/api/services/containers/v1"
 | 
						|
	"github.com/containerd/containerd/api/services/diff/v1"
 | 
						|
	imagesapi "github.com/containerd/containerd/api/services/images/v1"
 | 
						|
	namespacesapi "github.com/containerd/containerd/api/services/namespaces/v1"
 | 
						|
	"github.com/containerd/containerd/api/services/tasks/v1"
 | 
						|
	"github.com/containerd/containerd/containers"
 | 
						|
	"github.com/containerd/containerd/content"
 | 
						|
	"github.com/containerd/containerd/images"
 | 
						|
	"github.com/containerd/containerd/leases"
 | 
						|
	"github.com/containerd/containerd/namespaces"
 | 
						|
	"github.com/containerd/containerd/snapshots"
 | 
						|
)
 | 
						|
 | 
						|
type services struct {
 | 
						|
	contentStore   content.Store
 | 
						|
	imageStore     images.Store
 | 
						|
	containerStore containers.Store
 | 
						|
	namespaceStore namespaces.Store
 | 
						|
	snapshotters   map[string]snapshots.Snapshotter
 | 
						|
	taskService    tasks.TasksClient
 | 
						|
	diffService    DiffService
 | 
						|
	eventService   EventService
 | 
						|
	leasesService  leases.Manager
 | 
						|
}
 | 
						|
 | 
						|
// ServicesOpt allows callers to set options on the services
 | 
						|
type ServicesOpt func(c *services)
 | 
						|
 | 
						|
// WithContentStore sets the content store.
 | 
						|
func WithContentStore(contentStore content.Store) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.contentStore = contentStore
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithImageService sets the image service.
 | 
						|
func WithImageService(imageService imagesapi.ImagesClient) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.imageStore = NewImageStoreFromClient(imageService)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithSnapshotters sets the snapshotters.
 | 
						|
func WithSnapshotters(snapshotters map[string]snapshots.Snapshotter) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.snapshotters = make(map[string]snapshots.Snapshotter)
 | 
						|
		for n, sn := range snapshotters {
 | 
						|
			s.snapshotters[n] = sn
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithContainerService sets the container service.
 | 
						|
func WithContainerService(containerService containersapi.ContainersClient) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.containerStore = NewRemoteContainerStore(containerService)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithTaskService sets the task service.
 | 
						|
func WithTaskService(taskService tasks.TasksClient) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.taskService = taskService
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithDiffService sets the diff service.
 | 
						|
func WithDiffService(diffService diff.DiffClient) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.diffService = NewDiffServiceFromClient(diffService)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithEventService sets the event service.
 | 
						|
func WithEventService(eventService EventService) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.eventService = eventService
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithNamespaceService sets the namespace service.
 | 
						|
func WithNamespaceService(namespaceService namespacesapi.NamespacesClient) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.namespaceStore = NewNamespaceStoreFromClient(namespaceService)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithLeasesService sets the lease service.
 | 
						|
func WithLeasesService(leasesService leases.Manager) ServicesOpt {
 | 
						|
	return func(s *services) {
 | 
						|
		s.leasesService = leasesService
 | 
						|
	}
 | 
						|
}
 |