From fb8507c0f4c8b80ddd75b318406612da76bca402 Mon Sep 17 00:00:00 2001 From: Victor Marmol Date: Sun, 22 Jun 2014 05:54:44 +0000 Subject: [PATCH] Enable the memory cgroup for the Docker plugin. This will allow for the enforcement and tracking of memory limits and usage. --- bootstrapvz/plugins/docker_daemon/__init__.py | 1 + bootstrapvz/plugins/docker_daemon/tasks.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/bootstrapvz/plugins/docker_daemon/__init__.py b/bootstrapvz/plugins/docker_daemon/__init__.py index c952878..f32e6b1 100644 --- a/bootstrapvz/plugins/docker_daemon/__init__.py +++ b/bootstrapvz/plugins/docker_daemon/__init__.py @@ -21,3 +21,4 @@ def resolve_tasks(taskset, manifest): taskset.add(tasks.AddDockerDeps) taskset.add(tasks.AddDockerBinary) taskset.add(tasks.AddDockerInit) + taskset.add(tasks.EnableMemoryCgroup) diff --git a/bootstrapvz/plugins/docker_daemon/tasks.py b/bootstrapvz/plugins/docker_daemon/tasks.py index b2b1bbe..d44a661 100644 --- a/bootstrapvz/plugins/docker_daemon/tasks.py +++ b/bootstrapvz/plugins/docker_daemon/tasks.py @@ -1,6 +1,8 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases +from bootstrapvz.common.tasks import boot from bootstrapvz.common.tasks import initd +from bootstrapvz.providers.gce.tasks import boot as gceboot import os import os.path import shutil @@ -45,3 +47,16 @@ class AddDockerInit(Task): default_src = os.path.join(ASSETS_DIR, 'default/docker') default_dest = os.path.join(info.root, 'etc/default/docker') shutil.copy(default_src, default_dest) + + +class EnableMemoryCgroup(Task): + description = 'Change grub configuration to enable the memory cgroup' + phase = phases.system_modification + successors = [boot.InstallGrub] + predecessors = [boot.ConfigureGrub, gceboot.ConfigureGrub] + + @classmethod + def run(cls, info): + from bootstrapvz.common.tools import sed_i + grub_config = os.path.join(info.root, 'etc/default/grub') + sed_i(grub_config, r'^(GRUB_CMDLINE_LINUX*=".*)"\s*$', r'\1 cgroup_enable=memory"')