Skip to content

Commit

Permalink
Extend OCL to have service provider details.
Browse files Browse the repository at this point in the history
  • Loading branch information
Alice1319 committed Jan 17, 2024
1 parent 0de5f91 commit 525476c
Show file tree
Hide file tree
Showing 20 changed files with 126 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ public List<ServiceTemplateDetailVo> listServiceTemplates(
@RequestParam(name = "serviceVersion", required = false) String serviceVersion,
@Parameter(name = "serviceHostingType", description = "who hosts ths cloud resources")
@RequestParam(name = "serviceHostingType", required = false)
ServiceHostingType serviceHostingType) {
ServiceHostingType serviceHostingType) {
ServiceTemplateQueryModel query = getServiceTemplateQueryModel(
categoryName, cspName, serviceName, serviceVersion, serviceHostingType);
List<ServiceTemplateEntity> serviceEntities =
Expand Down Expand Up @@ -309,6 +309,8 @@ private ServiceTemplateDetailVo convertToServiceTemplateDetailVo(
.openApi(serviceTemplateEntity.getId().toString())).withRel("openApi"));
serviceTemplateDetailVo.setServiceHostingType(
serviceTemplateEntity.getServiceHostingType());
serviceTemplateDetailVo.setServiceProviderContactDetails(
serviceTemplateDetailVo.getServiceProviderContactDetails());
return serviceTemplateDetailVo;
}
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.eclipse.xpanse.modules.models.service.common.enums.Category;
import org.eclipse.xpanse.modules.models.service.common.enums.Csp;
import org.eclipse.xpanse.modules.models.servicetemplate.Ocl;
import org.eclipse.xpanse.modules.models.servicetemplate.ServiceProviderContactDetails;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceHostingType;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceRegistrationState;
import org.eclipse.xpanse.modules.models.servicetemplate.utils.JsonObjectSchema;
Expand Down Expand Up @@ -83,6 +84,11 @@ public class ServiceTemplateEntity extends CreateModifiedTime {
@Enumerated(EnumType.STRING)
private ServiceRegistrationState serviceRegistrationState;

@Column(name = "SERVICE_PROVIDER_CONTACT_DETAILS", columnDefinition = "json", nullable = false)
@Type(value = JsonType.class)
@Convert(converter = ObjectJsonConverter.class)
private ServiceProviderContactDetails serviceProviderContactDetails;

@Column(name = "SERVICE_VARIABLES_JSON_SCHEMA", columnDefinition = "json", nullable = false)
@Type(value = JsonType.class)
@Convert(converter = ObjectJsonConverter.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.eclipse.xpanse.modules.models.service.common.enums.Csp;
import org.eclipse.xpanse.modules.models.service.utils.ServiceVariablesJsonSchemaGenerator;
import org.eclipse.xpanse.modules.models.servicetemplate.Ocl;
import org.eclipse.xpanse.modules.models.servicetemplate.ServiceProviderContactDetails;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceRegistrationState;
import org.eclipse.xpanse.modules.models.servicetemplate.utils.JsonObjectSchema;
import org.eclipse.xpanse.modules.models.servicetemplate.utils.OclLoader;
Expand All @@ -32,6 +33,7 @@ class ServiceTemplateEntityTest {
ServiceRegistrationState.REGISTERED;
private Ocl ocl;
private JsonObjectSchema jsonObjectSchema;
private ServiceProviderContactDetails serviceProviderContactDetails;

private ServiceTemplateEntity test;

Expand All @@ -54,6 +56,7 @@ void setUp() throws Exception {
test.setOcl(ocl);
test.setServiceRegistrationState(SERVICE_STATE);
test.setJsonObjectSchema(jsonObjectSchema);
test.setServiceProviderContactDetails(serviceProviderContactDetails);
}

@Test
Expand All @@ -68,6 +71,7 @@ void testToString() {
+ "serviceHostingType=null" + ", "
+ "ocl=" + ocl + ", "
+ "serviceRegistrationState=" + SERVICE_STATE + ", "
+ "serviceProviderContactDetails=" + serviceProviderContactDetails + ", "
+ "jsonObjectSchema=" + jsonObjectSchema + ")";
assertEquals(expectedToString, test.toString());
}
Expand Down Expand Up @@ -145,6 +149,13 @@ void testEqualsAndHashCode() {
assertNotEquals(test.hashCode(), test1.hashCode());
assertNotEquals(test1.hashCode(), test2.hashCode());

test1.setServiceProviderContactDetails(serviceProviderContactDetails);
assertNotEquals(test, test1);
assertNotEquals(test, test2);
assertNotEquals(test1, test2);
assertNotEquals(test.hashCode(), test1.hashCode());
assertNotEquals(test1.hashCode(), test2.hashCode());

test1.setJsonObjectSchema(jsonObjectSchema);
assertEquals(test, test1);
assertNotEquals(test, test2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,11 @@ public class Ocl implements Serializable {
+ "for deploying cloud resources.")
private ServiceHostingType serviceHostingType;

@Valid
@NotNull
@Schema(description = "The contact details of the service provider.")
private ServiceProviderContactDetails serviceProviderContactDetails;

/**
* an OCL object might be passed to different plugins for processing, in case any plugin want to
* change the property of Ocl, we should not change the original Object, we should change a deep
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: Huawei Inc.
*/

package org.eclipse.xpanse.modules.models.servicetemplate;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Size;
import java.util.List;
import lombok.Data;

/**
* The contact details of the Cloud Service Provider.
*/
@Data
public class ServiceProviderContactDetails {

@Valid
@Size(min = 1)
@Schema(description = "The email details of the service provider.")
private List<String> email;

@Valid
@Size(min = 1)
@Schema(description = "The phone details of the service provider.")
private List<String> phone;

@Valid
@Size(min = 1)
@Schema(description = "The chat details of the service provider.")
private List<String> chat;

@Valid
@Size(min = 1)
@Schema(description = "The website details of the service provider.")
private List<String> website;
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.eclipse.xpanse.modules.models.servicetemplate.Deployment;
import org.eclipse.xpanse.modules.models.servicetemplate.Flavor;
import org.eclipse.xpanse.modules.models.servicetemplate.Region;
import org.eclipse.xpanse.modules.models.servicetemplate.ServiceProviderContactDetails;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceHostingType;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceRegistrationState;
import org.springframework.hateoas.RepresentationModel;
Expand Down Expand Up @@ -117,4 +118,8 @@ public class ServiceTemplateDetailVo extends RepresentationModel<ServiceTemplate
@Schema(description = "State of registered service.")
private ServiceRegistrationState serviceRegistrationState;

@NotNull
@Schema(description = "The contact details of the service provider.")
private ServiceProviderContactDetails serviceProviderContactDetails;

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class OclTest {
private static List<Flavor> flavors;
private static Billing billing;
private static Ocl ocl;
private static ServiceProviderContactDetails serviceProviderContactDetails;
private static final ServiceHostingType serviceHostingType = ServiceHostingType.SELF;

@BeforeEach
Expand Down Expand Up @@ -72,6 +73,7 @@ void setUp() {
ocl.setFlavors(flavors);
ocl.setBilling(billing);
ocl.setServiceHostingType(serviceHostingType);
ocl.setServiceProviderContactDetails(serviceProviderContactDetails);
}

@Test
Expand Down Expand Up @@ -105,6 +107,7 @@ public void testDeepCopy() {
assertNotSame(ocl.getDeployment(), aCopy.getDeployment());
assertEquals(ocl.getDeployment().getKind(), aCopy.getDeployment().getKind());
assertEquals(ocl.getServiceHostingType(), aCopy.getServiceHostingType());
assertEquals(ocl.getServiceProviderContactDetails(), aCopy.getServiceProviderContactDetails());
}

@Test
Expand Down Expand Up @@ -187,6 +190,7 @@ public void testEqualsAndHashCode() {

ocl1.setBilling(billing);
ocl1.setServiceHostingType(ServiceHostingType.SELF);
ocl1.setServiceProviderContactDetails(serviceProviderContactDetails);
assertEquals(ocl, ocl1);
assertNotEquals(ocl1, ocl2);
assertEquals(ocl.hashCode(), ocl1.hashCode());
Expand All @@ -207,7 +211,8 @@ void testToString() {
", deployment=" + deployment +
", flavors=" + flavors +
", billing=" + billing +
", serviceHostingType=" + serviceHostingType +
", serviceHostingType=" + serviceHostingType +
", serviceProviderContactDetails=" + serviceProviderContactDetails +
")";

assertEquals(expectedString, ocl.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.eclipse.xpanse.modules.models.servicetemplate.Deployment;
import org.eclipse.xpanse.modules.models.servicetemplate.Flavor;
import org.eclipse.xpanse.modules.models.servicetemplate.Region;
import org.eclipse.xpanse.modules.models.servicetemplate.ServiceProviderContactDetails;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceHostingType;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceRegistrationState;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -43,6 +44,7 @@ class ServiceTemplateDetailVoTest {
private static final OffsetDateTime lastModifiedTime = OffsetDateTime.now();
private static final ServiceRegistrationState serviceRegistrationState =
ServiceRegistrationState.REGISTERED;
private static ServiceProviderContactDetails serviceProviderContactDetails;
private static List<@Valid Region> regions;
private static List<@Valid DeployVariable> variables;
private static List<@Valid Flavor> flavors;
Expand Down Expand Up @@ -85,6 +87,7 @@ void setUp() {
serviceTemplateDetailVo.setLastModifiedTime(lastModifiedTime);
serviceTemplateDetailVo.setServiceRegistrationState(serviceRegistrationState);
serviceTemplateDetailVo.setServiceHostingType(ServiceHostingType.SERVICE_VENDOR);
serviceTemplateDetailVo.setServiceProviderContactDetails(serviceProviderContactDetails);
}

@Test
Expand All @@ -105,7 +108,10 @@ void testGetterAndSetter() {
assertEquals(lastModifiedTime, serviceTemplateDetailVo.getLastModifiedTime());
assertEquals(serviceRegistrationState,
serviceTemplateDetailVo.getServiceRegistrationState());
assertEquals(ServiceHostingType.SERVICE_VENDOR, serviceTemplateDetailVo.getServiceHostingType());
assertEquals(ServiceHostingType.SERVICE_VENDOR,
serviceTemplateDetailVo.getServiceHostingType());
assertEquals(serviceProviderContactDetails,
serviceTemplateDetailVo.getServiceProviderContactDetails());
}

@Test
Expand Down Expand Up @@ -218,6 +224,7 @@ public void testEqualsAndHashCode() {

serviceTemplateDetailVo1.setServiceRegistrationState(serviceRegistrationState);
serviceTemplateDetailVo1.setServiceHostingType(ServiceHostingType.SERVICE_VENDOR);
serviceTemplateDetailVo1.setServiceProviderContactDetails(serviceProviderContactDetails);
assertEquals(serviceTemplateDetailVo, serviceTemplateDetailVo1);
assertNotEquals(serviceTemplateDetailVo1, serviceTemplateDetailVo2);
assertEquals(serviceTemplateDetailVo.hashCode(), serviceTemplateDetailVo1.hashCode());
Expand All @@ -243,7 +250,8 @@ void testToString() {
"serviceHostingType=" + ServiceHostingType.SERVICE_VENDOR + ", " +
"createTime=" + createTime + ", " +
"lastModifiedTime=" + lastModifiedTime + ", " +
"serviceRegistrationState=" + serviceRegistrationState + ")";
"serviceRegistrationState=" + serviceRegistrationState + ", " +
"serviceProviderContactDetails=" + serviceProviderContactDetails + ")";

assertEquals(expectedToString, serviceTemplateDetailVo.toString());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.eclipse.xpanse.modules.models.service.common.enums.Csp;
import org.eclipse.xpanse.modules.models.service.deploy.DeployRequest;
import org.eclipse.xpanse.modules.models.servicetemplate.Ocl;
import org.eclipse.xpanse.modules.models.servicetemplate.ServiceProviderContactDetails;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand All @@ -18,12 +19,15 @@ class DeployTaskTest {
DeployResourceHandler handler = deployResult -> {
};
Ocl ocl = new Ocl();
ServiceProviderContactDetails serviceProviderContactDetails =
new ServiceProviderContactDetails();
DeployRequest deployRequest = new DeployRequest();
private DeployTask test;

@BeforeEach
void setUp() {
test = new DeployTask();
ocl.setServiceProviderContactDetails(null);
test.setId(id);
test.setOcl(ocl);
test.setDeployRequest(deployRequest);
Expand Down Expand Up @@ -108,10 +112,12 @@ void testToString() {
+ "namespace=null, "
+ "deployRequest=DeployRequest(super=DeployRequestBase(userId=null, category=null, "
+ "serviceName=null, customerServiceName=null, version=null, region=null, "
+ "csp=null, flavor=null, serviceHostingType=null, ocl=null, serviceRequestProperties=null), id=null),"
+ " ocl=Ocl(category=null, version=null, name=null, serviceVersion=null, "
+ "description=null, namespace=null, icon=null, cloudServiceProvider=null, "
+ "deployment=null, flavors=null, billing=null, serviceHostingType=null), deployResourceHandler=null, serviceTemplateId=null)";
+ "csp=null, flavor=null, serviceHostingType=null, ocl=null, "
+ "serviceRequestProperties=null), id=null), ocl=Ocl(category=null, version=null, "
+ "name=null, serviceVersion=null, description=null, namespace=null, icon=null, "
+ "cloudServiceProvider=null, deployment=null, flavors=null, billing=null, "
+ "serviceHostingType=null, serviceProviderContactDetails=null), "
+ "deployResourceHandler=null, serviceTemplateId=null)";
assertEquals(exceptedString, test.toString());

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ private ServiceTemplateEntity getNewServiceTemplateEntity(Ocl ocl) {
entity.setServiceHostingType(ocl.getServiceHostingType());
entity.setOcl(ocl);
entity.setServiceRegistrationState(ServiceRegistrationState.REGISTERED);
entity.setServiceProviderContactDetails(ocl.getServiceProviderContactDetails());
return entity;
}

Expand Down
3 changes: 3 additions & 0 deletions runtime/src/test/resources/ocl_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: c7.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions runtime/src/test/resources/ocl_testOpenApi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: c7.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions runtime/src/test/resources/ocl_test_dummy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: c7.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions samples/flexibleEngine-K8S.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: s6.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions samples/flexibleEngine-Kafka.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: s6.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions samples/huawei-K8S.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: c7.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions samples/huawei-Kafka-terraform_module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: c7.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions samples/huawei-Kafka.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: c7.xlarge.4
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions samples/openstack-Kafka.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ flavors:
properties:
worker_nodes_count: 5
flavor_id: cirros512
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down
3 changes: 3 additions & 0 deletions samples/scs-Kafka.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ flavors:
worker_nodes_count: 5
flavor_name: SCS-4V:8:20
image_name: Ubuntu 20.04
# The contact details of the service.
serviceProviderContactDetails:
email: ["test@test.com"]
deployment:
# kind, Supported values are terraform, pulumi, crossplane.
kind: terraform
Expand Down

0 comments on commit 525476c

Please sign in to comment.