Split out LXDContainerDirectories

Split out LXDContianerDirectories and LXDContainerUtils

Signed-off-by: Chuck Short <chuck.short@canonical.com>
This commit is contained in:
Chuck Short 2015-11-14 22:02:21 -05:00
parent b563eba14a
commit 662b2d8a62
7 changed files with 104 additions and 82 deletions

View File

@ -33,6 +33,7 @@ import six
from nova_lxd.nova.virt.lxd import container_client
from nova_lxd.nova.virt.lxd import container_image
from nova_lxd.nova.virt.lxd import container_utils
from nova_lxd.nova.virt.lxd import utils as container_dir
from nova_lxd.nova.virt.lxd import vif
_ = i18n._
@ -47,7 +48,7 @@ LOG = logging.getLogger(__name__)
class LXDContainerConfig(object):
def __init__(self):
self.container_dir = container_utils.LXDContainerDirectories()
self.container_dir = container_dir.LXDContainerDirectories()
self.container_client = container_client.LXDContainerClient()
self.container_image = container_image.LXDContainerImage()
self.container_utils = container_utils.LXDContainerUtils()

View File

@ -31,7 +31,7 @@ from oslo_log import log as logging
from oslo_utils import excutils
from oslo_utils import fileutils
from nova_lxd.nova.virt.lxd import container_utils
from nova_lxd.nova.virt.lxd import utils as container_dir
_ = i18n._
_LE = i18n._LE
@ -45,7 +45,7 @@ class LXDContainerImage(object):
def __init__(self):
self.connection = api.API()
self.container_dir = container_utils.LXDContainerDirectories()
self.container_dir = container_dir.LXDContainerDirectories()
self.lock_path = str(os.path.join(CONF.instances_path, 'locks'))
def setup_image(self, context, instance, image_meta):

View File

@ -35,6 +35,7 @@ from nova_lxd.nova.virt.lxd import container_config
from nova_lxd.nova.virt.lxd import container_firewall
from nova_lxd.nova.virt.lxd import container_image
from nova_lxd.nova.virt.lxd import container_utils
from nova_lxd.nova.virt.lxd import utils as container_dir
from nova_lxd.nova.virt.lxd import vif
_ = i18n._
@ -57,7 +58,7 @@ class LXDContainerOperations(object):
self.container_config = container_config.LXDContainerConfig()
self.container_client = container_client.LXDContainerClient()
self.container_dir = container_utils.LXDContainerDirectories()
self.container_dir = container_dir.LXDContainerDirectories()
self.container_utils = container_utils.LXDContainerUtils()
self.container_image = container_image.LXDContainerImage()
self.firewall_driver = container_firewall.LXDContainerFirewall()

View File

@ -17,7 +17,6 @@
from nova import exception
from nova import i18n
from nova import utils
import os
import container_client
from oslo_concurrency import processutils
@ -266,77 +265,3 @@ class LXDContainerUtils(object):
except processutils.ProcessExecutionError as e:
err = six.text_type(e)
return err
class LXDContainerDirectories(object):
def __init__(self):
self.base_dir = os.path.join(CONF.instances_path,
CONF.image_cache_subdirectory_name)
def get_base_dir(self):
return self.base_dir
def get_instance_dir(self, instance):
return os.path.join(CONF.instances_path,
instance)
def get_container_rootfs_image(self, image_meta):
return os.path.join(self.base_dir,
'%s-rootfs.tar.gz' % image_meta.get('id'))
def get_container_manifest_image(self, image_meta):
return os.path.join(self.base_dir,
'%s-manifest.tar' % image_meta.get('id'))
def get_container_metadata(self, image_meta):
return os.path.join(self.base_dir,
'%s-lxd.tar.xz' % image_meta.get('id'))
def get_container_rootfsImg(self, image_meta):
return os.path.join(self.base_dir,
'%s-root.tar.gz' % image_meta.get('id'))
def get_container_configdrive(self, instance):
return os.path.join(CONF.instances_path,
instance,
'config-drive')
def get_console_path(self, instance):
return os.path.join(CONF.lxd.root_dir,
'containers',
instance,
'console.log')
def get_container_dir(self, instance):
return os.path.join(CONF.lxd.root_dir,
'containers')
def get_container_rootfs(self, instance):
return os.path.join(CONF.lxd.root_dir,
'containers',
instance,
'rootfs')
def get_container_rescue(self, instance):
if self.is_lvm(instance):
return os.path.join(CONF.lxd.root_dir,
'containers',
instance)
else:
return os.path.join(CONF.lxd.root_dir,
'containers',
instance,
'rootfs')
def get_container_lvm(self, instance):
return '%s/%s.lv' % (self.get_container_dir(instance),
instance)
def is_lvm(self, instance):
try:
if os.path.exists(os.readlink(
self.get_container_lvm(instance))):
return True
except Exception:
return False

View File

@ -0,0 +1,94 @@
# Copyright 2015 Canonical Ltd
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import os
from oslo_config import cfg
CONF = cfg.CONF
class LXDContainerDirectories(object):
def __init__(self):
self.base_dir = os.path.join(CONF.instances_path,
CONF.image_cache_subdirectory_name)
def get_base_dir(self):
return self.base_dir
def get_instance_dir(self, instance):
return os.path.join(CONF.instances_path,
instance)
def get_container_rootfs_image(self, image_meta):
return os.path.join(self.base_dir,
'%s-rootfs.tar.gz' % image_meta.get('id'))
def get_container_manifest_image(self, image_meta):
return os.path.join(self.base_dir,
'%s-manifest.tar' % image_meta.get('id'))
def get_container_metadata(self, image_meta):
return os.path.join(self.base_dir,
'%s-lxd.tar.xz' % image_meta.get('id'))
def get_container_rootfsImg(self, image_meta):
return os.path.join(self.base_dir,
'%s-root.tar.gz' % image_meta.get('id'))
def get_container_configdrive(self, instance):
return os.path.join(CONF.instances_path,
instance,
'config-drive')
def get_console_path(self, instance):
return os.path.join(CONF.lxd.root_dir,
'containers',
instance,
'console.log')
def get_container_dir(self, instance):
return os.path.join(CONF.lxd.root_dir,
'containers')
def get_container_rootfs(self, instance):
return os.path.join(CONF.lxd.root_dir,
'containers',
instance,
'rootfs')
def get_container_rescue(self, instance):
if self.is_lvm(instance):
return os.path.join(CONF.lxd.root_dir,
'containers',
instance)
else:
return os.path.join(CONF.lxd.root_dir,
'containers',
instance,
'rootfs')
def get_container_lvm(self, instance):
return '%s/%s.lv' % (self.get_container_dir(instance),
instance)
def is_lvm(self, instance):
try:
if os.path.exists(os.readlink(
self.get_container_lvm(instance))):
return True
except Exception:
return False

View File

@ -20,13 +20,13 @@ from nova import exception
from nova import test
from nova_lxd.nova.virt.lxd import container_config
from nova_lxd.nova.virt.lxd import container_utils
from nova_lxd.nova.virt.lxd import utils as container_dir
from nova_lxd.tests import stubs
@ddt.ddt
@mock.patch.object(container_config, 'CONF', stubs.MockConf())
@mock.patch.object(container_utils, 'CONF', stubs.MockConf())
@mock.patch.object(container_dir, 'CONF', stubs.MockConf())
class LXDTestContainerConfig(test.NoDBTestCase):
def setUp(self):

View File

@ -39,6 +39,7 @@ from nova_lxd.nova.virt.lxd import container_snapshot
from nova_lxd.nova.virt.lxd import container_utils
from nova_lxd.nova.virt.lxd import driver
from nova_lxd.nova.virt.lxd import host
from nova_lxd.nova.virt.lxd import utils as container_dir
from nova_lxd.tests import stubs
@ -54,7 +55,7 @@ class LXDTestConfig(test.NoDBTestCase):
@ddt.ddt
@mock.patch.object(container_ops, 'CONF', stubs.MockConf())
@mock.patch.object(container_utils, 'CONF', stubs.MockConf())
@mock.patch.object(container_dir, 'CONF', stubs.MockConf())
@mock.patch.object(driver, 'CONF', stubs.MockConf())
@mock.patch.object(host, 'CONF', stubs.MockConf())
class LXDTestDriver(test.NoDBTestCase):