Skip to content

Commit

Permalink
Handle new terraform resources (KeyPair,SecurityGroup,SecurityGroupRule)
Browse files Browse the repository at this point in the history
  • Loading branch information
baixinsui committed Nov 17, 2023
1 parent f1da039 commit 87b5530
Show file tree
Hide file tree
Showing 37 changed files with 1,694 additions and 1,064 deletions.
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
package org.eclipse.xpanse.api.config;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.eclipse.xpanse.modules.models.common.exceptions.UnsupportedEnumValueException;
import org.eclipse.xpanse.modules.models.monitor.enums.MonitorResourceType;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

class MonitorResourceTypeEnumConverterTest {

private MonitorResourceTypeEnumConverter monitorResourceTypeEnumConverterUnderTest;
private final MonitorResourceTypeEnumConverter converterTest =
new MonitorResourceTypeEnumConverter();

@BeforeEach
void setUp() {
monitorResourceTypeEnumConverterUnderTest = new MonitorResourceTypeEnumConverter();
}

@Test
void testConvert() {
assertThat(
monitorResourceTypeEnumConverterUnderTest.convert("CPU"))
.isEqualTo(MonitorResourceType.CPU);
assertThrows(UnsupportedEnumValueException.class, () ->
monitorResourceTypeEnumConverterUnderTest.convert("monitorResourceType"));

Assertions.assertEquals(MonitorResourceType.CPU,
converterTest.convert("cpu"));
Assertions.assertEquals(MonitorResourceType.MEM,
converterTest.convert("mem"));
Assertions.assertEquals(MonitorResourceType.VM_NETWORK_INCOMING,
converterTest.convert("vm_network_incoming"));
Assertions.assertEquals(MonitorResourceType.VM_NETWORK_OUTGOING,
converterTest.convert("vm_network_outgoing"));
Assertions.assertThrows(UnsupportedEnumValueException.class,
() -> converterTest.convert("error_value"));
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.eclipse.xpanse.api.config;

import org.eclipse.xpanse.modules.models.common.exceptions.UnsupportedEnumValueException;
import org.eclipse.xpanse.modules.models.servicetemplate.enums.ServiceHostingType;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

class ServiceHostingTypeEnumConverterTest {

private final ServiceHostingTypeEnumConverter converterTest =
new ServiceHostingTypeEnumConverter();

@Test
void testConvert() {
Assertions.assertEquals(ServiceHostingType.SELF,
converterTest.convert("self"));
Assertions.assertEquals(ServiceHostingType.SERVICE_VENDOR,
converterTest.convert("service-vendor"));
Assertions.assertThrows(UnsupportedEnumValueException.class,
() -> converterTest.convert("error_value"));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,6 @@ public class DeployResourceEntity extends CreateModifiedTime {
@CollectionTable(name = "DEPLOY_RESOURCE_PROPERTY",
joinColumns = @JoinColumn(name = "deployResource_id", nullable = false))
@MapKeyColumn(name = "p_key")
@Column(name = "p_value")
@Column(name = "P_VALUE", length = Integer.MAX_VALUE)
private Map<String, String> properties;
}
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ public class DeployServiceEntity extends CreateModifiedTime {
@CollectionTable(name = "DEPLOY_SERVICE_PROPERTY",
joinColumns = @JoinColumn(name = "DEPLOY_SERVICE_ID", nullable = false))
@MapKeyColumn(name = "P_KEY")
@Column(name = "P_VALUE")
@Column(name = "P_VALUE", length = Integer.MAX_VALUE)
private Map<String, String> properties;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,14 @@ public static void fillDeployResource(TfStateResourceInstance instance,
if (Objects.isNull(instanceAttributes) || instanceAttributes.isEmpty()) {
return;
}
deployResource.setResourceId(getValue(instanceAttributes, "id"));
deployResource.setName(getValue(instanceAttributes, "name"));
String id = getValue(instanceAttributes, "id");
deployResource.setResourceId(id);
String name = getValue(instanceAttributes, "name");
if (StringUtils.isBlank(name)) {
deployResource.setName(deployResource.getKind().toValue() + "-" + id);
} else {
deployResource.setName(name);
}
deployResource.setProperties(new HashMap<>());
if (Objects.nonNull(keyProperties) && !keyProperties.isEmpty()) {
keyProperties.forEach((k, v) ->
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* SPDX-License-Identifier: Apache-2.0
* SPDX-FileCopyrightText: Huawei Inc.
*
*/

package org.eclipse.xpanse.modules.models.service.deploy;

import java.util.HashMap;
import java.util.Map;
import org.eclipse.xpanse.modules.models.service.deploy.enums.DeployResourceKind;


/**
* Defines methods to get kind and properties for deploy resources.
*/
public class DeployResourceProperties {

/**
* Get kind of deployed resource.
*
* @return DeployResourceKind.
*/
public DeployResourceKind getResourceKind() {
return DeployResourceKind.UNKNOWN;
}

/**
* Get properties map of resource.
*
* @return properties map.
*/
public Map<String, String> getResourceProperties() {
return new HashMap<>();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ public enum DeployResourceKind {
VPC("vpc"),
VOLUME("volume"),
UNKNOWN("unknown"),
SECURITY_GROUP("security_group"),
SECURITY_GROUP_RULE("security_group_rule"),
KEYPAIR("keypair"),
SUBNET("subnet");

private final String kind;
Expand All @@ -35,7 +38,7 @@ public enum DeployResourceKind {
@JsonCreator
public DeployResourceKind getByValue(String kind) {
for (DeployResourceKind resourceKind : values()) {
if (resourceKind.kind.equals(StringUtils.lowerCase(kind))) {
if (StringUtils.endsWithIgnoreCase(resourceKind.kind, kind)) {
return resourceKind;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.eclipse.xpanse.modules.models.service.deploy;

import static org.assertj.core.api.Assertions.assertThat;

import java.util.HashMap;
import java.util.Map;
import org.eclipse.xpanse.modules.models.service.deploy.enums.DeployResourceKind;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class DeployResourcePropertiesTest {

private DeployResourceProperties deployResourcePropertiesUnderTest;

@BeforeEach
void setUp() {
deployResourcePropertiesUnderTest = new DeployResourceProperties() {
};
}

@Test
void testGetResourceKind() {
assertThat(deployResourcePropertiesUnderTest.getResourceKind())
.isEqualTo(DeployResourceKind.UNKNOWN);
}

@Test
void testGetResourceProperties() {
// Setup
final Map<String, String> expectedResult = new HashMap<>();

// Run the test
final Map<String, String> result =
deployResourcePropertiesUnderTest.getResourceProperties();

// Verify the results
assertThat(result).isEqualTo(expectedResult);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,23 @@ class DeployResourceKindTest {
private static final DeployResourceKind vpcKind = DeployResourceKind.VPC;
private static final DeployResourceKind volumeKind = DeployResourceKind.VOLUME;
private static final DeployResourceKind unknownKind = DeployResourceKind.UNKNOWN;
private static final DeployResourceKind securityGroupKind = DeployResourceKind.SECURITY_GROUP;
private static final DeployResourceKind securityGroupRuleKind =
DeployResourceKind.SECURITY_GROUP_RULE;
private static final DeployResourceKind keyPairKind = DeployResourceKind.KEYPAIR;

@Test
void testGetByValue() {
assertEquals(vmKind, DeployResourceKind.VM.getByValue("vm"));
assertEquals(containerKind, DeployResourceKind.CONTAINER.getByValue("container"));
assertThrows(UnsupportedEnumValueException.class,
() -> DeployResourceKind.UNKNOWN.getByValue("publicIP"));
assertEquals(vpcKind, DeployResourceKind.VPC.getByValue("vpc"));
assertEquals(volumeKind, DeployResourceKind.VOLUME.getByValue("volume"));
assertEquals(vmKind, DeployResourceKind.UNKNOWN.getByValue("vm"));
assertEquals(containerKind, DeployResourceKind.UNKNOWN.getByValue("container"));
assertEquals(publicIpKind, DeployResourceKind.UNKNOWN.getByValue("publicIP"));
assertEquals(vpcKind, DeployResourceKind.UNKNOWN.getByValue("vpc"));
assertEquals(volumeKind, DeployResourceKind.UNKNOWN.getByValue("volume"));
assertEquals(unknownKind, DeployResourceKind.UNKNOWN.getByValue("unknown"));
assertEquals(securityGroupKind, DeployResourceKind.UNKNOWN.getByValue("Security_Group"));
assertEquals(securityGroupRuleKind,
DeployResourceKind.UNKNOWN.getByValue("security_Group_rule"));
assertEquals(keyPairKind, DeployResourceKind.UNKNOWN.getByValue("Keypair"));
assertThrows(UnsupportedEnumValueException.class,
() -> DeployResourceKind.UNKNOWN.getByValue("unavailable"));
}
Expand All @@ -45,6 +52,9 @@ void testToValue() {
assertEquals("vpc", vpcKind.toValue());
assertEquals("volume", volumeKind.toValue());
assertEquals("unknown", unknownKind.toValue());
assertEquals("security_group", securityGroupKind.toValue());
assertEquals("security_group_rule", securityGroupRuleKind.toValue());
assertEquals("keypair", keyPairKind.toValue());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,19 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.resource.TfOutput;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.resource.TfState;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.resource.TfStateResource;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.resource.TfStateResourceInstance;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.utils.TfResourceTransUtils;
import org.eclipse.xpanse.modules.models.service.deploy.DeployResource;
import org.eclipse.xpanse.modules.models.service.deploy.DeployResourceProperties;
import org.eclipse.xpanse.modules.models.service.deploy.DeployResult;
import org.eclipse.xpanse.modules.models.service.deploy.enums.DeployResourceKind;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.TerraformExecutorException;
import org.eclipse.xpanse.modules.orchestrator.deployment.DeployResourceHandler;
import org.eclipse.xpanse.plugins.flexibleengine.models.FlexibleEngineResourceProperty;
import org.eclipse.xpanse.plugins.flexibleengine.models.FlexibleEngineTerraformResourceProperties;
import org.springframework.stereotype.Component;

/**
Expand Down Expand Up @@ -59,55 +60,21 @@ public void handler(DeployResult deployResult) {
deployResult.getProperties().put(outputKey, tfOutput.getValue());
}
}
Set<String> supportTypes =
FlexibleEngineTerraformResourceProperties.getTerraformResourceTypes();
for (TfStateResource tfStateResource : tfState.getResources()) {
if (tfStateResource.getType().equals("flexibleengine_compute_instance_v2")) {
for (TfStateResourceInstance instance : tfStateResource.getInstances()) {
DeployResource deployResource = new DeployResource();
deployResource.setKind(DeployResourceKind.VM);
TfResourceTransUtils.fillDeployResource(instance, deployResource,
FlexibleEngineResourceProperty.getProperties(
DeployResourceKind.VM));
deployResourceList.add(deployResource);
}
}
if (tfStateResource.getType().equals("flexibleengine_vpc_eip")) {
for (TfStateResourceInstance instance : tfStateResource.getInstances()) {
DeployResource deployResource = new DeployResource();
deployResource.setKind(DeployResourceKind.PUBLIC_IP);
TfResourceTransUtils.fillDeployResource(instance, deployResource,
FlexibleEngineResourceProperty.getProperties(
DeployResourceKind.PUBLIC_IP));
deployResourceList.add(deployResource);
}
}
if (tfStateResource.getType().equals("flexibleengine_vpc_subnet_v1")) {
for (TfStateResourceInstance instance : tfStateResource.getInstances()) {
DeployResource deployResource = new DeployResource();
deployResource.setKind(DeployResourceKind.SUBNET);
TfResourceTransUtils.fillDeployResource(instance, deployResource,
FlexibleEngineResourceProperty.getProperties(
DeployResourceKind.SUBNET));
deployResourceList.add(deployResource);
}
}
if (tfStateResource.getType().equals("flexibleengine_blockstorage_volume_v2")) {
for (TfStateResourceInstance instance : tfStateResource.getInstances()) {
DeployResource deployResource = new DeployResource();
deployResource.setKind(DeployResourceKind.VOLUME);
TfResourceTransUtils.fillDeployResource(instance, deployResource,
FlexibleEngineResourceProperty.getProperties(
DeployResourceKind.VOLUME));
deployResourceList.add(deployResource);
}
}
if (tfStateResource.getType().equals("flexibleengine_vpc_v1")) {
for (TfStateResourceInstance instance : tfStateResource.getInstances()) {
DeployResource deployResource = new DeployResource();
deployResource.setKind(DeployResourceKind.VPC);
TfResourceTransUtils.fillDeployResource(instance, deployResource,
FlexibleEngineResourceProperty.getProperties(
DeployResourceKind.VPC));
deployResourceList.add(deployResource);
if (supportTypes.contains(tfStateResource.getType())) {
DeployResourceProperties deployResourceProperties =
FlexibleEngineTerraformResourceProperties.getDeployResourceProperties(
tfStateResource.getType());
if (Objects.nonNull(deployResourceProperties)) {
for (TfStateResourceInstance instance : tfStateResource.getInstances()) {
DeployResource deployResource = new DeployResource();
deployResource.setKind(deployResourceProperties.getResourceKind());
TfResourceTransUtils.fillDeployResource(instance, deployResource,
deployResourceProperties.getResourceProperties());
deployResourceList.add(deployResource);
}
}
}
}
Expand Down

0 comments on commit 87b5530

Please sign in to comment.