| 1 | # (c) Roland van Laar 2006
|
---|
| 2 |
|
---|
| 3 | from django.http import HttpResponse, HttpResponseRedirect
|
---|
| 4 | from django.template import loader, Context
|
---|
| 5 | from django.shortcuts import render_to_response
|
---|
| 6 | from django import forms
|
---|
| 7 | from datetime import datetime
|
---|
| 8 | from socket import gethostname
|
---|
| 9 |
|
---|
| 10 | from django_exodus.exodus_01.models import NIC, Node, Location, Link, LinkPool
|
---|
| 11 | from django_exodus.exodus_01.wllogic import freemasterip, newssidname
|
---|
| 12 |
|
---|
| 13 | def addlocation(request):
|
---|
| 14 | manipulator = Location.AddManipulator()
|
---|
| 15 |
|
---|
| 16 |
|
---|
| 17 | if request.POST:
|
---|
| 18 | new_data = request.POST.copy()
|
---|
| 19 |
|
---|
| 20 | for data in new_data:
|
---|
| 21 | print "%s" % len(new_data)
|
---|
| 22 |
|
---|
| 23 | print "%s" % new_data['description']
|
---|
| 24 |
|
---|
| 25 | errors = manipulator.get_validation_errors(new_data)
|
---|
| 26 |
|
---|
| 27 | if not errors:
|
---|
| 28 | manipulator.do_html2python(new_data)
|
---|
| 29 | new_place = manipulator.save(new_data)
|
---|
| 30 |
|
---|
| 31 | return HttpResponseRedirect("/exodus_01/")
|
---|
| 32 |
|
---|
| 33 | else:
|
---|
| 34 | errors = new_data = {}
|
---|
| 35 |
|
---|
| 36 | form = forms.FormWrapper(manipulator, new_data, errors)
|
---|
| 37 | return render_to_response('exodus_01/addlocation.html', {'form': form, 'new_data': new_data})
|
---|
| 38 |
|
---|
| 39 | def addnode(request):
|
---|
| 40 | manipulator = Node.AddManipulator()
|
---|
| 41 |
|
---|
| 42 | if request.POST:
|
---|
| 43 | new_data = request.POST.copy()
|
---|
| 44 |
|
---|
| 45 | # input a valid master ip into new_data
|
---|
| 46 | new_data['masterip'] = freemasterip()
|
---|
| 47 |
|
---|
| 48 | errors = manipulator.get_validation_errors(new_data)
|
---|
| 49 |
|
---|
| 50 | if not errors:
|
---|
| 51 | manipulator.do_html2python(new_data)
|
---|
| 52 | new_place = manipulator.save(new_data)
|
---|
| 53 |
|
---|
| 54 | return HttpResponseRedirect("/exodus_01/")
|
---|
| 55 |
|
---|
| 56 | else:
|
---|
| 57 | errors = new_data = {}
|
---|
| 58 |
|
---|
| 59 | form = forms.FormWrapper(manipulator, new_data, errors)
|
---|
| 60 | return render_to_response('exodus_01/addnode.html', {'form': form })
|
---|
| 61 |
|
---|
| 62 | def addnic(request):
|
---|
| 63 | manipulator = NIC.AddManipulator()
|
---|
| 64 |
|
---|
| 65 | if request.POST:
|
---|
| 66 | new_data = request.POST.copy()
|
---|
| 67 |
|
---|
| 68 | print new_data
|
---|
| 69 |
|
---|
| 70 | # generated data for the NIC
|
---|
| 71 |
|
---|
| 72 | new_data['shortdesc'] = "bogus"
|
---|
| 73 | new_data['desc'] = "bogus"
|
---|
| 74 |
|
---|
| 75 | print new_data
|
---|
| 76 | print new_data['node']
|
---|
| 77 |
|
---|
| 78 | if str(new_data['type']) != "eth":
|
---|
| 79 | new_data['ssid'] = newssidname(new_data['node'],new_data['iface'])
|
---|
| 80 | new_data['channel'] = '1'
|
---|
| 81 | new_data['mode'] = '1' # set to master
|
---|
| 82 |
|
---|
| 83 | print new_data
|
---|
| 84 |
|
---|
| 85 | errors = manipulator.get_validation_errors(new_data)
|
---|
| 86 |
|
---|
| 87 |
|
---|
| 88 | if not errors:
|
---|
| 89 | manipulator.do_html2python(new_data)
|
---|
| 90 | new_place = manipulator.save(new_data)
|
---|
| 91 |
|
---|
| 92 | return HttpResponseRedirect("/exodus_01/")
|
---|
| 93 |
|
---|
| 94 | else:
|
---|
| 95 | errors = new_data = {}
|
---|
| 96 |
|
---|
| 97 | form = forms.FormWrapper(manipulator, new_data, errors)
|
---|
| 98 | return render_to_response('exodus_01/addnic.html', {'form': form })
|
---|
| 99 |
|
---|
| 100 | def addinterlink(request):
|
---|
| 101 | link1_manipulator = Link.AddManipulator()
|
---|
| 102 | link2_manipulator = Link.AddManipulator()
|
---|
| 103 | linkpool_manipulator = LinkPool.AddManipulator()
|
---|
| 104 |
|
---|
| 105 |
|
---|
| 106 | if request.POST:
|
---|
| 107 | new_data = request.POST.copy()
|
---|
| 108 |
|
---|
| 109 | print new_data
|
---|
| 110 | alliface = new_data.getlist("iface")
|
---|
| 111 |
|
---|
| 112 | iface1 = NIC.objects.get(id=alliface[0])
|
---|
| 113 | iface2 = NIC.objects.get(id=alliface[1])
|
---|
| 114 |
|
---|
| 115 | print iface1
|
---|
| 116 | print iface2
|
---|
| 117 |
|
---|
| 118 | if iface1.type != iface2.type:
|
---|
| 119 | print "not compatible"
|
---|
| 120 | linkerror["compat"] = "choose twomcompatible"
|
---|
| 121 |
|
---|
| 122 |
|
---|
| 123 | errors = link1_manipulator.get_validation_errors(new_data)
|
---|
| 124 |
|
---|
| 125 | if not errors:
|
---|
| 126 | link1_manipulator.do_html2python(new_data)
|
---|
| 127 |
|
---|
| 128 | return HttpResponseRedirect("/exodus_01/")
|
---|
| 129 |
|
---|
| 130 | else:
|
---|
| 131 | errors = new_data = {}
|
---|
| 132 |
|
---|
| 133 | form1 = forms.FormWrapper(link1_manipulator, new_data, errors)
|
---|
| 134 | form2 = forms.FormWrapper(link2_manipulator, new_data, errors)
|
---|
| 135 | return render_to_response('exodus_01/addinterlink.html',{'form1':form1, 'form2':form2})
|
---|
| 136 |
|
---|
| 137 | def addomni(request):
|
---|
| 138 | link_manipulator = Link.AddManipulator()
|
---|
| 139 | linkpool_manipulator = LinkPool.AddManipulator()
|
---|
| 140 |
|
---|
| 141 | if request.POST:
|
---|
| 142 | new_data = request.POST.copy()
|
---|
| 143 |
|
---|
| 144 | # pull data and
|
---|
| 145 | #
|
---|
| 146 |
|
---|
| 147 | link_errors = link_manipulator.get_validation_errors(new_data)
|
---|
| 148 | linkpool_errors = linkpool_manipulator.get_validation_errors(new_data)
|
---|
| 149 |
|
---|
| 150 | else:
|
---|
| 151 | errors = new_data = {}
|
---|
| 152 |
|
---|
| 153 | form1 = forms.FormWrapper(link_manipulator, new_data, errors)
|
---|
| 154 | form2 = forms.FormWrapper(linkpool_manipulator, new_data, errors)
|
---|
| 155 | return render_to_response('exodus_01/addomni.html',{'form1':form1, 'form2':form2})
|
---|
| 156 |
|
---|
| 157 |
|
---|
| 158 |
|
---|
| 159 | def conf_rc_local(request, object_id):
|
---|
| 160 | """5.X legacy rc.local conf generator"""
|
---|
| 161 | object = Node.objects.get(pk=object_id).nic_set.all()
|
---|
| 162 | object.date = datetime.now()
|
---|
| 163 | object.name = Node.objects.get(pk=object_id).name
|
---|
| 164 | object.host = gethostname()
|
---|
| 165 |
|
---|
| 166 | # check if it is a wireless nic, and add wifimode for wicontrol
|
---|
| 167 | for nic in object:
|
---|
| 168 | if nic.ssid:
|
---|
| 169 | if nic.mode.mode == 'master':
|
---|
| 170 | nic.wifimode = 6
|
---|
| 171 | nic.wifidesc = 'master mode'
|
---|
| 172 | else:
|
---|
| 173 | nic.wifimode = 1
|
---|
| 174 | nic.wifidesc = 'managed mode'
|
---|
| 175 | t = loader.get_template('exodus_01/rc_local.txt')
|
---|
| 176 | c = Context({'object': object,
|
---|
| 177 | })
|
---|
| 178 | return HttpResponse(t.render(c), mimetype='text/plain')
|
---|
| 179 |
|
---|
| 180 | def conf_rc_node_local5X(request, object_id):
|
---|
| 181 | """5.X Legacy rc.node.local conf generator"""
|
---|
| 182 |
|
---|
| 183 | object.date = datetime.now()
|
---|
| 184 | object.name = Node.objects.get(pk=object_id).name
|
---|
| 185 | object.host = gethostname()
|
---|
| 186 |
|
---|
| 187 | t = loader.get_template('exodus_01/rc_node_local.txt')
|
---|
| 188 | c = Context({'object': object,
|
---|
| 189 | })
|
---|
| 190 | return HttpResponse(t.render(c), mimetype='text/plain')
|
---|
| 191 |
|
---|
| 192 | def conf_rc_node_local(request, object_id):
|
---|
| 193 | """rc.node.local conf generator"""
|
---|
| 194 |
|
---|
| 195 | object = Node.objects.get(pk=object_id).nic_set.all()
|
---|
| 196 | object.date = datetime.now()
|
---|
| 197 | object.name = Node.objects.get(pk=object_id).name
|
---|
| 198 | object.host = gethostname()
|
---|
| 199 |
|
---|
| 200 | t = loader.get_template('exodus_01/rc_node_local.txt')
|
---|
| 201 | c = Context({'object': object, })
|
---|
| 202 |
|
---|
| 203 | print c
|
---|
| 204 | return HttpResponse(t.render(c), mimetype='text.plain')
|
---|
| 205 |
|
---|
| 206 | def conf_rc_node_localorig(request, object_id):
|
---|
| 207 | """rc.node.local conf generator"""
|
---|
| 208 |
|
---|
| 209 | object = Node.objects.get(pk=object_id).nic_set.all()
|
---|
| 210 | object.date = datetime.now()
|
---|
| 211 | object.name = Node.objects.get(pk=object_id).name
|
---|
| 212 | object.host = gethostname()
|
---|
| 213 |
|
---|
| 214 | # check if it is a wireless nic, and add wifimode for wicontrol
|
---|
| 215 | for nic in object:
|
---|
| 216 | if nic.ssid:
|
---|
| 217 | if nic.mode.mode == 'master':
|
---|
| 218 | nic.wifimode = 6
|
---|
| 219 | nic.wifidesc = 'master mode'
|
---|
| 220 | else:
|
---|
| 221 | nic.wifimode = 1
|
---|
| 222 | nic.wifidesc = 'managed mode'
|
---|
| 223 |
|
---|
| 224 | print "boek"
|
---|
| 225 | t = loader.get_template('exodus_01/rc_node_local.txt')
|
---|
| 226 | c = Context({'object': object,
|
---|
| 227 | })
|
---|
| 228 | return HttpResponse(t.render(c), mimetype='text/plain')
|
---|