| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Package repository augments the v.io/v23/services/repository interfaces with |
| // implementation-specific configuration methods. |
| package repository |
| |
| import ( |
| "v.io/v23/security/access" |
| "v.io/v23/services/application" |
| "v.io/x/ref/services/profile" |
| public "v.io/v23/services/repository" |
| ) |
| |
| // Application describes an application repository internally. Besides |
| // the public Application interface, it allows to add and remove |
| // application envelopes. |
| type Application interface { |
| public.Application |
| // Put adds the given tuple of application version (specified |
| // through the object name suffix) and application envelope to all |
| // of the given application profiles. |
| Put(Profiles []string, Envelope application.Envelope) error {access.Write} |
| // Remove removes the application envelope for the given profile |
| // name and application version (specified through the object name |
| // suffix). If no version is specified as part of the suffix, the |
| // method removes all versions for the given profile. |
| // |
| // TODO(jsimsa): Add support for using "*" to specify all profiles |
| // when Matt implements Globing (or Ken implements querying). |
| Remove(Profile string) error {access.Write} |
| } |
| |
| // Profile describes a profile internally. Besides the public Profile |
| // interface, it allows to add and remove profile specifications. |
| type Profile interface { |
| public.Profile |
| // Specification returns the profile specification for the profile |
| // identified through the object name suffix. |
| Specification() (profile.Specification | error) {access.Read} |
| // Put sets the profile specification for the profile identified |
| // through the object name suffix. |
| Put(Specification profile.Specification) error {access.Write} |
| // Remove removes the profile specification for the profile |
| // identified through the object name suffix. |
| Remove() error {access.Write} |
| } |