Refactor get_available_resources in container driver

Move docker-specific code to DockerDriver subclass.
After the refactoring, generic code stays in base class and
docker-specific code is moved to docker driver subclass.
As a result, we can re-use the generic code in base class
if we introduce a non-docker driver in the future.

Change-Id: I4a68b58f46bc7eaac494909647b87ada7813a8eb
This commit is contained in:
Hongbin Lu 2020-01-19 18:36:13 +00:00
parent 112c5a6cd6
commit 428f9f8375
2 changed files with 20 additions and 16 deletions

View File

@ -1103,7 +1103,6 @@ class DockerDriver(driver.ContainerDriver):
else:
runtimes = ['runc']
docker_root_dir = info['DockerRootDir']
enable_cpu_pinning = CONF.compute.enable_cpu_pinning
return {'total_containers': total,
'running_containers': running,
@ -1116,8 +1115,7 @@ class DockerDriver(driver.ContainerDriver):
'kernel_version': kernel_version,
'labels': labels,
'runtimes': runtimes,
'docker_root_dir': docker_root_dir,
'enable_cpu_pinning': enable_cpu_pinning}
'docker_root_dir': docker_root_dir}
def get_total_disk_for_container(self):
try:
@ -1153,6 +1151,24 @@ class DockerDriver(driver.ContainerDriver):
def get_available_nodes(self):
return [self._host.get_hostname()]
def get_available_resources(self):
data = super(DockerDriver, self).get_available_resources()
info = self.get_host_info()
data['total_containers'] = info['total_containers']
data['running_containers'] = info['running_containers']
data['paused_containers'] = info['paused_containers']
data['stopped_containers'] = info['stopped_containers']
data['cpus'] = info['cpus']
data['architecture'] = info['architecture']
data['os_type'] = info['os_type']
data['os'] = info['os']
data['kernel_version'] = info['kernel_version']
data['labels'] = info['labels']
data['runtimes'] = info['runtimes']
return data
@wrap_docker_error
def network_detach(self, context, container, network):
with docker_utils.docker_client() as docker:

View File

@ -248,23 +248,11 @@ class ContainerDriver(object):
data['mem_free'] = mem_free // units.Ki
data['mem_available'] = mem_ava // units.Ki
data['mem_used'] = mem_used // units.Ki
info = self.get_host_info()
data['total_containers'] = info['total_containers']
data['running_containers'] = info['running_containers']
data['paused_containers'] = info['paused_containers']
data['stopped_containers'] = info['stopped_containers']
data['cpus'] = info['cpus']
data['architecture'] = info['architecture']
data['os_type'] = info['os_type']
data['os'] = info['os']
data['kernel_version'] = info['kernel_version']
data['labels'] = info['labels']
disk_total, disk_reserved = self.get_total_disk_for_container()
data['disk_total'] = disk_total - disk_reserved
disk_quota_supported = self.node_support_disk_quota()
data['disk_quota_supported'] = disk_quota_supported
data['runtimes'] = info['runtimes']
data['enable_cpu_pinning'] = info['enable_cpu_pinning']
data['enable_cpu_pinning'] = CONF.compute.enable_cpu_pinning
return data