1 diff --git a/src/controller/configuremgr/capabilitydetails.go b/src/controller/configuremgr/capabilitydetails.go
5 +++ b/src/controller/configuremgr/capabilitydetails.go
10 + discovery "controller/discoverymgr"
11 + capabilitydb "db/bolt/capability"
12 + networkdb "db/bolt/network"
13 + systemdb "db/bolt/system"
19 +const logPrefix = "[configuremgr]"
20 +const logTag = logPrefix + "[Capability]"
23 + capDBExecutor capabilitydb.DBInterface
24 + netDBExecutor networkdb.DBInterface
25 + sysDBExecutor systemdb.DBInterface
26 + discoveryImpl discovery.Discovery
29 +type CAPImpl struct {
38 + capImpl = &CAPImpl{}
39 + netDBExecutor = networkdb.Query{}
40 + sysDBExecutor = systemdb.Query{}
41 + capDBExecutor = capabilitydb.Query{}
42 + capImpl.mutex = &sync.Mutex{}
43 + discoveryImpl = discovery.GetInstance()
46 +func GetInstance() CapabilityImpl {
50 +func (sm *CAPImpl) ReadCapability(deviceIP string) (string, error) {
52 + defer sm.mutex.Unlock()
54 + netInfos, err := netDBExecutor.GetList()
56 + log.Println(logTag, "Could not fetch from Network db", err.Error())
59 + for _, netInfo := range netInfos {
60 + if len(netInfo.IPv4) != 0 {
61 + if netInfo.IPv4[0] == deviceIP {
62 + deviceId := netInfo.ID
63 + capInfo, err := capDBExecutor.Get(deviceId)
65 + log.Println(logTag, "Could not fetch from config db", err.Error())
68 + return capInfo.Cap, nil
72 + return "", errors.New("Device not found!")
75 +func (sm *CAPImpl) WriteCapability(capabilityJson string) error {
77 + defer sm.mutex.Unlock()
79 + systemInfo, err := sysDBExecutor.Get("id")
81 + log.Println(logTag, "Could not fetch from system db", err.Error())
85 + deviceId := systemInfo.Value
87 + cap := capabilitydb.Capability{}
88 + cap.Cap = capabilityJson
90 + err = capDBExecutor.Set(deviceId, cap)
92 + log.Println(logPrefix, "DB error : ", err.Error())
95 + discovery.CapabilityCache = capabilityJson
96 + discoveryImpl.AddNewCapability(capabilityJson)
99 \ No newline at end of file