in plugins/vpc-shared-eni/config/kubernetes.go [53:94]
func parseKubernetesArgs(netConfig *NetConfig, args *cniSkel.CmdArgs, isAddCmd bool) error {
if args == nil || args.Args == "" {
return nil
}
// Parse the arguments in CNI_ARGS environment variable.
var ka kubernetesArgs
ka.IgnoreUnknown = ignoreUnknown
err := cniTypes.LoadArgs(args.Args, &ka)
if err != nil {
return fmt.Errorf("failed to parse runtime args: %v", err)
}
kc := netConfig.Kubernetes
kc.Namespace = string(ka.K8S_POD_NAMESPACE)
kc.PodName = string(ka.K8S_POD_NAME)
kc.PodInfraContainerID = string(ka.K8S_POD_INFRA_CONTAINER_ID)
// The only additional information we need to query from API server is the pod IP address,
// which is required only for ADD commands. Also the API server may have deleted the pod
// object already in the DEL path.
if !isAddCmd {
return nil
}
if kc.Namespace == "" || kc.PodName == "" {
return fmt.Errorf("missing required args %v", kc)
}
// Insert the actual namespace of the pod to the DNS suffix search list.
for i, suffix := range netConfig.DNS.Search {
netConfig.DNS.Search[i] = strings.Replace(suffix, namespacePlaceholder, kc.Namespace, 1)
}
// Retrieve any missing information not available in netconfig.
if retrievePodConfigHandler != nil && len(netConfig.IPAddresses) == 0 {
err = retrievePodConfigHandler(netConfig)
}
return err
}