Commit 82262c27 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Implemented logic for retrieving list of groups and users from GMS and RAP and...

Implemented logic for retrieving list of groups and users from GMS and RAP and updating the groupRead and groupWrite properties creating the single-user groups when needed
parent ccca519e
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -55,6 +55,11 @@
            <artifactId>mockito-inline</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>gms-client</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <profiles>
+20 −0
Original line number Diff line number Diff line
package it.inaf.ia2.vospace.ui;

import it.inaf.ia2.aa.AuthConfig;
import it.inaf.ia2.aa.LoginFilter;
import it.inaf.ia2.aa.ServiceLocator;
import it.inaf.ia2.aa.UserManager;
import it.inaf.ia2.gms.client.GmsClient;
import it.inaf.ia2.rap.client.ClientCredentialsRapClient;
import java.util.concurrent.ForkJoinPool;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -61,4 +64,21 @@ public class VOSpaceUiApplication {
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    public ClientCredentialsRapClient gmsRapClient() {

        AuthConfig config = ServiceLocator.getInstance().getConfig();

        ClientCredentialsRapClient rapClient = new ClientCredentialsRapClient(config.getRapBaseUri());
        rapClient.setClientId(config.getClientId());
        rapClient.setClientSecret(config.getClientSecret());
        return rapClient;
    }

    @Bean
    public GmsClient gmsClient() {
        String gmsBaseUri = ServiceLocator.getInstance().getConfig().getGmsUri();
        return new GmsClient(gmsBaseUri);
    }
}
+13 −0
Original line number Diff line number Diff line
@@ -126,6 +126,19 @@ public class VOSpaceClient {
        call(request, BodyHandlers.ofInputStream(), 200, res -> null);
    }

    public Node setNode(Node node) {

        String path = node.getUri().substring(("vos://" + authority).length());

        HttpRequest request = getRequest("/nodes" + urlEncodePath(path))
                .header("Accept", useJson ? "application/json" : "text/xml")
                .header("Content-Type", useJson ? "application/json" : "text/xml")
                .POST(HttpRequest.BodyPublishers.ofString(marshal(node)))
                .build();

        return call(request, BodyHandlers.ofInputStream(), 200, res -> unmarshal(res, Node.class));
    }

    public List<Job> getJobs() {

        HttpRequest request = getRequest("/transfers?direction=pullToVoSpace")
+31 −0
Original line number Diff line number Diff line
package it.inaf.ia2.vospace.ui.controller;

import it.inaf.ia2.vospace.ui.data.ShareRequest;
import it.inaf.ia2.vospace.ui.data.SharingInfo;
import it.inaf.ia2.vospace.ui.service.SharingService;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SharingController {

    @Autowired
    private SharingService sharingService;

    @GetMapping(value = "/sharing", produces = MediaType.APPLICATION_JSON_VALUE)
    public SharingInfo getSharingInfo() {
        return sharingService.getSharingInfo();
    }

    @PostMapping(value = "/sharing", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> setNodeGroups(@Valid @RequestBody ShareRequest shareRequest) {
        sharingService.setNodeGroups(shareRequest);
        return ResponseEntity.ok().build();
    }
}
+52 −0
Original line number Diff line number Diff line
package it.inaf.ia2.vospace.ui.data;

import java.util.List;

public class ShareRequest {

    private String path;
    private List<String> groupRead;
    private List<String> groupWrite;
    private List<String> userRead;
    private List<String> userWrite;

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public List<String> getGroupRead() {
        return groupRead;
    }

    public void setGroupRead(List<String> groupRead) {
        this.groupRead = groupRead;
    }

    public List<String> getGroupWrite() {
        return groupWrite;
    }

    public void setGroupWrite(List<String> groupWrite) {
        this.groupWrite = groupWrite;
    }

    public List<String> getUserRead() {
        return userRead;
    }

    public void setUserRead(List<String> userRead) {
        this.userRead = userRead;
    }

    public List<String> getUserWrite() {
        return userWrite;
    }

    public void setUserWrite(List<String> userWrite) {
        this.userWrite = userWrite;
    }
}
Loading