Skip to content

Commit

Permalink
Initial release of the appliance provider (#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
bczoma authored Dec 4, 2023
1 parent a47ad71 commit 946ad86
Show file tree
Hide file tree
Showing 300 changed files with 70,003 additions and 3,221 deletions.
132 changes: 132 additions & 0 deletions .github/workflows/cli-test-pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: CLI Test Pipeline

on: workflow_call

jobs:
test:
name: Run Generator tests
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: "1.20"

- name: Check out code
uses: actions/checkout@v4

- name: Set up Terraform latest
uses: hashicorp/setup-terraform@v2

- name: Setup Test broker
run: |
mkdir -p $HOME/solace; chmod 777 $HOME/solace
docker run -d -p 8080:8080 -p 55555:55555 --shm-size=1g --env username_admin_globalaccesslevel=admin --env username_admin_password=admin --name=solace \
--mount type=bind,source=$HOME/solace,destination=/var/lib/solace,ro=false solace/solace-pubsub-standard
while ! curl -s localhost:8080 | grep aurelia ; do sleep 1 ; done
- name: Use local provider
run: |
echo "
provider_installation {
dev_overrides {
\"registry.terraform.io/solaceproducts/solacebrokerappliance\" = \"${HOME}/go/bin\"
}
direct {}
}" > ~/.terraformrc
- name: Build provider
run: |
go mod tidy
make install
ls ~/go/bin
terraform-provider-solacebrokerappliance -h
- name: Failure to Generate sample Terraform due to Missing Username for Broker
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_PASSWORD=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 msgVpn solace_broker gha_test.tf || error_code=$?
if [ $error_code -eq 1 ]; then
echo "\nExpected failure accurate"
exit 0
fi
exit 1
- name: Failure to Generate sample Terraform due to Authentication wrong for Broker
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_PASSWORD=wrongpassword SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn.default default/msg_vpn gha_test.tf || error_code=$?
if [ $error_code -eq 1 ]; then
echo "\nExpected failure accurate"
exit 0
fi
exit 1
- name: Failure to Generate sample Terraform due to Password and Bearer Token Not Present
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn.default default/msg_vpn gha_test.tf || error_code=$?
if [ $error_code -eq 1 ]; then
echo "\nExpected failure accurate"
exit 0
fi
exit 1
- name: Failure to Generate sample Terraform due to invalid provider specific identifiers
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn.default default/msg_vpn gha_test.tf || error_code=$?
if [ $error_code -eq 1 ]; then
echo "\nExpected failure accurate"
exit 0
fi
exit 1
- name: Generate sample Terraform for message vpn client
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_PASSWORD=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn_rest_delivery_point.my-rdp default messageVpn.tf
cat messageVpn.tf
- name: Generate sample Terraform for message vpn
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_PASSWORD=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn.default default messageVpn.tf
cat messageVpn.tf
- name: Test generated terraform on broker
run: |
# Create
sed -i '/# username = "admin"/c\username = "admin"' messageVpn.tf
sed -i '/# password = "admin"/c\password = "admin"\n skip_api_check = true' messageVpn.tf
terraform plan
terraform apply -auto-approve
sleep 1
- name: Create custom messageVPN with 21 messageVpn queues (Paging Test)
run: |
pushd ci/broker_vpn_q3
# Create
terraform plan
terraform apply -auto-approve
sleep 1
popd
- name: Confirm all 21 queues are present with paging (Paging Test)
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_PASSWORD=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn.qn another messageVpn.tf
cat messageVpn.tf
grep -o 'solacebroker_msg_vpn_queue" ' messageVpn.tf | wc -l | grep 21
- name: Create custom messageVPN with large config
run: |
pushd ci/broker_vpn_test
# Create
terraform plan
terraform apply -auto-approve
sleep 1
popd
- name: Generate complete large config file for custom messageVPN file
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_PASSWORD=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn.test test messageVpn.tf
cat messageVpn.tf
- name: Generate some resources( only msg_vpn_queue) for custom messageVPN file
run: |
SOLACEBROKER_REGISTRY_OVERRIDE=registry.terraform.io/solaceproducts/solacebrokerappliance SOLACEBROKER_USERNAME=admin SOLACEBROKER_PASSWORD=admin SOLACEBROKER_SKIP_API_CHECK=true terraform-provider-solacebrokerappliance generate --url=http://localhost:8080 solacebroker_msg_vpn_queue.q test/test messageVpn.tf
cat messageVpn.tf
109 changes: 109 additions & 0 deletions .github/workflows/core-pipeline-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
name: Build Terraform Provider in Development phase

on:
push:
branches-ignore:
- main

jobs:
build:
name: Build & test Terraform provider
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: "1.20"

- name: Check out code
uses: actions/checkout@v4

- name: Set up Terraform latest
uses: hashicorp/setup-terraform@v2
with:
terraform_wrapper: false

- name: Checkout generator
uses: actions/checkout@v4
with:
repository: SolaceDev/broker-terraform-provider-generator
token: ${{ secrets.GH_PAT }} # `GH_PAT` is a secret that contains your PAT
path: broker-terraform-provider-generator
ref: "v0.2.0"

- name: Build and install generator
run: |
pushd broker-terraform-provider-generator
go mod tidy
go install .
ls ~/go/bin
popd
- name: Generate provider code
run: |
SWAGGER_SPEC_NAME=`ls ci/swagger_spec`
echo "Generating code using spec $SWAGGER_SPEC_NAME"
BASE=`pwd`
pushd internal/broker/generated
rm ./*
SEMP_V2_SWAGGER_CONFIG_EXTENDED_JSON="$BASE/ci/swagger_spec/$SWAGGER_SPEC_NAME" ~/go/bin/broker-terraform-provider-generator all
popd
- name: Build provider
run: |
go mod tidy
go fmt
make install
~/go/bin/terraform-provider-solacebrokerappliance version
~/go/bin/terraform-provider-solacebrokerappliance help
- name: Test Provider and generate documentations
run: |
make test-coverage
make generate-docs
- name: Check changed files
uses: tj-actions/verify-changed-files@v14
id: check-changed-files
with:
files: |
internal/broker/generated
docs
- name: Run step only when any of the above files change.
if: steps.check-changed-files.outputs.files_changed == 'true'
run: |
echo "Changed files: ${{ steps.check-changed-files.outputs.changed_files }}"
# - name: Commit back any updated source code
# if: steps.check-changed-files.outputs.files_changed == 'true'
# uses: EndBug/add-and-commit@v9
# with:
# committer_name: GitHub Actions
# committer_email: [email protected]
# message: 'Updating generated source [skip ci]'
# add: 'internal/broker/generated/*.go'
# new_branch: GeneratedSourceUpdates-${{ github.ref_name }}

# - name: Create pull request
# if: steps.check-changed-files.outputs.files_changed == 'true'
# run: |
# CURRENT_BRANCH=${GITHUB_REF_NAME}
# gh pr create -B ${CURRENT_BRANCH} -H "GeneratedSourceUpdates-${CURRENT_BRANCH}" --title "Merge generated source updates into ${CURRENT_BRANCH}" --body 'Created by Github action'
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Plugin-Integration-Test:
needs: build
uses: ./.github/workflows/provider-test-pipeline.yml
secrets: inherit

Plugin-Acceptance-Test:
needs: build
uses: ./.github/workflows/provider-acceptance-test.yml
secrets: inherit

CLI-Integration-Test:
needs: build
uses: ./.github/workflows/cli-test-pipeline.yml
secrets: inherit
47 changes: 47 additions & 0 deletions .github/workflows/core-pipeline-main-branch-only.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Test Provider

on:
push:
branches:
- main

jobs:
build:
name: Build & test Terraform provider
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: "1.20"

- name: Check out code
uses: actions/checkout@v4

- name: Set up Terraform latest
uses: hashicorp/setup-terraform@v2
with:
terraform_wrapper: false

- name: Build provider
run: |
go mod tidy
go fmt
make install
~/go/bin/terraform-provider-solacebrokerappliance version
~/go/bin/terraform-provider-solacebrokerappliance help
Plugin-Integration-Test:
needs: build
uses: ./.github/workflows/provider-test-pipeline.yml
secrets: inherit

Plugin-Acceptance-Test:
needs: build
uses: ./.github/workflows/provider-acceptance-test.yml
secrets: inherit

CLI-Integration-Test:
needs: build
uses: ./.github/workflows/cli-test-pipeline.yml
secrets: inherit
Loading

0 comments on commit 946ad86

Please sign in to comment.