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

feat: change host, intercept, service, dial policy, bind policy names

parent 40703fe2
Loading
Loading
Loading
Loading
+3 −1
Changes for src/main/java/org/etsi/osl/hypo/api/fabric/model/domain/connection/DomainConnectionRequest.java: 3 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -8,7 +8,9 @@ public class DomainConnectionRequest {
    private String serviceOrderId;
    private String serviceOrderItemId;
    private String serviceId;
    private String domainIdentityId;
    private String bindDomainIdentityId;
    private String dialDomainIdentityRole;
    private String dialDomainIdentityId;
    private String address;
    private Integer port;
    private String protocol;
+2 −2
Changes for src/main/java/org/etsi/osl/hypo/api/fabric/resource/DomainConnectionsResource.java: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -44,11 +44,11 @@ public class DomainConnectionsResource {
    @Path("/{networkControllerId}/domain/connections")
    public Response createDomainConnection(
            @PathParam("networkControllerId") String networkControllerId,
            DomainConnectionRequest domainConnection,
            DomainConnectionRequest domainConnectionRequest,
            @Context HttpHeaders headers) {
        String id =
                domainConnectionsService.createDomainConnection(
                        headers, networkControllerId, domainConnection);
                        headers, networkControllerId, domainConnectionRequest);
        String urlString =
                String.format(
                        "network/controller/%s" + DOMAIN_CONNECTIONS + "/%s", networkControllerId, id);
+66 −35
Changes for src/main/java/org/etsi/osl/hypo/api/fabric/service/DomainConnectionsService.java: 66 added lines, 35 removed lines.
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.etsi.osl.hypo.api.fabric.clients.ZitiClientFactory;
@@ -62,13 +63,18 @@ public class DomainConnectionsService {
    }

    public String createDomainConnection(
            HttpHeaders headers, String networkControllerId, DomainConnectionRequest domainConnection)
            HttpHeaders headers,
            String networkControllerId,
            DomainConnectionRequest domainConnectionRequest)
            throws DomainConnectionCreationFailureException {
        try {
            String keycloakToken = tokenHandler.getKeycloakToken(headers);
            NetworkController networkController = networkControllerService.getById(networkControllerId);
            String ztSession = tokenHandler.getNetworkControllerSession(keycloakToken, networkController);
            return this.createDomainConnection(ztSession, domainConnection, networkController);
            String domainConnectionId =
                    this.createDomainConnection(ztSession, domainConnectionRequest, networkController);
            logger.infof("Created domain connection with id %s", domainConnectionId);
            return domainConnectionId;
        } catch (Exception e) {
            // ALARM log, do not alter
            String exceptionMessage = e.getMessage();
@@ -185,24 +191,24 @@ public class DomainConnectionsService {

        try {
            // Create ziti host configuration
            String configHost = createConfigHost(ctx);
            ctx.setHostConfigId(configHost);
            String configHostId = this.createConfigHost(ctx);
            ctx.setHostConfigId(configHostId);

            // Create ziti intercept configuration
            String configIntercept = createConfigIntercept(ctx);
            ctx.setInterceptConfigId(configIntercept);
            String configInterceptId = this.createConfigIntercept(ctx);
            ctx.setInterceptConfigId(configInterceptId);

            // Create service configuration
            String domainServiceId = createService(ctx);
            String domainServiceId = this.createService(ctx);
            ctx.setDomainServiceId(domainServiceId);

            // Create policy Bind
            String servicePolicyBind = createServicePolicyBind(ctx);
            String servicePolicyBind = this.createServicePolicyBind(ctx);
            ctx.setPolicyBindId(servicePolicyBind);

            // Create policy Dial
            String servicePolicyDial = createServicePolicyDial(ctx);
            ctx.setPolicyDialId(servicePolicyDial);
            String servicePolicyDialId = this.createServicePolicyDial(ctx);
            ctx.setPolicyDialId(servicePolicyDialId);

            // Persist domain connection data
            DomainConnectionData domainConnectionData = getDomainConnectionData(ctx);
@@ -233,16 +239,25 @@ public class DomainConnectionsService {
        return domainConnectionMapper.getDomainConnectionData(ctx, domainConnectionRequest);
    }

    /**
     * similar to bind policy, but now dial should accept the "From" side of the connection in the
     * identityRoles field. type is "Dial"
     *
     * @param ctx
     * @return
     */
    private ServicePoliciesRequest getServicePolicyDialRequest(ZitiContext ctx) {
        ServicePoliciesRequest request = new ServicePoliciesRequest();

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

        request.setName(dialPolicyName);
        request.setServiceRoles(Collections.singletonList("@" + ctx.getDomainServiceId()));
@@ -252,16 +267,26 @@ public class DomainConnectionsService {
        return request;
    }

    /**
     * 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 "@"
     * character in the beginning. type needs to be "Bind" and semantic "AnyOf".
     *
     * @param ctx
     * @return
     */
    private ServicePoliciesRequest getServicePoliciesRequestBind(ZitiContext ctx) {
        ServicePoliciesRequest request = new ServicePoliciesRequest();

        DomainConnectionRequest domainConnectionRequest = ctx.getDomainConnectionRequest();
        String bindPolicyName =
                String.join(
                        "",
                        "bind-pol-",
                        ctx.getDomainConnectionRequest().getServiceId(),
                this.createRequestName(
                        "-",
                        ctx.getDomainConnectionRequest().getPort().toString());
                        "bind-pol",
                        domainConnectionRequest.getServiceId(),
                        domainConnectionRequest.getBindDomainIdentityId(),
                        domainConnectionRequest.getAddress(),
                        domainConnectionRequest.getPort().toString());

        request.setName(bindPolicyName);
        request.setServiceRoles(
@@ -269,7 +294,7 @@ public class DomainConnectionsService {

        // or @id identity
        String domainIdentityNameRole =
                String.join("", "@", ctx.getDomainConnectionRequest().getDomainIdentityId());
                String.join("", "@", domainConnectionRequest.getBindDomainIdentityId());
        List<String> identityRoles = Collections.singletonList(domainIdentityNameRole);
        request.setIdentityRoles(identityRoles); // organization reference
        request.setSemantic(ANY_OF);
@@ -281,7 +306,7 @@ public class DomainConnectionsService {
            throws DomainConnectionCreationFailureException {
        String ztSession = ctx.getZtSession();
        try {
            ServicePoliciesRequest request = getServicePoliciesRequestBind(ctx);
            ServicePoliciesRequest request = this.getServicePoliciesRequestBind(ctx);
            ZitiManagementClient zitiManagementClient = ctx.getZitiManagementClient();
            ZitiResponse response = zitiManagementClient.servicePolicies(ztSession, request);
            return response.getData().getId();
@@ -300,7 +325,7 @@ public class DomainConnectionsService {
        serviceCreate.setConfigs(Arrays.asList(ctx.getInterceptConfigId(), ctx.getHostConfigId()));

        String serviceName =
                String.join(
                this.createRequestName(
                        "",
                        ctx.getDomainConnectionRequest().getServiceId(),
                        "-",
@@ -315,7 +340,7 @@ public class DomainConnectionsService {
    public String createService(ZitiContext ctx) throws DomainConnectionCreationFailureException {
        String ztSession = ctx.getZtSession();
        try {
            ServiceCreate serviceCreate = getServiceCreate(ctx);
            ServiceCreate serviceCreate = this.getServiceCreate(ctx);
            ZitiManagementClient zitiManagementClient = ctx.getZitiManagementClient();
            ServiceCreateResponse response = zitiManagementClient.createService(ztSession, serviceCreate);
            return response.getCreateLocation().getId();
@@ -333,7 +358,7 @@ public class DomainConnectionsService {
            throws DomainConnectionCreationFailureException {
        String ztSession = ctx.getZtSession();
        try {
            ConfigsRequest configsRequest = getConfigInterceptRequest(ctx);
            ConfigsRequest configsRequest = this.getConfigInterceptRequest(ctx);
            ZitiManagementClient zitiManagementClient = ctx.getZitiManagementClient();
            ZitiResponse interceptConfig = zitiManagementClient.configs(ztSession, configsRequest);
            return interceptConfig.getData().getId();
@@ -353,11 +378,11 @@ public class DomainConnectionsService {
        request.setConfigTypeId(networkController.getInterceptConfigTypeId());

        String interceptName =
                String.join(
                        "",
                        "intercept-config-",
                        ctx.getDomainConnectionRequest().getServiceId(),
                this.createRequestName(
                        "-",
                        "intercept-config",
                        ctx.getDomainConnectionRequest().getServiceId(),
                        ctx.getDomainConnectionRequest().getAddress(),
                        ctx.getDomainConnectionRequest().getPort().toString());

        request.setName(interceptName);
@@ -381,7 +406,7 @@ public class DomainConnectionsService {
            throws DomainConnectionCreationFailureException {
        String ztSession = ctx.getZtSession();
        try {
            ServicePoliciesRequest request = getServicePolicyDialRequest(ctx);
            ServicePoliciesRequest request = this.getServicePolicyDialRequest(ctx);
            ZitiManagementClient zitiManagementClient = ctx.getZitiManagementClient();
            ZitiResponse response = zitiManagementClient.servicePolicies(ztSession, request);
            return response.getData().getId();
@@ -397,7 +422,7 @@ public class DomainConnectionsService {

    public String createConfigHost(ZitiContext ctx) throws DomainConnectionCreationFailureException {
        try {
            ConfigsRequest configsRequest = getConfigHostRequest(ctx);
            ConfigsRequest configsRequest = this.getConfigHostRequest(ctx);
            ZitiManagementClient zitiManagementClient = ctx.getZitiManagementClient();
            ZitiResponse hostConfig = zitiManagementClient.configs(ctx.getZtSession(), configsRequest);
            return hostConfig.getData().getId();
@@ -414,11 +439,11 @@ public class DomainConnectionsService {
        configsRequest.setConfigTypeId(ctx.getNetworkController().getHostConfigTypeId());

        String hostConfigName =
                String.join(
                        "",
                        "host-config-",
                        ctx.getDomainConnectionRequest().getServiceId(),
                this.createRequestName(
                        "-",
                        "host-config",
                        ctx.getDomainConnectionRequest().getServiceId(),
                        ctx.getDomainConnectionRequest().getAddress(),
                        ctx.getDomainConnectionRequest().getPort().toString());

        configsRequest.setName(hostConfigName);
@@ -592,4 +617,10 @@ public class DomainConnectionsService {
                            "Failed to delete domain connection with domainServiceId %s ", domainServiceId));
        }
    }

    public String createRequestName(String delimiter, String... values) {
        return Arrays.stream(values)
                .filter(StringUtils::isNotBlank)
                .collect(Collectors.joining(delimiter));
    }
}
+205 −174

File changed.

Preview size limit exceeded, changes collapsed.