storage: add new disks to instance, and docstrings
Showing
... | @@ -274,20 +274,56 @@ class Disk(AclBase, TimeStampedModel): | ... | @@ -274,20 +274,56 @@ class Disk(AclBase, TimeStampedModel): |
if instance: | if instance: | ||
instance.disks.add(disk) | instance.disks.add(disk) | ||
return disk | return disk | ||
@classmethod | |||
def create_from_url_async(cls, url, instance=None, params=None, user=None): | |||
"""Create disk object and download data from url asynchronusly. | |||
:param url: image url to download. | |||
:type url: url | |||
Please
register
or
sign in
to reply
|
|||
:param instance: instnace object to connect disk | |||
:type instane: vm.models.Instance | |||
:param params: disk custom parameters | |||
:type params: dict | |||
:param user: owner of the disk | |||
:type user: django.contrib.auth.User | |||
:return: Task | |||
:rtype: AsyncResult | |||
""" | |||
return local_tasks.create_from_url.apply_async(kwargs={ | return local_tasks.create_from_url.apply_async(kwargs={ | ||
'cls': cls, 'url': url, 'params': params, 'user': user}, | 'cls': cls, 'url': url, 'instance': instance, | ||
'params': params, 'user': user}, | |||
queue='localhost.man') | queue='localhost.man') | ||
def create_from_url(cls, url, params={}, user=None, task_uuid=None, | @classmethod | ||
abortable_task=None): | def create_from_url(cls, url, instance=None, params=None, user=None, | ||
task_uuid=None, abortable_task=None): | |||
"""Create disk object and download data from url synchronusly. | |||
:param url: image url to download. | |||
:type url: url | |||
:param instance: instnace object to connect disk | |||
:type instane: vm.models.Instance | |||
:param params: disk custom parameters | |||
:type params: dict | |||
:param user: owner of the disk | |||
:type user: django.contrib.auth.User | |||
:return: Task | |||
:rtype: AsyncResult | |||
""" | |||
disk = cls() | disk = cls() | ||
disk.filename = str(uuid.uuid4()) | disk.filename = str(uuid.uuid4()) | ||
disk.type = "iso" | disk.type = "iso" | ||
disk.size = 1 | disk.size = 1 | ||
# TODO get proper datastore | |||
disk.datastore = DataStore.objects.all()[0] | disk.datastore = DataStore.objects.all()[0] | ||
if params: | if params: | ||
disk.__dict__.update(params) | disk.__dict__.update(params) | ||
disk.save() | disk.save() | ||
if instance: | |||
instance.disks.add(disk) | |||
queue_name = disk.get_remote_queue_name('storage') | queue_name = disk.get_remote_queue_name('storage') | ||
def __on_abort(activity, error): | def __on_abort(activity, error): | ||
... | ... |