Re: [PATCH] Do not create a LUKSDevice if we do not have a way to map the device.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/16/2009 12:53 PM, David Lehman wrote:
If the user elects not to provide a passphrase or key, do not create
a LUKSDevice. We will just keep the backing device with its luks
format. This saves us the trouble of checking whether we have the
ability to set up each LUKSDevice since we only have LUKSDevice
instances for those we can set up.

So if the user checks the encryption checkbox, but leaves the passphrase field blank, we proceed with a non-encrypted install?

I'm not sure I understand the need for this. If the user fails to enter a passphrase, we should still create an encrypted volume but just has an empty passphrase (perhaps we can tell the user that's stupid during installation).

---
  iw/partition_dialog_gui.py |   17 +++++++++++++----
  iw/partition_gui.py        |   24 ++++++++++++++++++------
  iw/raid_dialog_gui.py      |   34 +++++++++++++++++++++++++---------
  storage/devicetree.py      |    4 +++-
  4 files changed, 59 insertions(+), 20 deletions(-)

diff --git a/iw/partition_dialog_gui.py b/iw/partition_dialog_gui.py
index 8021616..5abbd51 100644
--- a/iw/partition_dialog_gui.py
+++ b/iw/partition_dialog_gui.py
@@ -180,11 +180,15 @@ class PartitionEditor:
                  elif self.lukscb and not self.lukscb.get_active() and \
                       self.origrequest.format.type == "luks":
                      # destroy the luks format and the mapped device
-                    luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
-                    if luksdev:
+                    try:
+                        luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
+                    except IndexError:
+                        pass
+                    else:
                          actions.append(ActionDestroyFormat(luksdev))
                          actions.append(ActionDestroyDevice(luksdev))
                          luksdev = None
+
                      actions.append(ActionDestroyFormat(request))

                  if self.isNew:
@@ -282,8 +286,13 @@ class PartitionEditor:
          # if this is a luks device we need to grab info from two devices
          # to make it seem like one device. wee!
          if self.origrequest.format.type == "luks":
-            luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
-            usereq = luksdev
+            try:
+                luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
+            except IndexError:
+                usereq = self.origrequest
+                luksdev = None
+            else:
+                usereq = luksdev
          else:
              luksdev = None
              usereq = self.origrequest
diff --git a/iw/partition_gui.py b/iw/partition_gui.py
index c7097b0..668530c 100644
--- a/iw/partition_gui.py
+++ b/iw/partition_gui.py
@@ -697,8 +697,12 @@ class PartitionWindow(InstallWindow):
                      if lv.format.type == "luks":
                          # we'll want to grab format info from the mapped
                          # device, not the encrypted one
-                        dm_dev = self.storage.devicetree.getChildren(lv)[0]
-                        format = dm_dev.format
+                        try:
+                            dm_dev = self.storage.devicetree.getChildren(lv)[0]
+                        except IndexError:
+                            format = lv.format
+                        else:
+                            format = dm_dev.format
                      else:
                          format = lv.format
  		    iter = self.tree.append(vgparent)
@@ -732,8 +736,12 @@ class PartitionWindow(InstallWindow):
                  if array.format.type == "luks":
                      # look up the mapped/decrypted device since that's
                      # where we'll find the format we want to display
-                    dm_dev = self.storage.getChildren(array)[0]
-                    format = dm_dev.format
+                    try:
+                        dm_dev = self.storage.getChildren(array)[0]
+                    except IndexError:
+                        format = array.format
+                    else:
+                        format = dm_dev.format
                  else:
                      format = array.format

@@ -840,8 +848,12 @@ class PartitionWindow(InstallWindow):
                  if device and device.format.type == "luks":
                      # look up the mapped/decrypted device in the tree
                      # the format we care about will be on it
-                    dm_dev = self.storage.devicetree.getChildren(device)[0]
-                    format = dm_dev.format
+                    try:
+                        dm_dev = self.storage.devicetree.getChildren(device)[0]
+                    except IndexError:
+                        format = device.format
+                    else:
+                        format = dm_dev.format
                  elif device:
                      format = device.format
                  else:
diff --git a/iw/raid_dialog_gui.py b/iw/raid_dialog_gui.py
index 3ae2f6e..cab2bb0 100644
--- a/iw/raid_dialog_gui.py
+++ b/iw/raid_dialog_gui.py
@@ -187,13 +187,16 @@ class RaidEditor:
                       not self.fsoptionsDict["lukscb"].get_active() and \
                       self.origrequest.format.type == "luks":
                      # destroy luks format and mapped device
-                    luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
-                    if luksdev:
+                    try:
+                        luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
+                    except IndexError:
+                        pass
+                    else:
                          actions.append(ActionDestroyFormat(luksdev.format))
                          actions.append(ActionDestroyDevice(luksdev))
                          luksdev = None
-                    actions.append(ActionDestroyFormat(self.origrequest))

+                    actions.append(ActionDestroyFormat(self.origrequest))
  	    else:
                  # existing device
                  fmt_class = self.fsoptionsDict["fstypeCombo"].get_active_value()
@@ -214,11 +217,15 @@ class RaidEditor:
                           not self.fsoptionsDict["lukscb"].get_active() and \
                           self.origrequest.format.type == "luks":
                          # destroy luks format and mapped device
-                        luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
-                        if luksdev:
+                        try:
+                            luksdev = self.storage.devicetree.getChildren(self.origrequest)[0]
+                        except IndexError:
+                            pass
+                        else:
                              actions.append(ActionDestroyFormat(luksdev.format))
                              actions.append(ActionDestroyDevice(luksdev))
                              luksdev = None
+
                          actions.append(ActionDestroyFormat(self.origrequest))
                  elif self.origrequest.format.mountable:
                      self.origrequest.format.mountpoint = mountpoint
@@ -226,7 +233,10 @@ class RaidEditor:
  		if self.fsoptionsDict.has_key("migratecb") and \
  		   self.fsoptionsDict["migratecb"].get_active():
                      if origrequest.format.type == "luks":
-                        usedev = self.storage.devicetree.getChildren(origrequest)[0]
+                        try:
+                            usedev = self.storage.devicetree.getChildren(origrequest)[0]
+                        except IndexError:
+                            usedev = origrequest
                      else:
                          usedev = origrequest
                      migrate = True
@@ -332,9 +342,15 @@ class RaidEditor:
          self.lukscb.set_data("formatstate", 1)

          if origrequest.format.type == "luks":
-            luksdev = self.storage.devicetree.getChildren(origrequest)[0]
-            usedev = luksdev
-            format = usedev.format
+            try:
+                luksdev = self.storage.devicetree.getChildren(origrequest)[0]
+            except IndexError:
+                luksdev = None
+                usedev = origrequest
+                format = origrequest.format
+            else:
+                usedev = luksdev
+                format = usedev.format
          else:
              luksdev = None
              usedev = origrequest
diff --git a/storage/devicetree.py b/storage/devicetree.py
index f1e056d..80ff07e 100644
--- a/storage/devicetree.py
+++ b/storage/devicetree.py
@@ -1112,12 +1112,14 @@ class DeviceTree(object):
                      luks_device = LUKSDevice(device.format.mapName,
                                               parents=[device],
                                               exists=True)
-                    self._addDevice(luks_device)
                      try:
                          luks_device.setup()
                      except (LUKSError, CryptoError, DeviceError) as e:
                          log.info("setup of %s failed: %s" % (format.mapName,
                                                               e))
+                        device.removeChild()
+                    else:
+                        self._addDevice(luks_device)
                  else:
                      log.warning("luks device %s already in the tree"
                                  % format.mapName)


--
David Cantrell <dcantrell@xxxxxxxxxx>
Red Hat / Honolulu, HI

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux