[lxc-devel] [nova-lxd/master] Check for LXD block devices

zulcss on Github lxc-bot at linuxcontainers.org
Tue Mar 8 18:29:38 UTC 2016


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 427 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20160308/b158f744/attachment.bin>
-------------- next part --------------
From 6c0145c293f1e74bdf72a26691a5b26650c95b0d Mon Sep 17 00:00:00 2001
From: Chuck Short <chuck.short at canonical.com>
Date: Tue, 8 Mar 2016 13:13:22 -0500
Subject: [PATCH] Check for LXD block devices

Check for LXD block device type before trying
to set the quota.

Signed-off-by: Chuck Short <chuck.short at canonical.com>
---
 nova_lxd/nova/virt/lxd/config.py  |  6 +++++-
 nova_lxd/nova/virt/lxd/session.py | 11 +++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/nova_lxd/nova/virt/lxd/config.py b/nova_lxd/nova/virt/lxd/config.py
index 90294d5..0b0a156 100644
--- a/nova_lxd/nova/virt/lxd/config.py
+++ b/nova_lxd/nova/virt/lxd/config.py
@@ -104,7 +104,11 @@ def create_profile(self, instance, network_info):
             config['config'] = self.create_config(instance_name, instance)
 
             # Restrict the size of the "/" disk
-            config['devices'] = self.configure_container_root(instance)
+            lxd_config = self.session.host_config(instance)
+            if str(lxd_config['storage']) in ['btrfs', 'zfs']:
+                config['devices'] = self.configure_container_root(instance)
+            else:
+                config['devices'] = {}
 
             if network_info:
                 config['devices'].update(self.create_network(instance_name,
diff --git a/nova_lxd/nova/virt/lxd/session.py b/nova_lxd/nova/virt/lxd/session.py
index f4f4f64..6494843 100644
--- a/nova_lxd/nova/virt/lxd/session.py
+++ b/nova_lxd/nova/virt/lxd/session.py
@@ -811,6 +811,17 @@ def host_certificate(self, instance, host):
                                       'ex': ex}
             LOG.error(msg)
 
+    def host_config(self, instance):
+        LOG.debug('host_config called for instance', instance=instance)
+        try:
+            client = self.get_session()
+            return client.host_config()['environment']
+        except lxd_exceptions.APIError as ex:
+            msg = _('Failed to communicate with LXD %(instance)s:'
+                    ' %(reason)s') % {'instance': instance.name,
+                                      'ex': ex}
+            LOG.error(msg)
+
     #
     # Migrate methods
     #


More information about the lxc-devel mailing list