Service for integration into the C320 OLT with the Go programming language
- Go - Programming language
- Chi - HTTP Server
- GoSNMP - SNMP library for Go
- Redis - Redis client for Go
- Zerolog - Logger
- Viper - Configuration management
- Docker - Containerization
- Task - Task runner
- Air - Live reload for Go apps
task dev
task up
docker-compose -f docker-compose.local.yaml up -d && air -c .air.toml
task docker-run
docker network create local-dev && \
docker run -d --name redis-container \
--network local-dev -p 6379:6379 redis:7.2 && \
docker run -d -p 8081:8081 --name go-snmp-olt-zte-c320 \
--network local-dev -e REDIS_HOST=redis-container \
-e REDIS_PORT=6379 -e REDIS_DB=0 \
-e REDIS_MIN_IDLE_CONNECTIONS=200 -e REDIS_POOL_SIZE=12000 \
-e REDIS_POOL_TIMEOUT=240 -e SNMP_HOST=x.x.x.x \
-e SNMP_PORT=161 -e SNMP_COMMUNITY=xxxx \
sumitroajiprabowo/go-snmp-olt-zte-c320:latest
docker run -d -p 8081:8081 --name go-snmp-olt-zte-c320 \
-e REDIS_HOST=redis_host \
-e REDIS_PORT=redis_port \
-e REDIS_DB=redis_db \
-e REDIS_MIN_IDLE_CONNECTIONS=redis_min_idle_connection \
-e REDIS_POOL_SIZE=redis_pool_size \
-e REDIS_POOL_TIMEOUT=redis_pool_timeout \
-e SNMP_HOST=snmp_host \
-e SNMP_PORT=snmp_port \
-e SNMP_COMMUNITY=snmp_community \
sumitroajiprabowo/go-snmp-olt-zte-c320:latest
Syntax | Description |
---|---|
init | Initialize the environment |
dev | Start the local development |
app-build | Build the app binary |
build-image | Build docker image with tag latest |
push-image | push docker image with tag latest |
pull-image | pull docker image with tag latest |
docker-run | Run the docker container image with tag latest |
docker-stop | Stop the docker container |
docker-remove | Remove the docker container |
up | Start the docker containers in the background |
up-rebuild | Rebuild the docker containers |
down | Stop and remove the docker containers |
restart | Restart the docker containers |
rebuild | Rebuild the docker image and up with detached mode |
tidy | Clean up dependencies |
curl -sS localhost:8081/api/v1/board/2/pon/7 | jq
{
"code": 200,
"status": "OK",
"data": [
{
"board": 2,
"pon": 7,
"onu_id": 3,
"name": "Siti Khotimah",
"onu_type": "F670LV7.1",
"serial_number": "ZTEGCE3E0FFF",
"rx_power": "-22.22",
"status": "Online"
},
{
"board": 2,
"pon": 7,
"onu_id": 4,
"name": "Isroh",
"onu_type": "F670LV7.1",
"serial_number": "ZTEGCEEA1119",
"rx_power": "-21.08",
"status": "Online"
},
{
"board": 2,
"pon": 7,
"onu_id": 5,
"name": "Hadi Susilo",
"onu_type": "F670LV7.1",
"serial_number": "ZTEGCEC3033C",
"rx_power": "-19.956",
"status": "Online"
}
]
}
curl -sS localhost:8081/api/v1/board/2/pon/7/onu/4 | jq
{
"code": 200,
"status": "OK",
"data": {
"board": 2,
"pon": 7,
"onu_id": 4,
"name": "Isroh",
"description": "Bale Agung",
"onu_type": "F670LV7.1",
"serial_number": "ZTEGCEEA1119",
"rx_power": "-20.71",
"tx_power": "2.57",
"status": "Online",
"ip_address": "10.90.1.214",
"last_online": "2024-08-11 10:09:37",
"last_offline": "2024-08-11 10:08:35",
"uptime": "5 days 13 hours 10 minutes 50 seconds",
"last_down_time_duration": "0 days 0 hours 1 minutes 2 seconds",
"offline_reason": "PowerOff",
"gpon_optical_distance": "6701"
}
}
curl -sS localhost:8081/api/v1/board/2/pon/5/onu_id/empty | jq
{
"code": 200,
"status": "OK",
"data": [
{
"board": 2,
"pon": 5,
"onu_id": 123
},
{
"board": 2,
"pon": 5,
"onu_id": 124
},
{
"board": 2,
"pon": 5,
"onu_id": 125
},
{
"board": 2,
"pon": 5,
"onu_id": 126
}
]
}
curl -sS localhost:8081/api/v1/board/2/pon/5/onu_id/update | jq
{
"code": 200,
"status": "OK",
"data": "Success Update Empty ONU_ID"
}
curl -sS 'http://localhost:8081/api/v1/paginate/board/2/pon/8?limit=3&page=2' | jq
{
"code": 200,
"status": "OK",
"page": 2,
"limit": 3,
"page_count": 23,
"total_rows": 69,
"data": [
{
"board": 2,
"pon": 8,
"onu_id": 4,
"name": "Arif Irwan Setiawan",
"onu_type": "F670LV7.1",
"serial_number": "ZTEGC5A27AE1",
"rx_power": "-19.17",
"status": "Online"
},
{
"board": 2,
"pon": 8,
"onu_id": 5,
"name": "Putra Chandra Agusta",
"onu_type": "F660V6.0",
"serial_number": "ZTEGD00E4BCC",
"rx_power": "-19.54",
"status": "Online"
},
{
"board": 2,
"pon": 8,
"onu_id": 6,
"name": "Tarjito",
"onu_type": "F670LV7.1",
"serial_number": "ZTEGC5A062E0",
"rx_power": "-21.81",
"status": "Online"
}
]
}
Syntax | Description |
---|---|
page | Page number |
limit | Limit data per page |
page_count | Total page |
total_rows | Total rows |
data | Data of onu |
var (
DefaultPageSize = 10 // default page size
MaxPageSize = 100 // max page size
PageVar = "page"
PageSizeVar = "limit"
)