Browse Source

create default network on startup

afeiszli 4 years ago
parent
commit
f61f6b1227
4 changed files with 53 additions and 1 deletions
  1. 3 0
      config/config.go
  2. 3 0
      config/environments/dev.yaml
  3. 1 1
      functions/helpers.go
  4. 46 0
      main.go

+ 3 - 0
config/config.go

@@ -42,6 +42,9 @@ type ServerConfig struct {
   AllowedOrigin	string `yaml:"allowedorigin"`
   RestBackend bool `yaml:"restbackend"`
   AgentBackend bool `yaml:"agentbackend"`
+  DefaultNetName string `yaml:"defaultnetname"`
+  DefaultNetRange string `yaml:"defaultnetrange"`
+  CreateDefault bool `yaml:"createdefault"`
 }
 
 type MongoConnConfig struct {

+ 3 - 0
config/environments/dev.yaml

@@ -6,6 +6,9 @@ server:
   allowedorigin: "*"
   restbackend: true            
   agentbackend: true
+  defaultnetname: "default"
+  defaultnetrange: "10.10.10.0/24"
+  createdefault: true
 mongoconn:
   user: "mongoadmin"
   pass: "mongopass"

+ 1 - 1
functions/helpers.go

@@ -64,7 +64,7 @@ func GroupExists(name string) (bool, error) {
 
 	if err != nil {
 		if err == mongo.ErrNoDocuments {
-			return false, err
+			return false, nil
 		}
 		fmt.Println("ERROR RETRIEVING GROUP!")
 		fmt.Println(err)

+ 46 - 0
main.go

@@ -34,6 +34,13 @@ func main() {
 	log.Println("Server starting...")
 	mongoconn.ConnectDatabase()
 
+	if config.Config.Server.CreateDefault {
+		err := createDefaultNetwork()
+		if err != nil {
+			fmt.Printf("Error creating default network: %v", err)
+		}
+	}
+
 	var waitgroup sync.WaitGroup
 
 	if config.Config.Server.AgentBackend {
@@ -165,6 +172,45 @@ func setGlobalConfig(globalconf models.GlobalConfig) (error) {
 	return nil
 }
 
+func createDefaultNetwork() error {
+
+
+	exists, err := functions.GroupExists(config.Config.Server.DefaultNetName)
+
+	if exists || err != nil {
+		fmt.Println("Default group already exists")
+		fmt.Println("Skipping default group create")
+		return err
+	} else {
+
+	var group models.Group
+
+	group.NameID = config.Config.Server.DefaultNetName
+	group.AddressRange = config.Config.Server.DefaultNetRange
+	group.DisplayName = config.Config.Server.DefaultNetName
+        group.SetDefaults()
+        group.SetNodesLastModified()
+        group.SetGroupLastModified()
+        group.KeyUpdateTimeStamp = time.Now().Unix()
+
+
+	fmt.Println("Creating default group.")
+
+
+        collection := mongoconn.Client.Database("netmaker").Collection("groups")
+        ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
+
+
+        // insert our group into the group table
+        _, err = collection.InsertOne(ctx, group)
+        defer cancel()
+
+	}
+	return err
+
+
+}
+
 
 func getPublicIP() (string, error) {