Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ package ai.digital.integration.server.common.constant
enum class ClusterProfileName(val profileName: String) {
DOCKER_COMPOSE("dockerCompose"),
OPERATOR("operator"),
TERRAFORM("terraform")
TERRAFORM("terraform"),
XL_BLUEPRINT("xlBlueprint")
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,18 @@ internal class DefaultProfileContainer(delegate: NamedDomainObjectContainer<Prof
}) as TerraformProfile
}

override fun xlBlueprint(): XlBlueprintProfile = xlBlueprint {}

override fun xlBlueprint(closure: Closure<*>): XlBlueprintProfile {
return xlBlueprint(ConfigureUtil.configureUsing(closure))
}
override fun xlBlueprint(action: Action<in Profile>): XlBlueprintProfile {
return (findByName("xlBlueprint")
?: create("xlBlueprint") {
action.execute(this)
}) as XlBlueprintProfile
}

override fun configure(configureClosure: Closure<*>): NamedDomainObjectContainer<Profile> =
ConfigureUtil.configureSelf(configureClosure,
this,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,9 @@ interface ProfileContainer : NamedDomainObjectContainer<Profile> {
fun terraform(): TerraformProfile
fun terraform(closure: Closure<*>): TerraformProfile
fun terraform(action: Action<in Profile>): TerraformProfile

fun xlBlueprint(): XlBlueprintProfile
fun xlBlueprint(closure: Closure<*>): XlBlueprintProfile
fun xlBlueprint(action: Action<in Profile>): XlBlueprintProfile
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package ai.digital.integration.server.common.domain.profiles

import org.gradle.api.Project
import javax.inject.Inject

@Suppress("UnstableApiUsage")
open class XlBlueprintProfile @Inject constructor(project: Project) : Profile {

val name: String = "xlBlueprint"

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ abstract class CommonIntegrationServerExtension(val project: Project) {
project.objects.newInstance(OperatorProfile::class, name, project)
ClusterProfileName.TERRAFORM.profileName ->
project.objects.newInstance(TerraformProfile::class, name, project)
ClusterProfileName.XL_BLUEPRINT.profileName ->
project.objects.newInstance(XlBlueprintProfile::class, project)
else ->
throw IllegalArgumentException("Profile name `$name` is not supported. Choose one of ${
ClusterProfileName.values().joinToString { profileEnum -> profileEnum.profileName }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,6 @@ open class DeployIntegrationServerExtension(
val kubeScanner = project.objects.property<KubeScanner>().value(KubeScanner(project.objects))

fun kubeScanner(action: Action<in KubeScanner>) = action.execute(kubeScanner.get())


}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ import ai.digital.integration.server.deploy.tasks.cluster.operator.vmwareopenshi
import ai.digital.integration.server.deploy.tasks.cluster.operator.vmwareopenshift.OperatorBasedVmWareOpenShiftStopDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.terraform.TerraformBasedAwsEksStartDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.terraform.TerraformBasedAwsEksStopDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.xlblueprint.XlBlueprintBasedStartDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.xlblueprint.XlBlueprintBasedStopDeployClusterTask
import ai.digital.integration.server.deploy.tasks.maintenance.CleanupBeforeStartupTask
import ai.digital.integration.server.deploy.tasks.provision.RunDatasetGenerationTask
import ai.digital.integration.server.deploy.tasks.provision.RunDevOpsAsCodeTask
Expand Down Expand Up @@ -70,77 +72,81 @@ open class DeployTaskRegistry {

// Cluster Operator
project.tasks.create(OperatorBasedAwsEksDeployClusterStartTask.NAME,
OperatorBasedAwsEksDeployClusterStartTask::class.java)
OperatorBasedAwsEksDeployClusterStartTask::class.java)
project.tasks.create(OperatorBasedAwsEksDeployClusterStopTask.NAME,
OperatorBasedAwsEksDeployClusterStopTask::class.java)
OperatorBasedAwsEksDeployClusterStopTask::class.java)

project.tasks.create(OperatorBasedAwsOpenShiftDeployClusterStartTask.NAME,
OperatorBasedAwsOpenShiftDeployClusterStartTask::class.java)
OperatorBasedAwsOpenShiftDeployClusterStartTask::class.java)
project.tasks.create(OperatorBasedAwsOpenShiftDeployClusterStopTask.NAME,
OperatorBasedAwsOpenShiftDeployClusterStopTask::class.java)
OperatorBasedAwsOpenShiftDeployClusterStopTask::class.java)

project.tasks.create(OperatorBasedAzureAksStartDeployClusterTask.NAME,
OperatorBasedAzureAksStartDeployClusterTask::class.java)
OperatorBasedAzureAksStartDeployClusterTask::class.java)
project.tasks.create(OperatorBasedAzureAksStopDeployClusterTask.NAME,
OperatorBasedAzureAksStopDeployClusterTask::class.java)
OperatorBasedAzureAksStopDeployClusterTask::class.java)

project.tasks.create(OperatorBasedGcpGkeStartDeployClusterTask.NAME,
OperatorBasedGcpGkeStartDeployClusterTask::class.java)
OperatorBasedGcpGkeStartDeployClusterTask::class.java)
project.tasks.create(OperatorBasedGcpGkeStopDeployClusterTask.NAME,
OperatorBasedGcpGkeStopDeployClusterTask::class.java)
OperatorBasedGcpGkeStopDeployClusterTask::class.java)

project.tasks.create(OperatorBasedOnPremStartDeployClusterTask.NAME,
OperatorBasedOnPremStartDeployClusterTask::class.java)
OperatorBasedOnPremStartDeployClusterTask::class.java)
project.tasks.create(OperatorBasedOnPremStopDeployClusterTask.NAME,
OperatorBasedOnPremStopDeployClusterTask::class.java)
OperatorBasedOnPremStopDeployClusterTask::class.java)

project.tasks.create(OperatorBasedVmWareOpenShiftStartDeployClusterTask.NAME,
OperatorBasedVmWareOpenShiftStartDeployClusterTask::class.java)
OperatorBasedVmWareOpenShiftStartDeployClusterTask::class.java)
project.tasks.create(OperatorBasedVmWareOpenShiftStopDeployClusterTask.NAME,
OperatorBasedVmWareOpenShiftStopDeployClusterTask::class.java)
OperatorBasedVmWareOpenShiftStopDeployClusterTask::class.java)

project.tasks.create(OperatorBasedStartDeployClusterTask.NAME,
OperatorBasedStartDeployClusterTask::class.java)
OperatorBasedStartDeployClusterTask::class.java)
project.tasks.create(OperatorBasedStopDeployClusterTask.NAME,
OperatorBasedStopDeployClusterTask::class.java)
OperatorBasedStopDeployClusterTask::class.java)

project.tasks.create(CheckingOutDeployKubernetesOperatorTask.NAME,
CheckingOutDeployKubernetesOperatorTask::class.java)
CheckingOutDeployKubernetesOperatorTask::class.java)
project.tasks.create(OperatorCentralConfigurationTask.NAME, OperatorCentralConfigurationTask::class.java)
project.tasks.create(StartDeployServerForOperatorInstanceTask.NAME,
StartDeployServerForOperatorInstanceTask::class.java)
StartDeployServerForOperatorInstanceTask::class.java)
project.tasks.create(StopDeployServerForOperatorInstanceTask.NAME,
StopDeployServerForOperatorInstanceTask::class.java)
StopDeployServerForOperatorInstanceTask::class.java)
project.tasks.create(PrepareOperatorServerTask.NAME,
PrepareOperatorServerTask::class.java)
PrepareOperatorServerTask::class.java)

// Cluster Terraform
project.tasks.create(TerraformBasedAwsEksStartDeployClusterTask.NAME,
TerraformBasedAwsEksStartDeployClusterTask::class.java)
TerraformBasedAwsEksStartDeployClusterTask::class.java)
project.tasks.create(TerraformBasedAwsEksStopDeployClusterTask.NAME,
TerraformBasedAwsEksStopDeployClusterTask::class.java)
TerraformBasedAwsEksStopDeployClusterTask::class.java)

// Cluster Docker Compose
project.tasks.create(DockerComposeBasedStartDeployClusterTask.NAME,
DockerComposeBasedStartDeployClusterTask::class.java)
DockerComposeBasedStartDeployClusterTask::class.java)
project.tasks.create(DockerComposeBasedStopDeployClusterTask.NAME,
DockerComposeBasedStopDeployClusterTask::class.java)
DockerComposeBasedStopDeployClusterTask::class.java)

// Cluster Xl Blueprint
project.tasks.create(XlBlueprintBasedStartDeployClusterTask.NAME, XlBlueprintBasedStartDeployClusterTask::class.java)
project.tasks.create(XlBlueprintBasedStopDeployClusterTask.NAME, XlBlueprintBasedStopDeployClusterTask::class.java)

//Database
project.tasks.create(DatabaseStartTask.NAME, DatabaseStartTask::class.java)
project.tasks.create(DatabaseStopTask.NAME, DatabaseStopTask::class.java)

//Deploy Server
project.tasks.create(ApplicationConfigurationOverrideTask.NAME,
ApplicationConfigurationOverrideTask::class.java)
ApplicationConfigurationOverrideTask::class.java)
project.tasks.create(CentralConfigurationTask.NAME, CentralConfigurationTask::class.java)
project.tasks.create(CheckUILibVersionsTask.NAME, CheckUILibVersionsTask::class.java)
project.tasks.create(CopyServerBuildArtifactsTask.NAME, CopyServerBuildArtifactsTask::class.java)
project.tasks.create(CopyServerFoldersTask.NAME, CopyServerFoldersTask::class.java)
project.tasks.create(ServerCopyOverlaysTask.NAME, ServerCopyOverlaysTask::class.java)
project.tasks.create(DockerBasedStopDeployTask.NAME, DockerBasedStopDeployTask::class.java)
project.tasks.create(DownloadAndExtractDbUnitDataDistTask.NAME,
DownloadAndExtractDbUnitDataDistTask::class.java)
DownloadAndExtractDbUnitDataDistTask::class.java)
project.tasks.create(DownloadAndExtractServerDistTask.NAME, DownloadAndExtractServerDistTask::class.java)
project.tasks.create(ExportDatabaseTask.NAME, ExportDatabaseTask::class.java)
project.tasks.create(GenerateSecureAkkaKeysTask.NAME, GenerateSecureAkkaKeysTask::class.java)
Expand All @@ -153,17 +159,17 @@ open class DeployTaskRegistry {
project.tasks.create(ServerYamlPatchTask.NAME, ServerYamlPatchTask::class.java)
project.tasks.create(StartServerInstanceTask.NAME, StartServerInstanceTask::class.java)
project.tasks.create(TlsApplicationConfigurationOverrideTask.NAME,
TlsApplicationConfigurationOverrideTask::class.java)
TlsApplicationConfigurationOverrideTask::class.java)

//Infrastructure
project.tasks.create(GitlabStartTask.NAME, GitlabStartTask::class.java)
project.tasks.create(GitlabStopTask.NAME, GitlabStopTask::class.java)

//Integration Server
project.tasks.create(StopDeployIntegrationServerTask.NAME,
StopDeployIntegrationServerTask::class.java)
StopDeployIntegrationServerTask::class.java)
project.tasks.create(StartDeployIntegrationServerTask.NAME, StartDeployIntegrationServerTask::class.java)
.dependsOn(itcfg)
.dependsOn(itcfg)

//Maintenance
project.tasks.create(CleanupBeforeStartupTask.NAME, CleanupBeforeStartupTask::class.java)
Expand All @@ -177,7 +183,7 @@ open class DeployTaskRegistry {

//Satellite
project.tasks.create(DownloadAndExtractSatelliteDistTask.NAME,
DownloadAndExtractSatelliteDistTask::class.java)
DownloadAndExtractSatelliteDistTask::class.java)
project.tasks.create(PrepareSatellitesTask.NAME, PrepareSatellitesTask::class.java)
project.tasks.create(SatelliteOverlaysTask.NAME, SatelliteOverlaysTask::class.java)
project.tasks.create(SatelliteSyncPluginsTask.NAME, SatelliteSyncPluginsTask::class.java)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import ai.digital.integration.server.deploy.tasks.cli.RunCliTask
import ai.digital.integration.server.deploy.tasks.cluster.dockercompose.DockerComposeBasedStartDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.operator.OperatorBasedStartDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.terraform.TerraformBasedAwsEksStartDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.xlblueprint.XlBlueprintBasedStartDeployClusterTask
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

Expand All @@ -24,6 +25,8 @@ open class StartDeployClusterTask : DefaultTask() {
when (val profileName = DeployClusterUtil.getProfile(project)) {
ClusterProfileName.DOCKER_COMPOSE.profileName ->
DockerComposeBasedStartDeployClusterTask.NAME
ClusterProfileName.XL_BLUEPRINT.profileName ->
XlBlueprintBasedStartDeployClusterTask.NAME
ClusterProfileName.OPERATOR.profileName ->
OperatorBasedStartDeployClusterTask.NAME
ClusterProfileName.TERRAFORM.profileName -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import ai.digital.integration.server.deploy.internals.cluster.DeployClusterUtil
import ai.digital.integration.server.deploy.tasks.cluster.dockercompose.DockerComposeBasedStopDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.operator.OperatorBasedStopDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.terraform.TerraformBasedAwsEksStopDeployClusterTask
import ai.digital.integration.server.deploy.tasks.cluster.xlblueprint.XlBlueprintBasedStopDeployClusterTask
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

Expand All @@ -23,6 +24,8 @@ open class StopDeployClusterTask : DefaultTask() {
when (val profileName = DeployClusterUtil.getProfile(project)) {
ClusterProfileName.DOCKER_COMPOSE.profileName ->
DockerComposeBasedStopDeployClusterTask.NAME
ClusterProfileName.XL_BLUEPRINT.profileName ->
XlBlueprintBasedStopDeployClusterTask.NAME
ClusterProfileName.OPERATOR.profileName ->
OperatorBasedStopDeployClusterTask.NAME
ClusterProfileName.TERRAFORM.profileName -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package ai.digital.integration.server.deploy.tasks.cluster.xlblueprint

import ai.digital.integration.server.common.constant.PluginConstant
import ai.digital.integration.server.deploy.internals.cluster.DeployDockerClusterHelper
import ai.digital.integration.server.deploy.tasks.server.operator.StartDeployServerForOperatorInstanceTask
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

open class XlBlueprintBasedStartDeployClusterTask : DefaultTask() {

companion object {
const val NAME = "xlBlueprintBasedStartDeployCluster"
}

init {
group = PluginConstant.PLUGIN_GROUP
this.dependsOn(StartDeployServerForOperatorInstanceTask.NAME)
}

@TaskAction
fun launch() {
project.logger.lifecycle("Xl Blueprint based Deploy Cluster has started.")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package ai.digital.integration.server.deploy.tasks.cluster.xlblueprint

import ai.digital.integration.server.common.constant.PluginConstant
import ai.digital.integration.server.common.util.FileUtil
import ai.digital.integration.server.deploy.internals.CliUtil
import ai.digital.integration.server.deploy.tasks.cli.DownloadAndExtractCliDistTask
import ai.digital.integration.server.deploy.tasks.server.operator.StopDeployServerForOperatorInstanceTask
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import java.io.IOException
import java.nio.file.Paths

open class XlBlueprintBasedStopDeployClusterTask : DefaultTask() {

companion object {
const val NAME = "xlBlueprintBasedStopDeployCluster"
}

init {
group = PluginConstant.PLUGIN_GROUP
this.dependsOn(DownloadAndExtractCliDistTask.NAME)
this.finalizedBy(StopDeployServerForOperatorInstanceTask.NAME)
}

@TaskAction
fun launch() {
val fileStream = {}::class.java.classLoader.getResourceAsStream("xl-blueprint/python/undeploy.py")

val resultComposeFilePath = Paths.get(project.buildDir.toPath().resolve("xlBlueprint-work").toAbsolutePath().toString(), "undeploy.py")
fileStream?.let {
FileUtil.copyFile(it, resultComposeFilePath)
}
return try {
CliUtil.executeScripts(project,
listOf(resultComposeFilePath.toFile()),
"undeploy.py",
auxiliaryServer = true)

} catch (e: RuntimeException) {
project.logger.error("Undeploy didn't run. Check if operator's deploy server is running on port 4516: ${e.message}")

} catch (e: IOException) {
project.logger.error("Undeploy didn't run. Check if operator's deploy server has all files: ${e.message}")

}
}
}
21 changes: 21 additions & 0 deletions src/main/resources/xl-blueprint/python/undeploy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

def undeploy(ci):
if repository.exists(ci):
print("Undeploying " + ci)
ci_undeploy_task = deployment.createUndeployTask(ci)
deployit.startTaskAndWait(ci_undeploy_task.id)
else:
print("Skip undeploy of " + ci + ", CI does not exist")

xl_release_deployment = "Environments/XEBIALABS/K8S/XL-Release-Deployment"
xl_deploy_deployment = "Environments/XEBIALABS/K8S/XL-Deploy-Deployment"
answers_configmap_deployment = "Environments/XEBIALABS/K8S/Answers-Configmap-Deployment"
k8s_deployment = "Environments/XEBIALABS/K8S/K8s-NameSpace"

undeploy(xl_release_deployment)
undeploy(xl_deploy_deployment)
answer_deployment = repository.read(answers_configmap_deployment)
answer_deployment.undeployDependencies = 'true'
repository.update(answer_deployment)
undeploy(answers_configmap_deployment)
undeploy(k8s_deployment)