Loading src/main/java/org/etsi/osl/hypo/api/fabric/model/domain/connection/DomainConnectionRequest.java +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 Loading @@ -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; Loading src/main/java/org/etsi/osl/hypo/api/fabric/resource/DomainConnectionsResource.java +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 Loading @@ -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); Loading src/main/java/org/etsi/osl/hypo/api/fabric/service/DomainConnectionsService.java +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 Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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())); Loading @@ -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( Loading @@ -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); Loading @@ -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(); Loading @@ -300,7 +325,7 @@ public class DomainConnectionsService { serviceCreate.setConfigs(Arrays.asList(ctx.getInterceptConfigId(), ctx.getHostConfigId())); String serviceName = String.join( this.createRequestName( "", ctx.getDomainConnectionRequest().getServiceId(), "-", Loading @@ -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(); Loading @@ -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(); Loading @@ -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); Loading @@ -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(); Loading @@ -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(); Loading @@ -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); Loading Loading @@ -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)); } } src/test/java/org/etsi/osl/hypo/api/fabric/service/DomainConnectionsServiceTest.java +205 −174 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
src/main/java/org/etsi/osl/hypo/api/fabric/model/domain/connection/DomainConnectionRequest.java +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 Loading @@ -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; Loading
src/main/java/org/etsi/osl/hypo/api/fabric/resource/DomainConnectionsResource.java +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 Loading @@ -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); Loading
src/main/java/org/etsi/osl/hypo/api/fabric/service/DomainConnectionsService.java +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 Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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())); Loading @@ -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( Loading @@ -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); Loading @@ -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(); Loading @@ -300,7 +325,7 @@ public class DomainConnectionsService { serviceCreate.setConfigs(Arrays.asList(ctx.getInterceptConfigId(), ctx.getHostConfigId())); String serviceName = String.join( this.createRequestName( "", ctx.getDomainConnectionRequest().getServiceId(), "-", Loading @@ -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(); Loading @@ -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(); Loading @@ -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); Loading @@ -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(); Loading @@ -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(); Loading @@ -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); Loading Loading @@ -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)); } }
src/test/java/org/etsi/osl/hypo/api/fabric/service/DomainConnectionsServiceTest.java +205 −174 File changed.Preview size limit exceeded, changes collapsed. Show changes