Commit 8e05da13 authored by Brendan Burns's avatar Brendan Burns

Merge pull request #12696 from eparis/less-dash-false-positive

Fewer false positives in verify-flag-underscore.sh
parents d7763a1b 56f6ad0c
......@@ -81,7 +81,7 @@ func (s *ProxyServer) AddFlags(fs *pflag.FlagSet) {
fs.StringVar(&s.Master, "master", s.Master, "The address of the Kubernetes API server (overrides any value in kubeconfig)")
fs.IntVar(&s.HealthzPort, "healthz-port", s.HealthzPort, "The port to bind the health check server. Use 0 to disable.")
fs.IPVar(&s.HealthzBindAddress, "healthz-bind-address", s.HealthzBindAddress, "The IP address for the health check server to serve on, defaulting to 127.0.0.1 (set to 0.0.0.0 for all interfaces)")
fs.IntVar(&s.OOMScoreAdj, "oom-score-adj", s.OOMScoreAdj, "The oom_score_adj value for kube-proxy process. Values must be within the range [-1000, 1000]")
fs.IntVar(&s.OOMScoreAdj, "oom-score-adj", s.OOMScoreAdj, "The oom-score-adj value for kube-proxy process. Values must be within the range [-1000, 1000]")
fs.StringVar(&s.ResourceContainer, "resource-container", s.ResourceContainer, "Absolute name of the resource-only container to create and run the Kube-proxy in (Default: /kube-proxy).")
fs.StringVar(&s.Kubeconfig, "kubeconfig", s.Kubeconfig, "Path to kubeconfig file with authorization information (the master location is set by the master flag).")
fs.Var(&s.PortRange, "proxy-port-range", "Range of host ports (beginPort-endPort, inclusive) that may be consumed in order to proxy service traffic. If unspecified (0-0) then ports will be randomly chosen.")
......
......@@ -5,7 +5,7 @@
The implementation of the scheduler HA feature includes:
- Checkpointing by default (`--checkpoint`)
- Large failover-timeout by default (`--failover_timeout`)
- Large failover-timeout by default (`--failover-timeout`)
- Hot-failover w/ multiple scheduler instances (`--ha`)
- Best effort task reconciliation on failover
......
......@@ -56,7 +56,7 @@ with the apiserver API to configure the proxy.
-h, --help=false: help for kube-proxy
--kubeconfig="": Path to kubeconfig file with authorization information (the master location is set by the master flag).
--master="": The address of the Kubernetes API server (overrides any value in kubeconfig)
--oom-score-adj=0: The oom_score_adj value for kube-proxy process. Values must be within the range [-1000, 1000]
--oom-score-adj=0: The oom-score-adj value for kube-proxy process. Values must be within the range [-1000, 1000]
--proxy-port-range=: Range of host ports (beginPort-endPort, inclusive) that may be consumed in order to proxy service traffic. If unspecified (0-0) then ports will be randomly chosen.
--resource-container="": Absolute name of the resource-only container to create and run the Kube-proxy in (Default: /kube-proxy).
```
......
......@@ -98,14 +98,14 @@ HTTP server: The kubelet can also listen for HTTP and respond to a simple API
--minimum-container-ttl-duration=0: Minimum age for a finished container before it is garbage collected. Examples: '300ms', '10s' or '2h45m'
--network-plugin="": <Warning: Alpha feature> The name of the network plugin to be invoked for various events in kubelet/pod lifecycle
--node-status-update-frequency=0: Specifies how often kubelet posts node status to master. Note: be cautious when changing the constant, it must work with nodeMonitorGracePeriod in nodecontroller. Default: 10s
--oom-score-adj=0: The oom_score_adj value for kubelet process. Values must be within the range [-1000, 1000]
--oom-score-adj=0: The oom-score-adj value for kubelet process. Values must be within the range [-1000, 1000]
--pod-cidr="": The CIDR to use for pod IP addresses, only used in standalone mode. In cluster mode, this is obtained from the master.
--pod-infra-container-image="": The image whose network/ipc namespaces containers in each pod will use.
--port=0: The port for the Kubelet to serve on. Note that "kubectl logs" will not work if you set this flag.
--read-only-port=0: The read-only port for the Kubelet to serve on (set to 0 to disable)
--really-crash-for-testing=false: If true, when panics occur crash. Intended for testing.
--register-node=false: Register the node with the apiserver (defaults to true if --api-server is set)
--registry-burst=0: Maximum size of a bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry_qps. Only used if --registry-qps > 0
--registry-burst=0: Maximum size of a bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry-qps. Only used if --registry-qps > 0
--registry-qps=0: If > 0, limit registry pull QPS to this value. If 0, unlimited. [default=0.0]
--resource-container="": Absolute name of the resource-only container to create and run the Kubelet in (Default: /kubelet).
--root-dir="": Directory path for managing kubelet files (volume mounts,etc).
......
......@@ -28,9 +28,6 @@ parser.add_argument("filenames", help="list of files to check, all files if unsp
parser.add_argument("-e", "--skip-exceptions", help="ignore hack/verify-flags/exceptions.txt and print all output", action="store_true")
args = parser.parse_args()
dashRE = re.compile('[-_]')
# Cargo culted from http://stackoverflow.com/questions/898669/how-can-i-detect-if-a-file-is-binary-non-text-in-python
def is_binary(pathname):
"""Return true if the given filename is binary.
......@@ -96,11 +93,10 @@ def normalize_files(rootdir, files):
return newfiles
def line_has_bad_flag(line, flagre):
m = flagre.search(line)
if not m:
return False
if "_" in m.group(0):
return True
results = flagre.findall(line)
for result in results:
if "_" in result:
return True
return False
# The list of files might not be the whole repo. If someone only changed a
......@@ -109,14 +105,16 @@ def line_has_bad_flag(line, flagre):
# If running the golang files finds a new flag not in that file, return an
# error and tell the user to add the flag to the flag list.
def get_flags(rootdir, files):
# use a set for uniqueness
flags = set()
# preload the 'known' flags
pathname = os.path.join(rootdir, "hack/verify-flags/known-flags.txt")
f = open(pathname, 'r')
for line in f.read().splitlines():
flags.add(line)
flags = set(f.read().splitlines())
f.close()
# preload the 'known' flags which don't follow the - standard
pathname = os.path.join(rootdir, "hack/verify-flags/excluded-flags.txt")
f = open(pathname, 'r')
excluded_flags = set(f.read().splitlines())
f.close()
regexs = [ re.compile('Var[P]?\([^,]*, "([^"]*)"'),
......@@ -127,6 +125,7 @@ def get_flags(rootdir, files):
re.compile('.StringSlice[P]?\("([^"]*)",[^,]+,[^)]+\)') ]
new_flags = set()
new_excluded_flags = set()
# walk all the files looking for any flags being declared
for pathname in files:
if not pathname.endswith(".go"):
......@@ -138,11 +137,19 @@ def get_flags(rootdir, files):
for regex in regexs:
matches = matches + regex.findall(data)
for flag in matches:
# if the flag doesn't have a - or _ it is not interesting
if not dashRE.search(flag):
if any(x in flag for x in excluded_flags):
continue
if "_" in flag:
new_excluded_flags.add(flag)
if not "-" in flag:
continue
if flag not in flags:
new_flags.add(flag)
if len(new_excluded_flags) != 0:
print("Found a flag declared with an _ but which is not explicitly listed as a valid flag name in hack/verify-flags/excluded-flags.txt")
print("Are you certain this flag should not have been declared with an - instead?")
print("%s" % "\n".join(new_excluded_flags))
sys.exit(1)
if len(new_flags) != 0:
print("Found flags in golang files not in the list of known flags. Please add these to hack/verify-flags/known-flags.txt")
print("%s" % "\n".join(new_flags))
......@@ -150,12 +157,14 @@ def get_flags(rootdir, files):
return list(flags)
def flags_to_re(flags):
"""turn the list of all flags we found into a regex find both - and _ version"""
"""turn the list of all flags we found into a regex find both - and _ versions"""
dashRE = re.compile('[-_]')
flagREs = []
for flag in flags:
# turn all flag names into regexs which will find both types
newre = dashRE.sub('[-_]', flag)
flagREs.append(newre)
# only match if there is not a leading or trailing alphanumeric character
flagREs.append("[^\w]" + newre + "[^\w]")
# turn that list of regex strings into a single large RE
flagRE = "|".join(flagREs)
flagRE = re.compile(flagRE)
......
check_version_skew
concurrent_rc_syncs
etcd_mutation_timeout
file_content
file_mode
file_perm
fs_type
gke_context
host_port_endpoints
kubecfg_file
kube_master_url
log_flush_frequency
max_in_flight
max_par
new_file_0644
new_file_0666
new_file_0777
pods_per_node
pods_per_node
test_args
up_to
up_to
valid_flag
......@@ -31,7 +31,6 @@ certificate-authority
cgroup-prefix
cgroup-root
chaos-chance
check_version_skew
client-ca-file
client-certificate
client-key
......@@ -43,7 +42,6 @@ cluster-domain
cluster-name
cluster-tag
concurrent-endpoint-syncs
concurrent_rc_syncs
configure-cbr0
container-port
container-runtime
......@@ -62,15 +60,11 @@ docker-endpoint
docker-exec-handler
driver-port
dry-run
dry-run
dry-run
dry-run
duration-sec
e2e-output-dir
enable-debugging-handlers
enable-server
etcd-config
etcd_mutation_timeout
etcd-prefix
etcd-server
etcd-servers
......@@ -85,34 +79,25 @@ experimental-prefix
external-hostname
failover-timeout
file-check-frequency
file_content
file_mode
file_perm
file-suffix
forward-services
framework-name
framework-weburi
fs_type
func-dest
fuzz-iters
gce-project
gce-zone
gke-cluster
gke_context
google-json-key
grace-period
grace-period
grace-period
ha-domain
healthz-bind-address
healthz-port
hostname-override
host-network-sources
host_port_endpoints
http-check-frequency
http-port
ignore-not-found
ignore-not-found
image-gc-high-threshold
image-gc-low-threshold
insecure-bind-address
......@@ -122,7 +107,6 @@ iptables-sync-period
jenkins-host
jenkins-jobs
km-path
kubecfg_file
kubectl-path
kubelet-cadvisor-port
kubelet-certificate-authority
......@@ -138,11 +122,9 @@ kubelet-root-dir
kubelet-sync-frequency
kubelet-timeout
kube-master
kube_master_url
label-columns
last-release-pr
legacy-userspace-proxy
log_flush_frequency
long-running-request-regexp
low-diskspace-threshold-mb
manifest-url
......@@ -152,13 +134,11 @@ max-concurrency
max-connection-bytes-per-sec
maximum-dead-containers
maximum-dead-containers-per-container
max_in_flight
max-log-age
max-log-backups
max-log-size
max-outgoing-burst
max-outgoing-qps
max_par
max-pods
max-requests-inflight
mesos-authentication-principal
......@@ -176,9 +156,6 @@ min-request-timeout
namespace-sync-period
network-plugin
network-plugin-dir
new_file_0644
new_file_0666
new_file_0777
node-instance-group
node-monitor-grace-period
node-monitor-period
......@@ -193,8 +170,6 @@ out-version
pod-cidr
pod-eviction-timeout
pod-infra-container-image
pods_per_node
pods_per_node
policy-config-file
poll-interval
portal-net
......@@ -253,7 +228,6 @@ sync-frequency
system-container
target-port
tcp-services
test_args
tls-cert-file
tls-private-key-file
token-auth-file
......@@ -261,11 +235,8 @@ ttl-secs
unix-socket
update-period
upgrade-target
up_to
up_to
use-kubernetes-cluster-service
user-whitelist
valid_flag
watch-only
whitelist-override-label
www-prefix
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment