예제 #1
0
파일: l3Clos.py 프로젝트: Juniper/OpenClos
 def _validateManagementPrefix(self, pod, podDict, inventoryData):
     inventoryDeviceCount = len(inventoryData['spines']) + len(inventoryData['leafs'])
     prefix = podDict.get('managementPrefix')
     startingIp = podDict.get('managementStartingIP')
     mask = podDict.get('managementMask')
     managementIps = util.getMgmtIps(prefix, startingIp, mask, inventoryDeviceCount)
     availableIps = len(managementIps)
     cidr = 32 - int(math.ceil(math.log(inventoryDeviceCount, 2)))
     if availableIps < inventoryDeviceCount:
         if startingIp is not None:
             firstIp = startingIp
         elif prefix is not None:
             firstIp = prefix.split('/')[0]
         raise InsufficientManagementIp("Pod[id='%s', name='%s']: managementPrefix minimum required: %s/%d" % (pod.id, pod.name, firstIp, cidr))
예제 #2
0
파일: l3Clos.py 프로젝트: Juniper/OpenClos
 def _allocateManagement(self, session, managementPrefix, managementStartingIP, managementMask, spines, leaves):
     deviceCount = len(spines)+len(leaves)
     managementIps = util.getMgmtIps(managementPrefix, managementStartingIP, managementMask, deviceCount)
     # don't do partial allocation
     if len(managementIps) == deviceCount:
         for spine, managementIp in zip(spines, managementIps[:len(spines)]):
             spine.managementIp = managementIp
         self._dao.updateObjects(session, spines)
         
         # for 2stage and leaf, don' fill in management ip
         if self.isZtpStaged == False:
             for leaf, managementIp in zip(leaves, managementIps[len(spines):]):
                 leaf.managementIp = managementIp
             self._dao.updateObjects(session, leaves)
예제 #3
0
파일: l3Clos.py 프로젝트: codyrat/OpenClos
 def _validateManagementPrefix(self, pod, podDict, inventoryData):
     inventoryDeviceCount = len(inventoryData['spines']) + len(inventoryData['leafs'])
     managementIps = util.getMgmtIps(podDict.get('managementPrefix'), podDict.get('managementStartingIP'), podDict.get('managementMask'), inventoryDeviceCount)
     availableIps = len(managementIps)
     if availableIps < inventoryDeviceCount:
         raise ValueError("Pod[id='%s', name='%s']: managementPrefix avaiable IPs %d not enough: required %d" % (pod.id, pod.name, availableIps, inventoryDeviceCount))