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  }