Skip to content

Commit 17a5a05

Browse files
committedAug 15, 2019
feat(configmap-server): add permissive load option
1 parent 0d3e4e7 commit 17a5a05

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed
 

‎cmd/configmap-server/main.go

+17-7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"context"
5+
"fmt"
56
"net"
67

78
"github.com/sirupsen/logrus"
@@ -42,6 +43,7 @@ func main() {
4243
rootCmd.Flags().StringP("configMapNamespace", "n", "", "namespace of a configmap")
4344
rootCmd.Flags().StringP("port", "p", "50051", "port number to serve on")
4445
rootCmd.Flags().StringP("termination-log", "t", "/dev/termination-log", "path to a container termination log file")
46+
rootCmd.Flags().Bool("permissive", false, "allow registry load errors")
4547
if err := rootCmd.Flags().MarkHidden("debug"); err != nil {
4648
logrus.Panic(err.Error())
4749
}
@@ -81,12 +83,16 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
8183
if err != nil {
8284
return err
8385
}
86+
permissive, err := cmd.Flags().GetBool("permissive")
87+
if err != nil {
88+
return err
89+
}
8490
logger := logrus.WithFields(logrus.Fields{"configMapName": configMapName, "configMapNamespace": configMapNamespace, "port": port})
8591

8692
client := NewClientFromConfig(kubeconfig, logger.Logger)
8793
configMap, err := client.CoreV1().ConfigMaps(configMapNamespace).Get(configMapName, metav1.GetOptions{})
8894
if err != nil {
89-
logger.Fatalf("error getting configmap: %v", err)
95+
logger.Fatalf("error getting configmap: %s", err)
9096
}
9197

9298
sqlLoader, err := sqlite.NewSQLLiteLoader(dbName)
@@ -96,26 +102,30 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
96102

97103
configMapPopulator := sqlite.NewSQLLoaderForConfigMap(sqlLoader, *configMap)
98104
if err := configMapPopulator.Populate(); err != nil {
99-
return err
105+
err = fmt.Errorf("error loading manifests from configmap: %s", err)
106+
if !permissive {
107+
logger.WithError(err).Fatal("permissive mode disabled")
108+
}
109+
logger.WithError(err).Warn("permissive mode enabled")
100110
}
101111

102112
store, err := sqlite.NewSQLLiteQuerier(dbName)
103113
if err != nil {
104-
logger.Fatalf("failed to load db: %v", err)
114+
logger.Fatalf("failed to load db: %s", err)
105115
}
106116

107117
// sanity check that the db is available
108118
tables, err := store.ListTables(context.TODO())
109119
if err != nil {
110-
logger.Fatalf("couldn't list tables in db, incorrect config: %v", err)
120+
logger.Fatalf("couldn't list tables in db, incorrect config: %s", err)
111121
}
112122
if len(tables) == 0 {
113123
logger.Fatal("no tables found in db")
114124
}
115125

116126
lis, err := net.Listen("tcp", ":"+port)
117127
if err != nil {
118-
logger.Fatalf("failed to listen: %v", err)
128+
logger.Fatalf("failed to listen: %s", err)
119129
}
120130
s := grpc.NewServer()
121131

@@ -125,7 +135,7 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
125135

126136
logger.Info("serving registry")
127137
if err := s.Serve(lis); err != nil {
128-
logger.Fatalf("failed to serve: %v", err)
138+
logger.Fatalf("failed to serve: %s", err)
129139
}
130140
return nil
131141
}
@@ -144,7 +154,7 @@ func NewClientFromConfig(kubeconfig string, logger *logrus.Logger) kubernetes.In
144154
}
145155

146156
if err != nil {
147-
logger.Fatalf("Cannot load config for REST client: %v", err)
157+
logger.Fatalf("Cannot load config for REST client: %s", err)
148158
}
149159

150160
return kubernetes.NewForConfigOrDie(config)

0 commit comments

Comments
 (0)
Please sign in to comment.