github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/upgrades/steps123.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package upgrades 5 6 import ( 7 "github.com/juju/names" 8 9 "github.com/juju/juju/state" 10 "github.com/juju/juju/worker/uniter" 11 ) 12 13 // stateStepsFor123 returns upgrade steps for Juju 1.23 that manipulate state directly. 14 func stateStepsFor123() []Step { 15 return []Step{ 16 &upgradeStep{ 17 description: "add default storage pools", 18 targets: []Target{DatabaseMaster}, 19 run: func(context Context) error { 20 return addDefaultStoragePools(context.State()) 21 }, 22 }, 23 &upgradeStep{ 24 description: "drop old mongo indexes", 25 targets: []Target{DatabaseMaster}, 26 run: func(context Context) error { 27 return state.DropOldIndexesv123(context.State()) 28 }, 29 }, &upgradeStep{ 30 description: "migrate envuuid to env-uuid in envUsersC", 31 targets: []Target{DatabaseMaster}, 32 run: func(context Context) error { 33 return state.AddEnvUUIDToEnvUsersDoc(context.State()) 34 }, 35 }, 36 &upgradeStep{ 37 description: "move blocks from environment to state", 38 targets: []Target{DatabaseMaster}, 39 run: func(context Context) error { 40 return moveBlocksFromEnvironToState(context) 41 }, 42 }, &upgradeStep{ 43 description: "insert userenvnameC doc for each environment", 44 targets: []Target{DatabaseMaster}, 45 run: func(context Context) error { 46 return state.AddUniqueOwnerEnvNameForEnvirons(context.State()) 47 }, 48 }, &upgradeStep{ 49 description: "add name field to users and lowercase _id field", 50 targets: []Target{DatabaseMaster}, 51 run: func(context Context) error { 52 return state.AddNameFieldLowerCaseIdOfUsers(context.State()) 53 }, 54 }, &upgradeStep{ 55 description: "add life field to IP addresses", 56 targets: []Target{DatabaseMaster}, 57 run: func(context Context) error { 58 return state.AddLifeFieldOfIPAddresses(context.State()) 59 }, 60 }, &upgradeStep{ 61 description: "add instance id field to IP addresses", 62 targets: []Target{DatabaseMaster}, 63 run: func(context Context) error { 64 return state.AddInstanceIdFieldOfIPAddresses(context.State()) 65 }, 66 }, &upgradeStep{ 67 description: "lower case _id of envUsers", 68 targets: []Target{DatabaseMaster}, 69 run: func(context Context) error { 70 return state.LowerCaseEnvUsersID(context.State()) 71 }, 72 }, &upgradeStep{ 73 description: "add leadership settings documents for all services", 74 targets: []Target{DatabaseMaster}, 75 run: func(context Context) error { 76 return state.AddLeadershipSettingsDocs(context.State()) 77 }, 78 }, 79 } 80 } 81 82 // stepsFor123 returns upgrade steps for Juju 1.23 that only need the API. 83 func stepsFor123() []Step { 84 return []Step{ 85 &upgradeStep{ 86 description: "add environment UUID to agent config", 87 targets: []Target{AllMachines}, 88 run: addEnvironmentUUIDToAgentConfig, 89 }, 90 &upgradeStep{ 91 description: "add Stopped field to uniter state", 92 targets: []Target{AllMachines}, 93 run: func(context Context) error { 94 config := context.AgentConfig() 95 tag, ok := config.Tag().(names.UnitTag) 96 if !ok { 97 // not a Unit; skipping 98 return nil 99 } 100 return uniter.AddStoppedFieldToUniterState(tag, config.DataDir()) 101 }, 102 }, 103 } 104 }