func parseKubernetesArgs()

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
}