Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Simone Rossi
main
Commits
b5429cc8
Commit
b5429cc8
authored
Oct 17, 2017
by
Daniele Venzano
Browse files
Implement container resource updates
parent
51d20402
Changes
5
Hide whitespace changes
Inline
Side-by-side
zoe_master/backends/base.py
View file @
b5429cc8
...
...
@@ -57,3 +57,7 @@ class BaseBackend:
def
preload_image
(
self
,
image_name
:
str
)
->
None
:
"""Make a service image available."""
raise
NotImplementedError
def
update_service
(
self
,
service
,
cores
=
None
,
memory
=
None
):
"""Update a service reservation."""
raise
NotImplementedError
zoe_master/backends/docker/api_client.py
View file @
b5429cc8
...
...
@@ -318,3 +318,23 @@ class DockerClient:
except
docker
.
errors
.
APIError
as
e
:
log
.
error
(
'Cannot download image {}: {}'
.
format
(
image_name
,
e
))
raise
ZoeException
(
'Cannot download image {}: {}'
.
format
(
image_name
,
e
))
def
update
(
self
,
docker_id
,
cpu_quota
=
None
,
mem_reservation
=
None
,
mem_limit
=
None
):
"""Update the resource reservation for a container."""
kwargs
=
{}
if
cpu_quota
is
not
None
:
kwargs
[
'cpu_quota'
]
=
cpu_quota
if
mem_reservation
is
not
None
:
kwargs
[
'mem_reservation'
]
=
mem_reservation
if
mem_limit
is
not
None
:
kwargs
[
'mem_limit'
]
=
mem_limit
try
:
cont
=
self
.
cli
.
containers
.
get
(
docker_id
)
except
(
docker
.
errors
.
NotFound
,
docker
.
errors
.
APIError
):
return
try
:
cont
.
update
(
**
kwargs
)
except
docker
.
errors
.
APIError
:
pass
zoe_master/backends/docker/backend.py
View file @
b5429cc8
...
...
@@ -187,3 +187,18 @@ class DockerEngineBackend(zoe_master.backends.base.BaseBackend):
log
.
debug
(
'Image {} pre-loaded on host {} in {:.2f}s'
.
format
(
image_name
,
host_conf
.
name
,
time
.
time
()
-
time_start
))
if
not
one_success
:
raise
ZoeException
(
'Cannot pull image {}'
.
format
(
image_name
))
def
update_service
(
self
,
service
,
cores
=
None
,
memory
=
None
):
"""Update a service reservation."""
conf
=
self
.
_get_config
(
service
.
backend_host
)
engine
=
DockerClient
(
conf
)
if
service
.
backend_id
is
not
None
:
info
=
engine
.
info
()
if
cores
is
not
None
and
cores
>
info
[
'NCPU'
]:
cores
=
info
[
'NCPU'
]
if
memory
is
not
None
and
memory
>
info
[
'MemTotal'
]:
memory
=
info
[
'MemTotal'
]
cpu_quota
=
cores
*
1000000
engine
.
update
(
service
.
backend_id
,
cpu_quota
=
cpu_quota
,
mem_reservation
=
memory
)
else
:
log
.
error
(
'Cannot terminate service {}, since it has not backend ID'
.
format
(
service
.
name
))
zoe_master/backends/kubernetes/backend.py
View file @
b5429cc8
...
...
@@ -78,3 +78,7 @@ class KubernetesBackend(zoe_master.backends.base.BaseBackend):
def
preload_image
(
self
,
image_name
:
str
)
->
None
:
"""Make a service image available."""
raise
NotImplementedError
def
update_service
(
self
,
service
,
cores
=
None
,
memory
=
None
):
"""Update a service reservation."""
log
.
error
(
'Reservation update not implemented in the Swarm back-end'
)
zoe_master/backends/swarm/backend.py
View file @
b5429cc8
...
...
@@ -85,3 +85,7 @@ class SwarmBackend(zoe_master.backends.base.BaseBackend):
def
preload_image
(
self
,
image_name
:
str
)
->
None
:
"""Make a service image available."""
raise
NotImplementedError
def
update_service
(
self
,
service
,
cores
=
None
,
memory
=
None
):
"""Update a service reservation."""
log
.
error
(
'Reservation update not implemented in the Swarm back-end'
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment