コード例 #1
0
def delete_interface_connection(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['name'])
        if err:
            raise Exception(err)
        if 'name' not in req_ret:
            raise Exception('Invalid request, please use the menus')

        name = req_ret['name']
        return_dict["name"] = name

        if request.method == "GET":
            # Return the conf page
            return django.shortcuts.render_to_response("delete_interface_connection_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            result, err = networking.delete_interfaces_connection(name)
            if not result:
                if err:
                    raise Exception(err)
                else:
                    raise Exception("Error resetting address configuration")

            audit_str = "Reset the address configuration of interface %s" % (
                name)
            audit.audit("delete_interfaces_connection", audit_str, request)
            return django.http.HttpResponseRedirect('/networking/view_interfaces?ack=reset')
    except Exception, e:
        return_dict['base_template'] = "networking_base.html"
        return_dict["page_title"] = 'Reset address configuration'
        return_dict['tab'] = 'view_interfaces_tab'
        return_dict["error"] = 'Error resetting interface address configuration'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #2
0
def delete_nfs_share(request):

    return_dict = {}
    try:
        if request.method == "GET":
            # Return the conf page
            path = request.GET["path"]
            return_dict["path"] = path
            return django.shortcuts.render_to_response("delete_nfs_share_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            path = request.POST["path"]
            #logger.debug("Delete share request for name %s"%name)
            result, err = nfs.delete_share(path)
            if err:
                raise Exception(err)

            audit_str = "Deleted NFS share %s" % path
            audit.audit("delete_nfs_share", audit_str, request)
            return django.http.HttpResponseRedirect('/view_nfs_shares?ack=deleted')
    except Exception, e:
        return_dict['base_template'] = "shares_base.html"
        return_dict["page_title"] = 'Remove NFS share '
        return_dict['tab'] = 'view_nfs_shares_tab'
        return_dict["error"] = 'Error removing NFS share'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #3
0
def upload_ssl_certificate(request):
    return_dict = {}
    try:
        if request.method == "GET":
            # Return the conf page
            form = keys_certs_forms.UploadCertForm()
            return_dict['form'] = form
            return django.shortcuts.render_to_response("upload_ssl_certificate.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = keys_certs_forms.UploadCertForm(request.POST)
            return_dict['form'] = form
            if not form.is_valid():
                return django.shortcuts.render_to_response("upload_ssl_certificate.html", return_dict, context_instance=django.template.context.RequestContext(request))
            cd = form.cleaned_data
            ret, err = pki.upload_ssl_certificate(cd)
            if err:
                raise Exception(err)

            audit_str = "Uploaded a SSL certificate named %s" % cd['name']
            audit.audit("upload_certificate", audit_str,
                        request.META)
            return django.http.HttpResponseRedirect('/keys_certs/view_ssl_certificates?ack=uploaded_cert')
    except Exception, e:
        return_dict['base_template'] = "keys_certs_base.html"
        return_dict["page_title"] = 'Upload a SSL certificate'
        return_dict['tab'] = 'certificates_tab'
        return_dict["error"] = 'Error uploading a SSL certificate'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #4
0
def delete_ssl_certificate(request):

    return_dict = {}
    try:
        ret, err = django_utils.get_request_parameter_values(request, ['name'])
        if err:
            raise Exception(err)
        if 'name' not in ret:
            raise Exception("Invalid request, please use the menus.")
        name = ret['name']
        return_dict["name"] = name

        if request.method == "GET":
            # Return the conf page
            return django.shortcuts.render_to_response("delete_ssl_certificate_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:

            ret, err = pki.delete_ssl_certificate(name)
            if err:
                raise Exception(err)

            audit_str = "Deleted SSL certificate name '%s'" % name
            audit.audit("delete_certificate", audit_str,
                        request)
            return django.http.HttpResponseRedirect('/keys_certs/view_ssl_certificates?ack=deleted')
    except Exception, e:
        return_dict['base_template'] = "keys_certs_base.html"
        return_dict["page_title"] = 'Delete a SSL certificate'
        return_dict['tab'] = 'certificates_tab'
        return_dict["error"] = 'Error deleting SSL certificate'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #5
0
def stop_background_task(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['task_id'])
        if err:
            raise Exception(err)
        if 'task_id' not in req_ret:
            raise Exception('Invalid request. Please use the menus.')

        task, err = tasks_utils.get_task(req_ret['task_id'])
        if err:
            raise Exception(err)

        ret, err = tasks_utils.stop_task(req_ret['task_id'])
        if err:
            raise Exception(err)

        audit.audit("stop_background_task", task['description'], request)
        return django.http.HttpResponseRedirect(
            '/tasks/view_background_tasks?ack=stopped')
    except Exception, e:
        return_dict['base_template'] = "tasks_base.html"
        return_dict["page_title"] = 'Background tasks'
        return_dict['tab'] = 'view_background_tasks_tab'
        return_dict["error"] = 'Error stopping background task'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #6
0
def delete_nfs_share(request):

    return_dict = {}
    try:
        if request.method == "GET":
            # Return the conf page
            path = request.GET["path"]
            return_dict["path"] = path
            return django.shortcuts.render_to_response("delete_nfs_share_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            path = request.POST["path"]
            #logger.debug("Delete share request for name %s"%name)
            result, err = nfs.delete_share(path)
            if err:
                raise Exception(err)

            audit_str = "Deleted NFS share %s" % path
            audit.audit("delete_nfs_share", audit_str, request)
            return django.http.HttpResponseRedirect('/storage_access/view_nfs_shares?ack=deleted')
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Remove NFS share '
        return_dict['tab'] = 'view_nfs_shares_tab'
        return_dict["error"] = 'Error removing NFS share'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #7
0
def stop_background_task(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'task_id'])
        if err:
            raise Exception(err)
        if 'task_id' not in req_ret:
            raise Exception('Invalid request. Please use the menus.')

        task, err = tasks_utils.get_task(req_ret['task_id'])
        if err:
            raise Exception(err)

        ret, err = tasks_utils.stop_task(req_ret['task_id'])
        if err:
            raise Exception(err)

        audit.audit("stop_background_task",
                    task['description'], request)
        return django.http.HttpResponseRedirect('/tasks/view_background_tasks?ack=stopped')
    except Exception, e:
        return_dict['base_template'] = "tasks_base.html"
        return_dict["page_title"] = 'Background tasks'
        return_dict['tab'] = 'view_background_tasks_tab'
        return_dict["error"] = 'Error stopping background task'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #8
0
def delete_scan(request):
    return_dict = {}
    try:
        req_params, err = django_utils.get_request_parameter_values(request, ['scan_id'])
        if err:
            raise Exception(err)
        if 'scan_id' not in req_params:
            raise Exception('Malformed request. Please use the menus.')
        scan_id = int(req_params['scan_id'])
        scans, err = scan_utils.get_scans(scan_id=scan_id)
        if err:
            raise Exception(err)
        if not scans:
            raise Exception('Unknown scan specified. Please use the menus.')
        return_dict["scan"] = scans[0]

        if request.method == "GET":
            # Return the conf page
            return django.shortcuts.render_to_response("delete_scan_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            ret, err = scan_utils.delete_scan(scan_id)
            if err:
                raise Exception(err)

            audit_str = "Removed application Storage Insights scan details for folder '%s' run on %s" % (scans[0]['scan_dir'].lower(), scans[0]['initiate_time_str'])
            audit.audit("application_action", audit_str, request)
            return django.http.HttpResponseRedirect('/applications/storage_insights/view_scans?ack=deleted_scan')
    except Exception, e:
        return_dict['base_template'] = "storage_insights_base.html"
        return_dict["page_title"] = 'View scans'
        return_dict['tab'] = 'view_scans_tab'
        return_dict["error"] = 'Error loading Storage Insight scans'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #9
0
def delete_cifs_share(request):

    return_dict = {}
    try:
        if request.method == "GET":
            # Return the conf page
            share_id = request.GET["share_id"]
            name = request.GET["name"]
            return_dict["share_id"] = share_id
            return_dict["name"] = name
            return django.shortcuts.render_to_response("delete_cifs_share_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            share_id = request.POST["share_id"]
            name = request.POST["name"]
            #logger.debug("Delete share request for name %s"%name)
            ret, err = cifs.delete_share(share_id)
            if err:
                raise Exception(err)
            ret, err = cifs.generate_smb_conf()
            if err:
                raise Exception(err)

            audit_str = "Deleted CIFS share %s" % name
            audit.audit("delete_cifs_share", audit_str, request)
            return django.http.HttpResponseRedirect('/storage_access/view_cifs_shares?ack=deleted')
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Delete a CIFS share'
        return_dict['tab'] = 'view_cifs_shares_tab'
        return_dict["error"] = 'Error deleting a  CIFS share'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #10
0
def delete_local_user(request):

    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'username'])
        if err:
            raise Exception(err)
        if 'username' not in req_ret:
            raise Exception('Invalid request, please use the menus.')

        if request.method == "GET":
            # Return the form
            return_dict["username"] = request.GET["username"]
            return django.shortcuts.render_to_response("delete_local_user_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            ret, err = local_users.delete_local_user(request.POST["username"])
            if not ret:
                if err:
                    raise Exception(err)
                else:
                    raise Exception('Error deleting local user')
            audit_str = "Deleted a local user %s" % request.POST["username"]
            audit.audit("delete_local_user", audit_str, request)
            url = '/users_groups/view_local_users?ack=deleted'
            return django.http.HttpResponseRedirect(url)
    except Exception, e:
        return_dict['base_template'] = 'users_groups_base.html'
        return_dict["page_title"] = 'Delete a local user'
        return_dict['tab'] = 'view_local_users_tab'
        return_dict["error"] = 'Error deleting a local user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #11
0
def create_ftp_user_dirs(request):
    return_dict = {}
    try:
        config, err = vsftp.get_ftp_config()
        if err:
            raise Exception(err)
        if 'dataset' not in config:
            raise Exception(
                'No home dataset has been configured for the FTP service. Please do that before creating FTP home directories')
        users, err = local_users.get_local_users()
        if err:
            raise Exception(err)
        res, err = vsftp.create_ftp_user_dirs(config['dataset'], users)
        if err:
            raise Exception(err)

        audit.audit("create_ftp_dir",
                    'Created FTP user directories', request)
        return django.http.HttpResponseRedirect('/storage_access/view_ftp_configuration?ack=dirs_created')

    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Create FTP user directories'
        return_dict['tab'] = 'ftp_service_settings'
        return_dict["error"] = 'Error creating FTP user directories '
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #12
0
def reboot_or_shutdown(request):
    return_dict = {}
    audit_str = ""
    try:
        minutes_to_wait = 1
        return_dict['minutes_to_wait'] = minutes_to_wait
        ret, err = django_utils.get_request_parameter_values(request, ['do'])
        if err:
            raise Exception(err)
        if 'do' not in ret:
            raise Exception("Invalid request, please use the menus.")
        do = ret['do']
        return_dict['do'] = do
        if request.method == "GET":
            return django.shortcuts.render_to_response("reboot_or_shutdown.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            if 'conf' not in request.POST:
                raise Exception('Unknown action. Please use the menus')
            audit.audit('reboot_shutdown', 'System %s initiated' %
                        do, request)
            if do == 'reboot':
                command.execute_with_rc('shutdown -r +%d' % minutes_to_wait)
            elif do == 'shutdown':
                command.execute_with_rc('shutdown -h +%d' % minutes_to_wait)
            return django.shortcuts.render_to_response("reboot_or_shutdown_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Reboot or Shutdown Failure'
        return_dict['tab'] = 'reboot_tab'
        return_dict["error"] = 'Error Rebooting'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response('logged_in_error.html', return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #13
0
def update_org_info(request):
    return_dict = {}
    try:
        if request.method == "GET":
            org_info, err = system_info.get_org_info()
            if err:
                raise Exception(err)
            form = system_forms.OrgInfoForm(initial=org_info)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("update_org_info.html", return_dict, context_instance=django.template.context.RequestContext(request))
        elif request.method == "POST":
            form = system_forms.OrgInfoForm(request.POST)
            return_dict["form"] = form
            if not form.is_valid():
                return django.shortcuts.render_to_response("update_org_info.html", return_dict, context_instance=django.template.context.RequestContext(request))

            cd = form.cleaned_data
            ret, err = system_info.update_org_info(cd)
            if err:
                raise Exception(err)

            audit_str = 'Updated organization information: %s' % str(cd)
            audit.audit('update_org_info',
                        audit_str, request)
            return django.http.HttpResponseRedirect("/system/view_system_info?ack=update_org_info_ok")
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = "Update organization's information"
        return_dict['tab'] = 'system_info_tab'
        return_dict["error"] = 'Error updating organization information'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #14
0
def delete_local_user(request):

    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'username'])
        if err:
            raise Exception(err)
        if 'username' not in req_ret:
            raise Exception('Invalid request, please use the menus.')

        if request.method == "GET":
            # Return the form
            return_dict["username"] = request.GET["username"]
            return django.shortcuts.render_to_response("delete_local_user_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            ret, err = local_users.delete_local_user(request.POST["username"])
            if not ret:
                if err:
                    raise Exception(err)
                else:
                    raise Exception('Error deleting local user')
            audit_str = "Deleted a local user %s" % request.POST["username"]
            audit.audit("delete_local_user", audit_str, request)
            url = '/view_local_users?ack=deleted'
            return django.http.HttpResponseRedirect(url)
    except Exception, e:
        return_dict['base_template'] = 'users_groups_base.html'
        return_dict["page_title"] = 'Delete a local user'
        return_dict['tab'] = 'view_local_users_tab'
        return_dict["error"] = 'Error deleting a local user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #15
0
def run_rsync_remote_replication(remote_replication_id):
    fail_audit_str = ''
    try:
        rr, err = remote_replication.get_remote_replications(
            remote_replication_id)
        if err:
            raise Exception('Could not fetch replication details: %s' % err)

        replication = rr[0]
        mode = replication['mode']
        fail_audit_str = 'Replication description: %s\n' % replication[
            'description']
        fail_audit_str += 'Schedule description: %s\n' % replication[
            'schedule_description']
        if mode != 'rsync':
            raise Exception('Invalid replication mode')

        ret, err = remote_replication.run_rsync_remote_replication(
            remote_replication_id)
        if err:
            raise Exception(err)

    except Exception, e:
        audit.audit("task_fail",
                    "Did not initiate replication:\n%s - %s" %
                    (fail_audit_str, e),
                    None,
                    system_initiated=True)
        return False, 'Error adding rsync remote replication task: %s' % e
コード例 #16
0
def reboot_or_shutdown(request):
    return_dict = {}
    audit_str = ""
    try:
        minutes_to_wait = 1
        return_dict['minutes_to_wait'] = minutes_to_wait
        ret, err = django_utils.get_request_parameter_values(request, ['do'])
        if err:
            raise Exception(err)
        if 'do' not in ret:
            raise Exception("Invalid request, please use the menus.")
        do = ret['do']
        return_dict['do'] = do
        if request.method == "GET":
            return django.shortcuts.render_to_response("reboot_or_shutdown.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            if 'conf' not in request.POST:
                raise Exception('Unknown action. Please use the menus')
            audit.audit('reboot_shutdown', 'System %s initiated' %
                        do, request)
            if do == 'reboot':
                command.execute_with_rc('shutdown -r +%d' % minutes_to_wait)
            elif do == 'shutdown':
                command.execute_with_rc('shutdown -h +%d' % minutes_to_wait)
            return django.shortcuts.render_to_response("reboot_or_shutdown_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Reboot or Shutdown Failure'
        return_dict['tab'] = 'reboot_tab'
        return_dict["error"] = 'Error Rebooting'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response('logged_in_error.html', return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #17
0
def create_ftp_user_dirs(request):
    return_dict = {}
    try:
        config, err = vsftp.get_ftp_config()
        if err:
            raise Exception(err)
        if 'dataset' not in config:
            raise Exception(
                'No home dataset has been configured for the FTP service. Please do that before creating FTP home directories')
        users, err = local_users.get_local_users()
        if err:
            raise Exception(err)
        res, err = vsftp.create_ftp_user_dirs(config['dataset'], users)
        if err:
            raise Exception(err)

        audit.audit("create_ftp_dir",
                    'Created FTP user directories', request)
        return django.http.HttpResponseRedirect('/view_ftp_configuration?ack=dirs_created')

    except Exception, e:
        return_dict['base_template'] = "services_base.html"
        return_dict["page_title"] = 'Create FTP user directories'
        return_dict['tab'] = 'ftp_service_settings'
        return_dict["error"] = 'Error creating FTP user directories '
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #18
0
def delete_iscsi_target(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'target_name'])
        if err:
            raise Exception(err)
        if 'target_name' not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        target_name = req_ret['target_name']

        if request.method == "GET":
            return_dict["target_name"] = target_name
            return django.shortcuts.render_to_response("delete_iscsi_target_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            ret, err = iscsi_stgt.delete_target(target_name)
            if not ret:
                if err:
                    raise Exception(err)
                else:
                    raise Exception("Unknown error")
            audit_str = "Deleted ISCSI target %s" % target_name
            url = '/storage_access/view_iscsi_targets?ack=target_deleted'
            audit.audit("delete_iscsi_target", audit_str, request)
            return django.http.HttpResponseRedirect(url)
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Remove an ISCSI targets'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error removing an ISCSI target'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #19
0
def sync_ntp(request):
    return_dict = {}
    try:
        output, err = ntp.sync_ntp()
        if err:
            raise Exception(err)
        else:
            if 'ntp_sync' in output and output[
                    'ntp_sync'] == True and 'server_used' in output:
                audit_str = "Performed a one time NTP sync to server %s" % output[
                    'server_used']
                audit.audit("ntp_sync", audit_str, request)
                return django.http.HttpResponseRedirect(
                    "/system/view_ntp_settings?ack=ntp_synced&server_used=%s" %
                    output['server_used'])
            else:
                raise Exception("NTP sync failed")
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'View NTP settings'
        return_dict['tab'] = 'ntp_settings_tab'
        return_dict["error"] = 'Error retrieving syncing with ntp servers'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #20
0
def create_iscsi_target(request):
    return_dict = {}
    try:
        if request.method == "GET":
            # Return the form
            form = iscsi_stgt_forms.IscsiTargetForm()
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_target.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiTargetForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.create_target(cd["name"])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Unknown error.")
                audit_str = "Created an ISCSI target %s" % cd["name"]
                audit.audit("create_iscsi_target", audit_str, request)
                url = '/view_iscsi_targets?ack=created'
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_target.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "shares_base.html"
        return_dict["page_title"] = 'Create an ISCSI target'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error creating an ISCSI target'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #21
0
def delete_cifs_share(request):

    return_dict = {}
    try:
        if request.method == "GET":
            # Return the conf page
            share_id = request.GET["share_id"]
            name = request.GET["name"]
            return_dict["share_id"] = share_id
            return_dict["name"] = name
            return django.shortcuts.render_to_response("delete_cifs_share_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            share_id = request.POST["share_id"]
            name = request.POST["name"]
            #logger.debug("Delete share request for name %s"%name)
            ret, err = cifs.delete_share(share_id)
            if err:
                raise Exception(err)
            ret, err = cifs.generate_smb_conf()
            if err:
                raise Exception(err)

            audit_str = "Deleted CIFS share %s" % name
            audit.audit("delete_cifs_share", audit_str, request)
            return django.http.HttpResponseRedirect('/storage_access/view_cifs_shares?ack=deleted')
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Delete a CIFS share'
        return_dict['tab'] = 'view_cifs_shares_tab'
        return_dict["error"] = 'Error deleting a  CIFS share'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #22
0
def delete_remote_monitoring_server(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
            'view', 'ip'])
        if err:
            raise Exception(err)
        if 'ip' not in req_ret:
            raise Exception('Invalid request, please use the menus.')
        ip = req_ret['ip']
        servers, err = remote_monitoring.get_servers()
        if err:
            raise Exception(err)
        if ip not in servers.keys():
            raise Exception(
                'Specified server is currently not being remote monitored.')
        name = servers[ip]['name']
        ret, err = remote_monitoring.delete_server(ip)
        if err:
            raise Exception(err)
        audit_str = 'Removed the remote monitoring server with IP : %s name : %s' % (
            ip, name)
        audit.audit("delete_remote_monitoring_server", audit_str, request)
        return django.http.HttpResponseRedirect('/monitoring/view_remote_monitoring_servers?ack=deleted')

    except Exception, e:
        return_dict["page_title"] = 'Remove remote server monitoring server'
        return_dict['tab'] = 'remote_monitoring_tab'
        return_dict["error"] = 'Error removing remote monitoring server'
        return_dict['base_template'] = "monitoring_base.html"
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #23
0
def delete_iscsi_target(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'target_name'])
        if err:
            raise Exception(err)
        if 'target_name' not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        target_name = req_ret['target_name']

        if request.method == "GET":
            return_dict["target_name"] = target_name
            return django.shortcuts.render_to_response("delete_iscsi_target_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            ret, err = iscsi_stgt.delete_target(target_name)
            if not ret:
                if err:
                    raise Exception(err)
                else:
                    raise Exception("Unknown error")
            audit_str = "Deleted ISCSI target %s" % target_name
            url = '/view_iscsi_targets?ack=target_deleted'
            audit.audit("delete_iscsi_target", audit_str, request)
            return django.http.HttpResponseRedirect(url)
    except Exception, e:
        return_dict['base_template'] = "shares_base.html"
        return_dict["page_title"] = 'Remove an ISCSI targets'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error removing an ISCSI target'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #24
0
def create_iscsi_target(request):
    return_dict = {}
    try:
        if request.method == "GET":
            # Return the form
            form = iscsi_stgt_forms.IscsiTargetForm()
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_target.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiTargetForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.create_target(cd["name"])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Unknown error.")
                audit_str = "Created an ISCSI target %s" % cd["name"]
                audit.audit("create_iscsi_target", audit_str, request)
                url = '/storage_access/view_iscsi_targets?ack=created'
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_target.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Create an ISCSI target'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error creating an ISCSI target'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #25
0
def run_rsync_remote_replication(remote_replication_id):
    fail_audit_str = ''
    try:
        rr, err = remote_replication.get_remote_replications(
            remote_replication_id)
        if err:
            raise Exception('Could not fetch replication details: %s' % err)

        replication = rr[0]
        mode = replication['mode']
	fail_audit_str = 'Replication description: %s\n' % replication['description']
	fail_audit_str += 'Schedule description: %s\n' % replication['schedule_description']
        if mode != 'rsync':
            raise Exception('Invalid replication mode')

        ret, err = remote_replication.run_rsync_remote_replication(
            remote_replication_id)
        if err:
            raise Exception(err)


    except Exception, e:
        audit.audit("task_fail", "Did not initiate replication:\n%s - %s" % (fail_audit_str, e),
                    None, system_initiated=True)
        return False, 'Error adding rsync remote replication task: %s' % e
コード例 #26
0
def delete_rsync_share(request):
    return_dict = {}
    try:
        if request.method == "GET":
            name = request.GET.get("name")
            return_dict["name"] = name
            return django.shortcuts.render_to_response(
                "delete_rsync_share.html",
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
        else:
            name = request.POST.get("name")
            delshare, err = rsync.delete_rsync_share(name)
            if err:
                raise Exception(err)
            audit_str = "Deleted RSYNC share %s" % name
            audit.audit("delete_rsync_share", audit_str, request)
            return django.http.HttpResponseRedirect(
                "/storage_access/view_rsync_shares/?ack=deleted")
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'RSync shares'
        return_dict['tab'] = 'view_rsync_shares_tab'
        return_dict["error"] = 'Error deleting RSync share'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #27
0
def delete_scan_configuration(request):

    return_dict = {}
    try:
        type = 'mark_deleted'
        req_params, err = django_utils.get_request_parameter_values(
            request, ['scan_configuration_id', 'type'])
        if err:
            raise Exception(err)
        if 'scan_configuration_id' not in req_params:
            raise Exception('Malformed request. Please use the menus.')
        scan_configuration_id = int(req_params['scan_configuration_id'])
        if 'type' in req_params and req_params['type'] == 'expunge':
            type = 'expunge'
            configurations, err = scan_utils.get_scan_configurations(
                scan_configuration_id=scan_configuration_id,
                include_deleted=True)
        else:
            configurations, err = scan_utils.get_scan_configurations(
                scan_configuration_id=scan_configuration_id)
        if err:
            raise Exception(err)
        if not configurations:
            raise Exception(
                'Invalid configuration specified. Please us the menus.')

        return_dict["configuration"] = configurations[0]
        return_dict["type"] = type

        if request.method == "GET":
            # Return the conf page
            return django.shortcuts.render_to_response(
                "delete_scan_configuration_conf.html",
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
        else:
            ret, err = scan_utils.delete_scan_configuration(configurations[0],
                                                            type=type)
            if err:
                raise Exception(err)

            audit_str = "Removed application Storage Insights configuration for folder '%s'" % (
                configurations[0]['scan_dir'].lower())
            audit.audit("application_action", audit_str, request)
            return django.http.HttpResponseRedirect(
                '/applications/storage_insights/view_scan_configurations?ack=deleted_scan_configuration'
            )
    except Exception, e:
        return_dict['base_template'] = "storage_insights_base.html"
        return_dict["page_title"] = 'Remove folder scan configuration'
        return_dict['tab'] = 'scan_configurations_tab'
        return_dict[
            "error"] = 'Error removing Storage Insight folder scan configuration'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #28
0
def update_remote_replication_user_comment(request):
    """Modifies only the user comment, not any other field

    """
    return_dict = {}
    try:

        ret, err = django_utils.get_request_parameter_values(
            request, ['remote_replication_id'])
        if err:
            raise Exception(err)
        if 'remote_replication_id' not in ret:
            raise Exception(
                "Requested remote replication not found, please use the menus.")
        remote_replication_id = ret['remote_replication_id']
        replications, err = remote_replication.get_remote_replications(
            remote_replication_id)
        if err:
            raise Exception(err)
        if not replications:
            raise Exception('Specified replication definition not found')

        if request.method == "GET":
            return_dict['replication'] = replications[0]
            if return_dict['replication']['mode'] == 'rsync':
                rsync_switches = {}
                rsync_switches['long'] = return_dict['replication']['rsync'][0]['long_switches']
                rsync_switches['short'] = return_dict['replication']['rsync'][0]['short_switches']

                return_dict['rsync_switches_description'], err = rsync.form_switches_description(rsync_switches)
                if err:
                    raise Exception('Could not parse rsync switches description: %s' % err)

            return django.shortcuts.render_to_response('update_remote_replication_user_comment.html', return_dict, context_instance=django.template.context.RequestContext(request))
        elif request.method == "POST":
            if ('user_comment') not in request.POST:
                raise Exception("Incomplete request.")
            user_comment = request.POST.get('user_comment')
            description = ''
            description += 'User comment: %s' % user_comment
            description += '\nDescription: %s' % replications[0]['description']

            # update comment
            is_update, err = remote_replication.update_remote_replication_user_comment(
                remote_replication_id, user_comment)
            if err:
                raise Exception(err)

            audit.audit("update_remote_replication_user_comment", description, request)

            return django.http.HttpResponseRedirect('/replication/view_remote_replications?ack=user_comment_updated')

    except Exception as e:
        return_dict['base_template'] = "replication_base.html"
        return_dict["page_title"] = 'Update remote replication user comment'
        return_dict['tab'] = 'view_remote_replications_tab'
        return_dict["error"] = 'Error updating replication comment'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #29
0
def create_iscsi_user_authentication(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['target_name', 'authentication_type'])
        if err:
            raise Exception(err)
        if ('target_name' and 'authentication_type') not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        authentication_type = req_ret['authentication_type']
        target_name = req_ret['target_name']

        if authentication_type not in ['incoming', 'outgoing']:
            raise Exception("Invalid user type. Please use the menus.")

        if request.method == "GET":
            # Return the form
            initial = {}
            initial['authentication_type'] = authentication_type
            initial['target_name'] = target_name
            form = iscsi_stgt_forms.IscsiAuthenticationForm(initial=initial)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_target_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiAuthenticationForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.add_user_authentication(
                    cd['target_name'], cd['authentication_type'], cd["username"], cd["password"])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Error adding the ISCSI target user.")
                if cd['authentication_type'] == 'incoming':
                    audit_str = "Added ISCSI initiator authentication user %s for target %s" % (
                        cd["username"], cd['target_name'])
                    url = '/storage_access/view_iscsi_target?name=%s&ack=added_initiator_authentication' % target_name
                else:
                    audit_str = "Added ISCSI target authentication user %s for target %s" % (
                        cd["username"], cd['target_name'])
                    url = '/storage_access/view_iscsi_target?name=%s&ack=added_target_authentication' % target_name
                audit.audit("add_iscsi_target_authentication",
                            audit_str, request)
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_target_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Add ISCSI authentication user'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error adding ISCSI authentication user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #30
0
def create_iscsi_user_authentication(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['target_name', 'authentication_type'])
        if err:
            raise Exception(err)
        if ('target_name' and 'authentication_type') not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        authentication_type = req_ret['authentication_type']
        target_name = req_ret['target_name']

        if authentication_type not in ['incoming', 'outgoing']:
            raise Exception("Invalid user type. Please use the menus.")

        if request.method == "GET":
            # Return the form
            initial = {}
            initial['authentication_type'] = authentication_type
            initial['target_name'] = target_name
            form = iscsi_stgt_forms.IscsiAuthenticationForm(initial=initial)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_target_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiAuthenticationForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.add_user_authentication(
                    cd['target_name'], cd['authentication_type'], cd["username"], cd["password"])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Error adding the ISCSI target user.")
                if cd['authentication_type'] == 'incoming':
                    audit_str = "Added ISCSI initiator authentication user %s for target %s" % (
                        cd["username"], cd['target_name'])
                    url = '/view_iscsi_target?name=%s&ack=added_initiator_authentication' % target_name
                else:
                    audit_str = "Added ISCSI target authentication user %s for target %s" % (
                        cd["username"], cd['target_name'])
                    url = '/view_iscsi_target?name=%s&ack=added_target_authentication' % target_name
                audit.audit("add_iscsi_target_authentication",
                            audit_str, request)
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_target_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "shares_base.html"
        return_dict["page_title"] = 'Add ISCSI authentication user'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error adding ISCSI authentication user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #31
0
def create_rsync_share(request):
    return_dict = {}
    try:
        pools, err = zfs.get_pools()
        if err:
            raise Exception(err)

        ds_list = []
        for pool in pools:
            for ds in pool["datasets"]:
                if ds['properties']['type']['value'] == 'filesystem':
                    ds_list.append(
                        {'name': ds["name"], 'mountpoint': ds["mountpoint"]})
        if not ds_list:
            raise Exception(
                'No ZFS datasets available. Please create a dataset before creating shares.')

        if request.method == "GET":
            form = rsync_forms.CreateShareForm(dataset_list=ds_list)
            return_dict['form'] = form
            return django.shortcuts.render_to_response("create_rsync_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = rsync_forms.CreateShareForm(
                request.POST, dataset_list=ds_list)
            path = request.POST.get("path")
            if not os.path.exists(path):
                os.mkdir(path)
            owner_dict, err = config.get_default_file_dir_owner()
            if err:
                raise Exception(err)
            owner_uid, err = config.get_system_uid_gid(
                owner_dict['user'], 'user')
            if err:
                raise Exception(err)
            owner_gid, err = config.get_system_uid_gid(
                owner_dict['group'], 'group')
            if err:
                raise Exception(err)

            os.chown(path, owner_uid, owner_gid)
            return_dict['form'] = form
            if not form.is_valid():
                return django.shortcuts.render_to_response("create_rsync_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
            cd = form.cleaned_data
            result, err = rsync.create_rsync_share(
                cd["name"], cd["path"], cd["comment"], cd["browsable"], cd["readonly"], "integralstor", "integralstor")
            if err:
                raise Exception(err)
            audit_str = "Created RSYNC share with name '%s'. The share is set to be %s and %s" % (
                cd["name"], "Browsable" if cd["browsable"] else "Not Browsable", "Readonly" if cd["readonly"] else "Read/Write")
            audit.audit("create_rsync_share", audit_str, request)
            return django.http.HttpResponseRedirect('/storage_access/view_rsync_shares/?ack=created')
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'RSync shares'
        return_dict['tab'] = 'view_rsync_shares_tab'
        return_dict["error"] = 'Error creating RSync shares'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #32
0
def update_admin_password(request):
    """ Used to change a user's password for the management utility"""

    try:
        return_dict = {}

        if request.user and request.user.is_authenticated():
            if request.method == 'POST':
                iv_logging.debug("Admin password change posted")
                # user has submitted the password info
                form = admin_forms.ChangeAdminPasswordForm(request.POST)
                if form.is_valid():
                    cd = form.cleaned_data
                    oldPasswd = cd['oldPasswd']
                    newPasswd1 = cd['newPasswd1']
                    newPasswd2 = cd['newPasswd2']
                    # Checking for old password is done in the form itself
                    if request.user.check_password(oldPasswd):
                        if newPasswd1 == newPasswd2:
                            # all systems go so now change password
                            request.user.set_password(newPasswd1)
                            request.user.save()
                            return_dict[
                                'ack_message'] = 'Password changed sucessful.'
                            iv_logging.info(
                                "Admin password change request successful.")
                            audit_str = "Changed admin password"
                            audit.audit("modify_admin_password", audit_str,
                                        request)
                        else:
                            return_dict['error'] = 'New passwords do not match'
                # else invalid form or error so existing form data to return_dict and
                # fall through to redisplay the form
                if 'success' not in return_dict:
                    return_dict['form'] = form
                    iv_logging.info("Admin password change request failed.")
            else:
                form = admin_forms.ChangeAdminPasswordForm()
                return_dict['form'] = form

            return django.shortcuts.render_to_response(
                'update_admin_password_form.html',
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
        else:
            # User not authenticated so return a login screen
            return django.http.HttpResponseRedirect('/login/')
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Change admininistrator password'
        return_dict['tab'] = 'system_info_tab'
        return_dict["error"] = 'Error changing administrator password'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            'logged_in_error.html',
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #33
0
def upload_ssh_user_key(request):
    return_dict = {}
    try:
        user = request.GET.get('user', 'replicator')
        return_dict["selected_user"] = user
        if request.method == 'POST':
            # This works for user deleting the key files. This should be moved
            # to a new function in itself
            authorized_key = request.POST.get('authorized_key', None)
            if authorized_key:
                description = ""
                user = request.POST.get("selected_user")
                key = request.POST.get("authorized_key")
                description = "%s" % (user)
                audit.audit("remove_ssh_user_key", description, request)
                files = open((pki._get_authorized_file(user)), 'r').readlines()
                authorized_keys = open(pki._get_authorized_file(user), 'w')
                for file in files:
                    if key.strip() != file.strip():
                        authorized_keys.write(file)
                ack_message = "key_deleted"
            # This works for user uploading new keys
            else:
                desscription = ""
                authorized_key = request.FILES.get('pub_key')
                user = request.POST.get('user')
                description = "%s  %s" % (user, authorized_key)
                audit.audit("upload_ssh_user_key", description, request)

                with open('/%s/authorized_keys' % (pki._get_ssh_dir(user)),
                          'ab') as destination:
                    for chunk in authorized_key.chunks():
                        destination.write(chunk)
                perm, err = pki.update_ssh_dir_permissions(user)
                if err:
                    raise Exception(err)
                ack_message = "key_added"
            return django.http.HttpResponseRedirect(
                "/keys_certs/view_user_ssh_keys/?ack=%s&user=%s" %
                (ack_message, user))
        elif request.method == 'GET':
            return django.shortcuts.render_to_response(
                "upload_ssh_user_key.html",
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
    except Exception, e:
        return_dict['base_template'] = "keys_certs_base.html"
        return_dict["page_title"] = 'Upload a Public Key'
        return_dict['tab'] = 'upload_public_key_tab'
        return_dict[
            "error"] = 'Error adding Public key. Please check the value'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #34
0
def delete_iscsi_user_authentication(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['target_name', 'authentication_type', 'username'])
        if err:
            raise Exception(err)
        if ('target_name' and 'authentication_type'
                and 'username') not in req_ret:
            raise Exception("Invalid request, please use the menus.")

        authentication_type = req_ret['authentication_type']
        target_name = req_ret['target_name']
        username = req_ret['username']

        if authentication_type not in ['incoming', 'outgoing']:
            raise Exception("Invalid user type. Please use the menus.")

        if request.method == "GET":
            return_dict["target_name"] = target_name
            return_dict["username"] = username
            return_dict["authentication_type"] = authentication_type
            return django.shortcuts.render_to_response(
                "delete_iscsi_user_auth_conf.html",
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
        else:
            ret, err = iscsi_stgt.remove_user_authentication(
                target_name, username, authentication_type)
            if not ret:
                if err:
                    raise Exception(err)
                else:
                    raise Exception("Unknown error.")
            if authentication_type == 'incoming':
                audit_str = "Removed ISCSI initiator authentication user %s for target %s" % (
                    username, target_name)
                url = '/storage_access/view_iscsi_target?name=%s&ack=removed_initiator_authentication' % target_name
            else:
                audit_str = "Removed ISCSI target authentication user %s for target %s" % (
                    username, target_name)
                url = '/storage_access/view_iscsi_target?name=%s&ack=removed_target_authentication' % target_name
            audit.audit("remove_iscsi_target_authentication", audit_str,
                        request)
            return django.http.HttpResponseRedirect(url)
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Remove ISCSI authentication user'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error removing ISCSI authentication user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #35
0
def update_scheduled_task_schedule(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['cron_task_id'])
        if err:
            raise Exception(err)

        if 'cron_task_id' not in req_ret:
            raise Exception("Invalid request, please use the menus.")

        cron_task_id = req_ret['cron_task_id']
        return_dict['cron_task_id'] = cron_task_id

        cron_task_list, err = scheduler_utils.get_cron_tasks(
            cron_task_id=cron_task_id)
        if err:
            raise Exception(err)
        if request.method == "GET":
            # Return the conf page
            return_dict['schedule_description'] = cron_task_list[0][
                'schedule_description'].lower()
            return django.shortcuts.render_to_response(
                "update_scheduled_task_schedule.html",
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
        else:
            scheduler = request.POST.get('scheduler')
            schedule = scheduler.split()
            ret, err = scheduler_utils.update_cron_schedule(
                cron_task_id, 'root', schedule[0], schedule[1], schedule[2],
                schedule[3], schedule[4])
            if err:
                raise Exception(err)
            #Get the new entry now..
            cron_task_list, err = scheduler_utils.get_cron_tasks(
                cron_task_id=cron_task_id)
            if err:
                raise Exception(err)
            audit_str = 'Modified the schedule for "%s" to "%s"' % (
                cron_task_list[0]['description'].lower(),
                cron_task_list[0]['schedule_description'].lower())
            audit.audit("update_schedule_task_schedule", audit_str, request)
            return django.http.HttpResponseRedirect(
                '/tasks/view_scheduled_tasks?ack=modified')
    except Exception, e:
        return_dict['base_template'] = "tasks_base.html"
        return_dict["page_title"] = 'Scheduled tasks'
        return_dict['tab'] = 'view_scheduled_tasks_tab'
        return_dict["error"] = 'Error modifying task schedule'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #36
0
def update_service_status(request):
    return_dict = {}
    try:
        if request.method == "GET":
            raise Exception("Invalid request. Please use the menus")
        if 'service' not in request.POST:
            raise Exception("Invalid request. Please use the menus")
        if 'action' not in request.POST or request.POST['action'] not in [
                'start', 'stop', 'restart', 'enable', 'disable'
        ]:
            raise Exception("Invalid request. Please use the menus")

        service = request.POST['service']
        action = request.POST['action']

        if 'action' == 'start' and service == 'vsftpd':
            # Need to make sure that all local users have their directories
            # created so do it..
            config, err = vsftp.get_ftp_config()
            if err:
                raise Exception(err)
            users, err = local_users.get_local_users()
            if err:
                raise Exception(err)
            ret, err = create_ftp_user_dirs(config['dataset'], users)
            if err:
                raise Exception(err)

        audit_str = "Service status change of %s initiated to %s state." % (
            service, action)
        audit.audit("change_service_status", audit_str, request)

        out, err = services_management.update_service_status(service, action)
        if err:
            raise Exception(err)

        if out:
            return django.http.HttpResponseRedirect(
                '/system/view_services?&service_change_status=%s' %
                ','.join(out))
        else:
            return django.http.HttpResponseRedirect(
                '/system/view_services?service_change_status=none')

    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Modify system service state'
        return_dict['tab'] = 'view_services_tab'
        return_dict["error"] = 'Error modifying system services state'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #37
0
def update_nfs_share(request):
    return_dict = {}
    try:
        if request.method == "GET":
            # Return the conf page
            path = request.GET["path"]
            d, err = nfs.get_share(path)
            if err:
                raise Exception(err)
            if not d:
                raise Exception(
                    'Could not find the specified share. Please use the menus.')
            initial = {}
            initial['path'] = d['path']
            if 'clients' in d:
                client_list = []
                for client in d['clients']:
                    client_list.append(client['name'])
                initial['clients'] = ','.join(client_list)
            initial['readonly'] = False
            initial['root_squash'] = False
            initial['all_squash'] = False
            if 'options' in d:
                for option in d['options']:
                    if option == 'ro':
                        initial['readonly'] = True
                    elif option == 'root_squash':
                        initial['root_squash'] = True
                    elif option == 'all_squash':
                        initial['all_squash'] = True
            form = nfs_shares_forms.ShareForm(initial=initial)
            return_dict['form'] = form
            return django.shortcuts.render_to_response("update_nfs_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = nfs_shares_forms.ShareForm(request.POST)
            path = request.POST["path"]
            return_dict['form'] = form
            if not form.is_valid():
                return django.shortcuts.render_to_response("update_nfs_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
            cd = form.cleaned_data
            result, err = nfs.save_share(cd)
            if err:
                raise Exception(err)

            audit_str = "Edited NFS share %s" % path
            audit.audit("edit_nfs_share", audit_str, request)
            return django.http.HttpResponseRedirect('/storage_access/view_nfs_shares?ack=saved')
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Modify a NFS share '
        return_dict['tab'] = 'view_nfs_shares_tab'
        return_dict["error"] = 'Error modifying a NFS share'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #38
0
def delete_bond(request):

    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'name'])
        if err:
            raise Exception(err)
        if 'name' not in req_ret:
            raise Exception('Invalid request, please use the menus')
        name = req_ret['name']
        return_dict["name"] = name

        if request.method == "GET":
            # Return the conf page
            return django.shortcuts.render_to_response("delete_bond_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            result, err = networking.delete_bond(name)
            if not result:
                if not err:
                    raise Exception("Error removing bond")
                else:
                    raise Exception(err)

            python_scripts_path, err = config.get_python_scripts_path()
            if err:
                raise Exception(err)
            python_scripts_path, err = config.get_python_scripts_path()
            if err:
                raise Exception(err)
            status_path, err = config.get_system_status_path()
            if err:
                raise Exception(err)

            ret, err = command.get_command_output(
                "python %s/generate_manifest.py %s" % (python_scripts_path, status_path))
            if err:
                raise Exception(err)

            ret, err = command.get_command_output(
                "python %s/generate_status.py %s" % (python_scripts_path, status_path))
            if err:
                raise Exception(err)

            audit_str = "Removed network bond %s" % (name)
            audit.audit("remove_bond", audit_str, request)
            return django.http.HttpResponseRedirect('/networking/view_interfaces?ack=removed_bond')
    except Exception, e:
        return_dict['base_template'] = "networking_base.html"
        return_dict["page_title"] = 'Remove a network interface bond'
        return_dict['tab'] = 'view_interfaces_tab'
        return_dict["error"] = 'Error removing a network interface bond'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #39
0
def update_nfs_share(request):
    return_dict = {}
    try:
        if request.method == "GET":
            # Return the conf page
            path = request.GET["path"]
            d, err = nfs.get_share(path)
            if err:
                raise Exception(err)
            if not d:
                raise Exception(
                    'Could not find the specified share. Please use the menus.')
            initial = {}
            initial['path'] = d['path']
            if 'clients' in d:
                client_list = []
                for client in d['clients']:
                    client_list.append(client['name'])
                initial['clients'] = ','.join(client_list)
            initial['readonly'] = False
            initial['root_squash'] = False
            initial['all_squash'] = False
            if 'options' in d:
                for option in d['options']:
                    if option == 'ro':
                        initial['readonly'] = True
                    elif option == 'root_squash':
                        initial['root_squash'] = True
                    elif option == 'all_squash':
                        initial['all_squash'] = True
            form = nfs_shares_forms.ShareForm(initial=initial)
            return_dict['form'] = form
            return django.shortcuts.render_to_response("update_nfs_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = nfs_shares_forms.ShareForm(request.POST)
            path = request.POST["path"]
            return_dict['form'] = form
            if not form.is_valid():
                return django.shortcuts.render_to_response("update_nfs_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
            cd = form.cleaned_data
            result, err = nfs.save_share(cd)
            if err:
                raise Exception(err)

            audit_str = "Edited NFS share %s" % path
            audit.audit("edit_nfs_share", audit_str, request)
            return django.http.HttpResponseRedirect('/view_nfs_shares?ack=saved')
    except Exception, e:
        return_dict['base_template'] = "shares_base.html"
        return_dict["page_title"] = 'Modify a NFS share '
        return_dict['tab'] = 'view_nfs_shares_tab'
        return_dict["error"] = 'Error modifying a NFS share'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #40
0
def update_scan_schedule(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, ['scan_configuration_id', 'scheduler'])
        if err:
            raise Exception(err)
        if 'scan_configuration_id' not in req_ret:
            raise Exception('Malformed request. Please use the menus.')
        scan_configuration_id = int(req_ret['scan_configuration_id'])
        if request.method == "GET":
            # Return the conf page
            configurations, err = scan_utils.get_scan_configurations(scan_configuration_id=scan_configuration_id)
            if err:
                raise Exception(err)
            if not configurations:
                raise Exception('Invalid configuration specified. Please us the menus.')

            return_dict['configuration'] = configurations[0]
            return_dict['scan_configuration_id'] = req_ret['scan_configuration_id']
            return django.shortcuts.render_to_response("schedule_scan.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            if 'scheduler' not in req_ret:
                raise Exception("Invalid request, please use the menus.")
            scheduler = req_ret['scheduler']
            schedule = scheduler.split()
            app_root, err = config.get_application_root(app_tag='storage_insights')
            if err:
                raise Exception(err)
            cmd = 'python %s/scripts/python/storage_insights_scanner.py -d -s %d'%(app_root, scan_configuration_id)

            cron_description = 'Storage Insights scanner'
    
            cron_task_id, err = scheduler_utils.create_cron_task(
                cmd, cron_description, schedule[0], schedule[1], schedule[2], schedule[3], schedule[4], task_type_id=6)
            if err:
                raise Exception(err)
            ret, err = scan_utils.update_cron_schedule(scan_configuration_id, cron_task_id)
            if err:
                raise Exception(err)

            cron_task_list, err = scheduler_utils.get_cron_tasks(cron_task_id, task_type_id=6)
            if err:
                raise Exception(err)

            audit_str = "Application Storage Insights scan process scheduled for %s." % cron_task_list[0]['schedule_description'].lower()
            audit.audit("application_action", audit_str, request)
            return django.http.HttpResponseRedirect('/applications/storage_insights/view_scan_configurations?ack=updated_scan_schedule')
    except Exception, e:
        return_dict['base_template'] = "storage_insights_base.html"
        return_dict["page_title"] = 'Schedule folder scan'
        return_dict['tab'] = 'scan_configurations_tab'
        return_dict["error"] = 'Error scheduling Storage Insight folder scan'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #41
0
def delete_local_group(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['grpname'])
        if err:
            raise Exception(err)
        if 'grpname' not in req_ret:
            raise Exception('Invalid request, please use the menus.')

        gd, err = local_users.get_local_group(req_ret['grpname'])
        if err or (not gd):
            if err:
                raise Exception(err)
            else:
                raise Exception("Could not retrieve group information")

        if gd['members']:
            raise Exception(
                "Cannot delete this group as it has the following members : %s"
                % (','.join(gd['members'])))

        if request.method == "GET":
            # Return the form
            return_dict["grpname"] = request.GET["grpname"]
            return django.shortcuts.render_to_response(
                "delete_local_group_conf.html",
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
        else:
            # Form submission so create
            return_dict = {}
            ret, err = local_users.delete_local_group(request.POST["grpname"])
            if not ret:
                if err:
                    raise Exception('Error deleting group : %s' % err)
                else:
                    raise Exception('Error deleting group')
            audit_str = "Deleted a local group %s" % request.POST["grpname"]
            audit.audit("delete_local_group", audit_str, request)
            url = '/users_groups/view_local_groups?ack=deleted'
            return django.http.HttpResponseRedirect(url)
    except Exception, e:
        return_dict['base_template'] = 'users_groups_base.html'
        return_dict["page_title"] = 'Delete a local user group'
        return_dict['tab'] = 'view_local_groups_tab'
        return_dict["error"] = 'Error deleting a local user group'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #42
0
def create_local_user(request):
    return_dict = {}
    try:
        group_list, err = local_users.get_local_groups()
        if err:
            raise Exception(err)
        if request.method == "GET":
            # Return the form
            #form = local_user_forms.LocalUserForm(group_list = group_list)
            form = local_user_forms.LocalUserForm()
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_local_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            #form = local_user_forms.LocalUserForm(request.POST, group_list = group_list)
            form = local_user_forms.LocalUserForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                #ret, err = local_users.create_local_user(cd["username"], cd["name"], cd["password"], cd['gid'])
                group_name, err = config.get_users_default_group()
                if err:
                    raise Exception(err)
                default_gid, err = config.get_system_uid_gid(
                    group_name, 'group')
                if err:
                    raise Exception(err)

                ret, err = local_users.create_local_user(
                    cd["username"], cd["name"], cd["password"], default_gid)
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Error creating the local user.")

                audit_str = "Created a local user %s" % cd["username"]
                audit.audit("create_local_user", audit_str, request)
                if group_list:
                    url = '/update_local_user_group_membership/?username=%s&ack=created' % cd['username']
                else:
                    url = '/view_local_users?ack=created'
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_local_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = 'users_groups_base.html'
        return_dict["page_title"] = 'Create a local users'
        return_dict['tab'] = 'view_local_users_tab'
        return_dict["error"] = 'Error creating a local user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #43
0
def create_iscsi_acl(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'target_name'])
        if err:
            raise Exception(err)
        if 'target_name' not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        target_name = req_ret['target_name']

        target, err = iscsi_stgt.get_target(target_name)
        if err:
            raise Exception(err)
        if not target:
            raise Exception('Specified target not found')

        if request.method == "GET":
            # Return the form
            initial = {}
            initial['target_name'] = target_name
            form = iscsi_stgt_forms.IscsiAclForm(initial=initial)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_acl.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiAclForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.add_acl(cd['target_name'], cd['acl'])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Unknown error.")
                audit_str = "Added ISCSI ACL %s for target %s" % (
                    cd["acl"], cd['target_name'])
                url = '/view_iscsi_target?name=%s&ack=added_acl' % target_name
                audit.audit("add_iscsi_acl", audit_str, request)
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_acl.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "shares_base.html"
        return_dict["page_title"] = 'Add ISCSI ACL'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error adding ISCSI ACL'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #44
0
def download_sys_info(request):
    return_dict = {}
    try:
        config_dir, err = config.get_config_dir()
        if err:
            raise Exception(err)
        zf_name = "system_info.zip"
        try:
            out = io.BytesIO()
            zf = zipfile.ZipFile(out, 'w')
            abs_src = os.path.abspath(config_dir)
            lu, err = local_users.get_local_users()
            if err:
                raise Exception(err)
            lg, err = local_users.get_local_groups()
            if err:
                raise Exception(err)
            with open('/tmp/local_users_tmp', 'w') as fd:
                json.dump(lu, fd, indent=2)
            with open('/tmp/local_groups_tmp', 'w') as fd:
                json.dump(lg, fd, indent=2)
            zf.write('/tmp/local_users_tmp', 'local_users')
            zf.write('/tmp/local_groups_tmp', 'local_groups')
            for conf_subdir in upload_download_conf_dirs:
                for dirname, subdirs, files in os.walk(
                        '%s/%s' % (config_dir, conf_subdir)):
                    for filename in files:
                        absname = os.path.abspath(
                            os.path.join(dirname, filename))
                        arcname = absname[len(abs_src) + 1:]
                        zf.write(absname, arcname)
            for key, value in upload_download_logs.iteritems():
                if os.path.isfile(value):
                    zf.write(value, key)
            zf.close()
            audit_str = 'Downloaded system configuration.'
            audit.audit('download_configuration', audit_str, request)
        except Exception as e:
            raise Exception("Error compressing remote log file : %s" % str(e))
        response = django.http.HttpResponse(
            out.getvalue(), content_type='application/x-compressed')
        response['Content-disposition'] = 'attachment; filename=%s' % (zf_name)
        return response
    except Exception as e:
        return_dict["base_template"] = 'system_base.html'
        return_dict['tab'] = 'system_info_tab'
        return_dict["page_title"] = 'Download system configuration'
        return_dict["error"] = 'Error downloading system configuration'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #45
0
def create_iscsi_acl(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'target_name'])
        if err:
            raise Exception(err)
        if 'target_name' not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        target_name = req_ret['target_name']

        target, err = iscsi_stgt.get_target(target_name)
        if err:
            raise Exception(err)
        if not target:
            raise Exception('Specified target not found')

        if request.method == "GET":
            # Return the form
            initial = {}
            initial['target_name'] = target_name
            form = iscsi_stgt_forms.IscsiAclForm(initial=initial)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_acl.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiAclForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.add_acl(cd['target_name'], cd['acl'])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Unknown error.")
                audit_str = "Added ISCSI ACL %s for target %s" % (
                    cd["acl"], cd['target_name'])
                url = '/storage_access/view_iscsi_target?name=%s&ack=added_acl' % target_name
                audit.audit("add_iscsi_acl", audit_str, request)
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_acl.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Add ISCSI ACL'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error adding ISCSI ACL'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #46
0
def upload_ssh_host_key(request):
    return_dict = {}
    try:
        user = request.GET.get('user', 'replicator')
        return_dict["selected_user"] = user

        if request.method == 'POST':
            authorized_key = request.POST.get('authorized_key', None)
            # This is a delete operation. authorized_key in post is delete and
            # as a file is file upload
            if authorized_key:
                user = request.POST.get("selected_user")
                key = request.POST.get("authorized_key")
                description = "%s" % (user)
                audit.audit("remove_ssh_host_key", description, request)

                files = open((pki._get_known_hosts(user)), 'r').readlines()
                authorized_keys = open(pki._get_known_hosts(user), 'w')
                for file in files:
                    if key.strip() != file.strip():
                        authorized_keys.write(file)
                ack_message = "host_deleted"
            else:
                authorized_key = request.FILES.get('pub_key')
                ip = request.POST.get('ip')
                user = request.POST.get('user', 'replicator')
                description = "%s %s  %s" % (user, ip, authorized_key)
                audit.audit("upload_ssh_host_key", description, request)

                hosts_file = pki._get_known_hosts(user)
                # print hosts_file
                with open("/tmp/hosts_file", 'wb+') as destination:
                    for chunk in authorized_key.chunks():
                        destination.write(chunk)
                with open("/tmp/hosts_file", 'r') as key:
                    data = key.read()
                # print data
                with open(hosts_file, 'ab') as key:
                    key.write(ip + " " + data)
                perm, err = pki.update_ssh_dir_permissions(user)
                if err:
                    raise Exception(err)
                ack_message = "host_added"
            return django.http.HttpResponseRedirect("/keys_certs/view_known_hosts_ssh_keys/?ack=%s&user=%s" % (ack_message, user))
        elif request.method == 'GET':
            return django.shortcuts.render_to_response("upload_ssh_host_key.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "keys_certs_base.html"
        return_dict["page_title"] = 'Upload a Host Key'
        return_dict['tab'] = 'host_ssh_keys_tab'
        return_dict["error"] = 'Error adding host key. Please check the value'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #47
0
def create_local_user(request):
    return_dict = {}
    try:
        group_list, err = local_users.get_local_groups()
        if err:
            raise Exception(err)
        if request.method == "GET":
            # Return the form
            #form = local_user_forms.LocalUserForm(group_list = group_list)
            form = local_user_forms.LocalUserForm()
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_local_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            #form = local_user_forms.LocalUserForm(request.POST, group_list = group_list)
            form = local_user_forms.LocalUserForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                #ret, err = local_users.create_local_user(cd["username"], cd["name"], cd["password"], cd['gid'])
                group_name, err = config.get_users_default_group()
                if err:
                    raise Exception(err)
                default_gid, err = config.get_system_uid_gid(
                    group_name, 'group')
                if err:
                    raise Exception(err)

                ret, err = local_users.create_local_user(
                    cd["username"], cd["name"], cd["password"], default_gid)
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Error creating the local user.")

                audit_str = "Created a local user %s" % cd["username"]
                audit.audit("create_local_user", audit_str, request)
                if group_list:
                    url = '/users_groups/update_local_user_group_membership/?username=%s&ack=created' % cd['username']
                else:
                    url = '/users_groups/view_local_users?ack=created'
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_local_user.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = 'users_groups_base.html'
        return_dict["page_title"] = 'Create a local users'
        return_dict['tab'] = 'view_local_users_tab'
        return_dict["error"] = 'Error creating a local user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #48
0
def create_iscsi_lun(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'target_name'])
        if err:
            raise Exception(err)
        if 'target_name' not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        target_name = req_ret['target_name']
        zvols, err = zfs.get_all_zvols()
        if err:
            raise Exception(err)
        if not zvols:
            raise Exception(
                "There are no block device volumes created. Please create one first before adding a LUN.")
        if request.method == "GET":
            # Return the form
            initial = {}
            initial['target_name'] = target_name
            form = iscsi_stgt_forms.IscsiLunForm(initial=initial, zvols=zvols)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_lun.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiLunForm(request.POST, zvols=zvols)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.create_lun(cd["target_name"], cd['path'])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Unknown error.")
                audit_str = "Created an ISCSI LUN in target %s with path %s" % (
                    cd["target_name"], cd['path'])
                audit.audit("create_iscsi_lun", audit_str, request)
                url = '/storage_access/view_iscsi_target?name=%s&ack=lun_created' % target_name
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_lun.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Create an ISCSI LUN'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error creating an ISCSI LUN'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #49
0
def create_iscsi_lun(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, [
                                                                 'target_name'])
        if err:
            raise Exception(err)
        if 'target_name' not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        target_name = req_ret['target_name']
        zvols, err = zfs.get_all_zvols()
        if err:
            raise Exception(err)
        if not zvols:
            raise Exception(
                "There are no block device volumes created. Please create one first before adding a LUN.")
        if request.method == "GET":
            # Return the form
            initial = {}
            initial['target_name'] = target_name
            form = iscsi_stgt_forms.IscsiLunForm(initial=initial, zvols=zvols)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("create_iscsi_lun.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # Form submission so create
            return_dict = {}
            form = iscsi_stgt_forms.IscsiLunForm(request.POST, zvols=zvols)
            if form.is_valid():
                cd = form.cleaned_data
                ret, err = iscsi_stgt.create_lun(cd["target_name"], cd['path'])
                if not ret:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception("Unknown error.")
                audit_str = "Created an ISCSI LUN in target %s with path %s" % (
                    cd["target_name"], cd['path'])
                audit.audit("create_iscsi_lun", audit_str, request)
                url = '/view_iscsi_target?name=%s&ack=lun_created' % target_name
                return django.http.HttpResponseRedirect(url)
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("create_iscsi_lun.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "shares_base.html"
        return_dict["page_title"] = 'Create an ISCSI LUN'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error creating an ISCSI LUN'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #50
0
def update_manifest(request):
    return_dict = {}
    try:
        if request.method == "GET":
            from integralstor import manifest_status as iu
            mi, err = iu.generate_manifest_info(rescan_for_disks=True)
            # print mi, err
            if err:
                raise Exception(err)
            if not mi:
                raise Exception('Could not load new configuration')
            return_dict["mi"] = mi  # Need the hostname here.
            return django.shortcuts.render_to_response(
                "update_manifest.html",
                return_dict,
                context_instance=django.template.context.RequestContext(
                    request))
        elif request.method == "POST":
            python_scripts_path, err = config.get_python_scripts_path()
            if err:
                raise Exception(err)
            ss_path, err = config.get_system_status_path()
            if err:
                raise Exception(err)
            #(ret,rc), err = command.execute_with_rc("python %s/generate_manifest.py %s"%(python_scripts_path, ss_path))
            ret, err = command.get_command_output(
                "python %s/generate_manifest.py %s" %
                (python_scripts_path, ss_path))
            # print 'mani', ret, err
            if err:
                raise Exception(err)
            #(ret,rc), err = command.execute_with_rc("python %s/generate_status.py %s"%(config.get_python_scripts_path(),config.get_system_status_path()))
            ret, err = command.get_command_output(
                "python %s/generate_status.py %s" %
                (python_scripts_path, ss_path))
            # print 'stat', ret, err
            if err:
                raise Exception(err)
            audit_str = 'Reloaded system configuration after hardware scan'
            audit.audit('update_manifest', audit_str, request)
            return django.http.HttpResponseRedirect(
                "/system/view_system_info/")
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Reload system configuration'
        return_dict['tab'] = 'system_info_tab'
        return_dict["error"] = 'Error reloading system configuration'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #51
0
def update_remote_monitoring_server(request):
    return_dict = {}
    try:
        if request.method == "GET":
            servers, err = remote_monitoring.get_servers()
            if err:
                raise Exception(err)
            req_ret, err = django_utils.get_request_parameter_values(request, [
                'view', 'ip'])
            if err:
                raise Exception(err)
            initial = {}
            if 'ip' in req_ret:
                ip = req_ret['ip']
                if ip in servers.keys():
                    initial['ip'] = ip
                    initial['name'] = servers[ip]['name']
                return_dict['action'] = 'update'
            else:
                return_dict['action'] = 'create'
            form = monitoring_forms.RemoteMonitoringServerForm(initial=initial)
            return_dict['form'] = form
            return django.shortcuts.render_to_response("update_remote_monitoring_server.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = monitoring_forms.RemoteMonitoringServerForm(request.POST)
            return_dict["form"] = form
            if form.is_valid():
                cd = form.cleaned_data
                res, err = remote_monitoring.update_server(
                    cd['ip'], cd['name'])
                if not res:
                    if err:
                        raise Exception(err)
                    else:
                        raise Exception(
                            'Error updating remote monitoring server list')
                audit_str = 'Updated the remote monitoring server with IP : %s and name : %s' % (
                    cd['ip'], cd['name'])
                audit.audit("update_remote_monitoring_server",
                            audit_str, request)
                return django.http.HttpResponseRedirect('/monitoring/view_remote_monitoring_servers?ack=updated')
            else:
                # invalid form
                return django.shortcuts.render_to_response("update_remote_monitoring_server.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict["page_title"] = 'Update remote server monitoring server'
        return_dict['tab'] = 'remote_monitoring_tab'
        return_dict["error"] = 'Error updating remote monitoring server'
        return_dict['base_template'] = "monitoring_base.html"
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #52
0
def update_ntp_settings(request):

    return_dict = {}
    try:
        if request.method == "GET":
            ntp_servers, err = ntp.get_ntp_servers()
            if err:
                raise Exception(err)
            if not ntp_servers:
                form = system_forms.ConfigureNTPForm()
            else:
                form = system_forms.ConfigureNTPForm(
                    initial={'server_list': ','.join(ntp_servers)})
            url = "update_ntp_settings.html"
        else:
            form = system_forms.ConfigureNTPForm(request.POST)
            if form.is_valid():
                iv_logging.debug("Got valid request to change NTP settings")
                cd = form.cleaned_data
                server_list = cd["server_list"]
                if ',' in server_list:
                    slist = server_list.split(',')
                else:
                    slist = server_list.split(' ')
                ret, err = ntp.update_integralstor_ntp_servers(slist)
                # print ret, err
                if err:
                    raise Exception(err)
                audit_str = "Modified NTP servers to %s" % server_list
                audit.audit("update_ntp_servers", audit_str, request)
                return django.http.HttpResponseRedirect(
                    "/system/view_ntp_settings?ack=saved")
            else:
                # invalid form
                iv_logging.debug("Got invalid request to change NTP settings")
                url = "update_ntp_settings.html"
        return_dict["form"] = form
        return django.shortcuts.render_to_response(
            url,
            return_dict,
            context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Modify NTP notifications settings'
        return_dict['tab'] = 'ntp_settings_tab'
        return_dict["error"] = 'Error modifying NTP notifications settings'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response(
            "logged_in_error.html",
            return_dict,
            context_instance=django.template.context.RequestContext(request))
コード例 #53
0
def download_sys_info(request):
    return_dict = {}
    try:
        config_dir, err = config.get_config_dir()
        if err:
            raise Exception(err)
        zf_name = "system_info.zip"
        try:
            out = io.BytesIO()
            zf = zipfile.ZipFile(out, 'w')
            abs_src = os.path.abspath(config_dir)
            lu, err = local_users.get_local_users()
            if err:
                raise Exception(err)
            lg, err = local_users.get_local_groups()
            if err:
                raise Exception(err)
            with open('/tmp/local_users_tmp', 'w') as fd:
                json.dump(lu, fd, indent=2)
            with open('/tmp/local_groups_tmp', 'w') as fd:
                json.dump(lg, fd, indent=2)
            zf.write('/tmp/local_users_tmp', 'local_users')
            zf.write('/tmp/local_groups_tmp', 'local_groups')
            for conf_subdir in upload_download_conf_dirs:
                for dirname, subdirs, files in os.walk('%s/%s' % (config_dir, conf_subdir)):
                    for filename in files:
                        absname = os.path.abspath(
                            os.path.join(dirname, filename))
                        arcname = absname[len(abs_src) + 1:]
                        zf.write(absname, arcname)
            for key, value in upload_download_logs.iteritems():
                if os.path.isfile(value):
                    zf.write(value, key)
            zf.close()
            audit_str = 'Downloaded system configuration.'
            audit.audit('download_configuration',
                        audit_str, request)
        except Exception as e:
            raise Exception("Error compressing remote log file : %s" % str(e))
        response = django.http.HttpResponse(
            out.getvalue(), content_type='application/x-compressed')
        response['Content-disposition'] = 'attachment; filename=%s' % (
            zf_name)
        return response
    except Exception as e:
        return_dict["base_template"] = 'system_base.html'
        return_dict['tab'] = 'system_info_tab'
        return_dict["page_title"] = 'Download system configuration'
        return_dict["error"] = 'Error downloading system configuration'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #54
0
def update_admin_password(request):
    """ Used to change a user's password for the management utility"""

    try:
        return_dict = {}

        if request.user and request.user.is_authenticated():
            if request.method == 'POST':
                iv_logging.debug("Admin password change posted")
                # user has submitted the password info
                form = admin_forms.ChangeAdminPasswordForm(request.POST)
                if form.is_valid():
                    cd = form.cleaned_data
                    oldPasswd = cd['oldPasswd']
                    newPasswd1 = cd['newPasswd1']
                    newPasswd2 = cd['newPasswd2']
                    # Checking for old password is done in the form itself
                    if request.user.check_password(oldPasswd):
                        if newPasswd1 == newPasswd2:
                            # all systems go so now change password
                            request.user.set_password(newPasswd1)
                            request.user.save()
                            return_dict['ack_message'] = 'Password changed sucessful.'
                            iv_logging.info(
                                "Admin password change request successful.")
                            audit_str = "Changed admin password"
                            audit.audit("modify_admin_password",
                                        audit_str, request)
                        else:
                            return_dict['error'] = 'New passwords do not match'
                # else invalid form or error so existing form data to return_dict and
                # fall through to redisplay the form
                if 'success' not in return_dict:
                    return_dict['form'] = form
                    iv_logging.info("Admin password change request failed.")
            else:
                form = admin_forms.ChangeAdminPasswordForm()
                return_dict['form'] = form

            return django.shortcuts.render_to_response('update_admin_password_form.html', return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            # User not authenticated so return a login screen
            return django.http.HttpResponseRedirect('/login/')
    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Change admininistrator password'
        return_dict['tab'] = 'system_info_tab'
        return_dict["error"] = 'Error changing administrator password'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response('logged_in_error.html', return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #55
0
def update_rsync_share(request):
    return_dict = {}
    try:
        if request.method == "GET":
            name = request.GET.get("name")
            share, err = rsync.get_rsync_share_details(name)
            if err:
                raise Exception("Unable to load Rsync Shares")
            initial = {}
            initial["name"] = share["name"]
            initial["comment"] = share["comment"]
            initial["path"] = share["path"]
            if share["readonly"]:
                initial["readonly"] = True
            else:
                initial["readonly"] = False
            if share["list"]:
                initial["browsable"] = True
            else:
                initial["browsable"] = False
            form = rsync_forms.ShareForm(initial=initial)
            return_dict["form"] = form
            return django.shortcuts.render_to_response("update_rsync_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            form = rsync_forms.ShareForm(request.POST)
            if form.is_valid():
                cd = form.cleaned_data
                delshare, err = rsync.delete_rsync_share(cd["name"])
                if err:
                    raise Exception(err)
                result, err = rsync.create_rsync_share(
                    cd["name"], cd["path"], cd["comment"], cd["browsable"], cd["readonly"], "integralstor", "integralstor")
                if err:
                    raise Exception(err)
                audit_str = "Edited RSYNC share with name '%s'. The share was modified to be %s and %s" % (
                    cd["name"], "Browsable" if cd["browsable"] else "Not Browsable", "Readonly" if cd["readonly"] else "Read/Write")
                #audit_str = "Edited RSYNC share %s"%cd["name"]
                audit.audit("edit_rsync_share", audit_str, request)
                return django.http.HttpResponseRedirect('/storage_access/view_rsync_shares/?ack=saved')
            else:
                return_dict["form"] = form
                return django.shortcuts.render_to_response("update_rsync_share.html", return_dict, context_instance=django.template.context.RequestContext(request))
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'RSync Share'
        return_dict['tab'] = 'view_rsync_shares_tab'
        return_dict["error"] = 'Error editing RSync shares'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #56
0
def delete_iscsi_user_authentication(request):
    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(
            request, ['target_name', 'authentication_type', 'username'])
        if err:
            raise Exception(err)
        if ('target_name' and 'authentication_type' and 'username') not in req_ret:
            raise Exception(
                "Invalid request, please use the menus.")

        authentication_type = req_ret['authentication_type']
        target_name = req_ret['target_name']
        username = req_ret['username']

        if authentication_type not in ['incoming', 'outgoing']:
            raise Exception("Invalid user type. Please use the menus.")

        if request.method == "GET":
            return_dict["target_name"] = target_name
            return_dict["username"] = username
            return_dict["authentication_type"] = authentication_type
            return django.shortcuts.render_to_response("delete_iscsi_user_auth_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            ret, err = iscsi_stgt.remove_user_authentication(
                target_name, username, authentication_type)
            if not ret:
                if err:
                    raise Exception(err)
                else:
                    raise Exception("Unknown error.")
            if authentication_type == 'incoming':
                audit_str = "Removed ISCSI initiator authentication user %s for target %s" % (
                    username, target_name)
                url = '/storage_access/view_iscsi_target?name=%s&ack=removed_initiator_authentication' % target_name
            else:
                audit_str = "Removed ISCSI target authentication user %s for target %s" % (
                    username, target_name)
                url = '/storage_access/view_iscsi_target?name=%s&ack=removed_target_authentication' % target_name
            audit.audit("remove_iscsi_target_authentication",
                        audit_str, request)
            return django.http.HttpResponseRedirect(url)
    except Exception, e:
        return_dict['base_template'] = "storage_access_base.html"
        return_dict["page_title"] = 'Remove ISCSI authentication user'
        return_dict['tab'] = 'view_iscsi_targets_tab'
        return_dict["error"] = 'Error removing ISCSI authentication user'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #57
0
def update_service_status(request):
    return_dict = {}
    try:
        if request.method == "GET":
            raise Exception("Invalid request. Please use the menus")
        if 'service' not in request.POST:
            raise Exception("Invalid request. Please use the menus")
        if 'action' not in request.POST or request.POST['action'] not in ['start', 'stop', 'restart', 'enable', 'disable']:
            raise Exception("Invalid request. Please use the menus")

        service = request.POST['service']
        action = request.POST['action']

        if 'action' == 'start' and service == 'vsftpd':
            # Need to make sure that all local users have their directories
            # created so do it..
            config, err = vsftp.get_ftp_config()
            if err:
                raise Exception(err)
            users, err = local_users.get_local_users()
            if err:
                raise Exception(err)
            ret, err = create_ftp_user_dirs(config['dataset'], users)
            if err:
                raise Exception(err)

        audit_str = "Service status change of %s initiated to %s state." % (
            service, action)
        audit.audit("change_service_status", audit_str, request)

        out, err = services_management.update_service_status(service, action)
        if err:
            raise Exception(err)

        if out:
            return django.http.HttpResponseRedirect('/system/view_services?&service_change_status=%s' % ','.join(out))
        else:
            return django.http.HttpResponseRedirect('/system/view_services?service_change_status=none')

    except Exception, e:
        return_dict['base_template'] = "system_base.html"
        return_dict["page_title"] = 'Modify system service state'
        return_dict['tab'] = 'view_services_tab'
        return_dict["error"] = 'Error modifying system services state'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))
コード例 #58
0
def delete_scan_schedule(request):

    return_dict = {}
    try:
        req_ret, err = django_utils.get_request_parameter_values(request, ['scan_configuration_id'])
        if err:
            raise Exception(err)
        if 'scan_configuration_id' not in req_ret:
            raise Exception('Malformed request. Please use the menus.')
        scan_configuration_id = int(req_ret['scan_configuration_id'])
        configurations, err = scan_utils.get_scan_configurations(scan_configuration_id=scan_configuration_id)
        if err:
            raise Exception(err)
        if not configurations:
            raise Exception('Invalid configuration specified. Please us the menus.')
        if not configurations[0]['cron_task_id']:
            raise Exception('The specified configuration is not currently scheduled. Please us the menus.')
        cron_task_id = configurations[0]['cron_task_id']

        cron_task_list, err = scheduler_utils.get_cron_tasks(configurations[0]['cron_task_id'], task_type_id=6)
        if err:
            raise Exception(err)
        return_dict["cron_task"] = cron_task_list[0]
        return_dict["configuration"] = configurations[0]
        return_dict["scan_configuration_id"] = scan_configuration_id

        if request.method == "GET":
            # Return the conf page
            return django.shortcuts.render_to_response("delete_scan_schedule_conf.html", return_dict, context_instance=django.template.context.RequestContext(request))
        else:
            cron_description = cron_task_list[0]['description'].lower()

            ret, err = scheduler_utils.delete_cron(cron_task_id)
            if err:
                raise Exception(err)

            audit_str = "Removed application Storage Insights folder scan scheduled for %s" % (cron_task_list[0]['schedule_description'].lower())
            audit.audit("application_action", audit_str, request)
            return django.http.HttpResponseRedirect('/applications/storage_insights/view_scan_configurations?ack=deleted_scan_schedule')
    except Exception, e:
        return_dict['base_template'] = "storage_insights_base.html"
        return_dict["page_title"] = 'Remove folder scan schedule'
        return_dict['tab'] = 'scan_schedule_tab'
        return_dict["error"] = 'Error removing Storage Insight folder scan schedule'
        return_dict["error_details"] = str(e)
        return django.shortcuts.render_to_response("logged_in_error.html", return_dict, context_instance=django.template.context.RequestContext(request))