diff --git a/gns3server/compute/docker/docker_vm.py b/gns3server/compute/docker/docker_vm.py index b215a73c..5c910d18 100644 --- a/gns3server/compute/docker/docker_vm.py +++ b/gns3server/compute/docker/docker_vm.py @@ -506,6 +506,10 @@ class DockerVM(BaseNode): result = await self.manager.query("POST", "containers/create", data=params) self._cid = result["Id"] log.info(f"Docker container '{self._name}' [{self._id}] created") + if self._cpus > 0: + log.info(f"CPU limit set to {self._cpus} CPUs") + if self._memory > 0: + log.info(f"Memory limit set to {self._memory} MB") return True def _format_env(self, variables, env): diff --git a/gns3server/db/models/templates.py b/gns3server/db/models/templates.py index a35ed076..a24c59df 100644 --- a/gns3server/db/models/templates.py +++ b/gns3server/db/models/templates.py @@ -16,7 +16,7 @@ # along with this program. If not, see . -from sqlalchemy import Boolean, Column, String, Integer, ForeignKey, PickleType +from sqlalchemy import Boolean, Column, String, Integer, Float, ForeignKey, PickleType from sqlalchemy.orm import relationship from .base import BaseTable, generate_uuid, GUID @@ -77,7 +77,7 @@ class DockerTemplate(Template): extra_hosts = Column(String) extra_volumes = Column(PickleType) memory = Column(Integer) - cpus = Column(Integer) + cpus = Column(Float) custom_adapters = Column(PickleType) __mapper_args__ = {"polymorphic_identity": "docker", "polymorphic_load": "selectin"} diff --git a/gns3server/schemas/compute/docker_nodes.py b/gns3server/schemas/compute/docker_nodes.py index 964b88e7..63bc60af 100644 --- a/gns3server/schemas/compute/docker_nodes.py +++ b/gns3server/schemas/compute/docker_nodes.py @@ -43,7 +43,7 @@ class DockerBase(BaseModel): extra_hosts: Optional[str] = Field(None, description="Docker extra hosts (added to /etc/hosts)") extra_volumes: Optional[List[str]] = Field(None, description="Additional directories to make persistent") memory: Optional[int] = Field(None, description="Maximum amount of memory the container can use in MB") - cpus: Optional[int] = Field(None, description="Maximum amount of CPU resources the container can use") + cpus: Optional[float] = Field(None, description="Maximum amount of CPU resources the container can use") custom_adapters: Optional[List[CustomAdapter]] = Field(None, description="Custom adapters") diff --git a/gns3server/schemas/controller/templates/docker_templates.py b/gns3server/schemas/controller/templates/docker_templates.py index 2225f39a..1a799236 100644 --- a/gns3server/schemas/controller/templates/docker_templates.py +++ b/gns3server/schemas/controller/templates/docker_templates.py @@ -49,7 +49,7 @@ class DockerTemplate(TemplateBase): extra_hosts: Optional[str] = Field("", description="Docker extra hosts (added to /etc/hosts)") extra_volumes: Optional[List] = Field([], description="Additional directories to make persistent") memory: Optional[int] = Field(0, description="Maximum amount of memory the container can use in MB") - cpus: Optional[int] = Field(0, description="Maximum amount of CPU resources the container can use") + cpus: Optional[float] = Field(0, description="Maximum amount of CPU resources the container can use") custom_adapters: Optional[List[CustomAdapter]] = Field(default_factory=list, description="Custom adapters")