Add support for user-friendly names in YANG data with aliases in KV store
Change-Id: I8b4fbb290dfb467b401e8cf20b825ddbb3bf897e
diff --git a/internal/sysrepo/callbacks.go b/internal/sysrepo/callbacks.go
index 27c8362..b7c7570 100644
--- a/internal/sysrepo/callbacks.go
+++ b/internal/sysrepo/callbacks.go
@@ -265,13 +265,18 @@
cTag = strconv.Itoa(core.VolthaVlanIdAny)
}
+ alias := core.ServiceAlias{
+ Key: core.ServiceKey{
+ Port: portName,
+ CTag: cTag,
+ STag: sTag,
+ TpId: tpId,
+ },
+ ServiceName: serviceName,
+ VlansName: vlanName,
+ }
logger.Infow(ctx, "new-service-profile-information", log.Fields{
- "service": serviceName,
- "port": portName,
- "vlanName": vlanName,
- "tpId": tpId,
- "sTag": sTag,
- "cTag": cTag,
+ "serviceInfo": alias,
})
if core.AdapterInstance == nil {
@@ -287,6 +292,13 @@
return C.SR_ERR_OPERATION_FAILED
}
+ if err := core.AdapterInstance.StoreServiceAlias(ctx, alias); err != nil {
+ //Log the error but don't make the callback fail
+ //The service in ONOS has been provisioned succesfully and the datastore has to stay aligned
+ //A fallback alias will be created if service data is requested later
+ logger.Errorw(ctx, "cannot-store-service-alias-in-kvstore", log.Fields{"err": err, "service": serviceName})
+ }
+
logger.Infow(ctx, "service-profile-creation-request-served", log.Fields{
"service": serviceName,
})
@@ -335,13 +347,18 @@
cTag = strconv.Itoa(core.VolthaVlanIdAny)
}
+ alias := core.ServiceAlias{
+ Key: core.ServiceKey{
+ Port: portName,
+ CTag: cTag,
+ STag: sTag,
+ TpId: tpId,
+ },
+ ServiceName: serviceName,
+ VlansName: vlanName,
+ }
logger.Infow(ctx, "service-profile-deletion-information", log.Fields{
- "service": serviceName,
- "port": portName,
- "vlanName": vlanName,
- "tpId": tpId,
- "sTag": sTag,
- "cTag": cTag,
+ "serviceInfo": alias,
})
if err := core.AdapterInstance.RemoveService(portName, sTag, cTag, tpId); err != nil {
@@ -352,6 +369,13 @@
return C.SR_ERR_OPERATION_FAILED
}
+ if err := core.AdapterInstance.DeleteServiceAlias(ctx, alias.Key); err != nil {
+ //Log the error but don't make the callback fail
+ //The service in ONOS has been removed succesfully and the datastore has to stay aligned
+ //The only side effect is a dangling alias left in the KV store
+ logger.Errorw(ctx, "cannot-delete-service-alias-from-kvstore", log.Fields{"err": err, "service": serviceName})
+ }
+
logger.Infow(ctx, "service-profile-removal-request-served", log.Fields{
"service": serviceName,
})