@@ -48,36 +48,37 @@ func Server(cfg *config.Config) *cli.Command {
4848 mtrcs := metrics .New ()
4949 mtrcs .BuildInfo .WithLabelValues (version .GetString ()).Set (1 )
5050
51- //Connect to NATS servers
52- natsOptions := nats.Options {
53- Servers : cfg .Store .Nodes ,
54- User : cfg .Store .AuthUsername ,
55- Password : cfg .Store .AuthPassword ,
56- }
57- conn , err := natsOptions .Connect ()
58- if err != nil {
59- return err
60- }
61-
62- js , err := jetstream .New (conn )
63- if err != nil {
64- return err
65- }
66- kv , err := js .KeyValue (ctx , cfg .Store .Database )
67- if err != nil {
68- if ! errors .Is (err , jetstream .ErrBucketNotFound ) {
69- return fmt .Errorf ("failed to get bucket (%s): %w" , cfg .Store .Database , err )
51+ var kv jetstream.KeyValue
52+ // Allow to run without a NATS store (e.g. for the standalone Education provisioning service)
53+ if len (cfg .Store .Nodes ) > 0 {
54+ //Connect to NATS servers
55+ natsOptions := nats.Options {
56+ Servers : cfg .Store .Nodes ,
57+ User : cfg .Store .AuthUsername ,
58+ Password : cfg .Store .AuthPassword ,
59+ }
60+ conn , err := natsOptions .Connect ()
61+ if err != nil {
62+ return err
7063 }
7164
72- kv , err = js .CreateKeyValue (ctx , jetstream.KeyValueConfig {
73- Bucket : cfg .Store .Database ,
74- })
65+ js , err := jetstream .New (conn )
7566 if err != nil {
76- return fmt .Errorf ("failed to create bucket (%s): %w" , cfg .Store .Database , err )
67+ return err
68+ }
69+ kv , err = js .KeyValue (ctx , cfg .Store .Database )
70+ if err != nil {
71+ if ! errors .Is (err , jetstream .ErrBucketNotFound ) {
72+ return fmt .Errorf ("failed to get bucket (%s): %w" , cfg .Store .Database , err )
73+ }
74+
75+ kv , err = js .CreateKeyValue (ctx , jetstream.KeyValueConfig {
76+ Bucket : cfg .Store .Database ,
77+ })
78+ if err != nil {
79+ return fmt .Errorf ("failed to create bucket (%s): %w" , cfg .Store .Database , err )
80+ }
7781 }
78- }
79- if err != nil {
80- return err
8182 }
8283
8384 gr := runner .NewGroup ()
0 commit comments