コード例 #1
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
	def addExcludedIp(self,ipStr,comment):
		'''
		Add an IP to the exclusion list	
		'''
		with MutexStore.getObjectLock(self.getLockIdentifier()):
			#Check is not already allocated
			if not  self.__isIpAvailable(ipStr):
				raise Exception("Ip already allocated or marked as excluded")

			#then forbidd
			if not IP4Utils.isIpInRange(ipStr,self.startIp,self.endIp):
				raise Exception("Ip is not in range")
			newIp = Ip4Slot.excludedIpFactory(self,ipStr,comment)
			self.ips.add(newIp)

			#if was nextSlot shift
			if self.nextAvailableIp == ipStr:
				try:
                        		it= IP4Utils.getIpIterator(self.nextAvailableIp,self.endIp,self.netMask)
					while True:
						ip = it.getNextIp()
						if self.__isIpAvailable(ip):
							break
					self.nextAvailableIp = ip
				except Exception as e:
					self.nextAvailableIp = None
			
			self.autoSave()
コード例 #2
0
    def addExcludedIp(self, ipStr, comment):
        '''
		Add an IP to the exclusion list	
		'''
        with MutexStore.getObjectLock(self.getLockIdentifier()):
            #Check is not already allocated
            if not self.__isIpAvailable(ipStr):
                raise Exception("Ip already allocated or marked as excluded")

            #then forbidd
            if not IP4Utils.isIpInRange(ipStr, self.startIp, self.endIp):
                raise Exception("Ip is not in range")
            newIp = Ip4Slot.excludedIpFactory(self, ipStr, comment)
            self.ips.add(newIp)

            #if was nextSlot shift
            if self.nextAvailableIp == ipStr:
                try:
                    it = IP4Utils.getIpIterator(self.nextAvailableIp,
                                                self.endIp, self.netMask)
                    while True:
                        ip = it.getNextIp()
                        if self.__isIpAvailable(ip):
                            break
                    self.nextAvailableIp = ip
                except Exception as e:
                    self.nextAvailableIp = None

            self.autoSave()
コード例 #3
0
    def releaseIp(self, ipObj):
        '''
		Releases an IP address of the range (but it does not destroy the object!!)	
		'''
        with MutexStore.getObjectLock(self.getLockIdentifier()):
            ipStr = ipObj.getIp()
            if not self.ips.filter(ip=ipStr, isExcluded=False).count() > 0:
                raise Exception(
                    "Cannot release Ip %s. Reason may be is unallocated or is an excluded Ip",
                    ipStr)

            self.ips.remove(ipObj)

            #Determine new available Ip
            if not self.nextAvailableIp == None:
                if IP4Utils.compareIps(ipStr, self.nextAvailableIp) > 0:
                    #Do nothing
                    pass
                else:
                    self.nextAvailableIp = ipStr
            else:
                #No more gaps
                self.nextAvailableIp = ipStr

            self.autoSave()
コード例 #4
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
	def allocateIp(self):
		'''
		Allocates an IP address of the range	
		'''
		with MutexStore.getObjectLock(self.getLockIdentifier()):
			#Implements first fit algorithm
				
			if self.nextAvailableIp == None:
				raise Exception("Could not allocate any IP")
		
			newIp = Ip4Slot.ipFactory(self,self.nextAvailableIp)
			self.ips.add(newIp)
			
			#Try to find new slot
			try:
                        	it= IP4Utils.getIpIterator(self.nextAvailableIp,self.endIp,self.netMask)
				while True:
					ip = it.getNextIp()
					if self.__isIpAvailable(ip):
						break
				self.nextAvailableIp = ip
			except Exception as e:
				self.nextAvailableIp = None
	
			self.autoSave()
			return newIp
コード例 #5
0
    def removeExcludedIp(self, ipObj):
        '''
		Deletes an IP from the exclusion list (but it does not destroy the object!!)
		'''
        with MutexStore.getObjectLock(self.getLockIdentifier()):
            ipStr = ipObj.getIp()
            if not self.ips.get(ip=ipStr).isExcludedIp():
                raise Exception(
                    "Cannot release Ip. Reason may be is unallocated or is not excluded Ip"
                )

            self.ips.remove(ipObj)

            #Determine new available Ip
            if not self.nextAvailableIp == None:
                if IP4Utils.compareIps(ipStr, self.nextAvailableIp) > 0:
                    #Do nothing
                    pass
                else:
                    self.nextAvailableIp = ipStr
            else:
                #No more gaps
                self.nextAvailableIp = ipStr

            self.autoSave()
コード例 #6
0
    def allocateIp(self):
        '''
		Allocates an IP address of the range	
		'''
        with MutexStore.getObjectLock(self.getLockIdentifier()):
            #Implements first fit algorithm

            if self.nextAvailableIp == None:
                raise Exception("Could not allocate any IP")

            newIp = Ip4Slot.ipFactory(self, self.nextAvailableIp)
            self.ips.add(newIp)

            #Try to find new slot
            try:
                it = IP4Utils.getIpIterator(self.nextAvailableIp, self.endIp,
                                            self.netMask)
                while True:
                    ip = it.getNextIp()
                    if self.__isIpAvailable(ip):
                        break
                self.nextAvailableIp = ip
            except Exception as e:
                self.nextAvailableIp = None

            self.autoSave()
            return newIp
コード例 #7
0
	def constructor(ipRange,ip,excluded,comment="",save=True):
		self = Ip4Slot()
		try:
			#Check IP
			IP4Utils.checkValidIp(ip)

			self.ip = ip
			self.isExcluded = excluded 
			self.ipRange = ipRange
			self.comment = comment

			self.doSave = save
			if save:
				self.save()
		except Exception as e:
			#self.delete()
			raise e
		return self
コード例 #8
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
	def rebasePointer(self):
		'''Used when pointer has lost track mostly due to bug #'''
		with MutexStore.getObjectLock(self.getLockIdentifier()):
			print "Rebasing pointer of range: "+str(self.id)
			print "Current pointer point to: "+self.nextAvailableIp
			try:
                        	it= IP4Utils.getIpIterator(self.startIp,self.endIp,self.netMask)
				while True:
					ip = it.getNextIp()
					if self.__isIpAvailable(ip):
						break
				self.nextAvailableIp = ip
			except Exception as e:
					self.nextAvailableIp = None
			
			print "Pointer will be rebased to: "+self.nextAvailableIp
			self.save()
コード例 #9
0
    def rebasePointer(self):
        '''Used when pointer has lost track mostly due to bug #'''
        with MutexStore.getObjectLock(self.getLockIdentifier()):
            print "Rebasing pointer of range: " + str(self.id)
            print "Current pointer point to: " + self.nextAvailableIp
            try:
                it = IP4Utils.getIpIterator(self.startIp, self.endIp,
                                            self.netMask)
                while True:
                    ip = it.getNextIp()
                    if self.__isIpAvailable(ip):
                        break
                self.nextAvailableIp = ip
            except Exception as e:
                self.nextAvailableIp = None

            print "Pointer will be rebased to: " + self.nextAvailableIp
            self.save()
コード例 #10
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
	def releaseIp(self,ipObj):
		'''
		Releases an IP address of the range (but it does not destroy the object!!)	
		'''
		with MutexStore.getObjectLock(self.getLockIdentifier()):
			ipStr = ipObj.getIp()
			if not self.ips.filter(ip=ipStr,isExcluded=False).count() > 0:
				raise Exception("Cannot release Ip %s. Reason may be is unallocated or is an excluded Ip",ipStr)
					
			self.ips.remove(ipObj)
				
			#Determine new available Ip
			if not self.nextAvailableIp == None:
				if IP4Utils.compareIps(ipStr,self.nextAvailableIp) > 0:
					#Do nothing
					pass
				else:	
					self.nextAvailableIp = ipStr
			else:
				#No more gaps
				self.nextAvailableIp = ipStr

			self.autoSave()
コード例 #11
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
	def removeExcludedIp(self,ipObj):
		'''
		Deletes an IP from the exclusion list (but it does not destroy the object!!)
		'''	
		with MutexStore.getObjectLock(self.getLockIdentifier()):
			ipStr = ipObj.getIp()
			if not self.ips.get(ip=ipStr).isExcludedIp():
				raise Exception("Cannot release Ip. Reason may be is unallocated or is not excluded Ip")
	
			self.ips.remove(ipObj)

			#Determine new available Ip
			if not self.nextAvailableIp == None:
				if IP4Utils.compareIps(ipStr,self.nextAvailableIp) > 0:
					#Do nothing
					pass
				else:	
					self.nextAvailableIp = ipStr
			else:
				#No more gaps
				self.nextAvailableIp = ipStr

	
			self.autoSave()
コード例 #12
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
	def constructor(name,startIp,endIp,netmask,gw,dns1,dns2,isGlobal=True,save=True):
		self = Ip4Range()
		try:
			#Default constructor
			IP4Utils.checkValidIp(startIp) 
			IP4Utils.checkValidIp(endIp) 
			IP4Utils.checkValidNetmask(netmask)
			IP4Utils.checkValidIp(gw)
			IP4Utils.checkValidIp(dns1)
			if not dns2 == "": 
				IP4Utils.checkValidIp(dns2)
		
			self.name = name
			self.isGlobal= isGlobal
			self.startIp = startIp
			self.endIp = endIp
			self.netMask = netmask
			self.gw = gw
			self.dns1 = dns1
			if not dns2 == "":
				self.dns2 = dns2


			#Create an iterator
			it= IP4Utils.getIpIterator(self.startIp,self.endIp,self.netMask)
			self.nextAvailableIp = it.getNextIp()

			#Number of Slots
			try:
				self.numberOfSlots = IP4Utils.getNumberOfSlotsInRange(startIp,endIp,netmask)
			except Exception as e:
				print "Exception doing slot calculation"+str(e)	
				self.numberOfSlots = -1		
	
			self.doSave = save
			if save:
				self.save()
		except Exception as e:
			#self.delete()
			raise e
		return self
コード例 #13
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
        def __setNetmask(self, value):
		IP4Utils.checkValidNetmask(value) 
                self.netMask = value
		self.autoSave()
コード例 #14
0
    def constructor(name,
                    startIp,
                    endIp,
                    netmask,
                    gw,
                    dns1,
                    dns2,
                    isGlobal=True,
                    save=True):
        self = Ip4Range()
        try:
            #Default constructor
            IP4Utils.checkValidIp(startIp)
            IP4Utils.checkValidIp(endIp)
            IP4Utils.checkValidNetmask(netmask)
            IP4Utils.checkValidIp(gw)
            IP4Utils.checkValidIp(dns1)
            if not dns2 == "":
                IP4Utils.checkValidIp(dns2)

            self.name = name
            self.isGlobal = isGlobal
            self.startIp = startIp
            self.endIp = endIp
            self.netMask = netmask
            self.gw = gw
            self.dns1 = dns1
            if not dns2 == "":
                self.dns2 = dns2

            #Create an iterator
            it = IP4Utils.getIpIterator(self.startIp, self.endIp, self.netMask)
            self.nextAvailableIp = it.getNextIp()

            #Number of Slots
            try:
                self.numberOfSlots = IP4Utils.getNumberOfSlotsInRange(
                    startIp, endIp, netmask)
            except Exception as e:
                print "Exception doing slot calculation" + str(e)
                self.numberOfSlots = -1

            self.doSave = save
            if save:
                self.save()
        except Exception as e:
            #self.delete()
            raise e
        return self
コード例 #15
0
 def __setNetmask(self, value):
     IP4Utils.checkValidNetmask(value)
     self.netMask = value
     self.autoSave()
コード例 #16
0
 def __setEndIp(self, value):
     IP4Utils.checkValidIp(value)
     self.endIp = value
     self.autoSave()
コード例 #17
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
        def __setEndIp(self, value):
		IP4Utils.checkValidIp(value) 
                self.endIp = value
		self.autoSave()
コード例 #18
0
 def __setStartIp(self, value):
     IP4Utils.checkValidIp(value)
     self.startIp = value
     self.autoSave()
コード例 #19
0
ファイル: Ip4Range.py プロジェクト: HalasNet/felix
        def __setStartIp(self, value):
		IP4Utils.checkValidIp(value) 
                self.startIp = value
		self.autoSave()