github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/apiserver/storageprovisioner/state.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package storageprovisioner 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/names" 9 10 "github.com/juju/juju/instance" 11 "github.com/juju/juju/state" 12 ) 13 14 type provisionerState interface { 15 state.EntityFinder 16 state.ModelAccessor 17 18 MachineInstanceId(names.MachineTag) (instance.Id, error) 19 BlockDevices(names.MachineTag) ([]state.BlockDeviceInfo, error) 20 21 WatchBlockDevices(names.MachineTag) state.NotifyWatcher 22 WatchMachine(names.MachineTag) (state.NotifyWatcher, error) 23 WatchModelFilesystems() state.StringsWatcher 24 WatchEnvironFilesystemAttachments() state.StringsWatcher 25 WatchMachineFilesystems(names.MachineTag) state.StringsWatcher 26 WatchMachineFilesystemAttachments(names.MachineTag) state.StringsWatcher 27 WatchModelVolumes() state.StringsWatcher 28 WatchEnvironVolumeAttachments() state.StringsWatcher 29 WatchMachineVolumes(names.MachineTag) state.StringsWatcher 30 WatchMachineVolumeAttachments(names.MachineTag) state.StringsWatcher 31 WatchVolumeAttachment(names.MachineTag, names.VolumeTag) state.NotifyWatcher 32 33 StorageInstance(names.StorageTag) (state.StorageInstance, error) 34 35 Filesystem(names.FilesystemTag) (state.Filesystem, error) 36 FilesystemAttachment(names.MachineTag, names.FilesystemTag) (state.FilesystemAttachment, error) 37 38 Volume(names.VolumeTag) (state.Volume, error) 39 VolumeAttachment(names.MachineTag, names.VolumeTag) (state.VolumeAttachment, error) 40 VolumeAttachments(names.VolumeTag) ([]state.VolumeAttachment, error) 41 42 RemoveFilesystem(names.FilesystemTag) error 43 RemoveFilesystemAttachment(names.MachineTag, names.FilesystemTag) error 44 RemoveVolume(names.VolumeTag) error 45 RemoveVolumeAttachment(names.MachineTag, names.VolumeTag) error 46 47 SetFilesystemInfo(names.FilesystemTag, state.FilesystemInfo) error 48 SetFilesystemAttachmentInfo(names.MachineTag, names.FilesystemTag, state.FilesystemAttachmentInfo) error 49 SetVolumeInfo(names.VolumeTag, state.VolumeInfo) error 50 SetVolumeAttachmentInfo(names.MachineTag, names.VolumeTag, state.VolumeAttachmentInfo) error 51 } 52 53 type stateShim struct { 54 *state.State 55 } 56 57 func (s stateShim) MachineInstanceId(tag names.MachineTag) (instance.Id, error) { 58 m, err := s.Machine(tag.Id()) 59 if err != nil { 60 return "", errors.Trace(err) 61 } 62 return m.InstanceId() 63 } 64 65 func (s stateShim) WatchMachine(tag names.MachineTag) (state.NotifyWatcher, error) { 66 m, err := s.Machine(tag.Id()) 67 if err != nil { 68 return nil, errors.Trace(err) 69 } 70 return m.Watch(), nil 71 }