178
179
node = ForeignKey(Node, null=False, editable=False, unique=True)
179
180
data = BinaryField(null=False)
183
class NodeCommissionResultManager(Manager):
184
"""Utility to manage a collection of :class:`NodeCommissionResult`s."""
186
def clear_results(self, node):
187
"""Remove all existing results for a node."""
188
self.filter(node=node).delete()
190
def store_data(self, node, name, data):
191
"""Store data about a node."""
192
existing, created = self.get_or_create(
193
node=node, name=name, defaults=dict(data=data))
198
def get_data(self, node, name):
199
"""Get data about a node."""
200
ncr = get_object_or_404(NodeCommissionResult, node=node, name=name)
204
class NodeCommissionResult(Model):
205
"""Storage for data returned from node commissioning.
207
Commissioning a node results in various bits of data that need to be
208
stored, such as lshw output. This model allows storing of this data
209
as unicode text, with an arbitrary name, for later retrieval.
211
:ivar node: The context :class:`Node`.
212
:ivar name: A unique name to use for the data being stored.
213
:ivar data: The file's actual data, unicode only.
216
objects = NodeCommissionResultManager()
218
node = ForeignKey(Node, null=False, editable=False, unique=False)
219
name = CharField(max_length=100, unique=False, editable=False)
220
data = CharField(max_length=1024 * 1024, editable=True)
223
unique_together = ('node', 'name')