Merge pull request #3304 from fuweid/me-update-lease
leases: support resource management
This commit is contained in:
@@ -107,3 +107,27 @@ func (l *local) List(ctx context.Context, filters ...string) ([]leases.Lease, er
|
||||
}
|
||||
return ll, nil
|
||||
}
|
||||
|
||||
func (l *local) AddResource(ctx context.Context, lease leases.Lease, r leases.Resource) error {
|
||||
return l.db.Update(func(tx *bolt.Tx) error {
|
||||
return metadata.NewLeaseManager(tx).AddResource(ctx, lease, r)
|
||||
})
|
||||
}
|
||||
|
||||
func (l *local) DeleteResource(ctx context.Context, lease leases.Lease, r leases.Resource) error {
|
||||
return l.db.Update(func(tx *bolt.Tx) error {
|
||||
return metadata.NewLeaseManager(tx).DeleteResource(ctx, lease, r)
|
||||
})
|
||||
}
|
||||
|
||||
func (l *local) ListResources(ctx context.Context, lease leases.Lease) ([]leases.Resource, error) {
|
||||
var rs []leases.Resource
|
||||
if err := l.db.View(func(tx *bolt.Tx) error {
|
||||
var err error
|
||||
rs, err = metadata.NewLeaseManager(tx).ListResources(ctx, lease)
|
||||
return err
|
||||
}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rs, nil
|
||||
}
|
||||
|
||||
@@ -113,6 +113,56 @@ func (s *service) List(ctx context.Context, r *api.ListRequest) (*api.ListRespon
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *service) AddResource(ctx context.Context, r *api.AddResourceRequest) (*ptypes.Empty, error) {
|
||||
lease := leases.Lease{
|
||||
ID: r.ID,
|
||||
}
|
||||
|
||||
if err := s.lm.AddResource(ctx, lease, leases.Resource{
|
||||
ID: r.Resource.ID,
|
||||
Type: r.Resource.Type,
|
||||
}); err != nil {
|
||||
return nil, errdefs.ToGRPC(err)
|
||||
}
|
||||
return &ptypes.Empty{}, nil
|
||||
}
|
||||
|
||||
func (s *service) DeleteResource(ctx context.Context, r *api.DeleteResourceRequest) (*ptypes.Empty, error) {
|
||||
lease := leases.Lease{
|
||||
ID: r.ID,
|
||||
}
|
||||
|
||||
if err := s.lm.DeleteResource(ctx, lease, leases.Resource{
|
||||
ID: r.Resource.ID,
|
||||
Type: r.Resource.Type,
|
||||
}); err != nil {
|
||||
return nil, errdefs.ToGRPC(err)
|
||||
}
|
||||
return &ptypes.Empty{}, nil
|
||||
}
|
||||
|
||||
func (s *service) ListResources(ctx context.Context, r *api.ListResourcesRequest) (*api.ListResourcesResponse, error) {
|
||||
lease := leases.Lease{
|
||||
ID: r.ID,
|
||||
}
|
||||
|
||||
rs, err := s.lm.ListResources(ctx, lease)
|
||||
if err != nil {
|
||||
return nil, errdefs.ToGRPC(err)
|
||||
}
|
||||
|
||||
apiResources := make([]api.Resource, 0, len(rs))
|
||||
for _, i := range rs {
|
||||
apiResources = append(apiResources, api.Resource{
|
||||
ID: i.ID,
|
||||
Type: i.Type,
|
||||
})
|
||||
}
|
||||
return &api.ListResourcesResponse{
|
||||
Resources: apiResources,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func leaseToGRPC(l leases.Lease) *api.Lease {
|
||||
return &api.Lease{
|
||||
ID: l.ID,
|
||||
|
||||
Reference in New Issue
Block a user