-
Notifications
You must be signed in to change notification settings - Fork 0
/
nf_discovery.go
71 lines (63 loc) · 2.13 KB
/
nf_discovery.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package consumer
import (
"context"
"fmt"
"github.com/nycu-ucr/gonet/http"
"github.com/nycu-ucr/openapi/Nnrf_NFDiscovery"
"github.com/nycu-ucr/openapi/models"
udm_context "github.com/nycu-ucr/udm/context"
"github.com/nycu-ucr/udm/logger"
"github.com/nycu-ucr/udm/util"
)
const (
NFDiscoveryToUDRParamNone int = iota
NFDiscoveryToUDRParamSupi
NFDiscoveryToUDRParamExtGroupId
NFDiscoveryToUDRParamGpsi
)
func SendNFIntances(nrfUri string, targetNfType, requestNfType models.NfType,
param Nnrf_NFDiscovery.SearchNFInstancesParamOpts) (result models.SearchResult, err error) {
configuration := Nnrf_NFDiscovery.NewConfiguration()
configuration.SetBasePath(nrfUri) // addr
clientNRF := Nnrf_NFDiscovery.NewAPIClient(configuration)
result, res, err1 := clientNRF.NFInstancesStoreApi.SearchNFInstances(context.TODO(), targetNfType,
requestNfType, ¶m)
if err1 != nil {
err = err1
return
}
defer func() {
if rspCloseErr := res.Body.Close(); rspCloseErr != nil {
logger.Handlelog.Errorf("SearchNFInstances response body cannot close: %+v", rspCloseErr)
}
}()
if res != nil && res.StatusCode == http.StatusTemporaryRedirect {
err = fmt.Errorf("Temporary Redirect For Non NRF Consumer")
}
return
}
func SendNFIntancesUDR(id string, types int) string {
self := udm_context.UDM_Self()
targetNfType := models.NfType_UDR
requestNfType := models.NfType_UDM
localVarOptionals := Nnrf_NFDiscovery.SearchNFInstancesParamOpts{
// DataSet: optional.NewInterface(models.DataSetId_SUBSCRIPTION),
}
// switch types {
// case NFDiscoveryToUDRParamSupi:
// localVarOptionals.Supi = optional.NewString(id)
// case NFDiscoveryToUDRParamExtGroupId:
// localVarOptionals.ExternalGroupIdentity = optional.NewString(id)
// case NFDiscoveryToUDRParamGpsi:
// localVarOptionals.Gpsi = optional.NewString(id)
// }
result, err := SendNFIntances(self.NrfUri, targetNfType, requestNfType, localVarOptionals)
if err != nil {
logger.Handlelog.Error(err.Error())
return ""
}
for _, profile := range result.NfInstances {
return util.SearchNFServiceUri(profile, models.ServiceName_NUDR_DR, models.NfServiceStatus_REGISTERED)
}
return ""
}