// 2020 Rackspace, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"): you may // not use this file except in compliance with the License. You may obtain // a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations // under the License. package migrate import ( "github.rackspace.com/DCM/gomigrate/core" "github.rackspace.com/gorax/gokeys" ) var ( argDeallocateDevices *[]int argDeallocateMG *string argDeallocateYes *bool argLocDevices *[]int argLocMG *string argXlateDevices *[]int argXlateMG *string subPlugins = make([]core.Plugin, 0) ) // Plugin function will return an argparse.Command type back to the parent parser // nolint:typecheck func Plugin(p *core.Parser) core.Plugin { cmd := p.NewCommand("migrate", "Migrate DCX data after a MG is completed") subPlugins = append( subPlugins, fromDeallocateIPsPlugin(cmd), fromLocationsPlugin(cmd), fromTranslationsPlugin(cmd), ) return core.Plugin{CMD: cmd, Func: pluginFunc} } func pluginFunc(cfg gokeys.Settings) { for _, p := range subPlugins { if p.CMD.Happened() { p.Func(cfg) } } }