// 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 ip import ( "github.rackspace.com/DCM/gomigrate/core" "github.rackspace.com/DCM/gomigrate/plugins/ip/carve" "github.rackspace.com/DCM/gomigrate/plugins/ip/primary" //"github.rackspace.com/DCM/gomigrate/plugins/ip/drac" "github.rackspace.com/DCM/gomigrate/plugins/ip/drac" "github.rackspace.com/DCM/gomigrate/plugins/ip/servicenet" "github.rackspace.com/gorax/gokeys" ) var ( subPlugins = make([]core.Plugin, 0) ) // Plugin function will return a argparse.Command type back to the parent parser // nolint:typecheck func Plugin(p *core.Parser) core.Plugin { cmd := p.NewCommand("ip", "Manage IP Assignments") subPlugins = append( subPlugins, drac.SubPlugin(cmd), servicenet.SubPlugin(cmd), primary.SubPlugin(cmd), carve.SubPlugin(cmd), ) return core.Plugin{CMD: cmd, Func: pluginFunc} } func pluginFunc(cfg gokeys.Settings) { for _, p := range subPlugins { if p.CMD.Happened() { p.Func(cfg) } } }