From b26d0af708a2ac7076e763163acc3b1c9f9cc052 Mon Sep 17 00:00:00 2001 From: alberts Date: Tue, 6 May 2014 15:34:58 +0200 Subject: [PATCH] feature delete group folder when folder is empty --- .../services/CatalogManager.java | 2 ++ .../impl/CatalogManagerMongoImpl.java | 10 ++++++++ .../services/impl/FileAccessServiceImpl.java | 8 ++++++ .../tests/CatalogManagerMongoTest.java | 25 +++++++++++++++++++ .../services/tests/FileAccessServiceTest.java | 2 ++ 5 files changed, 47 insertions(+) diff --git a/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/CatalogManager.java b/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/CatalogManager.java index 3d3b1370..51bc3e01 100644 --- a/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/CatalogManager.java +++ b/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/CatalogManager.java @@ -44,4 +44,6 @@ public interface CatalogManager { public String generateSiteStr(); public void removeNodesByGroupName(String groupName); + + public boolean isLastGroupNode(String groupName); } diff --git a/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/CatalogManagerMongoImpl.java b/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/CatalogManagerMongoImpl.java index 4e17d716..3d0ad613 100644 --- a/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/CatalogManagerMongoImpl.java +++ b/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/CatalogManagerMongoImpl.java @@ -111,6 +111,16 @@ public void removeNodesByGroupName(String groupName) { mongoTemplate.remove(searchNodeQuery, Node.class); } + + public boolean isLastGroupNode(String groupName) { + Query searchNodeQuery = new Query(Criteria.where("groupName").is(groupName)); + List nodeList = mongoTemplate.find(searchNodeQuery, Node.class); + if(nodeList!= null && nodeList.size()==1){ + return true; + }else{ + return false; + } + } // public void setMongoTemplate(MongoTemplate mongoTemplate) { // this.mongoTemplate = mongoTemplate; diff --git a/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/FileAccessServiceImpl.java b/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/FileAccessServiceImpl.java index c4b46b1e..6bbed05b 100644 --- a/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/FileAccessServiceImpl.java +++ b/puppet-wrapper/src/main/java/com/telefonica/euro_iaas/sdc/puppetwrapper/services/impl/FileAccessServiceImpl.java @@ -134,6 +134,12 @@ public void deleteNodeFiles(String nodeName) throws IOException { if (!file.delete()) { logger.info(format("File {0} could not be deleted. Did it exist?", path + "/" + node.getId() + ".pp")); + }else{ + logger.info(format("File {0} deleted.", path + "/" + node.getId() + ".pp")); + } + + if(catalogManager.isLastGroupNode(node.getGroupName())){ + deleteGoupFolder(node.getGroupName()); } } catch (NoSuchElementException e) { @@ -147,6 +153,8 @@ public void deleteGoupFolder(String groupName) throws IOException { File path = new File(defaultManifestsPath + groupName); FileUtils.deleteDirectory(path); + + logger.info(format("Folder {0} deleted.", path + "/" + groupName)); } @Override diff --git a/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/CatalogManagerMongoTest.java b/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/CatalogManagerMongoTest.java index b5fa55d2..780e2577 100644 --- a/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/CatalogManagerMongoTest.java +++ b/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/CatalogManagerMongoTest.java @@ -25,6 +25,7 @@ package com.telefonica.euro_iaas.sdc.pupperwrapper.services.tests; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.mockito.Matchers.anyObject; @@ -103,6 +104,16 @@ public void setUp() { } }); + Query queryFindOK = new Query(Criteria.where("groupName").is("groupNameOK")); + when(mongoTemplateMock.find(queryFindOK, Node.class)).thenReturn(new ArrayList() { + { + add(node); + } + }); + + Query queryFindErr = new Query(Criteria.where("groupName").is("groupNameErr")); + when(mongoTemplateMock.find(queryFindErr, Node.class)).thenReturn(null); + } @Test(expected = NoSuchElementException.class) @@ -194,4 +205,18 @@ public void removeNodesByGroupNameTest() { assertTrue(catalogManagerMongo.getNodeLength() == 3); } + + @Test + public void isLastGroupNodeTestOK(){ + + assertTrue(catalogManagerMongo.isLastGroupNode("groupNameOK")); + + } + + @Test + public void isLastGroupNodeTestFail(){ + + assertFalse(catalogManagerMongo.isLastGroupNode("groupNameErr")); + + } } diff --git a/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/FileAccessServiceTest.java b/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/FileAccessServiceTest.java index 1b172cba..d31e4092 100644 --- a/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/FileAccessServiceTest.java +++ b/puppet-wrapper/src/test/java/com/telefonica/euro_iaas/sdc/pupperwrapper/services/tests/FileAccessServiceTest.java @@ -100,6 +100,8 @@ public void setUp(){ when(catalogManager.generateSiteStr()).thenReturn("site.pp content"); when(catalogManager.generateManifestStr("test")).thenReturn("manifest test1 content"); when(catalogManager.generateManifestStr("test2")).thenReturn("manifest test2 content"); + + when(catalogManager.isLastGroupNode("group")).thenReturn(false).thenReturn(true); } @Test