1
1
package zosapi
2
2
3
3
import (
4
+ "fmt"
4
5
"time"
5
6
6
7
"github.com/patrickmn/go-cache"
8
+ substrate "github.com/threefoldtech/tfchain/clients/tfchain-client-go"
7
9
"github.com/threefoldtech/zbus"
8
10
"github.com/threefoldtech/zosbase/pkg/capacity"
9
11
"github.com/threefoldtech/zosbase/pkg/diagnostics"
12
+ "github.com/threefoldtech/zosbase/pkg/environment"
10
13
"github.com/threefoldtech/zosbase/pkg/stubs"
11
14
)
12
15
@@ -29,7 +32,43 @@ type ZosAPI struct {
29
32
inMemCache * cache.Cache
30
33
}
31
34
32
- func NewZosAPI (client zbus.Client , farmerID uint32 , msgBrokerCon string ) (ZosAPI , error ) {
35
+ func NewZosAPI (manager substrate.Manager , client zbus.Client , msgBrokerCon string ) (ZosAPI , error ) {
36
+ sub , err := manager .Substrate ()
37
+ if err != nil {
38
+ return ZosAPI {}, err
39
+ }
40
+ defer sub .Close ()
41
+ diagnosticsManager , err := diagnostics .NewDiagnosticsManager (msgBrokerCon , client )
42
+ if err != nil {
43
+ return ZosAPI {}, err
44
+ }
45
+ storageModuleStub := stubs .NewStorageModuleStub (client )
46
+ api := ZosAPI {
47
+ oracle : capacity .NewResourceOracle (storageModuleStub ),
48
+ versionMonitorStub : stubs .NewVersionMonitorStub (client ),
49
+ systemMonitorStub : stubs .NewSystemMonitorStub (client ),
50
+ provisionStub : stubs .NewProvisionStub (client ),
51
+ networkerLightStub : stubs .NewNetworkerLightStub (client ),
52
+ statisticsStub : stubs .NewStatisticsStub (client ),
53
+ storageStub : storageModuleStub ,
54
+ performanceMonitorStub : stubs .NewPerformanceMonitorStub (client ),
55
+ diagnosticsManager : diagnosticsManager ,
56
+ }
57
+ farm , err := sub .GetFarm (uint32 (environment .MustGet ().FarmID ))
58
+ if err != nil {
59
+ return ZosAPI {}, fmt .Errorf ("failed to get farm: %w" , err )
60
+ }
61
+
62
+ farmer , err := sub .GetTwin (uint32 (farm .TwinID ))
63
+ if err != nil {
64
+ return ZosAPI {}, err
65
+ }
66
+ api .farmerID = uint32 (farmer .ID )
67
+ api .inMemCache = cache .New (cacheDefaultExpiration , cacheDefaultCleanup )
68
+ return api , nil
69
+ }
70
+
71
+ func NewZosAPIWithFarmerID (client zbus.Client , farmerID uint32 , msgBrokerCon string ) (ZosAPI , error ) {
33
72
diagnosticsManager , err := diagnostics .NewDiagnosticsManager (msgBrokerCon , client )
34
73
if err != nil {
35
74
return ZosAPI {}, err
0 commit comments