@@ -29,26 +29,44 @@ import (
29
29
queue_service "github.com/nitrictech/nitric/pkg/plugins/queue/dev"
30
30
secret_service "github.com/nitrictech/nitric/pkg/plugins/secret/dev"
31
31
minio "github.com/nitrictech/nitric/pkg/plugins/storage/minio"
32
+ nitric_utils "github.com/nitrictech/nitric/pkg/utils"
32
33
"github.com/nitrictech/nitric/pkg/worker"
33
34
)
34
35
35
36
type LocalServices interface {
36
37
Start () error
37
38
Stop () error
38
39
Running () bool
40
+ Status () * LocalServicesStatus
41
+ }
42
+
43
+ type LocalServicesStatus struct {
44
+ Running bool `yaml:"running"`
45
+ RunDir string `yaml:"runDir"`
46
+ GatewayAddress string `yaml:"gatewayAddress"`
47
+ MembraneAddress string `yaml:"membraneAddress"`
48
+ MinioContainerID string `yaml:"minioContainerID"`
49
+ MinioEndpoint string `yaml:"minioEndpoint"`
39
50
}
40
51
41
52
type localServices struct {
42
53
stackName string
43
54
stackPath string
44
55
mio * MinioServer
45
56
mem * membrane.Membrane
57
+ status * LocalServicesStatus
46
58
}
47
59
48
60
func NewLocalServices (stackName , stackPath string ) LocalServices {
49
61
return & localServices {
50
62
stackName : stackName ,
51
63
stackPath : stackPath ,
64
+ status : & LocalServicesStatus {
65
+ Running : false ,
66
+ RunDir : path .Join (utils .NitricRunDir (), stackName ),
67
+ GatewayAddress : nitric_utils .GetEnv ("GATEWAY_ADDRESS" , ":9001" ),
68
+ MembraneAddress : net .JoinHostPort ("localhost" , "50051" ),
69
+ },
52
70
}
53
71
}
54
72
@@ -58,22 +76,22 @@ func (l *localServices) Stop() error {
58
76
}
59
77
60
78
func (l * localServices ) Running () bool {
79
+ l .status .Running = false
61
80
conn , err := net .DialTimeout ("tcp" , net .JoinHostPort ("0.0.0.0" , "50051" ), time .Second )
62
- if err != nil {
63
- return false
64
- }
65
- if conn != nil {
81
+ if err == nil && conn != nil {
66
82
defer conn .Close ()
67
- return true
83
+ l . status . Running = true
68
84
}
69
- return false
85
+ return l . status . Running
70
86
}
71
87
72
- func (l * localServices ) Start () error {
73
- runDir := path .Join (utils .NitricRunDir (), l .stackName )
88
+ func (l * localServices ) Status () * LocalServicesStatus {
89
+ return l .status
90
+ }
74
91
92
+ func (l * localServices ) Start () error {
75
93
var err error
76
- l .mio , err = NewMinio (runDir , "test-run " )
94
+ l .mio , err = NewMinio (l . status . RunDir , "minio " )
77
95
if err != nil {
78
96
return err
79
97
}
@@ -83,9 +101,11 @@ func (l *localServices) Start() error {
83
101
if err != nil {
84
102
return err
85
103
}
104
+ l .status .MinioContainerID = l .mio .cid
105
+ l .status .MinioEndpoint = fmt .Sprintf ("localhost:%d" , l .mio .GetApiPort ())
86
106
87
107
// Connect dev storage
88
- os .Setenv (minio .MINIO_ENDPOINT_ENV , fmt . Sprintf ( "localhost:%d" , l . mio . GetApiPort ()) )
108
+ os .Setenv (minio .MINIO_ENDPOINT_ENV , l . status . MinioEndpoint )
89
109
os .Setenv (minio .MINIO_ACCESS_KEY_ENV , "minioadmin" )
90
110
os .Setenv (minio .MINIO_SECRET_KEY_ENV , "minioadmin" )
91
111
sp , err := minio .New ()
@@ -94,21 +114,21 @@ func (l *localServices) Start() error {
94
114
}
95
115
96
116
// Connect dev documents
97
- os .Setenv ("LOCAL_DB_DIR" , runDir )
117
+ os .Setenv ("LOCAL_DB_DIR" , l . status . RunDir )
98
118
dp , err := boltdb_service .New ()
99
119
if err != nil {
100
120
return err
101
121
}
102
122
103
123
// Connect secrets plugin
104
- os .Setenv ("LOCAL_SEC_DIR" , runDir )
124
+ os .Setenv ("LOCAL_SEC_DIR" , l . status . RunDir )
105
125
secp , err := secret_service .New ()
106
126
if err != nil {
107
127
return err
108
128
}
109
129
110
130
// Connect queue plugin
111
- os .Setenv ("LOCAL_QUEUE_DIR" , runDir )
131
+ os .Setenv ("LOCAL_QUEUE_DIR" , l . status . RunDir )
112
132
qp , err := queue_service .New ()
113
133
if err != nil {
114
134
return err
@@ -128,7 +148,7 @@ func (l *localServices) Start() error {
128
148
}
129
149
130
150
// Start a new gateway plugin
131
- gw , err := NewGateway ()
151
+ gw , err := NewGateway (l . status . GatewayAddress )
132
152
if err != nil {
133
153
return err
134
154
}
0 commit comments