func (s *FilesystemStateSuite) TestSetFilesystemInfoImmutable(c *gc.C) { _, u, storageTag := s.setupSingleStorage(c, "filesystem", "rootfs") err := s.State.AssignUnit(u, state.AssignCleanEmpty) c.Assert(err, jc.ErrorIsNil) filesystem := s.storageInstanceFilesystem(c, storageTag) filesystemTag := filesystem.FilesystemTag() assignedMachineId, err := u.AssignedMachineId() c.Assert(err, jc.ErrorIsNil) machine, err := s.State.Machine(assignedMachineId) c.Assert(err, jc.ErrorIsNil) err = machine.SetProvisioned("inst-id", "fake_nonce", nil) c.Assert(err, jc.ErrorIsNil) filesystemInfoSet := state.FilesystemInfo{Size: 123, FilesystemId: "fs-id"} err = s.State.SetFilesystemInfo(filesystem.FilesystemTag(), filesystemInfoSet) c.Assert(err, jc.ErrorIsNil) // The first call to SetFilesystemInfo takes the pool name from // the params; the second does not, but it must not change // either. Callers are expected to get the existing info and // update it, leaving immutable values intact. err = s.State.SetFilesystemInfo(filesystem.FilesystemTag(), filesystemInfoSet) c.Assert(err, gc.ErrorMatches, `cannot set info for filesystem "0/0": cannot change pool from "rootfs" to ""`) filesystemInfoSet.Pool = "rootfs" s.assertFilesystemInfo(c, filesystemTag, filesystemInfoSet) }
func (s *FilesystemStateSuite) TestFilesystemInfo(c *gc.C) { _, u, storageTag := s.setupSingleStorage(c, "filesystem", "rootfs") err := s.State.AssignUnit(u, state.AssignCleanEmpty) c.Assert(err, jc.ErrorIsNil) assignedMachineId, err := u.AssignedMachineId() c.Assert(err, jc.ErrorIsNil) machineTag := names.NewMachineTag(assignedMachineId) filesystem := s.storageInstanceFilesystem(c, storageTag) filesystemTag := filesystem.FilesystemTag() s.assertFilesystemUnprovisioned(c, filesystemTag) s.assertFilesystemAttachmentUnprovisioned(c, machineTag, filesystemTag) machine, err := s.State.Machine(assignedMachineId) c.Assert(err, jc.ErrorIsNil) err = machine.SetProvisioned("inst-id", "fake_nonce", nil) c.Assert(err, jc.ErrorIsNil) filesystemInfo := state.FilesystemInfo{FilesystemId: "fs-123", Size: 456} err = s.State.SetFilesystemInfo(filesystemTag, filesystemInfo) c.Assert(err, jc.ErrorIsNil) filesystemInfo.Pool = "rootfs" // taken from params s.assertFilesystemInfo(c, filesystemTag, filesystemInfo) s.assertFilesystemAttachmentUnprovisioned(c, machineTag, filesystemTag) filesystemAttachmentInfo := state.FilesystemAttachmentInfo{MountPoint: "/srv"} err = s.State.SetFilesystemAttachmentInfo(machineTag, filesystemTag, filesystemAttachmentInfo) c.Assert(err, jc.ErrorIsNil) s.assertFilesystemAttachmentInfo(c, machineTag, filesystemTag, filesystemAttachmentInfo) }