|
|
@@ -8,9 +8,12 @@ import (
|
|
|
"os"
|
|
|
|
|
|
"github.com/porter-dev/porter/api/server/router"
|
|
|
+ "github.com/porter-dev/porter/api/server/shared/config"
|
|
|
"github.com/porter-dev/porter/api/server/shared/config/loader"
|
|
|
"github.com/porter-dev/porter/internal/adapter"
|
|
|
+ "github.com/porter-dev/porter/internal/models"
|
|
|
"github.com/porter-dev/porter/internal/redis_stream"
|
|
|
+ "gorm.io/gorm"
|
|
|
)
|
|
|
|
|
|
// Version will be linked by an ldflag during build
|
|
|
@@ -35,6 +38,12 @@ func main() {
|
|
|
log.Fatal("Config loading failed: ", err)
|
|
|
}
|
|
|
|
|
|
+ err = initData(config)
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal("Data initialization failed: ", err)
|
|
|
+ }
|
|
|
+
|
|
|
if config.RedisConf.Enabled {
|
|
|
redis, err := adapter.NewRedisClient(config.RedisConf)
|
|
|
|
|
|
@@ -68,3 +77,55 @@ func main() {
|
|
|
config.Logger.Fatal().Err(err).Msg("Server startup failed")
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+const defaultProjectName = "default"
|
|
|
+const defaultClusterName = "cluster-1"
|
|
|
+
|
|
|
+func initData(conf *config.Config) error {
|
|
|
+ // if the config specifies in-cluster connections are permitted, create a new project with a
|
|
|
+ // cluster that uses the in-cluster config. this will be the default project for this instance.
|
|
|
+ if conf.ServerConf.InitInCluster {
|
|
|
+ l := conf.Logger.Debug()
|
|
|
+ l.Msg("in-cluster config variable set: checking for default project and cluster")
|
|
|
+
|
|
|
+ // look for a project with id 1 with name of defaultProjectName
|
|
|
+ _, err := conf.Repo.Project().ReadProject(1)
|
|
|
+
|
|
|
+ if err == gorm.ErrRecordNotFound {
|
|
|
+ l.Msg("default project not found: attempting creation")
|
|
|
+
|
|
|
+ _, err = conf.Repo.Project().CreateProject(&models.Project{
|
|
|
+ Name: defaultProjectName,
|
|
|
+ })
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ l.Msg("successfully created default project")
|
|
|
+ } else if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = conf.Repo.Cluster().ReadCluster(1, 1)
|
|
|
+
|
|
|
+ if err == gorm.ErrRecordNotFound {
|
|
|
+ l.Msg("default cluster not found: attempting creation")
|
|
|
+
|
|
|
+ _, err = conf.Repo.Cluster().CreateCluster(&models.Cluster{
|
|
|
+ Name: defaultClusterName,
|
|
|
+ AuthMechanism: models.InCluster,
|
|
|
+ })
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ l.Msg("successfully created default cluster")
|
|
|
+ } else if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|