From 34b73867c342f60b19c2fb62f74771092f4996c5 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 14 Feb 2024 13:57:04 -0700 Subject: [PATCH 01/37] Added caching architecture doc --- docs/architecture/decisions/0025-caching | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/architecture/decisions/0025-caching diff --git a/docs/architecture/decisions/0025-caching b/docs/architecture/decisions/0025-caching new file mode 100644 index 000000000..a1f29d957 --- /dev/null +++ b/docs/architecture/decisions/0025-caching @@ -0,0 +1,37 @@ +# 24. Production Release Cadence + +Date: 2024-14-02 + +## Status + +In Review + +## Context + +We experienced problems with our caching infrastructure early in our November launch. In response, we turned off caching across the application. We would like to examine ways to utilize caching again without incurring the same issues. + +The Incident: +Originally, Cloudfront was utilized to provide caching capabilities in our application. All incoming HTTP requests first go through a Cloudfront endpoint, which has a caching infrastructure enabled by default. Cloudfront then decides whether to pass each request to our running Django app inside cloud.gov or if it will respond to with cached data. The big problem with this feature is Cloudfront's caching has a default timeout of 24-hours, which we cannot control. This led to issues on our November launch; Incidents reported include the following... + - Users couldn't utilize login.gov properly and had to wait a day before they would be able to login. This was traced back to the 24-hour cache timeout. + - Changes made by admins would not be reflected in the app (due to the cached data not updating) + +To resolve these issues, we added "no cache" headers throughout our application. Currently, every single HTTP response that comes from Django says "Cache control: no cache" in the headers, which instructs Cloudfront not to cache the associated data. This effectively removes Cloudfront caching for us. + +Although we could leave our architecture as-is, we decided to investigate options for improving our use of caching (instead of just disabling it completely). + +## Considered Options + +**Option 1:** Cache static resources using Whitenoise + +Caching static resources should pose little risk to our application's functionality. Currently, every static resource from /public/... is hitting our Django application inside of Cloud.gov. We already use a Django plugin called whitenoise that can do hash-based linking to static assets so that they can be cached forever by Cloudfront. (If the content changes, then the hash changes, then it results in a different filename.) + +See ticket #1371 for more information. + + +## Decision + +(We are going to test whether using Whitenoise improves our performance significantly enough to move forward with it) + +## Consequences + +(TBD) From f27ac0e54c0bfada38d4b214b5068df6b1fc3cba Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 14 Feb 2024 14:00:31 -0700 Subject: [PATCH 02/37] ticket link --- docs/architecture/decisions/0025-caching | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/architecture/decisions/0025-caching b/docs/architecture/decisions/0025-caching index a1f29d957..cf3008756 100644 --- a/docs/architecture/decisions/0025-caching +++ b/docs/architecture/decisions/0025-caching @@ -8,9 +8,9 @@ In Review ## Context -We experienced problems with our caching infrastructure early in our November launch. In response, we turned off caching across the application. We would like to examine ways to utilize caching again without incurring the same issues. +We experienced problems with our Cloudfront caching infrastructure early in our November launch. In response, we turned off caching across the application. We would like to utilize caching again without incurring the same issues. -The Incident: +Details: Originally, Cloudfront was utilized to provide caching capabilities in our application. All incoming HTTP requests first go through a Cloudfront endpoint, which has a caching infrastructure enabled by default. Cloudfront then decides whether to pass each request to our running Django app inside cloud.gov or if it will respond to with cached data. The big problem with this feature is Cloudfront's caching has a default timeout of 24-hours, which we cannot control. This led to issues on our November launch; Incidents reported include the following... - Users couldn't utilize login.gov properly and had to wait a day before they would be able to login. This was traced back to the 24-hour cache timeout. - Changes made by admins would not be reflected in the app (due to the cached data not updating) @@ -25,7 +25,7 @@ Although we could leave our architecture as-is, we decided to investigate option Caching static resources should pose little risk to our application's functionality. Currently, every static resource from /public/... is hitting our Django application inside of Cloud.gov. We already use a Django plugin called whitenoise that can do hash-based linking to static assets so that they can be cached forever by Cloudfront. (If the content changes, then the hash changes, then it results in a different filename.) -See ticket #1371 for more information. +See ticket [#1371](https://github.com/cisagov/manage.get.gov/issues/1371)for more information. ## Decision From af3d2a9f28e9863c5d2ef2901ee02f46774e6522 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 27 Feb 2024 23:52:29 -0700 Subject: [PATCH 03/37] doc update (still in progress) --- docs/architecture/decisions/0025-caching | 31 ++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/architecture/decisions/0025-caching b/docs/architecture/decisions/0025-caching index cf3008756..bb182bb41 100644 --- a/docs/architecture/decisions/0025-caching +++ b/docs/architecture/decisions/0025-caching @@ -27,11 +27,38 @@ Caching static resources should pose little risk to our application's functional See ticket [#1371](https://github.com/cisagov/manage.get.gov/issues/1371)for more information. +**Option 2:** Leave things as-is (depending on what is found in cost/benefit analysis) + + +## Cost/Benefit Analysis + +### Analysis Procedure + +STEP 1 - Preliminary Analysis: ____ + +STEP 2 - Full Analysis: +1- Add caching capability to a sandbox using the following steps +2- Enable caching with Whitenoise (see ____) +3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: lighthouse <> might be useful for this) + +### Analysis Outcome +Preliminary analysis suggest that implementing caching will result in negligible improvements to our application load time +[CITE DATA] ____ + +Attempting to implement a more thorough analysis (Step 2), incurred more overhead than expected, due to lack of information and lacking documentation. Therefore, we have shelved STEP 2 - Full Analysis, documenting what we understand thus far about implementation steps in case we wish to pick it up again in the future. + +We feel confident that our preliminary analysis has given us enough information to move forward with the following architectural decision; + ## Decision +At this time, we have decided not to move forward with a caching update. Implementing caching using Whitenoise is not currently worth it for the following reasons; +- Minimal gains: We would only be caching static files (total load time gain estimated to be….) +- Risks: Incurs risk of unforeseen loading issues (we can’t entirely rule out that we won’t run into issues like we did in our xx-xx-xx incident). Although we don’t think static files should pose a problem, due diligence would call us to monitor for any unforeseen issues that might arise, which adds cost to this project that doesn’t seem proportional to the gains. +- Maintenance: We would have to provide custom settings in cloudfront (coordinated through Cameron) for any sandboxes and other environments where caching is enabled. If we move down the route of utilizing CDN, it would be good for every environment to have this service enabled so our dev environments reflect stable settings. This could possibly introduce some overhead and maintenance issues. (Although further investigation might reveal these to be negligible.) + +Overall, it is recommended that we SHELVE this caching endeavor for a future scenario where we have exhausted other (likely more lucrative) options for performance improvements. If we then still need to make improvements to our load times, perhaps we can revisit this and examine caching not only static files, but other resources as well (with caution). -(We are going to test whether using Whitenoise improves our performance significantly enough to move forward with it) ## Consequences -(TBD) +We will continue to allow the minimal loading overhead by leaving caching off. From 28fe444561c604db530cc7bb5406d52ad080bec5 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 18:46:37 -0700 Subject: [PATCH 04/37] caching doc update --- docs/architecture/decisions/0025-caching | 53 ++++++++++-------- .../doc-images/caching-average-load-times.png | Bin 0 -> 444869 bytes .../doc-images/caching-rtr-logs.png | Bin 0 -> 204640 bytes 3 files changed, 30 insertions(+), 23 deletions(-) create mode 100644 docs/architecture/doc-images/caching-average-load-times.png create mode 100644 docs/architecture/doc-images/caching-rtr-logs.png diff --git a/docs/architecture/decisions/0025-caching b/docs/architecture/decisions/0025-caching index bb182bb41..1b4699134 100644 --- a/docs/architecture/decisions/0025-caching +++ b/docs/architecture/decisions/0025-caching @@ -27,31 +27,22 @@ Caching static resources should pose little risk to our application's functional See ticket [#1371](https://github.com/cisagov/manage.get.gov/issues/1371)for more information. -**Option 2:** Leave things as-is (depending on what is found in cost/benefit analysis) - - -## Cost/Benefit Analysis - -### Analysis Procedure - -STEP 1 - Preliminary Analysis: ____ - -STEP 2 - Full Analysis: -1- Add caching capability to a sandbox using the following steps -2- Enable caching with Whitenoise (see ____) -3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: lighthouse <> might be useful for this) - -### Analysis Outcome -Preliminary analysis suggest that implementing caching will result in negligible improvements to our application load time -[CITE DATA] ____ - -Attempting to implement a more thorough analysis (Step 2), incurred more overhead than expected, due to lack of information and lacking documentation. Therefore, we have shelved STEP 2 - Full Analysis, documenting what we understand thus far about implementation steps in case we wish to pick it up again in the future. - -We feel confident that our preliminary analysis has given us enough information to move forward with the following architectural decision; +**Option 2:** Leave things as-is (we had some discussion on whether or not caching staic pages will make enough of a difference to be worth the effort) ## Decision -At this time, we have decided not to move forward with a caching update. Implementing caching using Whitenoise is not currently worth it for the following reasons; + +We decided on Option 2 - leave things as-is (for now). + +Preliminary analysis suggest that implementing caching on static pages will result in negligible improvements to our application load time. A quick look at Kibana logs suggests most of these resources take less than 10ms to load... +![Kibana RTR Logs](../doc-images/caching-rtr-logs.png) + +If we look at average load times in Kibana, it looks like we are doing great for load times in stable (using the rtr.response_time_ms metric), staying under 200ms (in the last 4 weeks) and usually hovering around 40-80ms. Some google searching suggests that "an ideal page load time is between 0-2 seconds, but 3 seconds is also considered to be an acceptable score. Anything above 3 seconds increases the likelihood of visitors leaving your site." (Quote shamelessly copied from Sematex) +![Kibana Average Load Times Graph](../doc-images/caching-average-load-times.png) + +NOTE: While we considered implementing caching in a sandbox (See footnote) in order to examine risks and benefits of OPTION 1 in more detail, this incurred more overhead than expected (mainly due to poor documentation). Therefore, we decided it was not worth the investment. + +Therefore, implementing caching using Whitenoise is not currently worth it for the following reasons; - Minimal gains: We would only be caching static files (total load time gain estimated to be….) - Risks: Incurs risk of unforeseen loading issues (we can’t entirely rule out that we won’t run into issues like we did in our xx-xx-xx incident). Although we don’t think static files should pose a problem, due diligence would call us to monitor for any unforeseen issues that might arise, which adds cost to this project that doesn’t seem proportional to the gains. - Maintenance: We would have to provide custom settings in cloudfront (coordinated through Cameron) for any sandboxes and other environments where caching is enabled. If we move down the route of utilizing CDN, it would be good for every environment to have this service enabled so our dev environments reflect stable settings. This could possibly introduce some overhead and maintenance issues. (Although further investigation might reveal these to be negligible.) @@ -61,4 +52,20 @@ Overall, it is recommended that we SHELVE this caching endeavor for a future sce ## Consequences -We will continue to allow the minimal loading overhead by leaving caching off. +We will forgo (negligible) load-time improvements by leaving caching off. + +## (Footnote - How to implement caching) +Here are notes for implementing caching using whitenoise should we decide to pick this up again in the future; +1- Add caching capability to a sandbox using the following steps (or ![following documentation for command line](https://cloud.gov/docs/services/external-domain-service/)) + - Log-in to the cloud.gov website + - Navigate to "Services" (https://dashboard.fr.cloud.gov/services). Click "Add Service"... + - Choose "Marketplace Service" + - For the fields, select Cloud Foundry, Organization = "cisa-dotgov", Space = "[your sandbox. eg. "nl"]". Click "Next" + - For the Service, select "External Domain". Click "Next" + - For the Plan, select "domain-with-cdn" (here is ![documentation on CDN](https://cloud.gov/docs/management/custom-domains/)) + - If you choose to bind the app, a JSON string will be required (we believe this should do it: {"domains": "example.gov"}, where "example.gov" is replaced with the domain name you want to use for this application) + Before you can continue, work with Cameron to setup the DNS in AWS (use the following documentation linked below): + https://cloud.gov/docs/services/external-domain-service/ + - Once the DNS is setup, you *should* be able to continue. We did not test this. +2- Enable caching with Whitenoise (see https://whitenoise.readthedocs.io/en/latest/django.html#add-compression-and-caching-support) +3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: ![lighthouse](https://developer.chrome.com/blog/lighthouse-load-performance) might be useful for this) diff --git a/docs/architecture/doc-images/caching-average-load-times.png b/docs/architecture/doc-images/caching-average-load-times.png new file mode 100644 index 0000000000000000000000000000000000000000..6dff98381580c75ff6c4859ccd5190504f7a5da3 GIT binary patch literal 444869 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 z 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

yJyee^@~8qO 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 W@Kb+pb6hb2fgj1i#r}dVJ^sI|R{>@K literal 0 HcmV?d00001 diff --git a/docs/architecture/doc-images/caching-rtr-logs.png b/docs/architecture/doc-images/caching-rtr-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..2135f07c009e2a510e6fdaccfbd98f181607a24f GIT binary patch literal 204640 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%0DX*`!3Xt-JFJPAQ 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

sF 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 ^bAIYqFo92#8m?%zPMiiiRwVL+& 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 literal 0 HcmV?d00001 From b896a99a13f043871e1fc859135d4a59ecdf16fc Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 18:48:12 -0700 Subject: [PATCH 05/37] minor update --- docs/architecture/decisions/0025-caching | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/architecture/decisions/0025-caching b/docs/architecture/decisions/0025-caching index 1b4699134..455df6590 100644 --- a/docs/architecture/decisions/0025-caching +++ b/docs/architecture/decisions/0025-caching @@ -67,5 +67,5 @@ Here are notes for implementing caching using whitenoise should we decide to pic Before you can continue, work with Cameron to setup the DNS in AWS (use the following documentation linked below): https://cloud.gov/docs/services/external-domain-service/ - Once the DNS is setup, you *should* be able to continue. We did not test this. -2- Enable caching with Whitenoise (see https://whitenoise.readthedocs.io/en/latest/django.html#add-compression-and-caching-support) -3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: ![lighthouse](https://developer.chrome.com/blog/lighthouse-load-performance) might be useful for this) +2- Enable caching in the code with Whitenoise (see https://whitenoise.readthedocs.io/en/latest/django.html#add-compression-and-caching-support) +3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: ![lighthouse](https://developer.chrome.com/blog/lighthouse-load-performance) might be useful for this step) From a00c771bcca145398a1d982127222f89f730e181 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 20:07:10 -0700 Subject: [PATCH 06/37] Added .md extention. Fixed spelling error (staic -> static) --- docs/architecture/decisions/{0025-caching => 0025-caching.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/architecture/decisions/{0025-caching => 0025-caching.md} (100%) diff --git a/docs/architecture/decisions/0025-caching b/docs/architecture/decisions/0025-caching.md similarity index 100% rename from docs/architecture/decisions/0025-caching rename to docs/architecture/decisions/0025-caching.md From b61370e4c4d61e9fa35894f0c02fb35978b974d2 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 20:07:19 -0700 Subject: [PATCH 07/37] Fixed spelling --- docs/architecture/decisions/0025-caching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/decisions/0025-caching.md b/docs/architecture/decisions/0025-caching.md index 455df6590..54600211d 100644 --- a/docs/architecture/decisions/0025-caching.md +++ b/docs/architecture/decisions/0025-caching.md @@ -27,7 +27,7 @@ Caching static resources should pose little risk to our application's functional See ticket [#1371](https://github.com/cisagov/manage.get.gov/issues/1371)for more information. -**Option 2:** Leave things as-is (we had some discussion on whether or not caching staic pages will make enough of a difference to be worth the effort) +**Option 2:** Leave things as-is (we had some discussion on whether or not caching static pages will make enough of a difference to be worth the effort) ## Decision From b9bebef6d56903ef25a8bf9322469a55926859df Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 20:10:43 -0700 Subject: [PATCH 08/37] Hyperlinks cleanup --- docs/architecture/decisions/0025-caching.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/architecture/decisions/0025-caching.md b/docs/architecture/decisions/0025-caching.md index 54600211d..ef8717dd4 100644 --- a/docs/architecture/decisions/0025-caching.md +++ b/docs/architecture/decisions/0025-caching.md @@ -25,7 +25,7 @@ Although we could leave our architecture as-is, we decided to investigate option Caching static resources should pose little risk to our application's functionality. Currently, every static resource from /public/... is hitting our Django application inside of Cloud.gov. We already use a Django plugin called whitenoise that can do hash-based linking to static assets so that they can be cached forever by Cloudfront. (If the content changes, then the hash changes, then it results in a different filename.) -See ticket [#1371](https://github.com/cisagov/manage.get.gov/issues/1371)for more information. +See ticket [#1371](https://github.com/cisagov/manage.get.gov/issues/1371) for more information. **Option 2:** Leave things as-is (we had some discussion on whether or not caching static pages will make enough of a difference to be worth the effort) @@ -37,7 +37,7 @@ We decided on Option 2 - leave things as-is (for now). Preliminary analysis suggest that implementing caching on static pages will result in negligible improvements to our application load time. A quick look at Kibana logs suggests most of these resources take less than 10ms to load... ![Kibana RTR Logs](../doc-images/caching-rtr-logs.png) -If we look at average load times in Kibana, it looks like we are doing great for load times in stable (using the rtr.response_time_ms metric), staying under 200ms (in the last 4 weeks) and usually hovering around 40-80ms. Some google searching suggests that "an ideal page load time is between 0-2 seconds, but 3 seconds is also considered to be an acceptable score. Anything above 3 seconds increases the likelihood of visitors leaving your site." (Quote shamelessly copied from Sematex) +If we look at average load times in Kibana (here is ![the Kibana page with preloaded query](https://logs.fr.cloud.gov/app/visualize#/create?_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logs-app*',key:'@cf.app',negate:!f,params:(query:getgov-stable),type:phrase),query:(match_phrase:('@cf.app':getgov-stable)))),linked:!f,query:(language:lucene,query:''),uiState:(),vis:(aggs:!((enabled:!t,id:'1',params:(customLabel:'Average%20Response%20Time%20in%20ms',field:rtr.response_time_ms),schema:metric,type:avg),(enabled:!t,id:'2',params:(drop_partials:!f,extended_bounds:(),field:'@timestamp',interval:d,min_doc_count:1,scaleMetricValues:!f,timeRange:(from:now-20d,to:now),useNormalizedEsInterval:!t),schema:segment,type:date_histogram)),params:(addLegend:!t,addTimeMarker:!f,addTooltip:!t,categoryAxes:!((id:CategoryAxis-1,labels:(filter:!t,show:!t,truncate:100),position:bottom,scale:(type:linear),show:!t,style:(),title:(),type:category)),grid:(categoryLines:!f),labels:(show:!f),legendPosition:right,seriesParams:!((data:(id:'1',label:'Average%20Response%20Time%20in%20ms'),drawLinesBetweenPoints:!t,lineWidth:2,mode:stacked,show:!t,showCircles:!t,type:histogram,valueAxis:ValueAxis-1)),thresholdLine:(color:%23E7664C,show:!f,style:full,value:10,width:1),times:!(),type:histogram,valueAxes:!((id:ValueAxis-1,labels:(filter:!f,rotate:0,show:!t,truncate:100),name:LeftAxis-1,position:left,scale:(mode:normal,type:linear),show:!t,style:(),title:(text:'Average%20Response%20Time%20in%20ms'),type:value))),title:'',type:histogram))&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-2w,to:now))&indexPattern=logs-app*&type=histogram)), it looks like we are doing great for load times in stable (using the rtr.response_time_ms metric), staying under 200ms (in the last 4 weeks) and usually hovering around 40-80ms. Some google searching suggests that "an ideal page load time is between 0-2 seconds, but 3 seconds is also considered to be an acceptable score. Anything above 3 seconds increases the likelihood of visitors leaving your site." (Quote shamelessly copied from Sematex) ![Kibana Average Load Times Graph](../doc-images/caching-average-load-times.png) NOTE: While we considered implementing caching in a sandbox (See footnote) in order to examine risks and benefits of OPTION 1 in more detail, this incurred more overhead than expected (mainly due to poor documentation). Therefore, we decided it was not worth the investment. @@ -58,7 +58,7 @@ We will forgo (negligible) load-time improvements by leaving caching off. Here are notes for implementing caching using whitenoise should we decide to pick this up again in the future; 1- Add caching capability to a sandbox using the following steps (or ![following documentation for command line](https://cloud.gov/docs/services/external-domain-service/)) - Log-in to the cloud.gov website - - Navigate to "Services" (https://dashboard.fr.cloud.gov/services). Click "Add Service"... + - ![Navigate to "Services"](https://dashboard.fr.cloud.gov/services). Click "Add Service"... - Choose "Marketplace Service" - For the fields, select Cloud Foundry, Organization = "cisa-dotgov", Space = "[your sandbox. eg. "nl"]". Click "Next" - For the Service, select "External Domain". Click "Next" @@ -67,5 +67,5 @@ Here are notes for implementing caching using whitenoise should we decide to pic Before you can continue, work with Cameron to setup the DNS in AWS (use the following documentation linked below): https://cloud.gov/docs/services/external-domain-service/ - Once the DNS is setup, you *should* be able to continue. We did not test this. -2- Enable caching in the code with Whitenoise (see https://whitenoise.readthedocs.io/en/latest/django.html#add-compression-and-caching-support) +2- Enable caching in the code with Whitenoise (see ![documentation on Whitenoise Caching](https://whitenoise.readthedocs.io/en/latest/djangohtml#add-compression-and-caching-support)) 3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: ![lighthouse](https://developer.chrome.com/blog/lighthouse-load-performance) might be useful for this step) From 54b27ef4925f48f0bf90ef3412fbc1efd366cd5a Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 20:13:30 -0700 Subject: [PATCH 09/37] Fixed placeholder text --- docs/architecture/decisions/0025-caching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/decisions/0025-caching.md b/docs/architecture/decisions/0025-caching.md index ef8717dd4..5920a37d0 100644 --- a/docs/architecture/decisions/0025-caching.md +++ b/docs/architecture/decisions/0025-caching.md @@ -44,7 +44,7 @@ NOTE: While we considered implementing caching in a sandbox (See footnote) in or Therefore, implementing caching using Whitenoise is not currently worth it for the following reasons; - Minimal gains: We would only be caching static files (total load time gain estimated to be….) -- Risks: Incurs risk of unforeseen loading issues (we can’t entirely rule out that we won’t run into issues like we did in our xx-xx-xx incident). Although we don’t think static files should pose a problem, due diligence would call us to monitor for any unforeseen issues that might arise, which adds cost to this project that doesn’t seem proportional to the gains. +- Risks: Incurs risk of unforeseen loading issues (we can’t entirely rule out that we won’t run into issues like we did in our November launch incident). Although we don’t think static files should pose a problem, due diligence would call us to monitor for any unforeseen issues that might arise, which adds cost to this project that doesn’t seem proportional to the gains. - Maintenance: We would have to provide custom settings in cloudfront (coordinated through Cameron) for any sandboxes and other environments where caching is enabled. If we move down the route of utilizing CDN, it would be good for every environment to have this service enabled so our dev environments reflect stable settings. This could possibly introduce some overhead and maintenance issues. (Although further investigation might reveal these to be negligible.) Overall, it is recommended that we SHELVE this caching endeavor for a future scenario where we have exhausted other (likely more lucrative) options for performance improvements. If we then still need to make improvements to our load times, perhaps we can revisit this and examine caching not only static files, but other resources as well (with caution). From 7fa667922ef96597b2dc67ca00a122ba3e7c8e4d Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 20:14:40 -0700 Subject: [PATCH 10/37] Fix footnote bullet points format --- docs/architecture/decisions/0025-caching.md | 25 ++++++++++++--------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/architecture/decisions/0025-caching.md b/docs/architecture/decisions/0025-caching.md index 5920a37d0..65c588508 100644 --- a/docs/architecture/decisions/0025-caching.md +++ b/docs/architecture/decisions/0025-caching.md @@ -56,16 +56,19 @@ We will forgo (negligible) load-time improvements by leaving caching off. ## (Footnote - How to implement caching) Here are notes for implementing caching using whitenoise should we decide to pick this up again in the future; -1- Add caching capability to a sandbox using the following steps (or ![following documentation for command line](https://cloud.gov/docs/services/external-domain-service/)) - - Log-in to the cloud.gov website - - ![Navigate to "Services"](https://dashboard.fr.cloud.gov/services). Click "Add Service"... - - Choose "Marketplace Service" - - For the fields, select Cloud Foundry, Organization = "cisa-dotgov", Space = "[your sandbox. eg. "nl"]". Click "Next" - - For the Service, select "External Domain". Click "Next" - - For the Plan, select "domain-with-cdn" (here is ![documentation on CDN](https://cloud.gov/docs/management/custom-domains/)) - - If you choose to bind the app, a JSON string will be required (we believe this should do it: {"domains": "example.gov"}, where "example.gov" is replaced with the domain name you want to use for this application) - Before you can continue, work with Cameron to setup the DNS in AWS (use the following documentation linked below): - https://cloud.gov/docs/services/external-domain-service/ - - Once the DNS is setup, you *should* be able to continue. We did not test this. + +1 - Add caching capability to a sandbox using the following steps (or ![following documentation for command line](https://cloud.gov/docs/services/external-domain-service/)) +- Log-in to the cloud.gov website +- ![Navigate to "Services"](https://dashboard.fr.cloud.gov/services). Click "Add Service"... +- Choose "Marketplace Service" +- For the fields, select Cloud Foundry, Organization = "cisa-dotgov", Space = "[your sandbox. eg. "nl"]". Click "Next" +- For the Service, select "External Domain". Click "Next" +- For the Plan, select "domain-with-cdn" (here is ![documentation on CDN](https://cloud.gov/docs/management/custom-domains/)) +- If you choose to bind the app, a JSON string will be required (we believe this should do it: {"domains": "example.gov"}, where "example.gov" is replaced with the domain name you want to use for this application) +Before you can continue, work with Cameron to setup the DNS in AWS (use the following documentation linked below): +https://cloud.gov/docs/services/external-domain-service/ +- Once the DNS is setup, you *should* be able to continue. We did not test this. + 2- Enable caching in the code with Whitenoise (see ![documentation on Whitenoise Caching](https://whitenoise.readthedocs.io/en/latest/djangohtml#add-compression-and-caching-support)) + 3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: ![lighthouse](https://developer.chrome.com/blog/lighthouse-load-performance) might be useful for this step) From 2721386d21ece651741f0dfb49d83811c662c18c Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 20:15:26 -0700 Subject: [PATCH 11/37] fixed hyperlinks --- docs/architecture/decisions/0025-caching.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/architecture/decisions/0025-caching.md b/docs/architecture/decisions/0025-caching.md index 65c588508..123330a40 100644 --- a/docs/architecture/decisions/0025-caching.md +++ b/docs/architecture/decisions/0025-caching.md @@ -57,18 +57,18 @@ We will forgo (negligible) load-time improvements by leaving caching off. ## (Footnote - How to implement caching) Here are notes for implementing caching using whitenoise should we decide to pick this up again in the future; -1 - Add caching capability to a sandbox using the following steps (or ![following documentation for command line](https://cloud.gov/docs/services/external-domain-service/)) +1 - Add caching capability to a sandbox using the following steps (or [following documentation for command line](https://cloud.gov/docs/services/external-domain-service/)) - Log-in to the cloud.gov website -- ![Navigate to "Services"](https://dashboard.fr.cloud.gov/services). Click "Add Service"... +- [Navigate to "Services"](https://dashboard.fr.cloud.gov/services). Click "Add Service"... - Choose "Marketplace Service" - For the fields, select Cloud Foundry, Organization = "cisa-dotgov", Space = "[your sandbox. eg. "nl"]". Click "Next" - For the Service, select "External Domain". Click "Next" -- For the Plan, select "domain-with-cdn" (here is ![documentation on CDN](https://cloud.gov/docs/management/custom-domains/)) +- For the Plan, select "domain-with-cdn" (here is [documentation on CDN](https://cloud.gov/docs/management/custom-domains/)) - If you choose to bind the app, a JSON string will be required (we believe this should do it: {"domains": "example.gov"}, where "example.gov" is replaced with the domain name you want to use for this application) Before you can continue, work with Cameron to setup the DNS in AWS (use the following documentation linked below): https://cloud.gov/docs/services/external-domain-service/ - Once the DNS is setup, you *should* be able to continue. We did not test this. -2- Enable caching in the code with Whitenoise (see ![documentation on Whitenoise Caching](https://whitenoise.readthedocs.io/en/latest/djangohtml#add-compression-and-caching-support)) +2- Enable caching in the code with Whitenoise (see [documentation on Whitenoise Caching](https://whitenoise.readthedocs.io/en/latest/djangohtml#add-compression-and-caching-support)) -3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: ![lighthouse](https://developer.chrome.com/blog/lighthouse-load-performance) might be useful for this step) +3- Take performance measurements before/after caching is enabled to determine cost-benefits of implementing caching. (NOTE: [lighthouse](https://developer.chrome.com/blog/lighthouse-load-performance) might be useful for this step) From 4358d39cb0b1df3bb8ac71fce6f6293e43009c30 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Wed, 28 Feb 2024 20:16:13 -0700 Subject: [PATCH 12/37] fixed hyperlinks --- docs/architecture/decisions/0025-caching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/decisions/0025-caching.md b/docs/architecture/decisions/0025-caching.md index 123330a40..098ab3a8c 100644 --- a/docs/architecture/decisions/0025-caching.md +++ b/docs/architecture/decisions/0025-caching.md @@ -37,7 +37,7 @@ We decided on Option 2 - leave things as-is (for now). Preliminary analysis suggest that implementing caching on static pages will result in negligible improvements to our application load time. A quick look at Kibana logs suggests most of these resources take less than 10ms to load... ![Kibana RTR Logs](../doc-images/caching-rtr-logs.png) -If we look at average load times in Kibana (here is ![the Kibana page with preloaded query](https://logs.fr.cloud.gov/app/visualize#/create?_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logs-app*',key:'@cf.app',negate:!f,params:(query:getgov-stable),type:phrase),query:(match_phrase:('@cf.app':getgov-stable)))),linked:!f,query:(language:lucene,query:''),uiState:(),vis:(aggs:!((enabled:!t,id:'1',params:(customLabel:'Average%20Response%20Time%20in%20ms',field:rtr.response_time_ms),schema:metric,type:avg),(enabled:!t,id:'2',params:(drop_partials:!f,extended_bounds:(),field:'@timestamp',interval:d,min_doc_count:1,scaleMetricValues:!f,timeRange:(from:now-20d,to:now),useNormalizedEsInterval:!t),schema:segment,type:date_histogram)),params:(addLegend:!t,addTimeMarker:!f,addTooltip:!t,categoryAxes:!((id:CategoryAxis-1,labels:(filter:!t,show:!t,truncate:100),position:bottom,scale:(type:linear),show:!t,style:(),title:(),type:category)),grid:(categoryLines:!f),labels:(show:!f),legendPosition:right,seriesParams:!((data:(id:'1',label:'Average%20Response%20Time%20in%20ms'),drawLinesBetweenPoints:!t,lineWidth:2,mode:stacked,show:!t,showCircles:!t,type:histogram,valueAxis:ValueAxis-1)),thresholdLine:(color:%23E7664C,show:!f,style:full,value:10,width:1),times:!(),type:histogram,valueAxes:!((id:ValueAxis-1,labels:(filter:!f,rotate:0,show:!t,truncate:100),name:LeftAxis-1,position:left,scale:(mode:normal,type:linear),show:!t,style:(),title:(text:'Average%20Response%20Time%20in%20ms'),type:value))),title:'',type:histogram))&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-2w,to:now))&indexPattern=logs-app*&type=histogram)), it looks like we are doing great for load times in stable (using the rtr.response_time_ms metric), staying under 200ms (in the last 4 weeks) and usually hovering around 40-80ms. Some google searching suggests that "an ideal page load time is between 0-2 seconds, but 3 seconds is also considered to be an acceptable score. Anything above 3 seconds increases the likelihood of visitors leaving your site." (Quote shamelessly copied from Sematex) +If we look at average load times in Kibana (here is [the Kibana page with preloaded query](https://logs.fr.cloud.gov/app/visualize#/create?_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'logs-app*',key:'@cf.app',negate:!f,params:(query:getgov-stable),type:phrase),query:(match_phrase:('@cf.app':getgov-stable)))),linked:!f,query:(language:lucene,query:''),uiState:(),vis:(aggs:!((enabled:!t,id:'1',params:(customLabel:'Average%20Response%20Time%20in%20ms',field:rtr.response_time_ms),schema:metric,type:avg),(enabled:!t,id:'2',params:(drop_partials:!f,extended_bounds:(),field:'@timestamp',interval:d,min_doc_count:1,scaleMetricValues:!f,timeRange:(from:now-20d,to:now),useNormalizedEsInterval:!t),schema:segment,type:date_histogram)),params:(addLegend:!t,addTimeMarker:!f,addTooltip:!t,categoryAxes:!((id:CategoryAxis-1,labels:(filter:!t,show:!t,truncate:100),position:bottom,scale:(type:linear),show:!t,style:(),title:(),type:category)),grid:(categoryLines:!f),labels:(show:!f),legendPosition:right,seriesParams:!((data:(id:'1',label:'Average%20Response%20Time%20in%20ms'),drawLinesBetweenPoints:!t,lineWidth:2,mode:stacked,show:!t,showCircles:!t,type:histogram,valueAxis:ValueAxis-1)),thresholdLine:(color:%23E7664C,show:!f,style:full,value:10,width:1),times:!(),type:histogram,valueAxes:!((id:ValueAxis-1,labels:(filter:!f,rotate:0,show:!t,truncate:100),name:LeftAxis-1,position:left,scale:(mode:normal,type:linear),show:!t,style:(),title:(text:'Average%20Response%20Time%20in%20ms'),type:value))),title:'',type:histogram))&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-2w,to:now))&indexPattern=logs-app*&type=histogram)), it looks like we are doing great for load times in stable (using the rtr.response_time_ms metric), staying under 200ms (in the last 4 weeks) and usually hovering around 40-80ms. Some google searching suggests that "an ideal page load time is between 0-2 seconds, but 3 seconds is also considered to be an acceptable score. Anything above 3 seconds increases the likelihood of visitors leaving your site." (Quote shamelessly copied from Sematex) ![Kibana Average Load Times Graph](../doc-images/caching-average-load-times.png) NOTE: While we considered implementing caching in a sandbox (See footnote) in order to examine risks and benefits of OPTION 1 in more detail, this incurred more overhead than expected (mainly due to poor documentation). Therefore, we decided it was not worth the investment. From 1740a8cddae436a8e8ab151dd3d471e3aa956a97 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Thu, 29 Feb 2024 10:43:27 -0700 Subject: [PATCH 13/37] Update --- docs/architecture/decisions/0025-caching.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/decisions/0025-caching.md b/docs/architecture/decisions/0025-caching.md index 098ab3a8c..d720b9377 100644 --- a/docs/architecture/decisions/0025-caching.md +++ b/docs/architecture/decisions/0025-caching.md @@ -43,7 +43,7 @@ If we look at average load times in Kibana (here is [the Kibana page with preloa NOTE: While we considered implementing caching in a sandbox (See footnote) in order to examine risks and benefits of OPTION 1 in more detail, this incurred more overhead than expected (mainly due to poor documentation). Therefore, we decided it was not worth the investment. Therefore, implementing caching using Whitenoise is not currently worth it for the following reasons; -- Minimal gains: We would only be caching static files (total load time gain estimated to be….) +- Minimal gains: We would only be caching static files which would not result in a large performance boost - Risks: Incurs risk of unforeseen loading issues (we can’t entirely rule out that we won’t run into issues like we did in our November launch incident). Although we don’t think static files should pose a problem, due diligence would call us to monitor for any unforeseen issues that might arise, which adds cost to this project that doesn’t seem proportional to the gains. - Maintenance: We would have to provide custom settings in cloudfront (coordinated through Cameron) for any sandboxes and other environments where caching is enabled. If we move down the route of utilizing CDN, it would be good for every environment to have this service enabled so our dev environments reflect stable settings. This could possibly introduce some overhead and maintenance issues. (Although further investigation might reveal these to be negligible.) From c5d525bd48be3327835ce04b8baa2bcf5dd010c2 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Thu, 29 Feb 2024 23:36:15 -0500 Subject: [PATCH 14/37] removed EPP connection pool, simplified epplibwrapper, removed socket --- src/epplibwrapper/client.py | 214 +++------ src/epplibwrapper/socket.py | 102 ----- src/epplibwrapper/tests/test_pool.py | 420 +++++++++--------- src/epplibwrapper/utility/pool.py | 151 ------- src/epplibwrapper/utility/pool_error.py | 46 -- src/epplibwrapper/utility/pool_status.py | 12 - src/registrar/config/settings.py | 14 - ...t_name_alter_contact_last_name_and_more.py | 1 - 8 files changed, 281 insertions(+), 679 deletions(-) delete mode 100644 src/epplibwrapper/socket.py delete mode 100644 src/epplibwrapper/utility/pool.py delete mode 100644 src/epplibwrapper/utility/pool_error.py delete mode 100644 src/epplibwrapper/utility/pool_status.py diff --git a/src/epplibwrapper/client.py b/src/epplibwrapper/client.py index 9ed437aef..33875b012 100644 --- a/src/epplibwrapper/client.py +++ b/src/epplibwrapper/client.py @@ -2,10 +2,6 @@ import logging -from time import sleep -from gevent import Timeout -from epplibwrapper.utility.pool_status import PoolStatus - try: from epplib.client import Client from epplib import commands @@ -18,8 +14,6 @@ from django.conf import settings from .cert import Cert, Key from .errors import ErrorCode, LoginError, RegistryError -from .socket import Socket -from .utility.pool import EPPConnectionPool logger = logging.getLogger(__name__) @@ -43,8 +37,13 @@ class EPPLibWrapper: ATTN: This should not be used directly. Use `Domain` from domain.py. """ - def __init__(self, start_connection_pool=True) -> None: + def __init__(self) -> None: """Initialize settings which will be used for all connections.""" + # set _client to None initially. In the event that the __init__ fails + # before _client initializes, app should still start and be in a state + # that it can attempt _client initialization on send attempts + logger.info("__init__ called") + self._client = None # prepare (but do not send) a Login command self._login = commands.Login( cl_id=settings.SECRET_REGISTRY_CL_ID, @@ -54,7 +53,16 @@ class EPPLibWrapper: "urn:ietf:params:xml:ns:contact-1.0", ], ) + try: + self._initialize_client() + except Exception: + logger.warning("Unable to configure epplib. Registrar cannot contact registry.", exc_info=True) + def _initialize_client(self) -> None: + """Initialize a client, assuming _login defined. Sets _client to initialized + client. Raises errors if initialization fails. + This method will be called at app initialization, and also during retries.""" + logger.info("_initialize_client called") # establish a client object with a TCP socket transport self._client = Client( SocketTransport( @@ -64,50 +72,44 @@ class EPPLibWrapper: password=settings.SECRET_REGISTRY_KEY_PASSPHRASE, ) ) + try: + # use the _client object to connect + self._client.connect() + response = self._client.send(self._login) + if response.code >= 2000: # type: ignore + self._client.close() + raise LoginError(response.msg) # type: ignore + except TransportError as err: + message = "_initialize_client failed to execute due to a connection error." + logger.error(f"{message} Error: {err}", exc_info=True) + raise RegistryError(message, code=ErrorCode.TRANSPORT_ERROR) from err + except LoginError as err: + raise err + except Exception as err: + message = "_initialize_client failed to execute due to an unknown error." + logger.error(f"{message} Error: {err}", exc_info=True) + raise RegistryError(message) from err - self.pool_options = { - # Pool size - "size": settings.EPP_CONNECTION_POOL_SIZE, - # Which errors the pool should look out for. - # Avoid changing this unless necessary, - # it can and will break things. - "exc_classes": (TransportError,), - # Occasionally pings the registry to keep the connection alive. - # Value in seconds => (keepalive / size) - "keepalive": settings.POOL_KEEP_ALIVE, - } - - self._pool = None - - # Tracks the status of the pool - self.pool_status = PoolStatus() - - if start_connection_pool: - self.start_connection_pool() + def _disconnect(self) -> None: + """Close the connection.""" + logger.info("_disconnect called") + try: + self._client.send(commands.Logout()) + self._client.close() + except Exception: + logger.warning("Connection to registry was not cleanly closed.") def _send(self, command): """Helper function used by `send`.""" + logger.info("_send called") cmd_type = command.__class__.__name__ - # Start a timeout to check if the pool is hanging - timeout = Timeout(settings.POOL_TIMEOUT) - timeout.start() - try: - if not self.pool_status.connection_success: - raise LoginError("Couldn't connect to the registry after three attempts") - with self._pool.get() as connection: - response = connection.send(command) - except Timeout as t: - # If more than one pool exists, - # multiple timeouts can be floating around. - # We need to be specific as to which we are targeting. - if t is timeout: - # Flag that the pool is frozen, - # then restart the pool. - self.pool_status.pool_hanging = True - logger.error("Pool timed out") - self.start_connection_pool() + # check for the condition that the _client was not initialized properly + # at app initialization + if self._client is None: + self._initialize_client() + response = self._client.send(command) except (ValueError, ParsingError) as err: message = f"{cmd_type} failed to execute due to some syntax error." logger.error(f"{message} Error: {err}", exc_info=True) @@ -131,109 +133,38 @@ class EPPLibWrapper: raise RegistryError(response.msg, code=response.code) else: return response - finally: - # Close the timeout no matter what happens - timeout.close() - def send(self, command, *, cleaned=False): - """Login, send the command, then close the connection. Tries 3 times.""" + def _retry(self, command, *, cleaned=False): + """Retry sending a command through EPP by re-initializing the client + and then sending the command.""" + logger.info("_retry called") + # re-initialize by disconnecting and initial + self._disconnect() + self._initialize_client() # try to prevent use of this method without appropriate safeguards if not cleaned: raise ValueError("Please sanitize user input before sending it.") + return self._send(command) - # Reopen the pool if its closed - # Only occurs when a login error is raised, after connection is successful - if not self.pool_status.pool_running: - # We want to reopen the connection pool, - # but we don't want the end user to wait while it opens. - # Raise syntax doesn't allow this, so we use a try/catch - # block. - try: - logger.error("Can't contact the Registry. Pool was not running.") - raise RegistryError("Can't contact the Registry. Pool was not running.") - except RegistryError as err: + def send(self, command, *, cleaned=False): + """Login, send the command, then close the connection. Tries 3 times.""" + logger.info("send called") + # try to prevent use of this method without appropriate safeguards + if not cleaned: + raise ValueError("Please sanitize user input before sending it.") + try: + return self._send(command) + except RegistryError as err: + if ( + err.is_transport_error() + or err.is_connection_error() + or err.is_session_error() + or err.is_server_error() + or err.should_retry() + ): + return self._retry(command) + else: raise err - finally: - # Code execution will halt after here. - # The end user will need to recall .send. - self.start_connection_pool() - - counter = 0 # we'll try 3 times - while True: - try: - return self._send(command) - except RegistryError as err: - if counter < 3 and (err.should_retry() or err.is_transport_error()): - logger.info(f"Retrying transport error. Attempt #{counter+1} of 3.") - counter += 1 - sleep((counter * 50) / 1000) # sleep 50 ms to 150 ms - else: # don't try again - raise err - - def get_pool(self): - """Get the current pool instance""" - return self._pool - - def _create_pool(self, client, login, options): - """Creates and returns new pool instance""" - logger.info("New pool was created") - return EPPConnectionPool(client, login, options) - - def start_connection_pool(self, restart_pool_if_exists=True): - """Starts a connection pool for the registry. - - restart_pool_if_exists -> bool: - If an instance of the pool already exists, - then then that instance will be killed first. - It is generally recommended to keep this enabled. - """ - # Since we reuse the same creds for each pool, we can test on - # one socket, and if successful, then we know we can connect. - if not self._test_registry_connection_success(): - logger.warning("start_connection_pool() -> Cannot contact the Registry") - self.pool_status.connection_success = False - else: - self.pool_status.connection_success = True - - # If this function is reinvoked, then ensure - # that we don't have duplicate data sitting around. - if self._pool is not None and restart_pool_if_exists: - logger.info("Connection pool restarting...") - self.kill_pool() - logger.info("Old pool killed") - - self._pool = self._create_pool(self._client, self._login, self.pool_options) - - self.pool_status.pool_running = True - self.pool_status.pool_hanging = False - - logger.info("Connection pool started") - - def kill_pool(self): - """Kills the existing pool. Use this instead - of self._pool = None, as that doesn't clear - gevent instances.""" - if self._pool is not None: - self._pool.kill_all_connections() - self._pool = None - self.pool_status.pool_running = False - return None - logger.info("kill_pool() was invoked but there was no pool to delete") - - def _test_registry_connection_success(self): - """Check that determines if our login - credentials are valid, and/or if the Registrar - can be contacted - """ - # This is closed in test_connection_success - socket = Socket(self._client, self._login) - can_login = False - - # Something went wrong if this doesn't exist - if hasattr(socket, "test_connection_success"): - can_login = socket.test_connection_success() - - return can_login try: @@ -241,5 +172,4 @@ try: CLIENT = EPPLibWrapper() logger.info("registry client initialized") except Exception: - CLIENT = None # type: ignore logger.warning("Unable to configure epplib. Registrar cannot contact registry.", exc_info=True) diff --git a/src/epplibwrapper/socket.py b/src/epplibwrapper/socket.py deleted file mode 100644 index 79c44aa9a..000000000 --- a/src/epplibwrapper/socket.py +++ /dev/null @@ -1,102 +0,0 @@ -import logging -from time import sleep - -try: - from epplib import commands - from epplib.client import Client -except ImportError: - pass - -from .errors import LoginError - - -logger = logging.getLogger(__name__) - - -class Socket: - """Context manager which establishes a TCP connection with registry.""" - - def __init__(self, client: Client, login: commands.Login) -> None: - """Save the epplib client and login details.""" - self.client = client - self.login = login - - def __enter__(self): - """Runs connect(), which opens a connection with EPPLib.""" - self.connect() - - def __exit__(self, *args, **kwargs): - """Runs disconnect(), which closes a connection with EPPLib.""" - self.disconnect() - - def connect(self): - """Use epplib to connect.""" - logger.info("Opening socket on connection pool") - self.client.connect() - response = self.client.send(self.login) - if self.is_login_error(response.code): - self.client.close() - raise LoginError(response.msg) - return self.client - - def disconnect(self): - """Close the connection.""" - logger.info("Closing socket on connection pool") - try: - self.client.send(commands.Logout()) - self.client.close() - except Exception as err: - logger.warning("Connection to registry was not cleanly closed.") - logger.error(err) - - def send(self, command): - """Sends a command to the registry. - If the RegistryError code is >= 2000, - then this function raises a LoginError. - The calling function should handle this.""" - response = self.client.send(command) - if self.is_login_error(response.code): - self.client.close() - raise LoginError(response.msg) - - return response - - def is_login_error(self, code): - """Returns the result of code >= 2000 for RegistryError. - This indicates that something weird happened on the Registry, - and that we should return a LoginError.""" - return code >= 2000 - - def test_connection_success(self): - """Tests if a successful connection can be made with the registry. - Tries 3 times.""" - # Something went wrong if this doesn't exist - if not hasattr(self.client, "connect"): - logger.warning("self.client does not have a connect attribute") - return False - - counter = 0 # we'll try 3 times - while True: - try: - self.client.connect() - response = self.client.send(self.login) - except (LoginError, OSError) as err: - logger.error(err) - should_retry = True - if isinstance(err, LoginError): - should_retry = err.should_retry() - if should_retry and counter < 3: - counter += 1 - sleep((counter * 50) / 1000) # sleep 50 ms to 150 ms - else: # don't try again - return False - else: - # If we encounter a login error, fail - if self.is_login_error(response.code): - logger.warning("A login error was found in test_connection_success") - return False - - # Otherwise, just return true - return True - finally: - self.disconnect() diff --git a/src/epplibwrapper/tests/test_pool.py b/src/epplibwrapper/tests/test_pool.py index f8e556445..0cf589ec6 100644 --- a/src/epplibwrapper/tests/test_pool.py +++ b/src/epplibwrapper/tests/test_pool.py @@ -5,8 +5,6 @@ from dateutil.tz import tzlocal # type: ignore from django.test import TestCase from epplibwrapper.client import EPPLibWrapper from epplibwrapper.errors import RegistryError -from epplibwrapper.socket import Socket -from epplibwrapper.utility.pool import EPPConnectionPool from registrar.models.domain import registry from contextlib import ExitStack from .common import less_console_noise @@ -27,236 +25,236 @@ logger = logging.getLogger(__name__) class TestConnectionPool(TestCase): """Tests for our connection pooling behaviour""" - def setUp(self): - # Mimic the settings added to settings.py - self.pool_options = { - # Current pool size - "size": 1, - # Which errors the pool should look out for - "exc_classes": (TransportError,), - # Occasionally pings the registry to keep the connection alive. - # Value in seconds => (keepalive / size) - "keepalive": 60, - } + # def setUp(self): + # # Mimic the settings added to settings.py + # self.pool_options = { + # # Current pool size + # "size": 1, + # # Which errors the pool should look out for + # "exc_classes": (TransportError,), + # # Occasionally pings the registry to keep the connection alive. + # # Value in seconds => (keepalive / size) + # "keepalive": 60, + # } - def fake_socket(self, login, client): - # Linter reasons - pw = "none" - # Create a fake client object - fake_client = Client( - SocketTransport( - "none", - cert_file="path/to/cert_file", - key_file="path/to/key_file", - password=pw, - ) - ) + # def fake_socket(self, login, client): + # # Linter reasons + # pw = "none" + # # Create a fake client object + # fake_client = Client( + # SocketTransport( + # "none", + # cert_file="path/to/cert_file", + # key_file="path/to/key_file", + # password=pw, + # ) + # ) - return Socket(fake_client, MagicMock()) + # return Socket(fake_client, MagicMock()) - def patch_success(self): - return True + # def patch_success(self): + # return True - def fake_send(self, command, cleaned=None): - mock = MagicMock( - code=1000, - msg="Command completed successfully", - res_data=None, - cl_tr_id="xkw1uo#2023-10-17T15:29:09.559376", - sv_tr_id="5CcH4gxISuGkq8eqvr1UyQ==-35a", - extensions=[], - msg_q=None, - ) - return mock + # def fake_send(self, command, cleaned=None): + # mock = MagicMock( + # code=1000, + # msg="Command completed successfully", + # res_data=None, + # cl_tr_id="xkw1uo#2023-10-17T15:29:09.559376", + # sv_tr_id="5CcH4gxISuGkq8eqvr1UyQ==-35a", + # extensions=[], + # msg_q=None, + # ) + # return mock - def fake_client(mock_client): - pw = "none" - client = Client( - SocketTransport( - "none", - cert_file="path/to/cert_file", - key_file="path/to/key_file", - password=pw, - ) - ) - return client + # def fake_client(mock_client): + # pw = "none" + # client = Client( + # SocketTransport( + # "none", + # cert_file="path/to/cert_file", + # key_file="path/to/key_file", + # password=pw, + # ) + # ) + # return client - @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) - def test_pool_sends_data(self): - """A .send is invoked on the pool successfully""" - expected_result = { - "cl_tr_id": None, - "code": 1000, - "extensions": [], - "msg": "Command completed successfully", - "msg_q": None, - "res_data": [ - info.InfoDomainResultData( - roid="DF1340360-GOV", - statuses=[ - common.Status( - state="serverTransferProhibited", - description=None, - lang="en", - ), - common.Status(state="inactive", description=None, lang="en"), - ], - cl_id="gov2023-ote", - cr_id="gov2023-ote", - cr_date=datetime.datetime(2023, 8, 15, 23, 56, 36, tzinfo=tzlocal()), - up_id="gov2023-ote", - up_date=datetime.datetime(2023, 8, 17, 2, 3, 19, tzinfo=tzlocal()), - tr_date=None, - name="test3.gov", - registrant="TuaWnx9hnm84GCSU", - admins=[], - nsset=None, - keyset=None, - ex_date=datetime.date(2024, 8, 15), - auth_info=info.DomainAuthInfo(pw="2fooBAR123fooBaz"), - ) - ], - "sv_tr_id": "wRRNVhKhQW2m6wsUHbo/lA==-29a", - } + # @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) + # def test_pool_sends_data(self): + # """A .send is invoked on the pool successfully""" + # expected_result = { + # "cl_tr_id": None, + # "code": 1000, + # "extensions": [], + # "msg": "Command completed successfully", + # "msg_q": None, + # "res_data": [ + # info.InfoDomainResultData( + # roid="DF1340360-GOV", + # statuses=[ + # common.Status( + # state="serverTransferProhibited", + # description=None, + # lang="en", + # ), + # common.Status(state="inactive", description=None, lang="en"), + # ], + # cl_id="gov2023-ote", + # cr_id="gov2023-ote", + # cr_date=datetime.datetime(2023, 8, 15, 23, 56, 36, tzinfo=tzlocal()), + # up_id="gov2023-ote", + # up_date=datetime.datetime(2023, 8, 17, 2, 3, 19, tzinfo=tzlocal()), + # tr_date=None, + # name="test3.gov", + # registrant="TuaWnx9hnm84GCSU", + # admins=[], + # nsset=None, + # keyset=None, + # ex_date=datetime.date(2024, 8, 15), + # auth_info=info.DomainAuthInfo(pw="2fooBAR123fooBaz"), + # ) + # ], + # "sv_tr_id": "wRRNVhKhQW2m6wsUHbo/lA==-29a", + # } - # Mock a response from EPP - def fake_receive(command, cleaned=None): - location = Path(__file__).parent / "utility" / "infoDomain.xml" - xml = (location).read_bytes() - return xml + # # Mock a response from EPP + # def fake_receive(command, cleaned=None): + # location = Path(__file__).parent / "utility" / "infoDomain.xml" + # xml = (location).read_bytes() + # return xml - def do_nothing(command): - pass + # def do_nothing(command): + # pass - # Mock what happens inside the "with" - with ExitStack() as stack: - stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) - stack.enter_context(patch.object(Socket, "connect", self.fake_client)) - stack.enter_context(patch.object(EPPConnectionPool, "kill_all_connections", do_nothing)) - stack.enter_context(patch.object(SocketTransport, "send", self.fake_send)) - stack.enter_context(patch.object(SocketTransport, "receive", fake_receive)) - with less_console_noise(): - # Restart the connection pool - registry.start_connection_pool() - # Pool should be running, and be the right size - self.assertEqual(registry.pool_status.connection_success, True) - self.assertEqual(registry.pool_status.pool_running, True) + # # Mock what happens inside the "with" + # with ExitStack() as stack: + # stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) + # stack.enter_context(patch.object(Socket, "connect", self.fake_client)) + # stack.enter_context(patch.object(EPPConnectionPool, "kill_all_connections", do_nothing)) + # stack.enter_context(patch.object(SocketTransport, "send", self.fake_send)) + # stack.enter_context(patch.object(SocketTransport, "receive", fake_receive)) + # with less_console_noise(): + # # Restart the connection pool + # registry.start_connection_pool() + # # Pool should be running, and be the right size + # self.assertEqual(registry.pool_status.connection_success, True) + # self.assertEqual(registry.pool_status.pool_running, True) - # Send a command - result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) + # # Send a command + # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - # Should this ever fail, it either means that the schema has changed, - # or the pool is broken. - # If the schema has changed: Update the associated infoDomain.xml file - self.assertEqual(result.__dict__, expected_result) + # # Should this ever fail, it either means that the schema has changed, + # # or the pool is broken. + # # If the schema has changed: Update the associated infoDomain.xml file + # self.assertEqual(result.__dict__, expected_result) - # The number of open pools should match the number of requested ones. - # If it is 0, then they failed to open - self.assertEqual(len(registry._pool.conn), self.pool_options["size"]) - # Kill the connection pool - registry.kill_pool() + # # The number of open pools should match the number of requested ones. + # # If it is 0, then they failed to open + # self.assertEqual(len(registry._pool.conn), self.pool_options["size"]) + # # Kill the connection pool + # registry.kill_pool() - @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) - def test_pool_restarts_on_send(self): - """A .send is invoked, but the pool isn't running. - The pool should restart.""" - expected_result = { - "cl_tr_id": None, - "code": 1000, - "extensions": [], - "msg": "Command completed successfully", - "msg_q": None, - "res_data": [ - info.InfoDomainResultData( - roid="DF1340360-GOV", - statuses=[ - common.Status( - state="serverTransferProhibited", - description=None, - lang="en", - ), - common.Status(state="inactive", description=None, lang="en"), - ], - cl_id="gov2023-ote", - cr_id="gov2023-ote", - cr_date=datetime.datetime(2023, 8, 15, 23, 56, 36, tzinfo=tzlocal()), - up_id="gov2023-ote", - up_date=datetime.datetime(2023, 8, 17, 2, 3, 19, tzinfo=tzlocal()), - tr_date=None, - name="test3.gov", - registrant="TuaWnx9hnm84GCSU", - admins=[], - nsset=None, - keyset=None, - ex_date=datetime.date(2024, 8, 15), - auth_info=info.DomainAuthInfo(pw="2fooBAR123fooBaz"), - ) - ], - "sv_tr_id": "wRRNVhKhQW2m6wsUHbo/lA==-29a", - } + # @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) + # def test_pool_restarts_on_send(self): + # """A .send is invoked, but the pool isn't running. + # The pool should restart.""" + # expected_result = { + # "cl_tr_id": None, + # "code": 1000, + # "extensions": [], + # "msg": "Command completed successfully", + # "msg_q": None, + # "res_data": [ + # info.InfoDomainResultData( + # roid="DF1340360-GOV", + # statuses=[ + # common.Status( + # state="serverTransferProhibited", + # description=None, + # lang="en", + # ), + # common.Status(state="inactive", description=None, lang="en"), + # ], + # cl_id="gov2023-ote", + # cr_id="gov2023-ote", + # cr_date=datetime.datetime(2023, 8, 15, 23, 56, 36, tzinfo=tzlocal()), + # up_id="gov2023-ote", + # up_date=datetime.datetime(2023, 8, 17, 2, 3, 19, tzinfo=tzlocal()), + # tr_date=None, + # name="test3.gov", + # registrant="TuaWnx9hnm84GCSU", + # admins=[], + # nsset=None, + # keyset=None, + # ex_date=datetime.date(2024, 8, 15), + # auth_info=info.DomainAuthInfo(pw="2fooBAR123fooBaz"), + # ) + # ], + # "sv_tr_id": "wRRNVhKhQW2m6wsUHbo/lA==-29a", + # } - # Mock a response from EPP - def fake_receive(command, cleaned=None): - location = Path(__file__).parent / "utility" / "infoDomain.xml" - xml = (location).read_bytes() - return xml + # # Mock a response from EPP + # def fake_receive(command, cleaned=None): + # location = Path(__file__).parent / "utility" / "infoDomain.xml" + # xml = (location).read_bytes() + # return xml - def do_nothing(command): - pass + # def do_nothing(command): + # pass - # Mock what happens inside the "with" - with ExitStack() as stack: - stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) - stack.enter_context(patch.object(Socket, "connect", self.fake_client)) - stack.enter_context(patch.object(EPPConnectionPool, "kill_all_connections", do_nothing)) - stack.enter_context(patch.object(SocketTransport, "send", self.fake_send)) - stack.enter_context(patch.object(SocketTransport, "receive", fake_receive)) - with less_console_noise(): - # Start the connection pool - registry.start_connection_pool() - # Kill the connection pool - registry.kill_pool() + # # Mock what happens inside the "with" + # with ExitStack() as stack: + # stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) + # stack.enter_context(patch.object(Socket, "connect", self.fake_client)) + # stack.enter_context(patch.object(EPPConnectionPool, "kill_all_connections", do_nothing)) + # stack.enter_context(patch.object(SocketTransport, "send", self.fake_send)) + # stack.enter_context(patch.object(SocketTransport, "receive", fake_receive)) + # with less_console_noise(): + # # Start the connection pool + # registry.start_connection_pool() + # # Kill the connection pool + # registry.kill_pool() - self.assertEqual(registry.pool_status.pool_running, False) + # self.assertEqual(registry.pool_status.pool_running, False) - # An exception should be raised as end user will be informed - # that they cannot connect to EPP - with self.assertRaises(RegistryError): - expected = "InfoDomain failed to execute due to a connection error." - result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - self.assertEqual(result, expected) + # # An exception should be raised as end user will be informed + # # that they cannot connect to EPP + # with self.assertRaises(RegistryError): + # expected = "InfoDomain failed to execute due to a connection error." + # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) + # self.assertEqual(result, expected) - # A subsequent command should be successful, as the pool restarts - result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - # Should this ever fail, it either means that the schema has changed, - # or the pool is broken. - # If the schema has changed: Update the associated infoDomain.xml file - self.assertEqual(result.__dict__, expected_result) + # # A subsequent command should be successful, as the pool restarts + # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) + # # Should this ever fail, it either means that the schema has changed, + # # or the pool is broken. + # # If the schema has changed: Update the associated infoDomain.xml file + # self.assertEqual(result.__dict__, expected_result) - # The number of open pools should match the number of requested ones. - # If it is 0, then they failed to open - self.assertEqual(len(registry._pool.conn), self.pool_options["size"]) - # Kill the connection pool - registry.kill_pool() + # # The number of open pools should match the number of requested ones. + # # If it is 0, then they failed to open + # self.assertEqual(len(registry._pool.conn), self.pool_options["size"]) + # # Kill the connection pool + # registry.kill_pool() - @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) - def test_raises_connection_error(self): - """A .send is invoked on the pool, but registry connection is lost - right as we send a command.""" + # @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) + # def test_raises_connection_error(self): + # """A .send is invoked on the pool, but registry connection is lost + # right as we send a command.""" - with ExitStack() as stack: - stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) - stack.enter_context(patch.object(Socket, "connect", self.fake_client)) - with less_console_noise(): - # Start the connection pool - registry.start_connection_pool() + # with ExitStack() as stack: + # stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) + # stack.enter_context(patch.object(Socket, "connect", self.fake_client)) + # with less_console_noise(): + # # Start the connection pool + # registry.start_connection_pool() - # Pool should be running - self.assertEqual(registry.pool_status.connection_success, True) - self.assertEqual(registry.pool_status.pool_running, True) + # # Pool should be running + # self.assertEqual(registry.pool_status.connection_success, True) + # self.assertEqual(registry.pool_status.pool_running, True) - # Try to send a command out - should fail - with self.assertRaises(RegistryError): - expected = "InfoDomain failed to execute due to a connection error." - result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - self.assertEqual(result, expected) + # # Try to send a command out - should fail + # with self.assertRaises(RegistryError): + # expected = "InfoDomain failed to execute due to a connection error." + # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) + # self.assertEqual(result, expected) diff --git a/src/epplibwrapper/utility/pool.py b/src/epplibwrapper/utility/pool.py deleted file mode 100644 index 4f54e14ce..000000000 --- a/src/epplibwrapper/utility/pool.py +++ /dev/null @@ -1,151 +0,0 @@ -import logging -from typing import List -import gevent -from geventconnpool import ConnectionPool -from epplibwrapper.socket import Socket -from epplibwrapper.utility.pool_error import PoolError, PoolErrorCodes - -try: - from epplib.commands import Hello - from epplib.exceptions import TransportError -except ImportError: - pass - -from gevent.lock import BoundedSemaphore -from collections import deque - -logger = logging.getLogger(__name__) - - -class EPPConnectionPool(ConnectionPool): - """A connection pool for EPPLib. - - Args: - client (Client): The client - login (commands.Login): Login creds - options (dict): Options for the ConnectionPool - base class - """ - - def __init__(self, client, login, options: dict): - # For storing shared credentials - self._client = client - self._login = login - - # Keep track of each greenlet - self.greenlets: List[gevent.Greenlet] = [] - - # Define optional pool settings. - # Kept in a dict so that the parent class, - # client.py, can maintain seperation/expandability - self.size = 1 - if "size" in options: - self.size = options["size"] - - self.exc_classes = tuple((TransportError,)) - if "exc_classes" in options: - self.exc_classes = options["exc_classes"] - - self.keepalive = None - if "keepalive" in options: - self.keepalive = options["keepalive"] - - # Determines the period in which new - # gevent threads are spun up. - # This time period is in seconds. So for instance, .1 would be .1 seconds. - self.spawn_frequency = 0.1 - if "spawn_frequency" in options: - self.spawn_frequency = options["spawn_frequency"] - - self.conn: deque = deque() - self.lock = BoundedSemaphore(self.size) - - self.populate_all_connections() - - def _new_connection(self): - socket = self._create_socket(self._client, self._login) - try: - connection = socket.connect() - return connection - except Exception as err: - message = f"Failed to execute due to a registry error: {err}" - logger.error(message, exc_info=True) - # We want to raise a pool error rather than a LoginError here - # because if this occurs internally, we should handle this - # differently than we otherwise would for LoginError. - raise PoolError(code=PoolErrorCodes.NEW_CONNECTION_FAILED) from err - - def _keepalive(self, c): - """Sends a command to the server to keep the connection alive.""" - try: - # Sends a ping to the registry via EPPLib - c.send(Hello()) - except Exception as err: - message = "Failed to keep the connection alive." - logger.error(message, exc_info=True) - raise PoolError(code=PoolErrorCodes.KEEP_ALIVE_FAILED) from err - - def _keepalive_periodic(self): - """Overriding _keepalive_periodic from geventconnpool so that PoolErrors - are properly handled, as opposed to printing to stdout""" - delay = float(self.keepalive) / self.size - while 1: - try: - with self.get() as c: - self._keepalive(c) - except PoolError as err: - logger.error(err.message, exc_info=True) - except self.exc_classes: - # Nothing to do, the pool will generate a new connection later - pass - gevent.sleep(delay) - - def _create_socket(self, client, login) -> Socket: - """Creates and returns a socket instance""" - socket = Socket(client, login) - return socket - - def get_connections(self): - """Returns the connection queue""" - return self.conn - - def kill_all_connections(self): - """Kills all active connections in the pool.""" - try: - if len(self.conn) > 0 or len(self.greenlets) > 0: - logger.info("Attempting to kill connections") - gevent.killall(self.greenlets) - - self.greenlets.clear() - for connection in self.conn: - connection.disconnect() - self.conn.clear() - - # Clear the semaphore - self.lock = BoundedSemaphore(self.size) - logger.info("Finished killing connections") - else: - logger.info("No connections to kill.") - except Exception as err: - logger.error("Could not kill all connections.") - raise PoolError(code=PoolErrorCodes.KILL_ALL_FAILED) from err - - def populate_all_connections(self): - """Generates the connection pool. - If any connections exist, kill them first. - Based off of the __init__ definition for geventconnpool. - """ - if len(self.conn) > 0 or len(self.greenlets) > 0: - self.kill_all_connections() - - # Setup the lock - for i in range(self.size): - self.lock.acquire() - - # Open multiple connections - for i in range(self.size): - self.greenlets.append(gevent.spawn_later(self.spawn_frequency * i, self._addOne)) - - # Open a "keepalive" thread if we want to ping open connections - if self.keepalive: - self.greenlets.append(gevent.spawn(self._keepalive_periodic)) diff --git a/src/epplibwrapper/utility/pool_error.py b/src/epplibwrapper/utility/pool_error.py deleted file mode 100644 index bdf955afe..000000000 --- a/src/epplibwrapper/utility/pool_error.py +++ /dev/null @@ -1,46 +0,0 @@ -from enum import IntEnum - - -class PoolErrorCodes(IntEnum): - """Used in the PoolError class for - error mapping. - - Overview of contact error codes: - - 2000 KILL_ALL_FAILED - - 2001 NEW_CONNECTION_FAILED - - 2002 KEEP_ALIVE_FAILED - """ - - KILL_ALL_FAILED = 2000 - NEW_CONNECTION_FAILED = 2001 - KEEP_ALIVE_FAILED = 2002 - - -class PoolError(Exception): - """ - Overview of contact error codes: - - 2000 KILL_ALL_FAILED - - 2001 NEW_CONNECTION_FAILED - - 2002 KEEP_ALIVE_FAILED - - Note: These are separate from the error codes returned from EppLib - """ - - # Used variables due to linter requirements - kill_failed = "Could not kill all connections. Are multiple pools running?" - conn_failed = "Failed to execute due to a registry error. See previous logs to determine the cause of the error." - alive_failed = "Failed to keep the connection alive. It is likely that the registry returned a LoginError." - _error_mapping = { - PoolErrorCodes.KILL_ALL_FAILED: kill_failed, - PoolErrorCodes.NEW_CONNECTION_FAILED: conn_failed, - PoolErrorCodes.KEEP_ALIVE_FAILED: alive_failed, - } - - def __init__(self, *args, code=None, **kwargs): - super().__init__(*args, **kwargs) - self.code = code - if self.code in self._error_mapping: - self.message = self._error_mapping.get(self.code) - - def __str__(self): - return f"{self.message}" diff --git a/src/epplibwrapper/utility/pool_status.py b/src/epplibwrapper/utility/pool_status.py deleted file mode 100644 index 3a0ae750f..000000000 --- a/src/epplibwrapper/utility/pool_status.py +++ /dev/null @@ -1,12 +0,0 @@ -class PoolStatus: - """A list of Booleans to keep track of Pool Status. - - pool_running -> bool: Tracks if the pool itself is active or not. - connection_success -> bool: Tracks if connection is possible with the registry. - pool_hanging -> pool: Tracks if the pool has exceeded its timeout period. - """ - - def __init__(self): - self.pool_running = False - self.connection_success = False - self.pool_hanging = False diff --git a/src/registrar/config/settings.py b/src/registrar/config/settings.py index bb8e22ad7..3107661b9 100644 --- a/src/registrar/config/settings.py +++ b/src/registrar/config/settings.py @@ -601,20 +601,6 @@ SECRET_REGISTRY_KEY = secret_registry_key SECRET_REGISTRY_KEY_PASSPHRASE = secret_registry_key_passphrase SECRET_REGISTRY_HOSTNAME = secret_registry_hostname -# Use this variable to set the size of our connection pool in client.py -# WARNING: Setting this value too high could cause frequent app crashes! -# Having too many connections open could cause the sandbox to timeout, -# as the spinup time could exceed the timeout time. -EPP_CONNECTION_POOL_SIZE = 1 - -# Determines the interval in which we ping open connections in seconds -# Calculated as POOL_KEEP_ALIVE / EPP_CONNECTION_POOL_SIZE -POOL_KEEP_ALIVE = 60 - -# Determines how long we try to keep a pool alive for, -# before restarting it. -POOL_TIMEOUT = 60 - # endregion # region: Security and Privacy----------------------------------------------### diff --git a/src/registrar/migrations/0071_alter_contact_first_name_alter_contact_last_name_and_more.py b/src/registrar/migrations/0071_alter_contact_first_name_alter_contact_last_name_and_more.py index bc594138e..9e5eddfc3 100644 --- a/src/registrar/migrations/0071_alter_contact_first_name_alter_contact_last_name_and_more.py +++ b/src/registrar/migrations/0071_alter_contact_first_name_alter_contact_last_name_and_more.py @@ -5,7 +5,6 @@ import phonenumber_field.modelfields class Migration(migrations.Migration): - dependencies = [ ("registrar", "0070_domainapplication_rejection_reason"), ] From 9a258d6e96fb4f47298c2e22c75d4ea872364681 Mon Sep 17 00:00:00 2001 From: Rachid Mrad Date: Fri, 1 Mar 2024 16:29:05 -0500 Subject: [PATCH 15/37] metadata hotfix --- src/registrar/utility/csv_export.py | 38 +++++++++++++++-------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/registrar/utility/csv_export.py b/src/registrar/utility/csv_export.py index 04a11c924..0f4831498 100644 --- a/src/registrar/utility/csv_export.py +++ b/src/registrar/utility/csv_export.py @@ -26,6 +26,7 @@ def write_header(writer, columns): def get_domain_infos(filter_condition, sort_fields): domain_infos = ( DomainInformation.objects.select_related("domain", "authorizing_official") + .prefetch_related("domain__permissions") .filter(**filter_condition) .order_by(*sort_fields) ) @@ -49,6 +50,7 @@ def parse_row(columns, domain_info: DomainInformation, security_emails_dict=None # Domain should never be none when parsing this information if domain_info.domain is None: + logger.error("Attemting to parse row for csv exports but Domain is none in a DomainInfo") raise ValueError("Domain is none") domain = domain_info.domain # type: ignore @@ -127,15 +129,6 @@ def _get_security_emails(sec_contact_ids): return security_emails_dict -def update_columns_with_domain_managers(columns, max_dm_count): - """ - Update the columns list to include "Domain manager email {#}" headers - based on the maximum domain manager count. - """ - for i in range(1, max_dm_count + 1): - columns.append(f"Domain manager email {i}") - - def write_csv( writer, columns, @@ -161,19 +154,26 @@ def write_csv( # Reduce the memory overhead when performing the write operation paginator = Paginator(all_domain_infos, 1000) - if get_domain_managers and len(all_domain_infos) > 0: - # We want to get the max amont of domain managers an - # account has to set the column header dynamically - max_dm_count = max(len(domain_info.domain.permissions.all()) for domain_info in all_domain_infos) - update_columns_with_domain_managers(columns, max_dm_count) - - if should_write_header: - write_header(writer, columns) + # The maximum amount of domain managers an account has + # We get the max so we can set the column header accurately + max_dm_count = 0 + total_body_rows = [] for page_num in paginator.page_range: rows = [] page = paginator.page(page_num) for domain_info in page.object_list: + + # Get count of all the domain managers for an account + if get_domain_managers: + dm_count = domain_info.domain.permissions.count() + if dm_count > max_dm_count: + max_dm_count = dm_count + for i in range(1, max_dm_count + 1): + column_name = f"Domain manager email {i}" + if column_name not in columns: + columns.append(column_name) + try: row = parse_row(columns, domain_info, security_emails_dict, get_domain_managers) rows.append(row) @@ -183,7 +183,9 @@ def write_csv( logger.error("csv_export -> Error when parsing row, domain was None") continue - writer.writerows(rows) + if should_write_header: + write_header(writer, columns) + writer.writerows(total_body_rows) def export_data_type_to_csv(csv_file): From 99d34682b1a79d0751e56669e1f3b91554f9d36f Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Fri, 1 Mar 2024 22:18:41 -0500 Subject: [PATCH 16/37] test cases written; cleanup; small fix to _retry method signature --- src/epplibwrapper/client.py | 27 +-- src/epplibwrapper/tests/test_client.py | 259 ++++++++++++++++++++++++ src/epplibwrapper/tests/test_pool.py | 260 ------------------------- 3 files changed, 268 insertions(+), 278 deletions(-) create mode 100644 src/epplibwrapper/tests/test_client.py delete mode 100644 src/epplibwrapper/tests/test_pool.py diff --git a/src/epplibwrapper/client.py b/src/epplibwrapper/client.py index 33875b012..408f537a1 100644 --- a/src/epplibwrapper/client.py +++ b/src/epplibwrapper/client.py @@ -42,7 +42,6 @@ class EPPLibWrapper: # set _client to None initially. In the event that the __init__ fails # before _client initializes, app should still start and be in a state # that it can attempt _client initialization on send attempts - logger.info("__init__ called") self._client = None # prepare (but do not send) a Login command self._login = commands.Login( @@ -56,13 +55,12 @@ class EPPLibWrapper: try: self._initialize_client() except Exception: - logger.warning("Unable to configure epplib. Registrar cannot contact registry.", exc_info=True) + logger.warning("Unable to configure epplib. Registrar cannot contact registry.") def _initialize_client(self) -> None: """Initialize a client, assuming _login defined. Sets _client to initialized client. Raises errors if initialization fails. This method will be called at app initialization, and also during retries.""" - logger.info("_initialize_client called") # establish a client object with a TCP socket transport self._client = Client( SocketTransport( @@ -81,18 +79,17 @@ class EPPLibWrapper: raise LoginError(response.msg) # type: ignore except TransportError as err: message = "_initialize_client failed to execute due to a connection error." - logger.error(f"{message} Error: {err}", exc_info=True) + logger.error(f"{message} Error: {err}") raise RegistryError(message, code=ErrorCode.TRANSPORT_ERROR) from err except LoginError as err: raise err except Exception as err: message = "_initialize_client failed to execute due to an unknown error." - logger.error(f"{message} Error: {err}", exc_info=True) + logger.error(f"{message} Error: {err}") raise RegistryError(message) from err def _disconnect(self) -> None: """Close the connection.""" - logger.info("_disconnect called") try: self._client.send(commands.Logout()) self._client.close() @@ -101,7 +98,6 @@ class EPPLibWrapper: def _send(self, command): """Helper function used by `send`.""" - logger.info("_send called") cmd_type = command.__class__.__name__ try: @@ -112,21 +108,21 @@ class EPPLibWrapper: response = self._client.send(command) except (ValueError, ParsingError) as err: message = f"{cmd_type} failed to execute due to some syntax error." - logger.error(f"{message} Error: {err}", exc_info=True) + logger.error(f"{message} Error: {err}") raise RegistryError(message) from err except TransportError as err: message = f"{cmd_type} failed to execute due to a connection error." - logger.error(f"{message} Error: {err}", exc_info=True) + logger.error(f"{message} Error: {err}") raise RegistryError(message, code=ErrorCode.TRANSPORT_ERROR) from err except LoginError as err: # For linter due to it not liking this line length text = "failed to execute due to a registry login error." message = f"{cmd_type} {text}" - logger.error(f"{message} Error: {err}", exc_info=True) + logger.error(f"{message} Error: {err}") raise RegistryError(message) from err except Exception as err: message = f"{cmd_type} failed to execute due to an unknown error." - logger.error(f"{message} Error: {err}", exc_info=True) + logger.error(f"{message} Error: {err}") raise RegistryError(message) from err else: if response.code >= 2000: @@ -134,21 +130,16 @@ class EPPLibWrapper: else: return response - def _retry(self, command, *, cleaned=False): + def _retry(self, command): """Retry sending a command through EPP by re-initializing the client and then sending the command.""" - logger.info("_retry called") # re-initialize by disconnecting and initial self._disconnect() self._initialize_client() - # try to prevent use of this method without appropriate safeguards - if not cleaned: - raise ValueError("Please sanitize user input before sending it.") return self._send(command) def send(self, command, *, cleaned=False): """Login, send the command, then close the connection. Tries 3 times.""" - logger.info("send called") # try to prevent use of this method without appropriate safeguards if not cleaned: raise ValueError("Please sanitize user input before sending it.") @@ -172,4 +163,4 @@ try: CLIENT = EPPLibWrapper() logger.info("registry client initialized") except Exception: - logger.warning("Unable to configure epplib. Registrar cannot contact registry.", exc_info=True) + logger.warning("Unable to configure epplib. Registrar cannot contact registry.") diff --git a/src/epplibwrapper/tests/test_client.py b/src/epplibwrapper/tests/test_client.py new file mode 100644 index 000000000..e72d48629 --- /dev/null +++ b/src/epplibwrapper/tests/test_client.py @@ -0,0 +1,259 @@ +from unittest.mock import MagicMock, patch +from django.test import TestCase +from epplibwrapper.client import EPPLibWrapper +from epplibwrapper.errors import RegistryError, LoginError +from .common import less_console_noise +import logging + +try: + from epplib import commands + from epplib.client import Client + from epplib.exceptions import TransportError + from epplib.transport import SocketTransport + from epplib.models import common, info + from epplib.responses import Result +except ImportError: + pass + +logger = logging.getLogger(__name__) + + +class TestClient(TestCase): + """Test the EPPlibwrapper client""" + + def fake_result(self, code, msg): + """Helper function to create a fake Result object""" + return Result( + code=code, + msg=msg, + res_data=[], + cl_tr_id="cl_tr_id", + sv_tr_id="sv_tr_id" + ) + + @patch("epplibwrapper.client.Client") + def test_initialize_client_success(self, mock_client): + """Test when the initialize_client is successful""" + with less_console_noise(): + # Mock the Client instance and its methods + mock_connect = MagicMock() + # Create a mock Result instance + mock_result = MagicMock(spec=Result) + mock_result.code = 200 + mock_result.msg = "Success" + mock_result.res_data = ["data1", "data2"] + mock_result.cl_tr_id = "client_id" + mock_result.sv_tr_id = "server_id" + mock_send = MagicMock(return_value=mock_result) + mock_client.return_value.connect = mock_connect + mock_client.return_value.send = mock_send + + # Create EPPLibWrapper instance and initialize client + wrapper = EPPLibWrapper() + + # Assert that connect method is called once + mock_connect.assert_called_once() + # Assert that _client is not None after initialization + self.assertIsNotNone(wrapper._client) + + @patch("epplibwrapper.client.Client") + def test_initialize_client_transport_error(self, mock_client): + """Test when the send(login) step of initialize_client raises a TransportError.""" + with less_console_noise(): + # Mock the Client instance and its methods + mock_connect = MagicMock() + mock_send = MagicMock(side_effect=TransportError("Transport error")) + mock_client.return_value.connect = mock_connect + mock_client.return_value.send = mock_send + + with self.assertRaises(RegistryError): + # Create EPPLibWrapper instance and initialize client + # if functioning as expected, initial __init__ should except + # and log any Exception raised + wrapper = EPPLibWrapper() + # so call _initialize_client a second time directly to test + # the raised exception + wrapper._initialize_client() + + @patch("epplibwrapper.client.Client") + def test_initialize_client_login_error(self, mock_client): + """Test when the send(login) step of initialize_client returns (2400) comamnd failed code.""" + with less_console_noise(): + # Mock the Client instance and its methods + mock_connect = MagicMock() + # Create a mock Result instance + mock_result = MagicMock(spec=Result) + mock_result.code = 2400 + mock_result.msg = "Login failed" + mock_result.res_data = ["data1", "data2"] + mock_result.cl_tr_id = "client_id" + mock_result.sv_tr_id = "server_id" + mock_send = MagicMock(return_value=mock_result) + mock_client.return_value.connect = mock_connect + mock_client.return_value.send = mock_send + + with self.assertRaises(LoginError): + # Create EPPLibWrapper instance and initialize client + # if functioning as expected, initial __init__ should except + # and log any Exception raised + wrapper = EPPLibWrapper() + # so call _initialize_client a second time directly to test + # the raised exception + wrapper._initialize_client() + + @patch("epplibwrapper.client.Client") + def test_initialize_client_unknown_exception(self, mock_client): + """Test when the send(login) step of initialize_client raises an unexpected Exception.""" + with less_console_noise(): + # Mock the Client instance and its methods + mock_connect = MagicMock() + mock_send = MagicMock(side_effect=Exception("Unknown exception")) + mock_client.return_value.connect = mock_connect + mock_client.return_value.send = mock_send + + with self.assertRaises(RegistryError): + # Create EPPLibWrapper instance and initialize client + # if functioning as expected, initial __init__ should except + # and log any Exception raised + wrapper = EPPLibWrapper() + # so call _initialize_client a second time directly to test + # the raised exception + wrapper._initialize_client() + + @patch("epplibwrapper.client.Client") + def test_initialize_client_fails_recovers_with_send_command(self, mock_client): + """Test when the initialize_client fails on the connect() step. And then a subsequent + call to send() should recover and re-initialize the client and properly return + the successful send command. + Flow: + Initialization step fails at app init + Send command fails (with 2400 code) prompting retry + Client closes and re-initializes, and command is sent successfully""" + with less_console_noise(): + # Mock the Client instance and its methods + # close() should return successfully + mock_close = MagicMock() + mock_client.return_value.close = mock_close + # Create success and failure results + command_success_result = self.fake_result(1000, "Command completed successfully") + command_failure_result = self.fake_result(2400, "Command failed") + # side_effect for the connect() calls + # first connect() should raise an Exception + # subsequent connect() calls should return success + connect_call_count = 0 + def connect_side_effect(*args, **kwargs): + nonlocal connect_call_count + connect_call_count += 1 + if connect_call_count == 1: + raise Exception("Connection failed") + else: + return command_success_result + mock_connect = MagicMock(side_effect=connect_side_effect) + mock_client.return_value.connect = mock_connect + # side_effect for the send() calls + # first send will be the send("InfoDomainCommand") and should fail + # subsequend send() calls should return success + send_call_count = 0 + def send_side_effect(*args, **kwargs): + nonlocal send_call_count + send_call_count += 1 + if send_call_count == 1: + return command_failure_result + else: + return command_success_result + mock_send = MagicMock(side_effect=send_side_effect) + mock_client.return_value.send = mock_send + # Create EPPLibWrapper instance and call send command + wrapper = EPPLibWrapper() + wrapper.send("InfoDomainCommand", cleaned=True) + # two connect() calls should be made, the initial failed connect() + # and the successful connect() during retry() + self.assertEquals(mock_connect.call_count,2) + # close() should only be called once, during retry() + mock_close.assert_called_once() + # send called 4 times: failed send("InfoDomainCommand"), passed send(logout), + # passed send(login), passed send("InfoDomainCommand") + self.assertEquals(mock_send.call_count,4) + + @patch("epplibwrapper.client.Client") + def test_send_command_failed_retries_and_fails_again(self, mock_client): + """Test when the send("InfoDomainCommand) call fails with a 2400, prompting a retry + and the subsequent send("InfoDomainCommand) call also fails with a 2400, raise + a RegistryError + Flow: + Initialization succeeds + Send command fails (with 2400 code) prompting retry + Client closes and re-initializes, and command fails again with 2400""" + with less_console_noise(): + # Mock the Client instance and its methods + # connect() and close() should succeed throughout + mock_connect = MagicMock() + mock_close = MagicMock() + # Create a mock Result instance + send_command_success_result = self.fake_result(1000, "Command completed successfully") + send_command_failure_result = self.fake_result(2400, "Command failed") + # side_effect for send command, passes for all other sends (login, logout), but + # fails for send("InfoDomainCommand") + def side_effect(*args, **kwargs): + if args[0] == "InfoDomainCommand": + return send_command_failure_result + else: + return send_command_success_result + mock_send = MagicMock(side_effect=side_effect) + mock_client.return_value.connect = mock_connect + mock_client.return_value.close = mock_close + mock_client.return_value.send = mock_send + + with self.assertRaises(RegistryError): + # Create EPPLibWrapper instance and initialize client + wrapper = EPPLibWrapper() + # call send, which should throw a RegistryError (after retry) + wrapper.send("InfoDomainCommand", cleaned=True) + # connect() should be called twice, once during initialization, second time + # during retry + self.assertEquals(mock_connect.call_count,2) + # close() is called once during retry + mock_close.assert_called_once() + # send() is called 5 times: send(login), send(command) fails, send(logout) + # send(login), send(command) + self.assertEquals(mock_send.call_count,5) + + @patch("epplibwrapper.client.Client") + def test_send_command_failure_prompts_successful_retry(self, mock_client): + """Test when the send("InfoDomainCommand) call fails with a 2400, prompting a retry + and the subsequent send("InfoDomainCommand) call succeeds + Flow: + Initialization succeeds + Send command fails (with 2400 code) prompting retry + Client closes and re-initializes, and command succeeds""" + with less_console_noise(): + # Mock the Client instance and its methods + # connect() and close() should succeed throughout + mock_connect = MagicMock() + mock_close = MagicMock() + # create success and failure result messages + send_command_success_result = self.fake_result(1000, "Command completed successfully") + send_command_failure_result = self.fake_result(2400, "Command failed") + # side_effect for send call, initial send(login) succeeds during initialization, next send(command) + # fails, subsequent sends (logout, login, command) all succeed + send_call_count = 0 + def side_effect(*args, **kwargs): + nonlocal send_call_count + send_call_count += 1 + if send_call_count == 2: + return send_command_failure_result + else: + return send_command_success_result + mock_send = MagicMock(side_effect=side_effect) + mock_client.return_value.connect = mock_connect + mock_client.return_value.close = mock_close + mock_client.return_value.send = mock_send + # Create EPPLibWrapper instance and initialize client + wrapper = EPPLibWrapper() + wrapper.send("InfoDomainCommand", cleaned=True) + # connect() is called twice, once during initialization of app, once during retry + self.assertEquals(mock_connect.call_count,2) + # close() is called once, during retry + mock_close.assert_called_once() + # send() is called 5 times: send(login), send(command) fail, send(logout), send(login), send(command) + self.assertEquals(mock_send.call_count,5) \ No newline at end of file diff --git a/src/epplibwrapper/tests/test_pool.py b/src/epplibwrapper/tests/test_pool.py deleted file mode 100644 index 0cf589ec6..000000000 --- a/src/epplibwrapper/tests/test_pool.py +++ /dev/null @@ -1,260 +0,0 @@ -import datetime -from pathlib import Path -from unittest.mock import MagicMock, patch -from dateutil.tz import tzlocal # type: ignore -from django.test import TestCase -from epplibwrapper.client import EPPLibWrapper -from epplibwrapper.errors import RegistryError -from registrar.models.domain import registry -from contextlib import ExitStack -from .common import less_console_noise -import logging - -try: - from epplib import commands - from epplib.client import Client - from epplib.exceptions import TransportError - from epplib.transport import SocketTransport - from epplib.models import common, info -except ImportError: - pass - -logger = logging.getLogger(__name__) - - -class TestConnectionPool(TestCase): - """Tests for our connection pooling behaviour""" - - # def setUp(self): - # # Mimic the settings added to settings.py - # self.pool_options = { - # # Current pool size - # "size": 1, - # # Which errors the pool should look out for - # "exc_classes": (TransportError,), - # # Occasionally pings the registry to keep the connection alive. - # # Value in seconds => (keepalive / size) - # "keepalive": 60, - # } - - # def fake_socket(self, login, client): - # # Linter reasons - # pw = "none" - # # Create a fake client object - # fake_client = Client( - # SocketTransport( - # "none", - # cert_file="path/to/cert_file", - # key_file="path/to/key_file", - # password=pw, - # ) - # ) - - # return Socket(fake_client, MagicMock()) - - # def patch_success(self): - # return True - - # def fake_send(self, command, cleaned=None): - # mock = MagicMock( - # code=1000, - # msg="Command completed successfully", - # res_data=None, - # cl_tr_id="xkw1uo#2023-10-17T15:29:09.559376", - # sv_tr_id="5CcH4gxISuGkq8eqvr1UyQ==-35a", - # extensions=[], - # msg_q=None, - # ) - # return mock - - # def fake_client(mock_client): - # pw = "none" - # client = Client( - # SocketTransport( - # "none", - # cert_file="path/to/cert_file", - # key_file="path/to/key_file", - # password=pw, - # ) - # ) - # return client - - # @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) - # def test_pool_sends_data(self): - # """A .send is invoked on the pool successfully""" - # expected_result = { - # "cl_tr_id": None, - # "code": 1000, - # "extensions": [], - # "msg": "Command completed successfully", - # "msg_q": None, - # "res_data": [ - # info.InfoDomainResultData( - # roid="DF1340360-GOV", - # statuses=[ - # common.Status( - # state="serverTransferProhibited", - # description=None, - # lang="en", - # ), - # common.Status(state="inactive", description=None, lang="en"), - # ], - # cl_id="gov2023-ote", - # cr_id="gov2023-ote", - # cr_date=datetime.datetime(2023, 8, 15, 23, 56, 36, tzinfo=tzlocal()), - # up_id="gov2023-ote", - # up_date=datetime.datetime(2023, 8, 17, 2, 3, 19, tzinfo=tzlocal()), - # tr_date=None, - # name="test3.gov", - # registrant="TuaWnx9hnm84GCSU", - # admins=[], - # nsset=None, - # keyset=None, - # ex_date=datetime.date(2024, 8, 15), - # auth_info=info.DomainAuthInfo(pw="2fooBAR123fooBaz"), - # ) - # ], - # "sv_tr_id": "wRRNVhKhQW2m6wsUHbo/lA==-29a", - # } - - # # Mock a response from EPP - # def fake_receive(command, cleaned=None): - # location = Path(__file__).parent / "utility" / "infoDomain.xml" - # xml = (location).read_bytes() - # return xml - - # def do_nothing(command): - # pass - - # # Mock what happens inside the "with" - # with ExitStack() as stack: - # stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) - # stack.enter_context(patch.object(Socket, "connect", self.fake_client)) - # stack.enter_context(patch.object(EPPConnectionPool, "kill_all_connections", do_nothing)) - # stack.enter_context(patch.object(SocketTransport, "send", self.fake_send)) - # stack.enter_context(patch.object(SocketTransport, "receive", fake_receive)) - # with less_console_noise(): - # # Restart the connection pool - # registry.start_connection_pool() - # # Pool should be running, and be the right size - # self.assertEqual(registry.pool_status.connection_success, True) - # self.assertEqual(registry.pool_status.pool_running, True) - - # # Send a command - # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - - # # Should this ever fail, it either means that the schema has changed, - # # or the pool is broken. - # # If the schema has changed: Update the associated infoDomain.xml file - # self.assertEqual(result.__dict__, expected_result) - - # # The number of open pools should match the number of requested ones. - # # If it is 0, then they failed to open - # self.assertEqual(len(registry._pool.conn), self.pool_options["size"]) - # # Kill the connection pool - # registry.kill_pool() - - # @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) - # def test_pool_restarts_on_send(self): - # """A .send is invoked, but the pool isn't running. - # The pool should restart.""" - # expected_result = { - # "cl_tr_id": None, - # "code": 1000, - # "extensions": [], - # "msg": "Command completed successfully", - # "msg_q": None, - # "res_data": [ - # info.InfoDomainResultData( - # roid="DF1340360-GOV", - # statuses=[ - # common.Status( - # state="serverTransferProhibited", - # description=None, - # lang="en", - # ), - # common.Status(state="inactive", description=None, lang="en"), - # ], - # cl_id="gov2023-ote", - # cr_id="gov2023-ote", - # cr_date=datetime.datetime(2023, 8, 15, 23, 56, 36, tzinfo=tzlocal()), - # up_id="gov2023-ote", - # up_date=datetime.datetime(2023, 8, 17, 2, 3, 19, tzinfo=tzlocal()), - # tr_date=None, - # name="test3.gov", - # registrant="TuaWnx9hnm84GCSU", - # admins=[], - # nsset=None, - # keyset=None, - # ex_date=datetime.date(2024, 8, 15), - # auth_info=info.DomainAuthInfo(pw="2fooBAR123fooBaz"), - # ) - # ], - # "sv_tr_id": "wRRNVhKhQW2m6wsUHbo/lA==-29a", - # } - - # # Mock a response from EPP - # def fake_receive(command, cleaned=None): - # location = Path(__file__).parent / "utility" / "infoDomain.xml" - # xml = (location).read_bytes() - # return xml - - # def do_nothing(command): - # pass - - # # Mock what happens inside the "with" - # with ExitStack() as stack: - # stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) - # stack.enter_context(patch.object(Socket, "connect", self.fake_client)) - # stack.enter_context(patch.object(EPPConnectionPool, "kill_all_connections", do_nothing)) - # stack.enter_context(patch.object(SocketTransport, "send", self.fake_send)) - # stack.enter_context(patch.object(SocketTransport, "receive", fake_receive)) - # with less_console_noise(): - # # Start the connection pool - # registry.start_connection_pool() - # # Kill the connection pool - # registry.kill_pool() - - # self.assertEqual(registry.pool_status.pool_running, False) - - # # An exception should be raised as end user will be informed - # # that they cannot connect to EPP - # with self.assertRaises(RegistryError): - # expected = "InfoDomain failed to execute due to a connection error." - # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - # self.assertEqual(result, expected) - - # # A subsequent command should be successful, as the pool restarts - # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - # # Should this ever fail, it either means that the schema has changed, - # # or the pool is broken. - # # If the schema has changed: Update the associated infoDomain.xml file - # self.assertEqual(result.__dict__, expected_result) - - # # The number of open pools should match the number of requested ones. - # # If it is 0, then they failed to open - # self.assertEqual(len(registry._pool.conn), self.pool_options["size"]) - # # Kill the connection pool - # registry.kill_pool() - - # @patch.object(EPPLibWrapper, "_test_registry_connection_success", patch_success) - # def test_raises_connection_error(self): - # """A .send is invoked on the pool, but registry connection is lost - # right as we send a command.""" - - # with ExitStack() as stack: - # stack.enter_context(patch.object(EPPConnectionPool, "_create_socket", self.fake_socket)) - # stack.enter_context(patch.object(Socket, "connect", self.fake_client)) - # with less_console_noise(): - # # Start the connection pool - # registry.start_connection_pool() - - # # Pool should be running - # self.assertEqual(registry.pool_status.connection_success, True) - # self.assertEqual(registry.pool_status.pool_running, True) - - # # Try to send a command out - should fail - # with self.assertRaises(RegistryError): - # expected = "InfoDomain failed to execute due to a connection error." - # result = registry.send(commands.InfoDomain(name="test.gov"), cleaned=True) - # self.assertEqual(result, expected) From 78c4bb4a8d01e10d0fa4504e4c74def9334f0a23 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Fri, 1 Mar 2024 22:25:58 -0500 Subject: [PATCH 17/37] format changes for satisfying lint, ignore types mainly --- src/epplibwrapper/client.py | 14 +++++----- src/epplibwrapper/tests/test_client.py | 36 ++++++++++++-------------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/epplibwrapper/client.py b/src/epplibwrapper/client.py index 408f537a1..bd39a37d6 100644 --- a/src/epplibwrapper/client.py +++ b/src/epplibwrapper/client.py @@ -42,7 +42,7 @@ class EPPLibWrapper: # set _client to None initially. In the event that the __init__ fails # before _client initializes, app should still start and be in a state # that it can attempt _client initialization on send attempts - self._client = None + self._client = None # type: ignore # prepare (but do not send) a Login command self._login = commands.Login( cl_id=settings.SECRET_REGISTRY_CL_ID, @@ -62,7 +62,7 @@ class EPPLibWrapper: client. Raises errors if initialization fails. This method will be called at app initialization, and also during retries.""" # establish a client object with a TCP socket transport - self._client = Client( + self._client = Client( # type: ignore SocketTransport( settings.SECRET_REGISTRY_HOSTNAME, cert_file=CERT.filename, @@ -72,10 +72,10 @@ class EPPLibWrapper: ) try: # use the _client object to connect - self._client.connect() - response = self._client.send(self._login) + self._client.connect() # type: ignore + response = self._client.send(self._login) # type:ignore if response.code >= 2000: # type: ignore - self._client.close() + self._client.close() # type:ignore raise LoginError(response.msg) # type: ignore except TransportError as err: message = "_initialize_client failed to execute due to a connection error." @@ -91,8 +91,8 @@ class EPPLibWrapper: def _disconnect(self) -> None: """Close the connection.""" try: - self._client.send(commands.Logout()) - self._client.close() + self._client.send(commands.Logout()) # type: ignore + self._client.close() # type: ignore except Exception: logger.warning("Connection to registry was not cleanly closed.") diff --git a/src/epplibwrapper/tests/test_client.py b/src/epplibwrapper/tests/test_client.py index e72d48629..f95b37dcd 100644 --- a/src/epplibwrapper/tests/test_client.py +++ b/src/epplibwrapper/tests/test_client.py @@ -6,11 +6,7 @@ from .common import less_console_noise import logging try: - from epplib import commands - from epplib.client import Client from epplib.exceptions import TransportError - from epplib.transport import SocketTransport - from epplib.models import common, info from epplib.responses import Result except ImportError: pass @@ -23,14 +19,8 @@ class TestClient(TestCase): def fake_result(self, code, msg): """Helper function to create a fake Result object""" - return Result( - code=code, - msg=msg, - res_data=[], - cl_tr_id="cl_tr_id", - sv_tr_id="sv_tr_id" - ) - + return Result(code=code, msg=msg, res_data=[], cl_tr_id="cl_tr_id", sv_tr_id="sv_tr_id") + @patch("epplibwrapper.client.Client") def test_initialize_client_success(self, mock_client): """Test when the initialize_client is successful""" @@ -141,6 +131,7 @@ class TestClient(TestCase): # first connect() should raise an Exception # subsequent connect() calls should return success connect_call_count = 0 + def connect_side_effect(*args, **kwargs): nonlocal connect_call_count connect_call_count += 1 @@ -148,12 +139,14 @@ class TestClient(TestCase): raise Exception("Connection failed") else: return command_success_result + mock_connect = MagicMock(side_effect=connect_side_effect) mock_client.return_value.connect = mock_connect # side_effect for the send() calls # first send will be the send("InfoDomainCommand") and should fail # subsequend send() calls should return success send_call_count = 0 + def send_side_effect(*args, **kwargs): nonlocal send_call_count send_call_count += 1 @@ -161,19 +154,20 @@ class TestClient(TestCase): return command_failure_result else: return command_success_result + mock_send = MagicMock(side_effect=send_side_effect) - mock_client.return_value.send = mock_send + mock_client.return_value.send = mock_send # Create EPPLibWrapper instance and call send command wrapper = EPPLibWrapper() wrapper.send("InfoDomainCommand", cleaned=True) # two connect() calls should be made, the initial failed connect() # and the successful connect() during retry() - self.assertEquals(mock_connect.call_count,2) + self.assertEquals(mock_connect.call_count, 2) # close() should only be called once, during retry() mock_close.assert_called_once() # send called 4 times: failed send("InfoDomainCommand"), passed send(logout), # passed send(login), passed send("InfoDomainCommand") - self.assertEquals(mock_send.call_count,4) + self.assertEquals(mock_send.call_count, 4) @patch("epplibwrapper.client.Client") def test_send_command_failed_retries_and_fails_again(self, mock_client): @@ -192,6 +186,7 @@ class TestClient(TestCase): # Create a mock Result instance send_command_success_result = self.fake_result(1000, "Command completed successfully") send_command_failure_result = self.fake_result(2400, "Command failed") + # side_effect for send command, passes for all other sends (login, logout), but # fails for send("InfoDomainCommand") def side_effect(*args, **kwargs): @@ -199,6 +194,7 @@ class TestClient(TestCase): return send_command_failure_result else: return send_command_success_result + mock_send = MagicMock(side_effect=side_effect) mock_client.return_value.connect = mock_connect mock_client.return_value.close = mock_close @@ -211,12 +207,12 @@ class TestClient(TestCase): wrapper.send("InfoDomainCommand", cleaned=True) # connect() should be called twice, once during initialization, second time # during retry - self.assertEquals(mock_connect.call_count,2) + self.assertEquals(mock_connect.call_count, 2) # close() is called once during retry mock_close.assert_called_once() # send() is called 5 times: send(login), send(command) fails, send(logout) # send(login), send(command) - self.assertEquals(mock_send.call_count,5) + self.assertEquals(mock_send.call_count, 5) @patch("epplibwrapper.client.Client") def test_send_command_failure_prompts_successful_retry(self, mock_client): @@ -237,6 +233,7 @@ class TestClient(TestCase): # side_effect for send call, initial send(login) succeeds during initialization, next send(command) # fails, subsequent sends (logout, login, command) all succeed send_call_count = 0 + def side_effect(*args, **kwargs): nonlocal send_call_count send_call_count += 1 @@ -244,6 +241,7 @@ class TestClient(TestCase): return send_command_failure_result else: return send_command_success_result + mock_send = MagicMock(side_effect=side_effect) mock_client.return_value.connect = mock_connect mock_client.return_value.close = mock_close @@ -252,8 +250,8 @@ class TestClient(TestCase): wrapper = EPPLibWrapper() wrapper.send("InfoDomainCommand", cleaned=True) # connect() is called twice, once during initialization of app, once during retry - self.assertEquals(mock_connect.call_count,2) + self.assertEquals(mock_connect.call_count, 2) # close() is called once, during retry mock_close.assert_called_once() # send() is called 5 times: send(login), send(command) fail, send(logout), send(login), send(command) - self.assertEquals(mock_send.call_count,5) \ No newline at end of file + self.assertEquals(mock_send.call_count, 5) From 7fd664b94aea1f3f8a65715af52c2763b1026ada Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Mon, 4 Mar 2024 13:49:47 -0500 Subject: [PATCH 18/37] small fix to tests outside of the scope of this ticket --- src/registrar/tests/test_admin.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py index d76f12f35..3010247e7 100644 --- a/src/registrar/tests/test_admin.py +++ b/src/registrar/tests/test_admin.py @@ -1542,6 +1542,8 @@ class DomainInvitationAdminTest(TestCase): def tearDown(self): """Delete all DomainInvitation objects""" DomainInvitation.objects.all().delete() + User.objects.all().delete() + Contact.objects.all().delete() def test_get_filters(self): """Ensures that our filters are displaying correctly""" From 579d1db2e360c4c4e20bdc198317f156fa0c0012 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Mon, 4 Mar 2024 13:54:17 -0500 Subject: [PATCH 19/37] attempting to fix tests broken in pipeline --- src/registrar/tests/test_admin.py | 66 +++++++++++++++---------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py index 3010247e7..dd78d569c 100644 --- a/src/registrar/tests/test_admin.py +++ b/src/registrar/tests/test_admin.py @@ -1816,41 +1816,41 @@ class ListHeaderAdminTest(TestCase): self.superuser = create_superuser() def test_changelist_view(self): - with less_console_noise(): - # Have to get creative to get past linter - p = "adminpass" - self.client.login(username="superuser", password=p) - # Mock a user - user = mock_user() - # Make the request using the Client class - # which handles CSRF - # Follow=True handles the redirect - response = self.client.get( - "/admin/registrar/domainapplication/", + # with less_console_noise(): + # Have to get creative to get past linter + p = "adminpass" + self.client.login(username="superuser", password=p) + # Mock a user + user = mock_user() + # Make the request using the Client class + # which handles CSRF + # Follow=True handles the redirect + response = self.client.get( + "/admin/registrar/domainapplication/", + { + "status__exact": "started", + "investigator__id__exact": user.id, + "q": "Hello", + }, + follow=True, + ) + # Assert that the filters and search_query are added to the extra_context + self.assertIn("filters", response.context) + self.assertIn("search_query", response.context) + # Assert the content of filters and search_query + filters = response.context["filters"] + search_query = response.context["search_query"] + self.assertEqual(search_query, "Hello") + self.assertEqual( + filters, + [ + {"parameter_name": "status", "parameter_value": "started"}, { - "status__exact": "started", - "investigator__id__exact": user.id, - "q": "Hello", + "parameter_name": "investigator", + "parameter_value": user.first_name + " " + user.last_name, }, - follow=True, - ) - # Assert that the filters and search_query are added to the extra_context - self.assertIn("filters", response.context) - self.assertIn("search_query", response.context) - # Assert the content of filters and search_query - filters = response.context["filters"] - search_query = response.context["search_query"] - self.assertEqual(search_query, "Hello") - self.assertEqual( - filters, - [ - {"parameter_name": "status", "parameter_value": "started"}, - { - "parameter_name": "investigator", - "parameter_value": user.first_name + " " + user.last_name, - }, - ], - ) + ], + ) def test_get_filters(self): with less_console_noise(): From 0171e57cefa517361d817aee75d2be9f6cdb16e2 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Mon, 4 Mar 2024 14:02:42 -0500 Subject: [PATCH 20/37] adding tblib to diagnose test failures better --- src/Pipfile | 1 + src/Pipfile.lock | 579 ++++++++++++++++++++++--------------------- src/requirements.txt | 35 +-- 3 files changed, 314 insertions(+), 301 deletions(-) diff --git a/src/Pipfile b/src/Pipfile index 51417d578..80a0761a1 100644 --- a/src/Pipfile +++ b/src/Pipfile @@ -30,6 +30,7 @@ greenlet = "*" gevent = "*" fred-epplib = {git = "https://github.com/cisagov/epplib.git", ref = "master"} geventconnpool = {git = "https://github.com/rasky/geventconnpool.git", ref = "1bbb93a714a331a069adf27265fe582d9ba7ecd4"} +tblib = "*" [dev-packages] django-debug-toolbar = "*" diff --git a/src/Pipfile.lock b/src/Pipfile.lock index 7d511a0e5..2e08b0628 100644 --- a/src/Pipfile.lock +++ b/src/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a672aeb8951fd850e90ad87c6f03cf71e2fc2b387d56fd3942361cb0b45bb449" + "sha256": "b5d93b1b9ccafc37019276a222957544bab3f1f46b5dab8a0f2ffc2e5c9e1678" }, "pipfile-spec": 6, "requires": {}, @@ -32,29 +32,29 @@ }, "boto3": { "hashes": [ - "sha256:65acfe7f1cf2a9b7df3d4edb87c8022e02685825bd1957e7bb678cc0d09f5e5f", - "sha256:73f5ec89cb3ddb3ed577317889fd2f2df783f66b6502a9a4239979607e33bf74" + "sha256:8b3f5cc7fbedcbb22271c328039df8a6ab343001e746e0cdb24774c426cadcf8", + "sha256:f201b6a416f809283d554c652211eecec9fe3a52ed4063dab3f3e7aea7571d9c" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.34.37" + "version": "==1.34.54" }, "botocore": { "hashes": [ - "sha256:2a5bf33aacd2d970afd3d492e179e06ea98a5469030d5cfe7a2ad9995f7bb2ef", - "sha256:3c46ddb1679e6ef45ca78b48665398636bda532a07cd476e4b500697d13d9a99" + "sha256:4061ff4be3efcf53547ebadf2c94d419dfc8be7beec24e9fa1819599ffd936fa", + "sha256:bf215d93e9d5544c593962780d194e74c6ee40b883d0b885e62ef35fc0ec01e5" ], "markers": "python_version >= '3.8'", - "version": "==1.34.37" + "version": "==1.34.54" }, "cachetools": { "hashes": [ - "sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2", - "sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1" + "sha256:0abad1021d3f8325b2fc1d2e9c8b9c9d57b04c3932657a72465447332c24d945", + "sha256:ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105" ], "index": "pypi", "markers": "python_version >= '3.7'", - "version": "==5.3.2" + "version": "==5.3.3" }, "certifi": { "hashes": [ @@ -228,41 +228,41 @@ }, "cryptography": { "hashes": [ - "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380", - "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589", - "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea", - "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65", - "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a", - "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3", - "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008", - "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1", - "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2", - "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635", - "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2", - "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90", - "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee", - "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a", - "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242", - "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12", - "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2", - "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d", - "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be", - "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee", - "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6", - "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529", - "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929", - "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1", - "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6", - "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a", - "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446", - "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9", - "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888", - "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4", - "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33", - "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f" + "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee", + "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576", + "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d", + "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30", + "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413", + "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb", + "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da", + "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4", + "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd", + "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc", + "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8", + "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1", + "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc", + "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e", + "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8", + "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940", + "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400", + "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7", + "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16", + "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278", + "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74", + "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec", + "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1", + "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2", + "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c", + "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922", + "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a", + "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6", + "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1", + "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e", + "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac", + "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7" ], "markers": "python_version >= '3.7'", - "version": "==42.0.2" + "version": "==42.0.5" }, "defusedxml": { "hashes": [ @@ -330,11 +330,11 @@ }, "django-csp": { "hashes": [ - "sha256:01443a07723f9a479d498bd7bb63571aaa771e690f64bde515db6cdb76e8041a", - "sha256:01eda02ad3f10261c74131cdc0b5a6a62b7c7ad4fd017fbefb7a14776e0a9727" + "sha256:19b2978b03fcd73517d7d67acbc04fbbcaec0facc3e83baa502965892d1e0719", + "sha256:ef0f1a9f7d8da68ae6e169c02e9ac661c0ecf04db70e0d1d85640512a68471c0" ], "index": "pypi", - "version": "==3.7" + "version": "==3.8" }, "django-fsm": { "hashes": [ @@ -384,12 +384,12 @@ }, "faker": { "hashes": [ - "sha256:60e89e5c0b584e285a7db05eceba35011a241954afdab2853cb246c8a56700a2", - "sha256:b7f76bb1b2ac4cdc54442d955e36e477c387000f31ce46887fb9722a041be60b" + "sha256:117ce1a2805c1bc5ca753b3dc6f9d567732893b2294b827d3164261ee8f20267", + "sha256:458d93580de34403a8dec1e8d5e6be2fee96c4deca63b95d71df7a6a80a690de" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==23.1.0" + "version": "==23.3.0" }, "fred-epplib": { "git": "https://github.com/cisagov/epplib.git", @@ -404,57 +404,59 @@ }, "future": { "hashes": [ - "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307" + "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216", + "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05" ], "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==0.18.3" + "version": "==1.0.0" }, "gevent": { "hashes": [ - "sha256:272cffdf535978d59c38ed837916dfd2b5d193be1e9e5dcc60a5f4d5025dd98a", - "sha256:2c7b5c9912378e5f5ccf180d1fdb1e83f42b71823483066eddbe10ef1a2fcaa2", - "sha256:36a549d632c14684bcbbd3014a6ce2666c5f2a500f34d58d32df6c9ea38b6535", - "sha256:4368f341a5f51611411ec3fc62426f52ac3d6d42eaee9ed0f9eebe715c80184e", - "sha256:43daf68496c03a35287b8b617f9f91e0e7c0d042aebcc060cadc3f049aadd653", - "sha256:455e5ee8103f722b503fa45dedb04f3ffdec978c1524647f8ba72b4f08490af1", - "sha256:45792c45d60f6ce3d19651d7fde0bc13e01b56bb4db60d3f32ab7d9ec467374c", - "sha256:4e24c2af9638d6c989caffc691a039d7c7022a31c0363da367c0d32ceb4a0648", - "sha256:52b4abf28e837f1865a9bdeef58ff6afd07d1d888b70b6804557e7908032e599", - "sha256:52e9f12cd1cda96603ce6b113d934f1aafb873e2c13182cf8e86d2c5c41982ea", - "sha256:5f3c781c84794926d853d6fb58554dc0dcc800ba25c41d42f6959c344b4db5a6", - "sha256:62d121344f7465e3739989ad6b91f53a6ca9110518231553fe5846dbe1b4518f", - "sha256:65883ac026731ac112184680d1f0f1e39fa6f4389fd1fc0bf46cc1388e2599f9", - "sha256:707904027d7130ff3e59ea387dddceedb133cc742b00b3ffe696d567147a9c9e", - "sha256:72c002235390d46f94938a96920d8856d4ffd9ddf62a303a0d7c118894097e34", - "sha256:7532c17bc6c1cbac265e751b95000961715adef35a25d2b0b1813aa7263fb397", - "sha256:78eebaf5e73ff91d34df48f4e35581ab4c84e22dd5338ef32714264063c57507", - "sha256:7c1abc6f25f475adc33e5fc2dbcc26a732608ac5375d0d306228738a9ae14d3b", - "sha256:7c28e38dcde327c217fdafb9d5d17d3e772f636f35df15ffae2d933a5587addd", - "sha256:7ccf0fd378257cb77d91c116e15c99e533374a8153632c48a3ecae7f7f4f09fe", - "sha256:921dda1c0b84e3d3b1778efa362d61ed29e2b215b90f81d498eb4d8eafcd0b7a", - "sha256:a2898b7048771917d85a1d548fd378e8a7b2ca963db8e17c6d90c76b495e0e2b", - "sha256:a3c5e9b1f766a7a64833334a18539a362fb563f6c4682f9634dea72cbe24f771", - "sha256:ada07076b380918829250201df1d016bdafb3acf352f35e5693b59dceee8dd2e", - "sha256:b101086f109168b23fa3586fccd1133494bdb97f86920a24dc0b23984dc30b69", - "sha256:bf456bd6b992eb0e1e869e2fd0caf817f0253e55ca7977fd0e72d0336a8c1c6a", - "sha256:bf7af500da05363e66f122896012acb6e101a552682f2352b618e541c941a011", - "sha256:c3e5d2fa532e4d3450595244de8ccf51f5721a05088813c1abd93ad274fe15e7", - "sha256:c84d34256c243b0a53d4335ef0bc76c735873986d478c53073861a92566a8d71", - "sha256:d163d59f1be5a4c4efcdd13c2177baaf24aadf721fdf2e1af9ee54a998d160f5", - "sha256:d57737860bfc332b9b5aa438963986afe90f49645f6e053140cfa0fa1bdae1ae", - "sha256:dbb22a9bbd6a13e925815ce70b940d1578dbe5d4013f20d23e8a11eddf8d14a7", - "sha256:dcb8612787a7f4626aa881ff15ff25439561a429f5b303048f0fca8a1c781c39", - "sha256:dd6c32ab977ecf7c7b8c2611ed95fa4aaebd69b74bf08f4b4960ad516861517d", - "sha256:de350fde10efa87ea60d742901e1053eb2127ebd8b59a7d3b90597eb4e586599", - "sha256:e1ead6863e596a8cc2a03e26a7a0981f84b6b3e956101135ff6d02df4d9a6b07", - "sha256:ed7a048d3e526a5c1d55c44cb3bc06cfdc1947d06d45006cc4cf60dedc628904", - "sha256:f632487c87866094546a74eefbca2c74c1d03638b715b6feb12e80120960185a", - "sha256:fae8d5b5b8fa2a8f63b39f5447168b02db10c888a3e387ed7af2bd1b8612e543", - "sha256:fde6402c5432b835fbb7698f1c7f2809c8d6b2bd9d047ac1f5a7c1d5aa569303" + "sha256:03aa5879acd6b7076f6a2a307410fb1e0d288b84b03cdfd8c74db8b4bc882fc5", + "sha256:117e5837bc74a1673605fb53f8bfe22feb6e5afa411f524c835b2ddf768db0de", + "sha256:141a2b24ad14f7b9576965c0c84927fc85f824a9bb19f6ec1e61e845d87c9cd8", + "sha256:14532a67f7cb29fb055a0e9b39f16b88ed22c66b96641df8c04bdc38c26b9ea5", + "sha256:1dffb395e500613e0452b9503153f8f7ba587c67dd4a85fc7cd7aa7430cb02cc", + "sha256:2955eea9c44c842c626feebf4459c42ce168685aa99594e049d03bedf53c2800", + "sha256:2ae3a25ecce0a5b0cd0808ab716bfca180230112bb4bc89b46ae0061d62d4afe", + "sha256:2e9ac06f225b696cdedbb22f9e805e2dd87bf82e8fa5e17756f94e88a9d37cf7", + "sha256:368a277bd9278ddb0fde308e6a43f544222d76ed0c4166e0d9f6b036586819d9", + "sha256:3adfb96637f44010be8abd1b5e73b5070f851b817a0b182e601202f20fa06533", + "sha256:3d5325ccfadfd3dcf72ff88a92fb8fc0b56cacc7225f0f4b6dcf186c1a6eeabc", + "sha256:432fc76f680acf7cf188c2ee0f5d3ab73b63c1f03114c7cd8a34cebbe5aa2056", + "sha256:44098038d5e2749b0784aabb27f1fcbb3f43edebedf64d0af0d26955611be8d6", + "sha256:5a1df555431f5cd5cc189a6ee3544d24f8c52f2529134685f1e878c4972ab026", + "sha256:6c47ae7d1174617b3509f5d884935e788f325eb8f1a7efc95d295c68d83cce40", + "sha256:6f947a9abc1a129858391b3d9334c45041c08a0f23d14333d5b844b6e5c17a07", + "sha256:782a771424fe74bc7e75c228a1da671578c2ba4ddb2ca09b8f959abdf787331e", + "sha256:7899a38d0ae7e817e99adb217f586d0a4620e315e4de577444ebeeed2c5729be", + "sha256:7b00f8c9065de3ad226f7979154a7b27f3b9151c8055c162332369262fc025d8", + "sha256:8f4b8e777d39013595a7740b4463e61b1cfe5f462f1b609b28fbc1e4c4ff01e5", + "sha256:90cbac1ec05b305a1b90ede61ef73126afdeb5a804ae04480d6da12c56378df1", + "sha256:918cdf8751b24986f915d743225ad6b702f83e1106e08a63b736e3a4c6ead789", + "sha256:9202f22ef811053077d01f43cc02b4aaf4472792f9fd0f5081b0b05c926cca19", + "sha256:94138682e68ec197db42ad7442d3cf9b328069c3ad8e4e5022e6b5cd3e7ffae5", + "sha256:968581d1717bbcf170758580f5f97a2925854943c45a19be4d47299507db2eb7", + "sha256:9d8d0642c63d453179058abc4143e30718b19a85cbf58c2744c9a63f06a1d388", + "sha256:a7ceb59986456ce851160867ce4929edaffbd2f069ae25717150199f8e1548b8", + "sha256:b9913c45d1be52d7a5db0c63977eebb51f68a2d5e6fd922d1d9b5e5fd758cc98", + "sha256:bde283313daf0b34a8d1bab30325f5cb0f4e11b5869dbe5bc61f8fe09a8f66f3", + "sha256:bf5b9c72b884c6f0c4ed26ef204ee1f768b9437330422492c319470954bc4cc7", + "sha256:ca80b121bbec76d7794fcb45e65a7eca660a76cc1a104ed439cdbd7df5f0b060", + "sha256:cdf66977a976d6a3cfb006afdf825d1482f84f7b81179db33941f2fc9673bb1d", + "sha256:d4faf846ed132fd7ebfbbf4fde588a62d21faa0faa06e6f468b7faa6f436b661", + "sha256:d7f87c2c02e03d99b95cfa6f7a776409083a9e4d468912e18c7680437b29222c", + "sha256:dd23df885318391856415e20acfd51a985cba6919f0be78ed89f5db9ff3a31cb", + "sha256:f5de3c676e57177b38857f6e3cdfbe8f38d1cd754b63200c0615eaa31f514b4f", + "sha256:f5e8e8d60e18d5f7fd49983f0c4696deeddaf6e608fbab33397671e2fcc6cc91", + "sha256:f7cac622e11b4253ac4536a654fe221249065d9a69feb6cdcd4d9af3503602e0", + "sha256:f8a04cf0c5b7139bc6368b461257d4a757ea2fe89b3773e494d235b7dd51119f", + "sha256:f8bb35ce57a63c9a6896c71a285818a3922d8ca05d150fd1fe49a7f57287b836", + "sha256:fbfdce91239fe306772faab57597186710d5699213f4df099d1612da7320d682" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==23.9.1" + "version": "==24.2.1" }, "geventconnpool": { "git": "https://github.com/rasky/geventconnpool.git", @@ -710,11 +712,11 @@ }, "marshmallow": { "hashes": [ - "sha256:4c1daff273513dc5eb24b219a8035559dc573c8f322558ef85f5438ddd1236dd", - "sha256:c21d4b98fee747c130e6bc8f45c4b3199ea66bc00c12ee1f639f0aeca034d5e9" + "sha256:20f53be28c6e374a711a16165fb22a8dc6003e3f7cda1285e3ca777b9193885b", + "sha256:e7997f83571c7fd476042c2c188e4ee8a78900ca5e74bd9c8097afa56624e9bd" ], "markers": "python_version >= '3.8'", - "version": "==3.20.2" + "version": "==3.21.0" }, "oic": { "hashes": [ @@ -742,10 +744,10 @@ }, "phonenumberslite": { "hashes": [ - "sha256:2b04a53401d01ab42564c1abc762fc9808ad398e71dacfa3b38d4321e112ecb3", - "sha256:74e3ee63dfa2bb562ce2e6ce74ce76ae74a2f81472005b80343235fb43426db4" + "sha256:137d53d5d78dca30bc2becf81a3e2ac74deb8f0997e9bbe44de515ece4bd92bd", + "sha256:e1f4359bff90c86d1b52db0e726d3334df00cc7d9c9c2ef66561d5f7a774d4ba" ], - "version": "==8.13.29" + "version": "==8.13.31" }, "psycopg2-binary": { "hashes": [ @@ -874,104 +876,104 @@ }, "pydantic": { "hashes": [ - "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f", - "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9" + "sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a", + "sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f" ], "markers": "python_version >= '3.8'", - "version": "==2.6.1" + "version": "==2.6.3" }, "pydantic-core": { "hashes": [ - "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379", - "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06", - "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05", - "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7", - "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753", - "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a", - "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731", - "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc", - "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380", - "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3", - "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c", - "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11", - "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990", - "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a", - "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2", - "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8", - "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97", - "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a", - "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8", - "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef", - "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77", - "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33", - "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82", - "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5", - "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b", - "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55", - "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e", - "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b", - "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7", - "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec", - "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc", - "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469", - "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b", - "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20", - "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e", - "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d", - "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f", - "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b", - "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039", - "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e", - "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2", - "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f", - "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b", - "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc", - "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8", - "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522", - "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e", - "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784", - "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a", - "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890", - "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485", - "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545", - "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f", - "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943", - "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878", - "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f", - "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17", - "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7", - "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286", - "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c", - "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb", - "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646", - "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978", - "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8", - "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15", - "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272", - "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2", - "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55", - "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf", - "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545", - "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4", - "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a", - "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804", - "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4", - "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0", - "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a", - "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113", - "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d", - "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25" + "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a", + "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed", + "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979", + "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff", + "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5", + "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45", + "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340", + "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad", + "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23", + "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6", + "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7", + "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241", + "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda", + "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187", + "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba", + "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c", + "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2", + "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c", + "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132", + "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf", + "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972", + "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db", + "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade", + "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4", + "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8", + "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f", + "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9", + "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48", + "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec", + "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d", + "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9", + "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb", + "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4", + "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89", + "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c", + "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9", + "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da", + "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac", + "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b", + "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf", + "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e", + "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137", + "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1", + "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b", + "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8", + "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e", + "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053", + "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01", + "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe", + "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd", + "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805", + "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183", + "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8", + "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99", + "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820", + "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074", + "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256", + "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8", + "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975", + "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad", + "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e", + "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca", + "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df", + "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b", + "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a", + "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a", + "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721", + "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a", + "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f", + "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2", + "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97", + "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6", + "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed", + "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc", + "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1", + "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe", + "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120", + "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f", + "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a" ], "markers": "python_version >= '3.8'", - "version": "==2.16.2" + "version": "==2.16.3" }, "pydantic-settings": { "hashes": [ - "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c", - "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a" + "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed", + "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091" ], "markers": "python_version >= '3.8'", - "version": "==2.1.0" + "version": "==2.2.1" }, "pyjwkest": { "hashes": [ @@ -982,11 +984,11 @@ }, "python-dateutil": { "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", + "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.2" + "version": "==2.9.0.post0" }, "python-dotenv": { "hashes": [ @@ -1015,11 +1017,11 @@ }, "setuptools": { "hashes": [ - "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05", - "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78" + "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56", + "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8" ], "markers": "python_version >= '3.8'", - "version": "==69.0.3" + "version": "==69.1.1" }, "six": { "hashes": [ @@ -1037,14 +1039,23 @@ "markers": "python_version >= '3.5'", "version": "==0.4.4" }, - "typing-extensions": { + "tblib": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129", + "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==3.0.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", + "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==4.10.0" }, "urllib3": { "hashes": [ @@ -1073,45 +1084,45 @@ }, "zope.interface": { "hashes": [ - "sha256:0c8cf55261e15590065039696607f6c9c1aeda700ceee40c70478552d323b3ff", - "sha256:13b7d0f2a67eb83c385880489dbb80145e9d344427b4262c49fbf2581677c11c", - "sha256:1f294a15f7723fc0d3b40701ca9b446133ec713eafc1cc6afa7b3d98666ee1ac", - "sha256:239a4a08525c080ff833560171d23b249f7f4d17fcbf9316ef4159f44997616f", - "sha256:2f8d89721834524a813f37fa174bac074ec3d179858e4ad1b7efd4401f8ac45d", - "sha256:2fdc7ccbd6eb6b7df5353012fbed6c3c5d04ceaca0038f75e601060e95345309", - "sha256:34c15ca9248f2e095ef2e93af2d633358c5f048c49fbfddf5fdfc47d5e263736", - "sha256:387545206c56b0315fbadb0431d5129c797f92dc59e276b3ce82db07ac1c6179", - "sha256:43b576c34ef0c1f5a4981163b551a8781896f2a37f71b8655fd20b5af0386abb", - "sha256:57d0a8ce40ce440f96a2c77824ee94bf0d0925e6089df7366c2272ccefcb7941", - "sha256:5a804abc126b33824a44a7aa94f06cd211a18bbf31898ba04bd0924fbe9d282d", - "sha256:67be3ca75012c6e9b109860820a8b6c9a84bfb036fbd1076246b98e56951ca92", - "sha256:6af47f10cfc54c2ba2d825220f180cc1e2d4914d783d6fc0cd93d43d7bc1c78b", - "sha256:6dc998f6de015723196a904045e5a2217f3590b62ea31990672e31fbc5370b41", - "sha256:70d2cef1bf529bff41559be2de9d44d47b002f65e17f43c73ddefc92f32bf00f", - "sha256:7ebc4d34e7620c4f0da7bf162c81978fce0ea820e4fa1e8fc40ee763839805f3", - "sha256:964a7af27379ff4357dad1256d9f215047e70e93009e532d36dcb8909036033d", - "sha256:97806e9ca3651588c1baaebb8d0c5ee3db95430b612db354c199b57378312ee8", - "sha256:9b9bc671626281f6045ad61d93a60f52fd5e8209b1610972cf0ef1bbe6d808e3", - "sha256:9ffdaa5290422ac0f1688cb8adb1b94ca56cee3ad11f29f2ae301df8aecba7d1", - "sha256:a0da79117952a9a41253696ed3e8b560a425197d4e41634a23b1507efe3273f1", - "sha256:a41f87bb93b8048fe866fa9e3d0c51e27fe55149035dcf5f43da4b56732c0a40", - "sha256:aa6fd016e9644406d0a61313e50348c706e911dca29736a3266fc9e28ec4ca6d", - "sha256:ad54ed57bdfa3254d23ae04a4b1ce405954969c1b0550cc2d1d2990e8b439de1", - "sha256:b012d023b4fb59183909b45d7f97fb493ef7a46d2838a5e716e3155081894605", - "sha256:b51b64432eed4c0744241e9ce5c70dcfecac866dff720e746d0a9c82f371dfa7", - "sha256:bbe81def9cf3e46f16ce01d9bfd8bea595e06505e51b7baf45115c77352675fd", - "sha256:c9559138690e1bd4ea6cd0954d22d1e9251e8025ce9ede5d0af0ceae4a401e43", - "sha256:e30506bcb03de8983f78884807e4fd95d8db6e65b69257eea05d13d519b83ac0", - "sha256:e33e86fd65f369f10608b08729c8f1c92ec7e0e485964670b4d2633a4812d36b", - "sha256:e441e8b7d587af0414d25e8d05e27040d78581388eed4c54c30c0c91aad3a379", - "sha256:e8bb9c990ca9027b4214fa543fd4025818dc95f8b7abce79d61dc8a2112b561a", - "sha256:ef43ee91c193f827e49599e824385ec7c7f3cd152d74cb1dfe02cb135f264d83", - "sha256:ef467d86d3cfde8b39ea1b35090208b0447caaabd38405420830f7fd85fbdd56", - "sha256:f89b28772fc2562ed9ad871c865f5320ef761a7fcc188a935e21fe8b31a38ca9", - "sha256:fddbab55a2473f1d3b8833ec6b7ac31e8211b0aa608df5ab09ce07f3727326de" + "sha256:02adbab560683c4eca3789cc0ac487dcc5f5a81cc48695ec247f00803cafe2fe", + "sha256:14e02a6fc1772b458ebb6be1c276528b362041217b9ca37e52ecea2cbdce9fac", + "sha256:25e0af9663eeac6b61b231b43c52293c2cb7f0c232d914bdcbfd3e3bd5c182ad", + "sha256:2606955a06c6852a6cff4abeca38346ed01e83f11e960caa9a821b3626a4467b", + "sha256:396f5c94654301819a7f3a702c5830f0ea7468d7b154d124ceac823e2419d000", + "sha256:3b240883fb43160574f8f738e6d09ddbdbf8fa3e8cea051603d9edfd947d9328", + "sha256:3b6c62813c63c543a06394a636978b22dffa8c5410affc9331ce6cdb5bfa8565", + "sha256:4ae9793f114cee5c464cc0b821ae4d36e1eba961542c6086f391a61aee167b6f", + "sha256:4bce517b85f5debe07b186fc7102b332676760f2e0c92b7185dd49c138734b70", + "sha256:4d45d2ba8195850e3e829f1f0016066a122bfa362cc9dc212527fc3d51369037", + "sha256:4dd374927c00764fcd6fe1046bea243ebdf403fba97a937493ae4be2c8912c2b", + "sha256:506f5410b36e5ba494136d9fa04c548eaf1a0d9c442b0b0e7a0944db7620e0ab", + "sha256:59f7374769b326a217d0b2366f1c176a45a4ff21e8f7cebb3b4a3537077eff85", + "sha256:5ee9789a20b0081dc469f65ff6c5007e67a940d5541419ca03ef20c6213dd099", + "sha256:6fc711acc4a1c702ca931fdbf7bf7c86f2a27d564c85c4964772dadf0e3c52f5", + "sha256:75d2ec3d9b401df759b87bc9e19d1b24db73083147089b43ae748aefa63067ef", + "sha256:76e0531d86523be7a46e15d379b0e975a9db84316617c0efe4af8338dc45b80c", + "sha256:8af82afc5998e1f307d5e72712526dba07403c73a9e287d906a8aa2b1f2e33dd", + "sha256:8f5d2c39f3283e461de3655e03faf10e4742bb87387113f787a7724f32db1e48", + "sha256:97785604824981ec8c81850dd25c8071d5ce04717a34296eeac771231fbdd5cd", + "sha256:a3046e8ab29b590d723821d0785598e0b2e32b636a0272a38409be43e3ae0550", + "sha256:abb0b3f2cb606981c7432f690db23506b1db5899620ad274e29dbbbdd740e797", + "sha256:ac7c2046d907e3b4e2605a130d162b1b783c170292a11216479bb1deb7cadebe", + "sha256:af27b3fe5b6bf9cd01b8e1c5ddea0a0d0a1b8c37dc1c7452f1e90bf817539c6d", + "sha256:b386b8b9d2b6a5e1e4eadd4e62335571244cb9193b7328c2b6e38b64cfda4f0e", + "sha256:b66335bbdbb4c004c25ae01cc4a54fd199afbc1fd164233813c6d3c2293bb7e1", + "sha256:d54f66c511ea01b9ef1d1a57420a93fbb9d48a08ec239f7d9c581092033156d0", + "sha256:de125151a53ecdb39df3cb3deb9951ed834dd6a110a9e795d985b10bb6db4532", + "sha256:de7916380abaef4bb4891740879b1afcba2045aee51799dfd6d6ca9bdc71f35f", + "sha256:e2fefad268ff5c5b314794e27e359e48aeb9c8bb2cbb5748a071757a56f6bb8f", + "sha256:e7b2bed4eea047a949296e618552d3fed00632dc1b795ee430289bdd0e3717f3", + "sha256:e87698e2fea5ca2f0a99dff0a64ce8110ea857b640de536c76d92aaa2a91ff3a", + "sha256:ede888382882f07b9e4cd942255921ffd9f2901684198b88e247c7eabd27a000", + "sha256:f444de0565db46d26c9fa931ca14f497900a295bd5eba480fc3fad25af8c763e", + "sha256:fa994e8937e8ccc7e87395b7b35092818905cf27c651e3ff3e7f29729f5ce3ce", + "sha256:febceb04ee7dd2aef08c2ff3d6f8a07de3052fc90137c507b0ede3ea80c21440" ], "markers": "python_version >= '3.7'", - "version": "==6.1" + "version": "==6.2" } }, "develop": { @@ -1142,32 +1153,32 @@ }, "black": { "hashes": [ - "sha256:0269dfdea12442022e88043d2910429bed717b2d04523867a85dacce535916b8", - "sha256:07204d078e25327aad9ed2c64790d681238686bce254c910de640c7cc4fc3aa6", - "sha256:08b34e85170d368c37ca7bf81cf67ac863c9d1963b2c1780c39102187ec8dd62", - "sha256:1a95915c98d6e32ca43809d46d932e2abc5f1f7d582ffbe65a5b4d1588af7445", - "sha256:2588021038bd5ada078de606f2a804cadd0a3cc6a79cb3e9bb3a8bf581325a4c", - "sha256:2fa6a0e965779c8f2afb286f9ef798df770ba2b6cee063c650b96adec22c056a", - "sha256:34afe9da5056aa123b8bfda1664bfe6fb4e9c6f311d8e4a6eb089da9a9173bf9", - "sha256:3897ae5a21ca132efa219c029cce5e6bfc9c3d34ed7e892113d199c0b1b444a2", - "sha256:40657e1b78212d582a0edecafef133cf1dd02e6677f539b669db4746150d38f6", - "sha256:48b5760dcbfe5cf97fd4fba23946681f3a81514c6ab8a45b50da67ac8fbc6c7b", - "sha256:5242ecd9e990aeb995b6d03dc3b2d112d4a78f2083e5a8e86d566340ae80fec4", - "sha256:5cdc2e2195212208fbcae579b931407c1fa9997584f0a415421748aeafff1168", - "sha256:5d7b06ea8816cbd4becfe5f70accae953c53c0e53aa98730ceccb0395520ee5d", - "sha256:7258c27115c1e3b5de9ac6c4f9957e3ee2c02c0b39222a24dc7aa03ba0e986f5", - "sha256:854c06fb86fd854140f37fb24dbf10621f5dab9e3b0c29a690ba595e3d543024", - "sha256:a21725862d0e855ae05da1dd25e3825ed712eaaccef6b03017fe0853a01aa45e", - "sha256:a83fe522d9698d8f9a101b860b1ee154c1d25f8a82ceb807d319f085b2627c5b", - "sha256:b3d64db762eae4a5ce04b6e3dd745dcca0fb9560eb931a5be97472e38652a161", - "sha256:e298d588744efda02379521a19639ebcd314fba7a49be22136204d7ed1782717", - "sha256:e2c8dfa14677f90d976f68e0c923947ae68fa3961d61ee30976c388adc0b02c8", - "sha256:ecba2a15dfb2d97105be74bbfe5128bc5e9fa8477d8c46766505c1dda5883aac", - "sha256:fc1ec9aa6f4d98d022101e015261c056ddebe3da6a8ccfc2c792cbe0349d48b7" + "sha256:057c3dc602eaa6fdc451069bd027a1b2635028b575a6c3acfd63193ced20d9c8", + "sha256:08654d0797e65f2423f850fc8e16a0ce50925f9337fb4a4a176a7aa4026e63f8", + "sha256:163baf4ef40e6897a2a9b83890e59141cc8c2a98f2dda5080dc15c00ee1e62cd", + "sha256:1e08fb9a15c914b81dd734ddd7fb10513016e5ce7e6704bdd5e1251ceee51ac9", + "sha256:4dd76e9468d5536abd40ffbc7a247f83b2324f0c050556d9c371c2b9a9a95e31", + "sha256:4f9de21bafcba9683853f6c96c2d515e364aee631b178eaa5145fc1c61a3cc92", + "sha256:61a0391772490ddfb8a693c067df1ef5227257e72b0e4108482b8d41b5aee13f", + "sha256:6981eae48b3b33399c8757036c7f5d48a535b962a7c2310d19361edeef64ce29", + "sha256:7e53a8c630f71db01b28cd9602a1ada68c937cbf2c333e6ed041390d6968faf4", + "sha256:810d445ae6069ce64030c78ff6127cd9cd178a9ac3361435708b907d8a04c693", + "sha256:93601c2deb321b4bad8f95df408e3fb3943d85012dddb6121336b8e24a0d1218", + "sha256:992e451b04667116680cb88f63449267c13e1ad134f30087dec8527242e9862a", + "sha256:9db528bccb9e8e20c08e716b3b09c6bdd64da0dd129b11e160bf082d4642ac23", + "sha256:a0057f800de6acc4407fe75bb147b0c2b5cbb7c3ed110d3e5999cd01184d53b0", + "sha256:ba15742a13de85e9b8f3239c8f807723991fbfae24bad92d34a2b12e81904982", + "sha256:bce4f25c27c3435e4dace4815bcb2008b87e167e3bf4ee47ccdc5ce906eb4894", + "sha256:ca610d29415ee1a30a3f30fab7a8f4144e9d34c89a235d81292a1edb2b55f540", + "sha256:d533d5e3259720fdbc1b37444491b024003e012c5173f7d06825a77508085430", + "sha256:d84f29eb3ee44859052073b7636533ec995bd0f64e2fb43aeceefc70090e752b", + "sha256:e37c99f89929af50ffaf912454b3e3b47fd64109659026b678c091a4cd450fb2", + "sha256:e8a6ae970537e67830776488bca52000eaa37fa63b9988e8c487458d9cd5ace6", + "sha256:faf2ee02e6612577ba0181f4347bcbcf591eb122f7841ae5ba233d12c39dcb4d" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==24.1.1" + "version": "==24.2.0" }, "blinker": { "hashes": [ @@ -1179,12 +1190,12 @@ }, "boto3": { "hashes": [ - "sha256:65acfe7f1cf2a9b7df3d4edb87c8022e02685825bd1957e7bb678cc0d09f5e5f", - "sha256:73f5ec89cb3ddb3ed577317889fd2f2df783f66b6502a9a4239979607e33bf74" + "sha256:8b3f5cc7fbedcbb22271c328039df8a6ab343001e746e0cdb24774c426cadcf8", + "sha256:f201b6a416f809283d554c652211eecec9fe3a52ed4063dab3f3e7aea7571d9c" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.34.37" + "version": "==1.34.54" }, "boto3-mocking": { "hashes": [ @@ -1197,28 +1208,28 @@ }, "boto3-stubs": { "hashes": [ - "sha256:97b5ca3d3145385acde5af46ca2da3fc74f433545034c36183f389e99771516e", - "sha256:c6618c7126bac0337c05e161e9c428febc57d6a24d7ff62de46e67761f402c57" + "sha256:7db5194e47f76e0010cd00b6ad9725db114d6a3fd04e52ceed3ef1181fe326bc", + "sha256:c7b2e8b99f4896cf1226df47d4badaaa8df7426008c96a428bf00205695669e9" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.34.37" + "version": "==1.34.54" }, "botocore": { "hashes": [ - "sha256:2a5bf33aacd2d970afd3d492e179e06ea98a5469030d5cfe7a2ad9995f7bb2ef", - "sha256:3c46ddb1679e6ef45ca78b48665398636bda532a07cd476e4b500697d13d9a99" + "sha256:4061ff4be3efcf53547ebadf2c94d419dfc8be7beec24e9fa1819599ffd936fa", + "sha256:bf215d93e9d5544c593962780d194e74c6ee40b883d0b885e62ef35fc0ec01e5" ], "markers": "python_version >= '3.8'", - "version": "==1.34.37" + "version": "==1.34.54" }, "botocore-stubs": { "hashes": [ - "sha256:087cd42973edcb5527dc97eec87fa29fffecc39691249486e02045677d4a2dbe", - "sha256:d6bcea8a6872aa46d389027dc5c022241fd0a2047a8b858aa5005e6151ed30a7" + "sha256:958f0084322dc9e549f73151b686fa51b15858fb2b3a573b9f4367f073fff463", + "sha256:bcc35bfbd14d1261813681c40108f2ce85fdf082c15b0a04016d3c22dd93b73f" ], "markers": "python_version >= '3.8' and python_version < '4.0'", - "version": "==1.34.37" + "version": "==1.34.54" }, "click": { "hashes": [ @@ -1427,11 +1438,11 @@ }, "python-dateutil": { "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", + "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==2.8.2" + "version": "==2.9.0.post0" }, "pyyaml": { "hashes": [ @@ -1492,11 +1503,11 @@ }, "rich": { "hashes": [ - "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa", - "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235" + "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222", + "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432" ], "markers": "python_full_version >= '3.7.0'", - "version": "==13.7.0" + "version": "==13.7.1" }, "s3transfer": { "hashes": [ @@ -1532,11 +1543,11 @@ }, "stevedore": { "hashes": [ - "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d", - "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c" + "sha256:1c15d95766ca0569cad14cb6272d4d31dae66b011a929d7c18219c176ea1b5c9", + "sha256:46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d" ], "markers": "python_version >= '3.8'", - "version": "==5.1.0" + "version": "==5.2.0" }, "tomli": { "hashes": [ @@ -1548,11 +1559,11 @@ }, "types-awscrt": { "hashes": [ - "sha256:06a859189a329ca8e66d56ceeef2391488e39b878fbd2141f115eab4d416fe22", - "sha256:f61a120d3e98ee1387bc5ca4b93437f258cc5c2af1f55f8634ec4cee5729f178" + "sha256:61811bbf4de95248939f9276a434be93d2b95f6ccfe8aa94e56999e9778cfcc2", + "sha256:79d5bfb01f64701b6cf442e89a37d9c4dc6dbb79a46f2f611739b2418d30ecfd" ], "markers": "python_version >= '3.7' and python_version < '4.0'", - "version": "==0.20.3" + "version": "==0.20.5" }, "types-cachetools": { "hashes": [ @@ -1580,12 +1591,12 @@ }, "types-requests": { "hashes": [ - "sha256:03a28ce1d7cd54199148e043b2079cdded22d6795d19a2c2a6791a4b2b5e2eb5", - "sha256:9592a9a4cb92d6d75d9b491a41477272b710e021011a2a3061157e2fb1f1a5d1" + "sha256:a82807ec6ddce8f00fe0e949da6d6bc1fbf1715420218a9640d695f70a9e5a9b", + "sha256:f1721dba8385958f504a5386240b92de4734e047a08a40751c1654d1ac3349c5" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==2.31.0.20240125" + "version": "==2.31.0.20240218" }, "types-s3transfer": { "hashes": [ @@ -1597,12 +1608,12 @@ }, "typing-extensions": { "hashes": [ - "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783", - "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd" + "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475", + "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==4.9.0" + "version": "==4.10.0" }, "urllib3": { "hashes": [ diff --git a/src/requirements.txt b/src/requirements.txt index a6130a3bf..8523835ef 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,14 +1,14 @@ -i https://pypi.python.org/simple annotated-types==0.6.0; python_version >= '3.8' asgiref==3.7.2; python_version >= '3.7' -boto3==1.34.37; python_version >= '3.8' -botocore==1.34.37; python_version >= '3.8' -cachetools==5.3.2; python_version >= '3.7' +boto3==1.34.54; python_version >= '3.8' +botocore==1.34.54; python_version >= '3.8' +cachetools==5.3.3; python_version >= '3.7' certifi==2024.2.2; python_version >= '3.6' cfenv==0.5.3 cffi==1.16.0; platform_python_implementation != 'PyPy' charset-normalizer==3.3.2; python_full_version >= '3.7.0' -cryptography==42.0.2; python_version >= '3.7' +cryptography==42.0.5; python_version >= '3.7' defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' dj-database-url==2.1.0 dj-email-url==1.0.6 @@ -17,17 +17,17 @@ django-allow-cidr==0.7.1 django-auditlog==2.3.0; python_version >= '3.7' django-cache-url==3.4.5 django-cors-headers==4.3.1; python_version >= '3.8' -django-csp==3.7 +django-csp==3.8 django-fsm==2.8.1 django-login-required-middleware==0.9.0 django-phonenumber-field[phonenumberslite]==7.3.0; python_version >= '3.8' django-widget-tweaks==1.5.0; python_version >= '3.8' environs[django]==10.3.0; python_version >= '3.8' -faker==23.1.0; python_version >= '3.8' +faker==23.3.0; python_version >= '3.8' fred-epplib@ git+https://github.com/cisagov/epplib.git@d56d183f1664f34c40ca9716a3a9a345f0ef561c furl==2.1.3 -future==0.18.3; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' -gevent==23.9.1; python_version >= '3.8' +future==1.0.0; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' +gevent==24.2.1; python_version >= '3.8' geventconnpool@ git+https://github.com/rasky/geventconnpool.git@1bbb93a714a331a069adf27265fe582d9ba7ecd4 greenlet==3.0.3; python_version >= '3.7' gunicorn==21.2.0; python_version >= '3.5' @@ -36,27 +36,28 @@ jmespath==1.0.1; python_version >= '3.7' lxml==5.1.0; python_version >= '3.6' mako==1.3.2; python_version >= '3.8' markupsafe==2.1.5; python_version >= '3.7' -marshmallow==3.20.2; python_version >= '3.8' +marshmallow==3.21.0; python_version >= '3.8' oic==1.6.1; python_version ~= '3.7' orderedmultidict==1.0.1 packaging==23.2; python_version >= '3.7' -phonenumberslite==8.13.29 +phonenumberslite==8.13.31 psycopg2-binary==2.9.9; python_version >= '3.7' pycparser==2.21 pycryptodomex==3.20.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' -pydantic==2.6.1; python_version >= '3.8' -pydantic-core==2.16.2; python_version >= '3.8' -pydantic-settings==2.1.0; python_version >= '3.8' +pydantic==2.6.3; python_version >= '3.8' +pydantic-core==2.16.3; python_version >= '3.8' +pydantic-settings==2.2.1; python_version >= '3.8' pyjwkest==1.4.2 -python-dateutil==2.8.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +python-dateutil==2.9.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' python-dotenv==1.0.1; python_version >= '3.8' requests==2.31.0; python_version >= '3.7' s3transfer==0.10.0; python_version >= '3.8' -setuptools==69.0.3; python_version >= '3.8' +setuptools==69.1.1; python_version >= '3.8' six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' sqlparse==0.4.4; python_version >= '3.5' -typing-extensions==4.9.0; python_version >= '3.8' +tblib==3.0.0; python_version >= '3.8' +typing-extensions==4.10.0; python_version >= '3.8' urllib3==2.0.7; python_version >= '3.7' whitenoise==6.6.0; python_version >= '3.8' zope.event==5.0; python_version >= '3.7' -zope.interface==6.1; python_version >= '3.7' +zope.interface==6.2; python_version >= '3.7' From 64c936b55382a747a50587b692ce0f05a8b85ad7 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Mon, 4 Mar 2024 14:27:34 -0500 Subject: [PATCH 21/37] fixed a test that was failing --- src/registrar/tests/common.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/registrar/tests/common.py b/src/registrar/tests/common.py index ee1ab8b68..be3643a51 100644 --- a/src/registrar/tests/common.py +++ b/src/registrar/tests/common.py @@ -475,7 +475,6 @@ class AuditedAdminMockData: def mock_user(): """A simple user.""" user_kwargs = dict( - id=4, first_name="Jeff", last_name="Lebowski", ) From 2b3c7ae0fd4baeeec173af30f1641da68b3b2106 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Mon, 4 Mar 2024 14:34:32 -0500 Subject: [PATCH 22/37] cleanup of debugging on failing test outside of scope of this ticket --- src/registrar/tests/test_admin.py | 66 +++++++++++++++---------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py index dd78d569c..3010247e7 100644 --- a/src/registrar/tests/test_admin.py +++ b/src/registrar/tests/test_admin.py @@ -1816,41 +1816,41 @@ class ListHeaderAdminTest(TestCase): self.superuser = create_superuser() def test_changelist_view(self): - # with less_console_noise(): - # Have to get creative to get past linter - p = "adminpass" - self.client.login(username="superuser", password=p) - # Mock a user - user = mock_user() - # Make the request using the Client class - # which handles CSRF - # Follow=True handles the redirect - response = self.client.get( - "/admin/registrar/domainapplication/", - { - "status__exact": "started", - "investigator__id__exact": user.id, - "q": "Hello", - }, - follow=True, - ) - # Assert that the filters and search_query are added to the extra_context - self.assertIn("filters", response.context) - self.assertIn("search_query", response.context) - # Assert the content of filters and search_query - filters = response.context["filters"] - search_query = response.context["search_query"] - self.assertEqual(search_query, "Hello") - self.assertEqual( - filters, - [ - {"parameter_name": "status", "parameter_value": "started"}, + with less_console_noise(): + # Have to get creative to get past linter + p = "adminpass" + self.client.login(username="superuser", password=p) + # Mock a user + user = mock_user() + # Make the request using the Client class + # which handles CSRF + # Follow=True handles the redirect + response = self.client.get( + "/admin/registrar/domainapplication/", { - "parameter_name": "investigator", - "parameter_value": user.first_name + " " + user.last_name, + "status__exact": "started", + "investigator__id__exact": user.id, + "q": "Hello", }, - ], - ) + follow=True, + ) + # Assert that the filters and search_query are added to the extra_context + self.assertIn("filters", response.context) + self.assertIn("search_query", response.context) + # Assert the content of filters and search_query + filters = response.context["filters"] + search_query = response.context["search_query"] + self.assertEqual(search_query, "Hello") + self.assertEqual( + filters, + [ + {"parameter_name": "status", "parameter_value": "started"}, + { + "parameter_name": "investigator", + "parameter_value": user.first_name + " " + user.last_name, + }, + ], + ) def test_get_filters(self): with less_console_noise(): From a75caa2fdb7b48dc50bbd3203cc1ca927244b20e Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Tue, 5 Mar 2024 14:02:14 -0500 Subject: [PATCH 23/37] removed geventconnectionpool --- src/Pipfile | 1 - src/Pipfile.lock | 4 ---- src/requirements.txt | 1 - 3 files changed, 6 deletions(-) diff --git a/src/Pipfile b/src/Pipfile index 80a0761a1..f24fbd550 100644 --- a/src/Pipfile +++ b/src/Pipfile @@ -29,7 +29,6 @@ django-login-required-middleware = "*" greenlet = "*" gevent = "*" fred-epplib = {git = "https://github.com/cisagov/epplib.git", ref = "master"} -geventconnpool = {git = "https://github.com/rasky/geventconnpool.git", ref = "1bbb93a714a331a069adf27265fe582d9ba7ecd4"} tblib = "*" [dev-packages] diff --git a/src/Pipfile.lock b/src/Pipfile.lock index 2e08b0628..1c8eac0a0 100644 --- a/src/Pipfile.lock +++ b/src/Pipfile.lock @@ -458,10 +458,6 @@ "markers": "python_version >= '3.8'", "version": "==24.2.1" }, - "geventconnpool": { - "git": "https://github.com/rasky/geventconnpool.git", - "ref": "1bbb93a714a331a069adf27265fe582d9ba7ecd4" - }, "greenlet": { "hashes": [ "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67", diff --git a/src/requirements.txt b/src/requirements.txt index 8523835ef..5696864bd 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -28,7 +28,6 @@ fred-epplib@ git+https://github.com/cisagov/epplib.git@d56d183f1664f34c40ca9716a furl==2.1.3 future==1.0.0; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' gevent==24.2.1; python_version >= '3.8' -geventconnpool@ git+https://github.com/rasky/geventconnpool.git@1bbb93a714a331a069adf27265fe582d9ba7ecd4 greenlet==3.0.3; python_version >= '3.7' gunicorn==21.2.0; python_version >= '3.5' idna==3.6; python_version >= '3.5' From 6e133451610022be1ec0ec757c6bd868ebc13636 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Tue, 5 Mar 2024 14:50:20 -0500 Subject: [PATCH 24/37] noting why type is ignored --- src/epplibwrapper/client.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/epplibwrapper/client.py b/src/epplibwrapper/client.py index bd39a37d6..951e612bc 100644 --- a/src/epplibwrapper/client.py +++ b/src/epplibwrapper/client.py @@ -62,6 +62,8 @@ class EPPLibWrapper: client. Raises errors if initialization fails. This method will be called at app initialization, and also during retries.""" # establish a client object with a TCP socket transport + # note that type: ignore added in several places because linter complains + # about _client initially being set to None, and None type doesn't match code self._client = Client( # type: ignore SocketTransport( settings.SECRET_REGISTRY_HOSTNAME, @@ -73,9 +75,9 @@ class EPPLibWrapper: try: # use the _client object to connect self._client.connect() # type: ignore - response = self._client.send(self._login) # type:ignore + response = self._client.send(self._login) # type: ignore if response.code >= 2000: # type: ignore - self._client.close() # type:ignore + self._client.close() # type: ignore raise LoginError(response.msg) # type: ignore except TransportError as err: message = "_initialize_client failed to execute due to a connection error." From f15a0bdad47685f986fb11ba5fe140fa4a766b71 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 5 Mar 2024 13:44:52 -0700 Subject: [PATCH 25/37] hot fix for phone number fields (changed to char field -- this will also preserve the line-height change requested by the designers. Originally this field was a test field) --- src/registrar/models/public_contact.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/registrar/models/public_contact.py b/src/registrar/models/public_contact.py index 989dfb0cd..cdd0d6a42 100644 --- a/src/registrar/models/public_contact.py +++ b/src/registrar/models/public_contact.py @@ -8,8 +8,6 @@ from registrar.utility.enums import DefaultEmail from .utility.time_stamped_model import TimeStampedModel -from phonenumber_field.modelfields import PhoneNumberField # type: ignore - def get_id(): """Generate a 16 character registry ID with a low probability of collision.""" @@ -71,8 +69,8 @@ class PublicContact(TimeStampedModel): pc = models.CharField(null=False, help_text="Contact's postal code") cc = models.CharField(null=False, help_text="Contact's country code") email = models.EmailField(null=False, help_text="Contact's email address") - voice = PhoneNumberField(null=False, help_text="Contact's phone number. Must be in ITU.E164.2005 format") - fax = PhoneNumberField( + voice = models.CharField(null=False, help_text="Contact's phone number. Must be in ITU.E164.2005 format") + fax = models.CharField( null=True, help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.", ) From 9a4016024b15734118102ba63541f806f3fea3f1 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 5 Mar 2024 13:49:51 -0700 Subject: [PATCH 26/37] migration added --- ...iccontact_fax_alter_publiccontact_voice.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py diff --git a/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py b/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py new file mode 100644 index 000000000..3e6e4183d --- /dev/null +++ b/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.10 on 2024-03-05 20:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("registrar", "0071_alter_contact_first_name_alter_contact_last_name_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="publiccontact", + name="fax", + field=models.CharField( + help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.", null=True + ), + ), + migrations.AlterField( + model_name="publiccontact", + name="voice", + field=models.CharField(help_text="Contact's phone number. Must be in ITU.E164.2005 format"), + ), + ] From f0e9c3760f32abad84496a64249ef144926f7ee6 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 5 Mar 2024 14:21:41 -0700 Subject: [PATCH 27/37] fixed issue with nulls. Also changed Email field to char field for EPP --- src/registrar/models/public_contact.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/registrar/models/public_contact.py b/src/registrar/models/public_contact.py index cdd0d6a42..262455c1e 100644 --- a/src/registrar/models/public_contact.py +++ b/src/registrar/models/public_contact.py @@ -60,15 +60,15 @@ class PublicContact(TimeStampedModel): ) name = models.CharField(null=False, help_text="Contact's full name") - org = models.CharField(null=True, help_text="Contact's organization (null ok)") + org = models.CharField(null=True, blank=True, help_text="Contact's organization (null ok)") street1 = models.CharField(null=False, help_text="Contact's street") - street2 = models.CharField(null=True, help_text="Contact's street (null ok)") - street3 = models.CharField(null=True, help_text="Contact's street (null ok)") + street2 = models.CharField(null=True, blank=True, help_text="Contact's street (null ok)") + street3 = models.CharField(null=True, blank=True, help_text="Contact's street (null ok)") city = models.CharField(null=False, help_text="Contact's city") sp = models.CharField(null=False, help_text="Contact's state or province") pc = models.CharField(null=False, help_text="Contact's postal code") cc = models.CharField(null=False, help_text="Contact's country code") - email = models.EmailField(null=False, help_text="Contact's email address") + email = models.CharField(null=False, help_text="Contact's email address") voice = models.CharField(null=False, help_text="Contact's phone number. Must be in ITU.E164.2005 format") fax = models.CharField( null=True, From 0035893448fd909fa543d8f0e19108ce883747cf Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 5 Mar 2024 14:24:47 -0700 Subject: [PATCH 28/37] updated migration file --- ..._email_alter_publiccontact_fax_and_more.py | 45 +++++++++++++++++++ ...iccontact_fax_alter_publiccontact_voice.py | 25 ----------- 2 files changed, 45 insertions(+), 25 deletions(-) create mode 100644 src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py delete mode 100644 src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py diff --git a/src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py b/src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py new file mode 100644 index 000000000..f1d55c3d5 --- /dev/null +++ b/src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py @@ -0,0 +1,45 @@ +# Generated by Django 4.2.10 on 2024-03-05 21:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("registrar", "0071_alter_contact_first_name_alter_contact_last_name_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="publiccontact", + name="email", + field=models.CharField(help_text="Contact's email address"), + ), + migrations.AlterField( + model_name="publiccontact", + name="fax", + field=models.CharField( + help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.", null=True + ), + ), + migrations.AlterField( + model_name="publiccontact", + name="org", + field=models.CharField(blank=True, help_text="Contact's organization (null ok)", null=True), + ), + migrations.AlterField( + model_name="publiccontact", + name="street2", + field=models.CharField(blank=True, help_text="Contact's street (null ok)", null=True), + ), + migrations.AlterField( + model_name="publiccontact", + name="street3", + field=models.CharField(blank=True, help_text="Contact's street (null ok)", null=True), + ), + migrations.AlterField( + model_name="publiccontact", + name="voice", + field=models.CharField(help_text="Contact's phone number. Must be in ITU.E164.2005 format"), + ), + ] diff --git a/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py b/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py deleted file mode 100644 index 3e6e4183d..000000000 --- a/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 4.2.10 on 2024-03-05 20:49 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("registrar", "0071_alter_contact_first_name_alter_contact_last_name_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="publiccontact", - name="fax", - field=models.CharField( - help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.", null=True - ), - ), - migrations.AlterField( - model_name="publiccontact", - name="voice", - field=models.CharField(help_text="Contact's phone number. Must be in ITU.E164.2005 format"), - ), - ] From 273332984c969dddddecd2e185bf3e482d07059c Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 5 Mar 2024 14:42:49 -0700 Subject: [PATCH 29/37] Revert "updated migration file" This reverts commit 0035893448fd909fa543d8f0e19108ce883747cf. --- ..._email_alter_publiccontact_fax_and_more.py | 45 ------------------- ...iccontact_fax_alter_publiccontact_voice.py | 25 +++++++++++ 2 files changed, 25 insertions(+), 45 deletions(-) delete mode 100644 src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py create mode 100644 src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py diff --git a/src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py b/src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py deleted file mode 100644 index f1d55c3d5..000000000 --- a/src/registrar/migrations/0072_alter_publiccontact_email_alter_publiccontact_fax_and_more.py +++ /dev/null @@ -1,45 +0,0 @@ -# Generated by Django 4.2.10 on 2024-03-05 21:24 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("registrar", "0071_alter_contact_first_name_alter_contact_last_name_and_more"), - ] - - operations = [ - migrations.AlterField( - model_name="publiccontact", - name="email", - field=models.CharField(help_text="Contact's email address"), - ), - migrations.AlterField( - model_name="publiccontact", - name="fax", - field=models.CharField( - help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.", null=True - ), - ), - migrations.AlterField( - model_name="publiccontact", - name="org", - field=models.CharField(blank=True, help_text="Contact's organization (null ok)", null=True), - ), - migrations.AlterField( - model_name="publiccontact", - name="street2", - field=models.CharField(blank=True, help_text="Contact's street (null ok)", null=True), - ), - migrations.AlterField( - model_name="publiccontact", - name="street3", - field=models.CharField(blank=True, help_text="Contact's street (null ok)", null=True), - ), - migrations.AlterField( - model_name="publiccontact", - name="voice", - field=models.CharField(help_text="Contact's phone number. Must be in ITU.E164.2005 format"), - ), - ] diff --git a/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py b/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py new file mode 100644 index 000000000..3e6e4183d --- /dev/null +++ b/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.10 on 2024-03-05 20:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("registrar", "0071_alter_contact_first_name_alter_contact_last_name_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="publiccontact", + name="fax", + field=models.CharField( + help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.", null=True + ), + ), + migrations.AlterField( + model_name="publiccontact", + name="voice", + field=models.CharField(help_text="Contact's phone number. Must be in ITU.E164.2005 format"), + ), + ] From 4116356e15a7c93299d88483d91f12d6ab158d30 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 5 Mar 2024 14:42:58 -0700 Subject: [PATCH 30/37] Revert "fixed issue with nulls. Also changed Email field to char field for EPP" This reverts commit f0e9c3760f32abad84496a64249ef144926f7ee6. --- src/registrar/models/public_contact.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/registrar/models/public_contact.py b/src/registrar/models/public_contact.py index 262455c1e..cdd0d6a42 100644 --- a/src/registrar/models/public_contact.py +++ b/src/registrar/models/public_contact.py @@ -60,15 +60,15 @@ class PublicContact(TimeStampedModel): ) name = models.CharField(null=False, help_text="Contact's full name") - org = models.CharField(null=True, blank=True, help_text="Contact's organization (null ok)") + org = models.CharField(null=True, help_text="Contact's organization (null ok)") street1 = models.CharField(null=False, help_text="Contact's street") - street2 = models.CharField(null=True, blank=True, help_text="Contact's street (null ok)") - street3 = models.CharField(null=True, blank=True, help_text="Contact's street (null ok)") + street2 = models.CharField(null=True, help_text="Contact's street (null ok)") + street3 = models.CharField(null=True, help_text="Contact's street (null ok)") city = models.CharField(null=False, help_text="Contact's city") sp = models.CharField(null=False, help_text="Contact's state or province") pc = models.CharField(null=False, help_text="Contact's postal code") cc = models.CharField(null=False, help_text="Contact's country code") - email = models.CharField(null=False, help_text="Contact's email address") + email = models.EmailField(null=False, help_text="Contact's email address") voice = models.CharField(null=False, help_text="Contact's phone number. Must be in ITU.E164.2005 format") fax = models.CharField( null=True, From 4db1cc9e198565de57d3713579c6f6043fa5b432 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Tue, 5 Mar 2024 14:45:15 -0700 Subject: [PATCH 31/37] Auto stash before revert of "fixed issue with nulls. Also changed Email field to char field for EPP" --- .../0072_alter_publiccontact_fax_alter_publiccontact_voice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py b/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py index 3e6e4183d..bc4dc7015 100644 --- a/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py +++ b/src/registrar/migrations/0072_alter_publiccontact_fax_alter_publiccontact_voice.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.10 on 2024-03-05 20:49 +# Generated by Django 4.2.10 on 2024-03-05 21:44 from django.db import migrations, models From d542e7a74bb8b205a040826d56ff195d58662502 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Tue, 5 Mar 2024 18:46:22 -0500 Subject: [PATCH 32/37] updated comment --- src/epplibwrapper/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/epplibwrapper/client.py b/src/epplibwrapper/client.py index 951e612bc..b08a9cb8a 100644 --- a/src/epplibwrapper/client.py +++ b/src/epplibwrapper/client.py @@ -141,7 +141,7 @@ class EPPLibWrapper: return self._send(command) def send(self, command, *, cleaned=False): - """Login, send the command, then close the connection. Tries 3 times.""" + """Login, the send the command. Retry once if an error is found""" # try to prevent use of this method without appropriate safeguards if not cleaned: raise ValueError("Please sanitize user input before sending it.") From efd3f62f0b6507a501260d74382e5a52eb924833 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Tue, 5 Mar 2024 18:50:42 -0500 Subject: [PATCH 33/37] added logging for retries --- src/epplibwrapper/client.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/epplibwrapper/client.py b/src/epplibwrapper/client.py index b08a9cb8a..a7856298b 100644 --- a/src/epplibwrapper/client.py +++ b/src/epplibwrapper/client.py @@ -143,6 +143,7 @@ class EPPLibWrapper: def send(self, command, *, cleaned=False): """Login, the send the command. Retry once if an error is found""" # try to prevent use of this method without appropriate safeguards + cmd_type = command.__class__.__name__ if not cleaned: raise ValueError("Please sanitize user input before sending it.") try: @@ -155,6 +156,8 @@ class EPPLibWrapper: or err.is_server_error() or err.should_retry() ): + message = f"{cmd_type} failed and will be retried" + logger.info(f"{message} Error: {err}") return self._retry(command) else: raise err From d1a1992ced7f6c998a2f101f4aab773f10d7b8de Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Wed, 6 Mar 2024 07:07:00 -0500 Subject: [PATCH 34/37] dbcache and multiple gunicorn workers --- src/registrar/config/settings.py | 11 ++++++----- src/run.sh | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/registrar/config/settings.py b/src/registrar/config/settings.py index 3107661b9..18b680e0d 100644 --- a/src/registrar/config/settings.py +++ b/src/registrar/config/settings.py @@ -192,11 +192,12 @@ WSGI_APPLICATION = "registrar.config.wsgi.application" # For a low to medium traffic site, caching causes more # problems than it solves. Should caching be desired, # a reasonable start might be: -# CACHES = { -# "default": { -# "BACKEND": "django.core.cache.backends.db.DatabaseCache", -# } -# } +CACHES = { + "default": { + "BACKEND": "django.core.cache.backends.db.DatabaseCache", + "LOCATION": "cache_table", + } +} # Absolute path to the directory where `collectstatic` # will place static files for deployment. diff --git a/src/run.sh b/src/run.sh index 1d35cd617..0228f143f 100755 --- a/src/run.sh +++ b/src/run.sh @@ -6,4 +6,4 @@ set -o pipefail # Make sure that django's `collectstatic` has been run locally before pushing up to any environment, # so that the styles and static assets to show up correctly on any environment. -gunicorn --worker-class=gevent registrar.config.wsgi -t 60 +gunicorn --workers=3 --worker-class=gevent registrar.config.wsgi -t 60 From e3e8c2646b68ef4448af02ceafa88546713bd258 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Wed, 6 Mar 2024 11:54:34 -0500 Subject: [PATCH 35/37] added createcachetable to docker-compose --- src/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/docker-compose.yml b/src/docker-compose.yml index fdf069f56..2e4ecaae5 100644 --- a/src/docker-compose.yml +++ b/src/docker-compose.yml @@ -66,6 +66,7 @@ services: command: > bash -c " python manage.py migrate && python manage.py load && + python manage.py createcachetable && python manage.py runserver 0.0.0.0:8080" db: From b33d71ee541d35c0d1905542c235e1947a686291 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Wed, 6 Mar 2024 12:13:18 -0500 Subject: [PATCH 36/37] new createcachetable.yaml script, updated create_dev_sandbox.sh --- .github/workflows/createcachetable.yaml | 46 +++++++++++++++++++++++++ ops/scripts/create_dev_sandbox.sh | 3 ++ 2 files changed, 49 insertions(+) create mode 100644 .github/workflows/createcachetable.yaml diff --git a/.github/workflows/createcachetable.yaml b/.github/workflows/createcachetable.yaml new file mode 100644 index 000000000..8fa4d76c8 --- /dev/null +++ b/.github/workflows/createcachetable.yaml @@ -0,0 +1,46 @@ +# This workflow can be run from the CLI for any environment +# gh workflow run createcachetable.yaml -f environment=ENVIRONMENT +# OR +# cf run-task getgov-ENVIRONMENT --command 'python manage.py createcachetable' --name createcachetable + +name: Create cache table +run-name: Create cache table for ${{ github.event.inputs.environment }} + +on: + workflow_dispatch: + inputs: + environment: + type: choice + description: Which environment should we create cache table for? + options: + - stable + - staging + - development + - backup + - ky + - es + - nl + - rh + - za + - gd + - rb + - ko + - ab + - rjm + - dk + +jobs: + createcachetable: + runs-on: ubuntu-latest + env: + CF_USERNAME: CF_${{ github.event.inputs.environment }}_USERNAME + CF_PASSWORD: CF_${{ github.event.inputs.environment }}_PASSWORD + steps: + - name: Create cache table for ${{ github.event.inputs.environment }} + uses: cloud-gov/cg-cli-tools@main + with: + cf_username: ${{ secrets[env.CF_USERNAME] }} + cf_password: ${{ secrets[env.CF_PASSWORD] }} + cf_org: cisa-dotgov + cf_space: ${{ github.event.inputs.environment }} + cf_command: "run-task getgov-${{ github.event.inputs.environment }} --command 'python manage.py createcachetable' --name createcachetable" diff --git a/ops/scripts/create_dev_sandbox.sh b/ops/scripts/create_dev_sandbox.sh index c9c55ae29..676fcf7ae 100755 --- a/ops/scripts/create_dev_sandbox.sh +++ b/ops/scripts/create_dev_sandbox.sh @@ -90,6 +90,9 @@ cd src/ cd .. cf push getgov-$1 -f ops/manifests/manifest-$1.yaml +echo "Creating cache table..." +cf run-task getgov-$1 --command 'python manage.py createcachetable' --name createcachetable + read -p "Please provide the email of the space developer: " -r cf set-space-role $REPLY cisa-dotgov $1 SpaceDeveloper From 83800b6a65e2005b795048aca954b01c1a841234 Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Thu, 7 Mar 2024 08:51:43 -0500 Subject: [PATCH 37/37] updated comments in settings.py --- src/registrar/config/settings.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/registrar/config/settings.py b/src/registrar/config/settings.py index 18b680e0d..15799f91b 100644 --- a/src/registrar/config/settings.py +++ b/src/registrar/config/settings.py @@ -188,10 +188,6 @@ WSGI_APPLICATION = "registrar.config.wsgi.application" # https://docs.djangoproject.com/en/4.0/howto/static-files/ -# Caching is disabled by default. -# For a low to medium traffic site, caching causes more -# problems than it solves. Should caching be desired, -# a reasonable start might be: CACHES = { "default": { "BACKEND": "django.core.cache.backends.db.DatabaseCache",