Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 94

Completada alta de thinclients

Ver diferencias:

controlies/Plugins/Hosts.py
if self.type <> "thinclient":
if self.existsIP():
return "ipAlreadyExists"
#controlar overflow en nodos
if self.groupOverflow(300):
return "groupOverflow"
if self.existsMAC():
return "macAlreadyExists"
......
search = resultado
if len(search) > 0:
totalPages = ceil( len(search) / int(limit) )
else:
totalPages = 0
if page > totalPages:
page = totalPages
rows = []
for i in search[start:finish]:
for i in search:
row = {
"id":i[0][1]["cn"][0],
"cell":[i[0][1]["cn"][0], i[0][1]["ipHostNumber"][0],i[0][1]["macAddress"]],
......
#row = { "cn":i[0][0], "cell":[i[0][1]["cn"][0], i[0][1]["ipHostNumber"][0],i[0][1]["macAddress"]]}
rows.append(row)
if len(rows) > 0:
totalPages = ceil( len(rows) / int(limit) )
else:
totalPages = 0
if page > totalPages:
page = totalPages
result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort)
return { "page":page, "total":totalPages, "records":len(search), "rows":result }
return { "page":page, "total":totalPages, "records":len(rows), "rows":result[start:finish] }
elif type == "thinclient":
#import pdb
#search = l.search("cn=THINCLIENTS,cn=DHCP Config", "cn=*",["cn","dhcpHWAddress"])
search = self.ldap.search("cn=THINCLIENTS,cn=DHCP Config","cn=*",["cn","dhcpHWAddress"])
#search[6][0][1]["cn"][0]
if len(search) > 0:
totalPages = ceil( len(search) / int(limit) )
else:
totalPages = 0
if page > totalPages:
page = totalPages
rows = []
# esto hay que cambiarlo: tenemos 4 groups en thinclientes
for i in search[6:finish]:
for i in search[6:len(search)]:
row = {
"id":i[0][1]["cn"][0],
"cell":[i[0][1]["cn"][0], i[0][1]["dhcpHWAddress"]],
......
#row = { "cn":i[0][0], "cell":[i[0][1]["cn"][0], i[0][1]["dhcpHWAddress"][0]]}
rows.append(row)
if len(rows) > 0:
totalPages = ceil( len(rows) / int(limit) )
else:
totalPages = 0
if page > totalPages:
page = totalPages
result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort)
return { "page":page, "total":totalPages, "records":len(search), "rows":result }
return { "page":page, "total":totalPages, "records":len(rows), "rows":result[start:finish] }
elif type == "workstation":
# Obtengo todos los elementos del nodo hosts
......
search = resultado
if len(search) > 0:
totalPages = ceil( len(search) / int(limit) )
else:
totalPages = 0
if page > totalPages:
page = totalPages
rows = []
for i in search[start:finish]:
for i in search:
row = {
"id":i[0][1]["cn"][0],
"cell":[i[0][1]["cn"][0], i[0][1]["ipHostNumber"][0],i[0][1]["macAddress"]],
......
#row = { "cn":i[0][0], "cell":[i[0][1]["cn"][0], i[0][1]["ipHostNumber"][0],i[0][1]["macAddress"]]}
rows.append(row)
if len(rows) > 0:
totalPages = ceil( len(rows) / int(limit) )
else:
totalPages = 0
if page > totalPages:
page = totalPages
result = sorted(rows, key=itemgetter(sortBy), reverse=reverseSort)
return { "page":page, "total":totalPages, "records":len(search), "rows":result }
return { "page":page, "total":totalPages, "records":len(rows), "rows":result[start:finish] }
def add(self):
#maxID = str(self.getMaxID())
#passwd = hashlib.sha1(self.password).hexdigest()
#attr = [
#('objectclass', ['top','posixAccount','shadowAccount','person','inetOrgPerson']),
#('uid', [self.user]),
#('cn', [self.name] ),
#('employeenumber', [self.nif] ),
#('sn', [self.surname] ),
#('uidnumber', [maxID] ),
#('gidnumber', [maxID] ),
#('loginshell', ['/bin/bash'] ),
#('homeDirectory', [self.whatHome() + self.user] ),
#('jpegPhoto', ['jpegPhoto'] ),
#('userpassword', [passwd])
#]
#self.ldap.add("uid="+self.user+",ou=People", attr)
# Add private group
#attr = [
#('objectclass', ['top','posixGroup','lisGroup']),
#('grouptype', ['private']),
#('gidnumber', [maxID] ),
#('cn', [self.user] ),
#('description', [self.name+' personal group'] )
#]
#self.ldap.add("cn="+self.user+",ou=Group", attr)
# Add selected groups
#attr = [
#(ldap.MOD_ADD, 'member', ['uid='+self.user+',ou=People,dc=instituto,dc=extremadura,dc=es'] ),
#(ldap.MOD_ADD, 'memberUid', [self.user] )
#]
#for n in self.departments:
# self.ldap.modify('cn='+ n +',ou=Group', attr)
#for n in self.classrooms:
# self.ldap.modify('cn='+ n +',ou=Group', attr)
if self.type=="thinclient":
attr = [
('objectclass', ['top','dhcpHost']),
('cn', [self.name] ),
('dhcpStatements', ['filename "/var/lib/tftpboot/ltsp/i386/pxelinux.0"'] ),
('dhcpHWAddress', ['ethernet ' + self.mac] )
]
self.ldap.add("cn="+self.name +",cn=group2,cn=THINCLIENTS,cn=DHCP Config", attr)
return "OK"
......
self.ldap.delete('uid='+ uid +',cn=hosts')
def wakeup(self):
from twisted.internet.task import LoopingCall
from twisted.internet import defer
from Plugins import NetworkUtils
NetworkUtils.startup(self.mac)
def groupOverflow(self,overflow):
import pdb
if self.type == 'thinclient':
search = self.ldap.search("cn=" + self.group +",cn=THINCLIENTS,cn=DHCP Config","cn=*",["cn"])
if len(search)-2 >= overflow:
return True
return False
def existsHostname(self):
if self.type == 'thinclient':
controlies/MainLoop.py
if command == "hosts":
from Plugins.Hosts import Hosts
import pdb
if request.args['action'][0] == "list":
h = Hosts (l,"","","","","")
response = h.list(request.args)
......
ip = ""
else:
ip = request.args ['ip'][0]
pdb.set_trace()
h = Hosts(l,request.args['name'][0],ip,request.args['mac'][0],request.args['group'][0],request.args['type'][0])
response = h.process(request.args['action'][0])
return json.dumps({"response" : response})
controlies/Server.py
# Start up the web service.
Root = MainLoop.ControlIESProtocol() #Resource object
Root.PageDir='/home/manu/proyectos/controlies/www/'
#Root.PageDir='/home/chisco/Proyectos/controlies/www'
#Root.PageDir='/home/manu/proyectos/controlies/www/'
Root.PageDir='/home/chisco/Proyectos/controlies/www'
site = server.Site(Root)
fileNameServers = '/tmp/controlIES.ltpsSevers'

Exportar a: Unified diff