func (v *mockFilesystemAccessor) FilesystemParams(filesystems []names.FilesystemTag) ([]params.FilesystemParamsResult, error) { var result []params.FilesystemParamsResult for _, tag := range filesystems { if _, ok := v.provisionedFilesystems[tag.String()]; ok { result = append(result, params.FilesystemParamsResult{ Error: ¶ms.Error{Message: "already provisioned"}, }) } else { filesystemParams := params.FilesystemParams{ FilesystemTag: tag.String(), Size: 1024, Provider: "dummy", Tags: map[string]string{ "very": "fancy", }, } if _, ok := names.FilesystemMachine(tag); ok { // place all volume-backed filesystems on machine-scoped // volumes with the same ID as the filesystem. filesystemParams.VolumeTag = names.NewVolumeTag(tag.Id()).String() } result = append(result, params.FilesystemParamsResult{Result: filesystemParams}) } } return result, nil }
// FilesystemParams returns the parameters for creating or destroying the // given filesystem. func FilesystemParams( f state.Filesystem, storageInstance state.StorageInstance, modelUUID, controllerUUID string, environConfig *config.Config, poolManager poolmanager.PoolManager, registry storage.ProviderRegistry, ) (params.FilesystemParams, error) { var pool string var size uint64 if stateFilesystemParams, ok := f.Params(); ok { pool = stateFilesystemParams.Pool size = stateFilesystemParams.Size } else { filesystemInfo, err := f.Info() if err != nil { return params.FilesystemParams{}, errors.Trace(err) } pool = filesystemInfo.Pool size = filesystemInfo.Size } filesystemTags, err := storageTags(storageInstance, modelUUID, controllerUUID, environConfig) if err != nil { return params.FilesystemParams{}, errors.Annotate(err, "computing storage tags") } providerType, cfg, err := StoragePoolConfig(pool, poolManager, registry) if err != nil { return params.FilesystemParams{}, errors.Trace(err) } result := params.FilesystemParams{ f.Tag().String(), "", // volume tag size, string(providerType), cfg.Attrs(), filesystemTags, nil, // attachment params set by the caller } volumeTag, err := f.Volume() if err == nil { result.VolumeTag = volumeTag.String() } else if err != state.ErrNoBackingVolume { return params.FilesystemParams{}, errors.Trace(err) } return result, nil }
func (v *mockFilesystemAccessor) FilesystemParams(filesystems []names.FilesystemTag) ([]params.FilesystemParamsResult, error) { results := make([]params.FilesystemParamsResult, len(filesystems)) for i, tag := range filesystems { // Parameters are returned regardless of whether the filesystem // exists; this is to support destruction. filesystemParams := params.FilesystemParams{ FilesystemTag: tag.String(), Size: 1024, Provider: "dummy", Tags: map[string]string{ "very": "fancy", }, } if _, ok := names.FilesystemMachine(tag); ok { // place all volume-backed filesystems on machine-scoped // volumes with the same ID as the filesystem. filesystemParams.VolumeTag = names.NewVolumeTag(tag.Id()).String() } results[i] = params.FilesystemParamsResult{Result: filesystemParams} } return results, nil }