Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mergebot Train - May 4th #2846

Merged
merged 37 commits into from May 8, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
07cd158
accessability to zk is requirement for a marathon start
kensipe Jun 26, 2017
fed5a80
correction to the name of zk name
kensipe Jun 27, 2017
1bbbb8d
Increase executor reregistration timeout to 10 seconds.
karya0 Apr 3, 2018
a01c031
Merge branch 'master' into kapil/executor_reregistration_timeout
karya0 Apr 21, 2018
fe9bf10
Bumped Mesos to a1c6a7a.
mesosphere-ci Apr 25, 2018
ec029a5
Update mesos-modules
urbanserj Apr 26, 2018
8c12bcf
Add validation for vtep_mtu
urbanserj Apr 26, 2018
0cb0561
Bump dcos-net
urbanserj Apr 26, 2018
6e0f5e7
Add owners from the Mesos pool of committers.
rukletsov Apr 27, 2018
2649ac4
Add checks for ftype=1 for docker and mesos directories if using XFS
Apr 18, 2018
5ecdb07
Simplified docker root dir detection and removed hardcoded /var/lib/d…
Apr 23, 2018
184405c
Escape docker info syntax to not collide with gen.template variable s…
Apr 24, 2018
0bf6c6d
Fix logic for checking /var/lib and added some whitespace
Apr 24, 2018
c8a1018
Use mesos_agent_work_dir instead of /var/lib/mesos
Apr 25, 2018
8ff277f
Docker 1.12 does not support -f for docker info
Apr 25, 2018
23eae70
Fixed typos
Apr 25, 2018
1c72e4e
Remove unecessary parent directory check
Apr 26, 2018
eeb1cfd
Readability improvements
Apr 27, 2018
525d7ca
Fail advanced install script if ifconfig is not available
branden Apr 27, 2018
3f840ee
Bump dcos-checks
branden Apr 28, 2018
6303a1d
Add ifconfig to poststart node checks
branden Apr 27, 2018
89d8ca1
Add /etc/dcos.network
urbanserj May 1, 2018
eecf6a3
Add networkd command
urbanserj May 1, 2018
05f727f
Mark dcos-net ip links as unmanaged
urbanserj Apr 30, 2018
77fa78c
Move networkd helper to dcos-net-setup
urbanserj Apr 30, 2018
847ed73
Fix flask-compress import
branden Apr 30, 2018
9ed4943
remove owners who no longer work at mesosphere
margaret Apr 26, 2018
daf3e62
Merge #2833
May 7, 2018
fba93e6
Merge #2819
May 7, 2018
2d347c4
Merge #2816
May 7, 2018
9358a13
Merge #2808
May 7, 2018
f446876
Merge #2793
May 7, 2018
19f5a20
Merge #2768
May 7, 2018
acc6f11
Merge #2693
May 7, 2018
83854ce
Merge #1690
May 7, 2018
dc0d4c0
Merge #2813
May 7, 2018
3251c40
Revert "Merge #2808"
May 8, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
46 changes: 45 additions & 1 deletion gen/build_deploy/bash.py
Expand Up @@ -361,6 +361,47 @@ def validate_custom_check_bins_dir(custom_check_bins_dir):
fi
}

function d_type_enabled_if_xfs()
{
# Return 1 if $1 is a directory on XFS volume with ftype ! = 1
# otherwise return 0
DIRNAME="$1"

RC=0
# "df", the command being used to get the filesystem device and type,
# fails if the directory does not exist, hence we need to iterate up the
# directory chain to find a directory that exists before executing the command
while [[ ! -d "$DIRNAME" ]]; do
DIRNAME="$(dirname "$DIRNAME")"
done
read -r filesystem_device filesystem_type <<<"$(df --portability --print-type "$DIRNAME" | awk 'END{print $1,$2}')"
if [[ "$filesystem_type" == "xfs" ]]; then
echo -n -e "Checking if $DIRNAME is mounted with \"fytpe=1\": "
ftype_value="$(xfs_info $filesystem_device | grep -oE ftype=[0-9])"
if [[ "$ftype_value" != "ftype=1" ]]; then
RC=1
fi
print_status $RC "${NORMAL}(${ftype_value})"
fi
return $RC
}

# check node storage has d_type (ftype=1) support enabled if using XFS
function check_xfs_ftype() {
RC=0

mesos_agent_dir="{{ mesos_agent_work_dir }}"
# Check if ftype=1 on the volume, for $mesos_agent_dir, if its on XFS filesystem
( d_type_enabled_if_xfs "$mesos_agent_dir" ) || RC=1

# Check if ftype=1 on the volume, for docker root dir, if its on XFS filesystem
docker_root_dir="$(docker info | grep 'Docker Root Dir' | cut -d ':' -f 2 | tr -d '[[:space:]]')"
( d_type_enabled_if_xfs "$docker_root_dir" ) || RC=1

(( OVERALL_RC += $RC ))
return $RC
}

function check_all() {
# Disable errexit because we want the preflight checks to run all the way
# through and not bail in the middle, which will happen as it relies on
Expand Down Expand Up @@ -436,6 +477,7 @@ def validate_custom_check_bins_dir(custom_check_bins_dir):
check unzip
check ipset
check systemd-notify
check ifconfig

# $ systemctl --version ->
# systemd nnn
Expand Down Expand Up @@ -492,6 +534,7 @@ def validate_custom_check_bins_dir(custom_check_bins_dir):
do
check_service $service
done
check_xfs_ftype
fi

# Check we're not in docker on devicemapper loopback as storage driver.
Expand Down Expand Up @@ -654,7 +697,8 @@ def make_bash(gen_out) -> None:
'dcos_image_commit': util.dcos_image_commit,
'generation_date': util.template_generation_date,
'setup_flags': setup_flags,
'setup_services': setup_services})
'setup_services': setup_services,
'mesos_agent_work_dir': gen_out.arguments['mesos_agent_work_dir']})

# Output the dcos install script
install_script_filename = 'dcos_install.sh'
Expand Down
9 changes: 9 additions & 0 deletions gen/calc.py
Expand Up @@ -317,6 +317,9 @@ def validate_dcos_overlay_network(dcos_overlay_network):
assert 'vtep_mac_oui' in overlay_network.keys(), (
'Missing "vtep_mac_oui" in overlay configuration {}'.format(overlay_network))

vtep_mtu = overlay_network.get('vtep_mtu', 1500)
validate_int_in_range(vtep_mtu, 552, None)

if 'subnet' in overlay:
# Check the VTEP IP is present in the overlay configuration
assert 'vtep_subnet' in overlay_network, (
Expand Down Expand Up @@ -764,6 +767,11 @@ def calculate_check_config(check_time):
'cmd': ['/opt/mesosphere/bin/dcos-checks', 'executable', 'unzip'],
'timeout': '1s'
},
'ifconfig': {
'description': 'The ifconfig utility is available',
'cmd': ['/opt/mesosphere/bin/dcos-checks', 'executable', 'ifconfig'],
'timeout': '1s'
},
'ip_detect_script': {
'description': 'The IP detect script produces valid output',
'cmd': ['/opt/mesosphere/bin/dcos-checks', 'ip'],
Expand Down Expand Up @@ -795,6 +803,7 @@ def calculate_check_config(check_time):
'tar',
'curl',
'unzip',
'ifconfig',
'ip_detect_script',
'mesos_master_replog_synchronized',
'mesos_agent_registered_with_masters',
Expand Down
8 changes: 8 additions & 0 deletions gen/dcos-config.yaml
Expand Up @@ -103,6 +103,13 @@ package:
"IPSources": {{ mesos_dns_ip_sources }},
"SetTruncateBit": {{ mesos_dns_set_truncate_bit }}
}
- path: /etc/dcos.network
content: |
[Match]
Name=docker* m-* d-* vtep* spartan minuteman

[Link]
Unmanaged=yes
- path: /etc/dcos_net
content: |
DCOS_NET_WATCHDOG={{ dcos_net_watchdog }}
Expand Down Expand Up @@ -489,6 +496,7 @@ package:
MESOS_LAUNCHER_DIR=/opt/mesosphere/active/mesos/libexec/mesos
MESOS_EXECUTOR_ENVIRONMENT_VARIABLES=file:///opt/mesosphere/etc/mesos-executor-environment.json
MESOS_EXECUTOR_REGISTRATION_TIMEOUT=10mins
MESOS_EXECUTOR_REREGISTRATION_TIMEOUT=10secs
MESOS_RECONFIGURATION_POLICY=additive
MESOS_RECOVERY_TIMEOUT={{ mesos_recovery_timeout }}
MESOS_CGROUPS_ENABLE_CFS=true
Expand Down
5 changes: 3 additions & 2 deletions owners.json
Expand Up @@ -3,15 +3,16 @@
"asridharan ": {"slack": "avinash", "jira": "avinash"},
"branden": {"slack": "branden", "jira": "branden"},
"gpaul": {"slack": "gpaul", "jira": "gpaul"},
"greggomann": {"slack": "greg", "jira": "greg"},
"jgehrcke": {"slack": "jp", "jira": "jp"},
"karya0": {"slack": "kapil", "jira": "kapil"},
"klueska": {"slack": "klueska", "jira": "klueska"},
"MatApple": {"slack": "mat", "jira": "mat"},
"mnaboka": {"slack": "mnaboka", "jira": "mnaboka"},
"mellenburg": {"slack": "mellenburg", "jira": "michael.ellenburg"},
"meichstedt": {"slack": "matthias.eichstedt", "jira": "matthias.eichstedt"},
"orlandohohmeier": {"slack": "orlando", "jira": "orlando"},
"orsenthil" : {"slack": "skumaran", "jira": "skumaran"},
"spahl": {"slack": "seb", "jira": "sebastien"},
"rukletsov": {"slack": "alexr", "jira": "alexr"},
"urbanserj": {"slack": "urbanserj", "jira": "sergeyurbanovich"},
"vespian": {"slack": "prozlach", "jira": "prozlach"}
}
2 changes: 1 addition & 1 deletion packages/dcos-checks/buildinfo.json
Expand Up @@ -2,7 +2,7 @@
"single_source": {
"kind": "git",
"git": "https://github.com/dcos/dcos-checks.git",
"ref": "c5a667cd20713af21c618df48b0ab2b3fc5ed0a6",
"ref": "c34c5a76bd49bf5df224e0c8abca51a71dece475",
"ref_origin": "master"
},
"state_directory": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/dcos-net/buildinfo.json
Expand Up @@ -4,7 +4,7 @@
"dcos-net": {
"kind": "git",
"git": "https://github.com/dcos/dcos-net.git",
"ref": "56db2d021378db6f4aa9a6d2b7d1b06bcc809753",
"ref": "73fe6d28a38dfcc58347615493958be37ce97bf9",
"ref_origin": "master"
}
},
Expand Down
31 changes: 31 additions & 0 deletions packages/dcos-net/extra/dcos-net-setup.py
Expand Up @@ -11,9 +11,12 @@
Also the script prevents from duplicating iptables rules [3]

[3] ExecStartPre=/path/dcos-net-setup.py iptables --wait -A FORWARD -j ACCEPT

The script allows to add configuration for networkd
"""

import os
import shutil
import subprocess
import sys

Expand All @@ -37,10 +40,38 @@ def main():
else:
del sys.argv[1]
result = subprocess.run(sys.argv)
elif sys.argv[1:3] == ['networkd', 'add'] and len(sys.argv) == 4:
result = add_networkd_config(sys.argv[3])
else:
result = subprocess.run(sys.argv[1:])
sys.exit(result.returncode)


def add_networkd_config(src):
networkd = b'systemd-networkd.service'

# check if there is networkd
result = subprocess.run(['systemctl', 'list-unit-files', networkd],
stdout=subprocess.PIPE)
if result.returncode != 0:
return result
if networkd not in result.stdout:
return result

# copy the configuration
bname = os.path.basename(src)
dst = os.path.join('/etc/systemd/network', bname)
shutil.copyfile(src, dst)

# Restart networkd only if it's active
result = subprocess.run(['systemctl', 'is-active', networkd],
stdout=subprocess.PIPE)
if result.returncode != 0:
result.returncode = 0
return result

return subprocess.run(['systemctl', 'restart', networkd])


if __name__ == "__main__":
main()
1 change: 1 addition & 0 deletions packages/dcos-net/extra/dcos-net.service
Expand Up @@ -21,6 +21,7 @@ ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py ipta
ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py mkdir -p /var/lib/dcos/navstar/mnesia
ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py mkdir -p /var/lib/dcos/navstar/lashup
ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py modprobe dummy
ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py networkd add /opt/mesosphere/etc/dcos.network
ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py ip link add minuteman type dummy
ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py ip link set minuteman up
ExecStartPre=/opt/mesosphere/active/dcos-net/dcos-net/bin/dcos-net-setup.py ip link add spartan type dummy
Expand Down
1 change: 1 addition & 0 deletions packages/marathon/build
Expand Up @@ -37,6 +37,7 @@ EnvironmentFile=-/opt/mesosphere/etc/marathon-extras
EnvironmentFile=-/var/lib/dcos/marathon/environment.ip.marathon
Environment=JAVA_HOME=${JAVA_HOME}
ExecStartPre=/bin/ping -c1 leader.mesos
ExecStartPre=/bin/ping -c1 zk-1.zk
ExecStartPre=/opt/mesosphere/bin/bootstrap dcos-marathon
ExecStartPre=/bin/bash -c 'echo "HOST_IP=\$(\$MESOS_IP_DISCOVERY_COMMAND)" > /var/lib/dcos/marathon/environment.ip.marathon'
ExecStartPre=/bin/bash -c 'echo "MARATHON_HOSTNAME=\$(\$MESOS_IP_DISCOVERY_COMMAND)" >> /var/lib/dcos/marathon/environment.ip.marathon'
Expand Down
25 changes: 0 additions & 25 deletions packages/mesos/extra/start_mesos.sh
Expand Up @@ -8,29 +8,4 @@ if [ -x $FAULT_DOMAIN_SCRIPT ]; then
export MESOS_DOMAIN="$($FAULT_DOMAIN_SCRIPT)"
fi

# Helper to configure `networkd` on CoreOS to ignore all DC/OS overlay interfaces.
function coreos_networkd_config() {
network_config="/etc/systemd/network/dcos.network"
sudo tee $network_config > /dev/null<<'EOF'
[Match]
Type=bridge
Name=docker* m-* d-* vtep*

[Link]
Unmanaged=yes
EOF
}

distro="$(source /etc/os-release && echo "${ID}")"
if [[ "${distro}" == 'coreos' ]]; then
if systemctl list-unit-files | grep systemd-networkd.service > /dev/null; then
coreos_networkd_config
echo "Configuring systemd-networkd to ignore docker bridge and DC/OS overlay interfaces..."

if systemctl is-enabled systemd-networkd > /dev/null; then
sudo systemctl restart systemd-networkd
fi
fi
fi

exec "$@"