Looks good.
Regards,
Hans
David Lehman wrote:
The various parted objects cannot be copied using copy.deepcopy, so
we make shallow copies of those and deep copies of all other
attributes.
---
storage/devices.py | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/storage/devices.py b/storage/devices.py
index aea00ea..b593ec7 100644
--- a/storage/devices.py
+++ b/storage/devices.py
@@ -92,8 +92,10 @@
"""
+
import os
import math
+import copy
# device backend modules
from devicelibs import mdraid
@@ -257,6 +259,24 @@ class Device(object):
for parent in self.parents:
parent.addChild()
+ def __deepcopy__(self, memo):
+ """ Create a deep copy of a Device instance.
+
+ We can't do copy.deepcopy on parted objects, which is okay.
+ For these parted objects, we just do a shallow copy.
+ """
+ new = self.__class__.__new__(self.__class__)
+ memo[id(self)] = new
+ shallow_copy_attrs = ('partedDisk', 'partedDevice',
+ '_partedPartition', '_origPartedDisk')
+ for (attr, value) in self.__dict__.items():
+ if attr in shallow_copy_attrs:
+ setattr(new, attr, copy.copy(value))
+ else:
+ setattr(new, attr, copy.deepcopy(value, memo))
+
+ return new
+
def removeChild(self):
log_method_call(self, name=self.name, kids=self.kids)
self.kids -= 1
_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list