1 diff --git a/src/controller/servicemgr/devicedetails.go b/src/controller/servicemgr/devicedetails.go
5 +++ b/src/controller/servicemgr/devicedetails.go
11 + configurationdb "db/bolt/configuration"
12 + networkdb "db/bolt/network"
13 + servicedb "db/bolt/service"
16 + "restinterface/resthelper"
20 + pingAPI = "/api/v1/ping"
21 + internalPort = 56002
25 + logTag = logPrefix + "[GetAuthenticatedDevices]"
26 + helper resthelper.RestHelper
27 + netDBExecutor networkdb.DBInterface
28 + servDBExecutor servicedb.DBInterface
29 + confDBExecutor configurationdb.DBInterface
30 + util utils.UtilsHelper
33 +func find(slice []string, val string) bool {
34 + for _, item := range slice {
42 +// GetAuthenticatedDevices returns list of Authenticated devices that are having the requested service and have the requested execution type.
43 +func (sm *SMMgrImpl) GetAuthenticatedDevices(service string, exType string) ([]string, error) {
44 + log.Println(logTag, "getAuthenticatedDevices -- API Called.", service, exType)
45 + var deviceIps []string
46 + var allDevicesList []string
48 + servInfos, err := servDBExecutor.GetList()
50 + if len(servInfos) == 0 || err != nil {
51 + log.Println(logTag, "Could not fetch from service db")
53 + log.Println(logTag, "ERROR:", err.Error())
55 + return deviceIps, errors.New("service not available")
59 + for _, servInfo := range servInfos {
61 + if service == "" || find(servInfo.Services, service) {
62 + allDevicesList = append(allDevicesList, servInfo.ID)
63 + log.Println(logTag, "Service found in device ", servInfo.ID)
67 + for _, device := range allDevicesList {
68 + devInfo, err := confDBExecutor.Get(device)
70 + log.Println(logTag, "Could not fetch from config db", err.Error())
73 + if exType == "" || devInfo.ExecType == exType {
74 + log.Println(logTag, "Adding Device "+device+" As execution type is "+ devInfo.ExecType + " And required Ex type is "+exType )
75 + netInfo, err := netDBExecutor.Get(device)
77 + log.Println(logTag, "Could not fetch from Network db", err.Error())
80 + if len(netInfo.IPv4) != 0 && util.PingDevice(netInfo.IPv4[0]) == true {
81 + deviceIps = append(deviceIps, netInfo.IPv4[0])
85 + if len(deviceIps)>0{
86 + log.Println(logTag, "FINAL DEVICE IPS:", deviceIps)
87 + return deviceIps, nil
89 + return deviceIps , errors.New("no device found")
91 \ No newline at end of file