Commit e6f1aea3 authored by Anastasios Poimenidis's avatar Anastasios Poimenidis
Browse files

feat: add columns DomainConnectionData.bindDomainIdentityId,...

feat: add columns DomainConnectionData.bindDomainIdentityId, DomainConnectionData.dialDomainIdentityId
parent 24107294
Loading
Loading
Loading
Loading
Loading
+9 −12
Changes for src/main/java/org/etsi/osl/hypo/api/fabric/entity/DomainConnectionData.java: 9 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@ import jakarta.persistence.PrePersist;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.util.UUID;
import lombok.Data;
@@ -31,39 +30,37 @@ public class DomainConnectionData {
    @Column(name = "domainConnectionDataId", nullable = false, unique = true)
    private String domainConnectionDataId;

    @NotBlank
    @Size(max = 40)
    private String serviceId;

    @Size(max = 40)
    @Column(nullable = false, unique = true)
    private String hostConfigId;

    @NotBlank
    @Size(max = 40)
    @Column(nullable = false, unique = true)
    private String interceptConfigId;

    @NotBlank
    @Size(max = 40)
    @Column(nullable = false, unique = true)
    private String domainServiceId;

    @NotBlank
    @Size(max = 40)
    @Column(nullable = false, unique = true)
    private String policyBindId;

    @NotBlank
    @Size(max = 40)
    @Column(nullable = false, unique = true)
    @Column(unique = true)
    private String policyDialId;

    @NotBlank
    @Size(max = 40)
    private String serviceId;
    private String bindDomainIdentityId;

    @NotBlank
    @Size(max = 40)
    @Column(nullable = false)
    private String domainIdentityId;
    private String dialDomainIdentityId;

    @Size(max = 40)
    private String dialDomainIdentityRole;

    @Size(max = 40)
    @Column(nullable = false)
+4 −3
Changes for src/main/java/org/etsi/osl/hypo/api/fabric/kafka/handlers/SonataMessageHandler.java: 4 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -111,8 +111,8 @@ public class SonataMessageHandler {
                domainIdentityService.getByOrganizationId(organizationId);

        domainIdentityDataOptional.ifPresentOrElse(
                domainIdentityData -> {
                    NetworkController networkController = domainIdentityData.getNetworkController();
                bindDomainIdentityData -> {
                    NetworkController networkController = bindDomainIdentityData.getNetworkController();

                    if (Objects.isNull(networkController)) {
                        String error =
@@ -139,7 +139,8 @@ public class SonataMessageHandler {
                    }

                    DomainConnectionRequest domainConnectionRequest =
                            domainConnectionMapper.mapToDomainIdentity(fabricApiConnection, domainIdentityData);
                            domainConnectionMapper.mapToDomainIdentity(
                                    fabricApiConnection, bindDomainIdentityData);

                    // loop for each port without a domain connection and try to establish it
                    for (Integer port : portsWithNoConnection) {
+1 −0
Changes for src/main/java/org/etsi/osl/hypo/api/fabric/mapper/DomainConnectionMapper.java: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ import org.mapstruct.SubclassExhaustiveStrategy;
        subclassExhaustiveStrategy = SubclassExhaustiveStrategy.RUNTIME_EXCEPTION)
public interface DomainConnectionMapper {

    @Mapping(source = "domainIdentityData.domainIdentityId", target = "bindDomainIdentityId")
    DomainConnectionRequest mapToDomainIdentity(
            FabricApiConnection fabricApiConnection, DomainIdentityData domainIdentityData);

+22 −4
Changes for src/main/java/org/etsi/osl/hypo/api/fabric/service/DomainConnectionsService.java: 22 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -250,23 +250,40 @@ public class DomainConnectionsService {
        ServicePoliciesRequest request = new ServicePoliciesRequest();

        DomainConnectionRequest domainConnectionRequest = ctx.getDomainConnectionRequest();
        String dialDomainIdentityId = domainConnectionRequest.getDialDomainIdentityId();
        String dialDomainIdentityRole = domainConnectionRequest.getDialDomainIdentityRole();
        String dialPolicyName =
                this.createRequestName(
                        "-",
                        "dial-pol",
                        domainConnectionRequest.getServiceId(),
                        domainConnectionRequest.getDialDomainIdentityId(),
                        dialDomainIdentityId,
                        domainConnectionRequest.getAddress(),
                        domainConnectionRequest.getPort().toString());

        request.setName(dialPolicyName);
        request.setServiceRoles(Collections.singletonList("@" + ctx.getDomainServiceId()));
        request.setIdentityRoles(Collections.singletonList("#" + policyDialIdentityRole));
        List<String> identityRoles =
                this.createDialPolicyIdentityRoles(dialDomainIdentityId, dialDomainIdentityRole);
        request.setIdentityRoles(identityRoles);
        request.setSemantic(ANY_OF);
        request.setType(DIAL);
        return request;
    }

    private List<String> createDialPolicyIdentityRoles(
            String dialDomainIdentityId, String dialDomainIdentityRole) {
        List<String> roles = new ArrayList<>();
        if (StringUtils.isNotBlank(dialDomainIdentityId)) {
            roles.add(StringUtils.joinWith("", "@", dialDomainIdentityId));
        } else if (StringUtils.isNotBlank(dialDomainIdentityRole)) {
            roles.add(StringUtils.joinWith("", "#", dialDomainIdentityRole));
        } else {
            roles.add(StringUtils.joinWith("", "#", policyDialIdentityRole));
        }
        return roles;
    }

    /**
     * bind policy needs: serviceRoles field ( in our case the service we have created in the flow)
     * and identityRoles field which is a list of domain identity ids each concatenated with a "@"
@@ -326,9 +343,10 @@ public class DomainConnectionsService {

        String serviceName =
                this.createRequestName(
                        "",
                        ctx.getDomainConnectionRequest().getServiceId(),
                        "-",
                        ctx.getDomainConnectionRequest().getServiceId(),
                        ctx.getDomainConnectionRequest().getBindDomainIdentityId(),
                        ctx.getDomainConnectionRequest().getDialDomainIdentityId(),
                        ctx.getDomainConnectionRequest().getPort().toString());

        serviceCreate.setName(serviceName);
+18 −0
Changes for src/main/resources/db/migration/V1.0.1__new_dial_bind_domain_identity_columns.sql: 18 added lines, 0 removed lines.
Original line number Diff line number Diff line
-- 1. Rename existing domainIdentityId to bindDomainIdentityId
ALTER TABLE DomainConnectionData
    RENAME COLUMN domainIdentityId TO bindDomainIdentityId;

-- 2. Drop the NOT NULL constraint on bindDomainIdentityId
ALTER TABLE DomainConnectionData
    ALTER COLUMN bindDomainIdentityId DROP NOT NULL;

-- 3. Add the two new columns as nullable
ALTER TABLE DomainConnectionData
    ADD COLUMN dialDomainIdentityId VARCHAR(40);

ALTER TABLE DomainConnectionData
    ADD COLUMN dialDomainIdentityRole VARCHAR(40);

-- 4. Drop the NOT NULL constraint on policyDialId (unique constraint stays intact)
ALTER TABLE DomainConnectionData
    ALTER COLUMN policyDialId DROP NOT NULL;
 No newline at end of file
Loading