Skip to content

haproxy-route-policy Implement request API#399

Merged
Thanhphan1147 merged 37 commits intomainfrom
haprox-route-policy-requests-api
Mar 20, 2026
Merged

haproxy-route-policy Implement request API#399
Thanhphan1147 merged 37 commits intomainfrom
haprox-route-policy-requests-api

Conversation

@Thanhphan1147
Copy link
Collaborator

@Thanhphan1147 Thanhphan1147 commented Mar 17, 2026

Applicable spec: ISD 267 ( internal)

Overview

Implement the requests API for the policy application. This includes:

  1. Database schema for requests
  2. The following API endpoints from the #REST API section of the spec:

2.1 GET | /api/v1/requests?status= | List all requests, with an optional query parameter.
2.2 POST | /api/v1/requests | Bulk create and evaluate requests
2.4 GET | /api/v1/requests/<id> | Get a request by ID
2.4 DELETE | /api/v1/requests/<id> | Delete a request by ID

Note: For "bulk create and evaluate requests", the evaluation logic will be skipped for now and all new requests will be set to "pending"
3. Unit and lint tests

The application should be started with uv

DJANGO_SECRET_KEY=<secret> uv run manage.py runserver 

Checklist

@Thanhphan1147 Thanhphan1147 requested a review from a team as a code owner March 17, 2026 14:08
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 376 files.

Valid Invalid Ignored Fixed
134 2 240 0
Click to see the invalid file list
  • haproxy-route-policy/policy/migrations/init.py
  • haproxy-route-policy/policy/migrations/0001_initial.py
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 376 files.

Valid Invalid Ignored Fixed
134 2 240 0
Click to see the invalid file list
  • haproxy-route-policy/policy/migrations/init.py
  • haproxy-route-policy/policy/migrations/0001_initial.py
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 376 files.

Valid Invalid Ignored Fixed
134 2 240 0
Click to see the invalid file list
  • haproxy-route-policy/policy/migrations/init.py
  • haproxy-route-policy/policy/migrations/0001_initial.py
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

Copy link
Contributor

@seb4stien seb4stien left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some comments.

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 376 files.

Valid Invalid Ignored Fixed
134 2 240 0
Click to see the invalid file list
  • haproxy-route-policy/policy/migrations/init.py
  • haproxy-route-policy/policy/migrations/0001_initial.py
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 376 files.

Valid Invalid Ignored Fixed
134 2 240 0
Click to see the invalid file list
  • haproxy-route-policy/policy/migrations/init.py
  • haproxy-route-policy/policy/migrations/0001_initial.py
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 376 files.

Valid Invalid Ignored Fixed
134 2 240 0
Click to see the invalid file list
  • haproxy-route-policy/policy/migrations/init.py
  • haproxy-route-policy/policy/migrations/0001_initial.py
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 376 files.

Valid Invalid Ignored Fixed
134 2 240 0
Click to see the invalid file list
  • haproxy-route-policy/policy/migrations/init.py
  • haproxy-route-policy/policy/migrations/0001_initial.py
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

Copy link
Contributor

Copilot AI commented Mar 19, 2026

@alithethird I've opened a new pull request, #402, to work on those changes. Once the pull request is ready, I'll request review from you.

@github-actions
Copy link
Contributor

Test results for commit a2d1ea2

Test coverage for a2d1ea2

Name                                       Stmts   Miss Branch BrPart  Cover   Missing
--------------------------------------------------------------------------------------
lib/charms/haproxy/v0/ddos_protection.py     154     51     34      8    64%   157-174, 183-187, 288, 316-318, 323, 326-330, 342-344, 381, 387, 393, 396, 424, 495-498, 510-529
src/charm.py                                  21      0      0      0   100%
src/state.py                                  43      0      0      0   100%
--------------------------------------------------------------------------------------
TOTAL                                        218     51     34      8    73%

Static code analysis report

Run started:2026-03-19 15:13:35.120788+00:00

Test results:
  No issues identified.

Code scanned:
  Total lines of code: 333
  Total lines skipped (#nosec): 0
  Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 0

Run metrics:
  Total issues (by severity):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
  Total issues (by confidence):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
Files skipped (0):

@github-actions
Copy link
Contributor

Test results for commit a2d1ea2

Test coverage for a2d1ea2

Name                                         Stmts   Miss Branch BrPart  Cover   Missing
----------------------------------------------------------------------------------------
lib/charms/haproxy/v0/ddos_protection.py       154     42     34      3    72%   157-174, 183-187, 265, 284, 415-418, 422-424, 459-478, 514-529
lib/charms/haproxy/v0/spoe_auth.py             158     55     32      2    59%   203, 304-306, 315, 354-381, 392-402, 441-442, 459-472, 484-501, 522-525, 529-531
lib/charms/haproxy/v1/haproxy_route_tcp.py     385    153     78      8    56%   209, 212, 281, 290-293, 297-300, 318-321, 336, 342-347, 447, 452, 829-832, 836, 863-874, 897-900, 904-906, 926-928, 1042-1083, 1087-1093, 1097, 1166-1195, 1266-1305, 1335-1337, 1362-1364, 1386-1390, 1409-1411, 1429-1431, 1438-1444, 1452-1454, 1462-1463, 1474-1481, 1494-1505, 1513-1534, 1546-1547, 1558-1559, 1570-1573, 1584-1585, 1614-1623, 1639-1642, 1658-1669, 1685-1688, 1706-1717, 1728-1729, 1737-1738, 1746-1747, 1758-1761
lib/charms/haproxy/v2/haproxy_route.py         385     53     98     26    82%   181, 257, 266-269, 294-297, 318-323, 673-674, 860->exit, 867, 893-904, 927-930, 934-936, 955-957, 1129-1135, 1139, 1336->1338, 1340->1342, 1342->1344, 1344->1346, 1346->1348, 1348->1351, 1386, 1394, 1399, 1402, 1427, 1455, 1459, 1463, 1486, 1506, 1515-1516, 1518->exit, 1554-1556, 1576, 1590, 1595-1597
src/charm.py                                   286     69     78     11    71%   100, 228, 236-252, 257, 262, 279, 290, 296-297, 331-351, 455-463, 491-504, 517-522, 531, 544-545, 552, 562, 572, 578-584, 600, 650-653, 659->658, 672-675
src/haproxy.py                                 127     31      6      2    75%   110-116, 136-158, 268-269, 272, 280-286, 314, 344-355, 367-369, 379-380
src/http_interface.py                           73     25      4      0    62%   74, 83, 92, 106-108, 126, 138, 150, 162, 170-175, 187, 194, 202, 217-227
src/state/charm_state.py                        77     15     14      4    79%   93-95, 100-101, 104, 145-150, 159, 208-210, 222-223
src/state/ddos_protection.py                    39      0      2      0   100%
src/state/exception.py                           1      0      0      0   100%
src/state/ha.py                                 30      1      2      1    94%   50
src/state/haproxy_route.py                     197     14     60      5    90%   132, 161-170, 194, 227, 297, 346-348, 365
src/state/haproxy_route_tcp.py                 120     17     42      1    80%   92-94, 109->112, 147-160
src/state/ingress.py                            38      0      4      0   100%
src/state/ingress_per_unit.py                   32      0      4      0   100%
src/state/spoe_auth.py                          26      2      2      0    93%   63-64
src/state/tls.py                                39      7     12      4    78%   74, 77-78, 127-135, 141-142
src/state/validation.py                         46     23      8      1    44%   66-67, 71-98
src/tls_relation.py                             61      3     14      3    92%   86->85, 118-128, 140->142
----------------------------------------------------------------------------------------
TOTAL                                         2274    510    494     71    74%

Static code analysis report

Working... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Run started:2026-03-19 14:59:58.348746+00:00

Test results:
  No issues identified.

Code scanned:
  Total lines of code: 10203
  Total lines skipped (#nosec): 13
  Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 10

Run metrics:
  Total issues (by severity):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
  Total issues (by confidence):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
Files skipped (0):

@github-actions
Copy link
Contributor

Test results for commit a2d1ea2

Test coverage for a2d1ea2

Name                               Stmts   Miss Branch BrPart  Cover   Missing
------------------------------------------------------------------------------
src/charm.py                          45      9      2      0    77%   65-91, 96-98
src/haproxy_spoe_auth_service.py      44     16      2      0    61%   56-64, 76-82, 93-117
src/state.py                          55     15      6      1    67%   64-66, 79, 125-146
------------------------------------------------------------------------------
TOTAL                                144     40     10      1    68%

Static code analysis report

Run started:2026-03-19 14:59:53.327532

Test results:
  No issues identified.

Code scanned:
  Total lines of code: 409
  Total lines skipped (#nosec): 1
  Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 1

Run metrics:
  Total issues (by severity):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
  Total issues (by confidence):
  	Undefined: 0
  	Low: 0
  	Medium: 0
  	High: 0
Files skipped (0):

@Thanhphan1147 Thanhphan1147 merged commit 73892df into main Mar 20, 2026
118 of 125 checks passed
@Thanhphan1147 Thanhphan1147 deleted the haprox-route-policy-requests-api branch March 20, 2026 02:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants