Loading go-apps/meep-app-enablement/server/app-support/app-support.go +7 −5 Original line number Diff line number Diff line Loading @@ -255,12 +255,14 @@ func applicationsConfirmTerminationPOST(w http.ResponseWriter, r *http.Request) } } if !found { log.Error("AppInstanceId not subscribed for graceful termination") http.Error(w, "AppInstanceId not subscribed for graceful termination", http.StatusBadRequest) return } // Check if Confirm Termination was expected if appTerminationGracefulTimeoutMap[appInstanceId] == nil { log.Error("Unexpected App Confirmation Termination Notification") http.Error(w, "Unexpected App Confirmation Termination Notification", http.StatusBadRequest) return } Loading Loading @@ -525,7 +527,7 @@ func deregisterAppTermination(subIdStr string) { func deleteAppSubscriptions(appInstanceId string) { for id, sub := range appTerminationNotificationSubscriptionMap { if sub.AppInstanceId == appInstanceId { if sub != nil && sub.AppInstanceId == appInstanceId { subIdStr := strconv.Itoa(id) key := baseKey + ":app:" + appInstanceId + ":" + mappsupportKey + ":sub:" + subIdStr _ = rc.JSONDelEntry(key, ".") Loading Loading @@ -606,10 +608,7 @@ func processAppTerminate(appInstanceId string, mep string) { notif.OperationAction = &operationAction notif.MaxGracefulTimeout = DEFAULT_GRACEFUL_TIMEOUT sendAppTermNotification(sub.CallbackReference, notif) log.Info("App Termination Notification" + "(" + subIdStr + ") for " + appInstanceId) // Start graceful timeout // Start graceful timeout prior to sending the app termination notification, or the answer could be received before the timer is started gracefulTimeoutTicker := time.NewTicker(time.Duration(DEFAULT_GRACEFUL_TIMEOUT) * time.Second) appTerminationGracefulTimeoutMap[appInstanceId] = gracefulTimeoutTicker go func() { Loading @@ -622,6 +621,9 @@ func processAppTerminate(appInstanceId string, mep string) { deleteAppInstance(appInstanceId) } }() sendAppTermNotification(sub.CallbackReference, notif) log.Info("App Termination Notification" + "(" + subIdStr + ") for " + appInstanceId) } // Delete App instance immediately if no graceful termination subscription Loading go-apps/meep-loc-serv/server/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 2.1.1 - Build date: 2021-07-30T10:28:27.117574-04:00[America/Toronto] - Build date: 2021-07-30T12:04:39.486-04:00[America/New_York] ### Running the server Loading go-apps/meep-loc-serv/server/api_location.go +1 −2 Original line number Diff line number Diff line Loading @@ -174,4 +174,3 @@ func ZonesGET(w http.ResponseWriter, r *http.Request) { func ZonesGetById(w http.ResponseWriter, r *http.Request) { zonesByIdGet(w, r) } go-apps/meep-loc-serv/server/loc-serv.go +22 −22 Original line number Diff line number Diff line Loading @@ -432,7 +432,7 @@ func startRegistrationTicker() { // Register service instance if !registrationSent { err := registerService(serviceAppInstanceId, serviceAppName, serviceAppVersion) err := registerService(serviceAppInstanceId) if err != nil { log.Error("Failed to register to appEnablement DB, keep trying. Error: ", err) continue Loading Loading @@ -489,7 +489,7 @@ func getAppInstanceId() (id string, err error) { } func deregisterService(appInstanceId string, serviceId string) error { _, err := appEnablementSrvMgmtClient.AppServicesApi.AppServicesServiceIdDELETE(context.TODO(), appInstanceId, serviceId) _, err := svcMgmtClient.AppServicesApi.AppServicesServiceIdDELETE(context.TODO(), appInstanceId, serviceId) if err != nil { log.Error("Failed to unregister the service to app enablement registry: ", err) return err Loading @@ -497,7 +497,7 @@ func deregisterService(appInstanceId string, serviceId string) error { return nil } func registerService(appInstanceId string, appName string, appVersion string) error { func registerService(appInstanceId string) error { var srvInfo smc.ServiceInfoPost //serName srvInfo.SerName = instanceName Loading Loading @@ -574,11 +574,11 @@ func sendTerminationConfirmation(appInstanceId string) error { } func subscribeAppTermination(appInstanceId string) error { var subscription appSupportClient.AppTerminationNotificationSubscription var subscription asc.AppTerminationNotificationSubscription subscription.SubscriptionType = "AppTerminationNotificationSubscription" subscription.AppInstanceId = appInstanceId subscription.CallbackReference = hostUrl.String() + basePath + appTerminationPath _, _, err := appEnablementAppSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionsPOST(context.TODO(), subscription, appInstanceId) _, _, err := appSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionsPOST(context.TODO(), subscription, appInstanceId) if err != nil { log.Error("Failed to register to App Support subscription: ", err) return err Loading @@ -586,16 +586,17 @@ func subscribeAppTermination(appInstanceId string) error { return nil } /* func unsubscribeAppTermination(appInstanceId string) error { //only subscribe to one subscription, so we force number to be one, couldn't be anything else _, err := appEnablementAppSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionDELETE(context.TODO(), appInstanceId, "1") _, err := appSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionDELETE(context.TODO(), appInstanceId, "1") if err != nil { log.Error("Failed to unregister to App Support subscription: ", err) return err } return nil } */ func deregisterZoneStatus(subsIdStr string) { subsId, err := strconv.Atoi(subsIdStr) if err != nil { Loading Loading @@ -3865,32 +3866,24 @@ func mec011AppTerminationPost(w http.ResponseWriter, r *http.Request) { stopRegistrationTicker() //delete any registration it made _ = unsubscribeAppTermination(serviceAppInstanceId) // cannot unsubscribe otherwise, the app-enablement server fails when receiving the confirm_terminate since it believes it never registered //_ = unsubscribeAppTermination(serviceAppInstanceId) _ = deregisterService(serviceAppInstanceId, appEnablementServiceId) if sendAppTerminationWhenDone { err = sendTerminationConfirmation(serviceAppInstanceId) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } } //send scenario update with a deletion var event scc.Event var eventScenarioUpdate scc.EventScenarioUpdate var physicalLocation scc.PhysicalLocation var process scc.Process var nodeDataUnion scc.NodeDataUnion var node scc.ScenarioNode physicalLocation.Name = "elementName" physicalLocation.Type_ = "EDGE-APP" process.Name = instanceName process.Type_ = "EDGE-APP" nodeDataUnion.PhysicalLocation = &physicalLocation nodeDataUnion.Process = &process node.Type_ = "EDGE-APP" node.Parent = "parentName" node.Parent = mepName node.NodeDataUnion = &nodeDataUnion eventScenarioUpdate.Node = &node Loading @@ -3906,5 +3899,12 @@ func mec011AppTerminationPost(w http.ResponseWriter, r *http.Request) { } }() if sendAppTerminationWhenDone { go func() { //ignore any error and delete yourself anyway _ = sendTerminationConfirmation(serviceAppInstanceId) }() } w.WriteHeader(http.StatusNoContent) } go-apps/meep-loc-serv/server/routers.go +5 −5 File changed.Contains only whitespace changes. Show changes go-apps/meep-loc-serv/api/swagger.yaml +1 −1 File changed.Contains only whitespace changes. Show changes Loading
go-apps/meep-app-enablement/server/app-support/app-support.go +7 −5 Original line number Diff line number Diff line Loading @@ -255,12 +255,14 @@ func applicationsConfirmTerminationPOST(w http.ResponseWriter, r *http.Request) } } if !found { log.Error("AppInstanceId not subscribed for graceful termination") http.Error(w, "AppInstanceId not subscribed for graceful termination", http.StatusBadRequest) return } // Check if Confirm Termination was expected if appTerminationGracefulTimeoutMap[appInstanceId] == nil { log.Error("Unexpected App Confirmation Termination Notification") http.Error(w, "Unexpected App Confirmation Termination Notification", http.StatusBadRequest) return } Loading Loading @@ -525,7 +527,7 @@ func deregisterAppTermination(subIdStr string) { func deleteAppSubscriptions(appInstanceId string) { for id, sub := range appTerminationNotificationSubscriptionMap { if sub.AppInstanceId == appInstanceId { if sub != nil && sub.AppInstanceId == appInstanceId { subIdStr := strconv.Itoa(id) key := baseKey + ":app:" + appInstanceId + ":" + mappsupportKey + ":sub:" + subIdStr _ = rc.JSONDelEntry(key, ".") Loading Loading @@ -606,10 +608,7 @@ func processAppTerminate(appInstanceId string, mep string) { notif.OperationAction = &operationAction notif.MaxGracefulTimeout = DEFAULT_GRACEFUL_TIMEOUT sendAppTermNotification(sub.CallbackReference, notif) log.Info("App Termination Notification" + "(" + subIdStr + ") for " + appInstanceId) // Start graceful timeout // Start graceful timeout prior to sending the app termination notification, or the answer could be received before the timer is started gracefulTimeoutTicker := time.NewTicker(time.Duration(DEFAULT_GRACEFUL_TIMEOUT) * time.Second) appTerminationGracefulTimeoutMap[appInstanceId] = gracefulTimeoutTicker go func() { Loading @@ -622,6 +621,9 @@ func processAppTerminate(appInstanceId string, mep string) { deleteAppInstance(appInstanceId) } }() sendAppTermNotification(sub.CallbackReference, notif) log.Info("App Termination Notification" + "(" + subIdStr + ") for " + appInstanceId) } // Delete App instance immediately if no graceful termination subscription Loading
go-apps/meep-loc-serv/server/README.md +1 −1 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 2.1.1 - Build date: 2021-07-30T10:28:27.117574-04:00[America/Toronto] - Build date: 2021-07-30T12:04:39.486-04:00[America/New_York] ### Running the server Loading
go-apps/meep-loc-serv/server/api_location.go +1 −2 Original line number Diff line number Diff line Loading @@ -174,4 +174,3 @@ func ZonesGET(w http.ResponseWriter, r *http.Request) { func ZonesGetById(w http.ResponseWriter, r *http.Request) { zonesByIdGet(w, r) }
go-apps/meep-loc-serv/server/loc-serv.go +22 −22 Original line number Diff line number Diff line Loading @@ -432,7 +432,7 @@ func startRegistrationTicker() { // Register service instance if !registrationSent { err := registerService(serviceAppInstanceId, serviceAppName, serviceAppVersion) err := registerService(serviceAppInstanceId) if err != nil { log.Error("Failed to register to appEnablement DB, keep trying. Error: ", err) continue Loading Loading @@ -489,7 +489,7 @@ func getAppInstanceId() (id string, err error) { } func deregisterService(appInstanceId string, serviceId string) error { _, err := appEnablementSrvMgmtClient.AppServicesApi.AppServicesServiceIdDELETE(context.TODO(), appInstanceId, serviceId) _, err := svcMgmtClient.AppServicesApi.AppServicesServiceIdDELETE(context.TODO(), appInstanceId, serviceId) if err != nil { log.Error("Failed to unregister the service to app enablement registry: ", err) return err Loading @@ -497,7 +497,7 @@ func deregisterService(appInstanceId string, serviceId string) error { return nil } func registerService(appInstanceId string, appName string, appVersion string) error { func registerService(appInstanceId string) error { var srvInfo smc.ServiceInfoPost //serName srvInfo.SerName = instanceName Loading Loading @@ -574,11 +574,11 @@ func sendTerminationConfirmation(appInstanceId string) error { } func subscribeAppTermination(appInstanceId string) error { var subscription appSupportClient.AppTerminationNotificationSubscription var subscription asc.AppTerminationNotificationSubscription subscription.SubscriptionType = "AppTerminationNotificationSubscription" subscription.AppInstanceId = appInstanceId subscription.CallbackReference = hostUrl.String() + basePath + appTerminationPath _, _, err := appEnablementAppSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionsPOST(context.TODO(), subscription, appInstanceId) _, _, err := appSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionsPOST(context.TODO(), subscription, appInstanceId) if err != nil { log.Error("Failed to register to App Support subscription: ", err) return err Loading @@ -586,16 +586,17 @@ func subscribeAppTermination(appInstanceId string) error { return nil } /* func unsubscribeAppTermination(appInstanceId string) error { //only subscribe to one subscription, so we force number to be one, couldn't be anything else _, err := appEnablementAppSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionDELETE(context.TODO(), appInstanceId, "1") _, err := appSupportClient.AppSubscriptionsApi.ApplicationsSubscriptionDELETE(context.TODO(), appInstanceId, "1") if err != nil { log.Error("Failed to unregister to App Support subscription: ", err) return err } return nil } */ func deregisterZoneStatus(subsIdStr string) { subsId, err := strconv.Atoi(subsIdStr) if err != nil { Loading Loading @@ -3865,32 +3866,24 @@ func mec011AppTerminationPost(w http.ResponseWriter, r *http.Request) { stopRegistrationTicker() //delete any registration it made _ = unsubscribeAppTermination(serviceAppInstanceId) // cannot unsubscribe otherwise, the app-enablement server fails when receiving the confirm_terminate since it believes it never registered //_ = unsubscribeAppTermination(serviceAppInstanceId) _ = deregisterService(serviceAppInstanceId, appEnablementServiceId) if sendAppTerminationWhenDone { err = sendTerminationConfirmation(serviceAppInstanceId) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } } //send scenario update with a deletion var event scc.Event var eventScenarioUpdate scc.EventScenarioUpdate var physicalLocation scc.PhysicalLocation var process scc.Process var nodeDataUnion scc.NodeDataUnion var node scc.ScenarioNode physicalLocation.Name = "elementName" physicalLocation.Type_ = "EDGE-APP" process.Name = instanceName process.Type_ = "EDGE-APP" nodeDataUnion.PhysicalLocation = &physicalLocation nodeDataUnion.Process = &process node.Type_ = "EDGE-APP" node.Parent = "parentName" node.Parent = mepName node.NodeDataUnion = &nodeDataUnion eventScenarioUpdate.Node = &node Loading @@ -3906,5 +3899,12 @@ func mec011AppTerminationPost(w http.ResponseWriter, r *http.Request) { } }() if sendAppTerminationWhenDone { go func() { //ignore any error and delete yourself anyway _ = sendTerminationConfirmation(serviceAppInstanceId) }() } w.WriteHeader(http.StatusNoContent) }
go-apps/meep-loc-serv/server/routers.go +5 −5 File changed.Contains only whitespace changes. Show changes
go-apps/meep-loc-serv/api/swagger.yaml +1 −1 File changed.Contains only whitespace changes. Show changes