def edit(caller_id, system_image_id, name, description, disk_controller, video_device, network_device, platform): """ Sets Image's new attributes. Those should be get by src.cm.manager.image.get_by_id(). @cmview_admin_cm @param_post{system_image_id,string} new Image name @param_post{name,string} new Image name @param_post{description,string} new Image description @param_post{disk_controller} new Image controller optional @param_post{video_device} new video device optional @param_post{network_device} new network device optional @param_post{platform} optional """ image = SystemImage.admin_get(system_image_id) if image.state != image_states['ok']: raise CMException('image_edit') image.name = name image.description = description image.disk_controller = disk_controller image.video_device = video_device image.network_device = network_device image.platform = platform try: image.save() except: raise CMException('image_edit')
def set_group(caller_id, system_image_id, group_id): """ Method sets specified Image access type as group (belonging to specified Group). @cmview_admin_cm @parameter{group_id,int} id of the Group Image should belong to @parameter{image_id,int} @parameter{type,image_types} type of image, automatically set, type is in the URL requested @response{None} @raises{image_set_group,CMException} cannot set group access type """ image = SystemImage.admin_get(system_image_id) image.access = image_access['group'] # create new group-image object ig = SystemImageGroup() ig.image = image ig.group_id = group_id try: ig.save() except: raise CMException('image_set_group')
def get_by_id(caller_id, system_image_id): """ @cmview_admin_cm @param_post{system_image_id,int} id of the Image to get @response{dict} extended information about specified Image """ return SystemImage.admin_get(system_image_id).dict
def get_by_id(caller_id, system_image_id): """ @cmview_admin_cm @parameter{image_id,int} id of the Image to get @parameter{type,image_types} type of image, automatically set, type is in the URL requested @response{dict} extended information about specified Image """ return SystemImage.admin_get(system_image_id).dict
def delete(caller_id, system_image_id_list): """ Deletes given Image @cmview_admin_cm @parameter{system_image_id} id of the Image to delete @parameter{type,image_types} type of image, automatically set, type is in the URL requested """ for system_image_id in system_image_id_list: image = SystemImage.admin_get(system_image_id) image.state = image_states['locked'] image.save()
def delete(caller_id, system_image_id_list): """ Sets SystemImage state as 'locked'. @cmview_admin_cm @param_post{system_image_id_list,list(int)} list of the specified Images ids @todo Should delete SystemImage and set its state to @val{deleted}. """ for system_image_id in system_image_id_list: image = SystemImage.admin_get(system_image_id) image.state = image_states['locked'] image.save()
def set_public(caller_id, system_image_id): """ Makes SystemImage available in public pool. @cmview_admin_cm @param_post{system_image_id,int} """ image = SystemImage.admin_get(system_image_id) image.access = image_access['public'] # delete the existing group association try: image.systemimagegroup_set.all().delete() image.save() except: raise CMException('image_set_public')
def set_private(caller_id, system_image_id): """ Removes SystemImage from public pool. @cmview_admin_cm @param_post{system_image_id,int} """ image = SystemImage.admin_get(system_image_id) image.access = image_access['private'] # delete the existing group association try: image.save() image.systemimagegroup_set.all().delete() except: log.exception(caller_id, 'image_set_private') raise CMException('image_set_private')
def copy(caller_id, src_image_id, dest_user_id): """ Copy selected image to user's images @cmview_admin_cm @param_post{src_image_id,int} @param_post{dest_user_id,int} """ src_image = SystemImage.admin_get(src_image_id) dest_user = User.get(dest_user_id) dest_image = SystemImage.create(name=src_image.name, description=src_image.description, user=dest_user, platform=src_image.platform, disk_controller=src_image.disk_controller, network_device=src_image.network_device, video_device=src_image.video_device) try: dest_image.save() except Exception, e: log.error(caller_id, "Unable to commit: %s" % str(e)) raise CMException('image_create')
def set_public(caller_id, system_image_id): """ Sets Image as private, only for system and cd image To succeed it requires caller to be: - either the owner of the image - or the leader of the group to which Image belongs @cmview_admin_cm @parameter{system_image_id,int} @parameter{leader_groups,list(int)} ids of the group where the caller is leader, requierd if Image's access type is group """ image = SystemImage.admin_get(system_image_id) image.access = image_access['public'] # delete the existing group association try: image.systemimagegroup_set.all().delete() image.save() except: raise CMException('image_set_public')
def convert_to_storage_image(caller_id, system_image_id): """ Changes type of the given Image. @cmview_admin_cm @param_post{system_image_id,int} ID of an Image to change type of @response{None} """ image = SystemImage.admin_get(system_image_id) storage_image = StorageImage.create(name=image.name, description=image.description, user=image.user, disk_controller=image.disk_controller) storage_image.state = image_states['ok'] storage_image.size = image.size try: storage_image.save() os.rename(image.path, storage_image.path) image.delete() except Exception: raise CMException('image_change_type')
def set_group(caller_id, system_image_id, group_id): """ Method sets specified Image access type as group (belonging to specified Group). @cmview_admin_cm @param_post{system_image_id,int} @param_post{group_id,int} id of the Group Image should belong to @response{None} @raises{image_set_group,CMException} cannot set group access type """ image = SystemImage.admin_get(system_image_id) image.access = image_access['group'] # create new group-image object ig = SystemImageGroup() ig.image = image ig.group_id = group_id try: ig.save() except: raise CMException('image_set_group')