// 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 audit import ( "github.rackspace.com/DCM/gomigrate/core" "github.rackspace.com/DCM/gomigrate/plugins/audit/colotrunks" "github.rackspace.com/DCM/gomigrate/plugins/audit/ipaudit" "github.rackspace.com/DCM/gomigrate/plugins/audit/linkeddevices" "github.rackspace.com/DCM/gomigrate/plugins/audit/migrationportaudit" "github.rackspace.com/DCM/gomigrate/plugins/audit/mirrorports" "github.rackspace.com/DCM/gomigrate/plugins/audit/missingenvironment" "github.rackspace.com/DCM/gomigrate/plugins/audit/networkarchitect" "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("audit", "Audit sub-packages") subPlugins = append( subPlugins, ipaudit.SubPlugin(cmd), colotrunks.SubPlugin(cmd), linkeddevices.SubPlugin(cmd), migrationportaudit.SubPlugin(cmd), mirrorports.SubPlugin(cmd), networkarchitect.SubPlugin(cmd), missingenvironment.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) } } }