This bill scheduler is a cronjob scheduler for calculating the supervision bill. It runs based on environment configuration. It triggers multiple APIs to generate the supervision bill.
- MDMS
- User
- Contract
- Expense Calculator
- It creates supervision bills based on ACTIVE contracts using expense-calculate service /v1/_calculate API.
- Create a role in
ACCESSCONTROL-ROLES/roles.json
MDMS like this. - Create a
SYSTEM
user with BILL_CREATOR andSYSTEM
roles. Find the curl below. - The same username will be used to generate bills BILL_GEN_CRONJOB, it’s defined in the environment config.
- Cron job duration will be configured using environment variables from here.
curl --location 'http://localhost:8082/user/users/_createnovalidate' \
--header 'Content-Type: application/json' \
--data-raw '{
"RequestInfo": {
"api_id": "1",
"ver": "1",
"ts": null,
"action": "create",
"did": "",
"key": "",
"msg_id": "",
"requester_id": "",
"userInfo": {
"userName": "BillCreator",
"name": "BillCreator",
"gender": "male",
"mobileNumber": "9999999999",
"active": true,
"type": "EMPLOYEE",
"tenantId": "{STATE_TANENT_ID}",
"password": "eGov@123",
"roles": [
{
"code": "SUPERUSER",
"tenantId": "{STATE_TANENT_ID}"
}
]
}
},
"User": {
"userName": "BILL_GEN_CRONJOB",
"name": "Bill Generator",
"gender": "male",
"mobileNumber": "0000000000",
"active": true,
"type": "SYSTEM",
"tenantId": "{STATE_TANENT_ID}",
"password": "eGov@123",
"roles": [
{
"code": "SYSTEM",
"tenantId": "{STATE_TANENT_ID}"
},
{
"code": "BILL_CREATOR",
"name": "BILL_CREATOR",
"tenantId": "{STATE_TANENT_ID}"
}
]
}
}'
You can update the configuration of scheduler in two ways
- Add the config in the DevOps environment file, and restart the service it will trigger the scheduler based on the updated environment configuration, and restart the
expense-cronjob
service.
expense-cronjob:
cron:
schedule: "*/1 * * * *"
suspend: "false"
-
Using commands
Change schedule -
kubectl patch cronjobs expense-cronjob -p '{"spec" : {"schedule": "*/10 * * * *" }}'
Pause cron job -kubectl patch cronjobs expense-cronjob -p '{"spec" : {"suspend" : true }}'
Resume cron job -kubectl patch cronjobs expense-cronjob -p '{"spec" : {"suspend" : false}}'
Create new cronjob scheduler -
kubectl create job --from=cronjob/expense-cronjob expense-cronjob