Skip to content

Commit

Permalink
update migration api
Browse files Browse the repository at this point in the history
  • Loading branch information
iskey committed Oct 17, 2023
1 parent b68fe29 commit fcc23e8
Show file tree
Hide file tree
Showing 23 changed files with 303 additions and 254 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
import org.eclipse.xpanse.modules.models.response.Response;
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.service.deploy.CreateRequest;
import org.eclipse.xpanse.modules.models.service.deploy.DeployRequest;
import org.eclipse.xpanse.modules.models.service.deploy.MigrateRequest;
import org.eclipse.xpanse.modules.models.service.deploy.enums.ServiceDeploymentState;
import org.eclipse.xpanse.modules.models.service.query.ServiceQueryModel;
import org.eclipse.xpanse.modules.models.service.view.ServiceDetailVo;
Expand Down Expand Up @@ -121,7 +122,7 @@ public List<ServiceVo> listDeployedServices(
@Operation(description = "Start a task to deploy service using registered service template.")
@PostMapping(value = "/services", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.ACCEPTED)
public UUID deploy(@Valid @RequestBody CreateRequest deployRequest) {
public UUID deploy(@Valid @RequestBody DeployRequest deployRequest) {
log.info("Starting managed service with name {}, version {}, csp {}",
deployRequest.getServiceName(),
deployRequest.getVersion(), deployRequest.getCsp());
Expand All @@ -132,7 +133,7 @@ public UUID deploy(@Valid @RequestBody CreateRequest deployRequest) {
DeployTask deployTask = new DeployTask();
deployRequest.setId(id);
deployTask.setId(id);
deployTask.setCreateRequest(deployRequest);
deployTask.setDeployRequest(deployRequest);
Deployment deployment = this.deployService.getDeployHandler(deployTask);
this.deployService.asyncDeployService(deployment, deployTask);
String successMsg = String.format(
Expand Down Expand Up @@ -185,22 +186,20 @@ public Response purge(@PathVariable("id") String id) {
}

/**
* Start a task to migrate the deployed service using id.
* Create a job to migrate the deployed service.
*
* @param id ID of deployed service.
* @return response
*/
@Tag(name = "Service", description = "APIs to manage the service instances")
@Operation(description = "Start a task to migrate the deployed service using id.")
@PostMapping(value = "/services/migrate/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(description = "Create a job to migrate the deployed service.")
@PostMapping(value = "/services/migration", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.ACCEPTED)
public UUID migrate(@PathVariable("id") String id,
@Valid @RequestBody CreateRequest deployRequest) {
public UUID migrate(@Valid @RequestBody MigrateRequest migrateRequest) {
UUID newId = UUID.randomUUID();
Map<String, Object> variable = new HashMap<>();
variable.put("id", id);
variable.put("id", migrateRequest.getId());
variable.put("newId", newId);
variable.put("createRequest", deployRequest);
variable.put("createRequest", migrateRequest);
workflowProcessUtils.asyncStartProcess("migrate", variable);
return newId;
}
Expand Down Expand Up @@ -228,12 +227,12 @@ private ServiceQueryModel getServiceQueryModel(Category category, Csp csp,
return query;
}

private String generateCustomerServiceName(CreateRequest createRequest) {
if (createRequest.getServiceName().length() > 5) {
return createRequest.getServiceName().substring(0, 4) + "-"
private String generateCustomerServiceName(DeployRequest deployRequest) {
if (deployRequest.getServiceName().length() > 5) {
return deployRequest.getServiceName().substring(0, 4) + "-"
+ RandomStringUtils.randomAlphanumeric(5);
} else {
return createRequest.getServiceName() + "-"
return deployRequest.getServiceName() + "-"
+ RandomStringUtils.randomAlphanumeric(5);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
import org.eclipse.xpanse.modules.database.resource.DeployResourceEntity;
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.service.deploy.CreateRequest;
import org.eclipse.xpanse.modules.models.service.deploy.DeployRequest;
import org.eclipse.xpanse.modules.models.service.deploy.enums.ServiceDeploymentState;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
Expand Down Expand Up @@ -97,7 +97,7 @@ public class DeployServiceEntity extends CreateModifiedTime {
@Column(columnDefinition = "json")
@Type(value = JsonType.class)
@Convert(converter = ObjectJsonConverter.class)
private CreateRequest createRequest;
private DeployRequest deployRequest;

@OneToMany(mappedBy = "deployService", orphanRemoval = true)
@Cascade({CascadeType.ALL})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import org.eclipse.xpanse.modules.database.resource.DeployResourceEntity;
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.service.deploy.CreateRequest;
import org.eclipse.xpanse.modules.models.service.deploy.DeployRequest;
import org.eclipse.xpanse.modules.models.service.deploy.enums.ServiceDeploymentState;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -31,7 +31,7 @@ class DeployServiceEntityTest {
private final Csp CSP = Csp.HUAWEI;
private final String FLAVOR = "1-zookeeper-with-3-worker-nodes-normal";
private final ServiceDeploymentState SERVICE_STATE = ServiceDeploymentState.DEPLOYING;
private final CreateRequest CREATE_REQUEST = new CreateRequest();
private final DeployRequest CREATE_REQUEST = new DeployRequest();
private final List<DeployResourceEntity> DEPLOY_RESOURCE_LIST = new ArrayList<>();
private final Map<String, String> PROPERTIES = new HashMap<>();
private final Map<String, String> PRIVATE_PROPERTIES = new HashMap<>();
Expand All @@ -52,7 +52,7 @@ void setUp() {
test.setCsp(CSP);
test.setFlavor(FLAVOR);
test.setServiceDeploymentState(SERVICE_STATE);
test.setCreateRequest(CREATE_REQUEST);
test.setDeployRequest(CREATE_REQUEST);
test.setDeployResourceList(DEPLOY_RESOURCE_LIST);
test.setProperties(PROPERTIES);
test.setPrivateProperties(PRIVATE_PROPERTIES);
Expand All @@ -71,7 +71,7 @@ void testToString() {
+ "csp=" + CSP + ", "
+ "flavor=" + FLAVOR + ", "
+ "serviceDeploymentState=" + SERVICE_STATE + ", "
+ "createRequest=" + CREATE_REQUEST + ", "
+ "deployRequest=" + CREATE_REQUEST + ", "
//+ "deployResourceList=" + DEPLOY_RESOURCE_LIST+ ", "
+ "properties=" + PROPERTIES + ", "
+ "privateProperties=" + PRIVATE_PROPERTIES + ", "
Expand Down Expand Up @@ -161,7 +161,7 @@ void testEqualsAndHashCode() {
Assertions.assertNotEquals(test.hashCode(), test1.hashCode());
Assertions.assertNotEquals(test1.hashCode(), test2.hashCode());

test1.setCreateRequest(CREATE_REQUEST);
test1.setDeployRequest(CREATE_REQUEST);
Assertions.assertNotEquals(test, test1);
Assertions.assertNotEquals(test, test2);
Assertions.assertNotEquals(test1, test2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.eclipse.xpanse.modules.deployment.deployers.terraform.terraformboot.model.TerraformResult;
import org.eclipse.xpanse.modules.models.security.model.CurrentUserInfo;
import org.eclipse.xpanse.modules.models.service.common.enums.Csp;
import org.eclipse.xpanse.modules.models.service.deploy.CreateRequest;
import org.eclipse.xpanse.modules.models.service.deploy.DeployRequest;
import org.eclipse.xpanse.modules.models.service.deploy.DeployResource;
import org.eclipse.xpanse.modules.models.service.deploy.DeployResult;
import org.eclipse.xpanse.modules.models.service.deploy.enums.ServiceDeploymentState;
Expand Down Expand Up @@ -112,14 +112,14 @@ public DeployServiceEntity getNewDeployServiceTask(DeployTask deployTask) {
DeployServiceEntity entity = new DeployServiceEntity();
entity.setId(deployTask.getId());
entity.setCreateTime(OffsetDateTime.now());
entity.setVersion(StringUtils.lowerCase(deployTask.getCreateRequest().getVersion()));
entity.setName(StringUtils.lowerCase(deployTask.getCreateRequest().getServiceName()));
entity.setCsp(deployTask.getCreateRequest().getCsp());
entity.setCategory(deployTask.getCreateRequest().getCategory());
entity.setCustomerServiceName(deployTask.getCreateRequest().getCustomerServiceName());
entity.setFlavor(deployTask.getCreateRequest().getFlavor());
entity.setUserId(deployTask.getCreateRequest().getUserId());
entity.setCreateRequest(deployTask.getCreateRequest());
entity.setVersion(StringUtils.lowerCase(deployTask.getDeployRequest().getVersion()));
entity.setName(StringUtils.lowerCase(deployTask.getDeployRequest().getServiceName()));
entity.setCsp(deployTask.getDeployRequest().getCsp());
entity.setCategory(deployTask.getDeployRequest().getCategory());
entity.setCustomerServiceName(deployTask.getDeployRequest().getCustomerServiceName());
entity.setFlavor(deployTask.getDeployRequest().getFlavor());
entity.setUserId(deployTask.getDeployRequest().getUserId());
entity.setDeployRequest(deployTask.getDeployRequest());
entity.setDeployResourceList(new ArrayList<>());
return entity;
}
Expand All @@ -131,35 +131,35 @@ public DeployServiceEntity getNewDeployServiceTask(DeployTask deployTask) {
*/
public Deployment getDeployHandler(DeployTask deployTask) {

deployTask.getCreateRequest().setUserId(getCurrentLoginUserId());
deployTask.getDeployRequest().setUserId(getCurrentLoginUserId());

// Find the registered service template and fill Ocl.
ServiceTemplateEntity serviceTemplate = new ServiceTemplateEntity();
serviceTemplate.setName(
StringUtils.lowerCase(deployTask.getCreateRequest().getServiceName()));
StringUtils.lowerCase(deployTask.getDeployRequest().getServiceName()));
serviceTemplate.setVersion(
StringUtils.lowerCase(deployTask.getCreateRequest().getVersion()));
serviceTemplate.setCsp(deployTask.getCreateRequest().getCsp());
serviceTemplate.setCategory(deployTask.getCreateRequest().getCategory());
StringUtils.lowerCase(deployTask.getDeployRequest().getVersion()));
serviceTemplate.setCsp(deployTask.getDeployRequest().getCsp());
serviceTemplate.setCategory(deployTask.getDeployRequest().getCategory());
serviceTemplate = serviceTemplateStorage.findServiceTemplate(serviceTemplate);
if (Objects.isNull(serviceTemplate) || Objects.isNull(serviceTemplate.getOcl())) {
throw new ServiceTemplateNotRegistered("Service template not found.");
}
// Check context validation
if (Objects.nonNull(serviceTemplate.getOcl().getDeployment()) && Objects.nonNull(
deployTask.getCreateRequest().getServiceRequestProperties())) {
deployTask.getDeployRequest().getServiceRequestProperties())) {
List<DeployVariable> deployVariables = serviceTemplate.getOcl().getDeployment()
.getVariables();

serviceVariablesJsonSchemaValidator.validateDeployVariables(deployVariables,
deployTask.getCreateRequest().getServiceRequestProperties(),
deployTask.getDeployRequest().getServiceRequestProperties(),
serviceTemplate.getJsonObjectSchema());
}
encodeDeployVariable(serviceTemplate,
deployTask.getCreateRequest().getServiceRequestProperties());
deployTask.getDeployRequest().getServiceRequestProperties());
// Set Ocl and CreateRequest
deployTask.setOcl(serviceTemplate.getOcl());
deployTask.getCreateRequest().setOcl(serviceTemplate.getOcl());
deployTask.getDeployRequest().setOcl(serviceTemplate.getOcl());
// Fill the handler
fillHandler(deployTask);
// get the deployment.
Expand Down Expand Up @@ -273,7 +273,7 @@ public Deployment getDestroyHandler(DeployTask deployTask) {
DeployServiceEntity deployServiceEntity =
deployServiceStorage.findDeployServiceById(deployTask.getId());
if (Objects.isNull(deployServiceEntity)
|| Objects.isNull(deployServiceEntity.getCreateRequest())) {
|| Objects.isNull(deployServiceEntity.getDeployRequest())) {
String errorMsg = String.format("Service with id %s not found.", deployTask.getId());
log.error(errorMsg);
throw new ServiceNotDeployedException(errorMsg);
Expand All @@ -290,8 +290,8 @@ public Deployment getDestroyHandler(DeployTask deployTask) {
deployTask.getId(), state));
}
// Set Ocl and CreateRequest
deployTask.setCreateRequest(deployServiceEntity.getCreateRequest());
deployTask.setOcl(deployServiceEntity.getCreateRequest().getOcl());
deployTask.setDeployRequest(deployServiceEntity.getDeployRequest());
deployTask.setOcl(deployServiceEntity.getDeployRequest().getOcl());
// Fill the handler
fillHandler(deployTask);
// get the deployment.
Expand Down Expand Up @@ -476,8 +476,8 @@ public void deployCallback(String taskId, TerraformResult result) {
private DeployTask getDeployTask(String taskId, DeployServiceEntity deployServiceEntity) {
DeployTask task = new DeployTask();
task.setId(UUID.fromString(taskId));
task.setOcl(deployServiceEntity.getCreateRequest().getOcl());
task.setCreateRequest(deployServiceEntity.getCreateRequest());
task.setOcl(deployServiceEntity.getDeployRequest().getOcl());
task.setDeployRequest(deployServiceEntity.getDeployRequest());
fillHandler(task);
return task;
}
Expand Down Expand Up @@ -528,7 +528,7 @@ private DeployResourceHandler getResourceHandler(Csp csp) {

private void fillHandler(DeployTask deployTask) {
DeployResourceHandler resourceHandler =
getResourceHandler(deployTask.getCreateRequest().getCsp());
getResourceHandler(deployTask.getDeployRequest().getCsp());
deployTask.setDeployResourceHandler(resourceHandler);
}

Expand Down Expand Up @@ -567,14 +567,14 @@ private ServiceVo convertToServiceVo(DeployServiceEntity serviceEntity) {

private void maskSensitiveFields(DeployServiceEntity deployServiceEntity) {
log.debug("masking sensitive input data after deployment");
if (Objects.nonNull(deployServiceEntity.getCreateRequest().getServiceRequestProperties())) {
if (Objects.nonNull(deployServiceEntity.getDeployRequest().getServiceRequestProperties())) {
for (DeployVariable deployVariable
: deployServiceEntity.getCreateRequest().getOcl().getDeployment()
: deployServiceEntity.getDeployRequest().getOcl().getDeployment()
.getVariables()) {
if (deployVariable.getSensitiveScope() != SensitiveScope.NONE
&& (deployServiceEntity.getCreateRequest().getServiceRequestProperties()
&& (deployServiceEntity.getDeployRequest().getServiceRequestProperties()
.containsKey(deployVariable.getName()))) {
deployServiceEntity.getCreateRequest().getServiceRequestProperties()
deployServiceEntity.getDeployRequest().getServiceRequestProperties()
.put(deployVariable.getName(), "********");

}
Expand All @@ -585,11 +585,11 @@ private void maskSensitiveFields(DeployServiceEntity deployServiceEntity) {
/**
* Deployment service.
*/
public boolean deployService(UUID newId, CreateRequest createRequest) {
public boolean deployService(UUID newId, DeployRequest deployRequest) {
DeployTask deployTask = new DeployTask();
createRequest.setId(newId);
deployRequest.setId(newId);
deployTask.setId(newId);
deployTask.setCreateRequest(createRequest);
deployTask.setDeployRequest(deployRequest);
Deployment deployment = getDeployHandler(deployTask);
return deploy(deployment, deployTask);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ private String getClientRequestBaseUrl(String port) {
}

private List<String> getFiles(DeployTask task) {
Csp csp = task.getCreateRequest().getCsp();
String region = task.getCreateRequest().getRegion();
Csp csp = task.getDeployRequest().getCsp();
String region = task.getDeployRequest().getRegion();
String provider = this.pluginManager.getTerraformProviderForRegionByCsp(csp, region);
String deployer = task.getOcl().getDeployment().getDeployer();
return Arrays.asList(provider, deployer);
Expand Down

0 comments on commit fcc23e8

Please sign in to comment.