示例#1
0
def snapshots_view():
    error = None
    if request.method == 'GET':
        return render_template('snapshots.html', snapshots=Snapshots.query.all())
    elif request.method == 'POST':
        if 'snapshot_add' in request.form:
            if not request.form['snapshot_name'] or not request.form['snapshot_path']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                snapshot = Snapshots(request.form['snapshot_name'], request.form['snapshot_path'])
                db.session.add(snapshot)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Snapshot Added</div>"
        elif 'snapshot_edit' in request.form:
            if not request.form['snapshot_name'] or not request.form['snapshot_path']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                snapshot_id = request.form.get('id')
                snapshot = Snapshots.query.filter_by(id=snapshot_id).one()
                snapshot.name=request.form['snapshot_name']
                snapshot.path=request.form['snapshot_path']
                db.session.add(snapshot)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Snapshot Edited</div>"
        elif 'snapshot_delete' in request.form:
            if not request.form['snapshot_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                snapshot_id = request.form.getlist('id')
                for u in snapshot_id:
                    snapshot = Snapshots.query.filter_by(id=u).one()
                    db.session.delete(snapshot)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Snapshot Deleted</div>"
    return render_template('snapshots.html')
示例#2
0
def vstorage_view():
    error = None
    if request.method == 'GET':
        return render_template('vstorage.html', vstorages=Vstorage.query.all())
    elif request.method == 'POST':
        if 'vstorage_add' in request.form:
            if not request.form['vstorage_name']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vstorage = Vstorage(request.form['vstorage_name'])
                db.session.add(vstorage)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vStorage Added</div>"
        elif 'vstorage_edit' in request.form:
            if not request.form['vstorage_name']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vstorage_id = request.form.get('id')
                vstorage = Vstorage.query.filter_by(id=vstorage_id).one()
                vstorage.name = request.form['vstorage_name']
                db.session.add(vstorage)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vStorage Edited</div>"
        elif 'vstorage_delete' in request.form:
            if not request.form['vstorage_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vstorage_id = request.form.getlist('id')
                for u in vstorage_id:
                    vstorage = Vstorage.query.filter_by(id=u).one()
                    db.session.delete(vstorage)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vStorage Deleted</div>"
    return render_template('vstorage.html')
示例#3
0
def virtualmachines_view():
    error = None
    if request.method == 'GET':
        return render_template('virtualmachines.html',
                               vms=VirtualMachines.query.all())
    elif request.method == 'POST':
        if 'vm_add' in request.form:
            if not request.form['vm_hostname'] or not request.form[
                    'vm_ipaddress'] or not request.form[
                        'vm_subnet'] or not request.form[
                            'vm_gateway'] or not request.form[
                                'vm_portgroup'] or not request.form[
                                    'vm_username'] or not request.form[
                                        'vm_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vm = VirtualMachines(
                    request.form['vm_hostname'], request.form['vm_ipaddress'],
                    request.form['vm_subnet'], request.form['vm_gateway'],
                    request.form['vm_portgroup'], request.form['vm_username'],
                    request.form['vm_password'])
                db.session.add(vm)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>VM Added</div>"
        elif 'vm_edit' in request.form:
            if not request.form['vm_hostname'] or not request.form[
                    'vm_ipaddress'] or not request.form[
                        'vm_subnet'] or not request.form[
                            'vm_gateway'] or not request.form[
                                'vm_portgroup'] or not request.form[
                                    'vm_username'] or not request.form[
                                        'vm_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vm_id = request.form.get('id')
                vm = VirtualMachines.query.filter_by(id=vm_id).one()
                vm.hostname = request.form['vm_hostname']
                vm.ipaddress = request.form['vm_ipaddress']
                vm.subnet = request.form['vm_subnet']
                vm.gateway = request.form['vm_gateway']
                vm.portgroup = request.form['vm_portgroup']
                vm.username = request.form['vm_username']
                vm.password = request.form['vm_password']
                db.session.add(vm)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>VM Edited</div>"
        elif 'vm_delete' in request.form:
            if not request.form['vm_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vm_id = request.form.getlist('id')
                for u in vm_id:
                    vm = VirtualMachines.query.filter_by(id=u).one()
                    db.session.delete(vm)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>VM Deleted</div>"
    return render_template('virtualmachines.html')
示例#4
0
文件: isos.py 项目: hextrim/iomate
def isos_view():
    error = None
    if request.method == 'GET':
        return render_template('isos.html', isos=Isos.query.all())
    elif request.method == 'POST':
        if 'iso_add' in request.form:
            if not request.form['iso_name']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                iso = Isos(request.form['iso_name'])
                db.session.add(iso)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ISO Added</div>"
        elif 'iso_edit' in request.form:
            if not request.form['iso_name']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                iso_id = request.form.get('id')
                iso = Isos.query.filter_by(id=iso_id).one()
                iso.name = request.form['iso_name']
                db.session.add(iso)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ISO Edited</div>"
        elif 'iso_delete' in request.form:
            if not request.form['iso_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                iso_id = request.form.getlist('id')
                for u in iso_id:
                    iso = Isos.query.filter_by(id=u).one()
                    db.session.delete(iso)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ISO Deleted</div>"
        elif 'iso_upload' in request.form:
            if 'file' not in request.files:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>No File in Request</div>"
            file = request.files['file']
            # if user does not select file, browser also
            # submit a empty part without filename
            if file.filename == '':
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Filename Empty</div>"
            if file and allowed_file_iso(file.filename):
                filename = secure_filename(file.filename)
                iso_file = file.save(
                    os.path.join(app.config['UPLOAD_CONFIG_ISO'], filename))
                iso_id = request.form.get('dataid')
                iso_id_strip = iso_id[3:]
                iso = Isos.query.filter_by(id=iso_id_strip).first()
                #               # iso.filename = request.files['iso_upload']
                iso.filename = filename
                iso.filepath = os.path.join(app.config['UPLOAD_DIR_ISO'],
                                            filename)
                db.session.add(iso)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ISO Uploaded</div>"
    return render_template('isos.html')
示例#5
0
def servers_view():
    error = None
    if request.method == 'GET':
        return render_template('servers.html', servers=Servers.query.all())
    elif request.method == 'POST':
        if 'server_add' in request.form:
            if not request.form['server_hostname'] or not request.form[
                    'server_ipaddress'] or not request.form[
                        'server_subnet'] or not request.form[
                            'server_gateway'] or not request.form[
                                'server_username'] or not request.form[
                                    'server_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                server = Servers(request.form['server_hostname'],
                                 request.form['server_ipaddress'],
                                 request.form['server_subnet'],
                                 request.form['server_gateway'],
                                 request.form['server_username'],
                                 request.form['server_password'])
                db.session.add(server)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Server Added</div>"
        elif 'server_edit' in request.form:
            if not request.form['server_hostname'] or not request.form[
                    'server_ipaddress'] or not request.form[
                        'server_subnet'] or not request.form[
                            'server_gateway'] or not request.form[
                                'server_username'] or not request.form[
                                    'server_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                server_id = request.form.get('id')
                server = Servers.query.filter_by(id=server_id).one()
                server.hostname = request.form['server_hostname']
                server.ipaddress = request.form['server_ipaddress']
                server.subnet = request.form['server_subnet']
                server.gateway = request.form['server_gateway']
                server.username = request.form['server_username']
                server.password = request.form['server_password']
                db.session.add(server)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Server Edited</div>"
        elif 'server_delete' in request.form:
            if not request.form['server_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                server_id = request.form.getlist('id')
                for u in server_id:
                    server = Servers.query.filter_by(id=u).one()
                    db.session.delete(server)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Servers Deleted</div>"
    return render_template('servers.html')
示例#6
0
def vdsswitch_view():
    error = None
    if request.method == 'GET':
        return render_template('vdsswitch.html', vdss=Vdsswitch.query.all())
    elif request.method == 'POST':
        if 'vds_add' in request.form:
            if not request.form['vds_name'] or not request.form[
                    'vds_nic1'] or not request.form[
                        'vds_nic2'] or not request.form[
                            'vds_datacenter'] or not request.form[
                                'vds_portgroup'] or not request.form[
                                    'vds_portgroupvlan']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vds = Vdsswitch(request.form['vds_name'],
                                request.form['vds_nic1'],
                                request.form['vds_nic2'],
                                request.form['vds_datacenter'],
                                request.form['vds_portgroup'],
                                request.form['vds_portgroupvlan'])
                db.session.add(vds)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vDS Added</div>"
        elif 'vds_edit' in request.form:
            if not request.form['vds_name'] or not request.form[
                    'vds_nic1'] or not request.form[
                        'vds_nic2'] or not request.form[
                            'vds_datacenter'] or not request.form[
                                'vds_portgroup'] or not request.form[
                                    'vds_portgroupvlan']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vds_id = request.form.get('id')
                vds = Vdsswitch.query.filter_by(id=vds_id).one()
                vds.name = request.form['vds_name']
                vds.nic1 = request.form['vds_nic1']
                vds.nic2 = request.form['vds_nic2']
                vds.datacenter = request.form['vds_datacenter']
                vds.portgroup = request.form['vds_portgroup']
                vds.portgroupvlan = request.form['vds_portgroupvlan']
                db.session.add(vds)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vDS Edited</div>"
        elif 'vds_delete' in request.form:
            if not request.form['vds_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vds_id = request.form.getlist('id')
                for u in vds_id:
                    vds = Vdsswitch.query.filter_by(id=u).one()
                    db.session.delete(vds)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vDS Deleted</div>"
    return render_template('vdsswitch.html')
示例#7
0
文件: esxi.py 项目: hextrim/iomate
def esxi_view():
    error = None
    if request.method == 'GET':
        return render_template('esxi.html', esxis=Esxis.query.all())
    elif request.method == 'POST':
        if 'esxi_add' in request.form:
            if not request.form['esxi_hostname'] or not request.form[
                    'esxi_ipaddress'] or not request.form[
                        'esxi_subnet'] or not request.form[
                            'esxi_gateway'] or not request.form[
                                'esxi_username'] or not request.form[
                                    'esxi_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                esxi = Esxis(request.form['esxi_hostname'],
                             request.form['esxi_ipaddress'],
                             request.form['esxi_subnet'],
                             request.form['esxi_gateway'],
                             request.form['esxi_username'],
                             request.form['esxi_password'])
                db.session.add(esxi)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ESXi Added</div>"
        elif 'esxi_edit' in request.form:
            if not request.form['esxi_hostname'] or not request.form[
                    'esxi_ipaddress'] or not request.form[
                        'esxi_subnet'] or not request.form[
                            'esxi_gateway'] or not request.form[
                                'esxi_username'] or not request.form[
                                    'esxi_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                esxi_id = request.form.get('id')
                esxi = Esxis.query.filter_by(id=esxi_id).one()
                esxi.hostname = request.form['esxi_hostname']
                esxi.ipaddress = request.form['esxi_ipaddress']
                esxi.subnet = request.form['esxi_subnet']
                esxi.gateway = request.form['esxi_gateway']
                esxi.username = request.form['esxi_username']
                esxi.password = request.form['esxi_password']
                db.session.add(esxi)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ESXi Edited</div>"
        elif 'esxi_delete' in request.form:
            if not request.form['esxi_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                esxi_id = request.form.getlist('id')
                for u in esxi_id:
                    esxi = Esxis.query.filter_by(id=u).one()
                    db.session.delete(esxi)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ESXi Deleted</div>"
    return render_template('esxi.html')
示例#8
0
def firewalls_view():
    error = None
    if request.method == 'GET':
        return render_template('firewalls.html', fws=Firewalls.query.all())
    elif request.method == 'POST':
        if 'fw_add' in request.form:
            if not request.form['fw_hostname'] or not request.form[
                    'fw_ipaddress'] or not request.form[
                        'fw_subnet'] or not request.form[
                            'fw_gateway'] or not request.form[
                                'fw_mgmtnetwork'] or not request.form[
                                    'fw_mgmtsubnet']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                fw = Firewalls(request.form['fw_hostname'],
                               request.form['fw_ipaddress'],
                               request.form['fw_subnet'],
                               request.form['fw_gateway'],
                               request.form['fw_mgmtnetwork'],
                               request.form['fw_mgmtsubnet'])
                db.session.add(fw)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Firewall Added</div>"
        elif 'fw_edit' in request.form:
            if not request.form['fw_hostname'] or not request.form[
                    'fw_ipaddress'] or not request.form[
                        'fw_subnet'] or not request.form[
                            'fw_gateway'] or not request.form[
                                'fw_mgmtnetwork'] or not request.form[
                                    'fw_mgmtsubnet']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                fw_id = request.form.get('id')
                fw = Firewalls.query.filter_by(id=fw_id).one()
                fw.hostname = request.form['fw_hostname']
                fw.ipaddress = request.form['fw_ipaddress']
                fw.subnet = request.form['fw_subnet']
                fw.gateway = request.form['fw_gateway']
                fw.mgmtnetwork = request.form['fw_mgmtnetwork']
                fw.mgmtsubnet = request.form['fw_mgmtsubnet']
                db.session.add(fw)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Firewall Edited</div>"
        elif 'fw_delete' in request.form:
            if not request.form['fw_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                fw_id = request.form.getlist('id')
                for u in fw_id:
                    fw = Firewalls.query.filter_by(id=u).one()
                    db.session.delete(fw)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Firewall Deleted</div>"
    return render_template('firewalls.html')
示例#9
0
文件: ips.py 项目: hextrim/iomate
def ips_view():
    error = None
    if request.method == 'GET':
        return render_template('ips.html', ipss=Ips.query.all())
    elif request.method == 'POST':
        if 'ips_add' in request.form:
            if not request.form['ips_hostname'] or not request.form[
                    'ips_ipaddress'] or not request.form[
                        'ips_subnet'] or not request.form[
                            'ips_gateway'] or not request.form[
                                'ips_username'] or not request.form[
                                    'ips_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                ips = Ips(request.form['ips_hostname'],
                          request.form['ips_ipaddress'],
                          request.form['ips_subnet'],
                          request.form['ips_gateway'],
                          request.form['ips_username'],
                          request.form['ips_password'])
                db.session.add(ips)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>IPS Added</div>"
        elif 'ips_edit' in request.form:
            if not request.form['ips_hostname'] or not request.form[
                    'ips_ipaddress'] or not request.form[
                        'ips_subnet'] or not request.form[
                            'ips_gateway'] or not request.form[
                                'ips_username'] or not request.form[
                                    'ips_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                ips_id = request.form.get('id')
                ips = Ips.query.filter_by(id=ips_id).one()
                ips.hostname = request.form['ips_hostname']
                ips.ipaddress = request.form['ips_ipaddress']
                ips.subnet = request.form['ips_subnet']
                ips.gateway = request.form['ips_gateway']
                ips.username = request.form['ips_username']
                ips.password = request.form['ips_password']
                db.session.add(ips)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>IPS Edited</div>"
        elif 'ips_delete' in request.form:
            if not request.form['ips_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                ips_id = request.form.getlist('id')
                for u in ips_id:
                    ips = Ips.query.filter_by(id=u).one()
                    db.session.delete(ips)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>IPS Deleted</div>"
    return render_template('ips.html')
示例#10
0
def vcenter_view():
    error = None
    if request.method == 'GET':
        return render_template('vcenter.html', vcs=Vcenter.query.all())
    elif request.method == 'POST':
        if 'vc_add' in request.form:
            if not request.form['vc_hostname'] or not request.form[
                    'vc_ipaddress'] or not request.form[
                        'vc_subnet'] or not request.form[
                            'vc_gateway'] or not request.form[
                                'vc_username'] or not request.form[
                                    'vc_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vc = Vcenter(request.form['vc_hostname'],
                             request.form['vc_ipaddress'],
                             request.form['vc_subnet'],
                             request.form['vc_gateway'],
                             request.form['vc_username'],
                             request.form['vc_password'])
                db.session.add(vc)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vCenter Added</div>"
        elif 'vc_edit' in request.form:
            if not request.form['vc_hostname'] or not request.form[
                    'vc_ipaddress'] or not request.form[
                        'vc_subnet'] or not request.form[
                            'vc_gateway'] or not request.form[
                                'vc_username'] or not request.form[
                                    'vc_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vc_id = request.form.get('id')
                vc = Vcenter.query.filter_by(id=vc_id).one()
                vc.hostname = request.form['vc_hostname']
                vc.ipaddress = request.form['vc_ipaddress']
                vc.subnet = request.form['vc_subnet']
                vc.gateway = request.form['vc_gateway']
                vc.username = request.form['vc_username']
                vc.password = request.form['vc_password']
                db.session.add(vc)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vCenter Edited</div>"
        elif 'vc_delete' in request.form:
            if not request.form['vc_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vc_id = request.form.getlist('id')
                for u in vc_id:
                    vc = Vcenter.query.filter_by(id=u).one()
                    db.session.delete(vc)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vCenter Deleted</div>"
    return render_template('vcenter.html')
示例#11
0
def vswitch_view():
    error = None
    if request.method == 'GET':
        return render_template('vswitch.html', vss=Vsswitch.query.all())
    elif request.method == 'POST':
        if 'vs_add' in request.form:
            if not request.form['vs_name'] or not request.form[
                    'vs_ipaddress'] or not request.form[
                        'vs_subnet'] or not request.form[
                            'vs_gateway'] or not request.form[
                                'vs_nic1'] or not request.form['vs_nic2']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vs = Vsswitch(request.form['vs_name'],
                              request.form['vs_ipaddress'],
                              request.form['vs_subnet'],
                              request.form['vs_gateway'],
                              request.form['vs_nic1'], request.form['vs_nic2'])
                db.session.add(vs)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vS Added</div>"
        elif 'vs_edit' in request.form:
            if not request.form['vs_name'] or not request.form[
                    'vs_ipaddress'] or not request.form[
                        'vs_subnet'] or not request.form[
                            'vs_gateway'] or not request.form[
                                'vs_nic1'] or not request.form['vs_nic2']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vs_id = request.form.get('id')
                vs = Vsswitch.query.filter_by(id=vs_id).one()
                vs.name = request.form['vs_name']
                vs.ipaddress = request.form['vs_ipaddress']
                vs.subnet = request.form['vs_subnet']
                vs.gateway = request.form['vs_gateway']
                vs.nic1 = request.form['vs_nic1']
                vs.nic2 = request.form['vs_nic2']
                db.session.add(vs)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vS Edited</div>"
        elif 'vs_delete' in request.form:
            if not request.form['vs_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vs_id = request.form.getlist('id')
                for u in vs_id:
                    vs = Vsswitch.query.filter_by(id=u).one()
                    db.session.delete(vs)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>vS Deleted</div>"
    return render_template('vswitch.html')
示例#12
0
def routers_view():
    error = None
    if request.method == 'GET':
        return render_template('routers.html', routers=Routers.query.all())
    elif request.method == 'POST':
        if 'router_add' in request.form:
            if not request.form['router_hostname'] or not request.form[
                    'router_ipaddress'] or not request.form[
                        'router_subnet'] or not request.form[
                            'router_gateway'] or not request.form[
                                'router_mgmtport']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                router = Routers(request.form['router_hostname'],
                                 request.form['router_ipaddress'],
                                 request.form['router_subnet'],
                                 request.form['router_gateway'],
                                 request.form['router_mgmtport'])
                db.session.add(router)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Router Added</div>"
        elif 'router_edit' in request.form:
            if not request.form['router_hostname'] or not request.form[
                    'router_ipaddress'] or not request.form[
                        'router_subnet'] or not request.form[
                            'router_gateway'] or not request.form[
                                'router_mgmtport']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                router_id = request.form.get('id')
                router = Routers.query.filter_by(id=router_id).one()
                router.hostname = request.form['router_hostname']
                router.ipaddress = request.form['router_ipaddress']
                router.subnet = request.form['router_subnet']
                router.gateway = request.form['router_gateway']
                router.mgmtnetwork = request.form['router_mgmtport']
                db.session.add(router)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Router Edited</div>"
        elif 'router_delete' in request.form:
            if not request.form['router_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                router_id = request.form.getlist('id')
                for u in router_id:
                    router = Routers.query.filter_by(id=u).one()
                    db.session.delete(router)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Router Deleted</div>"
    return render_template('routers.html')
示例#13
0
def templates_view():
    error = None
    if request.method == 'GET':
        return render_template('templates.html',
                               templates=Templates.query.all())
    elif request.method == 'POST':
        if 'template_add' in request.form:
            if not request.form['template_name'] or not request.form[
                    'template_path']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                template = Templates(request.form['template_name'],
                                     request.form['template_path'])
                db.session.add(template)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Template Added</div>"
        elif 'template_edit' in request.form:
            if not request.form['template_name'] or not request.form[
                    'template_path']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                template_id = request.form.get('id')
                template = Templates.query.filter_by(id=template_id).one()
                template.name = request.form['template_name']
                template.path = request.form['template_path']
                db.session.add(template)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Template Edited</div>"
        elif 'template_delete' in request.form:
            if not request.form['template_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                template_id = request.form.getlist('id')
                for u in template_id:
                    template = Templates.query.filter_by(id=u).one()
                    db.session.delete(template)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Template Deleted</div>"
    return render_template('templates.html')
示例#14
0
def sharedsan_view():
    error = None
    if request.method == 'GET':
        return render_template('sharedsan.html',
                               sharedsans=Sharedsan.query.all())
    elif request.method == 'POST':
        if 'sharedsan_add' in request.form:
            if not request.form['sharedsan_lunname'] or not request.form[
                    'sharedsan_lunsize']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                sharedsan = Sharedsan(request.form['sharedsan_lunname'],
                                      request.form['sharedsan_lunsize'])
                db.session.add(sharedsan)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>SharedSAN Added</div>"
        elif 'sharedsan_edit' in request.form:
            if not request.form['sharedsan_lunname'] or not request.form[
                    'sharedsan_lunsize']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                sharedsan_id = request.form.get('id')
                sharedsan = Sharedsan.query.filter_by(id=sharedsan_id).one()
                sharedsan.lunname = request.form['sharedsan_lunname']
                sharedsan.lunsize = request.form['sharedsan_lunsize']
                db.session.add(sharedsan)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>SharedSAN Edited</div>"
        elif 'sharedsan_delete' in request.form:
            if not request.form['sharedsan_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                sharedsan_id = request.form.getlist('id')
                for u in sharedsan_id:
                    sharedsan = Sharedsan.query.filter_by(id=u).one()
                    db.session.delete(sharedsan)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>SharedSAN Deleted</div>"
    return render_template('sharedsan.html')
示例#15
0
def racks_view():
    error = None
    if request.method == 'GET':
        return render_template('racks.html', racks=Racks.query.all())
    elif request.method == 'POST':
        if 'rack_add' in request.form:
            if not request.form['rack_name'] or not request.form[
                    'rack_location']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                rack = Racks(request.form['rack_name'],
                             request.form['rack_location'])
                db.session.add(rack)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Rack Added</div>"
        elif 'rack_edit' in request.form:
            if not request.form['rack_name'] or not request.form[
                    'rack_location']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                rack_id = request.form.get('id')
                rack = Racks.query.filter_by(id=rack_id).one()
                rack.name = request.form['rack_name']
                rack.location = request.form['rack_location']
                db.session.add(rack)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Rack Edited</div>"
        elif 'rack_delete' in request.form:
            if not request.form['rack_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                rack_id = request.form.getlist('id')
                for u in rack_id:
                    rack = Racks.query.filter_by(id=u).one()
                    db.session.delete(rack)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Rack Deleted</div>"
    return render_template('racks.html')
示例#16
0
文件: vlans.py 项目: hextrim/iomate
def vlans_view():
    error = None
    if request.method == 'GET':
        return render_template('vlans.html', vlans=Vlans.query.all())
    elif request.method == 'POST':
        if 'vlan_add' in request.form:
            if not request.form['vlan_name'] or not request.form['vlan_id']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vlan = Vlans(request.form['vlan_name'],
                             request.form['vlan_id'])
                db.session.add(vlan)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>VLAN Added</div>"
        elif 'vlan_edit' in request.form:
            if not request.form['vlan_name'] or not request.form['vlan_id']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vlan_id = request.form.get('id')
                vlan = Vlans.query.filter_by(id=vlan_id).one()
                vlan.name = request.form['vlan_name']
                vlan.vlanid = request.form['vlan_id']
                db.session.add(vlan)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>VLAN Edited</div>"
        elif 'vlan_delete' in request.form:
            if not request.form['vlan_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                vlan_id = request.form.getlist('id')
                for u in vlan_id:
                    vlan = Vlans.query.filter_by(id=u).one()
                    db.session.delete(vlan)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>VLAN Deleted</div>"
    return render_template('vlans.html')
示例#17
0
def deploy_vm_system_view():
    error = None
    if request.method == 'GET':
        #        socketio.start_background_task(cct_swx, '/dev/ttyUSB0', 'sw1usbsignal', 'sw1portsignal')
        #        socketio.start_background_task(cct_swx, '/dev/ttyUSB1', 'sw2usbsignal', 'sw2portsignal')
        #        deploy_sw_1_baseconfig = get_deploy_device_last_build_log('deploy_sw_1_baseconfig')
        #        deploy_sw_1_baseconfig_job_info = get_deploy_device_get_job_info('deploy_sw_1_baseconfig')
        #        deploy_sw_1_portconfig = get_deploy_device_last_build_log('deploy_sw_1_portconfig')
        #        deploy_sw_1_portconfig_job_info = get_deploy_device_get_job_info('deploy_sw_1_portconfig')
        #        deploy_sw_1_singleport = get_deploy_device_last_build_log('deploy_sw_1_singleport')
        #        deploy_sw_1_singleport_job_info = get_deploy_device_get_job_info('deploy_sw_1_singleport')
        return render_template(
            'deploy-vm-system.html',
            deploy_vm_systems=System_vm_profiles.query.all(),
            salt_pxe_nodes=Saltstack_pxe_nodes.query.all())
    elif request.method == 'POST':
        if 'deploy_vm_system' in request.form:
            if not request.form['id']:
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                deploy_vm_system = request.form.getlist('id')
                for deploy in deploy_vm_system:
                    reboot_vm_system = Saltstack_pxe_nodes.query.filter_by(
                        pxemac=deploy).one()
                    reboot_vm_system_ip = reboot_vm_system.pxeipaddr
                    reboot_vm_system_send_cmd = local.cmd(
                        reboot_vm_system_ip, 'cmd.run', ['shutdown -r now'])
                    #		    reboot_vm_system.pxeinstalled = True
                    db.session.delete(reboot_vm_system)
                    db.session.commit()
                    wheel.cmd_async({
                        'fun': 'key.delete',
                        'match': reboot_vm_system_ip
                    })
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>System Rebooted for PXE Installation.</div>"
        else:
            flash('Malformed form submitted !', 'danger')
            return redirect(request.url)
示例#18
0
def dedicatedsan_view():
    error = None
    if request.method == 'GET':
        return render_template('dedicatedsan.html',
                               dedicatedsans=Dedicatedsan.query.all())
    elif request.method == 'POST':
        if 'dedicatedsan_add' in request.form:
            if not request.form['dedicatedsan_hostname'] or not request.form[
                    'dedicatedsan_ipaddress'] or not request.form[
                        'dedicatedsan_subnet'] or not request.form[
                            'dedicatedsan_gateway'] or not request.form[
                                'dedicatedsan_port'] or not request.form[
                                    'dedicatedsan_provider'] or not request.form[
                                        'dedicatedsan_username'] or not request.form[
                                            'dedicatedsan_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                dedicatedsan = Dedicatedsan(
                    request.form['dedicatedsan_hostname'],
                    request.form['dedicatedsan_ipaddress'],
                    request.form['dedicatedsan_subnet'],
                    request.form['dedicatedsan_gateway'],
                    request.form['dedicatedsan_port'],
                    request.form['dedicatedsan_provider'],
                    request.form['dedicatedsan_username'],
                    request.form['dedicatedsan_password'])
                db.session.add(dedicatedsan)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>DedicatedSAN Added</div>"
        elif 'dedicatedsan_edit' in request.form:
            if not request.form['dedicatedsan_hostname'] or not request.form[
                    'dedicatedsan_ipaddress'] or not request.form[
                        'dedicatedsan_subnet'] or not request.form[
                            'dedicatedsan_gateway'] or not request.form[
                                'dedicatedsan_port'] or not request.form[
                                    'dedicatedsan_provider'] or not request.form[
                                        'dedicatedsan_username'] or not request.form[
                                            'dedicatedsan_password']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                dedicatedsan_id = request.form.get('id')
                dedicatedsan = Dedicatedsan.query.filter_by(
                    id=dedicatedsan_id).one()
                dedicatedsan.hostname = request.form['dedicatedsan_hostname']
                dedicatedsan.ipaddress = request.form['dedicatedsan_ipaddress']
                dedicatedsan.subnet = request.form['dedicatedsan_subnet']
                dedicatedsan.gateway = request.form['dedicatedsan_gateway']
                dedicatedsan.port = request.form['dedicatedsan_port']
                dedicatedsan.provider = request.form['dedicatedsan_provider']
                dedicatedsan.username = request.form['dedicatedsan_username']
                dedicatedsan.password = request.form['dedicatedsan_password']
                db.session.add(dedicatedsan)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Dedicatedsan Edited</div>"
        elif 'dedicatedsan_delete' in request.form:
            if not request.form['dedicatedsan_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                dedicatedsan_id = request.form.getlist('id')
                for u in dedicatedsan_id:
                    dedicatedsan = Dedicatedsan.query.filter_by(id=u).one()
                    db.session.delete(dedicatedsan)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Dedicatedsan Deleted</div>"
    return render_template('dedicatedsan.html')
示例#19
0
def system_profiles_view():
    error = None
    if request.method == 'GET':
	napalm_switch1_macs = napalm_switch_mac_audit(1)
        list_of_profiles = cobbler_server.profiles()
        systems = cobbler_server.systems()
        return render_template('system-profiles.html', napalm_switch1_macs=napalm_switch1_macs, list_of_profiles=list_of_profiles, systems=systems, servers=Servers.query.all(), esxis=Esxis.query.all(), virtualmachines=VirtualMachines.query.all(), salt_pxe_nodes=Saltstack_pxe_nodes.query.all())
    elif request.method == 'POST':
        if 'system_profiles_save' in request.form:
            if not request.form['system_name'] or not request.form['system_switch_port_mac'] or not request.form['system_salt_pxe_node'] or not request.form['system_profile']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                if re.sub(r"^.*=","", request.form['system_switch_port_mac']).lower() != request.form['system_salt_pxe_node']:
                    flash('Switch Port MAC does not match PXE booted SALT agent !','danger')
                    return redirect(request.url)
                else:
		    system_name = request.form['system_name']
                    find_esxi = Esxis.query.filter_by(hostname=system_name).first()
		    find_server = Servers.query.filter_by(hostname=system_name).first()
                    find_vm = VirtualMachines.query.filter_by(hostname=system_name).first()
		    if str(find_esxi) == str(system_name):
                        find_host = find_esxi
			intname = "vmnic0"
		    elif str(find_server) == str(system_name):
		        find_host = find_server
                        intname = "ens192"
		    elif str(find_vm) == str(system_name):
		        find_host = find_vm
                        intname = "ens160"
		    else:
			find_host = 'NOT FOUND'
#		    request.form['system_switch_port_mac']
		    system_switch_port_mac = re.sub(r"^.*=","", request.form['system_switch_port_mac']).lower()
		    system_salt_pxe_node = request.form['system_salt_pxe_node']
		    system_profile = request.form['system_profile']
#                   intname = "vmnic0"
                    system = cobbler_server.new_system()
                    system.name = system_name
	 	    system.profile = system_profile
                    system.set_hostname(find_host.hostname)
		    system.set_name_servers("8.8.8.8")
		    system.set_static(True, intname)
		    system.set_mac_address(system_switch_port_mac, intname)
		    system.set_ip_address(find_host.ipaddress, intname)
		    system.set_netmask(find_host.subnet, intname)
		    system.set_if_gateway(find_host.gateway, intname)
                    system.set_gateway(find_host.gateway)
		    cobbler_server.systems().add(system,with_copy=True)
                    cobbler_server.add_system(system, save=True)
		    os.system("service cobblerd restart") 
                    flash('System Profile ' + system_name + ' Saved','success')
                    return redirect(request.url)
        if 'cobbler_system_delete' in request.form:
            if not request.form['cobbler_system_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Form Error</div>"
            else:
                system_name = request.form.get('id')
	        print system_name
#                system_name = request.form['system_name']
                cobbler_server.remove_system(system_name)
                os.system("service cobblerd restart")
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Cobbler System Deleted</div>"
#                flash('Template generated successfully !','success')
#                return redirect(request.url)
        else:
            flash('Malformed form submitted !','danger')
            return redirect(request.url)
示例#20
0
def users_view():
    error = None
    if request.method == 'GET':
        return render_template('users.html',
                               users=User.query.all(),
                               roles=Role.query.all())
    elif request.method == 'POST':
        if 'user_add' in request.form:
            if not request.form['user_email'] or not request.form[
                    'user_name'] or not request.form[
                        'user_password'] or not request.form[
                            'user_active'] or not request.form['user_role']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                #                user = User(request.form['user_email'], request.form['user_name'], request.form['user_password'], request.form['user_active'], request.form['user_role'])
                rola_id = request.form['user_role']
                rola_string = Role.query.filter_by(id=rola_id).one()
                rolas = rola_string.name
                user_datastore.create_user(
                    email=request.form['user_email'],
                    username=request.form['user_name'],
                    password=encrypt_password(request.form['user_password']),
                    active=(strtobool(request.form['user_active'])),
                    roles=[(rolas)])
                #                db.session.add(user)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>User Added</div>"
        elif 'user_edit' in request.form:
            if not request.form['user_email'] or not request.form[
                    'user_name'] or not request.form[
                        'user_password'] or not request.form['user_active']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                user_id = request.form.get('id')
                user = User.query.filter_by(id=user_id).one()
                user.email = request.form['user_email']
                user.username = request.form['user_name']
                user.password = encrypt_password(request.form['user_password'])
                #                user.last_login_at=request.form['user_last_login_at']
                #                user.current_login_at=request.form['user_current_login_at']
                #                user.last_login_ip=request.form['user_last_login_ip']
                #                user.current_login_ip=request.form['user_current_login_ip']
                #                user.login_count=request.form['user_login_count']
                user.active = (strtobool(request.form['user_active']))
                #                rola_id = request.form['user_role']
                #                rola_string = Role.query.filter_by(id=rola_id).one()
                #                rolas = rola_string.name
                #               user_datastore.add_role_to_user(user, rolas)
                db.session.add(user)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>User Edited</div>"
        elif 'user_role_add' in request.form:
            if not request.form['user_role']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                user_id = request.form.getlist('id')
                for u in user_id:
                    user = User.query.filter_by(id=u).one()
                    user_email = user.email
                    find_user = user_datastore.find_user(email=user_email)
                    rola_id = request.form['user_role']
                    rola_string = Role.query.filter_by(id=rola_id).one()
                    rolas = rola_string.name
                    find_role = user_datastore.find_role(rolas)
                    user_datastore.add_role_to_user(find_user, find_role)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Role Added</div>"
        elif 'user_role_remove' in request.form:
            if not request.form['user_role']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                user_id = request.form.getlist('id')
                for u in user_id:
                    user = User.query.filter_by(id=u).one()
                    user_email = user.email
                    find_user = user_datastore.find_user(email=user_email)
                    rola_id = request.form['user_role']
                    rola_string = Role.query.filter_by(id=rola_id).one()
                    rolas = rola_string.name
                    find_role = user_datastore.find_role(rolas)
                    user_datastore.remove_role_from_user(find_user, find_role)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Role Removed</div>"
        elif 'user_delete' in request.form:
            if not request.form['user_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                user_id = request.form.getlist('id')
                for u in user_id:
                    user = User.query.filter_by(id=u).one()
                    db.session.delete(user)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>User Deleted</div>"
    return render_template('users.html',
                           users=User.query.all(),
                           roles=Role.query.all())
示例#21
0
def statistics_view():
    deploy_sw_1 = get_deploy_device_last_build_log('deploy_sw_1')
    deploy_sw_1_job_info = get_deploy_device_get_job_info('deploy_sw_1')
    return render_template('statistics.html',
                           deploy_sw_1=deploy_sw_1,
                           deploy_sw_1_job_info=deploy_sw_1_job_info)
示例#22
0
def profile_view():
    error = None
    if request.method == 'GET':
        page = request.args.get('page')
        return render_template('profile.html', page=page)
    elif request.method == 'POST':
        # check if the post request has the file part
        if 'profile_change_pic' in request.form:
            if 'file' not in request.files:
                flash(
                    'Please make sure you are submitting a file part request!',
                    'warning')
                return redirect(request.url)
            file = request.files['file']
            # if user does not select file, browser also
            # submit a empty part without filename
            if file.filename == '':
                flash('Please select a file for upload!', 'warning')
                return redirect(request.url)
            if file and allowed_file(file.filename):
                filename = secure_filename(file.filename)
                profile_pic = file.save(
                    os.path.join(app.config['UPLOAD_CONFIG'], filename))
                user_pic = User.query.filter_by(
                    email=current_user.email).first()
                user_pic.profile_pic = os.path.join(
                    app.config['PROFILE_PICS_DIR'], filename)
                db.session.add(user_pic)
                db.session.commit()
                return redirect(request.url)
        elif 'profile_change_username' in request.form:
            if not request.form['profile_change_username']:
                flash('Please fill all the fields before sending a request!',
                      'danger')
            else:
                user = User.query.filter_by(email=current_user.email).first()
                user.username = request.form['profile_username']
                db.session.add(user)
                db.session.commit()
                flash('Your username details have been changed.', 'success')
        elif 'profile_change_email' in request.form:
            if not request.form['profile_change_email'] or request.form[
                    'profile_email'] == '':
                flash('Email address field cannot be empty for this request!',
                      'danger')
            else:
                user = User.query.filter_by(email=current_user.email).first()
                user.email = request.form['profile_email']
                db.session.add(user)
                db.session.commit()
                flash('Your email details have been changed.', 'success')
        elif 'profile_change_password' in request.form:
            if not request.form['profile_old_password'] or not request.form[
                    'profile_new_password'] or not request.form[
                        'profile_new_password_repeat']:
                flash('Please fill all the fields before sending a request!',
                      'danger')
            else:
                if request.form['profile_new_password'] != request.form[
                        'profile_new_password_repeat']:
                    flash('Please ensure you type the new password correctly!',
                          'danger')
                else:
                    user = User.query.filter_by(
                        email=current_user.email).first()
                    profile_old_password = request.form['profile_old_password']
                    profile_old_password_hash = user.password
                    profile_password_verify = verify_password(
                        profile_old_password, profile_old_password_hash)
                    if profile_password_verify != True:
                        flash(
                            'Please provide your old password for this request!',
                            'danger')
                    else:
                        user.password = request.form['profile_new_password']
                        db.session.add(user)
                        db.session.commit()
                        flash('Your password has been changed.', 'success')
    page = request.args.get('page')
    return render_template('profile.html', page=page)
示例#23
0
def system_phy_profiles_view():
    error = None
    if request.method == 'GET':
        napalm_switch1_macs = napalm_switch_mac_audit(1)
        list_of_profiles = cobbler_server.profiles()
        systems = cobbler_server.systems()
        return render_template('system-phy-profiles.html',
                               napalm_switch1_macs=napalm_switch1_macs,
                               list_of_profiles=list_of_profiles,
                               systems=systems,
                               servers=Servers.query.all(),
                               esxis=Esxis.query.all(),
                               salt_pxe_nodes=Saltstack_pxe_nodes.query.all())
    elif request.method == 'POST':
        if 'system_profiles_save' in request.form:
            if not request.form['system_name'] or not request.form[
                    'system_switch_port_mac'] or not request.form[
                        'system_salt_pxe_node'] or not request.form[
                            'system_profile']:
                flash('Please fill all fields before sending a request !',
                      'danger')
                return redirect(request.url)
            else:
                if re.sub(r"^.*=", "", request.form['system_switch_port_mac']
                          ).lower() != request.form['system_salt_pxe_node']:
                    flash(
                        'Switch Port MAC does not match PXE booted SALT agent !',
                        'danger')
                    return redirect(request.url)
                else:
                    system_name = request.form['system_name']
                    find_esxi = Esxis.query.filter_by(
                        hostname=system_name).first()
                    find_server = Servers.query.filter_by(
                        hostname=system_name).first()
                    if str(find_esxi) == str(system_name):
                        find_host = find_esxi
                        intname = "vmnic0"
                    elif str(find_server) == str(system_name):
                        find_host = find_server
                        intname = "ens192"
                    else:
                        find_host = 'NOT FOUND'
#		    request.form['system_switch_port_mac']
                    system_switch_port_mac = re.sub(
                        r"^.*=", "",
                        request.form['system_switch_port_mac']).lower()
                    system_salt_pxe_node = request.form['system_salt_pxe_node']
                    system_profile = request.form['system_profile']
                    #                   intname = "vmnic0"
                    system = cobbler_server.new_system()
                    system.name = system_name
                    system.profile = system_profile
                    system.set_hostname(find_host.hostname)
                    system.set_name_servers("8.8.8.8")
                    system.set_static(True, intname)
                    system.set_mac_address(system_switch_port_mac, intname)
                    system.set_ip_address(find_host.ipaddress, intname)
                    system.set_netmask(find_host.subnet, intname)
                    system.set_if_gateway(find_host.gateway, intname)
                    system.set_gateway(find_host.gateway)
                    cobbler_server.systems().add(system, with_copy=True)
                    cobbler_server.add_system(system, save=True)
                    os.system("service cobblerd restart")
                    time.sleep(2)
                    system_phy_profile_check = System_phy_profiles.query.filter_by(
                        name=system_name).first()
                    if str(system_phy_profile_check) == str(system_name):
                        salt_pxe_node = Saltstack_pxe_nodes.query.filter_by(
                            pxemac=system_salt_pxe_node).one()
                        salt_pxe_node.pxeinstalled = False
                        db.session.add(salt_pxe_node)
                        #                        db.session.commit()
                        system_phy_profile = System_phy_profiles.query.filter_by(
                            mac=system_switch_port_mac).one()
                        salt_pxe_node = Saltstack_pxe_nodes.query.filter_by(
                            pxemac=system_salt_pxe_node).one()
                        salt_pxe_node.saltvmbackref = system_phy_profile
                        db.session.commit()
                        flash(
                            'This System already exist. System OS updated and System Network Enabled !',
                            'success')
                        return redirect(request.url)
                    else:
                        system_phy_profiles = System_phy_profiles(
                            system_name, system_salt_pxe_node)
                        db.session.add(system_phy_profiles)
                        system_phy_profile = System_phy_profiles.query.filter_by(
                            mac=system_switch_port_mac).one()
                        salt_pxe_node = Saltstack_pxe_nodes.query.filter_by(
                            pxemac=system_salt_pxe_node).one()
                        salt_pxe_node.saltvmbackref = system_phy_profile
                        #                    db.session.add(system_vm_profile)
                        db.session.add(salt_pxe_node)
                        db.session.commit()
                        flash('System Profile ' + system_name + ' Saved',
                              'success')
                        return redirect(request.url)

#                    system_phy_profiles = System_phy_profiles(system_name, system_salt_pxe_node)
#                    db.session.add(system_phy_profiles)
#                    db.session.commit()
#                    flash('System PHY Profile ' + system_name + ' Saved','success')
#                    return redirect(request.url)
        if 'system_phy_edit' in request.form:
            if not request.form['id'] or not request.form[
                    'system_profile'] or not request.form[
                        'system_netboot_enabled']:
                flash('Please fill all fields before sending a request !',
                      'danger')
                return redirect(request.url)
            else:
                system_name = request.form.get('id')
                system_profile = request.form['system_profile']
                system_netboot_enabled = request.form['system_netboot_enabled']
                system = cobbler_server.find_system(system_name)
                system.name = system_name
                system.profile = system_profile
                system.netboot_enabled = system_netboot_enabled
                cobbler_server.systems().add(system, with_copy=True)
                cobbler_server.add_system(system, save=True)
                os.system("service cobblerd restart")
                time.sleep(2)
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Cobbler System Edited</div>"
        if 'system_phy_delete' in request.form:
            if not request.form['system_phy_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Form Error</div>"
            else:
                system_name = request.form.getlist('id')
                for system in system_name:
                    system_phy_profiles = System_phy_profiles.query.filter_by(
                        name=system).first()
                    system_vm_profiles = System_vm_profiles.query.filter_by(
                        name=system).first()
                    if str(system_phy_profiles) == str(system):
                        cobbler_server.remove_system(system)
                        system_vm_profiles = System_phy_profiles.query.filter_by(
                            name=system).first()
                        db.session.delete(system_phy_profiles)
                        db.session.commit()
                    elif str(system_vm_profiles) == str(system):
                        cobbler_server.remove_system(system)
                        system_vm_profiles = System_vm_profiles.query.filter_by(
                            name=system).first()
                        db.session.delete(system_vm_profiles)
                        db.session.commit()
                    else:
                        return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Cobbler System ERROR</div>"
                os.system("service cobblerd restart")
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Cobbler System Deleted</div>"
        else:
            flash('Malformed form submitted !', 'danger')
            return redirect(request.url)
示例#24
0
def livecd_view():
    error = None
    if request.method == 'GET':
        file = open("output/hextrimos.cfg", "r")
        lines = file.readlines()
        build_hextrimos_iso = get_deploy_device_last_build_log(
            'build_hextrimos_iso')
        build_hextrimos_iso_info = get_deploy_device_get_job_info(
            'build_hextrimos_iso')
        convert_hextrimos_to_pxeboot = get_deploy_device_last_build_log(
            'convert_hextrimos_to_pxeboot')
        convert_hextrimos_to_pxeboot_info = get_deploy_device_get_job_info(
            'convert_hextrimos_to_pxeboot')
        return render_template(
            'livecd.html',
            lines=lines,
            build_hextrimos_iso=build_hextrimos_iso,
            build_hextrimos_iso_info=build_hextrimos_iso_info,
            convert_hextrimos_to_pxeboot=convert_hextrimos_to_pxeboot,
            convert_hextrimos_to_pxeboot_info=convert_hextrimos_to_pxeboot_info
        )
    elif request.method == 'POST':
        if 'livecd_salt_master_ip_save' in request.form:
            if not request.form['livecd_salt_master_ip'] or request.form[
                    'livecd_salt_master_ip'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                salt_master_ip = request.form['livecd_salt_master_ip']
                template_file = 'hextrimos.j2'
                template_output = "output/hextrimos.cfg"
                env = Environment(
                    loader=FileSystemLoader(TEMPLATE_CONFIG_SALTSTACK))
                template = env.get_template(template_file)
                generate_template = template.render(
                    salt_master_ip=salt_master_ip)
                with open(template_output, "wb") as f:
                    f.write(generate_template)
                flash('HextrimOS configration file has been updated.',
                      'success')
                return redirect(request.url)
        elif 'build_hextrimos_iso_build' in request.form:
            if not request.form['build_hextrimos_iso_build']:
                flash('Incorrect request received!', 'danger')
                return redirect(request.url)
            else:
                #                srvjenkins = jenkins.Jenkins('http://localhost:8080', username='******', password='******')
                srvjobs = srvjenkins.get_jobs()
                config_xml = "output/build-hextrimos-iso.xml"
                with codecs.open(config_xml, 'r', encoding='utf8') as f:
                    config_xml_file = f.read()
                match = any(s['name'] == 'build_hextrimos_iso'
                            for s in srvjobs)
                if match == True:
                    srvjenkins.reconfig_job('build_hextrimos_iso',
                                            config_xml_file)
                else:
                    srvjenkins.create_job('build_hextrimos_iso',
                                          config_xml_file)
                srvjenkins.build_job('build_hextrimos_iso')
                flash('Build HextrimOS ISO: Build request received!',
                      'success')
                return redirect(request.url)
        elif 'convert_hextrimos_to_pxeboot_convert' in request.form:
            if not request.form['convert_hextrimos_to_pxeboot_convert']:
                flash('Incorrect request received!', 'danger')
                return redirect(request.url)
            else:
                #                srvjenkins = jenkins.Jenkins('http://localhost:8080', username='******', password='******')
                srvjobs = srvjenkins.get_jobs()
                config_xml = "output/convert-hextrimos-to-pxeboot.xml"
                with codecs.open(config_xml, 'r', encoding='utf8') as f:
                    config_xml_file = f.read()
                match = any(s['name'] == 'convert_hextrimos_to_pxeboot'
                            for s in srvjobs)
                if match == True:
                    srvjenkins.reconfig_job('convert_hextrimos_to_pxeboot',
                                            config_xml_file)
                else:
                    srvjenkins.create_job('convert_hextrimos_to_pxeboot',
                                          config_xml_file)
                srvjenkins.build_job('convert_hextrimos_to_pxeboot')
                flash('Convert HextrimOS To PXEboot: Build request received!',
                      'success')
                return redirect(request.url)
    return render_template('livecd.html')
示例#25
0
def design_switch2_24_port_view():
    error = None
    if request.method == 'GET':
        file = open("output/customer-sw-2-24-portconfig.deploy", "r")
        lines = file.readlines()
        return render_template('design-sw2-24.html', customer_sws=Customer_sw.query.all(), sws=Switches.query.all(), fws=Firewalls.query.all(), esxis=Esxis.query.all(), servers=Servers.query.all(), dedicatedsans=Dedicatedsan.query.all(), vlans=Vlans.query.all(), switch2_24_ports=Switch2_24_port.query.all(), lines=lines)
    elif request.method == 'POST':
        if 'port_config_switch2_24_port_save' in request.form:
            if not request.form['id'] or not request.form['port_device'] or not request.form['port_device_port'] or not request.form['port_mode'] or not request.form['port_vlan'] or not request.form['port_pxe_boot']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                if request.form['port_mode'] == 'None' and request.form['port_vlan'] == 'None':
                    port_id = request.form.get('id')
                    port = Switch2_24_port.query.filter_by(id=port_id).one()
                    port.devicename=request.form['port_device']
                    port.deviceport=request.form['port_device_port']
                    port.vlan_id = ''
                    port.portmode = 'None'
                    port.portvlan = 'None'
                    port.portpxeboot=(strtobool(request.form['port_pxe_boot']))
                    db.session.add(port)
                    db.session.commit()
                    flash('Port ' + port_id + ' Saved','success')
                    return redirect(request.url)
                if request.form['port_mode'] == 'trunk':
                    if request.form['port_vlan'] == 'trunk':
                        port_id = request.form.get('id')
                        port = Switch2_24_port.query.filter_by(id=port_id).one()
                        port.devicename=request.form['port_device']
                        port.deviceport=request.form['port_device_port']
                        port.portmode=request.form['port_mode']
                        port.portvlan = 'trunk'
                        port.portpxeboot=(strtobool(request.form['port_pxe_boot']))
                        db.session.add(port)
                        db.session.commit()
                        flash('Port ' + port_id + ' Saved','success')
                        return redirect(request.url)
                    if request.form['port_vlan'] == 'None':
                        flash('Trunk port cannot be "None" !','danger')
                        return redirect(request.url)
                    else:
                        flash('Trunk port cannot be "access" !','danger')
                        return redirect(request.url)
                elif request.form['port_mode'] == 'access':
                    if request.form['port_vlan'] == 'None' or request.form['port_vlan'] == '' or request.form['port_vlan'] == 'trunk':
                        flash('Access port cannot be "trunk" or "None" !','danger')
                        return redirect(request.url)
                    else:
                        port_id = request.form.get('id')
                        port = Switch2_24_port.query.filter_by(id=port_id).one()
                        port.devicename=request.form['port_device']
                        port.deviceport=request.form['port_device_port']
                        port.portmode=request.form['port_mode']
                        vlan_id =request.form['port_vlan']
                        vlan = Vlans.query.filter_by(id=vlan_id).one()
                        port.sw224vlansbackref = vlan
                        port.portvlan = request.form['port_vlan']
                        port.portpxeboot=(strtobool(request.form['port_pxe_boot']))
                        db.session.add(port)
                        db.session.commit()
                        flash('Port ' + port_id + ' Saved','success')
                        return redirect(request.url)
                else:
                    flash('Please fill all form fields! MODE and VLAN must be "None" to default interface.','danger')
                    return redirect(request.url)
        if 'port_config_switch2_24_port_generate' in request.form:
            if not request.form['port_config_switch2_24_port_generate'] or not request.form['switch2_24_port_version']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                customer_sw2 = Customer_sw.query.filter_by(id=2).one()
                if customer_sw2.customerswbackref.portnr == '8' or customer_sw2.customerswbackref.portnr == '48':
                    flash('Your switch has ' + customer_sw2.customerswbackref.portnr + ' ports and does match the template !','danger')
                    return redirect(request.url)
		else:
                    switch2_24_port_version = request.form.get('switch2_24_port_version')
                    vlans = Vlans.query.all()
                    ports = Switch2_24_port.query.all()
                    if switch2_24_port_version == 'sw-24-Fa':
                        template_file = 'switch_templates/customer-sw-2-24-Fa-port-config.j2'
                        template_output = "output/customer-sw-2-24-portconfig.deploy"
                    elif switch2_24_port_version == 'sw-24-Gi':
                        template_file = 'switch_templates/customer-sw-2-24-Gi-port-config.j2'
                        template_output = "output/customer-sw-2-24-portconfig.deploy"
                    env = Environment(loader=FileSystemLoader(TEMPLATE_CONFIG))
                    template = env.get_template(template_file)
                    generate_template = template.render(customer='HEXTRIM', ports=ports, vlans=vlans)
                    with open(template_output, "wb") as f:
                        f.write(generate_template)
                    flash('Template generated successfully !','success')
                    return redirect(request.url)
        else:
            flash('Malformed form submitted !','danger')
            return redirect(request.url)
示例#26
0
def design_fw1_view():
    error = None
    if request.method == 'GET':
        file = open("output/customer-sw-1-24-portconfig.deploy", "r")
        lines = file.readlines()
#        return render_template('design-fw1.html', fws=Firewalls.query.all(), vlans=Vlans.query.all())
        return render_template('design-fw1.html', subnets=Subnets.query.all(), pochanns=Port_channels_fw1.query.all(), pos=Firewall1_interfaces.query.filter(Firewall1_interfaces.group).all(), fw_interfaces=Firewall1_interfaces.query.all(), customer_sws=Customer_sw.query.all(), vlans=Vlans.query.all(), lines=lines)
    elif request.method == 'POST':
        if 'design_fw1_port_channel_save' in request.form:
            if not request.form['design_fw1_port_channel_mode'] or not request.form.getlist['design_fw1_port_channel_interfaces']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                flash('Saved','success')
                return redirect(request.url)
        if 'design_fw1_port_channel_interfaces_delete' in request.form:
            if not request.form['design_fw1_port_channel_interfaces_id']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
	    else:
                flash('Template generated successfully !','success')
                return redirect(request.url)
        if 'design_fw1_configure_interface_save' in request.form:
            if not request.form['design_fw1_configure_interface_id'] or not request.form['design_fw1_configure_interface_mode']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                flash('Template generated successfully !','success')
                return redirect(request.url)
        if 'design_fw1_configure_interface_delete' in request.form:
            if not request.form['design_fw1_configure_interface_id']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                flash('Template generated successfully !','success')
                return redirect(request.url)
        if 'design_fw1_configure_phy_interface_save' in request.form:
            if not request.form['design_fw1_configure_phy_interface_id'] or not request.form['design_fw1_configure_phy_interface_name'] or not request.form['design_fw1_configure_phy_interface_seclvl'] or not request.form['design_fw1_configure_phy_interface_subnet'] or not request.form['design_fw1_configure_phy_interface_enabled']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                flash('Template generated successfully !','success')
                return redirect(request.url)
        if 'design_fw1_configure_phy_interface_delete' in request.form:
            if not request.form['design_fw1_configure_phy_interface_id']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                flash('Template generated successfully !','success')
                return redirect(request.url)
        if 'design_fw1_configure_sub_interface_save' in request.form:
            if not request.form['design_fw1_configure_sub_interface_id'] or not request.form['design_fw1_configure_sub_interface_vlan'] or not request.form['design_fw1_configure_sub_interface_name'] or not request.form['design_fw1_configure_sub_interface_sec_lvl'] or not request.form['design_fw1_configure_sub_interface_subnet'] or not request.form['design_fw1_configure_sub_interface_enabled']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                flash('Template generated successfully !','success')
                return redirect(request.url)
        if 'design_fw1_configure_sub_interface_delete' in request.form:
            if not request.form['design_fw1_configure_sub_interface_id']:
                flash('Please fill all fields before sending a request !','danger')
                return redirect(request.url)
            else:
                flash('Template generated successfully !','success')
                return redirect(request.url)
        else:
            flash('Malformed form submitted !','danger')
            return redirect(request.url)
示例#27
0
def switches_view():
    error = None
    if request.method == 'GET':
        file_switch1 = open("output/customer-sw-1-baseconfig.deploy", "r")
        lines_switch1 = file_switch1.readlines()
        file_switch2 = open("output/customer-sw-2-baseconfig.deploy", "r")
        lines_switch2 = file_switch2.readlines()
        return render_template('switches.html',
                               sws=Switches.query.all(),
                               vlans=Vlans.query.all(),
                               customer_sws=Customer_sw.query.all(),
                               lines_switch1=lines_switch1,
                               lines_switch2=lines_switch2)
    elif request.method == 'POST':
        if 'sw_add' in request.form:
            if not request.form['sw_hostname'] or not request.form[
                    'sw_ipaddress'] or not request.form[
                        'sw_subnet'] or not request.form[
                            'sw_gateway'] or not request.form[
                                'sw_mgmtvlan'] or not request.form[
                                    'sw_portnr'] or not request.form[
                                        'sw_porttype']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                sw = Switches(
                    request.form['sw_hostname'], request.form['sw_ipaddress'],
                    request.form['sw_subnet'], request.form['sw_gateway'],
                    request.form['sw_mgmtvlan'], request.form['sw_portnr'],
                    request.form['sw_porttype'])
                db.session.add(sw)
                db.session.commit()
                #		sw_hostname = request.form['sw_hostname']
                #		sw = Switches.query.filter_by(hostname=sw_hostname).one()
                customer_sw_id = request.form['sw_customer_sw_map']
                if customer_sw_id == 'None':
                    pass
                else:
                    sw_hostname = request.form['sw_hostname']
                    sw = Switches.query.filter_by(hostname=sw_hostname).one()
                    customer_sw = Customer_sw.query.filter_by(
                        id=customer_sw_id).one()
                    customer_sw.customerswbackref = sw
                    db.session.add(customer_sw)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Switch Added</div>"
        elif 'sw_edit' in request.form:
            if not request.form['sw_hostname'] or not request.form[
                    'sw_ipaddress'] or not request.form[
                        'sw_subnet'] or not request.form[
                            'sw_gateway'] or not request.form[
                                'sw_mgmtvlan'] or not request.form[
                                    'sw_portnr'] or not request.form[
                                        'sw_porttype']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                sw_id = request.form.get('id')
                sw = Switches.query.filter_by(id=sw_id).one()
                sw.hostname = request.form['sw_hostname']
                sw.ipaddress = request.form['sw_ipaddress']
                sw.subnet = request.form['sw_subnet']
                sw.gateway = request.form['sw_gateway']
                sw.mgmtvlan = request.form['sw_mgmtvlan']
                sw.portnr = request.form['sw_portnr']
                sw.porttype = request.form['sw_porttype']
                #                db.session.add(sw)
                #                db.session.commit()
                customer_sw_id = request.form['sw_customer_sw_map']
                if customer_sw_id == 'None':
                    sw.customer_sw = ''
                    db.session.add(sw)
                    db.session.commit()
                else:
                    customer_sw = Customer_sw.query.filter_by(
                        id=customer_sw_id).one()
                    customer_sw.customerswbackref = sw
                    db.session.add(sw)
                    db.session.add(customer_sw)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Switch Edited</div>"
        elif 'sw_delete' in request.form:
            if not request.form['sw_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ERROR</div>"
            else:
                sw_id = request.form.getlist('id')
                for u in sw_id:
                    sw = Switches.query.filter_by(id=u).one()
                    db.session.delete(sw)
                    db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Switch Deleted</div>"
        elif 'base_config_switch1_generate' in request.form:
            if not request.form[
                    'base_config_switch1_generate'] or not request.form[
                        'switch1_profile']:
                flash('Please fill all fields before sending a request !',
                      'danger')
                return redirect(request.url)
            else:
                switch1_profile = request.form.get('switch1_profile')
                switch1 = Switches.query.filter_by(id=switch1_profile).one()
                template_file = 'switch_templates/customer-sw-1-base-config.j2'
                template_output = "output/customer-sw-1-baseconfig.deploy"
                env = Environment(loader=FileSystemLoader(TEMPLATE_CONFIG))
                template = env.get_template(template_file)
                generate_template = template.render(
                    customer_sw_1=switch1.hostname,
                    customer_sw_1_mgmt_ipadress=switch1.ipaddress,
                    customer_sw_1_mgmt_subnet=switch1.subnet,
                    customer_sw_1_mgmt_gateway=switch1.gateway,
                    mgmt_vlan_id=switch1.mgmtvlan)
                with open(template_output, "wb") as f:
                    f.write(generate_template)
                flash('Template generated successfully !', 'success')
                return redirect(request.url)
        elif 'base_config_switch2_generate' in request.form:
            if not request.form[
                    'base_config_switch2_generate'] or not request.form[
                        'switch2_profile']:
                flash('Please fill all fields before sending a request !',
                      'danger')
                return redirect(request.url)
            else:
                switch2_profile = request.form.get('switch2_profile')
                switch2 = Switches.query.filter_by(id=switch2_profile).one()
                template_file = 'switch_templates/customer-sw-2-base-config.j2'
                template_output = "output/customer-sw-2-baseconfig.deploy"
                env = Environment(loader=FileSystemLoader(TEMPLATE_CONFIG))
                template = env.get_template(template_file)
                generate_template = template.render(
                    customer_sw_2=switch2.hostname,
                    customer_sw_2_mgmt_ipadress=switch2.ipaddress,
                    customer_sw_2_mgmt_subnet=switch2.subnet,
                    customer_sw_2_mgmt_gateway=switch2.gateway,
                    mgmt_vlan_id=switch2.mgmtvlan)
                with open(template_output, "wb") as f:
                    f.write(generate_template)
                flash('Template generated successfully !', 'success')
                return redirect(request.url)
    return render_template('switches.html')
示例#28
0
def cobbler_view():
    error = None
    if request.method == 'GET':
        file_dhcp = open("/etc/cobbler/dhcp.template", "r")
        lines_dhcp = file_dhcp.readlines()
        lines_dhcp = lines_dhcp[20:25]
        file_pxe = open("/etc/cobbler/pxe/pxedefault.template", "r")
        lines_pxe = file_pxe.readlines()
        list_of_distros = cobbler_server.get_distros()
        list_of_profiles = cobbler_server.get_profiles()
        return render_template('cobbler.html',
                               lines_dhcp=lines_dhcp,
                               lines_pxe=lines_pxe,
                               list_of_distros=list_of_distros,
                               list_of_profiles=list_of_profiles,
                               isos=Isos.query.all())
    elif request.method == 'POST':
        if 'cobbler_change_dhcp_subnet_save' in request.form:
            if not request.form['cobbler_dhcp_subnet'] or request.form[
                    'cobbler_dhcp_subnet'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                cobbler_dhcp_subnet = request.form['cobbler_dhcp_subnet']
                #               cobbler_config_file = fileinput.FileInput("/etc/cobbler/dhcp.template", inplace=True)
                #                cobbler_dhcp_subnet_string = "subnet " + cobbler_dhcp_subnet + " "
                #                for line in cobbler_config_file:
                #                    line = re.sub(r"(subnet)+\s+\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^0-9]", cobbler_dhcp_subnet_string, line.rstrip())
                #                   print(line)
                # print(line) is required as without it, the whole file may go truncated - replaces with blank input - removed
                cobbler_config_replace("subnet", cobbler_dhcp_subnet)
                flash('Your Cobbler DHCP Subnet has been changed.', 'success')
                return redirect(request.url)
        elif 'cobbler_change_dhcp_subnet_mask_save' in request.form:
            if not request.form['cobbler_dhcp_subnet_mask'] or request.form[
                    'cobbler_dhcp_subnet_mask'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                cobbler_dhcp_subnet_mask = request.form[
                    'cobbler_dhcp_subnet_mask']
                cobbler_config_replace("netmask", cobbler_dhcp_subnet_mask)
                cobbler_config_replace("subnet-mask",
                                       cobbler_dhcp_subnet_mask + ";")
                flash(
                    'Your Cobbler DHCP Subnet Mask details have been changed.',
                    'success')
                return redirect(request.url)
        elif 'cobbler_change_router_save' in request.form:
            if not request.form['cobbler_router'] or request.form[
                    'cobbler_router'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                cobbler_router = request.form['cobbler_router']
                cobbler_config_replace("routers", cobbler_router + ";")
                flash('Your Cobbler Router details have been changed.',
                      'success')
                return redirect(request.url)
        elif 'cobbler_change_dhcp_dns_server_save' in request.form:
            if not request.form['cobbler_dhcp_dns_server'] or request.form[
                    'cobbler_dhcp_dns_server'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                cobbler_dhcp_dns_server = request.form[
                    'cobbler_dhcp_dns_server']
                cobbler_config_replace("domain-name-servers",
                                       cobbler_dhcp_dns_server + ";")
                flash(
                    'Your Cobbler DHCP DNS Server details have been changed.',
                    'success')
                return redirect(request.url)
        elif 'cobbler_change_dhcp_deployment_range_save' in request.form:
            if not request.form[
                    'cobbler_dhcp_deployment_range'] or request.form[
                        'cobbler_dhcp_deployment_range'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                cobbler_dhcp_deployment_range = request.form[
                    'cobbler_dhcp_deployment_range']
                cobbler_config_file = fileinput.FileInput(
                    "/etc/cobbler/dhcp.template", inplace=True)
                cobbler_dhcp_deployment_range_string = "dynamic-bootp " + cobbler_dhcp_deployment_range + ";"
                for line in cobbler_config_file:
                    line = re.sub(
                        r"\b(dynamic-bootp)+\s+\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^0-9]+\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^0-9]",
                        cobbler_dhcp_deployment_range_string, line.rstrip())
                    print(line)
                flash(
                    'Your Cobbler DHCP Deployment Range details have been changed.',
                    'success')
                return redirect(request.url)
        elif 'cobbler_change_pxe_default_boot_save' in request.form:
            if not request.form['cobbler_pxe_default_boot'] or request.form[
                    'cobbler_pxe_default_boot'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                cobbler_pxe_default_boot = request.form[
                    'cobbler_pxe_default_boot']
                cobbler_pxe_file = fileinput.FileInput(
                    "/etc/cobbler/pxe/pxedefault.template", inplace=True)
                cobbler_pxe_default_boot_string = "ONTIMEOUT " + cobbler_pxe_default_boot
                for line in cobbler_pxe_file:
                    line = re.sub(r"^.*\b(ONTIMEOUT).*",
                                  cobbler_pxe_default_boot_string,
                                  line.rstrip())
                    print(line)
                cobbler_server.sync(token)
                flash(
                    'Your Cobbler PXE Default Boot details have been changed.',
                    'success')
                return redirect(request.url)
        elif 'cobbleriso_import' in request.form:
            if not request.form['cobbleriso_import']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Form Error</div>"
            else:
                iso_id = request.form.get('id')
                iso = Isos.query.filter_by(id=iso_id).one()
                iso_file_path = iso.filepath
                iso_mount_path = os.path.join(app.config['BASE_DIR'],
                                              iso_file_path)
                os.system("/usr/bin/mkdir /mnt/iso")
                os.system("/usr/bin/mount -o rw,loop %s /mnt/iso" %
                          iso_mount_path)
                iso_mount_dir = "/mnt/iso"
                iso_arch = "x86_64"
                iso_full_filename = iso.filename
                iso_name = iso_full_filename.rsplit('.', 1)
                cobbler_server.background_import(
                    {
                        "path": iso_mount_dir,
                        "arch": iso_arch,
                        "name": iso_name[0]
                    }, token)
                (year, month, day, hour, minute, second, weekday, julian,
                 dst) = time.localtime()
                iso_import_date = "%04d-%02d-%02d_%02d%02d" % (
                    year, month, day, hour, minute)
                iso.import_eventid = iso_import_date
                cobbler_task_status, cobbler_task_name = cobbler_import(
                    iso_import_date)
                cobbler_os_name = cobbler_os_name_find(cobbler_task_name)
                #               cobbler_import(iso_import_date)
                os.system("/usr/bin/umount /mnt/iso")
                #               if cobbler_import(iso_import_date) == 'complete':
                if cobbler_task_status == 'complete':
                    cobbler_server.sync(token)
                    iso.cobbler_status = 'imported'
                    iso.cobbler_name = cobbler_os_name
                    db.session.add(iso)
                    db.session.commit()
                    return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ISO Import Succeeded</div>"
                elif cobbler_import(iso_import_date) == 'failed':
                    cobbler_server.sync(token)
                    iso.cobbler_status = 'failed'
                    db.session.add(iso)
                    db.session.commit()
                    return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>ISO Import Failed</div>"
        elif 'cobblerdistro_delete' in request.form:
            if not request.form['cobblerdistro_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Form Error</div>"
            else:
                cobblerdistro_name = request.form.get('id')
                iso = Isos.query.filter_by(
                    cobbler_name=cobblerdistro_name).first()
                cobblerdistro_delete = cobbler_server.remove_distro(
                    cobblerdistro_name, token)
                cobbler_server.sync(token)
                iso.cobbler_status = 'removed'
                db.session.add(iso)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Cobbler Distro Deleted</div>"
        elif 'cobblerprofile_delete' in request.form:
            if not request.form['cobblerprofile_delete']:
                return "<div class='alert alert-danger' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Form Error</div>"
            else:
                cobblerprofile_name = request.form.get('id')
                iso = Isos.query.filter_by(
                    cobbler_name=cobblerprofile_name).first()
                cobblerprofile_delete = cobbler_server.remove_profile(
                    cobblerprofile_name, token)
                cobbler_server.sync(token)
                iso.cobbler_status = 'removed'
                db.session.add(iso)
                db.session.commit()
                return "<div class='alert alert-success' role='alert'><a href='#' class='close' data-dismiss='alert'>&times;</a>Cobbler Profile Deleted</div>"
    return render_template('cobbler.html')
示例#29
0
def deploy_switch_view():
    error = None
    if request.method == 'GET':
        socketio.start_background_task(cct_swx, '/dev/ttyUSB0', 'sw1usbsignal',
                                       'sw1portsignal')
        socketio.start_background_task(cct_swx, '/dev/ttyUSB1', 'sw2usbsignal',
                                       'sw2portsignal')
        deploy_sw_1_baseconfig = get_deploy_device_last_build_log(
            'deploy_sw_1_baseconfig')
        deploy_sw_1_baseconfig_job_info = get_deploy_device_get_job_info(
            'deploy_sw_1_baseconfig')
        deploy_sw_1_portconfig = get_deploy_device_last_build_log(
            'deploy_sw_1_portconfig')
        deploy_sw_1_portconfig_job_info = get_deploy_device_get_job_info(
            'deploy_sw_1_portconfig')
        deploy_sw_1_singleport = get_deploy_device_last_build_log(
            'deploy_sw_1_singleport')
        deploy_sw_1_singleport_job_info = get_deploy_device_get_job_info(
            'deploy_sw_1_singleport')
        return render_template(
            'deploy-switch.html',
            deploy_sw_1_baseconfig=deploy_sw_1_baseconfig,
            deploy_sw_1_baseconfig_job_info=deploy_sw_1_baseconfig_job_info,
            deploy_sw_1_portconfig=deploy_sw_1_portconfig,
            deploy_sw_1_portconfig_job_info=deploy_sw_1_portconfig_job_info,
            deploy_sw_1_singleport=deploy_sw_1_singleport,
            deploy_sw_1_singleport_job_info=deploy_sw_1_singleport_job_info,
            sws=Switches.query.all(),
            customer_sws=Customer_sw.query.all())
    elif request.method == 'POST':
        if 'deploy_switch1_config_deploy' in request.form:
            if not request.form['deploy_switch1_device'] or not request.form[
                    'deploy_switch1_config']:
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                sw1_device = request.form['deploy_switch1_device']
                sw1_config = request.form['deploy_switch1_config']
                sw1 = Switches.query.filter_by(id=sw1_device).one()
                if sw1_config == 'baseconfig':
                    srvjobs = srvjenkins.get_jobs()
                    config_xml = "output/deploy-sw-1-baseconfig.xml"
                    with codecs.open(config_xml, 'r', encoding='utf8') as f:
                        config_xml_file = f.read()
                    match = any(s['name'] == 'deploy_sw_1_baseconfig'
                                for s in srvjobs)
                    if match == True:
                        srvjenkins.reconfig_job('deploy_sw_1_baseconfig',
                                                config_xml_file)
                    else:
                        srvjenkins.create_job('deploy_sw_1_baseconfig',
                                              config_xml_file)
                    srvjenkins.build_job('deploy_sw_1_baseconfig')
                    flash(
                        'Deploy BASECONFIG task has been submitted and started.',
                        'success')
                    return redirect(request.url)
                elif sw1_config == 'portconfig' and sw1.portnr == '24':
                    srvjobs = srvjenkins.get_jobs()
                    config_xml = "output/deploy-sw-1-24-portconfig.xml"
                    with codecs.open(config_xml, 'r', encoding='utf8') as f:
                        config_xml_file = f.read()
                    match = any(s['name'] == 'deploy_sw_1_portconfig'
                                for s in srvjobs)
                    if match == True:
                        srvjenkins.reconfig_job('deploy_sw_1_portconfig',
                                                config_xml_file)
                    else:
                        srvjenkins.create_job('deploy_sw_1_portconfig',
                                              config_xml_file)
                    srvjenkins.build_job('deploy_sw_1_portconfig')
                    flash(
                        'Deploy PORTCONFIG task for 24 port switch has been submitted and started.',
                        'success')
                    return redirect(request.url)
                elif sw1_config == 'portconfig' and sw1.portnr == '48':
                    srvjobs = srvjenkins.get_jobs()
                    config_xml = "output/deploy-sw-1-48-portconfig.xml"
                    with codecs.open(config_xml, 'r', encoding='utf8') as f:
                        config_xml_file = f.read()
                    match = any(s['name'] == 'deploy_sw_1_portconfig'
                                for s in srvjobs)
                    if match == True:
                        srvjenkins.reconfig_job('deploy_sw_1_portconfig',
                                                config_xml_file)
                    else:
                        srvjenkins.create_job('deploy_sw_1_portconfig',
                                              config_xml_file)
                    srvjenkins.build_job('deploy_sw_1_portconfig')
                    flash(
                        'Deploy PORTCONFIG task for 48 port switch has been submitted and started.',
                        'success')
                    return redirect(request.url)
                elif int(sw1_config) in range(1, 48):
                    if sw1.portnr == '24' and sw1.porttype == 'Fa':
                        port = Switch1_24_port.query.filter_by(
                            id=sw1_config).one()
                        template_file = 'switch_templates/customer-sw-1-24-Fa-singleport-config.j2'
                        template_output = "output/customer-sw-1-singleport.deploy"
                        env = Environment(
                            loader=FileSystemLoader(TEMPLATE_CONFIG))
                        template = env.get_template(template_file)
                        generate_template = template.render(port=port)
                        with open(template_output, "wb") as f:
                            f.write(generate_template)
                        srvjobs = srvjenkins.get_jobs()
                        config_xml = "output/deploy-sw-1-singleport.xml"
                        with codecs.open(config_xml, 'r',
                                         encoding='utf8') as f:
                            config_xml_file = f.read()
                        match = any(s['name'] == 'deploy_sw_1_singleport'
                                    for s in srvjobs)
                        if match == True:
                            srvjenkins.reconfig_job('deploy_sw_1_singleport',
                                                    config_xml_file)
                        else:
                            srvjenkins.create_job('deploy_sw_1_singleport',
                                                  config_xml_file)
                        srvjenkins.build_job('deploy_sw_1_singleport')
                        flash(
                            'Deploy SINGLEPORT P' + sw1_config +
                            ' task has been submitted and started.', 'success')
                        return redirect(request.url)
                    elif sw1.portnr == '24' and sw1.porttype == 'Gi':
                        port = Switch1_24_port.query.filter_by(
                            id=sw1_config).one()
                        template_file = 'switch_templates/customer-sw-1-24-Gi-singleport-config.j2'
                        template_output = "output/customer-sw-1-singleport.deploy"
                        env = Environment(
                            loader=FileSystemLoader(TEMPLATE_CONFIG))
                        template = env.get_template(template_file)
                        generate_template = template.render(port=port)
                        with open(template_output, "wb") as f:
                            f.write(generate_template)
                        srvjobs = srvjenkins.get_jobs()
                        config_xml = "output/deploy-sw-1-singleport.xml"
                        with codecs.open(config_xml, 'r',
                                         encoding='utf8') as f:
                            config_xml_file = f.read()
                        match = any(s['name'] == 'deploy_sw_1_singleport'
                                    for s in srvjobs)
                        if match == True:
                            srvjenkins.reconfig_job('deploy_sw_1_singleport',
                                                    config_xml_file)
                        else:
                            srvjenkins.create_job('deploy_sw_1_singleport',
                                                  config_xml_file)
                        srvjenkins.build_job('deploy_sw_1_singleport')
                        flash(
                            'Deploy SINGLEPORT P' + sw1_config +
                            ' task has been submitted and started.', 'success')
                        return redirect(request.url)
                    elif sw1.portnr == '48' and sw1.porttype == 'Fa':
                        port = Switch1_48_port.query.filter_by(
                            id=sw1_config).one()
                    elif sw1.portnr == '48' and sw1.porttype == 'Gi':
                        port = Switch1_48_port.query.filter_by(
                            id=sw1_config).one()

                    flash(
                        'Deploy SINGLEPORT P' + sw1_config +
                        ' task has been submitted and started.', 'success')
                    return redirect(request.url)
                else:
                    flash('Oops something went wrong !', 'danger')
                    return redirect(request.url)

        elif 'deploy_switch2_config_deploy' in request.form:
            if not request.form['deploy_switch2_device'] or not request.form[
                    'deploy_switch2_config']:
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                sw2_device = request.form['deploy_switch2_device']
                sw2_config = request.form['deploy_switch2_config']
                sw2 = Switches.query.filter_by(id=sw2_device).one()
                if sw2_config == 'baseconfig':
                    srvjobs = srvjenkins.get_jobs()
                    config_xml = "output/deploy-sw-2-baseconfig.xml"
                    with codecs.open(config_xml, 'r', encoding='utf8') as f:
                        config_xml_file = f.read()
                    match = any(s['name'] == 'deploy_sw_2_baseconfig'
                                for s in srvjobs)
                    if match == True:
                        srvjenkins.reconfig_job('deploy_sw_2_baseconfig',
                                                config_xml_file)
                    else:
                        srvjenkins.create_job('deploy_sw_2_baseconfig',
                                              config_xml_file)
                    srvjenkins.build_job('deploy_sw_2_baseconfig')
                    flash(
                        'Deploy BASECONFIG task has been submitted and started.',
                        'success')
                    return redirect(request.url)
                elif sw2_config == 'portconfig' and sw2.portnr == '24':
                    srvjobs = srvjenkins.get_jobs()
                    config_xml = "output/deploy-sw-2-24-portconfig.xml"
                    with codecs.open(config_xml, 'r', encoding='utf8') as f:
                        config_xml_file = f.read()
                    match = any(s['name'] == 'deploy_sw_2_portconfig'
                                for s in srvjobs)
                    if match == True:
                        srvjenkins.reconfig_job('deploy_sw_2_portconfig',
                                                config_xml_file)
                    else:
                        srvjenkins.create_job('deploy_sw_2_portconfig',
                                              config_xml_file)
                    srvjenkins.build_job('deploy_sw_2_portconfig')
                    flash(
                        'Deploy PORTCONFIG task for 24 port switch has been submitted and started.',
                        'success')
                    return redirect(request.url)
                elif sw2_config == 'portconfig' and sw2.portnr == '48':
                    srvjobs = srvjenkins.get_jobs()
                    config_xml = "output/deploy-sw-2-48-portconfig.xml"
                    with codecs.open(config_xml, 'r', encoding='utf8') as f:
                        config_xml_file = f.read()
                    match = any(s['name'] == 'deploy_sw_2_portconfig'
                                for s in srvjobs)
                    if match == True:
                        srvjenkins.reconfig_job('deploy_sw_2_portconfig',
                                                config_xml_file)
                    else:
                        srvjenkins.create_job('deploy_sw_2_portconfig',
                                              config_xml_file)
                    srvjenkins.build_job('deploy_sw_2_portconfig')
                    flash(
                        'Deploy PORTCONFIG task for 48 port switch has been submitted and started.',
                        'success')
                    return redirect(request.url)
                elif int(sw2_config) in range(1, 48):
                    if sw2.portnr == '24' and sw2.porttype == 'Fa':
                        port = Switch2_24_port.query.filter_by(
                            id=sw2_config).one()
                        template_file = 'switch_templates/customer-sw-2-24-Fa-singleport-config.j2'
                        template_output = "output/customer-sw-2-singleport.deploy"
                        env = Environment(
                            loader=FileSystemLoader(TEMPLATE_CONFIG))
                        template = env.get_template(template_file)
                        generate_template = template.render(port=port)
                        with open(template_output, "wb") as f:
                            f.write(generate_template)
                        srvjobs = srvjenkins.get_jobs()
                        config_xml = "output/deploy-sw-2-singleport.xml"
                        with codecs.open(config_xml, 'r',
                                         encoding='utf8') as f:
                            config_xml_file = f.read()
                        match = any(s['name'] == 'deploy_sw_2_singleport'
                                    for s in srvjobs)
                        if match == True:
                            srvjenkins.reconfig_job('deploy_sw_2_singleport',
                                                    config_xml_file)
                        else:
                            srvjenkins.create_job('deploy_sw_2_singleport',
                                                  config_xml_file)
                        srvjenkins.build_job('deploy_sw_2_singleport')
                        flash(
                            'Deploy SINGLEPORT P' + sw2_config +
                            ' task has been submitted and started.', 'success')
                        return redirect(request.url)
                    elif sw2.portnr == '24' and sw2.porttype == 'Gi':
                        port = Switch2_24_port.query.filter_by(
                            id=sw2_config).one()
                        template_file = 'switch_templates/customer-sw-2-24-Gi-singleport-config.j2'
                        template_output = "output/customer-sw-2-singleport.deploy"
                        env = Environment(
                            loader=FileSystemLoader(TEMPLATE_CONFIG))
                        template = env.get_template(template_file)
                        generate_template = template.render(port=port)
                        with open(template_output, "wb") as f:
                            f.write(generate_template)
                        srvjobs = srvjenkins.get_jobs()
                        config_xml = "output/deploy-sw-2-singleport.xml"
                        with codecs.open(config_xml, 'r',
                                         encoding='utf8') as f:
                            config_xml_file = f.read()
                        match = any(s['name'] == 'deploy_sw_2_singleport'
                                    for s in srvjobs)
                        if match == True:
                            srvjenkins.reconfig_job('deploy_sw_2_singleport',
                                                    config_xml_file)
                        else:
                            srvjenkins.create_job('deploy_sw_2_singleport',
                                                  config_xml_file)
                        srvjenkins.build_job('deploy_sw_2_singleport')
                        flash(
                            'Deploy SINGLEPORT P' + sw2_config +
                            ' task has been submitted and started.', 'success')
                        return redirect(request.url)
                    elif sw2.portnr == '48' and sw2.porttype == 'Fa':
                        port = Switch2_48_port.query.filter_by(
                            id=sw2_config).one()
                    elif sw2.portnr == '48' and sw2.porttype == 'Gi':
                        port = Switch2_48_port.query.filter_by(
                            id=sw2_config).one()

                    flash(
                        'Deploy SINGLEPORT P' + sw2_config +
                        ' task has been submitted and started.', 'success')
                    return redirect(request.url)
                else:
                    flash('Oops something went wrong !', 'danger')
                    return redirect(request.url)

    return render_template('deploy-switch.html')
示例#30
0
def saltstack_view():
    error = None
    if request.method == 'GET':
        salt_svc_check = salt_service_check()
        salt_keys_acc = salt_keys_accepted()
        salt_keys_unacc = salt_keys_unaccepted()
        salt_keys_den = salt_keys_denied()
        salt_keys_rej = salt_keys_rejected()
        return render_template('saltstack.html',
                               pxe_nodes=Saltstack_pxe_nodes.query.all(),
                               salt_svc_check=salt_svc_check,
                               salt_keys_acc=salt_keys_acc,
                               salt_keys_unacc=salt_keys_unacc,
                               salt_keys_den=salt_keys_den,
                               salt_keys_rej=salt_keys_rej)
    elif request.method == 'POST':
        if 'salt_keys_denied_delete' in request.form:
            if not request.form['salt_keys_denied_delete'] or request.form[
                    'key_ip'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                key_ip = request.form['key_ip']
                wheel.cmd_async({'fun': 'key.delete', 'match': key_ip})
                pxe_node = Saltstack_pxe_nodes.query.filter_by(
                    pxeipaddr=key_ip).first()
                if str(key_ip) == str(pxe_node):
                    db.session.delete(pxe_node)
                    db.session.commit()
                flash('Requested key ' + key_ip + ' has been removed!',
                      'success')
                return redirect(request.url)
        elif 'salt_keys_rejected_delete' in request.form:
            if not request.form['salt_keys_rejected_delete'] or request.form[
                    'key_ip'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                key_ip = request.form['key_ip']
                wheel.cmd_async({'fun': 'key.delete', 'match': key_ip})
                pxe_node = Saltstack_pxe_nodes.query.filter_by(
                    pxeipaddr=key_ip).first()
                if str(key_ip) == str(pxe_node):
                    db.session.delete(pxe_node)
                    db.session.commit()
                flash('Requested key ' + key_ip + ' has been removed!',
                      'success')
                return redirect(request.url)
        elif 'salt_keys_unaccepted_accept' in request.form:
            if not request.form['salt_keys_unaccepted_accept'] or request.form[
                    'key_ip'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                key_ip = request.form['key_ip']
                wheel.cmd('key.accept', [key_ip])
                flash('Requested key ' + key_ip + ' has been accepted!',
                      'success')
                return redirect(request.url)
        elif 'salt_keys_unaccepted_delete' in request.form:
            if not request.form['salt_keys_unaccepted_delete'] or request.form[
                    'key_ip'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                key_ip = request.form['key_ip']
                wheel.cmd_async({'fun': 'key.delete', 'match': key_ip})
                pxe_node = Saltstack_pxe_nodes.query.filter_by(
                    pxeipaddr=key_ip).first()
                if str(key_ip) == str(pxe_node):
                    db.session.delete(pxe_node)
                    db.session.commit()
                flash('Requested key ' + key_ip + ' has been removed!',
                      'success')
                return redirect(request.url)
        elif 'salt_keys_accepted_delete' in request.form:
            if not request.form['salt_keys_accepted_delete'] or request.form[
                    'key_ip'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                key_ip = request.form['key_ip']
                wheel.cmd_async({'fun': 'key.delete', 'match': key_ip})
                pxe_node = Saltstack_pxe_nodes.query.filter_by(
                    pxeipaddr=key_ip).first()
                if str(key_ip) == str(pxe_node):
                    db.session.delete(pxe_node)
                    db.session.commit()
                flash('Requested key ' + key_ip + ' has been removed!',
                      'success')
                return redirect(request.url)
        elif 'salt_keys_audit_save' in request.form:
            if not request.form['salt_keys_audit_save'] or request.form[
                    'key_ip'] == '':
                flash('Please fill all the fields before sending a request!',
                      'danger')
                return redirect(request.url)
            else:
                key_ip = request.form['key_ip']
                pxe_node_check = Saltstack_pxe_nodes.query.filter_by(
                    pxeipaddr=key_ip).first()
                if str(key_ip) == str(pxe_node_check):
                    flash(
                        'Candidate ' + key_ip + ' has already been audited !',
                        'danger')
                    return redirect(request.url)
                else:
                    pxe_int_name = local.cmd(key_ip, 'network.ifacestartswith',
                                             [key_ip])
                    pxe_mac_addr = local.cmd(key_ip, 'network.hwaddr',
                                             [pxe_int_name[key_ip][0]])
                    pxe_node = Saltstack_pxe_nodes(key_ip,
                                                   pxe_int_name[key_ip][0],
                                                   pxe_mac_addr[key_ip])
                    db.session.add(pxe_node)
                    db.session.commit()
                    #		print pxe_int_name[key_ip][0], pxe_mac_addr[key_ip]
                    flash(
                        'Requested key ' + key_ip +
                        ' has been audited! INT: ' + pxe_int_name[key_ip][0] +
                        ' MAC: ' + pxe_mac_addr[key_ip] + ' ', 'success')
                    return redirect(request.url)
        else:
            flash('Malformed form submitted !', 'danger')
            return redirect(request.url)