Revisión 94
Añadido por Francisco Damián Méndez Palma hace alrededor de 14 años
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':
|
Exportar a: Unified diff
Completada alta de thinclients