flag.StringVar(&TestContext.GatherKubeSystemResourceUsageData,"gather-resource-usage","false","If set to 'true' or 'all' framework will be monitoring resource usage of system all add-ons in (some) e2e tests, if set to 'master' framework will be monitoring master node only, if set to 'none' of 'false' monitoring will be turned off.")
flag.BoolVar(&TestContext.GatherLogsSizes,"gather-logs-sizes",false,"If set to true framework will be monitoring logs sizes on all machines running e2e tests.")
flag.BoolVar(&TestContext.GatherMetricsAfterTest,"gather-metrics-at-teardown",false,"If set to true framwork will gather metrics from all components after each test.")
flag.StringVar(&TestContext.OutputPrintType,"output-print-type","hr","Comma separated list: 'hr' for human readable summaries 'json' for JSON ones.")
flag.BoolVar(&TestContext.DumpLogsOnFailure,"dump-logs-on-failure",true,"If set to true test will dump data about the namespace in which test was running.")
flag.BoolVar(&TestContext.DeleteNamespace,"delete-namespace",true,"If true tests will delete namespace after completion. It is only designed to make debugging easier, DO NOT turn it off by default.")
flag.IntVar(&TestContext.AllowedNotReadyNodes,"allowed-not-ready-nodes",0,"If non-zero, framework will allow for that many non-ready nodes when checking for all ready nodes.")
flag.StringVar(&TestContext.ReportPrefix,"report-prefix","","Optional prefix for JUnit XML reports. Default is empty, which doesn't prepend anything to the default name.")
flag.StringVar(&TestContext.ReportDir,"report-dir","","Path to the directory where the JUnit XML reports should be saved. Default is empty, which doesn't generate these reports.")
flag.StringVar(&TestContext.KubeConfig,clientcmd.RecommendedConfigPathFlag,os.Getenv(clientcmd.RecommendedConfigPathEnvVar),"Path to kubeconfig containing embedded authinfo.")
flag.StringVar(&TestContext.KubeContext,clientcmd.FlagContext,"","kubeconfig context to use/override. If unset, will use value from 'current-context'")
flag.StringVar(&TestContext.KubeVolumeDir,"volume-dir","/var/lib/kubelet","Path to the directory containing the kubelet volumes.")
flag.StringVar(&TestContext.CertDir,"cert-dir","","Path to the directory containing the certs. Default is empty, which doesn't use certs.")
flag.StringVar(&TestContext.RepoRoot,"repo-root","../../","Root directory of kubernetes repository, for finding test files.")
flag.StringVar(&TestContext.Provider,"provider","","The name of the Kubernetes provider (gce, gke, local, vagrant, etc.)")
flag.StringVar(&TestContext.KubectlPath,"kubectl-path","kubectl","The kubectl binary to use. For development, you might use 'cluster/kubectl.sh' here.")
flag.StringVar(&TestContext.OutputDir,"e2e-output-dir","/tmp","Output directory for interesting/useful test data, like performance data, benchmarks, and other metrics.")
flag.StringVar(&TestContext.Prefix,"prefix","e2e","A prefix to be added to cloud resources created during testing.")
flag.StringVar(&cloudConfig.NodeInstanceGroup,"node-instance-group","","Name of the managed instance group for nodes. Valid only for gce, gke or aws. If there is more than one group: comma separated list of groups.")
flag.IntVar(&cloudConfig.NumNodes,"num-nodes",-1,"Number of nodes in the cluster")
flag.StringVar(&cloudConfig.ClusterTag,"cluster-tag","","Tag used to identify resources. Only required if provider is aws.")
flag.IntVar(&TestContext.MinStartupPods,"minStartupPods",0,"The number of pods which we need to see in 'Running' state with a 'Ready' condition of true, before we try running tests. This is useful in any cluster which needs some base pod-based services running before it can be used.")
flag.DurationVar(&TestContext.SystemPodsStartupTimeout,"system-pods-startup-timeout",10*time.Minute,"Timeout for waiting for all system pods to be running before starting tests.")
flag.StringVar(&TestContext.UpgradeTarget,"upgrade-target","ci/latest","Version to upgrade to (e.g. 'release/stable', 'release/latest', 'ci/latest', '0.19.1', '0.19.1-669-gabac8c8') if doing an upgrade test.")
flag.StringVar(&TestContext.PrometheusPushGateway,"prom-push-gateway","","The URL to prometheus gateway, so that metrics can be pushed during e2es and scraped by prometheus. Typically something like 127.0.0.1:9091.")
flag.BoolVar(&TestContext.CleanStart,"clean-start",false,"If true, purge all namespaces except default and system before running tests. This serves to Cleanup test namespaces from failed/interrupted e2e runs in a long-lived cluster.")
flag.BoolVar(&TestContext.GarbageCollectorEnabled,"garbage-collector-enabled",true,"Set to true if the garbage collector is enabled in the kube-apiserver and kube-controller-manager, then some tests will rely on the garbage collector to delete dependent resources.")
// TODO: uncomment this when the flag is re-enabled in kubelet
//flag.BoolVar(&TestContext.CgroupsPerQOS, "cgroups-per-qos", false, "Enable creation of QoS cgroup hierarchy, if true top level QoS and pod cgroups are created.")
flag.StringVar(&TestContext.EvictionHard,"eviction-hard","memory.available<250Mi,imagefs.available<10%","The hard eviction thresholds. If set, pods get evicted when the specified resources drop below the thresholds.")