main 4e419503d489 cached
516 files
4.0 MB
1.1M tokens
779 symbols
1 requests
Download .txt
Showing preview only (4,340K chars total). Download the full file or copy to clipboard to get everything.
Repository: atlassian/data-center-helm-charts
Branch: main
Commit: 4e419503d489
Files: 516
Total size: 4.0 MB

Directory structure:
gitextract_ddpb32d0/

├── .atlassian/
│   └── OWNER
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── FEATURE.yml
│   │   └── config.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── crc.yaml
│       ├── dc-tests.yml
│       ├── documentation-build.yaml
│       ├── documentation-deploy.yaml
│       ├── e2e-tf-deployment.yaml
│       ├── kind.yaml
│       ├── maven.yml
│       ├── openshift.yaml
│       ├── prepare-release.yaml
│       ├── process-dashboard-test.yaml
│       ├── release-charts.yaml
│       ├── release-unit-tests.yaml
│       ├── sync-grafana-dashboards.yaml
│       └── update-lts-tags.yaml
├── .gitignore
├── .java-version
├── .pre-commit-config.yaml
├── BREAKING_CHANGES.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DEVELOPMENT.md
├── LICENSE
├── Makefile
├── README.md
├── cr.yaml
├── docs/
│   ├── build/
│   │   └── Dockerfile
│   ├── docs/
│   │   ├── .pages
│   │   ├── README.md
│   │   ├── artifacthub-repo.yml
│   │   ├── assets/
│   │   │   ├── images/
│   │   │   │   ├── KubernetesOverview.xml
│   │   │   │   └── ingress.xml
│   │   │   └── stylesheets/
│   │   │       └── extra.css
│   │   ├── containers/
│   │   │   ├── .pages
│   │   │   ├── BAMBOO-AGENT.md
│   │   │   ├── BAMBOO.md
│   │   │   ├── BITBUCKET-MESH.md
│   │   │   ├── BITBUCKET.md
│   │   │   ├── CONFLUENCE.md
│   │   │   ├── CROWD.md
│   │   │   └── JIRA.md
│   │   ├── examples/
│   │   │   ├── .pages
│   │   │   ├── EXAMPLES.md
│   │   │   ├── bamboo/
│   │   │   │   ├── .pages
│   │   │   │   ├── AGENT_CAPABILITIES.md
│   │   │   │   └── REMOTE_AGENTS.md
│   │   │   ├── bitbucket/
│   │   │   │   ├── .pages
│   │   │   │   ├── BITBUCKET_AWS_OPENSEARCH.md
│   │   │   │   ├── BITBUCKET_ELASTICSEARCH.md
│   │   │   │   ├── BITBUCKET_MESH.md
│   │   │   │   ├── BITBUCKET_MIRRORS.md
│   │   │   │   ├── BITBUCKET_OPENSEARCH.md
│   │   │   │   ├── BITBUCKET_SESSION_AFFINITY.md
│   │   │   │   └── BITBUCKET_SSH.md
│   │   │   ├── cluster/
│   │   │   │   ├── AKS_SETUP.md
│   │   │   │   ├── CLOUD_PROVIDERS.md
│   │   │   │   ├── EKS_SETUP.md
│   │   │   │   └── GKE_SETUP.md
│   │   │   ├── confluence/
│   │   │   │   ├── .pages
│   │   │   │   └── CONFLUENCE_OPENSEARCH.md
│   │   │   ├── database/
│   │   │   │   ├── AMAZON_RDS.md
│   │   │   │   └── CLOUD_PROVIDERS.md
│   │   │   ├── external_libraries/
│   │   │   │   └── EXTERNAL_LIBS.md
│   │   │   ├── ingress/
│   │   │   │   ├── CONTROLLERS.md
│   │   │   │   ├── DNS.md
│   │   │   │   ├── GATEWAY_API.md
│   │   │   │   ├── GATEWAY_API_SESSION_AFFINITY.md
│   │   │   │   └── INGRESS_NGINX.md
│   │   │   ├── jira/
│   │   │   │   ├── .pages
│   │   │   │   └── JIRA_OPENSEARCH.md
│   │   │   ├── logging/
│   │   │   │   └── efk/
│   │   │   │       ├── EFK.md
│   │   │   │       ├── local_es/
│   │   │   │       │   └── elasticsearch.yaml
│   │   │   │       └── managed_es/
│   │   │   │           └── fluentbit.yaml
│   │   │   └── storage/
│   │   │       ├── .pages
│   │   │       ├── STORAGE.md
│   │   │       ├── additional storage/
│   │   │       │   └── ADDTIONAL_STORAGE.md
│   │   │       ├── aws/
│   │   │       │   ├── LOCAL_STORAGE.md
│   │   │       │   ├── SHARED_STORAGE.md
│   │   │       │   └── s3/
│   │   │       │       ├── CONFLUENCE.md
│   │   │       │       └── JIRA.md
│   │   │       └── nfs/
│   │   │           ├── NFS.md
│   │   │           ├── nfs-server-example/
│   │   │           │   ├── .helmignore
│   │   │           │   ├── Chart.yaml
│   │   │           │   ├── templates/
│   │   │           │   │   ├── NOTES.txt
│   │   │           │   │   ├── _helpers.tpl
│   │   │           │   │   ├── service.yaml
│   │   │           │   │   ├── serviceaccount.yaml
│   │   │           │   │   ├── statefulset.yaml
│   │   │           │   │   ├── storageclass.yaml
│   │   │           │   │   └── tests/
│   │   │           │   │       ├── test-locking.yaml
│   │   │           │   │       ├── test-performance.yaml
│   │   │           │   │       └── test-pv.yaml
│   │   │           │   └── values.yaml
│   │   │           └── nfs-server-example-0.1.0.tgz
│   │   ├── index.yaml
│   │   ├── platforms/
│   │   │   ├── .pages
│   │   │   ├── PLATFORMS.md
│   │   │   └── openshift/
│   │   │       ├── OPENSHIFT.md
│   │   │       └── OPENSHIFT_FAQ.md
│   │   ├── troubleshooting/
│   │   │   ├── .pages
│   │   │   ├── LIMITATIONS.md
│   │   │   ├── SUPPORT_BOUNDARIES.md
│   │   │   └── TROUBLESHOOTING.md
│   │   └── userguide/
│   │       ├── .pages
│   │       ├── CONFIGURATION.md
│   │       ├── INSTALLATION.md
│   │       ├── MIGRATION.md
│   │       ├── OPERATION.md
│   │       ├── PREREQUISITES.md
│   │       ├── VERIFICATION.md
│   │       ├── monitoring/
│   │       │   ├── .pages
│   │       │   ├── PRE_CANNED_CHARTS.md
│   │       │   └── PROMETHEUS.md
│   │       ├── resource_management/
│   │       │   ├── JIRA_INDEX_SNAPSHOT.md
│   │       │   ├── REQUESTS_AND_LIMITS.md
│   │       │   └── RESOURCE_SCALING.md
│   │       └── upgrades/
│   │           ├── .pages
│   │           ├── HELM_CHART_UPGRADE.md
│   │           └── PRODUCTS_UPGRADE.md
│   ├── mkdocs.yml
│   ├── overrides/
│   │   └── main.html
│   └── requirements.txt
├── docs_internal/
│   └── ROUTING.md
├── mvnvm.properties
├── pom.xml
├── scripts/
│   └── generate_k8s_support_bundle.sh
└── src/
    ├── main/
    │   ├── charts/
    │   │   ├── README.md.gotmpl
    │   │   ├── bamboo/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   └── overview.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-init-properties.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-server-config.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── service-jms.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       ├── test-database-connectivity.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   ├── bamboo-agent/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── deployment-agent.yaml
    │   │   │   │   └── serviceaccount.yaml
    │   │   │   └── values.yaml
    │   │   ├── bitbucket/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   ├── bitbucket-mesh/
    │   │   │   │   │   ├── mesh-grpc.json
    │   │   │   │   │   ├── mesh-overview.json
    │   │   │   │   │   ├── mesh-repair.json
    │   │   │   │   │   └── mesh-tickets.json
    │   │   │   │   ├── build-actions-thread-pool-stats.json
    │   │   │   │   ├── db-ops.json
    │   │   │   │   ├── event-thread-pool-stats.json
    │   │   │   │   ├── git-ops.json
    │   │   │   │   ├── io-pump-thread-pool-stats.json
    │   │   │   │   ├── nio-pump-thread-pool-stats.json
    │   │   │   │   ├── overview.json
    │   │   │   │   ├── scheduled-thread-pool-stats.json
    │   │   │   │   ├── ssh-session-stats.json
    │   │   │   │   ├── ticket-status.json
    │   │   │   │   └── webhooks-stats.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm-mesh.yaml
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-mesh-grafana-dashboards.yaml
    │   │   │   │   ├── configmap-mesh-scripts.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── job-mesh-add-nodes.yaml
    │   │   │   │   ├── job-mesh-configure.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── rbac.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── secret-clustering.yaml
    │   │   │   │   ├── secret-opensearch.yaml
    │   │   │   │   ├── service-hazelcast.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-mesh.yaml
    │   │   │   │   ├── service-monitor-mesh.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service-ssh.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pv.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset-mesh.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       ├── test-database-connectivity.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   ├── common/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   └── templates/
    │   │   │       ├── _jmx.tpl
    │   │   │       ├── _labels.tpl
    │   │   │       └── _names.tpl
    │   │   ├── confluence/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   ├── cache-clearing.json
    │   │   │   │   ├── cluster-locks.json
    │   │   │   │   ├── database-load.json
    │   │   │   │   ├── hikari.json
    │   │   │   │   ├── overview.json
    │   │   │   │   ├── plugin-monitoring.json
    │   │   │   │   └── response-times.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-server-config.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress-setup.yaml
    │   │   │   │   ├── ingress-synchrony.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── rbac.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── secret-opensearch.yaml
    │   │   │   │   ├── service-hazelcast.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service-synchrony.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset-synchrony.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   ├── synchrony-start-script.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       ├── test-database-connectivity.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   ├── crowd/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   └── overview.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-server-config.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   └── jira/
    │   │       ├── .helmignore
    │   │       ├── Changelog.md
    │   │       ├── Chart.yaml
    │   │       ├── README.md
    │   │       ├── grafana-dashboards/
    │   │       │   ├── cache-clearing.json
    │   │       │   ├── cluster-locks.json
    │   │       │   ├── database-load.json
    │   │       │   ├── general.json
    │   │       │   ├── indexing.json
    │   │       │   ├── response-times.json
    │   │       │   └── tasks.json
    │   │       ├── templates/
    │   │       │   ├── NOTES.txt
    │   │       │   ├── _fluentd_templates.tpl
    │   │       │   ├── _helpers.tpl
    │   │       │   ├── config-jvm.yaml
    │   │       │   ├── configmap-additional-config.yaml
    │   │       │   ├── configmap-fluentd.yaml
    │   │       │   ├── configmap-jmx-config.yaml
    │   │       │   ├── configmap-server-config.yaml
    │   │       │   ├── configmap-values-analytics.yaml
    │   │       │   ├── configmaps-grafana-dashboards.yaml
    │   │       │   ├── httproute.yaml
    │   │       │   ├── ingress.yaml
    │   │       │   ├── pdb.yaml
    │   │       │   ├── route.yaml
    │   │       │   ├── secret-opensearch.yaml
    │   │       │   ├── service-jmx.yaml
    │   │       │   ├── service-monitor.yaml
    │   │       │   ├── service.yaml
    │   │       │   ├── serviceaccount.yaml
    │   │       │   ├── shared-home-pvc.yaml
    │   │       │   ├── statefulset.yaml
    │   │       │   └── tests/
    │   │       │       ├── test-application-status.yaml
    │   │       │       ├── test-database-connectivity.yaml
    │   │       │       └── test-shared-home-permissions.yaml
    │   │       └── values.yaml
    │   ├── common_templates/
    │   │   ├── README.md
    │   │   └── _gateway.tpl
    │   └── scripts/
    │       ├── generate_chart_repo.sh
    │       ├── github_asset_uploader.sh
    │       ├── prepare_release.py
    │       ├── prepare_release_test.py
    │       ├── process_dashboard.py
    │       ├── process_dashboard_test.py
    │       └── update_grafana_dashboards.sh
    └── test/
        ├── charts/
        │   └── functest/
        │       ├── .helmignore
        │       ├── Chart.yaml
        │       ├── README.md
        │       ├── templates/
        │       │   ├── ingress-KITT.yaml
        │       │   ├── ingress-expose-node-EKS.yaml
        │       │   ├── ingress-expose-node-KITT.yaml
        │       │   └── service-expose-node.yaml
        │       └── values.yaml
        ├── config/
        │   ├── bamboo/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   ├── values-agent.yaml
        │   │   └── values.yaml
        │   ├── bitbucket/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   └── values.yaml
        │   ├── confluence/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   └── values.yaml
        │   ├── crowd/
        │   │   ├── helm_parameters
        │   │   ├── values-EKS.yaml
        │   │   └── values.yaml
        │   ├── jira/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   └── values.yaml
        │   ├── kind/
        │   │   ├── backdoor-svc.yaml
        │   │   ├── common-values.yaml
        │   │   ├── envoy-proxy.yaml
        │   │   ├── gateway.yaml
        │   │   ├── hostpath-pv.yaml
        │   │   ├── kind-config.yml
        │   │   ├── nfs-values.yaml
        │   │   └── registry.yaml
        │   ├── logging/
        │   │   ├── README.md
        │   │   ├── elasticsearch/
        │   │   │   └── values-KITT.yaml
        │   │   └── kibana/
        │   │       ├── ingress-kitt.yaml
        │   │       └── values-KITT.yaml
        │   ├── openshift/
        │   │   ├── envoy-proxy.yaml
        │   │   ├── gateway.yaml
        │   │   ├── openshift.yaml
        │   │   └── shared-home-pvc.yaml
        │   └── shared-home/
        │       └── shared-home-browser.yaml
        ├── infrastructure/
        │   ├── cloudnativepg/
        │   │   ├── README.md
        │   │   ├── cluster-template.yaml
        │   │   ├── init-scripts/
        │   │   │   └── init-db.sql
        │   │   └── operator-values.yaml
        │   ├── elasticsearch/
        │   │   └── elasticsearch-values.yaml
        │   ├── nfs-server/
        │   │   ├── .helmignore
        │   │   ├── Chart.yaml
        │   │   ├── README.md
        │   │   ├── templates/
        │   │   │   ├── NOTES.txt
        │   │   │   ├── _helpers.tpl
        │   │   │   ├── service.yaml
        │   │   │   ├── serviceaccount.yaml
        │   │   │   └── statefulset.yaml
        │   │   └── values.yaml
        │   └── postgres/
        │       └── postgres-values.yaml
        ├── java/
        │   └── test/
        │       ├── AdditionalCertificatesTest.java
        │       ├── AdditionalConfigMapsTest.java
        │       ├── AdditionalConfigPropertiesTest.java
        │       ├── AdditionalFilesTest.java
        │       ├── AdditionalHostsTest.java
        │       ├── AdditionalLibrariesTest.java
        │       ├── BambooAgentTest.java
        │       ├── BitbucketMeshTest.java
        │       ├── BitbucketOpenSearchTest.java
        │       ├── BitbucketSshServiceTest.java
        │       ├── CloudNativePGTest.java
        │       ├── ClusteringTest.java
        │       ├── ConfluenceDebugFlagTest.java
        │       ├── ConfluenceOpenSearchTest.java
        │       ├── ConfluenceS3EnabledTest.java
        │       ├── ContainersTest.java
        │       ├── ContextPathTest.java
        │       ├── CustomPortTest.java
        │       ├── DatabaseTest.java
        │       ├── ElasticSearchTest.java
        │       ├── FluentdTest.java
        │       ├── ForcedConfigUpdateTest.java
        │       ├── GatewayTest.java
        │       ├── HelmLintTest.java
        │       ├── HelmOutputComparisonTest.java
        │       ├── HelmValuesAndAnalyticsTest.java
        │       ├── HostNamespacesTest.java
        │       ├── ImageTest.java
        │       ├── IngressTest.java
        │       ├── JiraOpenSearchTest.java
        │       ├── JiraS3EnabledTest.java
        │       ├── JmxMetricsTest.java
        │       ├── JvmResourcesTest.java
        │       ├── LicenseTest.java
        │       ├── LifecycleHooksTest.java
        │       ├── MirrorsTest.java
        │       ├── PodAnnotationsTest.java
        │       ├── PodDisruptionBudgetTest.java
        │       ├── PodTest.java
        │       ├── PriorityClassNameTest.java
        │       ├── ReadinessLivenessProbesTest.java
        │       ├── RequestsTest.java
        │       ├── SchedulerNameTest.java
        │       ├── SecurityContextTest.java
        │       ├── ServerConfigTest.java
        │       ├── ServiceAccountTest.java
        │       ├── ServiceTest.java
        │       ├── SetPermissionTest.java
        │       ├── StatefulSetUpdateTest.java
        │       ├── SynchronyTest.java
        │       ├── TestPodsTest.java
        │       ├── TopologySpreadConstraintsTest.java
        │       ├── TunnelTest.java
        │       ├── VolumesTest.java
        │       ├── helm/
        │       │   └── Helm.java
        │       ├── jackson/
        │       │   └── JsonNodeAssert.java
        │       ├── model/
        │       │   ├── AnalyticsData.java
        │       │   ├── ClusterType.java
        │       │   ├── ConfigMap.java
        │       │   ├── Container.java
        │       │   ├── Deployment.java
        │       │   ├── Env.java
        │       │   ├── Kind.java
        │       │   ├── KubeResource.java
        │       │   ├── KubeResources.java
        │       │   ├── Pod.java
        │       │   ├── Product.java
        │       │   ├── Service.java
        │       │   ├── StatefulSet.java
        │       │   └── Synchrony.java
        │       └── postinstall/
        │           ├── KubeClient.java
        │           ├── OpenSearchInstallTest.java
        │           ├── PostInstallStatusTest.java
        │           └── Utils.java
        ├── resources/
        │   └── expected_helm_output/
        │       ├── README.txt
        │       ├── bamboo/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── bamboo-agent/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── bitbucket/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── confluence/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── crowd/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       └── jira/
        │           ├── output.yaml
        │           └── values.yaml
        └── scripts/
            ├── download_logs.sh
            ├── helm_install.sh
            ├── helm_uninstall.sh
            ├── kind/
            │   ├── configure_kind.sh
            │   ├── create_kind.sh
            │   └── deploy_app.sh
            ├── product_versions.py
            ├── shared_home_browser_install.sh
            ├── start_nfs_server.sh
            └── update_versions.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .atlassian/OWNER
================================================
abrokes

================================================
FILE: .github/CODEOWNERS
================================================
*       @nanux @yzha645 @bianchi2 @kush982 @amierzwicki @pbhardwaj6 @jainanshul43 @jwitowski-atl


================================================
FILE: .github/ISSUE_TEMPLATE/FEATURE.yml
================================================
name: Feature request
description: Do you have an idea or suggestion for a Helm charts improvement?
title: "[Suggestion] - "
labels: [suggestion, triage]
body:
  - type: markdown
    attributes:
      value: |
        ## 💡 Feature requests only 💡
        
        Thanks for taking the time to suggest a new feature! If you are experiencing issues in Helm chart installation, please read [Supported Boundaries document](https://atlassian.github.io/data-center-helm-charts/troubleshooting/SUPPORT_BOUNDARIES/) and contact [Atlassian Support directly](https://support.atlassian.com/contact/).
  - type: textarea
    id: suggestion-description
    attributes:
      label: Suggestion
      description: Describe your idea in detail, including the use case when it will be useful
    validations:
      required: true
  - type: dropdown
    id: version
    attributes:
      label: Product
      description: You can select multiple products
      options:
        - Jira
        - Confluence
        - Bitbucket
        - Other
      multiple: true
    validations:
      required: false
  - type: checkboxes
    id: terms
    attributes:
      label: Code of Conduct
      description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/atlassian/data-center-helm-charts/blob/main/CODE_OF_CONDUCT.md)
      options:
        - label: I agree to follow this project's Code of Conduct
          required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: ⚠️ Support boundaries ⚠️
    url: https://atlassian.github.io/data-center-helm-charts/troubleshooting/SUPPORT_BOUNDARIES/
    about: Please read the scope of support before raising an issue
  - name: Helm installation issues
    url: https://support.atlassian.com/contact/
    about: Contact Atlassian Support with issues relating to Helm installation
  - name: Q & A Community forum
    url: https://community.atlassian.com/t5/Atlassian-Data-Center-on/gh-p/DC_Kubernetes
    about: For anyone who’s interested in learning more about K8s, and how they can deploy their Data Center products using the Helm Charts


================================================
FILE: .github/pull_request_template.md
================================================
## Pull request description

_Provide description for the PR_

## Checklist
- [ ] I have added unit tests
- [ ] I have applied the change to all applicable products
- [ ] The E2E test has passed (use `e2e` label)


================================================
FILE: .github/workflows/crc.yaml
================================================
# This workflow is for testing Helm charts in MicroShift

name: DC Tests in MicroShift

on:
  schedule:
    - cron: '0 3 */2 * *' # schedule the test to run every second day at 3:00am
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      - 'src/main/charts/bamboo/**'
      - 'src/main/charts/bamboo-agent/**'
      - 'src/main/charts/bitbucket/**'
      - 'src/main/charts/confluence/**'
      - 'src/main/charts/jira/**'
      - 'src/main/charts/crowd/**'
  pull_request_target:
    types: [ labeled ]

jobs:
  jira:
    uses: ./.github/workflows/openshift.yaml
    with:
      dc_app: jira
    secrets:
      JIRA_LICENSE: "${{ secrets.JIRA_LICENSE }}"
      OPENSHIFT_PULL_SECRET: "${{ secrets.OPENSHIFT_PULL_SECRET }}"

  confluence:
    uses: ./.github/workflows/openshift.yaml
    with:
      dc_app: confluence
    secrets:
      CONFLUENCE_LICENSE: "${{ secrets.TF_VAR_CONFLUENCE_LICENSE }}"
      OPENSHIFT_PULL_SECRET: "${{ secrets.OPENSHIFT_PULL_SECRET }}"

  bitbucket:
    uses: ./.github/workflows/openshift.yaml
    with:
      dc_app: bitbucket
    secrets:
      BITBUCKET_LICENSE: "${{ secrets.TF_VAR_BITBUCKET_LICENSE }}"
      OPENSHIFT_PULL_SECRET: "${{ secrets.OPENSHIFT_PULL_SECRET }}"

  bamboo:
    uses: ./.github/workflows/openshift.yaml
    with:
      dc_app: bamboo
    secrets:
      BAMBOO_LICENSE: "${{ secrets.TF_VAR_BAMBOO_LICENSE }}"
      OPENSHIFT_PULL_SECRET: "${{ secrets.OPENSHIFT_PULL_SECRET }}"

  crowd:
    uses: ./.github/workflows/openshift.yaml
    with:
      dc_app: crowd
    secrets:
      OPENSHIFT_PULL_SECRET: "${{ secrets.OPENSHIFT_PULL_SECRET }}"


================================================
FILE: .github/workflows/dc-tests.yml
================================================
# This workflow is for testing Helm charts in KinD clusters

name: DC apps tests in KinD

on:
  schedule:
    - cron: '0 3 */2 * *' # schedule the test to run every second day at 3:00am
  push:
    branches:
      - main
    paths:
      - 'src/main/charts/bamboo/**'
      - 'src/main/charts/bamboo-agent/**'
      - 'src/main/charts/bitbucket/**'
      - 'src/main/charts/confluence/**'
      - 'src/main/charts/jira/**'
      - 'src/main/charts/crowd/**'
  workflow_dispatch:
  pull_request_target:
    types: [ labeled ]

jobs:
  jira:
    uses: ./.github/workflows/kind.yaml
    with:
      dc_app: jira
    secrets:
      JIRA_LICENSE: "${{ secrets.JIRA_LICENSE }}"

  confluence:
    uses: ./.github/workflows/kind.yaml
    with:
      dc_app: confluence
    secrets:
      CONFLUENCE_LICENSE: "${{ secrets.TF_VAR_CONFLUENCE_LICENSE }}"

  bitbucket:
    uses: ./.github/workflows/kind.yaml
    with:
      dc_app: bitbucket
    secrets:
      BITBUCKET_LICENSE: "${{ secrets.TF_VAR_BITBUCKET_LICENSE }}"

  bamboo:
    uses: ./.github/workflows/kind.yaml
    with:
      dc_app: bamboo
    secrets:
      BAMBOO_LICENSE: "${{ secrets.TF_VAR_BAMBOO_LICENSE }}"

  crowd:
    uses: ./.github/workflows/kind.yaml
    with:
      dc_app: crowd


================================================
FILE: .github/workflows/documentation-build.yaml
================================================
name: Documentation - Build
on:
  pull_request:
jobs:
  deploy:
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - name: Install mkdocs requirements
        run: pip install -r requirements.txt
        working-directory: docs
      - name: Publish documentation to gp-pages branch
        run: mkdocs build
        working-directory: docs


================================================
FILE: .github/workflows/documentation-deploy.yaml
================================================
name: Documentation - Deploy
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - name: Install mkdocs requirements
        run: pip install -r requirements.txt
        working-directory: docs
      - name: Publish documentation to gp-pages branch
        run: mkdocs gh-deploy --force
        working-directory: docs


================================================
FILE: .github/workflows/e2e-tf-deployment.yaml
================================================
name: Helm Charts E2E Testing
on:
  schedule:
    - cron: '0 3 */2 * *' # schedule the test to run every second day at 3:00am
  push:
    branches:
      - main
    paths:
      - 'src/main/charts/bamboo/**'
      - 'src/main/charts/bamboo-agent/**'
      - 'src/main/charts/bitbucket/**'
      - 'src/main/charts/confluence/**'
      - 'src/main/charts/jira/**'
      - 'src/main/charts/crowd/**'
  pull_request_target:
    types: [ labeled ]
  workflow_dispatch:
    inputs:
      use_gateway_api:
        description: 'Use Gateway API (Envoy Gateway) instead of NGINX Ingress'
        required: false
        type: boolean
        default: false
      terraform_branch:
        description: 'Terraform repo branch to use (leave empty for latest LTS tag)'
        required: false
        type: string
        default: ''

jobs:
  test:
    if: ${{ github.event.label.name == 'e2e' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' }}
    name: Deploy Infrastructure and Run E2E Tests
    runs-on: ubuntu-24.04
    permissions:
      id-token: write
      contents: read
    env:
      AWS_DEFAULT_REGION: us-east-1
      TF_VAR_bamboo_license: ${{ secrets.TF_VAR_BAMBOO_LICENSE }}
      TF_VAR_confluence_license: ${{ secrets.TF_VAR_CONFLUENCE_LICENSE }}
      TF_VAR_bitbucket_license: ${{ secrets.TF_VAR_BITBUCKET_LICENSE }}
      TF_VAR_crowd_license: ${{ secrets.TF_VAR_CROWD_LICENSE }}
      TF_VAR_bamboo_admin_password: ${{ secrets.TF_VAR_BAMBOO_ADMIN_PASSWORD }}
      TF_VAR_crowd_admin_password: ${{ secrets.TF_VAR_CROWD_ADMIN_PASSWORD }}
      TF_VAR_bitbucket_admin_password: ${{ secrets.TF_VAR_BITBUCKET_ADMIN_PASSWORD }}
      TF_VAR_kinesis_log_producers_role_arns: ${{ secrets.TF_VAR_KINESIS_LOG_PRODUCERS_ROLE_ARNS }}
      TF_VAR_osquery_fleet_enrollment_secret_name: ${{ secrets.TF_VAR_OSQUERY_FLEET_ENROLLMENT_SECRET_NAME }}
      TF_VAR_osquery_fleet_entrollment_host: ${{ secrets.TF_VAR_OSQUERY_FLEET_ENROLLMENT_HOST }}
      TF_VAR_crowdstrike_secret_name: ${{ secrets.TF_VAR_CROWDSTRIKE_SECRET_NAME }}
      TF_VAR_crowdstrike_kms_key_name: ${{ secrets.TF_VAR_CROWDSTRIKE_KMS_KEY_NAME }}
      TF_VAR_crowdstrike_aws_account_id: ${{ secrets.TF_VAR_CROWDSTRIKE_AWS_ACCOUNT_ID }}
      USE_DOMAIN: "true"
      USE_GATEWAY_API: ${{ github.event.inputs.use_gateway_api || 'false' }}

    steps:
      - name: Checkout Helm charts
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Install the latest Terraform
        run: |
          # check existing version
          terraform -version || true
          # download the latest
          URL=$(curl -fsSL https://api.releases.hashicorp.com/v1/releases/terraform/latest | jq -r '.builds[] | select((.arch=="amd64") and (.os=="linux")).url')
          curl -s -o /tmp/terraform.zip ${URL}
          echo A | unzip /tmp/terraform.zip -d /usr/local/bin/
          rm /tmp/terraform.zip          
          # check the latest version
          terraform -version

      - name: Pin Kubectl version
        uses: azure/setup-kubectl@v3.0
        with:
          version: 'v1.30.0'

      - name: Install Helm
        uses: azure/setup-helm@v1
        with:
          version: v3.15.3

      - name: Execute helm dependency update for Helm charts
        run: |
          helm dependency update src/main/charts/bamboo
          helm dependency update src/main/charts/bamboo-agent
          helm dependency update src/main/charts/bitbucket
          helm dependency update src/main/charts/confluence
          helm dependency update src/main/charts/jira
          helm dependency update src/main/charts/crowd

      - name: Checkout Deployment Automation
        run: |
          DEPLOYMENT_REPO='https://github.com/atlassian-labs/data-center-terraform.git'
          CUSTOM_BRANCH="${{ github.event.inputs.terraform_branch }}"
          if [ -n "$CUSTOM_BRANCH" ]; then
            echo "Using custom branch '${CUSTOM_BRANCH}' of Deployment Automation."
            git clone -b $CUSTOM_BRANCH $DEPLOYMENT_REPO tf
          else
            LTS=$(git ls-remote --tags --exit-code --refs "$DEPLOYMENT_REPO" \
              | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g' \
              | grep '^[0-9]*.[0-9]*.[0-9]*$' | sort -V | tail -1)
            echo "Using LTS version('${LTS}') of Deployment Automation to provision the infrastructure for Atlassian DC Products."
            git clone -b $LTS $DEPLOYMENT_REPO tf
          fi

      - name: Setup test environment
        uses: actions/setup-go@v3
        with:
          go-version: '1.18'

      - name: Setup Python environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.9.14'
      - run: |
          python -m pip install --upgrade pip
          pip install boto3

      - name: Install test dependencies
        id: setup-dependencies
        working-directory: tf/test/
        run: |
          go version
          go get -v -t -d ./... && go mod tidy
          echo ::set-output name=exit_code::$?

      - name: Add private SSH key for Bitbucket tests
        uses: shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.BITBUCKET_E2E_TEST_PRIV_SSH_KEY }}
          name: bitbucket-e2e # optional
          known_hosts: dummy-entry
          if_key_exists: fail # replace / ignore / fail; optional (defaults to fail)

      - name: Add public SSH key for Bitbucket tests
        run: |
          echo ${{ secrets.BITBUCKET_E2E_TEST_PUB_SSH_KEY }} > /home/runner/.ssh/bitbucket-e2e.pub

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@master
        with:
          aws-region: us-east-1
          role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
          role-session-name: DCTerraformHelmSession
          role-duration-seconds: 7200

      - name: Deploy the infrastructure, install helm charts, run E2E tests, and cleanup
        id: e2e-test
        working-directory: tf/test/
        run: |
          set -o pipefail
          # Create test output directory
          mkdir e2etest/artifacts

          # Add root of helm chart repo to the config template
          cat << EOF >> ./e2etest/test-config.tfvars.tmpl
          # install local helm charts
          local_helm_charts_path="$(dirname $(dirname $(pwd)))/src/main/charts"
          confluence_install_local_chart = true
          jira_install_local_chart = true
          bitbucket_install_local_chart = true
          bamboo_install_local_chart = true
          crowd_install_local_chart = true
          EOF

          # Append Gateway API toggle if enabled
          if [ "$USE_GATEWAY_API" = "true" ]; then
            echo 'use_gateway_api = true' >> ./e2etest/test-config.tfvars.tmpl
            echo "Gateway API mode enabled (Envoy Gateway will replace NGINX Ingress)"
          else
            echo "NGINX Ingress mode (default)"
          fi

          # Deploy infrastructure, install helm charts, run e2e tests, and cleanup all
          # boto3 ignores AWS creds env vars for some reason
          mkdir -p ~/.aws
          echo -e "[default]\naws_access_key_id = ${AWS_ACCESS_KEY_ID}\naws_secret_access_key = ${AWS_SECRET_ACCESS_KEY}\naws_session_token = ${AWS_SESSION_TOKEN}" > ~/.aws/credentials
          go test ./e2etest -v -timeout 85m -run Installer | tee ./e2etest/artifacts/e2etest.log

      - name: Upload test log files
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: e2e-test-artifacts
          path: tf/test/e2etest/artifacts/


================================================
FILE: .github/workflows/kind.yaml
================================================
name: Test DC App in a KinD Cluster

on:
  workflow_call:
    inputs:
      dc_app:
        required: true
        type: string
    secrets:
      BITBUCKET_LICENSE:
        description: 'Bitbucket license'
      CONFLUENCE_LICENSE:
        description: 'Confluence license'
      JIRA_LICENSE:
        description: 'Jira license'
      BAMBOO_LICENSE:
        description: 'Bamboo license'

jobs:
  kind-testing:
    if: ${{ github.event.label.name == 'e2e' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' }}
    runs-on: ubuntu-24.04
    env:
      # See: https://github.com/kubernetes-sigs/kind/tags
      KIND_VERSION: "v0.27.0"
      # See: https://hub.docker.com/r/kindest/node/tags
      K8S_VERSION: "v1.32.2"
      DC_APP: ${{inputs.dc_app}}
      LICENSE: ${{ secrets[format('{0}_LICENSE', inputs.dc_app)] }}

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Pin Kubectl version
        uses: azure/setup-kubectl@v4
        with:
          version: 'v1.32.2'

      - name: Pin Helm version
        uses: azure/setup-helm@v3
        with:
          version: v3.17.2

      - name: Create KinD cluster
        run: |
          src/test/scripts/kind/create_kind.sh

      - name: Install KinD tooling
        run: |
          src/test/scripts/kind/configure_kind.sh

      - name: Deploy postgres database
        run: |
          source src/test/scripts/kind/deploy_app.sh
          deploy_postgres

      - name: Create db, admin and license secrets
        run: |
          source src/test/scripts/kind/deploy_app.sh
          create_secrets

      - name: Deploy ${{inputs.dc_app}}
        run: |
          source src/test/scripts/kind/deploy_app.sh
          deploy_app

      - name: Verify ${{inputs.dc_app}} status
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_gateway_ingress

      - name: Verify ${{inputs.dc_app}} grafana dashboards
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_dashboards

      - name: Test scaling ${{inputs.dc_app}}
        run: |
          echo "[INFO]: Scaling ${DC_APP} to 2 replicas"
          kubectl scale sts/${DC_APP} --replicas=2 -n atlassian
          sleep 10
          kubectl wait --for=condition=ready pod/${DC_APP}-1 -n atlassian --timeout=360s

      - name: Verify ${{inputs.dc_app}} OpenSearch integration
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_opensearch

      - name: Verify ${{inputs.dc_app}} metrics availability
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_metrics

      - name: Verify Gateway API integration
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_gateway

      - name: Get debug info
        if: always()
        run: |
          curl -s https://raw.githubusercontent.com/atlassian-labs/data-center-terraform/main/scripts/collect_k8s_logs.sh | bash -s -- dummy dummy logs/${{inputs.dc_app}}

      - name: Upload test log files
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: kind-artifacts-${{inputs.dc_app}}
          path: logs/


================================================
FILE: .github/workflows/maven.yml
================================================
# This workflow will build a Java project with Maven
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven

name: Maven unit tests

on:
  push:
    branches:
      - main
      - /.*-stable/
  pull_request:

jobs:
  build:

    runs-on: ubuntu-24.04

    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11

      - name: Install Helm
        uses: azure/setup-helm@v3
        with:
          version: v3.15.3

      - name: Execute helm dependency update for bamboo chart
        run: helm dependency update src/main/charts/bamboo
      - name: Execute helm dependency update for bamboo-agent chart
        run: helm dependency update src/main/charts/bamboo-agent
      - name: Execute helm dependency update for bitbucket chart
        run: helm dependency update src/main/charts/bitbucket
      - name: Execute helm dependency update for confluence chart
        run: helm dependency update src/main/charts/confluence
      - name: Execute helm dependency update for crowd chart
        run: helm dependency update src/main/charts/crowd
      - name: Execute helm dependency update for jira chart
        run: helm dependency update src/main/charts/jira

      - name: Run tests with Maven
        run: mvn -B test


================================================
FILE: .github/workflows/openshift.yaml
================================================
name: MicroShift Tests

on:
  workflow_call:
    inputs:
      dc_app:
        required: true
        type: string
    secrets:
      BITBUCKET_LICENSE:
        description: 'Bitbucket license'
      CONFLUENCE_LICENSE:
        description: 'Confluence license'
      JIRA_LICENSE:
        description: 'Jira license'
      BAMBOO_LICENSE:
        description: 'Bamboo license'
      OPENSHIFT_PULL_SECRET:
        description: 'OpenShift Pull Secret'

jobs:
  microshift:
    if: ${{ github.event.label.name == 'e2e' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' }}
    runs-on: ubuntu-24.04
    env:
      DC_APP: ${{inputs.dc_app}}
      LICENSE: ${{ secrets[format('{0}_LICENSE', inputs.dc_app)] }}
      OPENSHIFT_PULL_SECRET: ${{ secrets.OPENSHIFT_PULL_SECRET }}
      KUBECONFIG: /home/runner/.crc/machines/crc/kubeconfig

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Write pull secret file
        run: |
          echo "${OPENSHIFT_PULL_SECRET}" | base64 -d > pull-secret.txt

      - name: Fetch crc binary
        run: |
          CRC_VERSION="2.49.0"
          wget -q https://developers.redhat.com/content-gateway/file/pub/openshift-v4/clients/crc/${CRC_VERSION}/crc-linux-amd64.tar.xz
          tar -xvf crc-linux-amd64.tar.xz
          sudo cp crc-linux-${CRC_VERSION}-amd64/crc /usr/bin/crc
          sudo chmod a+x /usr/bin/crc

      - name: Fetch oc binary
        run: |
          wget -q https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable-4.18/openshift-client-linux.tar.gz
          tar -xvf openshift-client-linux.tar.gz
          sudo cp oc /usr/bin/oc
          sudo chmod a+x /usr/bin/oc

      - name: Install required virtualization software
        run: |
          sudo apt-get update
          sudo apt install qemu-kvm libvirt-daemon libvirt-daemon-system virtiofsd
          sudo usermod -a -G libvirt $USER

      - name: Free up disk
        run: |
          sudo rm -rf /usr/share/dotnet
          sudo rm -rf /usr/local/lib/android
          sudo rm -rf /opt/ghc
          sudo rm -rf "/usr/local/share/boost"
          sudo rm -rf /opt/hostedtoolcache/CodeQL
          sudo docker image prune --all --force
          sudo swapoff -a
          sudo rm -f /mnt/swapfile

      - name: Set crc config and microshift profile
        run: |
          crc config set consent-telemetry no
          crc config set network-mode user
          crc config set preset microshift

      - name: Setup the crc
        run: sudo -su $USER crc setup

      - name: Start MicroShift
        run: sudo -su $USER crc start -p pull-secret.txt --log-level debug

      - name: Create atlassian namespace
        run: |
          oc create namespace atlassian

      - name: Grant anyuid SCC for the default service account
        run: |
          SCC=("anyuid")
          for i in ${SCC[@]} ; do
            oc adm policy add-scc-to-user ${i} system:serviceaccount:atlassian:default
          done

      - name: Create shared home pvc
        run: |
           oc apply -f src/test/config/openshift/shared-home-pvc.yaml

      - name: Install Gateway API + Envoy Gateway
        run: |
          # Gateway API CRDs
          oc apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml
          oc apply --server-side=true -f https://raw.githubusercontent.com/envoyproxy/gateway/v1.2.5/charts/gateway-helm/crds/generated/gateway.envoyproxy.io_envoyproxies.yaml
          
          oc wait --for condition=established --timeout=60s crd/gateways.gateway.networking.k8s.io
          oc wait --for condition=established --timeout=60s crd/httproutes.gateway.networking.k8s.io
          oc wait --for condition=established --timeout=60s crd/gatewayclasses.gateway.networking.k8s.io
          oc wait --for condition=established --timeout=60s crd/envoyproxies.gateway.envoyproxy.io

          # Envoy Gateway (installs into envoy-gateway-system)
          # OpenShift admission can reject fixed runAsUser/seccomp settings unless the
          # service accounts are allowed to use a more permissive SCC.
          oc create namespace envoy-gateway-system --dry-run=client -o yaml | oc apply -f -
          # Pre-grant SCCs to all service accounts in the namespace so Helm hooks can run
          # even before the chart-created ServiceAccounts exist.
          oc adm policy add-scc-to-group anyuid system:serviceaccounts:envoy-gateway-system || true
          oc adm policy add-scc-to-group privileged system:serviceaccounts:envoy-gateway-system || true

          helm install eg oci://docker.io/envoyproxy/gateway-helm \
            --version v1.2.5 \
            --namespace envoy-gateway-system \
            --set deployment.envoyGateway.resources.requests.cpu=50m \
            --set deployment.envoyGateway.resources.requests.memory=100Mi \
            --skip-crds \
            --timeout=600s \
            --wait || { \
              oc get all -n envoy-gateway-system || true; \
              oc get events -n envoy-gateway-system --sort-by='.lastTimestamp' | tail -n 200 || true; \
              exit 1; \
            }

          oc wait --for=condition=available deployment/envoy-gateway \
            --namespace envoy-gateway-system \
            --timeout=300s

          # EnvoyProxy CR configures the proxy Service as ClusterIP (default for OpenShift; an OpenShift Route will handle external access).
          oc apply -f src/test/config/openshift/envoy-proxy.yaml
          
          # GatewayClass references the EnvoyProxy CR via parametersRef
          cat << EOF | oc apply -f -
          apiVersion: gateway.networking.k8s.io/v1
          kind: GatewayClass
          metadata:
            name: eg
          spec:
            controllerName: gateway.envoyproxy.io/gatewayclass-controller
            parametersRef:
              group: gateway.envoyproxy.io
              kind: EnvoyProxy
              name: openshift-proxy-config
              namespace: envoy-gateway-system
          EOF
          oc wait --for=condition=Accepted gatewayclass/eg --timeout=180s || { oc get gatewayclass/eg -o yaml; oc get pods -n envoy-gateway-system -o wide || true; exit 1; }

          # Create test Gateway
          oc apply -f src/test/config/openshift/gateway.yaml
          oc wait --for=condition=Accepted gateway/atlassian-gateway -n atlassian --timeout=300s || { oc describe gateway/atlassian-gateway -n atlassian; oc get events -n atlassian --sort-by='.lastTimestamp' | tail -n 200 || true; exit 1; }

          # Wait for data-plane
          oc wait --for=condition=Available deployment \
            -n envoy-gateway-system \
            -l gateway.envoyproxy.io/owning-gateway-name=atlassian-gateway \
            --timeout=300s || { \
              oc get deployments -n envoy-gateway-system -o wide; \
              oc get pods -n envoy-gateway-system -o wide; \
              oc describe deployment -n envoy-gateway-system -l gateway.envoyproxy.io/owning-gateway-name=atlassian-gateway || true; \
              oc get events -n envoy-gateway-system --sort-by='.lastTimestamp' | tail -n 200 || true; \
              exit 1; \
            }

          # Create an OpenShift Route so atlassian.apps.crc.testing reaches the
          # Envoy proxy Service without port-forward or Host headers.
          ENVOY_SVC=$(oc get svc -n envoy-gateway-system \
            -l gateway.envoyproxy.io/owning-gateway-name=atlassian-gateway \
            -o jsonpath='{.items[0].metadata.name}' 2>/dev/null || true)

          if [ -z "${ENVOY_SVC}" ]; then
            echo "[ERROR]: Envoy Gateway proxy service not found"
            oc get svc -n envoy-gateway-system -o wide || true
            exit 1
          fi

          oc -n envoy-gateway-system expose svc/${ENVOY_SVC} \
            --name atlassian-gateway-proxy \
            --hostname atlassian.apps.crc.testing || true

          # Log the Route and Endpoint details for debugging
          oc -n envoy-gateway-system get route atlassian-gateway-proxy -o yaml || true
          oc -n envoy-gateway-system get endpoints ${ENVOY_SVC} -o yaml || true

      - name: Deploy postgres database
        run: |
          source src/test/scripts/kind/deploy_app.sh
          deploy_postgres

      - name: Create db, admin and license secrets
        run: |
          source src/test/scripts/kind/deploy_app.sh
          create_secrets

      - name: Deploy ${{inputs.dc_app}}
        run: |
          export OPENSHIFT_VALUES="-f ./src/test/config/openshift/openshift.yaml --set ${DC_APP}.resources.container.requests.cpu=20m --set ${DC_APP}.resources.container.requests.memory=5Mi --set synchrony.resources.container.requests.cpu=20m --set synchrony.resources.container.requests.memory=5Mi"
          source src/test/scripts/kind/deploy_app.sh
          deploy_app

      - name: Verify ${{inputs.dc_app}} status
        run: |
          export OPENSHIFT_VALUES="1"
          source src/test/scripts/kind/deploy_app.sh
          verify_gateway_ingress

      - name: Verify ${{inputs.dc_app}} metrics availability
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_metrics

      - name: Verify ${{inputs.dc_app}} analytics value
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_openshift_analytics

      - name: Verify Gateway API integration
        run: |
          source src/test/scripts/kind/deploy_app.sh
          verify_gateway

      - name: Get debug info
        if: always()
        run: |
          curl -s https://raw.githubusercontent.com/atlassian-labs/data-center-terraform/main/scripts/collect_k8s_logs.sh | bash -s -- dummy dummy logs/${{inputs.dc_app}}

      - name: Upload test log files
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: kind-artifacts-${{inputs.dc_app}}
          path: logs/


================================================
FILE: .github/workflows/prepare-release.yaml
================================================
name: Prepare Release

on:
  push:
    branches:
      - release/*

jobs:
  prepare-release:
    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: refs/heads/main

      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11

      - name: Install Helm
        uses: azure/setup-helm@v3
        with:
          version: v3.15.3

      - name: Setup Python environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.9.14'

      - name: Install Python dependencies
        run: |
          python -m pip install --upgrade pip gitpython ruamel_yaml

      - name: Install Helm Docs
        uses: envoy/install-helm-docs@v1.0.0
        with:
          version: 1.12.0

      - name: Generate changelog and Chart annotations
        run: |
          echo "[INFO]: Preparing release ${GITHUB_REF_NAME##*/}"
          python src/main/scripts/prepare_release.py ${GITHUB_REF_NAME##*/}

      - name: Update README files with helm-docs
        run: |
          cd src/main/charts
          helm-docs

      - name: Configure Git
        run: |
          git config --global user.name "$GITHUB_ACTOR"
          git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com"

      - name: Lint yamls with ah cli
        run: |
          docker run --workdir="/charts" -u root -v ${GITHUB_WORKSPACE}/src/main/charts:/charts artifacthub/ah ah lint

      - name: Commit changes and raise a PR
        run: |
          git checkout ${GITHUB_REF_NAME}
          git add -A
          git commit -m "Prepare release ${GITHUB_REF_NAME##*/}"
          git push origin ${GITHUB_REF_NAME}
          gh pr create --title "Release/${GITHUB_REF_NAME##*/}" --body "Prepare to release ${GITHUB_REF_NAME##*/}" --base main --head ${GITHUB_REF_NAME}


================================================
FILE: .github/workflows/process-dashboard-test.yaml
================================================
name: Process Dashboard Script Testing

on:
  push:
    paths:
      - 'src/main/scripts/process_dash*'
  workflow_dispatch:

jobs:
  run-process-dashboard-tests:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Python environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.9.14'

      - name: Run tests
        run: |
          python src/main/scripts/process_dashboard_test.py


================================================
FILE: .github/workflows/release-charts.yaml
================================================
name: Release Helm Charts

on:
  workflow_dispatch:

jobs:
  release:
    runs-on: ubuntu-24.04
    permissions:
      id-token: write
      contents: write
      pull-requests: write
    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      HELM_SIGNING_KEY_ID: ${{ secrets.HELM_SIGNING_KEY_ID }}
      GITHUB_REPOSITORY: ${GITHUB_REPOSITORY}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Configure Git
        run: |
          git config user.name "$GITHUB_ACTOR"
          git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

      - name: Install Helm
        uses: azure/setup-helm@v3
        with:
          version: v3.15.3

      - name: Setup Python environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.9.14'

      - name: Install Python dependencies
        run: |
          python -m pip install --upgrade pip gitpython ruamel_yaml

      - name: Generate Release Notes for GitHub Releases
        run: |
          cd src/main/scripts
          products=(bamboo bamboo-agent bitbucket confluence crowd jira)
          export REPO_PATH="${GITHUB_WORKSPACE}"
          export CHARTS_LOCATION="src/main/charts"
          for product in "${products[@]}"; do
            echo "[INFO]: Generating ${REPO_PATH}/${CHARTS_LOCATION}/${product}/RELEASE_NOTES.md"
            REL_NOTES_LIST=$(python3 -W ignore -c "import prepare_release; print (prepare_release.gen_changelog(\"${product}\", \"${REPO_PATH}\"))")
            python -c "list=${REL_NOTES_LIST}; print('\n'.join(list))" > "${REPO_PATH}"/"${CHARTS_LOCATION}"/"${product}"/RELEASE_NOTES.md
          done

      - name: Execute helm dependency update for bamboo chart
        run: helm dependency update src/main/charts/bamboo
      - name: Execute helm dependency update for bamboo-agent chart
        run: helm dependency update src/main/charts/bamboo-agent
      - name: Execute helm dependency update for bitbucket chart
        run: helm dependency update src/main/charts/bitbucket
      - name: Execute helm dependency update for confluence chart
        run: helm dependency update src/main/charts/confluence
      - name: Execute helm dependency update for crowd chart
        run: helm dependency update src/main/charts/crowd
      - name: Execute helm dependency update for jira chart
        run: helm dependency update src/main/charts/jira


      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@master
        with:
          aws-region: ${{ secrets.HELM_SIGNING_KEY_AWS_REGION }}
          role-to-assume: ${{ secrets.HELM_SIGNING_KEY_AWS_IAM_ROLE }}
          role-session-name: HelmSignSession

      - name: Get Helm Signing Key
        run: |
          aws secretsmanager get-secret-value --secret-id ${{ secrets.HELM_SIGNING_KEY_AWS_SECRET_ID }} --query 'SecretBinary' --output text --region ${{ secrets.HELM_SIGNING_KEY_AWS_REGION }} | base64 --decode > helm_key
          gpg --import helm_key
          gpg --export > ~/.gnupg/pubring.gpg
          gpg --export-secret-keys > ~/.gnupg/secring.gpg
          gpg --output src/main/scripts/helm_key.pub --export ${{ secrets.HELM_SIGNING_KEY_EMAIL }}

      - name: Release Helm Charts
        run: |
          src/main/scripts/generate_chart_repo.sh ${GH_TOKEN}

      - name: Commit and push index.yaml
        run: |
          git checkout -b update-index-yaml-${GITHUB_RUN_ID}
          git commit -m "Update index.yaml post release"
          git push origin update-index-yaml-${GITHUB_RUN_ID}
          gh pr create --title "Update index.yaml" --body "Update index.yaml after release" --base main --head update-index-yaml-${GITHUB_RUN_ID}

      - name: Upload Public Key To Release Assets
        run: |
          cd src/main/scripts
          export RELEASE_VERSION=$(python3 -W ignore -c "import prepare_release; print (prepare_release.get_chart_versions(\"${GITHUB_WORKSPACE}/src/main/charts\"))" | sed "s/'/\"/g" | python -c 'import sys, json; print (json.load(sys.stdin)["bamboo"]["version"])')
          ./github_asset_uploader.sh ${RELEASE_VERSION}

      - name: Cleanup
        if: always()
        run: |
          rm -rf ~/.gnupg || true
          rm -rf helm_key


================================================
FILE: .github/workflows/release-unit-tests.yaml
================================================
name: Release Script Unit Testing

on:
  push:
    paths:
      - 'src/main/scripts/prepare_*'
  workflow_dispatch:

jobs:
  run-release-unit-tests:
    runs-on: ubuntu-24.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Python environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.9.14'

      - name: Install Python dependencies
        run: |
          python -m pip install --upgrade pip gitpython ruamel_yaml

      - name: Run release unit tests
        run: |
          python src/main/scripts/prepare_release_test.py


================================================
FILE: .github/workflows/sync-grafana-dashboards.yaml
================================================
name: Update Grafana Dashboards

on:
  schedule:
    - cron: '0 1 * * SUN' # At 1AM on every Sunday
  workflow_dispatch:

jobs:
  sync_dashboards:
    runs-on: ubuntu-24.04
    env:
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Python environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.9.14'

      - name: Configure Git
        run: |
          git config user.name "$GITHUB_ACTOR"
          git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

      - name: Process Grafana Dashboards
        run: |
          src/main/scripts/update_grafana_dashboards.sh
          
      - name: Commit changes and raise a PR
        run: |
          CHANGES=$(git status --porcelain=v1 2>/dev/null | wc -l)
          if [ ${CHANGES} -ne 0 ]; then
            OPEN_PRS=$(gh pr list --state open | grep "Update Grafana Dashboards for DC apps" || true)
            if [[ ${OPEN_PRS} ]]; then
              echo "Not raising PR because there are open PRs to update dashboards. Merge or close them to let the workflow raise new PRs"
            else
              git checkout -b update-grafana-dashboards-${GITHUB_RUN_ID}
              git add -A
              git commit -m "Update Grafana dashboards for DC apps"
              git push origin update-grafana-dashboards-${GITHUB_RUN_ID}
              gh pr create --title "Update Grafana Dashboards for DC apps" --body "Update Grafana dashboards for DC apps" --base main --head update-grafana-dashboards-${GITHUB_RUN_ID}
            fi
          else
            echo "All Helm charts have up to date Grafana dashboards"
          fi


================================================
FILE: .github/workflows/update-lts-tags.yaml
================================================
name: Update LTS Tags

on:
  workflow_dispatch:
  schedule:
    - cron: '0 0 * * SUN' # At 00:00 on every Sunday

jobs:
  lts_check:
    runs-on: ubuntu-24.04
    env:
      ARTIFACTORY_BOT_USERNAME: "${{ secrets.ARTIFACTORY_BOT_USERNAME }}"
      ARTIFACTORY_BOT_PASSWORD: "${{ secrets.ARTIFACTORY_BOT_PASSWORD }}"
      GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Setup Python environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.9.14'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install pyyaml requests

      - name: Install Helm Docs
        uses: envoy/install-helm-docs@v1.0.0
        with:
          version: 1.12.0

      - name: Configure Git
        run: |
          git config user.name "$GITHUB_ACTOR"
          git config user.email "$GITHUB_ACTOR@users.noreply.github.com"

      - name: Update LTS tags in Helm charts
        run: |
          cd src/test/scripts
          python update_versions.py

      - name: Update README files with helm-docs
        run: |
          cd src/main/charts
          helm-docs

      - name: Commit changes and raise a PR
        run: |
          CHANGES=$(git status --porcelain=v1 2>/dev/null | wc -l)
          if [ ${CHANGES} -ne 0 ]; then
            OPEN_PRS=$(gh pr list --state open | grep "Update appVersions for DC apps" || true)
            if [[ ${OPEN_PRS} ]]; then
              echo "Not raising PR because there are open PRs to upgrade versions. Merge or close them to let the workflow raise new PRs"
            else
              git checkout -b lts-tag-update-${GITHUB_RUN_ID}
              git add -A
              git commit -m "Update appVersions for DC apps"
              git push origin lts-tag-update-${GITHUB_RUN_ID}
              gh pr create --label "e2e" --title "Update appVersions for DC apps" --body "Update appVersions for DC apps" --base main --head lts-tag-update-${GITHUB_RUN_ID}
            fi
          else
            echo "All Helm charts have the latest LTS appVersion"
          fi


================================================
FILE: .gitignore
================================================
.idea
.vscode

target
__pycache__
*.iml
\#*\#
docs/site
tmp
.settings
.project
.classpath

# ignore installed common library chart
src/main/charts/*/charts/*.tgz

# Stale tmpfile from failed release process
src/main/charts/*/tmp*


================================================
FILE: .java-version
================================================
11.0


================================================
FILE: .pre-commit-config.yaml
================================================
repos:
  - repo: https://github.com/norwoodj/helm-docs
    rev: v1.12.0
    hooks:
      - id: helm-docs
        args:
          - --chart-search-root=src/main/charts

          # Repeating the flag adds this to the list, now [./_templates.gotmpl, README.md.gotmpl]
          # A base filename makes it relative to each chart directory found
          - --template-files=./README.md.gotmpl

================================================
FILE: BREAKING_CHANGES.md
================================================
# Breaking Changes

## Version 2.0.0

### Required values

* `.Values.bitbucket.clustering.group` is required for Bitbucket
* `.Values.bitbucket.mirror` is required for Bitbucket
* `.Values.bitbucket.podManagementStrategy` is required for Bitbucket
* `.Values.ingress.className` is required for all products

### `securityContext` format change
`.Values.<product>.securityContext` is now fully configurable with standard [Kubernetes values](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).    
In order to make this happen, we removed `gid` and `enabled` fields from `securityContext` stanza in `values.yaml` file. 
Instead, the standard `fsGroup` value is now the default parameter to make ensure the correct filesystem permissions. This setting is not necessary in OpenShift (or some other specific use cases).

#### Action required

- If `.Values.<product>.securityContext.enabled` was set to `true` (the default value), set the existing `.Values.<product>.securityContext.gid` value to `.Values.<product>.securityContext.fsGroup`.
- If `.Values.<product>.securityContext.enabled` was set to `false`, comment out all keys under `.Values.<product>.securityContext.securityContext` stanza. This means the `.Values.<product>.securityContext` should be empty.

#### Troubleshooting

If you encounter this error:

```
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: [ValidationError(StatefulSet.spec.template.spec.securityContext): unknown field "enabled" in io.k8s.api.core.v1.PodSecurityContext, ValidationError(StatefulSet.spec.template.spec.securityContext): unknown field "gid" in io.k8s.api.core.v1.PodSecurityContext]
```

It means your `values.yaml` file contains the unsupported `enabled` or `gid` values for the `securityContext`. Please follow the steps from `securityContext` change above.

### OpenSearch Credentials in Confluence Helm Chart

OpenSearch credentials are now passed as environment variables instead of JVM arguments in the ConfigMap. This is a breaking change for existing Confluence Helm charts that use bundled OpenSearch (`opensearch.enabled` is set to true).

In **2.0.0** `-Dopensearch.password` has been removed from config-jvm ConfigMap. OpenSearch credentials and other relevant settings are now passed as environment variables and written to `confluence.cfg.xml` in the image entrypoint (See: [Add Opensearch properties](https://bitbucket.org/atlassian-docker/docker-atlassian-confluence-server/pull-requests/192/overview)).

When upgrading Confluence Helm chart to version 2.0.0, you **must** set `confluence.forceConfigUpdate` to true in Helm values file, which will force the image entrypoint to recreate the `confluence.cfg.xml` file with the new Opensearch properties.
This is a one-time operation. After the upgrade, you can set `confluence.forceConfigUpdate` to false.


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Code of Conduct

As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information, such as physical or electronic addresses, without explicit permission
* Submitting contributions or comments that you know to violate the intellectual property or privacy rights of others
* Other unethical or unprofessional conduct

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a project maintainer. Complaints will result in a response and be reviewed and investigated in a way that is deemed necessary and appropriate to the circumstances. Maintainers are obligated to maintain confidentiality with regard to the reporter of an incident.

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.3.0, available at [http://contributor-covenant.org/version/1/3/0/][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/3/0/

================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Data Center Helm Charts

Thank you for considering a contribution to Data Center Helm Charts. Pull requests, issues and comments are welcome. For pull requests, please:

* Add tests for new features and bug fixes
* Follow the existing style
* Separate unrelated changes into multiple pull requests

Follow the [development setup](DEVELOPMENT.md).

See the existing issues for things to start contributing.

For bigger changes, please make sure you start a discussion first by creating an issue and explaining the intended change.

Atlassian requires contributors to sign a Contributor License Agreement, known as a CLA. This serves as a record stating that the contributor is entitled to contribute the code/documentation/translation to the project and is willing to have it used in distributions and derivative works (or is willing to transfer ownership).

Prior to accepting your contributions we ask that you please follow the appropriate link below to digitally sign the CLA. The Corporate CLA is for those who are contributing as a member of an organization and the individual CLA is for those contributing as an individual.

* [CLA for corporate contributors](https://opensource.atlassian.com/corporate)
* [CLA for individuals](https://opensource.atlassian.com/individual)

## Code Owners' Responsibilities

For any pull requests, code owners should review the changes thoroughly and make sure all the requirements are met. Code owners should also run the internal Bamboo CI tests and E2E tests against the changes when are applicable.

For external contributions, any Github action workflow related changes are not acceptable.

## Windows Users

This repository uses **symlinks** to share common Helm templates across product charts
(see `src/main/common_templates/`). Git on Windows doesn't enable symlinks by default — without them,
Helm template rendering will fail.

To enable symlinks on Windows:

1. Enable **Developer Mode** in Windows Settings (Settings → Update & Security → For Developers), or run Git as Administrator
2. Configure Git to create real symlinks:
   ```
   git config --global core.symlinks true
   ```
3. Re-clone the repository after changing this setting (existing clones won't retroactively fix symlinks)


### How to run E2E tests

The Data Center Helm Charts uses the latest release of [Deployment Automation for Atlassian DC on K8s](https://github.com/atlassian-labs/data-center-terraform#deployment-automation-for-atlassian-dc-on-k8s) for end-to-end testing. Internal reviewers can run the tests by adding `e2e` label on a pull request (for external contributions, be mindful of the changes as it will run on internal cloud environment).

================================================
FILE: DEVELOPMENT.md
================================================
# Development

## Chart dependencies

Product charts are using a common library chart (`common`). To download the dependency, you are required to run:

```bash
for d in ./src/main/charts/*/ ; do (cd $d && helm dependency update); done
```

## Pre-commit hooks

Repository contains repository hook definition to auto-generate chart documentation in case there is a change to `values.yaml` file.

### Installation

1. Install `pre-commit` following [official instructions](https://pre-commit.com/#install).
2. In the repository root run `pre-commit install`, which will install the hooks.

### Usage

When you have the pre-commit hook installed and `commit` a file, it will run the pre-commit hook. If there is a change generated in the `README.md`, the hook will fail and notify you about the new change. You can review the changes and run the `commit` again, now it should pass.


# Technical documentation

## Setup

Technical documentation is produced by `mkdocs` python library. The documentation and necessary files are located in `/docs/` folder.

## How to work with documentation

To make working with the documentation easier, there is a `Makefile` in the project root folder. To start the server just run:

    make docs

This will create a docker image locally, process the files and start the live server providing documentation. You should be able to open http://127.0.0.1:8000/ in your browser. If you make any change to the documentation in the `/docs/` folder, it will be picked up by the server and browser will automatically reload.

## Deployment

Documentation is automatically deployed to [official documentation](https://atlassian.github.io/data-center-helm-charts/) with Github Pages. Any change that is merged into the default branch will trigger Github Actions that builds the static documentation site and pushes it to `gh-pages` branch. This branch is then deployed by Github Pages.

================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [2020] to [2021] Atlassian Pty Ltd

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

================================================
FILE: Makefile
================================================
.PHONY: help doc-docker doc-build doc-serve

help:
	    @echo "Atlassian DC helm charts"
	    @echo ""
	    @echo "Commands:"
	    @echo "docs - starts live server with documentation"

.DEFAULT_GOAL := help

doc-docker:
	@docker build -t squidfunk/mkdocs-material docs/build/

doc-build:
	@docker run --rm -it -v ${PWD}/docs:/docs squidfunk/mkdocs-material build

doc-serve:
	@docker run --rm -it -p 8000:8000 -v ${PWD}/docs:/docs squidfunk/mkdocs-material

docs: doc-docker doc-serve

================================================
FILE: README.md
================================================
# Atlassian Data Center Helm Charts

[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/atlassian-data-center)](https://artifacthub.io/packages/search?repo=atlassian-data-center)
[![Atlassian license](https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square)](LICENSE) 
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](CONTRIBUTING.md) 
[![Maven unit tests](https://github.com/atlassian/data-center-helm-charts/actions/workflows/maven.yml/badge.svg)](https://github.com/atlassian/data-center-helm-charts/actions/workflows/maven.yml)

This project contains [Helm charts](https://helm.sh/) for installing Atlassian's [Jira Data Center](https://www.atlassian.com/enterprise/data-center/jira), [Confluence Data Center](https://www.atlassian.com/enterprise/data-center/confluence), [Bitbucket Data Center](https://www.atlassian.com/enterprise/data-center/bitbucket) and [Bamboo Data Center](https://www.atlassian.com/software/bamboo) on Kubernetes. 

Use the charts to install and operate Data Center products within a Kubernetes cluster of your choice. It can be a managed environment, such as [Amazon EKS](https://aws.amazon.com/eks/), [Azure Kubernetes Service](https://azure.microsoft.com/en-au/services/kubernetes-service/), [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine), or a custom on-premise system.

## Get started

**Get started right now using our [documentation](https://atlassian.github.io/data-center-helm-charts/).**

We provide extensive documentation to support our Helm charts. This includes prerequisites, set up, installation, examples, and more.


## Support disclaimer

We **don’t officially support** the functionality described in the [examples](https://atlassian.github.io/data-center-helm-charts/examples/EXAMPLES/) or the documented [platforms](https://atlassian.github.io/data-center-helm-charts/platforms/PLATFORMS/). You should use them for reference only. 


## Feedback

If you find any issue, [raise a ticket](https://support.atlassian.com/contact/). If you have general feedback or question regarding the charts, use [Atlassian Community Kubernetes space](https://community.atlassian.com/t5/Atlassian-Data-Center-on/gh-p/DC_Kubernetes).
  

## Contributions

Contributions are welcome. [Find out how to contribute](CONTRIBUTING.md). 


## License

Copyright (c) [2020] to [2021] Atlassian and others.
Apache 2.0 licensed, see [license file](LICENSE).


================================================
FILE: cr.yaml
================================================
pages-branch: gh-pages
index-path: docs/docs/index.yaml


================================================
FILE: docs/build/Dockerfile
================================================
FROM squidfunk/mkdocs-material
RUN pip install mkdocs-awesome-pages-plugin


================================================
FILE: docs/docs/.pages
================================================
nav:
    - Home: README.md
    - User guide: userguide
    - Examples: examples
    - Troubleshooting: troubleshooting
    - Platforms: platforms
    - Containers: containers


================================================
FILE: docs/docs/README.md
================================================
# Atlassian Data Center Helm Charts

[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/atlassian-data-center)](https://artifacthub.io/packages/search?repo=atlassian-data-center)
[![Atlassian license](https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square)](https://github.com/atlassian/data-center-helm-charts/blob/main/LICENSE) 
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/atlassian/data-center-helm-charts/blob/main/CONTRIBUTING.md) 
[![Maven unit tests](https://github.com/atlassian/data-center-helm-charts/actions/workflows/maven.yml/badge.svg)](https://github.com/atlassian/data-center-helm-charts/actions/workflows/maven.yml)

This project contains [Helm charts](https://helm.sh/){.external} for installing Atlassian's [Jira Data Center](https://www.atlassian.com/enterprise/data-center/jira){.external}, [Confluence Data Center](https://www.atlassian.com/enterprise/data-center/confluence){.external}, [Bitbucket Data Center](https://www.atlassian.com/enterprise/data-center/bitbucket){.external}, [Bamboo Data Center](https://www.atlassian.com/software/bamboo){.external} and [Crowd Data Center](https://www.atlassian.com/software/crowd){.external} on Kubernetes.

Use the charts to install and operate Data Center products within a Kubernetes cluster of your choice. It can be a managed environment, such as [Amazon EKS](https://aws.amazon.com/eks/){.external}, [Azure Kubernetes Service](https://azure.microsoft.com/en-au/services/kubernetes-service/){.external}, [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine){.external}, or a custom on-premise system.

## Support disclaimer

!!! warning "Support Disclaimer"
    Helm is a Kubernetes package manager that orchestrates the provisioning of applications onto existing Kubernetes infrastructure. The requirements for this infrastructure are described in [Prerequisites](userguide/PREREQUISITES.md). The Kubernetes cluster remains your responsibility; we do not provide direct support for Kubernetes or the underlying hardware it runs on.

    If you have followed our documentation on how to configure the Helm charts, and you're using correctly created components, we will then provide support if you encounter an error with installation after running the `helm install` command. 

    We **don’t officially support** the functionality described in the [examples](examples/EXAMPLES.md) or the documented [platforms](platforms/PLATFORMS.md). You should use them for reference only.
    
    Read more about [what we support and what we don’t](troubleshooting/SUPPORT_BOUNDARIES.md). 
    
    **Certain product limitations listed below:**

    * **Jira** currently has [limitations with scaling](troubleshooting/LIMITATIONS.md#jira-and-horizontal-scaling).
    * **Bamboo** has a number of limitations, [particularly with deployment and clustering](troubleshooting/LIMITATIONS.md#deployment).
    
    Read more about these [product and platform limitations](troubleshooting/LIMITATIONS.md).

## Architecture

The diagram below provides a high level overview of what a typical deployment might look like when using the Atlassian Data Center Helm charts:

![architecture](assets/images/KubernetesOverview.png "Request routing via Ingress")

## Installing the Helm charts

* [Prerequisites and setup](userguide/PREREQUISITES.md) - everything you need to do before installing the Helm charts
* [Verification](userguide/VERIFICATION.md) - verify the integrity of the Helm charts
* [Installation](userguide/INSTALLATION.md) - the steps to install the Helm charts
* [Migration](userguide/MIGRATION.md) - what you have to do if you're migrating an existing deployment to Kubernetes

## Additional content

* [Operation](userguide/OPERATION.md) - how to upgrade applications, scale your cluster, and update resources
* [Configuration](userguide/CONFIGURATION.md) - a deep dive into the configuration parameters
* [Platforms support](platforms/PLATFORMS.md) - how to allow support for different platforms
* [Examples](examples/EXAMPLES.md) - various configuration examples
* [Troubleshooting](troubleshooting/TROUBLESHOOTING.md) - how to debug issues with installation


## Product versions
These Helm charts support all product versions that have not reached End of Life (EOL). Please refer to the [Atlassian End of Support Policy](https://confluence.atlassian.com/support/atlassian-end-of-support-policy-201851003.html){.external} to verify that your product version is currently supported.

The Helm charts are product-version agnostic and do not assume or require a specific product version. This means you do not need to wait for a new Helm chart release before upgrading your product to a newer version — the two can be updated independently.

New Helm chart releases typically introduce improvements and new features to make the charts more flexible and easier to configure. Occasionally, a new chart release adds support for new product features, but these are almost always opt-in and will not affect existing deployments unless explicitly configured.      

## Feedback

If you find any issues, [raise a ticket](https://support.atlassian.com/contact/){.external}. If you have general feedback or questions regarding the charts, use [Atlassian Community Kubernetes space](https://community.atlassian.com/t5/Atlassian-Data-Center-on/gh-p/DC_Kubernetes){.external}.
  

## Contributions

Contributions are welcome. [Find out how to contribute](https://github.com/atlassian/data-center-helm-charts/blob/main/CONTRIBUTING.md){.external}. 


## License

Apache 2.0 licensed, see [license file](https://github.com/atlassian/data-center-helm-charts/blob/main/LICENSE){.external}.


================================================
FILE: docs/docs/artifacthub-repo.yml
================================================
# Artifact Hub repository metadata file
#
# Some settings like the verified publisher flag or the ignored packages won't
# be applied until the next time the repository is processed. Please keep in
# mind that the repository won't be processed if it has not changed since the
# last time it was processed. Depending on the repository kind, this is checked
# in a different way. For Helm http based repositories, we consider it has
# changed if the `index.yaml` file changes. For git based repositories, it does
# when the hash of the last commit in the branch you set up changes. This does
# NOT apply to ownership claim operations, which are processed immediately.
#
# https://artifacthub.io/docs/topics/repositories/#helm-charts-repositories
repositoryID: 46e7e8b1-a8bb-47bf-837f-63d7ff61a463
owners:
  - name: abrokes-atlassian
    email: abrokes@atlassian.com


================================================
FILE: docs/docs/assets/images/KubernetesOverview.xml
================================================
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36" version="29.3.8">
  <diagram name="Page-1" id="aaaa8250-4180-3840-79b5-4cada1eebb92">
    <mxGraphModel dx="829" dy="896" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" background="#FFFFFF" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="BTs9VdZK0QwFjo61O5EF-8" parent="1" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#FFFFFF;fontSize=18;" value="" vertex="1">
          <mxGeometry height="784" width="1530" x="70" y="1116" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-90" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontSize=18;strokeWidth=2;fillColor=none;gradientColor=#ffffff;dashed=1;" value="" vertex="1">
          <mxGeometry height="120" width="370" x="1152" y="1340" as="geometry" />
        </mxCell>
        <mxCell id="uEcu4RkkTLkbcE6ZgNvW-75" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontSize=18;strokeColor=#0066CC;strokeWidth=2;fillColor=none;gradientColor=#ffffff;dashed=1;" value="" vertex="1">
          <mxGeometry height="418" width="950" x="610" y="1282" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-60" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontColor=#FFFFFF;fontSize=18;">
          <mxGeometry x="60" y="1158" as="geometry">
            <Array as="points">
              <mxPoint x="200" y="1428" />
              <mxPoint x="200" y="1267" />
            </Array>
            <mxPoint x="350" y="1267" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="BTs9VdZK0QwFjo61O5EF-12" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#FFFFFF;fontSize=18;" target="BTs9VdZK0QwFjo61O5EF-8">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-59" parent="1" style="aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;spacingTop=3;image;image=img/lib/active_directory/workstation_client.svg;fontColor=#FFFFFF;strokeColor=#FF9933;fontSize=18;" value="&lt;font color=&quot;#000000&quot; style=&quot;font-size: 18px&quot;&gt;Client request&lt;/font&gt;" vertex="1">
          <mxGeometry height="80" width="68" x="120" y="1388" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-62" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=18;" value="External resources required as backing&#xa;for K8s components and the Atlassian&#xa;Data Center product itself" vertex="1">
          <mxGeometry height="90" width="330" x="260" y="1770" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-11" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fontSize=18;strokeWidth=2;fillColor=none;gradientColor=#ffffff;dashed=1;" value="" vertex="1">
          <mxGeometry height="546" width="230" x="300" y="1214" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-21" edge="1" parent="1" source="BTs9VdZK0QwFjo61O5EF-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-14">
          <mxGeometry x="400" y="1210" as="geometry">
            <Array as="points">
              <mxPoint x="550" y="1264" />
              <mxPoint x="550" y="1499" />
            </Array>
            <mxPoint x="458" y="1293" as="sourcePoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-71" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=18;" value="Kubernetes - resources provisioned via Helm charts" vertex="1">
          <mxGeometry height="26" width="470" x="650" y="1254" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-72" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=18;" value="Prerequisite cloud provider infrastructure" vertex="1">
          <mxGeometry height="38" width="340" x="260" y="1180" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-2" parent="1" style="aspect=fixed;html=1;points=[];align=center;image;fontSize=18;image=img/lib/mscae/Kubernetes.svg;" value="" vertex="1">
          <mxGeometry height="48" width="50" x="600" y="1270" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-14" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=ing;fontSize=18;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="642.5" y="1459" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-15" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=svc;fontSize=14;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="777.5" y="1459" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-23" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-15" value="">
          <mxGeometry x="692.5" y="1355" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-17" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=pvc;fontSize=18;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="1167.5" y="1359" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-18" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=pvc;fontSize=18;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="1167.5" y="1549" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-89" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontColor=#FFFFFF;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-88" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-20" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=pv;fontSize=14;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="1297.5" y="1359" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-30" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-20" value="">
          <mxGeometry x="692.5" y="1355" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-24" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=sts;fontSize=14;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="907.5" y="1459" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-26" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-24" value="">
          <mxGeometry x="692.5" y="1355" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-87" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontColor=#FFFFFF;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-34" value="">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-29" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=pv;fontSize=18;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="1297.5" y="1549" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-31" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-29" value="">
          <mxGeometry x="692.5" y="1355" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-34" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=sc;fontSize=18;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="1427.5" y="1549" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-36" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.005;entryY=0.63;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-17" value="">
          <mxGeometry x="692.5" y="1355" as="geometry">
            <mxPoint x="1117.5" y="1498.5" as="sourcePoint" />
            <mxPoint x="1167.5" y="1498.5" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-37" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.005;entryY=0.63;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-18" value="">
          <mxGeometry x="692.5" y="1355" as="geometry">
            <mxPoint x="1117.5" y="1499" as="sourcePoint" />
            <mxPoint x="1177.9" y="1419.4" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-16" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=pod;fontSize=14;" value="" vertex="1">
          <mxGeometry height="80" width="80" x="1047.5" y="1459" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-28" edge="1" parent="1" source="8gCH14wMMlRlbYn2JeYQ-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=18;" target="8gCH14wMMlRlbYn2JeYQ-16" value="">
          <mxGeometry x="692.5" y="1355" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-44" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=18;" value="Block Storage (local-home)" vertex="1">
          <mxGeometry height="26" width="228" x="1152" y="1306" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-47" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="ing" vertex="1">
          <mxGeometry height="26" width="30" x="667.5" y="1513" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-48" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="svc" vertex="1">
          <mxGeometry height="26" width="30" x="802.5" y="1513" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-49" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="sts" vertex="1">
          <mxGeometry height="26" width="30" x="932.5" y="1513" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-50" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="pod" vertex="1">
          <mxGeometry height="26" width="32.5" x="1070" y="1513" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-51" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="pvc" vertex="1">
          <mxGeometry height="26" width="30" x="1192.5" y="1413" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-52" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="pvc" vertex="1">
          <mxGeometry height="26" width="30" x="1192.5" y="1603" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-53" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="pv" vertex="1">
          <mxGeometry height="26" width="30" x="1326.5" y="1411" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-54" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="pv" vertex="1">
          <mxGeometry height="26" width="30" x="1326.5" y="1601" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-88" parent="1" style="html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];shape=mxgraph.kubernetes.icon;prIcon=sc;fontSize=14;" value="" vertex="1">
          <mxGeometry height="82.5" width="82.5" x="1427.5" y="1359" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-94" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="sc" vertex="1">
          <mxGeometry height="26" width="30" x="1458" y="1414" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-95" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#FFFFFF;fontSize=14;" value="sc" vertex="1">
          <mxGeometry height="26" width="30" x="1458" y="1604" as="geometry" />
        </mxCell>
        <mxCell id="8gCH14wMMlRlbYn2JeYQ-96" parent="1" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=18;" value="File Storage (shared-home)" vertex="1">
          <mxGeometry height="26" width="240" x="1160" y="1494" as="geometry" />
        </mxCell>
        <mxCell id="BTs9VdZK0QwFjo61O5EF-1" parent="1" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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;fontSize=18;" value="Load balancer" vertex="1">
          <mxGeometry height="25.48" width="130" x="350" y="1251.26" as="geometry" />
        </mxCell>
        <mxCell id="BTs9VdZK0QwFjo61O5EF-4" parent="1" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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;fontSize=18;" value="Shared database" vertex="1">
          <mxGeometry height="84.73" width="66" x="380" y="1329" as="geometry" />
        </mxCell>
        <mxCell id="BTs9VdZK0QwFjo61O5EF-5" parent="1" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAAMoAAAF8CAYAAACOgSR0AAAgAElEQVR4Ae19y7Nm13WX/AcAYQpUISakUjBgAGEYBZgCgSGDkEkqk6SSAibhZTFKGJBkAlUJie1Clg2xFZnEiaw2JTmy9erX7ZfU6m5JrXbrLVlNYsckkPRHrbPP7+zfXmet/TiP73739nHV57X32uu191m/s/Y+5/TVQw8Z/3v2xaNH7rz94a98+50Pb99996PdO+9/vP22NTiVOfDuB9/ZvfvBJ0cffucPPvvxvXs/ZsBhzDq6ffsH3rjz7i9v4NhuDA/izVFA8+HH9y7eu3fv4TE6es5Tzx49/Nbd948exAXa5rzdGDgHPvjwkzfvfe97f8sEy2u37mwg2bZXp3J7xSCobXdg0ZXlwtVbn641sMltd98HJQc++vjeM0NV+eyTTz387Xc/vP2gTH6b5wb02hx494Pv3L9377uPdGC5+fq3f6JWcZPbkuxBy4H3P773mQ4o3
Download .txt
gitextract_ddpb32d0/

├── .atlassian/
│   └── OWNER
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── FEATURE.yml
│   │   └── config.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── crc.yaml
│       ├── dc-tests.yml
│       ├── documentation-build.yaml
│       ├── documentation-deploy.yaml
│       ├── e2e-tf-deployment.yaml
│       ├── kind.yaml
│       ├── maven.yml
│       ├── openshift.yaml
│       ├── prepare-release.yaml
│       ├── process-dashboard-test.yaml
│       ├── release-charts.yaml
│       ├── release-unit-tests.yaml
│       ├── sync-grafana-dashboards.yaml
│       └── update-lts-tags.yaml
├── .gitignore
├── .java-version
├── .pre-commit-config.yaml
├── BREAKING_CHANGES.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DEVELOPMENT.md
├── LICENSE
├── Makefile
├── README.md
├── cr.yaml
├── docs/
│   ├── build/
│   │   └── Dockerfile
│   ├── docs/
│   │   ├── .pages
│   │   ├── README.md
│   │   ├── artifacthub-repo.yml
│   │   ├── assets/
│   │   │   ├── images/
│   │   │   │   ├── KubernetesOverview.xml
│   │   │   │   └── ingress.xml
│   │   │   └── stylesheets/
│   │   │       └── extra.css
│   │   ├── containers/
│   │   │   ├── .pages
│   │   │   ├── BAMBOO-AGENT.md
│   │   │   ├── BAMBOO.md
│   │   │   ├── BITBUCKET-MESH.md
│   │   │   ├── BITBUCKET.md
│   │   │   ├── CONFLUENCE.md
│   │   │   ├── CROWD.md
│   │   │   └── JIRA.md
│   │   ├── examples/
│   │   │   ├── .pages
│   │   │   ├── EXAMPLES.md
│   │   │   ├── bamboo/
│   │   │   │   ├── .pages
│   │   │   │   ├── AGENT_CAPABILITIES.md
│   │   │   │   └── REMOTE_AGENTS.md
│   │   │   ├── bitbucket/
│   │   │   │   ├── .pages
│   │   │   │   ├── BITBUCKET_AWS_OPENSEARCH.md
│   │   │   │   ├── BITBUCKET_ELASTICSEARCH.md
│   │   │   │   ├── BITBUCKET_MESH.md
│   │   │   │   ├── BITBUCKET_MIRRORS.md
│   │   │   │   ├── BITBUCKET_OPENSEARCH.md
│   │   │   │   ├── BITBUCKET_SESSION_AFFINITY.md
│   │   │   │   └── BITBUCKET_SSH.md
│   │   │   ├── cluster/
│   │   │   │   ├── AKS_SETUP.md
│   │   │   │   ├── CLOUD_PROVIDERS.md
│   │   │   │   ├── EKS_SETUP.md
│   │   │   │   └── GKE_SETUP.md
│   │   │   ├── confluence/
│   │   │   │   ├── .pages
│   │   │   │   └── CONFLUENCE_OPENSEARCH.md
│   │   │   ├── database/
│   │   │   │   ├── AMAZON_RDS.md
│   │   │   │   └── CLOUD_PROVIDERS.md
│   │   │   ├── external_libraries/
│   │   │   │   └── EXTERNAL_LIBS.md
│   │   │   ├── ingress/
│   │   │   │   ├── CONTROLLERS.md
│   │   │   │   ├── DNS.md
│   │   │   │   ├── GATEWAY_API.md
│   │   │   │   ├── GATEWAY_API_SESSION_AFFINITY.md
│   │   │   │   └── INGRESS_NGINX.md
│   │   │   ├── jira/
│   │   │   │   ├── .pages
│   │   │   │   └── JIRA_OPENSEARCH.md
│   │   │   ├── logging/
│   │   │   │   └── efk/
│   │   │   │       ├── EFK.md
│   │   │   │       ├── local_es/
│   │   │   │       │   └── elasticsearch.yaml
│   │   │   │       └── managed_es/
│   │   │   │           └── fluentbit.yaml
│   │   │   └── storage/
│   │   │       ├── .pages
│   │   │       ├── STORAGE.md
│   │   │       ├── additional storage/
│   │   │       │   └── ADDTIONAL_STORAGE.md
│   │   │       ├── aws/
│   │   │       │   ├── LOCAL_STORAGE.md
│   │   │       │   ├── SHARED_STORAGE.md
│   │   │       │   └── s3/
│   │   │       │       ├── CONFLUENCE.md
│   │   │       │       └── JIRA.md
│   │   │       └── nfs/
│   │   │           ├── NFS.md
│   │   │           ├── nfs-server-example/
│   │   │           │   ├── .helmignore
│   │   │           │   ├── Chart.yaml
│   │   │           │   ├── templates/
│   │   │           │   │   ├── NOTES.txt
│   │   │           │   │   ├── _helpers.tpl
│   │   │           │   │   ├── service.yaml
│   │   │           │   │   ├── serviceaccount.yaml
│   │   │           │   │   ├── statefulset.yaml
│   │   │           │   │   ├── storageclass.yaml
│   │   │           │   │   └── tests/
│   │   │           │   │       ├── test-locking.yaml
│   │   │           │   │       ├── test-performance.yaml
│   │   │           │   │       └── test-pv.yaml
│   │   │           │   └── values.yaml
│   │   │           └── nfs-server-example-0.1.0.tgz
│   │   ├── index.yaml
│   │   ├── platforms/
│   │   │   ├── .pages
│   │   │   ├── PLATFORMS.md
│   │   │   └── openshift/
│   │   │       ├── OPENSHIFT.md
│   │   │       └── OPENSHIFT_FAQ.md
│   │   ├── troubleshooting/
│   │   │   ├── .pages
│   │   │   ├── LIMITATIONS.md
│   │   │   ├── SUPPORT_BOUNDARIES.md
│   │   │   └── TROUBLESHOOTING.md
│   │   └── userguide/
│   │       ├── .pages
│   │       ├── CONFIGURATION.md
│   │       ├── INSTALLATION.md
│   │       ├── MIGRATION.md
│   │       ├── OPERATION.md
│   │       ├── PREREQUISITES.md
│   │       ├── VERIFICATION.md
│   │       ├── monitoring/
│   │       │   ├── .pages
│   │       │   ├── PRE_CANNED_CHARTS.md
│   │       │   └── PROMETHEUS.md
│   │       ├── resource_management/
│   │       │   ├── JIRA_INDEX_SNAPSHOT.md
│   │       │   ├── REQUESTS_AND_LIMITS.md
│   │       │   └── RESOURCE_SCALING.md
│   │       └── upgrades/
│   │           ├── .pages
│   │           ├── HELM_CHART_UPGRADE.md
│   │           └── PRODUCTS_UPGRADE.md
│   ├── mkdocs.yml
│   ├── overrides/
│   │   └── main.html
│   └── requirements.txt
├── docs_internal/
│   └── ROUTING.md
├── mvnvm.properties
├── pom.xml
├── scripts/
│   └── generate_k8s_support_bundle.sh
└── src/
    ├── main/
    │   ├── charts/
    │   │   ├── README.md.gotmpl
    │   │   ├── bamboo/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   └── overview.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-init-properties.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-server-config.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── service-jms.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       ├── test-database-connectivity.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   ├── bamboo-agent/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── deployment-agent.yaml
    │   │   │   │   └── serviceaccount.yaml
    │   │   │   └── values.yaml
    │   │   ├── bitbucket/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   ├── bitbucket-mesh/
    │   │   │   │   │   ├── mesh-grpc.json
    │   │   │   │   │   ├── mesh-overview.json
    │   │   │   │   │   ├── mesh-repair.json
    │   │   │   │   │   └── mesh-tickets.json
    │   │   │   │   ├── build-actions-thread-pool-stats.json
    │   │   │   │   ├── db-ops.json
    │   │   │   │   ├── event-thread-pool-stats.json
    │   │   │   │   ├── git-ops.json
    │   │   │   │   ├── io-pump-thread-pool-stats.json
    │   │   │   │   ├── nio-pump-thread-pool-stats.json
    │   │   │   │   ├── overview.json
    │   │   │   │   ├── scheduled-thread-pool-stats.json
    │   │   │   │   ├── ssh-session-stats.json
    │   │   │   │   ├── ticket-status.json
    │   │   │   │   └── webhooks-stats.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm-mesh.yaml
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-mesh-grafana-dashboards.yaml
    │   │   │   │   ├── configmap-mesh-scripts.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── job-mesh-add-nodes.yaml
    │   │   │   │   ├── job-mesh-configure.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── rbac.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── secret-clustering.yaml
    │   │   │   │   ├── secret-opensearch.yaml
    │   │   │   │   ├── service-hazelcast.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-mesh.yaml
    │   │   │   │   ├── service-monitor-mesh.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service-ssh.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pv.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset-mesh.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       ├── test-database-connectivity.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   ├── common/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   └── templates/
    │   │   │       ├── _jmx.tpl
    │   │   │       ├── _labels.tpl
    │   │   │       └── _names.tpl
    │   │   ├── confluence/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   ├── cache-clearing.json
    │   │   │   │   ├── cluster-locks.json
    │   │   │   │   ├── database-load.json
    │   │   │   │   ├── hikari.json
    │   │   │   │   ├── overview.json
    │   │   │   │   ├── plugin-monitoring.json
    │   │   │   │   └── response-times.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-server-config.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress-setup.yaml
    │   │   │   │   ├── ingress-synchrony.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── rbac.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── secret-opensearch.yaml
    │   │   │   │   ├── service-hazelcast.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service-synchrony.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset-synchrony.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   ├── synchrony-start-script.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       ├── test-database-connectivity.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   ├── crowd/
    │   │   │   ├── .helmignore
    │   │   │   ├── Changelog.md
    │   │   │   ├── Chart.yaml
    │   │   │   ├── README.md
    │   │   │   ├── grafana-dashboards/
    │   │   │   │   └── overview.json
    │   │   │   ├── templates/
    │   │   │   │   ├── NOTES.txt
    │   │   │   │   ├── _fluentd_templates.tpl
    │   │   │   │   ├── _helpers.tpl
    │   │   │   │   ├── config-jvm.yaml
    │   │   │   │   ├── configmap-additional-config.yaml
    │   │   │   │   ├── configmap-fluentd.yaml
    │   │   │   │   ├── configmap-jmx-config.yaml
    │   │   │   │   ├── configmap-server-config.yaml
    │   │   │   │   ├── configmap-values-analytics.yaml
    │   │   │   │   ├── configmaps-grafana-dashboards.yaml
    │   │   │   │   ├── httproute.yaml
    │   │   │   │   ├── ingress.yaml
    │   │   │   │   ├── pdb.yaml
    │   │   │   │   ├── route.yaml
    │   │   │   │   ├── service-jmx.yaml
    │   │   │   │   ├── service-monitor.yaml
    │   │   │   │   ├── service.yaml
    │   │   │   │   ├── serviceaccount.yaml
    │   │   │   │   ├── shared-home-pvc.yaml
    │   │   │   │   ├── statefulset.yaml
    │   │   │   │   └── tests/
    │   │   │   │       ├── test-application-status.yaml
    │   │   │   │       └── test-shared-home-permissions.yaml
    │   │   │   └── values.yaml
    │   │   └── jira/
    │   │       ├── .helmignore
    │   │       ├── Changelog.md
    │   │       ├── Chart.yaml
    │   │       ├── README.md
    │   │       ├── grafana-dashboards/
    │   │       │   ├── cache-clearing.json
    │   │       │   ├── cluster-locks.json
    │   │       │   ├── database-load.json
    │   │       │   ├── general.json
    │   │       │   ├── indexing.json
    │   │       │   ├── response-times.json
    │   │       │   └── tasks.json
    │   │       ├── templates/
    │   │       │   ├── NOTES.txt
    │   │       │   ├── _fluentd_templates.tpl
    │   │       │   ├── _helpers.tpl
    │   │       │   ├── config-jvm.yaml
    │   │       │   ├── configmap-additional-config.yaml
    │   │       │   ├── configmap-fluentd.yaml
    │   │       │   ├── configmap-jmx-config.yaml
    │   │       │   ├── configmap-server-config.yaml
    │   │       │   ├── configmap-values-analytics.yaml
    │   │       │   ├── configmaps-grafana-dashboards.yaml
    │   │       │   ├── httproute.yaml
    │   │       │   ├── ingress.yaml
    │   │       │   ├── pdb.yaml
    │   │       │   ├── route.yaml
    │   │       │   ├── secret-opensearch.yaml
    │   │       │   ├── service-jmx.yaml
    │   │       │   ├── service-monitor.yaml
    │   │       │   ├── service.yaml
    │   │       │   ├── serviceaccount.yaml
    │   │       │   ├── shared-home-pvc.yaml
    │   │       │   ├── statefulset.yaml
    │   │       │   └── tests/
    │   │       │       ├── test-application-status.yaml
    │   │       │       ├── test-database-connectivity.yaml
    │   │       │       └── test-shared-home-permissions.yaml
    │   │       └── values.yaml
    │   ├── common_templates/
    │   │   ├── README.md
    │   │   └── _gateway.tpl
    │   └── scripts/
    │       ├── generate_chart_repo.sh
    │       ├── github_asset_uploader.sh
    │       ├── prepare_release.py
    │       ├── prepare_release_test.py
    │       ├── process_dashboard.py
    │       ├── process_dashboard_test.py
    │       └── update_grafana_dashboards.sh
    └── test/
        ├── charts/
        │   └── functest/
        │       ├── .helmignore
        │       ├── Chart.yaml
        │       ├── README.md
        │       ├── templates/
        │       │   ├── ingress-KITT.yaml
        │       │   ├── ingress-expose-node-EKS.yaml
        │       │   ├── ingress-expose-node-KITT.yaml
        │       │   └── service-expose-node.yaml
        │       └── values.yaml
        ├── config/
        │   ├── bamboo/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   ├── values-agent.yaml
        │   │   └── values.yaml
        │   ├── bitbucket/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   └── values.yaml
        │   ├── confluence/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   └── values.yaml
        │   ├── crowd/
        │   │   ├── helm_parameters
        │   │   ├── values-EKS.yaml
        │   │   └── values.yaml
        │   ├── jira/
        │   │   ├── helm_parameters
        │   │   ├── values-AKS.yaml
        │   │   ├── values-EKS.yaml
        │   │   ├── values-GKE.yaml
        │   │   ├── values-KITT.yaml
        │   │   └── values.yaml
        │   ├── kind/
        │   │   ├── backdoor-svc.yaml
        │   │   ├── common-values.yaml
        │   │   ├── envoy-proxy.yaml
        │   │   ├── gateway.yaml
        │   │   ├── hostpath-pv.yaml
        │   │   ├── kind-config.yml
        │   │   ├── nfs-values.yaml
        │   │   └── registry.yaml
        │   ├── logging/
        │   │   ├── README.md
        │   │   ├── elasticsearch/
        │   │   │   └── values-KITT.yaml
        │   │   └── kibana/
        │   │       ├── ingress-kitt.yaml
        │   │       └── values-KITT.yaml
        │   ├── openshift/
        │   │   ├── envoy-proxy.yaml
        │   │   ├── gateway.yaml
        │   │   ├── openshift.yaml
        │   │   └── shared-home-pvc.yaml
        │   └── shared-home/
        │       └── shared-home-browser.yaml
        ├── infrastructure/
        │   ├── cloudnativepg/
        │   │   ├── README.md
        │   │   ├── cluster-template.yaml
        │   │   ├── init-scripts/
        │   │   │   └── init-db.sql
        │   │   └── operator-values.yaml
        │   ├── elasticsearch/
        │   │   └── elasticsearch-values.yaml
        │   ├── nfs-server/
        │   │   ├── .helmignore
        │   │   ├── Chart.yaml
        │   │   ├── README.md
        │   │   ├── templates/
        │   │   │   ├── NOTES.txt
        │   │   │   ├── _helpers.tpl
        │   │   │   ├── service.yaml
        │   │   │   ├── serviceaccount.yaml
        │   │   │   └── statefulset.yaml
        │   │   └── values.yaml
        │   └── postgres/
        │       └── postgres-values.yaml
        ├── java/
        │   └── test/
        │       ├── AdditionalCertificatesTest.java
        │       ├── AdditionalConfigMapsTest.java
        │       ├── AdditionalConfigPropertiesTest.java
        │       ├── AdditionalFilesTest.java
        │       ├── AdditionalHostsTest.java
        │       ├── AdditionalLibrariesTest.java
        │       ├── BambooAgentTest.java
        │       ├── BitbucketMeshTest.java
        │       ├── BitbucketOpenSearchTest.java
        │       ├── BitbucketSshServiceTest.java
        │       ├── CloudNativePGTest.java
        │       ├── ClusteringTest.java
        │       ├── ConfluenceDebugFlagTest.java
        │       ├── ConfluenceOpenSearchTest.java
        │       ├── ConfluenceS3EnabledTest.java
        │       ├── ContainersTest.java
        │       ├── ContextPathTest.java
        │       ├── CustomPortTest.java
        │       ├── DatabaseTest.java
        │       ├── ElasticSearchTest.java
        │       ├── FluentdTest.java
        │       ├── ForcedConfigUpdateTest.java
        │       ├── GatewayTest.java
        │       ├── HelmLintTest.java
        │       ├── HelmOutputComparisonTest.java
        │       ├── HelmValuesAndAnalyticsTest.java
        │       ├── HostNamespacesTest.java
        │       ├── ImageTest.java
        │       ├── IngressTest.java
        │       ├── JiraOpenSearchTest.java
        │       ├── JiraS3EnabledTest.java
        │       ├── JmxMetricsTest.java
        │       ├── JvmResourcesTest.java
        │       ├── LicenseTest.java
        │       ├── LifecycleHooksTest.java
        │       ├── MirrorsTest.java
        │       ├── PodAnnotationsTest.java
        │       ├── PodDisruptionBudgetTest.java
        │       ├── PodTest.java
        │       ├── PriorityClassNameTest.java
        │       ├── ReadinessLivenessProbesTest.java
        │       ├── RequestsTest.java
        │       ├── SchedulerNameTest.java
        │       ├── SecurityContextTest.java
        │       ├── ServerConfigTest.java
        │       ├── ServiceAccountTest.java
        │       ├── ServiceTest.java
        │       ├── SetPermissionTest.java
        │       ├── StatefulSetUpdateTest.java
        │       ├── SynchronyTest.java
        │       ├── TestPodsTest.java
        │       ├── TopologySpreadConstraintsTest.java
        │       ├── TunnelTest.java
        │       ├── VolumesTest.java
        │       ├── helm/
        │       │   └── Helm.java
        │       ├── jackson/
        │       │   └── JsonNodeAssert.java
        │       ├── model/
        │       │   ├── AnalyticsData.java
        │       │   ├── ClusterType.java
        │       │   ├── ConfigMap.java
        │       │   ├── Container.java
        │       │   ├── Deployment.java
        │       │   ├── Env.java
        │       │   ├── Kind.java
        │       │   ├── KubeResource.java
        │       │   ├── KubeResources.java
        │       │   ├── Pod.java
        │       │   ├── Product.java
        │       │   ├── Service.java
        │       │   ├── StatefulSet.java
        │       │   └── Synchrony.java
        │       └── postinstall/
        │           ├── KubeClient.java
        │           ├── OpenSearchInstallTest.java
        │           ├── PostInstallStatusTest.java
        │           └── Utils.java
        ├── resources/
        │   └── expected_helm_output/
        │       ├── README.txt
        │       ├── bamboo/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── bamboo-agent/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── bitbucket/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── confluence/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       ├── crowd/
        │       │   ├── output.yaml
        │       │   └── values.yaml
        │       └── jira/
        │           ├── output.yaml
        │           └── values.yaml
        └── scripts/
            ├── download_logs.sh
            ├── helm_install.sh
            ├── helm_uninstall.sh
            ├── kind/
            │   ├── configure_kind.sh
            │   ├── create_kind.sh
            │   └── deploy_app.sh
            ├── product_versions.py
            ├── shared_home_browser_install.sh
            ├── start_nfs_server.sh
            └── update_versions.py
Download .txt
SYMBOL INDEX (779 symbols across 80 files)

FILE: src/main/scripts/prepare_release.py
  function get_chart_versions (line 36) | def get_chart_versions(path=prod_base):
  function gen_changelog (line 56) | def gen_changelog(product, path, changelog=None, test=False):
  function format_changelog_yaml (line 104) | def format_changelog_yaml(changelog):
  function update_changelog_file (line 121) | def update_changelog_file(product, version, changelog, chartversions):
  function update_helm_dependencies (line 161) | def update_helm_dependencies(product):
  function update_charts_yaml (line 171) | def update_charts_yaml(product, version, changelog):
  function update_output_tests (line 190) | def update_output_tests():
  function parse_args (line 202) | def parse_args():
  function main (line 210) | def main():

FILE: src/main/scripts/prepare_release_test.py
  class TestGitLog (line 30) | class TestGitLog(unittest.TestCase):
    method setUp (line 32) | def setUp(self):
    method test_remove_messages_with_smaller_pr_numbers (line 37) | def test_remove_messages_with_smaller_pr_numbers(self):
    method test_remove_messages_matching_pattern (line 44) | def test_remove_messages_matching_pattern(self):
    method test_remove_jira_keys_from_messages (line 48) | def test_remove_jira_keys_from_messages(self):
    method test_duplicate_messages (line 56) | def test_duplicate_messages(self):
    method test_empty_git_log (line 60) | def test_empty_git_log(self):
    method test_formatting (line 64) | def test_formatting(self):

FILE: src/main/scripts/process_dashboard.py
  function process_panels (line 78) | def process_panels(panels):

FILE: src/test/infrastructure/cloudnativepg/init-scripts/init-db.sql
  function health_check (line 17) | CREATE OR REPLACE FUNCTION health_check() RETURNS text AS $$

FILE: src/test/java/test/AdditionalCertificatesTest.java
  class AdditionalCertificatesTest (line 16) | public class AdditionalCertificatesTest {
    method initHelm (line 20) | @BeforeEach
    method additional_certificates_jvm_prop (line 26) | @ParameterizedTest
    method additional_certificate_list_jvm_prop (line 37) | @ParameterizedTest
    method additional_certificates_jvm_prop_synchrony (line 53) | @ParameterizedTest
    method additional_certificate_list_jvm_prop_synchrony (line 64) | @ParameterizedTest
    method additional_certificates_jvm_prop_mesh (line 79) | @ParameterizedTest
    method additional_certificate_list_jvm_prop_mesh (line 90) | @ParameterizedTest
    method additional_certificates_init_container (line 105) | @ParameterizedTest
    method additional_certificates_init_container_synchrony (line 119) | @ParameterizedTest
    method additional_certificates_init_container_bitbucket_mesh (line 133) | @ParameterizedTest
    method additional_certificates_volumeMounts (line 147) | @ParameterizedTest
    method additional_certificate_list_volumeMounts (line 158) | @ParameterizedTest
    method additional_certificates_volumeMounts_bitbucket_mesh (line 173) | @ParameterizedTest
    method additional_certificate_list_volumeMounts_bitbucket_mesh (line 185) | @ParameterizedTest
    method additional_certificates_volumeMounts_synchrony (line 201) | @ParameterizedTest
    method additional_certificate_list_volumeMounts_synchrony (line 213) | @ParameterizedTest
    method additional_certificates_volumes (line 229) | @ParameterizedTest
    method additional_certificates_volumes_bitbucket_mesh (line 240) | @ParameterizedTest
    method additional_certificates_volumes_synchrony (line 252) | @ParameterizedTest
    method additional_certificates_custom_cmd (line 264) | @ParameterizedTest
    method additional_certificates_custom_cmd_bitbucket_mesh (line 276) | @ParameterizedTest
    method additional_certificates_synchrony_custom_cmd (line 288) | @ParameterizedTest
    method additional_certificates_init_resources (line 300) | @ParameterizedTest
    method additional_certificates_synchrony_init_resources (line 319) | @ParameterizedTest
    method additional_certificates_bitbucket_mesh_init_resources (line 337) | @ParameterizedTest
    method additional_certificates_multi_volumes (line 354) | @ParameterizedTest
    method additional_certificates_multi_volume_mounts (line 369) | @ParameterizedTest
    method additional_certificates_multi_volume_mounts_synchrony (line 394) | @ParameterizedTest
    method additional_certificates_multi_volumes_synchrony (line 419) | @ParameterizedTest
    method additional_certificates_multi_volumes_mesh (line 434) | @ParameterizedTest
    method additional_certificates_multi_volume_mounts_mesh (line 449) | @ParameterizedTest
    method additional_certificates_init_container_security_context (line 474) | @ParameterizedTest
    method additional_crt_init_container_security_context_synchrony (line 487) | @ParameterizedTest
    method additional_crt_init_container_security_context_mesh (line 501) | @ParameterizedTest

FILE: src/test/java/test/AdditionalConfigMapsTest.java
  class AdditionalConfigMapsTest (line 15) | public class AdditionalConfigMapsTest {
    method initHelm (line 19) | @BeforeEach
    method additional_configmap_configmap_exists (line 24) | @ParameterizedTest
    method additional_configmap_sts_annotation (line 39) | @ParameterizedTest
    method additional_configmap_volumes (line 54) | @ParameterizedTest
    method additional_configmap_volumes_default_mode (line 74) | @ParameterizedTest
    method additional_configmap_volume_mounts (line 94) | @ParameterizedTest
    method getStsVolume (line 112) | private JsonNode getStsVolume(StatefulSet statefulSet, String secret) {

FILE: src/test/java/test/AdditionalConfigPropertiesTest.java
  class AdditionalConfigPropertiesTest (line 13) | class AdditionalConfigPropertiesTest {
    method initHelm (line 19) | @BeforeEach
    method no_additional_config_properties_by_default (line 24) | @Test
    method additional_config_properties_are_set (line 36) | @Test
    method additional_config_properties_expand_env_are_set (line 49) | @Test
    method both_config_properties_and_expand_env_are_set (line 60) | @Test

FILE: src/test/java/test/AdditionalFilesTest.java
  class AdditionalFilesTest (line 20) | class AdditionalFilesTest {
    method initHelm (line 23) | @BeforeEach
    method additional_files_config_map_creates_volumes (line 28) | @ParameterizedTest
    method additional_files_secret_creates_new_secrets (line 53) | @ParameterizedTest
    method additional_files_configMap_create_volume_mounts (line 90) | @ParameterizedTest
    method getStsVolume (line 135) | private JsonNode getStsVolume(StatefulSet statefulSet, String secret) {
    method getDeploymentVolume (line 141) | private JsonNode getDeploymentVolume(Deployment deployment, String sec...

FILE: src/test/java/test/AdditionalHostsTest.java
  class AdditionalHostsTest (line 17) | class AdditionalHostsTest {
    method initHelm (line 20) | @BeforeEach
    method additional_hosts_included_in_confluence_and_synchrony (line 25) | @ParameterizedTest

FILE: src/test/java/test/AdditionalLibrariesTest.java
  class AdditionalLibrariesTest (line 17) | public class AdditionalLibrariesTest {
    method initHelm (line 20) | @BeforeEach
    method additional_libraries_synchrony (line 25) | @Test
    method additional_libraries_synchrony_withoutSubDirectory (line 41) | @Test

FILE: src/test/java/test/BambooAgentTest.java
  class BambooAgentTest (line 17) | class BambooAgentTest {
    method initHelm (line 20) | @BeforeEach
    method baseUrlSet (line 25) | @ParameterizedTest
    method serverProtocol (line 37) | @ParameterizedTest
    method bamboo_agent_security_token_secret_name (line 50) | @ParameterizedTest
    method additionalEnvironmentVariables (line 63) | @ParameterizedTest
    method additionalInitContainers (line 76) | @ParameterizedTest
    method additionalContainers (line 89) | @ParameterizedTest
    method deployment_empty_limits (line 102) | @ParameterizedTest
    method deployment_resource_requests_and_limits (line 112) | @ParameterizedTest
    method custom_scheduler (line 133) | @ParameterizedTest
    method default_scheduler (line 143) | @ParameterizedTest
    method test_pod_security_context (line 153) | @ParameterizedTest
    method test_pod_security_context_without_fsGroup (line 167) | @ParameterizedTest
    method test_container_security_context (line 182) | @ParameterizedTest

FILE: src/test/java/test/BitbucketMeshTest.java
  class BitbucketMeshTest (line 25) | class BitbucketMeshTest {
    method initHelm (line 28) | @BeforeEach
    method meshEnabledCreatesResources (line 33) | @Test
    method meshDisabledNoResources (line 53) | @Test
    method postInstallationHooks (line 66) | @Test
    method meshJVMConfig (line 95) | @Test
    method meshPodMetadata (line 114) | @Test
    method meshEnvironmentVariables (line 138) | @Test
    method meshVolumeClaimTemplates (line 153) | @Test
    method meshAffinity (line 169) | @Test
    method meshTopologySpreadConstraints (line 187) | @Test
    method meshTolerations (line 216) | @Test
    method meshNodeSelector (line 243) | @Test
    method meshSchedulerName (line 259) | @Test
    method meshService (line 271) | @Test
    method meshRegistrationConfig (line 292) | @Test
    method meshBitbucketUrlConfig (line 307) | @Test
    method fluentd_sidecar_enabled (line 321) | @Test
    method meshScriptsConfigMap (line 339) | private KubeResource meshScriptsConfigMap(KubeResources resources) {
    method meshJvmConfigMap (line 347) | private KubeResource meshJvmConfigMap(KubeResources resources) {

FILE: src/test/java/test/BitbucketOpenSearchTest.java
  class BitbucketOpenSearchTest (line 21) | class BitbucketOpenSearchTest {
    method initHelm (line 24) | @BeforeEach
    method opensearch_statefulset_exists (line 29) | @ParameterizedTest
    method opensearch_existing_external (line 39) | @ParameterizedTest
    method opensearch_container_env_vars_defaults (line 50) | @ParameterizedTest
    method opensearch_container_env_vars_custom_secret (line 64) | @ParameterizedTest
    method opensearch_container_env_vars_custom_url (line 79) | @ParameterizedTest
    method opensearch_secret_has_password (line 92) | @ParameterizedTest

FILE: src/test/java/test/BitbucketSshServiceTest.java
  class BitbucketSshServiceTest (line 19) | class BitbucketSshServiceTest {
    method initHelm (line 22) | @BeforeEach
    method defaults (line 27) | @ParameterizedTest
    method values_set (line 44) | @ParameterizedTest
    method bitbucket_default_ssh_svc_port (line 68) | @ParameterizedTest
    method bitbucket_override_ssh_svc_port (line 76) | @ParameterizedTest
    method bitbucket_default_ssh_listen_port (line 85) | @ParameterizedTest
    method bitbucket_override_ssh_listen_port (line 94) | @ParameterizedTest

FILE: src/test/java/test/CloudNativePGTest.java
  class CloudNativePGTest (line 14) | class CloudNativePGTest {
    method initHelm (line 17) | @BeforeEach
    method test_cloudnativepg_service_name_format (line 22) | @Test
    method test_postgresql_connection_string_format (line 36) | @Test
    method test_database_credentials_secret_format (line 47) | @Test
    method test_cluster_naming_convention (line 56) | @Test

FILE: src/test/java/test/ClusteringTest.java
  class ClusteringTest (line 16) | class ClusteringTest {
    method initHelm (line 19) | @BeforeEach
    method bitbucket_clustering_enabled (line 24) | @ParameterizedTest
    method bitbucket_clustering_enabled_custom_group (line 50) | @ParameterizedTest
    method confluence_clustering_enabled (line 78) | @ParameterizedTest
    method confluence_role_enabled (line 103) | @ParameterizedTest
    method jira_clustering_enabled (line 123) | @ParameterizedTest
    method jira_clustering_enabled_custom_ehcache (line 139) | @ParameterizedTest

FILE: src/test/java/test/ConfluenceDebugFlagTest.java
  class ConfluenceDebugFlagTest (line 18) | class ConfluenceDebugFlagTest {
    method initHelm (line 21) | @BeforeEach
    method withoutDebugFlagJvmArgsFormOneString (line 26) | @Test
    method debugFlagArgumentsAreWellFormed (line 42) | @Test
    method findJvmArgumentsConfigMap (line 60) | private KubeResource findJvmArgumentsConfigMap(KubeResources resources) {

FILE: src/test/java/test/ConfluenceOpenSearchTest.java
  class ConfluenceOpenSearchTest (line 21) | class ConfluenceOpenSearchTest {
    method initHelm (line 24) | @BeforeEach
    method opensearch_statefulset_exists (line 29) | @ParameterizedTest
    method jvm_config_map_has_opensearch_args (line 39) | @ParameterizedTest
    method opensearch_secret_has_password (line 49) | @ParameterizedTest
    method confluence_has_opensearch_envs (line 65) | @ParameterizedTest
    method confluence_has_opensearch_env_existing_secret (line 80) | @ParameterizedTest

FILE: src/test/java/test/ConfluenceS3EnabledTest.java
  class ConfluenceS3EnabledTest (line 14) | class ConfluenceS3EnabledTest {
    method initHelm (line 17) | @BeforeEach
    method confluence_s3_storage_env_vars (line 23) | @ParameterizedTest
    method confluence_s3_storage_endpoint_override (line 36) | @ParameterizedTest
    method confluence_s3_storage_no_endpoint_override (line 50) | @ParameterizedTest
    method confluence_s3_storage_missing_env_vars (line 61) | @ParameterizedTest

FILE: src/test/java/test/ContainersTest.java
  class ContainersTest (line 21) | class ContainersTest {
    method initHelm (line 24) | @BeforeEach
    method additionalEnvironmentVariables (line 29) | @ParameterizedTest
    method additionalSynchronyEnvironmentVariables (line 43) | @ParameterizedTest
    method additionalPorts (line 58) | @ParameterizedTest
    method additionalInitContainers (line 75) | @ParameterizedTest
    method additionalContainers (line 89) | @ParameterizedTest
    method defaultContainerNames (line 103) | @ParameterizedTest
    method containerNamesAsHelmReleaseName (line 112) | @ParameterizedTest
    method nfx_permission_fixer_container_default_no_resources (line 123) | @ParameterizedTest
    method nfx_permission_fixer_container_default_custom_resources (line 134) | @ParameterizedTest
    method test_session_timeout (line 152) | @ParameterizedTest
    method test_autologin_cookie_age (line 166) | @ParameterizedTest
    method session_timeout_default (line 180) | @ParameterizedTest

FILE: src/test/java/test/ContextPathTest.java
  class ContextPathTest (line 19) | class ContextPathTest {
    method initHelm (line 22) | @BeforeEach
    method test_context_path (line 27) | @ParameterizedTest
    method test_context_path_bamboo (line 43) | @ParameterizedTest
    method test_context_path_bitbucket (line 59) | @ParameterizedTest

FILE: src/test/java/test/CustomPortTest.java
  class CustomPortTest (line 15) | class CustomPortTest {
    method initHelm (line 18) | @BeforeEach
    method custom_port_tomcat_server (line 23) | @ParameterizedTest
    method custom_port_bitbucket (line 36) | @ParameterizedTest

FILE: src/test/java/test/DatabaseTest.java
  class DatabaseTest (line 15) | class DatabaseTest {
    method initHelm (line 18) | @BeforeEach
    method jira_database (line 23) | @ParameterizedTest
    method bitbucket_database (line 44) | @ParameterizedTest
    method confluence_database (line 63) | @ParameterizedTest
    method bamboo_database (line 83) | @ParameterizedTest
    method confluence_database_ampersand (line 103) | @ParameterizedTest
    method confluence_database_ampersand_escaped (line 114) | @ParameterizedTest
    method synchrony_database_ampersand (line 125) | @ParameterizedTest

FILE: src/test/java/test/ElasticSearchTest.java
  class ElasticSearchTest (line 12) | class ElasticSearchTest {
    method initHelm (line 15) | @BeforeEach
    method elastic_search_baseUrl (line 20) | @ParameterizedTest
    method elastic_search_credentials (line 33) | @ParameterizedTest

FILE: src/test/java/test/FluentdTest.java
  class FluentdTest (line 18) | class FluentdTest {
    method initHelm (line 21) | @BeforeEach
    method fluentd_sidecar_enabled (line 26) | @ParameterizedTest
    method fluentd_uses_default_start_command (line 44) | @ParameterizedTest
    method fluentd_uses_custom_start_command (line 60) | @ParameterizedTest
    method fluentd_checksum_disabled (line 77) | @ParameterizedTest
    method fluentd_changes_annotation_checksum (line 90) | @ParameterizedTest
    method fluentd_sidecar_enabled_resources (line 114) | @ParameterizedTest
    method fluentd_cloud_logging_property_false (line 132) | @ParameterizedTest
    method fluentd_cloud_logging_property_true (line 141) | @ParameterizedTest
    method fluentd_local_volumes (line 150) | @ParameterizedTest
    method fluentd_extra_volumes (line 164) | @ParameterizedTest

FILE: src/test/java/test/ForcedConfigUpdateTest.java
  class ForcedConfigUpdateTest (line 16) | class ForcedConfigUpdateTest {
    method initHelm (line 19) | @BeforeEach
    method jira_atl_force_config_update_true (line 24) | @ParameterizedTest
    method jira_atl_force_config_update_false (line 37) | @ParameterizedTest

FILE: src/test/java/test/GatewayTest.java
  class GatewayTest (line 20) | class GatewayTest {
    method initHelm (line 23) | @BeforeEach
    method gateway_creates_httproute_with_parent_ref_and_hostname (line 28) | @ParameterizedTest
    method gateway_cannot_coexist_with_ingress (line 46) | @ParameterizedTest
    method gateway_requires_parentRefs_name (line 59) | @ParameterizedTest
    method gateway_requires_hostnames (line 71) | @ParameterizedTest
    method gateway_custom_path_is_applied_to_route_match (line 82) | @ParameterizedTest
    method gateway_supports_multiple_hostnames (line 97) | @ParameterizedTest
    method gateway_namespace_is_set_on_parent_ref (line 113) | @ParameterizedTest
    method gateway_supports_all_path_types (line 127) | @ParameterizedTest
    method gateway_custom_annotations_are_applied (line 144) | @ParameterizedTest
    method gateway_custom_labels_are_applied (line 159) | @ParameterizedTest
    method gateway_backend_ref_targets_product_service (line 173) | @ParameterizedTest
    method gateway_routes_synchrony_traffic_when_enabled (line 191) | @Test
    method gateway_custom_timeouts_are_applied (line 210) | @ParameterizedTest
    method gateway_has_default_timeouts (line 228) | @ParameterizedTest
    method gateway_default_path_is_root (line 244) | @ParameterizedTest
    method gateway_default_path_uses_context_path_for_crowd (line 258) | @Test
    method gateway_default_path_type_is_prefix (line 271) | @ParameterizedTest
    method assertThrowsAssertionWithMessage (line 285) | private static void assertThrowsAssertionWithMessage(String expectedEr...
    method assertThatString (line 290) | private static AbstractStringAssert<?> assertThatString(String text) {

FILE: src/test/java/test/HelmLintTest.java
  class HelmLintTest (line 10) | class HelmLintTest {
    method initHelm (line 14) | @BeforeEach
    method helm_template_is_passing_linting (line 19) | @ParameterizedTest

FILE: src/test/java/test/HelmOutputComparisonTest.java
  class HelmOutputComparisonTest (line 21) | class HelmOutputComparisonTest {
    method initHelm (line 25) | @BeforeEach
    method helm_template_output_matches_expectations (line 34) | @ParameterizedTest
    method stripBlankLines (line 52) | private static void stripBlankLines(Path file) throws IOException {
    method stripChecksumLines (line 56) | private static void stripChecksumLines(Path file) throws IOException {
    method testResources (line 61) | private static Path testResources() {
    method expectationFiles (line 65) | private static Path expectationFiles(Product product) {
    method getExpectedHelmTemplateOutputFile (line 69) | private static Path getExpectedHelmTemplateOutputFile(Product product) {
    method getHelmValuesFile (line 73) | private static Path getHelmValuesFile(Product product) {
    method record_helm_template_output_matches_expectations (line 77) | @ParameterizedTest

FILE: src/test/java/test/HelmValuesAndAnalyticsTest.java
  class HelmValuesAndAnalyticsTest (line 22) | public class HelmValuesAndAnalyticsTest {
    method initHelm (line 26) | @BeforeEach
    method support_configmap_created (line 31) | @ParameterizedTest
    method support_configmap_created_with_sanitized_envs (line 40) | @ParameterizedTest
    method support_configmap_created_with_sanitized_jvm_args (line 52) | @ParameterizedTest
    method support_configmap_created_with_values_only (line 68) | @ParameterizedTest
    method support_configmap_created_with_analytics_only (line 79) | @ParameterizedTest
    method support_configmap_not_created (line 91) | @ParameterizedTest
    method volume_mount_is_created (line 104) | @ParameterizedTest
    method volume_mount_is_not_created (line 113) | @ParameterizedTest
    method volume_is_created (line 126) | @ParameterizedTest
    method volume_is_not_created (line 134) | @ParameterizedTest
    method analytics_json_defaults (line 147) | @ParameterizedTest
    method analytics_json_booleans (line 168) | @ParameterizedTest
    method analytics_json_db_type (line 186) | @ParameterizedTest
    method analytics_json_db_unknown (line 221) | @ParameterizedTest
    method analytics_json_known_service_types (line 237) | @ParameterizedTest
    method analytics_json_unknown_service_types (line 252) | @ParameterizedTest
    method analytics_json_nginx_ingress_type (line 267) | @ParameterizedTest
    method analytics_json_non_nginx_ingress_type (line 279) | @ParameterizedTest
    method analytics_json_image_tag (line 292) | @ParameterizedTest
    method analytics_json_assert_sanitized_image_tag (line 304) | @ParameterizedTest
    method analytics_json_assert_s3_confluence (line 316) | @ParameterizedTest
    method analytics_json_assert_s3_jira (line 329) | @ParameterizedTest
    method analytics_json_assert_bitbucket_mesh (line 342) | @ParameterizedTest
    method analytics_json_openshift (line 355) | @ParameterizedTest

FILE: src/test/java/test/HostNamespacesTest.java
  class HostNamespacesTest (line 12) | public class HostNamespacesTest {
    method initHelm (line 16) | @BeforeEach
    method testHostNamespacesNoneSet (line 21) | @ParameterizedTest
    method testHostNamespacesSet (line 33) | @ParameterizedTest

FILE: src/test/java/test/ImageTest.java
  class ImageTest (line 17) | class ImageTest {
    method initHelm (line 20) | @BeforeEach
    method image_tag (line 25) | @ParameterizedTest
    method image_registry_and_tag (line 39) | @ParameterizedTest
    method image_registry_repository_tag (line 54) | @ParameterizedTest
    method image_pullPolicy (line 70) | @ParameterizedTest
    method fluentd_custom_image_test (line 82) | @ParameterizedTest
    method fluentd_default_image_test (line 96) | @ParameterizedTest
    method nfs_permission_fixer_custom_image_test (line 108) | @ParameterizedTest
    method nfs_permission_fixer_default_image_test (line 122) | @ParameterizedTest

FILE: src/test/java/test/IngressTest.java
  class IngressTest (line 20) | class IngressTest {
    method initHelm (line 23) | @BeforeEach
    method ingress_create (line 28) | @ParameterizedTest
    method ingress_create_with_custom_class_name (line 47) | @ParameterizedTest
    method ingress_create_tls (line 62) | @ParameterizedTest
    method bitbucket_ingress_host (line 80) | @ParameterizedTest
    method bitbucket_ingress_host_port (line 92) | @ParameterizedTest
    method https_disabled (line 105) | @ParameterizedTest
    method https_disabled_bitbucket (line 117) | @ParameterizedTest
    method confluence_has_exactly_2_ingresses (line 129) | @ParameterizedTest
    method jira_ingress_host_port (line 141) | @ParameterizedTest
    method jira_ingress_port (line 153) | @ParameterizedTest
    method jira_ingress_port_http (line 164) | @ParameterizedTest
    method bitbucket_ingress_path_contextPath (line 176) | @ParameterizedTest
    method jira_ingress_path_contextPath (line 193) | @ParameterizedTest
    method jira_ingress_path_value (line 209) | @ParameterizedTest
    method jira_ingress_path_no_context_value (line 225) | @ParameterizedTest
    method jira_ingress_path_default (line 240) | @ParameterizedTest
    method bamboo_ingress_path_contextPath (line 254) | @ParameterizedTest
    method bamboo_ingress_path_value (line 270) | @ParameterizedTest
    method bamboo_ingress_path_no_context_value (line 286) | @ParameterizedTest
    method bamboo_ingress_path_default (line 301) | @ParameterizedTest
    method bamboo_atl_base_path_when_all_ingress_vals (line 315) | @ParameterizedTest
    method bamboo_atl_base_path_when_no_ingress_path (line 328) | @ParameterizedTest
    method bamboo_atl_base_path_when_no_ingress_host (line 340) | @ParameterizedTest
    method bamboo_atl_base_path_when_ingress_host_over_http (line 351) | @ParameterizedTest
    method confluence_ingress_path_contextPath (line 364) | @ParameterizedTest
    method confluence_ingress_path_contextPath_synchronyDisabled (line 385) | @ParameterizedTest
    method confluence_ingress_path_value (line 405) | @ParameterizedTest
    method confluence_ingress_path_value_synchronyDisabled (line 425) | @ParameterizedTest
    method confluence_ingress_path_no_context_value (line 444) | @ParameterizedTest
    method confluence_ingress_path_no_context_value_synchronyDisabled (line 465) | @ParameterizedTest
    method confluence_ingress_path_default (line 485) | @ParameterizedTest
    method confluence_ingress_path_default_synchronyDisabled (line 505) | @ParameterizedTest
    method confluence_synchrony_dedicated_ingress (line 524) | @ParameterizedTest
    method confluence_no_synchrony_path_confluence_ingress (line 551) | @ParameterizedTest
    method confluence_custom_synchrony_context_system_property (line 566) | @ParameterizedTest
    method ingress_proxy_settings (line 579) | @ParameterizedTest
    method extractAllPaths (line 604) | private List<String> extractAllPaths(Traversable<KubeResource> ingress...
    method crowd_ingress_path_contextPath (line 612) | @ParameterizedTest
    method crowd_ingress_path_value (line 628) | @ParameterizedTest
    method ingress_additional_paths (line 645) | @ParameterizedTest

FILE: src/test/java/test/JiraOpenSearchTest.java
  class JiraOpenSearchTest (line 18) | class JiraOpenSearchTest {
    method initHelm (line 24) | @BeforeEach
    method opensearch_statefulset_is_created_when_enabled (line 29) | @Test
    method opensearch_secret_contains_valid_base64_password (line 38) | @Test
    method opensearch_env_vars_are_set_with_default_credentials (line 53) | @Test
    method opensearch_env_vars_use_existing_secret_when_configured (line 68) | @Test

FILE: src/test/java/test/JiraS3EnabledTest.java
  class JiraS3EnabledTest (line 13) | class JiraS3EnabledTest {
    method initHelm (line 16) | @BeforeEach
    method s3_storage_env_vars (line 23) | @ParameterizedTest
    method s3_storage_endpoint_override (line 41) | @ParameterizedTest
    method jira_s3_avatars_storage_missing_env_vars (line 60) | @ParameterizedTest

FILE: src/test/java/test/JmxMetricsTest.java
  class JmxMetricsTest (line 20) | class JmxMetricsTest {
    method initHelm (line 24) | @BeforeEach
    method expose_jmx_metrics_enabled_init_container (line 29) | @ParameterizedTest
    method expose_jmx_metrics_enabled_init_container_run_as_root (line 77) | @ParameterizedTest
    method jmx_init_container_resources (line 87) | @ParameterizedTest
    method expose_jmx_metrics_enabled_init_container_no_root (line 106) | @ParameterizedTest
    method expose_jmx_metrics_enabled_init_container_custom_security_context (line 117) | @ParameterizedTest
    method expose_jmx_metrics_enabled_custom_vol_paths (line 131) | @ParameterizedTest
    method expose_jmx_metrics_enabled_custom_init_container (line 162) | @ParameterizedTest
    method expose_jmx_metrics_enabled_custom_jar (line 177) | @ParameterizedTest
    method expose_jmx_metrics_enabled_custom_config (line 204) | @ParameterizedTest
    method jmx_service_test (line 220) | @ParameterizedTest
    method expose_jmx_metrics_bitbucket_mesh (line 241) | @ParameterizedTest
    method expose_jmx_metrics_enabled_bitbucket_mirror (line 276) | @ParameterizedTest
    method service_monitor_bitbucket_mesh (line 317) | @ParameterizedTest
    method service_monitor_enabled_with_custom_values (line 332) | @ParameterizedTest
    method service_monitor_enabled_ (line 348) | @ParameterizedTest

FILE: src/test/java/test/JvmResourcesTest.java
  class JvmResourcesTest (line 17) | class JvmResourcesTest {
    method initHelm (line 20) | @BeforeEach
    method changes_annotation_checksum (line 25) | @ParameterizedTest
    method changes_annotation_checksum_for_bamboo_agent (line 49) | @ParameterizedTest

FILE: src/test/java/test/LicenseTest.java
  class LicenseTest (line 15) | class LicenseTest {
    method initHelm (line 18) | @BeforeEach
    method confluence_license_secret_name (line 23) | @ParameterizedTest
    method bitbucket_license_secret_name (line 36) | @ParameterizedTest
    method bamboo_license_secret_name (line 49) | @ParameterizedTest

FILE: src/test/java/test/LifecycleHooksTest.java
  class LifecycleHooksTest (line 14) | public class LifecycleHooksTest {
    method initHelm (line 18) | @BeforeEach
    method default_pre_stop_hook (line 23) | @ParameterizedTest
    method custom_pre_stop_hook (line 33) | @ParameterizedTest
    method custom_post_start_hook (line 45) | @ParameterizedTest

FILE: src/test/java/test/MirrorsTest.java
  class MirrorsTest (line 16) | class MirrorsTest {
    method initHelm (line 19) | @BeforeEach
    method applicationMode (line 24) | @ParameterizedTest
    method defaultMode (line 38) | @ParameterizedTest

FILE: src/test/java/test/PodAnnotationsTest.java
  class PodAnnotationsTest (line 14) | class PodAnnotationsTest {
    method initHelm (line 17) | @BeforeEach
    method pod_annotations (line 22) | @ParameterizedTest
    method bamboo_agent_pod_annotations (line 43) | @ParameterizedTest
    method synchrony_pod_default_annotations (line 63) | @ParameterizedTest
    method synchrony_pod_custom_annotations (line 80) | @ParameterizedTest
    method b64enc (line 98) | private static String b64enc(String string) {

FILE: src/test/java/test/PodDisruptionBudgetTest.java
  class PodDisruptionBudgetTest (line 14) | public class PodDisruptionBudgetTest {
    method initHelm (line 18) | @BeforeEach
    method pod_disruption_budget_enabled_min_available (line 23) | @ParameterizedTest
    method pod_disruption_budget_min_available_max_unavailable (line 35) | @ParameterizedTest
    method pod_disruption_budget_annotations (line 50) | @ParameterizedTest
    method pod_disruption_budget_labels (line 63) | @ParameterizedTest

FILE: src/test/java/test/PodTest.java
  class PodTest (line 13) | class PodTest {
    method initHelm (line 16) | @BeforeEach
    method podLabels (line 21) | @ParameterizedTest

FILE: src/test/java/test/PriorityClassNameTest.java
  class PriorityClassNameTest (line 17) | class PriorityClassNameTest {
    method initHelm (line 20) | @BeforeEach
    method priority_class_names (line 25) | @ParameterizedTest
    method priority_class_names_bamboo_agent (line 37) | @ParameterizedTest
    method priority_class_names_bitbucket_mesh (line 49) | @ParameterizedTest
    method priority_class_names_synchrony (line 63) | @ParameterizedTest

FILE: src/test/java/test/ReadinessLivenessProbesTest.java
  class ReadinessLivenessProbesTest (line 13) | public class ReadinessLivenessProbesTest {
    method initHelm (line 17) | @BeforeEach
    method test_readiness_probe_disabled (line 22) | @ParameterizedTest
    method test_liveness_probe_disabled (line 32) | @ParameterizedTest
    method test_liveness_probe_overrides (line 41) | @ParameterizedTest
    method test_liveness_probe_enabled_defaults (line 61) | @ParameterizedTest
    method test_liveness_probe_custom_probe (line 77) | @ParameterizedTest
    method test_readiness_probe_overrides (line 99) | @ParameterizedTest
    method test_readiness_probe_custom_probe (line 119) | @ParameterizedTest
    method test_startup_probe_enabled (line 141) | @ParameterizedTest
    method test_startup_probe_defaults (line 158) | @ParameterizedTest
    method test_startup_probe_customized (line 166) | @ParameterizedTest

FILE: src/test/java/test/RequestsTest.java
  class RequestsTest (line 16) | public class RequestsTest {
    method initHelm (line 19) | @BeforeEach
    method sts_empty_limits (line 24) | @ParameterizedTest
    method sts_resource_requests_and_limits (line 34) | @ParameterizedTest
    method fractional_cpu_active_processors (line 77) | @ParameterizedTest

FILE: src/test/java/test/SchedulerNameTest.java
  class SchedulerNameTest (line 18) | class SchedulerNameTest {
    method initHelm (line 21) | @BeforeEach
    method custom_scheduler (line 26) | @ParameterizedTest
    method default_scheduler (line 36) | @ParameterizedTest

FILE: src/test/java/test/SecurityContextTest.java
  class SecurityContextTest (line 19) | class SecurityContextTest {
    method initHelm (line 22) | @BeforeEach
    method test_pod_security_context (line 27) | @ParameterizedTest
    method test_no_pod_security_context (line 41) | @ParameterizedTest
    method test_pod_security_context_without_fsGroup (line 52) | @ParameterizedTest
    method test_pod_security_context_backward_compatible_disabled_context (line 71) | @ParameterizedTest
    method test_container_security_context (line 90) | @ParameterizedTest
    method test_synchrony_security_context (line 103) | @ParameterizedTest
    method test_synchrony_container_security_context (line 115) | @ParameterizedTest
    method test_cfs_group_change_policy_default (line 129) | @ParameterizedTest
    method test_cfs_group_change_policy_override (line 140) | @ParameterizedTest

FILE: src/test/java/test/ServerConfigTest.java
  class ServerConfigTest (line 14) | class ServerConfigTest {
    method initHelm (line 17) | @BeforeEach
    method non_root_tests (line 21) | @ParameterizedTest
    method server_config_volumes (line 35) | void server_config_volumes(Product product, String generatedByHelm, St...
    method server_config_volume_mounts (line 61) | void server_config_volume_mounts(Product product, String generatedByHe...
    method server_config_config_map (line 99) | void server_config_config_map(Product product, String generatedByHelm,...
    method use_custom_server_xml (line 124) | void use_custom_server_xml(Product product, String generatedByHelm, St...
    method enable_server_xml_config_map_ingress_defaults (line 137) | void enable_server_xml_config_map_ingress_defaults(Product product, St...
    method enable_server_xml_config_map_ingress_http (line 153) | void enable_server_xml_config_map_ingress_http(Product product, String...
    method server_xml_proxy_secure_overrides (line 170) | void server_xml_proxy_secure_overrides(Product product, String generat...
    method security_context_disabled_with_openshift (line 189) | @ParameterizedTest
    method disable_nfs_perm_fixer_openshift (line 200) | @ParameterizedTest
    method disable_security_context_jmx_openshift (line 211) | @ParameterizedTest
    method additional_connector_defaults (line 223) | @ParameterizedTest
    method additional_connector_overrides (line 241) | @ParameterizedTest
    method access_log_pattern_default (line 267) | @ParameterizedTest
    method access_log_pattern_overrides (line 282) | @ParameterizedTest

FILE: src/test/java/test/ServiceAccountTest.java
  class ServiceAccountTest (line 22) | class ServiceAccountTest {
    method initHelm (line 25) | @BeforeEach
    method serviceAccount_name (line 30) | @ParameterizedTest
    method serviceAccount_annotations (line 45) | @ParameterizedTest
    method serviceAccount_create_disabled (line 54) | @ParameterizedTest
    method serviceAccount_name_create_disabled (line 71) | @ParameterizedTest
    method serviceAccount_imagePullSecrets (line 89) | @ParameterizedTest
    method cluster_role_name (line 99) | @ParameterizedTest
    method cluster_role_create_disabled (line 117) | @ParameterizedTest
    method cluster_role_binding_name (line 136) | @ParameterizedTest
    method verifyClusterRoleBinding (line 154) | private void verifyClusterRoleBinding(final KubeResource clusterRoleBi...
    method service_account_iam_annotation (line 171) | @ParameterizedTest

FILE: src/test/java/test/ServiceTest.java
  class ServiceTest (line 20) | class ServiceTest {
    method initHelm (line 23) | @BeforeEach
    method service_port_type (line 28) | @ParameterizedTest
    method service_default_session_affinity (line 59) | @ParameterizedTest
    method service_client_ip_session_affinity (line 73) | @ParameterizedTest
    method service_annotations (line 87) | @ParameterizedTest
    method service_loadbalancer_type (line 105) | @ParameterizedTest
    method synchrony_service_default_annotations (line 120) | @ParameterizedTest
    method synchrony_service_custom_annotations (line 135) | @ParameterizedTest
    method dedicated_hazelcast_service (line 150) | @ParameterizedTest
    method hazelcast_one_service (line 169) | @ParameterizedTest

FILE: src/test/java/test/SetPermissionTest.java
  class SetPermissionTest (line 19) | class SetPermissionTest {
    method initHelm (line 22) | @BeforeEach
    method test_set_permissions (line 27) | @ParameterizedTest
    method test_set_permissions_synchrony (line 46) | @ParameterizedTest

FILE: src/test/java/test/StatefulSetUpdateTest.java
  class StatefulSetUpdateTest (line 17) | public class StatefulSetUpdateTest {
    method initHelm (line 21) | @BeforeEach
    method sts_on_delete_update (line 26) | @ParameterizedTest
    method sts_on_not_set (line 37) | @ParameterizedTest
    method sts_on_delete_update_synchrony (line 46) | @ParameterizedTest
    method sts_on_not_set_synchrony (line 58) | @ParameterizedTest
    method sts_on_delete_update_mesh (line 69) | @ParameterizedTest
    method sts_on_not_set_mesh (line 81) | @ParameterizedTest

FILE: src/test/java/test/SynchronyTest.java
  class SynchronyTest (line 19) | class SynchronyTest {
    method initHelm (line 22) | @BeforeEach
    method synchrony_enable (line 27) | @ParameterizedTest
    method synchrony_disabled (line 48) | @ParameterizedTest
    method synchrony_entrypoint (line 61) | @ParameterizedTest
    method synchrony_small_cpu_request (line 78) | @ParameterizedTest
    method synchrony_custom_cpu_request (line 93) | @ParameterizedTest
    method synchrony_replica_count (line 107) | @ParameterizedTest
    method synchrony_additionalJvmArgs (line 122) | @ParameterizedTest
    method synchrony_resources (line 139) | @ParameterizedTest
    method synchrony_changesAnnotationChecksum (line 161) | @ParameterizedTest
    method synchrony_custom_ports_are_include_in_jvm_args (line 185) | @Test
    method synchrony_custom_node_selector (line 202) | @ParameterizedTest
    method synchrony_confluence_node_selector (line 213) | @ParameterizedTest
    method synchrony_custom_scheduler_name (line 224) | @ParameterizedTest
    method synchrony_confluence_scheduler_name (line 234) | @ParameterizedTest
    method synchrony_custom_tolerations (line 244) | @ParameterizedTest
    method synchrony_confluence_tolerations (line 261) | @ParameterizedTest
    method synchrony_custom_affinity (line 278) | @ParameterizedTest
    method synchrony_confluence_affinity (line 291) | @ParameterizedTest
    method synchrony_custom_priority_class_names (line 304) | @ParameterizedTest
    method synchrony_confluence_priority_class_names (line 315) | @ParameterizedTest
    method synchrony_custom_topology_constraints (line 327) | @ParameterizedTest
    method synchrony_confluence_topology_constraints (line 346) | @ParameterizedTest
    method synchrony_service_url (line 367) | @ParameterizedTest

FILE: src/test/java/test/TestPodsTest.java
  class TestPodsTest (line 18) | class TestPodsTest {
    method initHelm (line 21) | @BeforeEach
    method test_pods_default_annotations (line 26) | @ParameterizedTest
    method test_pods_custom_annotations (line 45) | @ParameterizedTest
    method test_pods_default_labels (line 67) | @ParameterizedTest
    method test_pods_custom_labels (line 91) | @ParameterizedTest
    method test_pods_custom_node_selector (line 112) | @ParameterizedTest
    method test_pods_custom_scheduler_name (line 131) | @ParameterizedTest
    method test_pods_custom_resources (line 147) | @ParameterizedTest
    method test_pods_custom_images (line 169) | @ParameterizedTest
    method test_pods_custom_tolerations (line 182) | @ParameterizedTest
    method test_pods_custom_affinity (line 204) | @ParameterizedTest

FILE: src/test/java/test/TopologySpreadConstraintsTest.java
  class TopologySpreadConstraintsTest (line 15) | class TopologySpreadConstraintsTest {
    method initHelm (line 18) | @BeforeEach
    method test_topology_constraint_on_pods_in_statefulset (line 23) | @ParameterizedTest
    method test_topology_constraints_on_pods_in_agent_deployment (line 43) | @ParameterizedTest
    method test_default_topology_doesnt_exist_in_statefulset (line 63) | @ParameterizedTest
    method test_default_topology_doesnt_exist_in_deployment (line 73) | @ParameterizedTest

FILE: src/test/java/test/TunnelTest.java
  class TunnelTest (line 14) | public class TunnelTest {
    method initHelm (line 18) | @BeforeEach
    method confluenceTunnelJvmArg (line 23) | @ParameterizedTest
    method confluenceAdditionalConnectorVarsDefaults (line 33) | @ParameterizedTest
    method confluenceAdditionalConnectorVarsOverrides (line 51) | @ParameterizedTest

FILE: src/test/java/test/VolumesTest.java
  class VolumesTest (line 24) | class VolumesTest {
    method initHelm (line 27) | @BeforeEach
    method localHome_pvc_create (line 32) | @ParameterizedTest
    method sharedHome_pvc_create (line 54) | @ParameterizedTest
    method sharedHome_pvc_create_access_modes (line 73) | @ParameterizedTest
    method sharedHome_pvc_create_access_mode (line 85) | @ParameterizedTest
    method localHome_custom_volume (line 97) | @ParameterizedTest
    method localHome_pvc_custom (line 110) | @ParameterizedTest
    method localHome_pvc_custom_with_retention_policy (line 134) | @ParameterizedTest
    method localHome_pvc_custom_without_retention_policy (line 149) | @ParameterizedTest
    method sharedHome_custom_volume (line 163) | @ParameterizedTest
    method additionalVolumeDefinition (line 176) | @ParameterizedTest
    method additionalVolumeMounts (line 194) | @ParameterizedTest
    method bitbucketSharedHomeClaimUsesDefaultVolumeName (line 221) | @ParameterizedTest
    method bitbucketSharedHomeClaimUsesSuppliedVolumeName (line 236) | @ParameterizedTest
    method synchronyHome_pvc_create (line 248) | @ParameterizedTest
    method synchronyHome_custom_volume (line 271) | @ParameterizedTest
    method synchrony_additional_volume (line 285) | @ParameterizedTest
    method synchronyHome_pvc_custom (line 312) | @ParameterizedTest
    method synchronyHome_pvc_custom_with_retention_policy (line 335) | @ParameterizedTest
    method synchronyHome_pvc_custom_without_retention_policy (line 351) | @ParameterizedTest
    method additionalVolumeClaimTemplate (line 366) | @ParameterizedTest
    method synchrony_volume_default_mode (line 386) | @ParameterizedTest
    method synchrony_volume_custom_default_mode (line 399) | @ParameterizedTest
    method verifyVolumeClaimTemplate (line 413) | private void verifyVolumeClaimTemplate(JsonNode volumeClaimTemplate, f...

FILE: src/test/java/test/helm/Helm.java
  class Helm (line 25) | public final class Helm {
    method Helm (line 28) | public Helm(TestInfo testInfo) {
    method captureHelmTemplateOutput (line 32) | public Path captureHelmTemplateOutput(Product product, Path valuesFile...
    method assertLintedHelm (line 38) | public void assertLintedHelm(Product product) throws Exception {
    method captureHelmTemplateOutput (line 50) | private static void captureHelmTemplateOutput(Product product, Path va...
    method captureKubeResourcesFromHelmChart (line 66) | public KubeResources captureKubeResourcesFromHelmChart(Product product...
    method captureHelmTemplateOutput (line 72) | private static void captureHelmTemplateOutput(Product product, Path ou...
    method getHelmChartVersion (line 96) | public static String getHelmChartVersion(Product product)  {
    method getAppVersion (line 111) | public static String getAppVersion(Product product)  {
    method getHelmReleaseName (line 126) | public static String getHelmReleaseName(Product product) {
    method getHelmChartPath (line 130) | private static Path getHelmChartPath(Product product) {
    method getHelmTemplateOutputFile (line 134) | private Path getHelmTemplateOutputFile(Product product) throws IOExcep...

FILE: src/test/java/test/jackson/JsonNodeAssert.java
  class JsonNodeAssert (line 20) | public class JsonNodeAssert extends AbstractAssert<JsonNodeAssert, JsonN...
    method JsonNodeAssert (line 22) | private JsonNodeAssert(JsonNode actual) {
    method assertThat (line 26) | public static JsonNodeAssert assertThat(JsonNode actual) {
    method hasTextEqualTo (line 30) | public JsonNodeAssert hasTextEqualTo(String expectedTemplate, Object.....
    method hasTextEqualTo (line 34) | public JsonNodeAssert hasTextEqualTo(String expected) {
    method hasTextContaining (line 42) | public JsonNodeAssert hasTextContaining(String expectedTemplate, Objec...
    method hasTextContaining (line 46) | public JsonNodeAssert hasTextContaining(final String expected) {
    method hasSeparatedTextContaining (line 63) | public JsonNodeAssert hasSeparatedTextContaining(final String expected) {
    method hasTextNotContaining (line 70) | public JsonNodeAssert hasTextNotContaining(final String expected) {
    method doesNotContainRegex (line 78) | public JsonNodeAssert doesNotContainRegex(final String regex) {
    method hasValueEqualTo (line 86) | public JsonNodeAssert hasValueEqualTo(int expected) {
    method isArrayWithNumberOfChildren (line 94) | public JsonNodeAssert isArrayWithNumberOfChildren(int expected) {
    method isArrayWithChildren (line 102) | public JsonNodeAssert isArrayWithChildren(String... expected) {
    method isEmpty (line 108) | public JsonNodeAssert isEmpty() {
    method isObject (line 115) | public JsonNodeAssert isObject(Map<String, String> expected) {
    method assertNodeIsOfType (line 123) | private void assertNodeIsOfType(JsonNodeType type) {

FILE: src/test/java/test/model/AnalyticsData.java
  class AnalyticsData (line 4) | public class AnalyticsData {
    method getImageTag (line 56) | public String getImageTag() {
    method setImageTag (line 60) | public void setImageTag(String imageTag) {
    method getIngressType (line 64) | public String getIngressType() {
    method setIngressType (line 68) | public void setIngressType(String ingressType) {
    method getReplicas (line 72) | public int getReplicas() {
    method setReplicas (line 76) | public void setReplicas(int replicas) {
    method isJmxEnabled (line 80) | public boolean isJmxEnabled() {
    method setJmxEnabled (line 84) | public void setJmxEnabled(boolean jmxEnabled) {
    method getK8sVersion (line 88) | public String getK8sVersion() {
    method setK8sVersion (line 92) | public void setK8sVersion(String k8sVersion) {
    method getServiceType (line 96) | public String getServiceType() {
    method setServiceType (line 100) | public void setServiceType(String serviceType) {
    method getDbType (line 104) | public String getDbType() {
    method setDbType (line 108) | public void setDbType(String dbType) {
    method isS3AttachmentsStorageEnabled (line 112) | public boolean isS3AttachmentsStorageEnabled() {
    method setS3AttachmentsStorageEnabled (line 116) | public void setS3AttachmentsStorageEnabled(boolean s3AttachmentsStorag...
    method isS3AvatarsEnabled (line 119) | public boolean isS3AvatarsEnabled() {
    method setS3AvatarsEnabled (line 123) | public void setS3AvatarsEnabled(boolean s3AvatarsEnabled) {
    method isBitbucketMeshEnabled (line 127) | public boolean isBitbucketMeshEnabled() {
    method setBitbucketMeshEnabled (line 131) | public void setBitbucketMeshEnabled(boolean bitbucketMeshEnabled) {
    method isClusteringEnabled (line 135) | public boolean isClusteringEnabled() {
    method setClusteringEnabled (line 139) | public void setClusteringEnabled(boolean clusteringEnabled) {
    method isSharedHomePVCCreated (line 143) | public boolean isSharedHomePVCCreated() {
    method setSharedHomePVCCreated (line 147) | public void setSharedHomePVCCreated(boolean sharedHomePVCCreated) {
    method isServiceMonitorCreated (line 151) | public boolean isServiceMonitorCreated() {
    method setServiceMonitorCreated (line 155) | public void setServiceMonitorCreated(boolean serviceMonitorCreated) {
    method isGrafanaDashboardsCreated (line 159) | public boolean isGrafanaDashboardsCreated() {
    method setGrafanaDashboardsCreated (line 163) | public void setGrafanaDashboardsCreated(boolean grafanaDashboardsCreat...
    method isRunOnOpenshift (line 167) | public boolean isRunOnOpenshift() {
    method setRunOnOpenshift (line 171) | public void setRunOnOpenshift(boolean runOnOpenshift) {
    method isRunWithRestrictedSCC (line 175) | public boolean isRunWithRestrictedSCC() {
    method setRunWithRestrictedSCC (line 179) | public void setRunWithRestrictedSCC(boolean runWithRestrictedSCC) {
    method isOpenshiftRouteCreated (line 183) | public boolean isOpenshiftRouteCreated() {
    method setOpenshiftRouteCreated (line 187) | public void setOpenshiftRouteCreated(boolean openshiftRouteCreated) {
    method AnalyticsData (line 191) | public AnalyticsData() {
    method AnalyticsData (line 194) | public AnalyticsData(String imageTag, int replicas, boolean isJmxEnabl...

FILE: src/test/java/test/model/ClusterType.java
  type ClusterType (line 3) | public enum ClusterType {

FILE: src/test/java/test/model/ConfigMap.java
  class ConfigMap (line 5) | public final class ConfigMap extends KubeResource {
    method ConfigMap (line 7) | ConfigMap(JsonNode node) {
    method getDataByKey (line 11) | public JsonNode getDataByKey(String key) {

FILE: src/test/java/test/model/Container.java
  class Container (line 6) | public final class Container {
    method Container (line 9) | public Container(JsonNode node) {
    method get (line 13) | public JsonNode get(String fieldName) {
    method getEnv (line 17) | public Env getEnv() {
    method getVolumeMounts (line 21) | public JsonNode getVolumeMounts() {
    method getVolumeMount (line 25) | public JsonNode getVolumeMount(String name) {
    method getPorts (line 32) | public JsonNode getPorts() {
    method getPort (line 35) | public JsonNode getPort(String name) {
    method getResources (line 41) | public JsonNode getResources() {
    method getRequests (line 45) | public JsonNode getRequests() {
    method getLimits (line 49) | public JsonNode getLimits() {
    method getSecurityContext (line 53) | public JsonNode getSecurityContext() {
    method getReadinessProbe (line 57) | public JsonNode getReadinessProbe() {

FILE: src/test/java/test/model/Deployment.java
  class Deployment (line 11) | public final class Deployment extends KubeResource {
    method Deployment (line 12) | Deployment(JsonNode node) {
    method getContainers (line 16) | private Seq<Container> getContainers() {
    method getContainer (line 20) | public Container getContainer() {
    method getContainer (line 24) | public Container getContainer(String name) {
    method getPodMetadata (line 31) | public JsonNode getPodMetadata() {
    method getPodSpec (line 35) | public JsonNode getPodSpec() {
    method getVolumes (line 39) | public JsonNode getVolumes() {
    method getVolume (line 43) | public Option<JsonNode> getVolume(String volumeName) {
    method getInitContainers (line 48) | public JsonNode getInitContainers() {
    method getInitContainer (line 52) | public Option<JsonNode> getInitContainer(String name) {

FILE: src/test/java/test/model/Env.java
  class Env (line 13) | public class Env {
    method Env (line 16) | public Env(JsonNode node) {
    method assertHasValue (line 20) | public Env assertHasValue(String envName, String expectedValue) {
    method assertHasSecretRef (line 31) | public Env assertHasSecretRef(String envName, String expectedSecretNam...
    method assertHasConfigMapRef (line 44) | public Env assertHasConfigMapRef(String envName, String expectedConfig...
    method assertHasFieldRef (line 57) | public Env assertHasFieldRef(String envName, String expectedFieldPath) {
    method assertDoesNotHaveAnyOf (line 68) | public Env assertDoesNotHaveAnyOf(String... envNames) {
    method findEnv (line 75) | private Option<JsonNode> findEnv(String envName) {

FILE: src/test/java/test/model/Kind.java
  type Kind (line 6) | public enum Kind {

FILE: src/test/java/test/model/KubeResource.java
  class KubeResource (line 10) | public class KubeResource {
    method KubeResource (line 14) | KubeResource(Kind kind, JsonNode node) {
    method getKind (line 19) | public Kind getKind() {
    method getMetadata (line 23) | public JsonNode getMetadata() {
    method getSpec (line 27) | public JsonNode getSpec() {
    method getConfigMapData (line 30) | public JsonNode getConfigMapData() {
    method getName (line 33) | public String getName() {
    method getAnnotations (line 37) | public JsonNode getAnnotations() {
    method getNode (line 41) | public JsonNode getNode(String... paths) {
    method get (line 45) | private static JsonNode get(JsonNode node, Seq<String> paths) {
    method wrap (line 53) | static KubeResource wrap(JsonNode node) {
    method toString (line 71) | @Override

FILE: src/test/java/test/model/KubeResources.java
  class KubeResources (line 18) | public final class KubeResources {
    method KubeResources (line 21) | private KubeResources(Map<Kind, Array<KubeResource>> map) {
    method getStatefulSets (line 25) | public Traversable<StatefulSet> getStatefulSets() {
    method getConfigMaps (line 29) | public Traversable<ConfigMap> getConfigMaps() {
    method getDeployments (line 32) | public Traversable<Deployment> getDeployments() {
    method getAll (line 36) | public <T extends KubeResource> Traversable<T> getAll(Kind kind, Class...
    method getStatefulSet (line 40) | public StatefulSet getStatefulSet(final String name) {
    method getDeployment (line 45) | public Deployment getDeployment(final String name) {
    method getConfigMap (line 50) | public ConfigMap getConfigMap(final String name) {
    method get (line 55) | public KubeResource get(Kind kind) {
    method get (line 61) | public <T extends KubeResource> T get(Kind kind, Class<T> type, String...
    method assertContains (line 68) | public KubeResources assertContains(Kind kind, String name) {
    method get (line 73) | public KubeResource get(Kind kind, String name) {
    method getAll (line 79) | public Traversable<KubeResource> getAll(Kind kind) {
    method parse (line 84) | public static KubeResources parse(Path outputFile) throws IOException {

FILE: src/test/java/test/model/Pod.java
  class Pod (line 7) | public class Pod extends KubeResource {
    method Pod (line 8) | Pod(JsonNode node) {
    method getPodMetadata (line 12) | public JsonNode getPodMetadata() {

FILE: src/test/java/test/model/Product.java
  type Product (line 10) | public enum Product {
    method getDockerImageName (line 12) | @Override
    method getContainerGid (line 17) | @Override
    method getDockerImageName (line 23) | @Override
    method getContainerGid (line 28) | @Override
    method getDockerImageName (line 34) | @Override
    method getContainerGid (line 39) | @Override
    method getDockerImageName (line 45) | @Override
    method getContainerGid (line 50) | @Override
    method getDockerImageName (line 56) | @Override
    method getContainerGid (line 60) | @Override
    method getDockerImageName (line 64) | @Override
    method getContainerGid (line 68) | @Override
    method getDockerImageName (line 72) | public abstract String getDockerImageName();
    method getContainerGid (line 74) | public abstract String getContainerGid();
    method getHelmReleaseName (line 76) | public String getHelmReleaseName() {
    method getHelmChartVersion (line 80) | public String getHelmChartVersion() {
    method getAppVersion (line 84) | public String getAppVersion() {
    method toString (line 97) | @Override

FILE: src/test/java/test/model/Service.java
  class Service (line 8) | public class Service extends KubeResource {
    method Service (line 9) | Service(JsonNode node) {
    method getType (line 13) | public JsonNode getType() {
    method getPorts (line 17) | public Traversable<JsonNode> getPorts() {
    method getPort (line 21) | public Option<JsonNode> getPort(String name) {
    method getLoadBalancerIP (line 25) | public JsonNode getLoadBalancerIP() {

FILE: src/test/java/test/model/StatefulSet.java
  class StatefulSet (line 11) | public final class StatefulSet extends KubeResource {
    method StatefulSet (line 12) | StatefulSet(JsonNode node) {
    method getContainers (line 16) | private Seq<Container> getContainers() {
    method getContainer (line 20) | public Container getContainer() {
    method getContainer (line 24) | public Container getContainer(String name) {
    method getReplicas (line 31) | public int getReplicas() {
    method getPodSpec (line 35) | public JsonNode getPodSpec() {
    method getPodMetadata (line 39) | public JsonNode getPodMetadata() {
    method getVolumeClaimTemplates (line 43) | public Seq<JsonNode> getVolumeClaimTemplates() {
    method getVolumes (line 47) | public JsonNode getVolumes() {
    method getNodeSelector (line 51) | public JsonNode getNodeSelector() { return getNode("spec", "template",...
    method getVolume (line 53) | public Option<JsonNode> getVolume(String volumeName) {
    method getInitContainers (line 58) | public JsonNode getInitContainers() {
    method getInitContainer (line 62) | public Option<JsonNode> getInitContainer(String name) {
    method getLabels (line 67) | public JsonNode getLabels() {

FILE: src/test/java/test/model/Synchrony.java
  class Synchrony (line 6) | public class Synchrony {
    method synchronyStatefulSetName (line 8) | public static String synchronyStatefulSetName() {

FILE: src/test/java/test/postinstall/KubeClient.java
  class KubeClient (line 28) | final class KubeClient implements AutoCloseable {
    method getClusterType (line 33) | ClusterType getClusterType() {
    method getNodeMetrics (line 46) | io.vavr.collection.Map<Node, Option<NodeMetrics>> getNodeMetrics(final...
    method getNodeMetrics (line 51) | private Option<NodeMetrics> getNodeMetrics(Node node) {
    method getNodes (line 61) | private Traversable<Node> getNodes(final Map<String, String> nodeSelec...
    method getStatefulSet (line 69) | @Nullable
    method getPod (line 78) | @Nullable
    method forEachPodOfStatefulSet (line 87) | void forEachPodOfStatefulSet(Consumer<Pod> consumer) {
    method forEachPodOfStatefulSet (line 91) | void forEachPodOfStatefulSet(String statefulSetName, Consumer<Pod> con...
    method getStatefulSet (line 100) | StatefulSet getStatefulSet() {
    method getStatefulSet (line 104) | StatefulSet getStatefulSet(String statefulSetName) {
    method client (line 113) | private KubernetesClient client() {
    method close (line 117) | @Override

FILE: src/test/java/test/postinstall/OpenSearchInstallTest.java
  class OpenSearchInstallTest (line 29) | @EnabledIf("isOSDeployed")
    method isOSDeployed (line 31) | static boolean isOSDeployed() {
    method initKubeClient (line 38) | @BeforeAll
    method openSearchIsRunning (line 47) | @Test
    method openSearchBeingUsed (line 58) | @Test
    method disposeOfClient (line 80) | @AfterAll

FILE: src/test/java/test/postinstall/PostInstallStatusTest.java
  class PostInstallStatusTest (line 23) | class PostInstallStatusTest {
    method applicationPodsShouldAllBeRunning (line 26) | @Test
    method schedulingFailure (line 43) | private Description schedulingFailure(Pod pod) {
    method schedulingFailure (line 53) | private String schedulingFailure(final String podName, Map<Node, Optio...
    method applicationPodContainersShouldAllBeReady (line 60) | @Test
    method configure (line 78) | @BeforeAll
    method disposeOfClient (line 88) | @AfterAll

FILE: src/test/java/test/postinstall/Utils.java
  class Utils (line 25) | final class Utils {
    method readPropertiesFile (line 27) | static Map<String, String> readPropertiesFile() throws IOException {
    method readPropertiesFile (line 32) | static Map<String, String> readPropertiesFile(final Path fileLocation)...
    method getQuantitiesDescription (line 42) | static String getQuantitiesDescription(final java.util.Map<String, Qua...
    method getDataSize (line 54) | private static String getDataSize(Quantity quantity) {
    method netNodesResourceSummary (line 58) | static String netNodesResourceSummary(final Map<Node, Option<NodeMetri...
    method getNodeResourceSummary (line 64) | private static Tuple2<String, String> getNodeResourceSummary(Node node...
    method loadHelmParameters (line 75) | private static Map<String, String> loadHelmParameters() {
    method getNS (line 106) | static String getNS() {
    method getRelease (line 110) | static String getRelease() {
    method getProduct (line 114) | static Product getProduct() {
    method productIs (line 119) | static boolean productIs(Product product) {
    method getIngressDomain (line 127) | static String getIngressDomain(ClusterType cluster) {

FILE: src/test/scripts/product_versions.py
  function get_lts_version (line 22) | def get_lts_version(argv):
  function loadJSON (line 100) | def loadJSON(fdata):
  function cversion (line 107) | def cversion(version):

FILE: src/test/scripts/update_versions.py
  function update_versions (line 28) | def update_versions(product_to_update, new_version):
  function update_expected_output (line 51) | def update_expected_output(products_to_update, new_version):
  function product_versions_marketplace (line 65) | def product_versions_marketplace(product_key):
  function latest_minor (line 89) | def latest_minor(version, mac_versions):
  function update_mesh_tag (line 97) | def update_mesh_tag():
Condensed preview — 516 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,483K chars).
[
  {
    "path": ".atlassian/OWNER",
    "chars": 7,
    "preview": "abrokes"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 97,
    "preview": "*       @nanux @yzha645 @bianchi2 @kush982 @amierzwicki @pbhardwaj6 @jainanshul43 @jwitowski-atl\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/FEATURE.yml",
    "chars": 1441,
    "preview": "name: Feature request\ndescription: Do you have an idea or suggestion for a Helm charts improvement?\ntitle: \"[Suggestion]"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 665,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: ⚠️ Support boundaries ⚠️\n    url: https://atlassian.github.io/data-"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 213,
    "preview": "## Pull request description\n\n_Provide description for the PR_\n\n## Checklist\n- [ ] I have added unit tests\n- [ ] I have a"
  },
  {
    "path": ".github/workflows/crc.yaml",
    "chars": 1624,
    "preview": "# This workflow is for testing Helm charts in MicroShift\n\nname: DC Tests in MicroShift\n\non:\n  schedule:\n    - cron: '0 3"
  },
  {
    "path": ".github/workflows/dc-tests.yml",
    "chars": 1248,
    "preview": "# This workflow is for testing Helm charts in KinD clusters\n\nname: DC apps tests in KinD\n\non:\n  schedule:\n    - cron: '0"
  },
  {
    "path": ".github/workflows/documentation-build.yaml",
    "chars": 449,
    "preview": "name: Documentation - Build\non:\n  pull_request:\njobs:\n  deploy:\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: actio"
  },
  {
    "path": ".github/workflows/documentation-deploy.yaml",
    "chars": 481,
    "preview": "name: Documentation - Deploy\non:\n  push:\n    branches:\n      - main\njobs:\n  deploy:\n    runs-on: ubuntu-24.04\n    steps:"
  },
  {
    "path": ".github/workflows/e2e-tf-deployment.yaml",
    "chars": 7660,
    "preview": "name: Helm Charts E2E Testing\non:\n  schedule:\n    - cron: '0 3 */2 * *' # schedule the test to run every second day at 3"
  },
  {
    "path": ".github/workflows/kind.yaml",
    "chars": 3352,
    "preview": "name: Test DC App in a KinD Cluster\n\non:\n  workflow_call:\n    inputs:\n      dc_app:\n        required: true\n        type:"
  },
  {
    "path": ".github/workflows/maven.yml",
    "chars": 1385,
    "preview": "# This workflow will build a Java project with Maven\n# For more information see: https://help.github.com/actions/languag"
  },
  {
    "path": ".github/workflows/openshift.yaml",
    "chars": 10022,
    "preview": "name: MicroShift Tests\n\non:\n  workflow_call:\n    inputs:\n      dc_app:\n        required: true\n        type: string\n    s"
  },
  {
    "path": ".github/workflows/prepare-release.yaml",
    "chars": 1963,
    "preview": "name: Prepare Release\n\non:\n  push:\n    branches:\n      - release/*\n\njobs:\n  prepare-release:\n    env:\n      GH_TOKEN: ${"
  },
  {
    "path": ".github/workflows/process-dashboard-test.yaml",
    "chars": 529,
    "preview": "name: Process Dashboard Script Testing\n\non:\n  push:\n    paths:\n      - 'src/main/scripts/process_dash*'\n  workflow_dispa"
  },
  {
    "path": ".github/workflows/release-charts.yaml",
    "chars": 4278,
    "preview": "name: Release Helm Charts\n\non:\n  workflow_dispatch:\n\njobs:\n  release:\n    runs-on: ubuntu-24.04\n    permissions:\n      i"
  },
  {
    "path": ".github/workflows/release-unit-tests.yaml",
    "chars": 652,
    "preview": "name: Release Script Unit Testing\n\non:\n  push:\n    paths:\n      - 'src/main/scripts/prepare_*'\n  workflow_dispatch:\n\njob"
  },
  {
    "path": ".github/workflows/sync-grafana-dashboards.yaml",
    "chars": 1748,
    "preview": "name: Update Grafana Dashboards\n\non:\n  schedule:\n    - cron: '0 1 * * SUN' # At 1AM on every Sunday\n  workflow_dispatch:"
  },
  {
    "path": ".github/workflows/update-lts-tags.yaml",
    "chars": 2201,
    "preview": "name: Update LTS Tags\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: '0 0 * * SUN' # At 00:00 on every Sunday\n\njobs:\n"
  },
  {
    "path": ".gitignore",
    "chars": 230,
    "preview": ".idea\n.vscode\n\ntarget\n__pycache__\n*.iml\n\\#*\\#\ndocs/site\ntmp\n.settings\n.project\n.classpath\n\n# ignore installed common lib"
  },
  {
    "path": ".java-version",
    "chars": 5,
    "preview": "11.0\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 389,
    "preview": "repos:\n  - repo: https://github.com/norwoodj/helm-docs\n    rev: v1.12.0\n    hooks:\n      - id: helm-docs\n        args:\n "
  },
  {
    "path": "BREAKING_CHANGES.md",
    "chars": 2900,
    "preview": "# Breaking Changes\n\n## Version 2.0.0\n\n### Required values\n\n* `.Values.bitbucket.clustering.group` is required for Bitbuc"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 2479,
    "preview": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project, and in the interest of fostering an open"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2694,
    "preview": "# Contributing to Data Center Helm Charts\n\nThank you for considering a contribution to Data Center Helm Charts. Pull req"
  },
  {
    "path": "DEVELOPMENT.md",
    "chars": 1908,
    "preview": "# Development\n\n## Chart dependencies\n\nProduct charts are using a common library chart (`common`). To download the depend"
  },
  {
    "path": "LICENSE",
    "chars": 11358,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 484,
    "preview": ".PHONY: help doc-docker doc-build doc-serve\n\nhelp:\n\t    @echo \"Atlassian DC helm charts\"\n\t    @echo \"\"\n\t    @echo \"Comma"
  },
  {
    "path": "README.md",
    "chars": 2511,
    "preview": "# Atlassian Data Center Helm Charts\n\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/r"
  },
  {
    "path": "cr.yaml",
    "chars": 56,
    "preview": "pages-branch: gh-pages\nindex-path: docs/docs/index.yaml\n"
  },
  {
    "path": "docs/build/Dockerfile",
    "chars": 75,
    "preview": "FROM squidfunk/mkdocs-material\nRUN pip install mkdocs-awesome-pages-plugin\n"
  },
  {
    "path": "docs/docs/.pages",
    "chars": 175,
    "preview": "nav:\n    - Home: README.md\n    - User guide: userguide\n    - Examples: examples\n    - Troubleshooting: troubleshooting\n "
  },
  {
    "path": "docs/docs/README.md",
    "chars": 5788,
    "preview": "# Atlassian Data Center Helm Charts\n\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/r"
  },
  {
    "path": "docs/docs/artifacthub-repo.yml",
    "chars": 864,
    "preview": "# Artifact Hub repository metadata file\n#\n# Some settings like the verified publisher flag or the ignored packages won't"
  },
  {
    "path": "docs/docs/assets/images/KubernetesOverview.xml",
    "chars": 189296,
    "preview": "<mxfile host=\"app.diagrams.net\" agent=\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like G"
  },
  {
    "path": "docs/docs/assets/images/ingress.xml",
    "chars": 3695,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mxfile host=\"app.diagrams.net\" modified=\"2022-01-17T01:58:45.092Z\" agent=\"5.0 (M"
  },
  {
    "path": "docs/docs/assets/stylesheets/extra.css",
    "chars": 535,
    "preview": ":root > * {\n\n    --md-primary-fg-color: #0052CC;\n    --md-primary-fg-color--light: #FFFFFF;\n    --md-primary-fg-color--d"
  },
  {
    "path": "docs/docs/containers/.pages",
    "chars": 219,
    "preview": "nav:\n    - Jira: JIRA.md\n    - Confluence: CONFLUENCE.md\n    - Bitbucket: BITBUCKET.md\n    - Bitbucket Mesh: BITBUCKET-M"
  },
  {
    "path": "docs/docs/containers/BAMBOO-AGENT.md",
    "chars": 9634,
    "preview": "# ![Atlassian Bamboo](https://wac-cdn.atlassian.com/dam/jcr:560a991e-c0e3-4014-bd7d-2e65d4e4c84a/bamboo-icon-gradient-bl"
  },
  {
    "path": "docs/docs/containers/BAMBOO.md",
    "chars": 26993,
    "preview": "# ![Atlassian Bamboo](https://wac-cdn.atlassian.com/dam/jcr:560a991e-c0e3-4014-bd7d-2e65d4e4c84a/bamboo-icon-gradient-bl"
  },
  {
    "path": "docs/docs/containers/BITBUCKET-MESH.md",
    "chars": 11078,
    "preview": "# ![Atlassian Bitbucket Mesh](https://wac-cdn.atlassian.com/dam/jcr:bf39fc40-3871-491f-98e3-fb2293f57a00/bitbucket-icon-"
  },
  {
    "path": "docs/docs/containers/BITBUCKET.md",
    "chars": 19882,
    "preview": "# ![Atlassian Bitbucket Server](https://wac-cdn.atlassian.com/dam/jcr:bf39fc40-3871-491f-98e3-fb2293f57a00/bitbucket-ico"
  },
  {
    "path": "docs/docs/containers/CONFLUENCE.md",
    "chars": 31752,
    "preview": "# ![Atlassian Confluence Server](https://wac-cdn.atlassian.com/dam/jcr:5d1374c2-276f-4bca-9ce4-813aba614b7a/confluence-i"
  },
  {
    "path": "docs/docs/containers/CROWD.md",
    "chars": 14752,
    "preview": "# ![Atlassian Crowd](https://wac-cdn.atlassian.com/dam/jcr:d2a1da52-ae52-4b06-9ab1-da8647a89653/crowd-icon-gradient-blue"
  },
  {
    "path": "docs/docs/containers/JIRA.md",
    "chars": 39092,
    "preview": "# ![Atlassian Jira Software](https://wac-cdn.atlassian.com/dam/jcr:826c97dc-1f5c-4955-bfcc-ea17d6b0c095/jira%20software-"
  },
  {
    "path": "docs/docs/examples/.pages",
    "chars": 209,
    "preview": "collapse_single_pages: true\nnav:\n    - EXAMPLES.md\n    - Kubernetes cluster: cluster\n    - database\n    - ingress\n    - "
  },
  {
    "path": "docs/docs/examples/EXAMPLES.md",
    "chars": 2156,
    "preview": "# Available examples \n\n!!!warning \"Support disclaimer\"\n    Use the examples we provide as reference only, we don’t offer"
  },
  {
    "path": "docs/docs/examples/bamboo/.pages",
    "chars": 94,
    "preview": "collapse_single_pages: false\nnav:\n    - REMOTE_AGENTS.md\n    - AGENT_CAPABILITIES.md\n    - ..."
  },
  {
    "path": "docs/docs/examples/bamboo/AGENT_CAPABILITIES.md",
    "chars": 1325,
    "preview": "# Agent capabilities\n\nA capability is a feature of an agent. A capability can be defined on an agent for:\n\n* an executab"
  },
  {
    "path": "docs/docs/examples/bamboo/REMOTE_AGENTS.md",
    "chars": 5389,
    "preview": "# Remote agents\n\nRemote agents can be provisioned to a Kubernetes cluster to run jobs delegated to them via a Bamboo ser"
  },
  {
    "path": "docs/docs/examples/bitbucket/.pages",
    "chars": 226,
    "preview": "nav:\n    - OpenSearch    : BITBUCKET_OPENSEARCH.md\n    - Elasticsearch (Deprecated) : BITBUCKET_ELASTICSEARCH.md\n    - S"
  },
  {
    "path": "docs/docs/examples/bitbucket/BITBUCKET_AWS_OPENSEARCH.md",
    "chars": 920,
    "preview": "# Configure AWS OpenSearch with Bitbucket\n\n## Configuration Example\n\n```yaml\nbitbucket:\n  # Disable default OpenSearch d"
  },
  {
    "path": "docs/docs/examples/bitbucket/BITBUCKET_ELASTICSEARCH.md",
    "chars": 5528,
    "preview": "!!!warning \"Elasticsearch deprecation notice\"\n    Elasticsearch has been deprecated as a search platform for Bitbucket. "
  },
  {
    "path": "docs/docs/examples/bitbucket/BITBUCKET_MESH.md",
    "chars": 3440,
    "preview": "# Bitbucket Mesh\n\nBitbucket Mesh is a distributed, replicated, and horizontally scalable Git repository storage system, "
  },
  {
    "path": "docs/docs/examples/bitbucket/BITBUCKET_MIRRORS.md",
    "chars": 6080,
    "preview": "# Smart Mirroring\n\nSmart Mirroring can greatly improve Git clone speeds for distributed teams working with large reposit"
  },
  {
    "path": "docs/docs/examples/bitbucket/BITBUCKET_OPENSEARCH.md",
    "chars": 13628,
    "preview": "!!!info \"Helm chart version\"\n    OpenSearch sub-chart is supported in Bitbucket Helm chart version 1.20 onwards.\n\n## Dep"
  },
  {
    "path": "docs/docs/examples/bitbucket/BITBUCKET_SESSION_AFFINITY.md",
    "chars": 1409,
    "preview": "# Configure Session Stickiness with NGINX Ingress\n\n## Default Configuration\n\n```yaml\ningress:\n  create: true\n  nginx: tr"
  },
  {
    "path": "docs/docs/examples/bitbucket/BITBUCKET_SSH.md",
    "chars": 5715,
    "preview": "# SSH service in Bitbucket on Kubernetes\n\nIn addition to providing a service on HTTP(S), Bitbucket also allows remote Gi"
  },
  {
    "path": "docs/docs/examples/cluster/AKS_SETUP.md",
    "chars": 830,
    "preview": "# Preparing an AKS cluster\nThis example provides instructions for creating a Kubernetes cluster using [Azure AKS](https:"
  },
  {
    "path": "docs/docs/examples/cluster/CLOUD_PROVIDERS.md",
    "chars": 223,
    "preview": "# Provisioning Kubernetes clusters on cloud-based providers\n\nHere are installation and configuration instructions for cl"
  },
  {
    "path": "docs/docs/examples/cluster/EKS_SETUP.md",
    "chars": 1905,
    "preview": "# Preparing an EKS cluster\nThis example provides instructions for creating a Kubernetes cluster using [Amazon EKS](https"
  },
  {
    "path": "docs/docs/examples/cluster/GKE_SETUP.md",
    "chars": 771,
    "preview": "# Preparing an GKE cluster\nThis example provides instructions for creating a Kubernetes cluster using [Google GKE](https"
  },
  {
    "path": "docs/docs/examples/confluence/.pages",
    "chars": 75,
    "preview": "collapse_single_pages: false\nnav:\n    - CONFLUENCE_OPENSEARCH.md\n    - ...\n"
  },
  {
    "path": "docs/docs/examples/confluence/CONFLUENCE_OPENSEARCH.md",
    "chars": 2763,
    "preview": "# Configuring OpenSearch for Confluence\n\n!!!info \"Confluence and Helm chart version\"\n    OpenSearch is supported in Conf"
  },
  {
    "path": "docs/docs/examples/database/AMAZON_RDS.md",
    "chars": 2223,
    "preview": "# Creating an RDS database instance\nThis example provides instructions for creating an Amazon [RDS DB instance](https://"
  },
  {
    "path": "docs/docs/examples/database/CLOUD_PROVIDERS.md",
    "chars": 1238,
    "preview": "# Provisioning databases on cloud-based providers\n\n!!!info \"Supported databases\"\n      \n    Your selected database engin"
  },
  {
    "path": "docs/docs/examples/external_libraries/EXTERNAL_LIBS.md",
    "chars": 6582,
    "preview": "# External libraries and plugins\n\n!!!warning \"`.jar` files only\"\n\n    Whether loading external libraries, drivers or plu"
  },
  {
    "path": "docs/docs/examples/ingress/CONTROLLERS.md",
    "chars": 1019,
    "preview": "# Provisioning a traffic entry controller\n\nTo expose an Atlassian DC product outside your Kubernetes cluster, you must r"
  },
  {
    "path": "docs/docs/examples/ingress/DNS.md",
    "chars": 3040,
    "preview": "# Create DNS record via AWS CLI\n\n!!!tip \"DNS record creation using Route53\"\n\n    The approach below shows how a DNS reco"
  },
  {
    "path": "docs/docs/examples/ingress/GATEWAY_API.md",
    "chars": 4952,
    "preview": "# Gateway API controller (HTTPRoute)\n\nThe Atlassian DC Helm charts support exposing products via the **Kubernetes Gatewa"
  },
  {
    "path": "docs/docs/examples/ingress/GATEWAY_API_SESSION_AFFINITY.md",
    "chars": 2863,
    "preview": "# Session Affinity with Gateway API\n\nAtlassian DC products require **sticky sessions** so that a user is consistently ro"
  },
  {
    "path": "docs/docs/examples/ingress/INGRESS_NGINX.md",
    "chars": 5745,
    "preview": "# NGINX Ingress Controller - with TLS termination\n[NGINX ingress controller](https://kubernetes.github.io/ingress-nginx/"
  },
  {
    "path": "docs/docs/examples/jira/.pages",
    "chars": 69,
    "preview": "collapse_single_pages: false\nnav:\n    - JIRA_OPENSEARCH.md\n    - ...\n"
  },
  {
    "path": "docs/docs/examples/jira/JIRA_OPENSEARCH.md",
    "chars": 4401,
    "preview": "# Configuring OpenSearch for Jira\n\n!!!info \"Jira and Helm chart version\"\n    OpenSearch is supported in Jira 11.2 and He"
  },
  {
    "path": "docs/docs/examples/logging/efk/EFK.md",
    "chars": 12534,
    "preview": "# Logging in a Kubernetes environment\n\n!!!warning Disclaimer\n    **This functionality is not officially supported.** Thi"
  },
  {
    "path": "docs/docs/examples/logging/efk/local_es/elasticsearch.yaml",
    "chars": 6411,
    "preview": "---\nclusterName: \"elasticsearch\"\nnodeGroup: \"master\"\n\n# The service that non master groups will try to connect to when j"
  },
  {
    "path": "docs/docs/examples/logging/efk/managed_es/fluentbit.yaml",
    "chars": 5500,
    "preview": "---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: fluent-bit-read\nrules:\n- apiGroups: [\"\""
  },
  {
    "path": "docs/docs/examples/storage/.pages",
    "chars": 135,
    "preview": "collapse_single_pages: false\nnav:\n    - STORAGE.md\n    - AWS: aws\n    - NFS: nfs\n    - Additional Storage: additional st"
  },
  {
    "path": "docs/docs/examples/storage/STORAGE.md",
    "chars": 827,
    "preview": "# Shared storage\nAtlassian's Data Center products require a shared storage solution to effectively operate in multi-node"
  },
  {
    "path": "docs/docs/examples/storage/additional storage/ADDTIONAL_STORAGE.md",
    "chars": 840,
    "preview": "# Additional Storage\nYou can use [volumeClaimTemplates](https://kubernetes.io/docs/concepts/workloads/controllers/statef"
  },
  {
    "path": "docs/docs/examples/storage/aws/LOCAL_STORAGE.md",
    "chars": 2037,
    "preview": "# Local storage\nThis file provides examples on how a Kubernetes cluster and helm deployment can be configured to utilize"
  },
  {
    "path": "docs/docs/examples/storage/aws/SHARED_STORAGE.md",
    "chars": 3205,
    "preview": "# Shared storage\nThis file provides examples on how a Kubernetes cluster and helm deployment can be configured to utiliz"
  },
  {
    "path": "docs/docs/examples/storage/aws/s3/CONFLUENCE.md",
    "chars": 2141,
    "preview": "# AWS S3 Attachments Storage\n\nSince 8.1.0 Confluence supports storing attachments in AWS S3. To enable this feature, upd"
  },
  {
    "path": "docs/docs/examples/storage/aws/s3/JIRA.md",
    "chars": 2070,
    "preview": "# AWS S3 Avatars Storage\n\nSince 9.9.0 Jira supports storing avatars in AWS S3. To enable this feature, update the image "
  },
  {
    "path": "docs/docs/examples/storage/nfs/NFS.md",
    "chars": 4250,
    "preview": "# NFS server for Bitbucket\n!!!warning \"Disclaimer\"\n\n    **The NFS helm chart is not officially supported. It should not "
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/.helmignore",
    "chars": 349,
    "preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/Chart.yaml",
    "chars": 171,
    "preview": "apiVersion: v2\nname: nfs-server-example\ndescription: A NFS server example using NFS Ganesha. Do not use in production.\n\n"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/NOTES.txt",
    "chars": 1004,
    "preview": "{{ .Chart.Name }} installed.\n\nDo not use in production, this is for testing purposes only.\n\n\nUninstalling this release w"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/_helpers.tpl",
    "chars": 2092,
    "preview": "{{/*\nExpand the name of the chart.\n*/}}\n{{- define \"nfs-server.name\" -}}\n{{- default .Chart.Name .Values.nameOverride | "
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/service.yaml",
    "chars": 1787,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"nfs-server.fullname\" . }}\n  labels:\n    {{- include \"nfs-serv"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/serviceaccount.yaml",
    "chars": 326,
    "preview": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"nfs-server.se"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/statefulset.yaml",
    "chars": 4461,
    "preview": "apiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: {{ include \"nfs-server.fullname\" . }}\n  labels:\n    {{- include "
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/storageclass.yaml",
    "chars": 372,
    "preview": "{{- if .Values.storageClass.create -}}\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n  name: {{ include \"nf"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/tests/test-locking.yaml",
    "chars": 916,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"nfs-server.fullname\" . }}-test-nfs\"\n  labels:\n    {{- include \"n"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/tests/test-performance.yaml",
    "chars": 1285,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"nfs-server.fullname\" . }}-perf-nfs\"\n  labels:\n    {{- include \"n"
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/templates/tests/test-pv.yaml",
    "chars": 1492,
    "preview": "---\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: \"{{ include \"nfs-server.fullname\" . }}-test-nfs\"\n  labels:\n "
  },
  {
    "path": "docs/docs/examples/storage/nfs/nfs-server-example/values.yaml",
    "chars": 1659,
    "preview": "# Default values for nfs-server.\n# This is a YAML-formatted file.\n# Declare variables to be passed into your templates.\n"
  },
  {
    "path": "docs/docs/index.yaml",
    "chars": 602108,
    "preview": "apiVersion: v1\nentries:\n  bamboo:\n  - annotations:\n      artifacthub.io/changes: '- \"Update appVersions for DC apps (#11"
  },
  {
    "path": "docs/docs/platforms/.pages",
    "chars": 49,
    "preview": "nav:\n    - PLATFORMS.md\n    - openshift\n    - ..."
  },
  {
    "path": "docs/docs/platforms/PLATFORMS.md",
    "chars": 866,
    "preview": "# Platform information\n\n!!! warning \"Support Disclaimer\"\n    Helm is a Kubernetes package manager that orchestrates the "
  },
  {
    "path": "docs/docs/platforms/openshift/OPENSHIFT.md",
    "chars": 5848,
    "preview": "# Deploy To OpenShift\n\n!!! warning \"Support disclaimer\"\n    Helm is a Kubernetes package manager that orchestrates the p"
  },
  {
    "path": "docs/docs/platforms/openshift/OPENSHIFT_FAQ.md",
    "chars": 6634,
    "preview": "# OpenShift FAQs\n\n## Permission errors when starting containers\n\nIf you encounter the following log message upon startin"
  },
  {
    "path": "docs/docs/troubleshooting/.pages",
    "chars": 89,
    "preview": "nav:\n    - TROUBLESHOOTING.md\n    - SUPPORT_BOUNDARIES.md\n    - LIMITATIONS.md\n    - ...\n"
  },
  {
    "path": "docs/docs/troubleshooting/LIMITATIONS.md",
    "chars": 6499,
    "preview": "# Limitations \n\n## Product limitations\nWe haven't changed our Data Center applications' architecture to support Kubernet"
  },
  {
    "path": "docs/docs/troubleshooting/SUPPORT_BOUNDARIES.md",
    "chars": 4454,
    "preview": "# Support boundaries\n\nThis page describes what is within our scope of support for Kubernetes deployments, and what isn't"
  },
  {
    "path": "docs/docs/troubleshooting/TROUBLESHOOTING.md",
    "chars": 4412,
    "preview": "# Troubleshooting tips\n\nThis guide contains general tips on how to investigate an application deployment that doesn't wo"
  },
  {
    "path": "docs/docs/userguide/.pages",
    "chars": 201,
    "preview": "nav:\n    - PREREQUISITES.md\n    - VERIFICATION.md\n    - INSTALLATION.md\n    - CONFIGURATION.md\n    - MIGRATION.md\n    - "
  },
  {
    "path": "docs/docs/userguide/CONFIGURATION.md",
    "chars": 41751,
    "preview": "# Configuration\n\n## :material-directions-fork: Ingress\nIn order to make the Atlassian product available from outside of "
  },
  {
    "path": "docs/docs/userguide/INSTALLATION.md",
    "chars": 12477,
    "preview": "# Installation \n\nFollow these instructions to install your Atlassian product using the Helm charts. Before you proceed w"
  },
  {
    "path": "docs/docs/userguide/MIGRATION.md",
    "chars": 2852,
    "preview": "# Migration\n\nIf you already have an existing Data Center product deployment, you can migrate it to a Kubernetes cluster "
  },
  {
    "path": "docs/docs/userguide/OPERATION.md",
    "chars": 5696,
    "preview": "# Operation\nOnce you have [installed your product](../userguide/INSTALLATION.md), use this document if you want to scale"
  },
  {
    "path": "docs/docs/userguide/PREREQUISITES.md",
    "chars": 7869,
    "preview": "# Prerequisites\n## Requirements\n\nIn order to deploy Atlassian’s Data Center products, the following is required:\n\n1. An "
  },
  {
    "path": "docs/docs/userguide/VERIFICATION.md",
    "chars": 1218,
    "preview": "# Verification\n\nFrom release 1.11.0, all the Helm charts are signed with a GPG key, following the instructions on the of"
  },
  {
    "path": "docs/docs/userguide/monitoring/.pages",
    "chars": 105,
    "preview": "nav:\n    - Prometheus and Grafana: PROMETHEUS.md\n    - Product specific dashboards: PRE_CANNED_CHARTS.md\n"
  },
  {
    "path": "docs/docs/userguide/monitoring/PRE_CANNED_CHARTS.md",
    "chars": 2396,
    "preview": "# Pre-canned product charts\n\nThe instructions outlined on this page provide details on how you can deploy a set of Grafa"
  },
  {
    "path": "docs/docs/userguide/monitoring/PROMETHEUS.md",
    "chars": 7440,
    "preview": "# Monitoring with Prometheus\n\nThe instructions outlined on this page provide details on how you can enable [Prometheus]("
  },
  {
    "path": "docs/docs/userguide/resource_management/JIRA_INDEX_SNAPSHOT.md",
    "chars": 1391,
    "preview": "# Creating an initial index snapshot in Jira\n\nThese steps should be followed to enable shared index snapshots with Jira:"
  },
  {
    "path": "docs/docs/userguide/resource_management/REQUESTS_AND_LIMITS.md",
    "chars": 3792,
    "preview": "# Resource requests and limits\nTo ensure that Kubernetes appropriately schedules resources, the respective product `valu"
  },
  {
    "path": "docs/docs/userguide/resource_management/RESOURCE_SCALING.md",
    "chars": 4774,
    "preview": "# Product scaling\nFor optimum performance and stability the appropriate resource `requests` and `limits` should be defin"
  },
  {
    "path": "docs/docs/userguide/upgrades/.pages",
    "chars": 96,
    "preview": "nav:\n    - Helm chart upgrade: HELM_CHART_UPGRADE.md\n    - Products upgrade: PRODUCTS_UPGRADE.md"
  },
  {
    "path": "docs/docs/userguide/upgrades/HELM_CHART_UPGRADE.md",
    "chars": 14011,
    "preview": "# Helm chart upgrade\nEach Helm chart has a default product version that might change in next Helm chart \nversion. So be "
  },
  {
    "path": "docs/docs/userguide/upgrades/PRODUCTS_UPGRADE.md",
    "chars": 12255,
    "preview": "# Products upgrade\n\nWe recommend upgrading the Helm chart rather than upgrading the product directly. However, if you wa"
  },
  {
    "path": "docs/mkdocs.yml",
    "chars": 1548,
    "preview": "site_name: Atlassian DC Helm Charts\ntheme:\n  name: material\n  custom_dir: overrides\n  favicon: assets/logos/favicon.png\n"
  },
  {
    "path": "docs/overrides/main.html",
    "chars": 320,
    "preview": "{% extends \"base.html\" %}\n\n{% block announce %}\n<a href=\"https://community.atlassian.com/t5/Atlassian-Data-Center-on/gh-"
  },
  {
    "path": "docs/requirements.txt",
    "chars": 64,
    "preview": "mkdocs-material\nmkdocs-minify-plugin\nmkdocs-awesome-pages-plugin"
  },
  {
    "path": "docs_internal/ROUTING.md",
    "chars": 7921,
    "preview": "# Routing: Ingress vs Gateway Internals\n\nThis document explains how the `common.gateway.*` template helpers abstract ove"
  },
  {
    "path": "mvnvm.properties",
    "chars": 17,
    "preview": "mvn_version=3.6.3"
  },
  {
    "path": "pom.xml",
    "chars": 8985,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "scripts/generate_k8s_support_bundle.sh",
    "chars": 5581,
    "preview": "#!/bin/bash\n\n# This script can be used to generate a \"support\" bundle that can\n# be used to facilitate investigations in"
  },
  {
    "path": "src/main/charts/README.md.gotmpl",
    "chars": 590,
    "preview": "{{ template \"chart.header\" . }} {{/* This template is used to auto-generate the chart README.md files - see https://gith"
  },
  {
    "path": "src/main/charts/bamboo/.helmignore",
    "chars": 441,
    "preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
  },
  {
    "path": "src/main/charts/bamboo/Changelog.md",
    "chars": 32655,
    "preview": "# Change Log\n\n## 2.0.13\n\n**Release date:** 2026-5-6\n\n![AppVersion: 12.1.6](https://img.shields.io/static/v1?label=AppVer"
  },
  {
    "path": "src/main/charts/bamboo/Chart.yaml",
    "chars": 776,
    "preview": "apiVersion: v2\nname: bamboo\ndescription: A chart for installing Bamboo Data Center on Kubernetes\ntype: application\nversi"
  },
  {
    "path": "src/main/charts/bamboo/README.md",
    "chars": 42452,
    "preview": "# bamboo\n\n![Version: 2.0.13](https://img.shields.io/badge/Version-2.0.13-informational?style=flat-square) ![Type: applic"
  },
  {
    "path": "src/main/charts/bamboo/grafana-dashboards/overview.json",
    "chars": 42909,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\","
  },
  {
    "path": "src/main/charts/bamboo/templates/NOTES.txt",
    "chars": 3417,
    "preview": "Thank you for installing {{ title .Chart.Name }}.\n\nYour release is named {{ .Release.Name }}, and resides in namespace {"
  },
  {
    "path": "src/main/charts/bamboo/templates/_fluentd_templates.tpl",
    "chars": 1258,
    "preview": "{{- define \"fluentd.container\" -}}\n{{ if .Values.fluentd.enabled }}\n- name: fluentd\n  image: {{ .Values.fluentd.imageRep"
  },
  {
    "path": "src/main/charts/bamboo/templates/_helpers.tpl",
    "chars": 15302,
    "preview": "{{/* vim: set filetype=mustache: */}}\n\n{{/* Define a sanitized list of additionalEnvironmentVariables */}}\n{{- define \"b"
  },
  {
    "path": "src/main/charts/bamboo/templates/config-jvm.yaml",
    "chars": 698,
    "preview": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}-jvm-config\n  labels:\n    {{- in"
  },
  {
    "path": "src/main/charts/bamboo/templates/configmap-additional-config.yaml",
    "chars": 368,
    "preview": "{{- range $i, $key := .Values.additionalConfigMaps -}}\n{{- with $ }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{"
  },
  {
    "path": "src/main/charts/bamboo/templates/configmap-fluentd.yaml",
    "chars": 1237,
    "preview": "{{ if .Values.fluentd.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }"
  },
  {
    "path": "src/main/charts/bamboo/templates/configmap-init-properties.yaml",
    "chars": 421,
    "preview": "{{ if or .Values.bamboo.tomcatConfig.generateByHelm .Values.bamboo.seraphConfig.generateByHelm .Values.openshift.runWith"
  },
  {
    "path": "src/main/charts/bamboo/templates/configmap-jmx-config.yaml",
    "chars": 948,
    "preview": "{{- if .Values.monitoring.exposeJmxMetrics }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names."
  },
  {
    "path": "src/main/charts/bamboo/templates/configmap-server-config.yaml",
    "chars": 13062,
    "preview": "{{ if or .Values.bamboo.tomcatConfig.generateByHelm .Values.bamboo.seraphConfig.generateByHelm .Values.openshift.runWith"
  },
  {
    "path": "src/main/charts/bamboo/templates/configmap-values-analytics.yaml",
    "chars": 602,
    "preview": "{{- if or .Values.atlassianAnalyticsAndSupport.analytics.enabled .Values.atlassianAnalyticsAndSupport.helmValues.enabled"
  },
  {
    "path": "src/main/charts/bamboo/templates/configmaps-grafana-dashboards.yaml",
    "chars": 917,
    "preview": "{{- if .Values.monitoring.grafana.createDashboards }}\n{{- $grafanaDashboards := .Files.Glob \"grafana-dashboards/*.json\" "
  },
  {
    "path": "src/main/charts/bamboo/templates/httproute.yaml",
    "chars": 1304,
    "preview": "{{- if .Values.gateway.create }}\n{{- include \"common.gateway.validateConfig\" . -}}\napiVersion: gateway.networking.k8s.io"
  },
  {
    "path": "src/main/charts/bamboo/templates/ingress.yaml",
    "chars": 1876,
    "preview": "{{- if .Values.ingress.create }}\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: {{ include \"common.nam"
  },
  {
    "path": "src/main/charts/bamboo/templates/pdb.yaml",
    "chars": 790,
    "preview": "{{- if .Values.podDisruptionBudget.enabled }}\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n  name: {{ inclu"
  },
  {
    "path": "src/main/charts/bamboo/templates/route.yaml",
    "chars": 1476,
    "preview": "{{- if and .Values.ingress.create .Values.ingress.openShiftRoute }}\nkind: Route\napiVersion: route.openshift.io/v1\nmetada"
  },
  {
    "path": "src/main/charts/bamboo/templates/service-jms.yaml",
    "chars": 766,
    "preview": "{{- if .Values.bamboo.jmsService.enabled}}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"common.names.fulln"
  },
  {
    "path": "src/main/charts/bamboo/templates/service-jmx.yaml",
    "chars": 586,
    "preview": "{{- if .Values.monitoring.exposeJmxMetrics}}\napiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"common.names.ful"
  },
  {
    "path": "src/main/charts/bamboo/templates/service-monitor.yaml",
    "chars": 799,
    "preview": "{{- if .Values.monitoring.serviceMonitor.create }}\napiVersion: monitoring.coreos.com/v1\nkind: ServiceMonitor\nmetadata:\n "
  },
  {
    "path": "src/main/charts/bamboo/templates/service.yaml",
    "chars": 1152,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n  {{- include \"common.l"
  },
  {
    "path": "src/main/charts/bamboo/templates/serviceaccount.yaml",
    "chars": 441,
    "preview": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"bamboo.servic"
  },
  {
    "path": "src/main/charts/bamboo/templates/shared-home-pvc.yaml",
    "chars": 703,
    "preview": "{{- if .Values.volumes.sharedHome.persistentVolumeClaim.create }}\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n "
  },
  {
    "path": "src/main/charts/bamboo/templates/statefulset.yaml",
    "chars": 15408,
    "preview": "{{- include \"common.gateway.validateConfig\" . -}}\napiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  name: {{ include \"co"
  },
  {
    "path": "src/main/charts/bamboo/templates/tests/test-application-status.yaml",
    "chars": 2284,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"common.names.fullname\" . }}-application-status-test\"\n  annotatio"
  },
  {
    "path": "src/main/charts/bamboo/templates/tests/test-database-connectivity.yaml",
    "chars": 2856,
    "preview": "{{ if .Values.database.credentials.secretName }}\napiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"common.names.fu"
  },
  {
    "path": "src/main/charts/bamboo/templates/tests/test-shared-home-permissions.yaml",
    "chars": 2452,
    "preview": "apiVersion: v1\nkind: Pod\nmetadata:\n  name: \"{{ include \"common.names.fullname\" . }}-shared-home-permissions-test\"\n  anno"
  },
  {
    "path": "src/main/charts/bamboo/values.yaml",
    "chars": 51104,
    "preview": "## Atlassian Bamboo Data Center Helm values\n#\n# HEADS UP!\n#\n# Release 1.0.0 of this chart only support FULL unattended s"
  },
  {
    "path": "src/main/charts/bamboo-agent/.helmignore",
    "chars": 441,
    "preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
  },
  {
    "path": "src/main/charts/bamboo-agent/Changelog.md",
    "chars": 30175,
    "preview": "# Change Log\n\n## 2.0.13\n\n**Release date:** 2026-5-6\n\n![AppVersion: 12.1.6](https://img.shields.io/static/v1?label=AppVer"
  },
  {
    "path": "src/main/charts/bamboo-agent/Chart.yaml",
    "chars": 802,
    "preview": "apiVersion: v2\nname: bamboo-agent\ndescription: A chart for installing Bamboo Data Center remote agents on \n  Kubernetes\n"
  },
  {
    "path": "src/main/charts/bamboo-agent/README.md",
    "chars": 10295,
    "preview": "# bamboo-agent\n\n![Version: 2.0.13](https://img.shields.io/badge/Version-2.0.13-informational?style=flat-square) ![Type: "
  },
  {
    "path": "src/main/charts/bamboo-agent/templates/NOTES.txt",
    "chars": 1402,
    "preview": "Thank you for installing {{ title .Chart.Name }}.\n\nYour release is named {{ .Release.Name }}, and resides in namespace {"
  },
  {
    "path": "src/main/charts/bamboo-agent/templates/_helpers.tpl",
    "chars": 3246,
    "preview": "{{/* vim: set filetype=mustache: */}}\n{{/*\nThe K8s DNS record for the Bamboo server service\n*/}}\n{{- define \"agent.bambo"
  },
  {
    "path": "src/main/charts/bamboo-agent/templates/config-jvm.yaml",
    "chars": 285,
    "preview": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}-jvm-config\n  labels:\n    {{- in"
  },
  {
    "path": "src/main/charts/bamboo-agent/templates/deployment-agent.yaml",
    "chars": 5410,
    "preview": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}\n  labels:\n  {{- include \""
  },
  {
    "path": "src/main/charts/bamboo-agent/templates/serviceaccount.yaml",
    "chars": 442,
    "preview": "{{- if .Values.serviceAccount.create -}}\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: {{ include \"agent.service"
  },
  {
    "path": "src/main/charts/bamboo-agent/values.yaml",
    "chars": 12523,
    "preview": "## Atlassian Bamboo Data Center remote agent Helm values\n#\n# HEADS UP!\n#\n# A running and configured Bamboo server instan"
  },
  {
    "path": "src/main/charts/bitbucket/.helmignore",
    "chars": 441,
    "preview": "# Patterns to ignore when building packages.\n# This supports shell glob matching, relative path matching, and\n# negation"
  },
  {
    "path": "src/main/charts/bitbucket/Changelog.md",
    "chars": 80927,
    "preview": "# Change Log\n\n## 2.0.13\n\n**Release date:** 2026-5-6\n\n![AppVersion: 10.2.2](https://img.shields.io/static/v1?label=AppVer"
  },
  {
    "path": "src/main/charts/bitbucket/Chart.yaml",
    "chars": 955,
    "preview": "apiVersion: v2\nname: bitbucket\ndescription: A chart for installing Bitbucket Data Center on Kubernetes\ntype: application"
  },
  {
    "path": "src/main/charts/bitbucket/README.md",
    "chars": 54185,
    "preview": "# bitbucket\n\n![Version: 2.0.13](https://img.shields.io/badge/Version-2.0.13-informational?style=flat-square) ![Type: app"
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/bitbucket-mesh/mesh-grpc.json",
    "chars": 22111,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\","
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/bitbucket-mesh/mesh-overview.json",
    "chars": 26273,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\","
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/bitbucket-mesh/mesh-repair.json",
    "chars": 17544,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\","
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/bitbucket-mesh/mesh-tickets.json",
    "chars": 18191,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\","
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/build-actions-thread-pool-stats.json",
    "chars": 17762,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/db-ops.json",
    "chars": 22438,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/event-thread-pool-stats.json",
    "chars": 17716,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/git-ops.json",
    "chars": 27898,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/io-pump-thread-pool-stats.json",
    "chars": 17709,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/nio-pump-thread-pool-stats.json",
    "chars": 17719,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/overview.json",
    "chars": 41069,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\","
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/scheduled-thread-pool-stats.json",
    "chars": 17791,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/ssh-session-stats.json",
    "chars": 15276,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/ticket-status.json",
    "chars": 18463,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\","
  },
  {
    "path": "src/main/charts/bitbucket/grafana-dashboards/webhooks-stats.json",
    "chars": 22707,
    "preview": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n  "
  },
  {
    "path": "src/main/charts/bitbucket/templates/NOTES.txt",
    "chars": 5222,
    "preview": "Thank you for installing {{ title .Chart.Name }}.\n\nYour release is named {{ .Release.Name }}, and resides in namespace {"
  },
  {
    "path": "src/main/charts/bitbucket/templates/_fluentd_templates.tpl",
    "chars": 1257,
    "preview": "{{- define \"fluentd.container\" -}}\n{{ if .Values.fluentd.enabled }}\n- name: fluentd\n  image: {{ .Values.fluentd.imageRep"
  },
  {
    "path": "src/main/charts/bitbucket/templates/_helpers.tpl",
    "chars": 21406,
    "preview": "{{/*This file contains template snippets used by the other files in this directory.*/}}\n{{/*Most of them were generated "
  },
  {
    "path": "src/main/charts/bitbucket/templates/config-jvm-mesh.yaml",
    "chars": 1031,
    "preview": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}-jvm-config-mesh\n  labels:\n    {"
  },
  {
    "path": "src/main/charts/bitbucket/templates/config-jvm.yaml",
    "chars": 1086,
    "preview": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }}-jvm-config\n  labels:\n    {{- in"
  },
  {
    "path": "src/main/charts/bitbucket/templates/configmap-additional-config.yaml",
    "chars": 368,
    "preview": "{{- range $i, $key := .Values.additionalConfigMaps -}}\n{{- with $ }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{"
  },
  {
    "path": "src/main/charts/bitbucket/templates/configmap-fluentd.yaml",
    "chars": 1511,
    "preview": "{{ if .Values.fluentd.enabled }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names.fullname\" . }"
  },
  {
    "path": "src/main/charts/bitbucket/templates/configmap-jmx-config.yaml",
    "chars": 802,
    "preview": "{{- if .Values.monitoring.exposeJmxMetrics }}\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: {{ include \"common.names."
  },
  {
    "path": "src/main/charts/bitbucket/templates/configmap-mesh-grafana-dashboards.yaml",
    "chars": 966,
    "preview": "{{- if and .Values.monitoring.grafana.createDashboards .Values.bitbucket.mesh.enabled }}\n{{- $grafanaDashboards := .File"
  },
  {
    "path": "src/main/charts/bitbucket/templates/configmap-mesh-scripts.yaml",
    "chars": 2473,
    "preview": "{{- if and .Values.bitbucket.sysadminCredentials.secretName .Values.bitbucket.mesh.enabled -}}\napiVersion: v1\nkind: Conf"
  }
]

// ... and 316 more files (download for full content)

About this extraction

This page contains the full source code of the atlassian/data-center-helm-charts GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 516 files (4.0 MB), approximately 1.1M tokens, and a symbol index with 779 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!