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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Snapshot Deleted</div>" return render_template('snapshots.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>vStorage Deleted</div>" return render_template('vstorage.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>VM Deleted</div>" return render_template('virtualmachines.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>ISO Uploaded</div>" return render_template('isos.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Servers Deleted</div>" return render_template('servers.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>vDS Deleted</div>" return render_template('vdsswitch.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>ESXi Deleted</div>" return render_template('esxi.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Firewall Deleted</div>" return render_template('firewalls.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>IPS Deleted</div>" return render_template('ips.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>vCenter Deleted</div>" return render_template('vcenter.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>vS Deleted</div>" return render_template('vswitch.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Router Deleted</div>" return render_template('routers.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Template Deleted</div>" return render_template('templates.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>SharedSAN Deleted</div>" return render_template('sharedsan.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Rack Deleted</div>" return render_template('racks.html')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>VLAN Deleted</div>" return render_template('vlans.html')
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'>×</a>System Rebooted for PXE Installation.</div>" else: flash('Malformed form submitted !', 'danger') return redirect(request.url)
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Dedicatedsan Deleted</div>" return render_template('dedicatedsan.html')
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'>×</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'>×</a>Cobbler System Deleted</div>" # flash('Template generated successfully !','success') # return redirect(request.url) else: flash('Malformed form submitted !','danger') return redirect(request.url)
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>User Deleted</div>" return render_template('users.html', users=User.query.all(), roles=Role.query.all())
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)
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)
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'>×</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'>×</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'>×</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'>×</a>Cobbler System Deleted</div>" else: flash('Malformed form submitted !', 'danger') return redirect(request.url)
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')
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)
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)
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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')
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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</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'>×</a>Cobbler Profile Deleted</div>" return render_template('cobbler.html')
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')
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)