From 82899d3a3e8bd74341f474f317972fb10b8611a9 Mon Sep 17 00:00:00 2001
From: Alexander Lovett <alexander.lovett@geant.org>
Date: Thu, 5 Mar 2020 14:41:26 +0000
Subject: [PATCH] [LGR-73] - Remove router end point

---
 CHANGELOG.md                                  |  5 +-
 pom.xml                                       | 34 +---------
 .../org/geant/lgservice/config/AppConfig.java | 12 ----
 .../org/geant/lgservice/model/Equipment.java  | 67 -------------------
 .../org/geant/lgservice/pojos/Router.java     | 26 +------
 .../repository/EquipmentRepository.java       | 10 ---
 .../rest/LookingGlassRestController.java      | 12 ----
 .../services/LookingGlassService.java         |  2 -
 .../services/LookingGlassServiceImpl.java     |  5 --
 .../lgservice/utils/LookingGlassHelper.java   | 37 ----------
 .../ecmr/CallableCommandExecutorTest.java     | 18 +++--
 .../services/LookingGlassServiceImplTest.java | 21 +++---
 12 files changed, 31 insertions(+), 218 deletions(-)
 delete mode 100755 src/main/java/org/geant/lgservice/model/Equipment.java
 delete mode 100755 src/main/java/org/geant/lgservice/repository/EquipmentRepository.java

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 25a056c..9bb86c1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,7 @@
-* 2.0.13
+# 2.0.14
+* [LGR-73](https://jira.software.geant.org/browse/LGR-73) - Remove router endpoint
+
+# 2.0.13
 * [LGR-70](https://jira.software.geant.org/browse/LGR-70) - Pull UI out of jar
 
 # 2.0.12
diff --git a/pom.xml b/pom.xml
index 1dd100d..9baf244 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 
 	<groupId>org.geant</groupId>
 	<artifactId>looking-glass-service</artifactId>
-	<version>2.0.13.RELEASE</version>
+	<version>2.0.14-SNAPSHOT</version>
 	<packaging>jar</packaging>
 
     <name>looking-glass-service</name>
@@ -25,25 +25,6 @@
         <java.version>1.8</java.version>
     </properties>
 
-    <scm>
-        <developerConnection>scm:git:https://gitlab.geant.net/live-projects/looking-glass-service.git
-        </developerConnection>
-        <tag>HEAD</tag>
-    </scm>
-
-    <distributionManagement>
-        <repository>
-            <id>looking-glass-releases</id>
-            <name>GEANT Artifactory-releases</name>
-            <url>https://artifactory.geant.net:443/artifactory/lg-release-local</url>
-        </repository>
-        <snapshotRepository>
-            <id>looking-glass-snapshots</id>
-            <name>GEANT Artifactory-snapshots</name>
-            <url>https://artifactory.geant.net:443/artifactory/lg-snapshot-local</url>
-        </snapshotRepository>
-    </distributionManagement>
-
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -59,19 +40,6 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-rest</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/org/geant/lgservice/config/AppConfig.java b/src/main/java/org/geant/lgservice/config/AppConfig.java
index 1471630..254b775 100644
--- a/src/main/java/org/geant/lgservice/config/AppConfig.java
+++ b/src/main/java/org/geant/lgservice/config/AppConfig.java
@@ -30,18 +30,6 @@ public class AppConfig implements Serializable {
 
 	@Value("${configuration.publickey.keyfile}")
 	private String keyFile;
-
-	@Value("${spring.datasource.username}")
-	private String dbUsername;
-
-	@Value("${spring.datasource.password}")
-	private String dbPassword;
-
-	@Value("${spring.datasource.url}")
-	private String dbURL;
-
-	@Value("${spring.datasource.driverClassName}")
-	private String dbDriverClassName;
 	
 	@Value("${saml.metadata-url}")
 	private String metadataURL;
diff --git a/src/main/java/org/geant/lgservice/model/Equipment.java b/src/main/java/org/geant/lgservice/model/Equipment.java
deleted file mode 100755
index c08a815..0000000
--- a/src/main/java/org/geant/lgservice/model/Equipment.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.geant.lgservice.model;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.geant.lgservice.pojos.Coordinates;
-import org.geant.lgservice.pojos.Router;
-
-@Data
-@Entity()
-@NoArgsConstructor
-@AllArgsConstructor
-@Table(name = "vlg_routers")
-public class Equipment {
-
-	@Id
-	@Column(name = "router_absid")
-	private int routerAbsid;
-
-	@Column(name = "router_name")
-	private String routerName;
-	
-	@Column(name = "pop_absid")
-	private int popAbsid;
-	
-	@Column(name = "pop_name")
-	private String popName;
-	
-	@Column(name = "pop_lat")
-	private String popLat;
-	
-	@Column(name = "pop_long")
-	private String popLong;
-	
-	@Column(name = "pop_country_code")
-	private String popCountryCode;
-	
-	@Column(name = "pop_country")
-	private String popCountry;
-	
-	@Column(name = "pop_city")
-	private String popCity;
-
-	@Column(name = "internal")
-	private String internal;
-
-	@Column(name = "pop_abbrev")
-	private String popAbbrev;
-
-	public Router toDomain() {
-		return Router.builder()
-				.abbreviatedName(popAbbrev)
-				.city(popCity)
-				.coordinates(new Coordinates(popLat, popLong))
-				.name(routerName)
-				.popCountryCode(popCountryCode)
-				.country(popCountry)
-				.popName(popName)
-				.build();
-	}
-
-}
diff --git a/src/main/java/org/geant/lgservice/pojos/Router.java b/src/main/java/org/geant/lgservice/pojos/Router.java
index 19ee044..6975c43 100644
--- a/src/main/java/org/geant/lgservice/pojos/Router.java
+++ b/src/main/java/org/geant/lgservice/pojos/Router.java
@@ -1,32 +1,10 @@
 package org.geant.lgservice.pojos;
 
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.Getter;
 
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@Builder
+@Getter
 public class Router {
 
-	private Coordinates coordinates;
-
 	private String name;
 
-	private String authType;
-
-	private String city;
-
-	private String country;
-
-	private String popName;
-	
-	private String popCountryCode;
-	
-	private boolean selected;
-
-	private String abbreviatedName;
-
 }
diff --git a/src/main/java/org/geant/lgservice/repository/EquipmentRepository.java b/src/main/java/org/geant/lgservice/repository/EquipmentRepository.java
deleted file mode 100755
index 058a2c6..0000000
--- a/src/main/java/org/geant/lgservice/repository/EquipmentRepository.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.geant.lgservice.repository;
-
-import org.geant.lgservice.model.Equipment;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface EquipmentRepository extends CrudRepository<Equipment, Integer> {
-
-}
diff --git a/src/main/java/org/geant/lgservice/rest/LookingGlassRestController.java b/src/main/java/org/geant/lgservice/rest/LookingGlassRestController.java
index 8e86c0a..94973e0 100644
--- a/src/main/java/org/geant/lgservice/rest/LookingGlassRestController.java
+++ b/src/main/java/org/geant/lgservice/rest/LookingGlassRestController.java
@@ -10,7 +10,6 @@ import org.geant.lgservice.pojos.CommandOutput;
 import org.geant.lgservice.pojos.Group;
 import org.geant.lgservice.pojos.QueryInputRequest;
 import org.geant.lgservice.pojos.QueryResponse;
-import org.geant.lgservice.pojos.Router;
 import org.geant.lgservice.security.LGUser;
 import org.geant.lgservice.services.BuildService;
 import org.geant.lgservice.services.LookingGlassService;
@@ -51,17 +50,6 @@ public class LookingGlassRestController {
 		return ResponseEntity.ok(commands);
 	}
 
-	@GetMapping(value = "/routers/all")
-	public ResponseEntity<?> getAllRouters() {
-		LGUser currentUser = null;
-		Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-		if (principal instanceof LGUser) {
-			currentUser = (LGUser) principal;
-		}
-		List<Router> routers = service.getAllRouters(currentUser);
-		return ResponseEntity.ok(routers);
-	}
-
 	@GetMapping(value = "/user/getLoggedInUser")
 	public ResponseEntity<?> getLoggedInUser() {
 		Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
diff --git a/src/main/java/org/geant/lgservice/services/LookingGlassService.java b/src/main/java/org/geant/lgservice/services/LookingGlassService.java
index fb565f7..ee92c9d 100644
--- a/src/main/java/org/geant/lgservice/services/LookingGlassService.java
+++ b/src/main/java/org/geant/lgservice/services/LookingGlassService.java
@@ -11,8 +11,6 @@ import org.geant.lgservice.security.LGUser;
 
 public interface LookingGlassService {
 
-	List<Router> getAllRouters(final LGUser user);
-	
 	List<Group> getAllCommands(final LGUser user);
 
 	Map<String, CommandOutput> submitQuery(final List<Router> selectedRouters, final Command selectedCommand,
diff --git a/src/main/java/org/geant/lgservice/services/LookingGlassServiceImpl.java b/src/main/java/org/geant/lgservice/services/LookingGlassServiceImpl.java
index 2965cdd..ab6ac1a 100644
--- a/src/main/java/org/geant/lgservice/services/LookingGlassServiceImpl.java
+++ b/src/main/java/org/geant/lgservice/services/LookingGlassServiceImpl.java
@@ -30,11 +30,6 @@ public class LookingGlassServiceImpl implements LookingGlassService {
 		return lookingGlassHelper.loadAllCommands(user);
 	}
 
-	@Override
-	public List<Router> getAllRouters(final LGUser user) {
-		return lookingGlassHelper.loadAllRouters(user);
-	}
-
 	@Override
 	public Map<String, CommandOutput> submitQuery(final List<Router> selectedRouters, final Command selectedCommand,
 			final String arguments, final boolean displayAsXML) {
diff --git a/src/main/java/org/geant/lgservice/utils/LookingGlassHelper.java b/src/main/java/org/geant/lgservice/utils/LookingGlassHelper.java
index 8078d98..11a5f49 100755
--- a/src/main/java/org/geant/lgservice/utils/LookingGlassHelper.java
+++ b/src/main/java/org/geant/lgservice/utils/LookingGlassHelper.java
@@ -1,57 +1,20 @@
 package org.geant.lgservice.utils;
 
 import java.util.*;
-import java.util.stream.Collectors;
-import java.util.stream.StreamSupport;
 
 import org.geant.lgservice.config.CommandsParser;
-import org.geant.lgservice.model.Equipment;
-import org.geant.lgservice.pojos.Coordinates;
 import org.geant.lgservice.pojos.Group;
-import org.geant.lgservice.pojos.Router;
-import org.geant.lgservice.repository.EquipmentRepository;
 import org.geant.lgservice.security.LGUser;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import static java.util.Spliterator.ORDERED;
 import static java.util.Spliterators.spliteratorUnknownSize;
 import static java.util.stream.StreamSupport.stream;
-import static org.geant.lgservice.utils.LGRole.INTERNAL;
 
 @Component
 public class LookingGlassHelper {
 
 	public static final String COMMANDS_FILE_NAME = "commands";
 
-	@Autowired
-	private EquipmentRepository equipmentRepo;
-
-	public List<Router> loadAllRouters(final LGUser user) {
-		final boolean internalRoutersAvailable =
-				Optional.ofNullable(user)
-					.map(LGUser::getRole)
-					.filter(INTERNAL::equals)
-					.isPresent();
-
-
-		return stream(equipmentRepo.findAll().spliterator(), false)
-				.filter(equipment -> isValidRouter(internalRoutersAvailable, equipment))
-				.map(Equipment::toDomain)
-				.collect(Collectors.toList());
-	}
-
-	private boolean isValidRouter(final Boolean showInternalRouters, final Equipment equipment) {
-		if (showInternalRouters) {
-			return true;
-		} else {
-			if (equipment.getInternal().equals("no")) {
-				return true;
-			}
-		}
-		return false;
-	}
-
 	public List<Group> loadAllCommands(final LGUser user) {
 		return new CommandsParser().getCommandsFromXML(COMMANDS_FILE_NAME, user);
 	}
diff --git a/src/test/java/org/geant/lgservice/ecmr/CallableCommandExecutorTest.java b/src/test/java/org/geant/lgservice/ecmr/CallableCommandExecutorTest.java
index 610bec5..34da57a 100644
--- a/src/test/java/org/geant/lgservice/ecmr/CallableCommandExecutorTest.java
+++ b/src/test/java/org/geant/lgservice/ecmr/CallableCommandExecutorTest.java
@@ -2,8 +2,11 @@ package org.geant.lgservice.ecmr;
 
 import static org.junit.Assert.assertEquals;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.SneakyThrows;
 import org.geant.lgservice.pojos.Command;
 import org.geant.lgservice.pojos.Router;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -15,11 +18,18 @@ public class CallableCommandExecutorTest {
 
 	public static final String TEST_ROUTER = "test-router.geant.net";
 	public static final String TEST_COMMAND = "ping 25";
+	public static final String TEST_ROUTER_JSON = String.format("{\"name\":\"%s\"}", TEST_ROUTER);
+	private static final ObjectMapper MAPPER = new ObjectMapper();
+	private Router router;
+
+	@Before
+	@SneakyThrows
+	public void setup() {
+		router =  MAPPER.readValue(TEST_ROUTER_JSON, Router.class);
+	}
 
 	@Test
 	public void testGetCommandWithArgumentsXML() {
-		Router router = new Router();
-		router.setName(TEST_ROUTER);
 		Command command = new Command();
 		command.setValue(TEST_COMMAND);
 		command.setRequiresParams(true);
@@ -30,8 +40,6 @@ public class CallableCommandExecutorTest {
 
 	@Test
 	public void testGetCommandWithoutArgumentsXML() {
-		Router router = new Router();
-		router.setName(TEST_ROUTER);
 		Command command = new Command();
 		command.setValue(TEST_COMMAND);
 		command.setRequiresParams(false);
@@ -42,8 +50,6 @@ public class CallableCommandExecutorTest {
 
 	@Test
 	public void testGetCommandWithoutArguments() {
-		Router router = new Router();
-		router.setName(TEST_ROUTER);
 		Command command = new Command();
 		command.setValue(TEST_COMMAND);
 		command.setRequiresParams(false);
diff --git a/src/test/java/org/geant/lgservice/services/LookingGlassServiceImplTest.java b/src/test/java/org/geant/lgservice/services/LookingGlassServiceImplTest.java
index ba313f7..31ed37f 100644
--- a/src/test/java/org/geant/lgservice/services/LookingGlassServiceImplTest.java
+++ b/src/test/java/org/geant/lgservice/services/LookingGlassServiceImplTest.java
@@ -1,15 +1,13 @@
 package org.geant.lgservice.services;
 
-import org.assertj.core.api.Assertions;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import lombok.SneakyThrows;
 import org.geant.lgservice.ecmr.CommandExecutor;
 import org.geant.lgservice.pojos.Command;
 import org.geant.lgservice.pojos.CommandOutput;
-import org.geant.lgservice.pojos.Coordinates;
 import org.geant.lgservice.pojos.Router;
-import org.hibernate.result.Output;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mockito;
 
 import java.util.Collections;
 import java.util.Map;
@@ -17,25 +15,30 @@ import java.util.Map;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.when;
 
 public class LookingGlassServiceImplTest {
 
+    public static final String TEST_ROUTER_JSON = "{\"name\":\"router.geant.org\"}";
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+
     private CommandExecutor commandExecutor = mock(CommandExecutor.class);
 
     private LookingGlassServiceImpl subject = new LookingGlassServiceImpl(null, commandExecutor);
 
+    private Router router;
+
     @Before
+    @SneakyThrows
     public void setup() {
         reset(commandExecutor);
+        router = MAPPER.readValue(TEST_ROUTER_JSON, Router.class);
     }
 
     @Test
     public void testQuery() {
-        Router router = Router.builder()
-                .name("router.geant.org")
-                .build();
-
         Command command = new Command();
         String arguments = "some args";
 
-- 
GitLab