Documentation ¶
Overview ¶
Package controlsocket defines the controlsocket worker, which exposes a Unix socket that the juju-controller charm can use to affect Juju state.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Manifold ¶
func Manifold(config ManifoldConfig) dependency.Manifold
Manifold returns a Manifold that encapsulates the controlsocket worker.
Types ¶
type AccessService ¶
type AccessService interface { // AddUser will add a new user to the database and return the UUID of the // user if successful. If no password is set in the incoming argument, // the user will be added with an activation key. // The following error types are possible from this function: // - usererrors.UserNameNotValid: When the username supplied is not valid. // - usererrors.AlreadyExists: If a user with the supplied name already exists. // - usererrors.CreatorUUIDNotFound: If a creator has been supplied for the user // and the creator does not exist. // - auth.ErrPasswordNotValid: If the password supplied is not valid. AddUser(ctx context.Context, arg service.AddUserArg) (user.UUID, []byte, error) // GetUserByName will find and return the user associated with name. If there is no // user for the user name then an error that satisfies usererrors.NotFound will // be returned. If supplied with an invalid user name then an error that satisfies // usererrors.UserNameNotValid will be returned. // // GetUserByName will not return users that have been previously removed. GetUserByName(ctx context.Context, name user.Name) (user.User, error) // GetUserByAuth will find and return the user with UUID. If there is no // user for the name and password, then an error that satisfies // usererrors.NotFound will be returned. If supplied with an invalid user name // then an error that satisfies usererrors.UserNameNotValid will be returned. // It will not return users that have been previously removed. GetUserByAuth(ctx context.Context, name user.Name, password auth.Password) (user.User, error) // RemoveUser marks the user as removed and removes any credentials or // activation codes for the current users. Once a user is removed they are no // longer usable in Juju and should never be un removed. // The following error types are possible from this function: // - usererrors.UserNameNotValid: When the username supplied is not valid. // - usererrors.NotFound: If no user by the given UUID exists. RemoveUser(ctx context.Context, name user.Name) error // ReadUserAccessLevelForTarget returns the user access level for the // given user on the given target. A NotValid error is returned if the // subject (user) string is empty, or the target is not valid. Any errors // from the state layer are passed through. // If the access level of a user cannot be found then // [accesserrors.AccessNotFound] is returned. ReadUserAccessLevelForTarget(ctx context.Context, subject user.Name, target permission.ID) (permission.Access, error) }
AccessService is the interface for the access service.
type Config ¶
type Config struct { // AccessService is the user access service for the model. AccessService AccessService // SocketName is the socket file descriptor. SocketName string // NewSocketListener is the function that creates a new socket listener. NewSocketListener func(socketlistener.Config) (SocketListener, error) // Logger is the logger used by the worker. Logger logger.Logger // ControllerModelUUID is the uuid of the controller model. ControllerModelUUID model.UUID }
Config represents configuration for the controlsocket worker.
type ManifoldConfig ¶
type ManifoldConfig struct { DomainServicesName string Logger logger.Logger NewWorker func(Config) (worker.Worker, error) NewSocketListener func(socketlistener.Config) (SocketListener, error) SocketName string }
ManifoldConfig describes the dependencies required by the controlsocket worker.
func (ManifoldConfig) Validate ¶
func (cfg ManifoldConfig) Validate() error
Validate is called by start to check for bad configuration.
type PermissionService ¶
type PermissionService interface { // AddUserPermission adds a user to the model with the given access. // If the user already has the given access, this is a no-op. AddUserPermission(ctx context.Context, username user.Name, access permission.Access) error }
PermissionService is the interface for the permission service.
type SocketListener ¶
type SocketListener interface { worker.Worker }
SocketListener describes a worker that listens on a unix socket.
func NewSocketListener ¶
func NewSocketListener(config socketlistener.Config) (SocketListener, error)
NewSocketListener is a function that creates a new socket listener.