Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 35 additions & 23 deletions tools/acncli/api/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ const (
Singletenancy = "singletenancy"
Multitenancy = "multitenancy"

// Multitenant Config flags
FlagCNSUrl = "cnsurl"
FlagEnableExactMatchForPodName = "enableexactmatchforpodname"

// os flags
Linux = "linux"
Windows = "windows"
Expand Down Expand Up @@ -66,35 +70,43 @@ const (
Transparent = "transparent"
Bridge = "bridge"
Azure0 = "azure0"

// Multitenancy defaults
DefaultCNSUrl = "http://localhost:10090"
DefaultEnableExactMatchForPodName = "false"
)

var (
// Concatenating flags to the env ensures consistency between flags and env's for viper and cobra
EnvCNIOS = EnvPrefix + "_" + strings.ToUpper(FlagOS)
EnvCNIType = EnvPrefix + "_" + strings.ToUpper(FlagTenancy)
EnvCNISourceDir = EnvPrefix + "_" + "SRC_DIR"
EnvCNIDestinationBinDir = EnvPrefix + "_" + "BIN_DIR"
EnvCNIDestinationConflistDir = EnvPrefix + "_" + "CONFLIST_DIR"
EnvCNIIPAMType = EnvPrefix + "_" + strings.ToUpper(FlagIPAM)
EnvCNIMode = EnvPrefix + "_" + strings.ToUpper(FlagMode)
EnvCNIExemptBins = EnvPrefix + "_" + strings.ToUpper(FlagExempt)
EnvCNILogFile = EnvPrefix + "_" + "LOG_FILE"
EnvCNIOS = EnvPrefix + "_" + strings.ToUpper(FlagOS)
EnvCNIType = EnvPrefix + "_" + strings.ToUpper(FlagTenancy)
EnvCNISourceDir = EnvPrefix + "_" + "SRC_DIR"
EnvCNIDestinationBinDir = EnvPrefix + "_" + "BIN_DIR"
EnvCNIDestinationConflistDir = EnvPrefix + "_" + "CONFLIST_DIR"
EnvCNIIPAMType = EnvPrefix + "_" + strings.ToUpper(FlagIPAM)
EnvCNIMode = EnvPrefix + "_" + strings.ToUpper(FlagMode)
EnvCNIExemptBins = EnvPrefix + "_" + strings.ToUpper(FlagExempt)
EnvCNILogFile = EnvPrefix + "_" + "LOG_FILE"
EnvCNICNSUrl = EnvPrefix + "_" + strings.ToUpper(FlagCNSUrl)
EnvCNIEnableExactMatchForPodName = EnvPrefix + "_" + strings.ToUpper(FlagEnableExactMatchForPodName)

Defaults = map[string]string{
FlagOS: Linux,
FlagTenancy: Singletenancy,
FlagIPAM: AzureVNETIPAM,
FlagExempt: AzureTelemetryBin + "," + AzureTelemetryConfig,
FlagMode: Transparent,
FlagTarget: Local,
FlagBinDirectory: DefaultBinDirLinux,
FlagConflistDirectory: DefaultConflistDirLinux,
FlagVersion: Packaged,
FlagLogFilePath: DefaultLogFile,
EnvCNILogFile: EnvCNILogFile,
EnvCNISourceDir: DefaultSrcDirLinux,
EnvCNIDestinationBinDir: DefaultBinDirLinux,
EnvCNIDestinationConflistDir: DefaultConflistDirLinux,
FlagOS: Linux,
FlagTenancy: Singletenancy,
FlagIPAM: AzureVNETIPAM,
FlagExempt: AzureTelemetryBin + "," + AzureTelemetryConfig,
FlagMode: Transparent,
FlagTarget: Local,
FlagBinDirectory: DefaultBinDirLinux,
FlagConflistDirectory: DefaultConflistDirLinux,
FlagVersion: Packaged,
FlagLogFilePath: DefaultLogFile,
FlagCNSUrl: DefaultCNSUrl,
FlagEnableExactMatchForPodName: DefaultEnableExactMatchForPodName,
EnvCNILogFile: EnvCNILogFile,
EnvCNISourceDir: DefaultSrcDirLinux,
EnvCNIDestinationBinDir: DefaultBinDirLinux,
EnvCNIDestinationConflistDir: DefaultConflistDirLinux,
}

DefaultToggles = map[string]bool{
Expand Down
8 changes: 6 additions & 2 deletions tools/acncli/cmd/cni/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ func InstallCNICmd() *cobra.Command {
return err
}

// only allow windows and linux binaries
// only allow singletenancy and multitenancy
if err := envs.SetCNIType(viper.GetString(c.FlagTenancy)); err != nil {
return err
}

// only allow windows and linux binaries
// only allow bridge and transparent modes
if err := envs.SetCNIDatapathMode(viper.GetString(c.FlagMode)); err != nil {
return err
}
Expand All @@ -53,6 +53,8 @@ func InstallCNICmd() *cobra.Command {
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)

return i.InstallLocal(envs)
},
Expand All @@ -66,6 +68,8 @@ func InstallCNICmd() *cobra.Command {
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")

return cmd
}
8 changes: 6 additions & 2 deletions tools/acncli/cmd/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ func InstallCNICmd() *cobra.Command {
return err
}

// only allow windows and linux binaries
// only allow singletenancy and multitenancy
if err := envs.SetCNIType(viper.GetString(c.FlagTenancy)); err != nil {
return err
}

// only allow windows and linux binaries
// only allow bridge and transparent modes
if err := envs.SetCNIDatapathMode(viper.GetString(c.FlagMode)); err != nil {
return err
}
Expand All @@ -53,6 +53,8 @@ func InstallCNICmd() *cobra.Command {
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)

return i.InstallLocal(envs)
},
Expand All @@ -66,6 +68,8 @@ func InstallCNICmd() *cobra.Command {
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")

return cmd
}
6 changes: 6 additions & 0 deletions tools/acncli/installer/conflist.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,12 @@ func ModifyConflists(conflistpath string, installerConf InstallerConfig, perm os
netconfig.Bridge = c.Azure0
}

// if multitenant, update multitenant configs
if netconfig.MultiTenancy {
netconfig.CNSUrl = installerConf.CNSURL
netconfig.EnableExactMatchForPodName = installerConf.EnableExactMatchForPodName
}

// set conf back in conflist
conflist.Plugins[confindex] = netconfig

Expand Down
20 changes: 11 additions & 9 deletions tools/acncli/installer/install.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,16 @@ import (
)

type InstallerConfig struct {
SrcDir string
DstBinDir string
DstConflistDir string
IPAMType string
ExemptBins map[string]bool
OSType string
CNITenancy string
CNIMode string
SrcDir string
DstBinDir string
DstConflistDir string
IPAMType string
ExemptBins map[string]bool
OSType string
CNITenancy string
CNIMode string
CNSURL string
EnableExactMatchForPodName bool
}

func (i *InstallerConfig) SetExempt(exempt []string) {
Expand Down Expand Up @@ -53,7 +55,7 @@ func (i *InstallerConfig) SetCNIType(cniType string) error {
}

func (i *InstallerConfig) SetCNIDatapathMode(cniMode string) error {
// get paths for singletenancy and multitenancy
// check transparent or bridge mode only
if cniMode != "" {
if strings.EqualFold(cniMode, c.Transparent) || strings.EqualFold(cniMode, c.Bridge) {
i.CNIMode = cniMode
Expand Down