tools/acncli/cmd/cni/install.go (58 lines of code) (raw):

//go:build !ignore_uncovered // +build !ignore_uncovered package cni import ( "fmt" "strings" c "github.com/Azure/azure-container-networking/tools/acncli/api" i "github.com/Azure/azure-container-networking/tools/acncli/installer" "github.com/spf13/cobra" "github.com/spf13/viper" ) // install CNI will install CNI to a local machine func InstallCmd() *cobra.Command { cmd := &cobra.Command{ Use: "install", Short: "Installs an ACN component", } cmd.AddCommand(InstallCNICmd()) return cmd } func InstallCNICmd() *cobra.Command { cmd := &cobra.Command{ Use: "cni", Short: "Installs CNI and conflist ", RunE: func(cmd *cobra.Command, args []string) error { envs := i.InstallerConfig{ ExemptBins: make(map[string]bool), } // only allow windows and linux binaries if err := envs.SetOSType(viper.GetString(c.FlagOS)); err != nil { return err } // only allow singletenancy and multitenancy if err := envs.SetCNIType(viper.GetString(c.FlagTenancy)); err != nil { return err } // only allow bridge and transparent modes if err := envs.SetCNIDatapathMode(viper.GetString(c.FlagMode)); err != nil { return err } envs.SetExempt(strings.Split(strings.Replace(strings.ToLower(viper.GetString(c.FlagExempt)), " ", "", -1), ",")) envs.SrcDir = fmt.Sprintf("%s%s/%s/", c.DefaultSrcDirLinux, envs.OSType, envs.CNITenancy) envs.DstBinDir = viper.GetString(c.FlagBinDirectory) envs.DstConflistDir = viper.GetString(c.FlagConflistDirectory) envs.IPAMType = viper.GetString(c.FlagIPAM) envs.CNSURL = viper.GetString(c.FlagCNSUrl) envs.EnableExactMatchForPodName = viper.GetBool(c.FlagEnableExactMatchForPodName) envs.NetworkName = viper.GetString(c.FlagNetworkName) return i.InstallLocal(envs) }, } cmd.Flags().String(c.FlagMode, c.Defaults[c.FlagMode], fmt.Sprintf("Datapath mode for Azure CNI, options are %s and %s", c.Transparent, c.Bridge)) cmd.Flags().String(c.FlagTarget, c.Defaults[c.FlagTarget], fmt.Sprintf("Location to install Azure CNI, options are %s and %s", c.Local, c.Cluster)) cmd.Flags().String(c.FlagIPAM, c.Defaults[c.FlagIPAM], fmt.Sprintf("Specify which IPAM source to use, options are %s and %s", c.AzureVNETIPAM, c.AzureCNSIPAM)) cmd.Flags().String(c.FlagOS, c.Defaults[c.FlagOS], fmt.Sprintf("Specify which operating system to install, options are %s and %s", c.Linux, c.Windows)) cmd.Flags().String(c.FlagTenancy, c.Defaults[c.FlagTenancy], fmt.Sprintf("Tenancy option for Azure CNI, options are %s and %s", c.Singletenancy, c.Multitenancy)) cmd.Flags().String(c.FlagBinDirectory, c.Defaults[c.FlagBinDirectory], "Destination where Azure CNI binaries will be installed") cmd.Flags().String(c.FlagConflistDirectory, c.Defaults[c.FlagConflistDirectory], "Destination where Azure CNI conflists will be installed") cmd.Flags().String(c.FlagExempt, c.Defaults[c.FlagExempt], "Exempt files that won't be installed") cmd.Flags().String(c.FlagCNSUrl, c.Defaults[c.FlagCNSUrl], "CNS URL if multitenancy") cmd.Flags().String(c.FlagEnableExactMatchForPodName, c.Defaults[c.FlagEnableExactMatchForPodName], "Enable exact match for pod name if multitenancy") cmd.Flags().String(c.FlagNetworkName, c.Defaults[c.FlagNetworkName], "Network name to create pods in") return cmd }