[VOL-3107] Add DeleteGroup API to OpenOLT Agent
- DeleteGroup proto API method implemented.
- Unit tests added.
Change-Id: If196a92f7a717fc4cc6c2f0e0bb6ca74fc3683d2
diff --git a/agent/src/core_api_handler.cc b/agent/src/core_api_handler.cc
index 3267c6c..9a22497 100644
--- a/agent/src/core_api_handler.cc
+++ b/agent/src/core_api_handler.cc
@@ -2823,3 +2823,49 @@
return Status::OK;
}
+
+Status DeleteGroup_(uint32_t group_id) {
+
+ bcmos_errno err = BCM_ERR_OK;
+ bcmolt_group_cfg grp_cfg_obj;
+ bcmolt_group_key key = {};
+
+
+ OPENOLT_LOG(INFO, openolt_log_id, "Delete request received for group %d\n", group_id);
+
+ if (group_id >= 0) {
+ key.id = group_id;
+ } else {
+ OPENOLT_LOG(ERROR, openolt_log_id, "Invalid group id %d.\n", group_id);
+ return grpc::Status(grpc::StatusCode::INVALID_ARGUMENT, "Invalid group id");
+ }
+
+ /* init the BAL INIT API */
+ BCMOLT_CFG_INIT(&grp_cfg_obj, group, key);
+
+ OPENOLT_LOG(DEBUG, openolt_log_id, "Checking if group %d exists...\n",group_id);
+
+ // CONFIGURE GROUP MEMBERS
+ BCMOLT_FIELD_SET_PRESENT(&grp_cfg_obj.data, group_cfg_data, state);
+ err = bcmolt_cfg_get(dev_id, &(grp_cfg_obj.hdr));
+
+ if (err != BCM_ERR_OK) {
+ OPENOLT_LOG(ERROR, openolt_log_id, "Error in querying Group %d, err = %s\n", group_id, bcmos_strerror(err));
+ return bcm_to_grpc_err(err, "Error in querying group");
+ }
+
+ if (grp_cfg_obj.data.state != BCMOLT_GROUP_STATE_NOT_CONFIGURED) {
+ OPENOLT_LOG(DEBUG, openolt_log_id, "Group %d exists. Will be deleted.\n",group_id);
+ err = bcmolt_cfg_clear(dev_id, &(grp_cfg_obj.hdr));
+ if (err != BCM_ERR_OK) {
+ OPENOLT_LOG(ERROR, openolt_log_id, "Group %d cannot be deleted err = %s (%d).\n", group_id, bcmos_strerror(err), err);
+ return bcm_to_grpc_err(err, "Failed to delete group");;
+ }
+ } else {
+ OPENOLT_LOG(ERROR, openolt_log_id, "Group %d does not exist.\n", group_id);
+ return Status(grpc::StatusCode::NOT_FOUND, "Group not found");
+ }
+
+ OPENOLT_LOG(INFO, openolt_log_id, "Group %d has been deleted successfully.\n", group_id);
+ return Status::OK;
+}
\ No newline at end of file