Skip to content

Commit

Permalink
REST based statistics support (#267)
Browse files Browse the repository at this point in the history
  • Loading branch information
eytannnaim committed Sep 14, 2023
1 parent 0ef4744 commit 40457be
Show file tree
Hide file tree
Showing 18 changed files with 377 additions and 10 deletions.
43 changes: 36 additions & 7 deletions .github/workflows/deploy_module.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,27 @@ jobs:
matrix:
include:
# Sonar
## aws provider
- source_module: "aws/hub"
destination_repo: "terraform-aws-dsf-hub"
hidden_submodule: "aws/sonar-base-instance"
hidden_submodules: "aws/sonar-base-instance aws/statistics null/statistics"
- source_module: "aws/agentless-gw"
destination_repo: "terraform-aws-dsf-agentless-gw"
hidden_submodule: "aws/sonar-base-instance"
hidden_submodules: "aws/sonar-base-instance aws/statistics null/statistics"

- source_module: "aws/poc-db-onboarder"
destination_repo: "terraform-aws-dsf-poc-db-onboarder"
public_submodule: "aws/rds-mysql-db aws/rds-mssql-db"

## azurerm provider
- source_module: "azurerm/hub"
destination_repo: "terraform-azurerm-dsf-hub"
hidden_submodules: "azurerm/sonar-base-instance azurerm/statistics null/statistics"
- source_module: "azurerm/agentless-gw"
destination_repo: "terraform-azurerm-dsf-agentless-gw"
hidden_submodules: "azurerm/sonar-base-instance azurerm/statistics null/statistics"

## null provider
- source_module: "null/hadr"
destination_repo: "terraform-null-dsf-hadr"
- source_module: "null/federation"
Expand All @@ -45,22 +60,27 @@ jobs:
public_submodule: "aws/rds-mysql-db aws/rds-mssql-db"

# DAM
## aws provider
- source_module: "aws/mx"
destination_repo: "terraform-aws-dsf-mx"
hidden_submodule: "aws/dam-base-instance"
hidden_submodules: "aws/dam-base-instance aws/statistics null/statistics"
- source_module: "aws/agent-gw"
destination_repo: "terraform-aws-dsf-agent-gw"
hidden_submodule: "aws/dam-base-instance"
hidden_submodules: "aws/dam-base-instance aws/statistics null/statistics"
- source_module: "aws/db-with-agent"
destination_repo: "terraform-aws-dsf-db-with-agent"
## null provider
- source_module: "null/agent-gw-cluster-setup"
destination_repo: "terraform-null-dsf-agent-gw-cluster-setup"

# DRA
## aws provider
- source_module: "aws/dra-admin"
destination_repo: "terraform-aws-dsf-dra-admin"
hidden_submodules: "aws/statistics null/statistics"
- source_module: "aws/dra-analytics"
destination_repo: "terraform-aws-dsf-dra-analytics"
hidden_submodules: "aws/statistics null/statistics"


# Globals
Expand All @@ -70,7 +90,7 @@ jobs:
env:
source_module: ${{ matrix.source_module }}
destination_repo: ${{ matrix.destination_repo }}
hidden_submodule: ${{ matrix.hidden_submodule }}
hidden_submodules: ${{ matrix.hidden_submodules }}
public_submodule: ${{ matrix.public_submodule }}

outputs:
Expand All @@ -88,9 +108,18 @@ jobs:
run: |
set -x
git branch
if [ -n "${hidden_submodule}" ]; then
git filter-branch -f --prune-empty --tree-filter 'sed -i "s/..\/..\/..\/modules\/"$(dirname ${hidden_submodule})"/.\/_modules/g" modules/${source_module}/main.tf; mkdir -p modules/${source_module}/_modules; mv modules/${hidden_submodule} modules/${source_module}/_modules/; true;' --tag-name-filter cat -- --all HEAD
if [ -n "${hidden_submodules}" ]; then
cmd=""
for i in ${hidden_submodules}; do
target_dir=_modules/$i
cmd="$cmd mkdir -p $(dirname modules/${source_module}/$target_dir); mv modules/$i modules/${source_module}/$target_dir;"
cmd="$cmd sed -i \"s/\/modules\//\/_modules\//g\" modules/${source_module}/${target_dir}/*.tf;"
done
cmd="$cmd sed -i \"s/..\/..\/..\/modules/.\/_modules/g\" modules/${source_module}/*.tf;"
cmd="$cmd true;"
git filter-branch -f --prune-empty --tree-filter "$cmd" --tag-name-filter cat -- --all HEAD
fi
if [ -n "${public_submodule}" ]; then
for m in ${public_submodule}; do
git filter-branch -f --prune-empty --tree-filter 'mkdir -p modules/'${source_module}'/modules; mv modules/'${m}' modules/'${source_module}'/modules/; true;' --tag-name-filter cat -- --all HEAD
Expand Down
18 changes: 17 additions & 1 deletion modules/aws/dam-base-instance/userdata.tf
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ locals {

data "aws_region" "current" {}

module "statistics" {
source = "../../../modules/aws/statistics"
deployment_name = var.name
product = "DAM"
resource_type = var.resource_type
artifact = "ami://${data.aws_ami.selected-ami.image_id}"
}

resource "null_resource" "readiness" {
count = var.instance_readiness_params.enable == true ? 1 : 0
provisioner "local-exec" {
Expand Down Expand Up @@ -64,4 +72,12 @@ resource "null_resource" "readiness" {
instance_id = aws_instance.dsf_base_instance.id
commands = var.instance_readiness_params.commands
}
}
}

module "statistics_success" {
source = "../../../modules/aws/statistics"

id = module.statistics.id
initialization_status = "success"
depends_on = [ null_resource.readiness ]
}
8 changes: 8 additions & 0 deletions modules/aws/dra-admin/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,12 @@ resource "aws_network_interface" "eni" {
subnet_id = var.subnet_id
security_groups = local.security_group_ids
tags = var.tags
}

module "statistics" {
source = "../../../modules/aws/statistics"
deployment_name = var.friendly_name
product = "DRA"
resource_type = "dra-admin"
artifact = "ami://${data.aws_ami.selected-ami.image_id}"
}
8 changes: 8 additions & 0 deletions modules/aws/dra-analytics/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,14 @@ resource "aws_network_interface" "eni" {
tags = var.tags
}

module "statistics" {
source = "../../../modules/aws/statistics"
deployment_name = var.friendly_name
product = "DRA"
resource_type = "dra-analytics"
artifact = "ami://${data.aws_ami.selected-ami.image_id}"
}

resource "null_resource" "waiter_cmds" {
provisioner "local-exec" {
command = local.waiter_cmds_script
Expand Down
19 changes: 18 additions & 1 deletion modules/aws/sonar-base-instance/userdata.tf
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ locals {

resource "random_uuid" "jsonar_uuid" {}

module "statistics" {
source = "../../../modules/aws/statistics"
deployment_name = var.name
product = "SONAR"
resource_type = var.resource_type
artifact = "s3://${var.binaries_location.s3_bucket}/${var.binaries_location.s3_key}"
}

resource "null_resource" "readiness" {
count = var.skip_instance_health_verification == true ? 0 : 1
connection {
Expand Down Expand Up @@ -58,6 +66,15 @@ resource "null_resource" "readiness" {
}

depends_on = [
aws_eip_association.eip_assoc
aws_eip_association.eip_assoc,
module.statistics
]
}

module "statistics_success" {
source = "../../../modules/aws/statistics"

id = module.statistics.id
initialization_status = "success"
depends_on = [ null_resource.readiness ]
}
19 changes: 19 additions & 0 deletions modules/aws/statistics/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

module "statistics" {
source = "../../../modules/null/statistics"

id = var.id
deployment_name = var.deployment_name
artifact = var.artifact
product = var.product
resource_type = var.resource_type
platform = "aws"
account_id = data.aws_caller_identity.current.account_id
location = data.aws_region.current.name
initialization_status = var.initialization_status
additional_info = var.additional_info
}

data "aws_caller_identity" "current" {}

data "aws_region" "current" {}
3 changes: 3 additions & 0 deletions modules/aws/statistics/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
output "id" {
value = module.statistics.id
}
41 changes: 41 additions & 0 deletions modules/aws/statistics/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
variable "id" {
type = string
default = null
description = "Id indexing the statistics item. Used to overide/update an entry"
}

variable "deployment_name" {
type = string
description = "Deployment name"
default = null
}

variable "artifact" {
type = string
description = "Artifact"
default = null
}

variable "product" {
type = string
description = "Product"
default = null
}

variable "resource_type" {
type = string
description = "Resource type"
default = null
}

variable "initialization_status" {
type = string
default = null
description = "Initialization status"
}

variable "additional_info" {
type = map(any)
default = null
description = "Additional info (json string)"
}
10 changes: 10 additions & 0 deletions modules/aws/statistics/versions.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
terraform {
required_version = ">= 1.3.1, < 1.6.0"

required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 4.23.0"
}
}
}
20 changes: 19 additions & 1 deletion modules/azurerm/sonar-base-instance/userdata.tf
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,15 @@ locals {

resource "random_uuid" "jsonar_uuid" {}

module "statistics" {
source = "../../../modules/azurerm/statistics"
deployment_name = var.name
product = "SONAR"
resource_type = var.resource_type
artifact = "blob://${var.binaries_location.az_storage_account}/${var.binaries_location.az_container}/${var.binaries_location.az_blob}"
location = var.resource_group.location
}

resource "null_resource" "readiness" {
count = var.skip_instance_health_verification == true ? 0 : 1
connection {
Expand Down Expand Up @@ -60,6 +69,15 @@ resource "null_resource" "readiness" {
}

depends_on = [
azurerm_network_interface_security_group_association.nic_ip_association
azurerm_network_interface_security_group_association.nic_ip_association,
module.statistics
]
}

module "statistics_success" {
source = "../../../modules/azurerm/statistics"

id = module.statistics.id
initialization_status = "success"
depends_on = [ null_resource.readiness ]
}
18 changes: 18 additions & 0 deletions modules/azurerm/statistics/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

module "statistics" {
source = "../../../modules/null/statistics"

id = var.id
deployment_name = var.deployment_name
artifact = var.artifact
product = var.product
resource_type = var.resource_type
platform = "azure"
account_id = data.azurerm_client_config.current.subscription_id
location = var.location
initialization_status = var.initialization_status
additional_info = var.additional_info
}

data "azurerm_client_config" "current" {
}
3 changes: 3 additions & 0 deletions modules/azurerm/statistics/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
output "id" {
value = module.statistics.id
}
47 changes: 47 additions & 0 deletions modules/azurerm/statistics/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
variable "id" {
type = string
default = null
description = "Id indexing the statistics item. Used to overide/update an entry"
}

variable "deployment_name" {
type = string
description = "Deployment name"
default = null
}

variable "artifact" {
type = string
description = "Artifact"
default = null
}

variable "product" {
type = string
description = "Product"
default = null
}

variable "resource_type" {
type = string
description = "Resource type"
default = null
}

variable "initialization_status" {
type = string
default = null
description = "Initialization status"
}

variable "additional_info" {
type = map(any)
default = null
description = "Additional info (json string)"
}

variable "location" {
type = string
description = "Location"
default = null
}
10 changes: 10 additions & 0 deletions modules/azurerm/statistics/versions.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
terraform {
required_version = ">= 1.3.1, < 1.6.0"

required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">=3.0.0"
}
}
}
Loading

0 comments on commit 40457be

Please sign in to comment.