Skip to content

Commit

Permalink
add openTofu as a new deployer
Browse files Browse the repository at this point in the history
  • Loading branch information
baixinsui committed Jan 25, 2024
1 parent 88f748e commit d48861f
Show file tree
Hide file tree
Showing 82 changed files with 3,832 additions and 584 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ jobs:
with:
java-version: 21
distribution: 'temurin'
- name: Set up OpenTofu
uses: opentofu/setup-opentofu@v1
with:
tofu_version: 1.6.0
- name: Build
run: mvn --batch-mode --update-snapshots --no-transfer-progress verify
- name: Generate API doc
Expand Down
8 changes: 7 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
FROM eclipse-temurin:21-jre-alpine

ENV TERRAFORM_VERSION=1.4.4
ENV TERRAFORM_VERSION=1.6.0
ENV OPENTOFU_VERSION=1.6.0
ENV XPANSE_USER=xpanse
ENV XPANSE_HOME_DIR=/home/xpanse

Expand All @@ -13,6 +14,11 @@ RUN wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform
RUN unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip
RUN mv terraform /usr/bin/terraform

# Install OpenTofu
RUN wget https://github.com/opentofu/opentofu/releases/download/v${OPENTOFU_VERSION}/tofu_${OPENTOFU_VERSION}_linux_amd64.zip
RUN unzip tofu_${OPENTOFU_VERSION}_linux_amd64.zip
RUN mv tofu /usr/bin/tofu

# Copy the script for starting xpanse with private key
COPY start-xpanse-with-private_key.sh /start-xpanse-with-private_key.sh
RUN chmod +x /start-xpanse-with-private_key.sh
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

import java.util.Collections;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.exceptions.TerraformBootRequestFailedException;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.exceptions.TerraformExecutorException;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.exceptions.TerraformProviderNotFoundException;
import org.eclipse.xpanse.modules.models.response.Response;
import org.eclipse.xpanse.modules.models.response.ResultType;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.ActivitiTaskNotFoundException;
Expand All @@ -17,9 +20,6 @@
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.PluginNotFoundException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.ServiceDetailsNotAccessible;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.ServiceNotDeployedException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.TerraformBootRequestFailedException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.TerraformExecutorException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.TerraformProviderNotFoundException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.VariableInvalidException;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
import org.eclipse.xpanse.modules.deployment.DeployServiceEntityHandler;
import org.eclipse.xpanse.modules.deployment.DeployerKindManager;
import org.eclipse.xpanse.modules.deployment.ServiceDetailsViewManager;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.exceptions.TerraformExecutorException;
import org.eclipse.xpanse.modules.deployment.deployers.terraform.exceptions.TerraformProviderNotFoundException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.DeployerNotFoundException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.FlavorInvalidException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.InvalidDeploymentVariableException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.InvalidServiceStateException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.PluginNotFoundException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.ServiceNotDeployedException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.TerraformExecutorException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.TerraformProviderNotFoundException;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.VariableInvalidException;
import org.eclipse.xpanse.modules.security.IdentityProviderManager;
import org.eclipse.xpanse.modules.workflow.utils.WorkflowUtils;
Expand Down
5 changes: 5 additions & 0 deletions modules/common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,10 @@
<artifactId>commons-io</artifactId>
<version>${apache.commons.io.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.commons.lang.version}</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*
*/

package org.eclipse.xpanse.modules.deployment.deployers.terraform.utils;
package org.eclipse.xpanse.common.systemcmd;

import java.io.BufferedReader;
import java.io.File;
Expand All @@ -21,21 +21,18 @@
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.xpanse.modules.models.service.deploy.exceptions.TerraformExecutorException;
import org.slf4j.MDC;

/**
* Executes operating system commands.
*/
@Setter
@Getter
@Slf4j
public class SystemCmd {

@Setter
@Getter
private Map<String, String> env;

@Setter
@Getter
private String workDir = "";

public SystemCmdResult execute(String cmd) {
Expand Down Expand Up @@ -81,18 +78,14 @@ public SystemCmdResult execute(String cmd, int waitSecond) {
}
log.debug("stdout of the command: " + systemCmdResult.getCommandStdOutput());
log.debug("stderr of the command: " + systemCmdResult.getCommandStdError());
} catch (final IOException ex) {
} catch (final IOException | ExecutionException ex) {
systemCmdResult.setCommandSuccessful(false);
systemCmdResult.setCommandStdError(ex.getMessage());
} catch (final InterruptedException ex) {
log.error("SystemCmd process be interrupted.");
Thread.currentThread().interrupt();
systemCmdResult.setCommandSuccessful(false);
systemCmdResult.setCommandStdError(ex.getMessage());
} catch (ExecutionException e) {
systemCmdResult.setCommandSuccessful(false);
systemCmdResult.setCommandStdError(e.getMessage());
throw new TerraformExecutorException(e.getMessage());
}
return systemCmdResult;
}
Expand All @@ -104,7 +97,7 @@ private String readStream(BufferedReader bufferedReader, Map<String, String> con
bufferedReader.lines().forEach(line -> {
log.info(line);
// skip adding new line for the first line.
if (stringBuilder.length() > 0) {
if (!stringBuilder.isEmpty()) {
stringBuilder.append(System.lineSeparator());
}
stringBuilder.append(line);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-FileCopyrightText: Huawei Inc.
*/

package org.eclipse.xpanse.modules.deployment.deployers.terraform.utils;
package org.eclipse.xpanse.common.systemcmd;

import lombok.Data;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-FileCopyrightText: Huawei Inc.
*/

package org.eclipse.xpanse.modules.deployment.deployers.terraform.utils;
package org.eclipse.xpanse.common.systemcmd;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
Expand Down Expand Up @@ -41,7 +41,6 @@ void testGetterAndSetter() {

@Test
public void testEqualsAndHashCode() {
assertEquals(systemCmdResult, systemCmdResult);
assertEquals(systemCmdResult.hashCode(), systemCmdResult.hashCode());

Object obj = new Object();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* SPDX-FileCopyrightText: Huawei Inc.
*/

package org.eclipse.xpanse.modules.deployment.deployers.terraform.utils;
package org.eclipse.xpanse.common.systemcmd;

import org.apache.commons.lang3.SystemUtils;
import org.junit.jupiter.api.Assertions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,6 @@ public List<Metric> getMetricsForService(ServiceMetricsRequest serviceMetricRequ
return null;
}

@Override
public String getProvider(String region) {
return null;
}

@Override
public boolean startService(ServiceStateManageRequest serviceStateManageRequest) {
return true;
Expand All @@ -109,5 +104,10 @@ public boolean stopService(ServiceStateManageRequest serviceStateManageRequest)
public boolean restartService(ServiceStateManageRequest serviceStateManageRequest) {
return true;
}

@Override
public String getProvider(DeployerKind deployerKind, String region) {
return null;
}
}

0 comments on commit d48861f

Please sign in to comment.