Skip to content
Snippets Groups Projects
Commit da05f1a8 authored by Martin Weise's avatar Martin Weise
Browse files

swagger ui not working

parent 25fb4743
No related branches found
No related tags found
3 merge requests!23Sprint results,!10Revert bdb79ac5,!9Resolve "Refactoring: Backend Endpoints"
Showing with 65 additions and 18 deletions
package at.tuwien.api.dto.container; package at.tuwien.api.dto.container;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.time.Instant;
@Getter @Getter
@Setter @Setter
@Builder
public class DatabaseContainerBriefDto { public class DatabaseContainerBriefDto {
private String id; private String id;
private Instant created;
} }
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
<mapstruct.version>1.4.2.Final</mapstruct.version> <mapstruct.version>1.4.2.Final</mapstruct.version>
<docker.version>3.2.7</docker.version> <docker.version>3.2.7</docker.version>
<testcontainers.version>1.15.2</testcontainers.version> <testcontainers.version>1.15.2</testcontainers.version>
<swagger.version>2.8.0</swagger.version>
</properties> </properties>
<dependencies> <dependencies>
......
...@@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; ...@@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication @SpringBootApplication
@EnableJpaAuditing @EnableJpaAuditing
@EnableJpaRepositories(basePackages = {"at.tuwien.repository"}) @EnableJpaRepositories(basePackages = {"at.tuwien.repository"})
@EntityScan(basePackages = {"at.tuwien.entities"}) @EntityScan(basePackages = {"at.tuwien.entity"})
@EnableSwagger2 @EnableSwagger2
public class FdaContainerManagingApplication { public class FdaContainerManagingApplication {
......
...@@ -8,10 +8,12 @@ import springfox.documentation.service.ApiInfo; ...@@ -8,10 +8,12 @@ import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact; import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.Collections; import java.util.Collections;
@Configuration @Configuration
@EnableSwagger2
public class SwaggerConfig { public class SwaggerConfig {
@Bean @Bean
public Docket swaggerConfiguration() { public Docket swaggerConfiguration() {
...@@ -19,7 +21,7 @@ public class SwaggerConfig { ...@@ -19,7 +21,7 @@ public class SwaggerConfig {
return new Docket(DocumentationType.SWAGGER_2) return new Docket(DocumentationType.SWAGGER_2)
.select() .select()
.paths(PathSelectors.ant("/api/*")) .paths(PathSelectors.ant("/api/*"))
.apis(RequestHandlerSelectors.basePackage("at.tuwien.controller")) .apis(RequestHandlerSelectors.basePackage("at.tuwien.endpoints"))
.build() .build()
.apiInfo(apiInfo()); .apiInfo(apiInfo());
} }
......
package at.tuwien.endpoints; package at.tuwien.endpoints;
import at.tuwien.api.dto.container.ContainerActionTypeDto; import at.tuwien.api.dto.container.ContainerChangeDto;
import at.tuwien.api.dto.container.DatabaseContainerBriefDto; import at.tuwien.api.dto.container.DatabaseContainerBriefDto;
import at.tuwien.api.dto.container.DatabaseContainerDto; import at.tuwien.api.dto.container.DatabaseContainerDto;
import at.tuwien.api.dto.database.DatabaseContainerCreateResponseDto; import at.tuwien.api.dto.database.DatabaseContainerCreateResponseDto;
import at.tuwien.api.dto.database.DatabaseContainerCreateRequestDto; import at.tuwien.api.dto.database.DatabaseContainerCreateRequestDto;
import at.tuwien.entity.DatabaseContainer; import at.tuwien.entity.DatabaseContainer;
import at.tuwien.exception.ContainerNotFoundException; import at.tuwien.exception.ContainerNotFoundException;
import at.tuwien.exception.DockerClientException;
import at.tuwien.exception.ImageNotFoundException; import at.tuwien.exception.ImageNotFoundException;
import at.tuwien.mapper.DatabaseContainerMapper; import at.tuwien.mapper.DatabaseContainerMapper;
import at.tuwien.service.ContainerService; import at.tuwien.service.ContainerService;
...@@ -20,6 +21,8 @@ import org.springframework.web.bind.annotation.*; ...@@ -20,6 +21,8 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static at.tuwien.api.dto.container.ContainerActionTypeDto.*;
@Log4j2 @Log4j2
@RestController @RestController
@RequestMapping("/api") @RequestMapping("/api")
...@@ -27,14 +30,11 @@ public class DatabaseContainerController { ...@@ -27,14 +30,11 @@ public class DatabaseContainerController {
private final ContainerService containerService; private final ContainerService containerService;
private final DatabaseContainerMapper containerMapper; private final DatabaseContainerMapper containerMapper;
private final DatabaseContainerMapper databaseContaineMapper;
@Autowired @Autowired
public DatabaseContainerController(ContainerService containerService, DatabaseContainerMapper containerMapper, public DatabaseContainerController(ContainerService containerService, DatabaseContainerMapper containerMapper) {
DatabaseContainerMapper databaseContaineMapper) {
this.containerMapper = containerMapper; this.containerMapper = containerMapper;
this.containerService = containerService; this.containerService = containerService;
this.databaseContaineMapper = databaseContaineMapper;
} }
@GetMapping("/database") @GetMapping("/database")
...@@ -43,7 +43,7 @@ public class DatabaseContainerController { ...@@ -43,7 +43,7 @@ public class DatabaseContainerController {
final List<DatabaseContainer> containers = containerService.getAll(); final List<DatabaseContainer> containers = containerService.getAll();
return ResponseEntity.ok() return ResponseEntity.ok()
.body(containers.stream() .body(containers.stream()
.map(databaseContaineMapper::databaseContainerToDataBaseContainerBriefDto) .map(containerMapper::databaseContainerToDataBaseContainerBriefDto)
.collect(Collectors.toList())); .collect(Collectors.toList()));
} }
...@@ -62,13 +62,25 @@ public class DatabaseContainerController { ...@@ -62,13 +62,25 @@ public class DatabaseContainerController {
public ResponseEntity<DatabaseContainerDto> findById(@RequestParam String id) throws ContainerNotFoundException { public ResponseEntity<DatabaseContainerDto> findById(@RequestParam String id) throws ContainerNotFoundException {
final DatabaseContainer container = containerService.getById(id); final DatabaseContainer container = containerService.getById(id);
return ResponseEntity.ok() return ResponseEntity.ok()
.body(databaseContaineMapper.databaseContainerToDataBaseContainerDto(container)); .body(containerMapper.databaseContainerToDataBaseContainerDto(container));
} }
@PutMapping("/database/{id}") @PutMapping("/database/{id}")
@ApiOperation("Update a database container") @ApiOperation("Update a database container")
public ResponseEntity<DatabaseContainerBriefDto> change(@RequestParam String id, @RequestBody ContainerActionTypeDto data) { public ResponseEntity<DatabaseContainerBriefDto> change(@RequestParam String id, @RequestBody ContainerChangeDto changeDto) throws ContainerNotFoundException, DockerClientException {
return ResponseEntity.status(HttpStatus.ACCEPTED).build(); final DatabaseContainer container;
if (changeDto.getAction().equals(START)) {
container = containerService.start(id);
} else if (changeDto.getAction().equals(STOP)) {
container = containerService.stop(id);
} else if (changeDto.getAction().equals(REMOVE)) {
container = containerService.remove(id);
} else {
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.build();
}
return ResponseEntity.status(HttpStatus.ACCEPTED)
.body(containerMapper.databaseContainerToDataBaseContainerBriefDto(container));
} }
@DeleteMapping("/database/{id}") @DeleteMapping("/database/{id}")
......
spring:
main.banner-mode: off
datasource:
url: jdbc:postgresql://localhost:5432/fda
driver-class-name: org.postgresql.Driver
username: postgres
password: postgres
jpa:
show-sql: true
properties:
hibernate:
ddl-auto: create-drop
dialect: org.hibernate.dialect.PostgreSQLDialect
hibernate.ddl-auto: none
hibernate.show-sql: true
application:
name: fda-container-managing
server.port: 9091
logging:
pattern.console: "%d %highlight(%-5level) %msg%n"
level:
root: warn
at.: debug
eureka:
client:
registerWithEureka: false
fetchRegistry: false
\ No newline at end of file
...@@ -3,7 +3,9 @@ package at.tuwien.config; ...@@ -3,7 +3,9 @@ package at.tuwien.config;
import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.model.HostConfig; import com.github.dockerjava.api.model.HostConfig;
import com.github.dockerjava.api.model.RestartPolicy; import com.github.dockerjava.api.model.RestartPolicy;
import com.github.dockerjava.core.DefaultDockerClientConfig;
import com.github.dockerjava.core.DockerClientBuilder; import com.github.dockerjava.core.DockerClientBuilder;
import com.github.dockerjava.core.DockerClientConfig;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -18,6 +20,10 @@ public class DockerConfig { ...@@ -18,6 +20,10 @@ public class DockerConfig {
@Bean @Bean
public DockerClient dockerClientConfiguration() { public DockerClient dockerClientConfiguration() {
return DockerClientBuilder.getInstance("unix:///var/run/docker.sock").build(); final DockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder()
.withDockerHost("unix:///var/run/docker.sock")
.build();
return DockerClientBuilder.getInstance(config)
.build();
} }
} }
...@@ -122,16 +122,16 @@ public class ContainerService { ...@@ -122,16 +122,16 @@ public class ContainerService {
* Starts a database container by given container ID * Starts a database container by given container ID
* *
* @param containerId The container ID * @param containerId The container ID
* @return True if state changed * @return The container
*/ */
public boolean start(String containerId) throws ContainerNotFoundException, DockerClientException { public DatabaseContainer start(String containerId) throws ContainerNotFoundException, DockerClientException {
final DatabaseContainer container = getById(containerId); final DatabaseContainer container = getById(containerId);
try { try {
dockerClient.startContainerCmd(container.getContainerId()).exec(); dockerClient.startContainerCmd(container.getContainerId()).exec();
} catch (NotFoundException | NotModifiedException e) { } catch (NotFoundException | NotModifiedException e) {
throw new DockerClientException("docker client failed", e); throw new DockerClientException("docker client failed", e);
} }
return true; return container;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment