def cleanupOrphanedPackages(checkAge = False): ''' API to cleanup Orphaned Packages For All Services ''' from agent.controllers.service import ServiceController #services = os.listdir(service_nodes) from agent.controllers.manifest import ManifestController #import pdb;pdb.set_trace() services = ServiceController.getServices() service_nodes = ServiceController.serviceRootPath() linkedPaths = [] sysServices = ['agent'] LOG.info('Garbage collecting orphaned installed packages') for service in services: try: if service in sysServices: LOG.debug('system services cannot be garbage collected') else: servicePath = os.path.join(service_nodes, service) installedPkgPath = os.path.join(servicePath, 'installed-packages') linkedPaths.extend(ManifestController.getAllSymLinks(service)) linkedPaths.extend(manifestutil.getModuleSymLinks(service)) LOG.debug('symLinks returned %s' % linkedPaths) installedPkgPaths = PackageUtil.getAllInstalledPackages(installedPkgPath) LOG.debug('installedPkgPaths returned for the service %s' % installedPkgPaths) if len(installedPkgPaths) > 0: orphanPkgs = set(installedPkgPaths) - set(linkedPaths) LOG.debug('orphanPkgs returned %s' % orphanPkgs) PackageUtil.cleanupInstalledPkgs(installedPkgPath, orphanPkgs) except BaseException as excep: LOG.error('Failed to proceed with garbage collection %s' % str(excep)) # agent-804, manifests only contains folders, need to delete if file is in manifests servicePath = os.path.join(service_nodes, service) if not os.path.isdir(servicePath): utils.runsyscmd('rm -f %s' % servicePath) LOG.info('Garbage collecting orphaned installed packages completed')
def test_getAllSymLinks(self): #import pdb; #pdb.set_trace() serviceName = '.sbe.appService.SI1' manifestName = 'manifestA' try: createManifest(self, packages = ["http://github.com/yubin154/cronusagent/blob/master/agent/agent/tests/unit/packages/pkgA-1.2.0.unix.cronus", "http://github.com/yubin154/cronusagent/blob/master/agent/agent/tests/unit/packages/pkgB-0.6.0.unix.cronus"], service = serviceName, manifest = manifestName) except Exception as ex: print 'exception thrown during mf' symLinks = ManifestController.getAllSymLinks(serviceName) """ return all the symlinks from manifests to packages for a given service""" LOG.debug('calling getAllSymLinks') #serviceName = '.sbe.appService.SI1' linkedPaths = [] #pdb.set_trace() #manPath = '/ebay/srengarajan/e2e/local-deploy/service_nodes/.sbe.appService.SI1/manifests' installedPkgPath = os.path.join(ServiceController.servicePath(serviceName), 'installed-packages') pathToPkgA = os.path.join(installedPkgPath, 'pkgA') pathToPkgA120 = os.path.join(pathToPkgA, '1.2.0.unix') pathToPkgB = os.path.join(installedPkgPath, 'pkgB') pathToPkgB060 = os.path.join(pathToPkgB, '0.6.0.unix') bitmap = 0 for path in symLinks: if path.find(pathToPkgA120) >= 0: self.assertTrue(os.path.isdir(path)) bitmap |= 1 elif path.find(pathToPkgB060) >= 0: self.assertTrue(os.path.isdir(path)) bitmap |= 2 self.assertEquals(3, bitmap)
def cleanupOrphanedPackages(checkAge=False): ''' API to cleanup Orphaned Packages For All Services ''' from agent.controllers.service import ServiceController #services = os.listdir(service_nodes) from agent.controllers.manifest import ManifestController #import pdb;pdb.set_trace() services = ServiceController.getServices() service_nodes = ServiceController.serviceRootPath() linkedPaths = [] sysServices = ['agent'] LOG.info('Garbage collecting orphaned installed packages') for service in services: try: if service in sysServices: LOG.debug('system services cannot be garbage collected') else: servicePath = os.path.join(service_nodes, service) installedPkgPath = os.path.join(servicePath, 'installed-packages') linkedPaths.extend( ManifestController.getAllSymLinks(service)) linkedPaths.extend(manifestutil.getModuleSymLinks(service)) LOG.debug('symLinks returned %s' % linkedPaths) installedPkgPaths = PackageUtil.getAllInstalledPackages( installedPkgPath) LOG.debug('installedPkgPaths returned for the service %s' % installedPkgPaths) if len(installedPkgPaths) > 0: orphanPkgs = set(installedPkgPaths) - set(linkedPaths) LOG.debug('orphanPkgs returned %s' % orphanPkgs) PackageUtil.cleanupInstalledPkgs( installedPkgPath, orphanPkgs) except BaseException as excep: LOG.error('Failed to proceed with garbage collection %s' % str(excep)) # agent-804, manifests only contains folders, need to delete if file is in manifests servicePath = os.path.join(service_nodes, service) if not os.path.isdir(servicePath): utils.runsyscmd('rm -f %s' % servicePath) LOG.info('Garbage collecting orphaned installed packages completed')