diff --git a/.circleci/config.yml b/.circleci/config.yml index 4848d1c817..388af83806 100755 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -543,6 +543,27 @@ jobs: cf-space: tanf-staging cf-username: CF_USERNAME_STAGING + deploy-infrastructure-develop: + executor: terraform/default + working_directory: ~/tdp-deploy + steps: + - deploy-infrastructure: + cf-password: CF_PASSWORD_STAGING + cf-username: CF_USERNAME_STAGING + cf-space: tanf-staging + tf-path: ./terraform/staging + + deploy-develop: + executor: docker-executor + working_directory: ~/tdp-deploy + steps: + - deploy-cloud-dot-gov: + backend-appname: tdp-backend-develop + frontend-appname: tdp-frontend-develop + cf-password: CF_PASSWORD_STAGING + cf-space: tanf-staging + cf-username: CF_USERNAME_STAGING + deploy-project-updates-site: parameters: cf-org: @@ -668,10 +689,22 @@ workflows: filters: branches: only: - - develop + - main - deploy-staging: requires: - deploy-infrastructure-staging + filters: + branches: + only: + - main + - deploy-infrastructure-develop: + filters: + branches: + only: + - develop + - deploy-develop: + requires: + - deploy-infrastructure-develop filters: branches: only: diff --git a/.gitignore b/.gitignore index 3899e79f82..a230915c56 100644 --- a/.gitignore +++ b/.gitignore @@ -100,3 +100,5 @@ tfapply *.tfvars *.lock.hcl *.tfstate + +*.~undo-tree~ diff --git a/docs/Technical-Documentation/Architecture-Decision-Record/008-deployment-flow.md b/docs/Technical-Documentation/Architecture-Decision-Record/008-deployment-flow.md index ea0f7d1927..8701f405e8 100644 --- a/docs/Technical-Documentation/Architecture-Decision-Record/008-deployment-flow.md +++ b/docs/Technical-Documentation/Architecture-Decision-Record/008-deployment-flow.md @@ -1,6 +1,6 @@ # 8. Deployment Flow -Date: 2021-01-27 (_Updated 2022-04-05_) +Date: 2021-01-27 (_Updated 2022-07-18_) ## Status @@ -8,19 +8,22 @@ Accepted ## Context -Our Cloud.gov organization currently has three Spaces -- dev, staging, and prod. The vendor team currently has access to the dev Space only. +Our Cloud.gov organization currently has three Spaces -- `tanf-dev`, `tanf-staging`, and `tanf-prod`. The vendor team currently has access to the tanf-dev space only. -Since the recent changes to our [Git workflow](https://github.com/HHS/TANF-app/blob/main/docs/Architecture%20Decision%20Record/009-git-workflow.md) we believe our current deploy strategy should be updated to more closely match the workflow. Previously, since we had approvals on two different repositories we decided that it made sense to maintain [two separate staging sites](https://github.com/HHS/TANF-app/blob/main/docs/Architecture%20Decision%20Record/008-deployment-flow.md). We would deploy to one with approval in the raft-tech repository, and another with approval to HHS. Since we now have all approvals made in raft-tech, the deploy after approval serves the same purpose as deploying to the Government staging site would have. +Since the recent changes to our [Git workflow](https://github.com/HHS/TANF-app/blob/main/docs/Technical-Documentation/Architecture-Decision-Record/009-git-workflow.md) we believe our current deploy strategy should be updated to more closely match the workflow. Previously, since we had approvals on two different repositories we decided that it made sense to maintain [two separate staging sites](https://github.com/HHS/TANF-app/blob/837574415af7c57e182684a75bbcf4d942d3b62a/docs/Architecture%20Decision%20Record/008-deployment-flow.md). We would deploy to one with approval in the raft-tech repository, and another with approval to HHS. Since we now have all approvals made in raft-tech, the deploy after approval serves the same purpose as deploying to the Government staging site would have. -Additionally, as of January 2021, the project has only a single deployment environment on Cloud.gov, which we are calling `development`. This poses challenges to the vendor development team. The team works on multiple features or fixes at any one time, but only has a single environment to test deployed code. This is leading to "crowding", where multiple in-progress features by different devs all want to be deployed to the same environment for testing. +Additionally, as of January 2021, the project has only a single deployment environment in the `tanf-dev` space on Cloud.gov. This poses challenges to the vendor development team. The team works on multiple features or fixes at any one time, but only has a single environment to test deployed code. This is leading to "crowding", where multiple in-progress features by different devs all want to be deployed to the same environment for testing. + +As of Spring 2022, following [ADR 018](https://github.com/HHS/TANF-app/blob/main/docs/Technical-Documentation/Architecture-Decision-Record/018-versioning-and-releases.md), the project needs more than one deployment environment in the `tanf-staging` space on Cloud.gov to ensure that there is a dedicated environment for release-specific features. ## Decision Deploy Environment | Cloud.gov Space | Cloud.gov Dev Access | Role | Deploys when ... | -------------------|-----------------|----------------------|--------------------------------------------------|---------------------------------------------------| -Dev | Tanf-Dev | Vendor & Gov | Deploy code submitted for gov review | Relevant github label assigned as shown below | -Staging | Tanf-Staging | Gov | Deploy code once gov-approved | Code merged to `raft-tech/TANF-app:develop` | -Production | Tanf-Prod | Gov | Deploy code tested in staging & ready for prod | Code merged to `HHS/TANF-app:master` | +Dev | Tanf-Dev | Vendor & Gov | Deploy code submitted for gov review | Relevant github label assigned as shown below | +Develop | Tanf-Staging | Vendor & Gov | Deploy code once gov-approved | Code merged to `raft-tech/TANF-app:develop` | +Staging | Tanf-Staging | Gov | Deploy code once gov-approved | Code merged to `HHS/TANF-app:main` | +Production | Tanf-Prod | Gov | Deploy code tested in staging & ready for prod | Code merged to `HHS/TANF-app:master` | ### Gitflow and Deployments We will be following the Gitflow process which is an industry standard. You can read more about it [in our ADR](./018-versioning-and-releases.md). I will just highlight the parts relevant for our deployment strategy. Release branches will be merged to `HHS/TANF-app:master` which will deploy to our production sites. Code merged to `raft-tech/TANF-app:develop` will be deployed to our staging sites. @@ -42,11 +45,12 @@ Within the dev space, there is no correlation for branch to environment as these * Code deploys automatically upon gov approval, but does not deploy immediately to prod, leaving room for further gov testing. Any mistakes that make it past gov review will not deploy immediately to prod. * Vendor dev team "crowding" should be reduced through this solution. * Only need to maintain/monitor vendor dev access to a single Cloud.gov Space using this solution -- least privilege, simplified account management. -* Frees up memory and disk space in the dev environment +* Frees up memory and disk space in the dev environment. +* Dedicated environment for release-specific features. **Risks** * None that we can see at this time ## Notes -- As of April 2022, merges into `HHS/TANF-app:master` do not deploy to any environment, since we are pending activation of the production space (#895). +- As of June 2022, CircleCI supplies environment variable key-value pairs to multiple environments (e.g. vendor's CircleCI deploys applications to dev and staging environments). The values from CircleCI are expected to be unique per environment, so until [#1826](https://github.com/raft-tech/TANF-app/issues/1826) is researched and addressed, these values will need to be manually corrected in cloud.gov immediately following the execution of the execution of the [`-deployment` CircleCI workflow](../../.circleci/config.yml) CircleCI workflow. This workaround applies to backend applications in the TDP staging environment. \ No newline at end of file diff --git a/docs/Technical-Documentation/Architecture-Decision-Record/009-git-workflow.md b/docs/Technical-Documentation/Architecture-Decision-Record/009-git-workflow.md index ae27754f0e..1d535c79b4 100644 --- a/docs/Technical-Documentation/Architecture-Decision-Record/009-git-workflow.md +++ b/docs/Technical-Documentation/Architecture-Decision-Record/009-git-workflow.md @@ -66,6 +66,7 @@ The proposed workflow below provides a remedy to these issues, as well as many o * When satisfied, the Government reviewer `approves` the PR and tags with the `ready-to-merge` and removes the `QASP review` label. 7. `abottoms-coder` (or his back-up) merges changes into `develop`. This includes: + * This will trigger a deployment to tanf-staging:develop * opening a PR from `develop` to `HHS:main` * updating the PR template to change `addresses` to `closes` so that issue [can be automatically closed when the Government merges](https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) * ensuring the CI/CD pipelines are green diff --git a/docs/Technical-Documentation/TDP-environments-README.md b/docs/Technical-Documentation/TDP-environments-README.md index 04f746de65..b8bd6a1458 100644 --- a/docs/Technical-Documentation/TDP-environments-README.md +++ b/docs/Technical-Documentation/TDP-environments-README.md @@ -25,11 +25,12 @@ ## Staging -Unlike Development, the Staging environment contains a single frontend and backend deployment. +The Staging environment contains two frontend and backend deployments. | Frontend URL | Backend URL | Purpose | | -------- | -------- | -------- | | https://tdp-frontend-staging.app.cloud.gov | https://tdp-backend-staging.app.cloud.gov/admin/ | Space for government users to test in a deployed, production-like environment | +| https://tdp-frontend-develop.app.cloud.gov | https://tdp-backend-develop.app.cloud.gov/admin/ | Space for government users to test in a deployed, production-like environment | ### Dependencies @@ -38,11 +39,14 @@ Unlike Development, the Staging environment contains a single frontend and backe **Cloud.gov AWS RDS `(tanf-staging)`** - `tdp-db-staging` - Stores application-level models (e.g. Users, Reports). +- `tdp-db-develop` - Stores application-level models (e.g. Users, Reports). **Cloud.gov AWS S3 `(tanf-staging)`** - `tdp-staticfiles-staging` - Stores static HTML/CSS for Django Admin. +- `tdp-staticfiles-develop` - Stores static HTML/CSS for Django Admin. - `tdp-datafiles-staging` - Stores the files uploaded by STTs (no real STT data to be stored in staging). +- `tdp-datafiles-develop` - Stores the files uploaded by STTs (no real STT data to be stored in staging). **Cloud.gov AWS S3 `(tanf-staging)`** diff --git a/docs/Technical-Documentation/diagrams/tdp-environments.drawio b/docs/Technical-Documentation/diagrams/tdp-environments.drawio index 56507d3215..443e492ac4 100644 --- a/docs/Technical-Documentation/diagrams/tdp-environments.drawio +++ b/docs/Technical-Documentation/diagrams/tdp-environments.drawio @@ -1 +1 @@ -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 \ No newline at end of file +7V1bl5u2Fv41WeucB89CCHF5zEwymbZJm2aStjlv2GAPiW0cjOf2648wCKMLAhsJ8KTTtdKxBmOz99a3L9qXV/Bq9fgu8Td3H+IgXL4yjeDxFXzzyjQd18b/ZgtP+YIF3HxhkURBvgQOC7fRc1gsGsXqLgrCLXVhGsfLNNrQi7N4vQ5nKbXmJ0n8QF82j5f0p278Rcgt3M78Jb/6dxSkd/mqi4zD+k0YLe7IJwOj+MvKJxcXC9s7P4gfKkvw7St4lcRxmv+2erwKlxntCF3y913X/LX8Ykm4Ttu84fnp+vP3bwDeXa2+//p58y50588Ts+DGvb/cFU9cfNv0iZAgiXfrIMzuYryClw93URrebvxZ9tcHzHO8dpeulvgVwL/Oo+XyKl7Gyf69cI6y//D6Nk3i72HlL/b+J3tHvE4r6/kPXuefr3jk+zBJw8fKUvG878J4FabJE76k+KtVkL6QPWih/PXDgZPAJZJ2V2GjTfjrF+KzKO99oDD+pSCymOA/3n/1bj5+u4TPH9Y/3K++D+2vE2DqJXiAQjewRAR3zSncE1wBYW2GsI55ISCtg0SkNRxybRfiCqUZEHCpEDMM8H4uXobLafzw9rBwSVM6TtK7eBGv/eX7ON4U9P0WpulTgUv+Lo1p6mMSJk//VF98zW524SDy+s1jcff81VPxapv6Sfo6Ayi8MFv62200I8vX0fJw/4BctI7XYb5S/N2Q8XIb75JZKKUVgVM/WYSp5EpYSGhGSalwJOHST6N7GjlFTN6/FT+X/1S5YBNH63RbufPHbOEgc8A0aKkjm/QgMfktD/JTfrcOIuUY3Ib98kv2WR9/Ecrae3+KNSAlJP4yWqwzNmMmhXg3XmYbLcI65nXxh1UUBLk8htvo2Z/u75ext6AJvjm6fIXeCBku3wncni5VZfExlDYS7fWJcYGRE1CkL14dx/ADR8kl8Xy+xaLHbnsVbCPSrQxnFaAmMBEtwRYRrgpqogM+VmHTMhVoJLEJYEkx8wCKaoHzMUr/IciIf89hExWvDqCZvSCY2QHsHNgS7ICnBew4NLM8WhQAYPibP1PxLvUbBA7DdaIuDVpdNmlLIi1gZNICYT/SgszepOVucfcNosd38eP6r+e3MAkX05sJD6ZpuMWfdB2E090ie/c68/HC++wrrYO9XPmLaL0YsYokO0CRhjQpBsGxK0hoD7r/wXH7v8NeRoNt5W6uDAJSBjW4Mt92qw251E9mp3GL8lEK96PqoBi0g3LwYg4+ChB5osb+J7suewi8RjZ7P5wGlnId35bVQnCFHLiuQvwIeOmTP8/Q4OOnPcJi9pjGzc3tiDG1lFoloAoQdMeOo0TqKtz7/Pr3a7yy24YJdmeN7CPxNwlW0XrLs265jDbbsNn9qN9EbMRt/4PXF4kfROEhtlZs4NoN1t6P8Vjb1eDdGEcQ+nG0uTBoWGO2Eu75SukvuTV7jO/D8f/62rYvpXHSZsT0WiImuaNuMxe4tGB53oXntDJ0uVtByMgo5O+VPzd3r6MDUzb7UX3EpUrz9QA8Hwq1sVcUCdYdkzTYTFZ+ZpyPVmWQvavGDLcMj+LFpKMhTlhq0e/QqE8sPk7Vt91XATbzKGDTZTB63tXV9fVZY90J0W4aVNjTPfZ6dOT1LD72Eky3eFvXD4I8dDAJws0yzmi0zIBpS4As3oQYv2x/lVlE6+k2+19mEY8W0cotrMYIdiyXhjSzG6T1gGFEIY4Dw4aAsNLEK8268sN1BCzbgpsG1/ckdEOAOQjpA3xsPor58VMGM/MkXh287XNws8kGU4IwBiBJOiOGFI/jXcGud1F6s5tyzGpwp/3tJs8WmkePGfCocIvL9BLivfBesSvwil1tXrEjRWHNB3v0UY0p925LtM7EETp0cBgApxG065zj/XUfwyTCJM02Z0egLVPQGq1IexQ4Cw1aJImDXes1M9fD4hhdsyvLx9DeEFtwj8bjP0wie02NyWe4Hd1Wci/EvEUjQENvcJtPse1GI5hzZHyu9FnrzrxNfYdeQ8MUJ4gmEegn8ppReopCceznQEOOd9z1oOl6Q/gctdczkfLG78NcTxItNXvlvGFM4+/+YJ/2wEeMxSUUKQJjw6R1qBpoJvHbJ+EN9AG1yTO7sKSvomS2DK/4tMYBbGnA5HqWHs9QxnRmhHbQb10iGJlNbLq08nAd2KA9FCUYVxVzeYFSm5oEIs8lD9lmYhe2Jcd0mxFl1AumOyQGeWZpyyrtaCurdxh5YINI/5jylB0mOAd57C3TV6vgi6A+9IVDoS8WIwtWwTeDY8NtQF8hRiryTzpArdkSapFyqO3Gfoc3Ws4CzchxlxpDFNDBmfEfBBF5q7DtahnvgotFnGUKf/n0Hv/7Kd5lDOlqdPJpUOZsJnLMA3tqI0V1cC6AWWCAcvEEaNmvpSrQIHqxcnBcI2GM5vMv9af73XhlC841Qj/AN3tIsPxnzxRi63AeJyvsgS/xs11O8V6xF2lO4/0lszt/vQgFyYXjQUIik2qyfLrhHrkRY8eXpbl9BEs7JXe/mNBo9x0/9Dk2k6UDPYlv1/hui6THNERFTxDDawvc//bX7P1ybbxeLf98/XFuriZ87f/nEmzga/yXMgqYV/Zsw+Q+mo0baGCdDj8FaCAioUTCISXIY9E3NZm0VJ3JhfJE6TM6pJGctwizqxsw6uRc7l6MFkcL2PGnv2xWDpuwr+qUhm0fYcsjaJANSBhqI2hCcCSBKMGZSFHnuNmMGgktpYnVnsc4n2qOQQANhRO7Lygku6/GNRUFFs7CI4VMHjAU1OaIYneeLncUDpKFdDosw9a138pjZCeBqcswvOlIuuF6PccRkM/7fh8vonW+2zruMwW7RhDHKRPqh4rjQN48/+M6s8qrOIVVUbiMN6twz+LtnmgZmuehgqy11h7uCdTYP3ZZu7HLvb00m83n1aU8qPCf1F/PJ/i+/yV3wd8+v1F+AccvTOOUtfGqCFcYeVU4LJbaq0WRTNAgoUAK2ENnS3DoXDYhUs5v0qyswu9buPfD2LhPVtWVxX6iGaZpuJ3s7RGGKds7f5P9OntaRphKCWw+OZrm9Hw/LRf82ffFnsp/7FJ8m5CwN0ddgNSQ3WLMQVfQFUfXzouu3z7/EX358s+1+QD+d/98+9vTt0nDYVMhvAPqKCIqjTrKUh7urPFoGRZ6bH8SdZEMIcdKr19yitpLRbDGIDfh5WD+4rGWiWWJhaLOMmGvd2GDWwjcbtcXpadaLR9Bbp0E1QM/9V8EprPl10JMF7Q502ZNOXJMH1m/qw4oYbZVDePqd1PWTFZaTOENMU+w5YkRdLL118E0fuSYOILcRKvHQh+h9jPlXU9V2Ssnnw+d2KetKsLCXrp6HPBGvWSzrRhrelIcrS+R+HNq9SVzPVLcd0Isa/Iyj16LytrG9I9sNibM3dJr2rWNOWmy548uK2N2BEINlteRlt2xlmCDpanJsuNjWpnGygyskSksEw6nsMSk43vXUMreB+BpDIRjNT1yByacN0zXxl67r1pt+/iRTT80GLL1AEeC4bHXnxt47h7iy82PKPl6u4W/T9wfoYluy9yrMTSdbqxNl1fItCy06b4htBdpsv31DeMCWNhNd4p/6RtqDuk11Fspc2pOwDblXn0V6sTE6EcC1Hs6qo/tLb5VQNXoGovhwFpcgxsOFn+YSFlcyb4EdHjCsRaX3eNZkNji6n+ijK6JL5p6PzUaLE7Lw6CuXqjTUIgJTSS7XpOhI8/0/tfQGUBAOUPH9S4OVo5FQlx9GTryiNqQhs7pBsu/oVkhBOoNSPG1RFXbaCwqnrWNBlfxhFd1ttEPTIUxEI61jZzBe2KQL/QCjCPUk4tVF81RbhyxB/BNyRFyY0qTcWT+axyNTUBZ48hxh4wCmf2k4p1HFKinYWPnYlS5isuApNuuxqgai23AGlWD2wakg8iY+trY7Dlo+/GbpERNA6H4Y2Q+zb9sgMql+B/yB9sk/c/ntj2FdUn/xaf8fIn/Nltg6PHTrPUl/iNxTLua4V/XAPeMMkI9prWwA0Uzw+1eMYqvAaSTcF8C2e3Rkd0+s4pAVHzf5q5ZxVnBSFJqEV/CTKfU1kj3AOYLC8B2j02U3m3+tHah+/hXYifby1+v//5k/T4ZJlu8kxdy3JwTSRNPRnxP3DRu202DOu6Rk3wPDzKwaKr1JYRCdTbJW+cvVPYgQuUNIFTy8+lRDvk4Uqo0C5CwtAAOIT8u013eaQiIAMOWvkFTREScSlLmPY/HqnC5c97BD0zaOPubJA52szSK1wd//zRnfzbzvDpn//ApP5+/D9gORKKMeH0OP7AtKWj33obr9Pbw9WOpTwdpYPSU8ArK0wwWINSfbsifVBL6qaLB+YYhAKpLCqtGIUxR6FVbZyJgd2oqfh7b8JRBlNkLvv5NXEyncYoRNm9amvuACJN2xGCPEGxNLfKA7dDzYWxZZ1F1eNQUEX0haGS3QSPhQZA+NCKSNcCIA3pLN+3owdt9A6NtRFYDMHR0ABpispL9NUTGmemWKpng0NAHy8A4n4hHBxHvTaNZzMg5h3V7FGV7cBYgMbbrJ9qzb5D1NxBoUAAumIx/u2WynTJ9SrhYEysZ2W63wPh2e/kYrfonpfskhlTQovyMrBPIhAFFaSq9HtgCyJuFr/++xQvv4vt95Ioj9zhCRYG/vdu/yL5AjK+M0oymSFEYieETFHQMLVOkq4xi8+kUMoo3L/j44h/Jwl9Hz74Qd34KxrFTWQXRPyDaYfoYZ3WaLjnqxvzlLPZaxg090JHF24ZUee56dIxdUg75IMIHmZ7nNfZW49dArHRqnh7C64SyQf4hXXH0TfKVzpu0kEexxMxfjXdAG0DD407lWNgF9MHwhWF4DcEInYMWBVB2deV53Rw7q20OAyB1qAPDI7DIFNU2eKesNGigSTX7G+OXBHu06EjF4iPMYCC1VWOJfAk6ULyIgRvAYmeACWLJvU7cAGhk51oKEfhwrlUTvD79PKoZkNVPxa1BXHYCM2DjVm1tRO6Eu+UB99E6gvvGTalLbJCjKRhoMbk8XtP9DekX0nR+hvjGhh9CTOFMvGL8z8qPeJd7ROZwWYzU2RzGtptt0EeYHYfn9TEej++gcHOzj3NF6c1u2llB1cPZIvGDCDOHiamo0E8mEu6c4UK66OUOISwdhG65ridZhkQ7NesxS3mdSh1oM1qhFEXV6sdiqpxMxa2wayguCYHs4T473xk13KscEQhtxzwzvLeHRyKlpRb6re5eOwEfAWm2HtO8c9oWVNxGpebped/6RU6Rt5XhFTZPAaQD8aAbXBU3Zqakot4GmgJbXl72IsyqXrBE/Wz5jmnK/KFuzZx2dmvTlSRnML2dyLAag8Qw6IFfqmYW00Zt2Ye+j+MakxOF3EG9ipLZMrzqHkOt3WHH5PpDLvMKCMYQ9+t12jzpXkzGELAtbn6tqKRJV9aQ8ABi+JPF3sxhuriCGMeNVbDOcRY/fzLVQR2SeXiN6lC9NhSjKju4nEu2UZfOIBRXQVVruMWfdB2E012WypBFbo39WEbDXwevKlkOY9Cnsi2owly2HJP27icd3XvyfcicBzpo0IMudfha3Df5NO0wERhJy2W02YbNOuCIoC9/Xol/tAaDEduXuD+tLJvgx5YbTWunZxGlnFUkbdM4acGQMdGfDYgigVkkUtIqus8J0yzkvceHG5Ncd7zrKCk3FGectFSI6genipGRbcSKNHUK5j6nl/QebuNjSVj595Nkr3RH4MSwQ+l7rIQQQuXwLQNOCf5qN8Fb7Xd5nGfMESGhKIibBmCt2aI690wVp6iaC7X0cLW1bi3lQlmTW6rugaFy4OMPFaaz2TM3nGb0P1RKWKo6pZRZ5cQ+F/TQwSQueUM1zVUBhmL1IUfDNnbLmCIMpxstbb149a0pT7I13CGmDPB+3shsDbb7JWnj1YetId5enYaeaT0XL/+mtzmBtoNuIb2ttoaIpqrw4/NtEH126jg97GM+t3Jk+xhwQ1SGHm0ETP7sUJ+FMndnoTjhfuoia1+8ebBQoJ4iXMsRtG63BDS32M49yojuDNLf+tRuLjxat8Ix6SStZnNEeeVnN44N0plXJeVbV5Wpn7HYjfLyDLwXvFestkpf/fjvjiqFT5IfiUpR5vSy1Sy2oKRLqFS4BOdTyC6bAM7HfIQjr8882sMdk/QY6ZGNM6VEPk+2CqL7agMazJB8zmbZUbdywUtnk6i/si42CVsS/Hy9goDBbpUemwXJhtS12ir59LSfcauIPMNeEQ3yfPr05jZPJxXvF8yvffbL+W4WtuYUtcQrje65aLfosqUGOUBg59BalsA/NwVER0Cb6PPnZxzRhSHCCp1pppT+xCSrK3AYp8J1G9wKydiUk8aEtk1QoMYeCjhQrCmeeGyTmNTRDY/YeaEsOB6dEKG6JZJAjl5qyivAgm5TwXFgWtLwuLSruLpBQ6f44qJMAJmBOXT4nZ0Ej+hjNEHFAtuq0JC/wXFMLp9cdlTH38DwLrzKD1Oey5ZMtO5nwT45ZImruemZwGo670I7GY795GV2QtLwh1CMAHwOCf+Nn5Dh2ABC0KNrYMndO3fFgX0xeZis2FM6jNd326yq1rHp1hpnqK+xP4bFKhHzwvQsABwb++mZvd6nShH0CK8p76yOAR9VMadsE6lQItAx6BaEiis5lSJK/TxBYaFDw4jpM413AYPx+x2r7dxpFSEv4aRMwOtudthWkBcA1XKjnyCXYMtwzKilPDtnXTRKWVeQS0z2mnTlcqbQSyC6PTaiD5LRINTfjWaD+AEEI37EF3odjYRudG6Y51Mn26dlp3WSUTbLFJmOAJF7nbLekGc6JkO7W0M3NVvCa7kl6uypfqcX243TixGSvaFzEqmYNvIY7UsQOYkD168c5gbX2OXQg0OIobxF81jF0ISUIF4YhnU2wojOQhg9u39hJDSsmVI2IhuGneiOnMFtGJMP3xyyJaR+zXCufSceAIOdqmcdyv+GK8Xk+7dwhD/vrFSXmVqFBBXpNUmpSBvVW6RSnHf+im03t9Uygaj4lW3X0ILq+GUSx2kV3TGF7j7EQRbPfft/ \ No newline at end of file diff --git a/docs/Technical-Documentation/diagrams/tdp-environments.png b/docs/Technical-Documentation/diagrams/tdp-environments.png index 16b7c3fc2a..781fac67a9 100644 Binary files a/docs/Technical-Documentation/diagrams/tdp-environments.png and b/docs/Technical-Documentation/diagrams/tdp-environments.png differ diff --git a/tdrs-backend/tdpservice/settings/cloudgov.py b/tdrs-backend/tdpservice/settings/cloudgov.py index 9f4ecc306a..99290892fc 100644 --- a/tdrs-backend/tdpservice/settings/cloudgov.py +++ b/tdrs-backend/tdpservice/settings/cloudgov.py @@ -40,18 +40,21 @@ class CloudGov(Common): cloudgov_space = cloudgov_app.get('space_name', 'tanf-dev') cloudgov_space_suffix = cloudgov_space.strip('tanf-') cloudgov_name = cloudgov_app.get('name').split("-")[-1] # converting "tdp-backend-name" to just "name" + services_basename = cloudgov_name if ( + cloudgov_name == "develop" and cloudgov_space_suffix == "staging" + ) else cloudgov_space_suffix database_creds = get_cloudgov_service_creds_by_instance_name( cloudgov_services['aws-rds'], - f'tdp-db-{cloudgov_space_suffix}' + f'tdp-db-{services_basename}' ) s3_datafiles_creds = get_cloudgov_service_creds_by_instance_name( cloudgov_services['s3'], - f'tdp-datafiles-{cloudgov_space_suffix}' + f'tdp-datafiles-{services_basename}' ) s3_staticfiles_creds = get_cloudgov_service_creds_by_instance_name( cloudgov_services['s3'], - f'tdp-staticfiles-{cloudgov_space_suffix}' + f'tdp-staticfiles-{services_basename}' ) ############################################################################ @@ -62,7 +65,7 @@ class CloudGov(Common): # env_based_db_name = f'tdp_db_{cloudgov_space_suffix}_{cloudgov_name}' - db_name = database_creds['db_name'] if cloudgov_space_suffix == "prod" else env_based_db_name + db_name = database_creds['db_name'] if (cloudgov_space_suffix in ["prod", "staging"]) else env_based_db_name DATABASES = { 'default': { @@ -128,7 +131,7 @@ class Development(CloudGov): class Staging(CloudGov): """Settings for applications deployed in the Cloud.gov staging space.""" - ALLOWED_HOSTS = ['tdp-backend-staging.app.cloud.gov'] + ALLOWED_HOSTS = ['tdp-backend-staging.app.cloud.gov', 'tdp-backend-develop.app.cloud.gov'] LOGIN_GOV_CLIENT_ID = os.getenv( 'OIDC_RP_CLIENT_ID', diff --git a/terraform/staging/variables.tf b/terraform/staging/variables.tf index 90282c4f92..824c3ebf65 100644 --- a/terraform/staging/variables.tf +++ b/terraform/staging/variables.tf @@ -33,6 +33,6 @@ variable "cf_password" { } variable "cf_app_name" { - type = string + type = string description = "name of app" }