github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/client/storage/poolremove_test.go (about) 1 // Copyright 2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package storage_test 5 6 import ( 7 "fmt" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/rpc/params" 13 "github.com/juju/juju/storage" 14 "github.com/juju/juju/storage/provider" 15 ) 16 17 type poolRemoveSuite struct { 18 baseStorageSuite 19 } 20 21 var _ = gc.Suite(&poolRemoveSuite{}) 22 23 func (s *poolRemoveSuite) createPools(c *gc.C, num int) { 24 var err error 25 for i := 0; i < num; i++ { 26 poolName := fmt.Sprintf("%v%v", tstName, i) 27 s.baseStorageSuite.pools[poolName], err = 28 storage.NewConfig(poolName, provider.LoopProviderType, map[string]interface{}{"zip": "zap"}) 29 c.Assert(err, jc.ErrorIsNil) 30 } 31 } 32 33 func (s *poolRemoveSuite) TestRemovePool(c *gc.C) { 34 s.createPools(c, 1) 35 poolName := fmt.Sprintf("%v%v", tstName, 0) 36 37 args := params.StoragePoolDeleteArgs{ 38 Pools: []params.StoragePoolDeleteArg{{ 39 Name: poolName, 40 }}, 41 } 42 results, err := s.api.RemovePool(args) 43 c.Assert(err, jc.ErrorIsNil) 44 c.Assert(results.Results, gc.HasLen, 1) 45 c.Assert(results.Results[0].Error, gc.IsNil) 46 47 pools, err := s.poolManager.List() 48 c.Assert(err, jc.ErrorIsNil) 49 c.Assert(pools, gc.HasLen, 0) 50 } 51 52 func (s *poolRemoveSuite) TestRemoveNotExists(c *gc.C) { 53 poolName := fmt.Sprintf("%v%v", tstName, 0) 54 55 args := params.StoragePoolDeleteArgs{ 56 Pools: []params.StoragePoolDeleteArg{{ 57 Name: poolName, 58 }}, 59 } 60 results, err := s.api.RemovePool(args) 61 c.Assert(err, jc.ErrorIsNil) 62 c.Assert(results.Results, gc.HasLen, 1) 63 c.Assert(results.Results[0].Error, gc.IsNil) 64 65 pools, err := s.poolManager.List() 66 c.Assert(err, jc.ErrorIsNil) 67 c.Assert(pools, gc.HasLen, 0) 68 } 69 70 func (s *poolRemoveSuite) TestRemoveInUse(c *gc.C) { 71 s.createPools(c, 1) 72 poolName := fmt.Sprintf("%v%v", tstName, 0) 73 s.poolsInUse = []string{poolName} 74 args := params.StoragePoolDeleteArgs{ 75 Pools: []params.StoragePoolDeleteArg{{ 76 Name: poolName, 77 }}, 78 } 79 results, err := s.api.RemovePool(args) 80 c.Assert(err, jc.ErrorIsNil) 81 c.Assert(results.Results, gc.HasLen, 1) 82 c.Assert(results.Results[0].Error, gc.ErrorMatches, fmt.Sprintf("storage pool %q in use", poolName)) 83 84 pools, err := s.poolManager.List() 85 c.Assert(err, jc.ErrorIsNil) 86 c.Assert(pools, gc.HasLen, 1) 87 } 88 89 func (s *poolRemoveSuite) TestRemoveSomeInUse(c *gc.C) { 90 s.createPools(c, 2) 91 poolNameInUse := fmt.Sprintf("%v%v", tstName, 0) 92 poolNameNotInUse := fmt.Sprintf("%v%v", tstName, 1) 93 s.poolsInUse = []string{poolNameInUse} 94 args := params.StoragePoolDeleteArgs{ 95 Pools: []params.StoragePoolDeleteArg{{ 96 Name: poolNameInUse, 97 }, { 98 Name: poolNameNotInUse, 99 }}, 100 } 101 results, err := s.api.RemovePool(args) 102 c.Assert(err, jc.ErrorIsNil) 103 c.Assert(results.Results, gc.HasLen, 2) 104 c.Assert(results.Results[0].Error, gc.ErrorMatches, fmt.Sprintf("storage pool %q in use", poolNameInUse)) 105 c.Assert(results.Results[1].Error, gc.IsNil) 106 107 pools, err := s.poolManager.List() 108 c.Assert(err, jc.ErrorIsNil) 109 c.Assert(pools, gc.HasLen, 1) 110 }