@@ -2,6 +2,7 @@ package main
2
2
3
3
import (
4
4
"context"
5
+ "fmt"
5
6
"net"
6
7
7
8
"github.com/sirupsen/logrus"
@@ -42,6 +43,7 @@ func main() {
42
43
rootCmd .Flags ().StringP ("configMapNamespace" , "n" , "" , "namespace of a configmap" )
43
44
rootCmd .Flags ().StringP ("port" , "p" , "50051" , "port number to serve on" )
44
45
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" )
45
47
if err := rootCmd .Flags ().MarkHidden ("debug" ); err != nil {
46
48
logrus .Panic (err .Error ())
47
49
}
@@ -81,12 +83,16 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
81
83
if err != nil {
82
84
return err
83
85
}
86
+ permissive , err := cmd .Flags ().GetBool ("permissive" )
87
+ if err != nil {
88
+ return err
89
+ }
84
90
logger := logrus .WithFields (logrus.Fields {"configMapName" : configMapName , "configMapNamespace" : configMapNamespace , "port" : port })
85
91
86
92
client := NewClientFromConfig (kubeconfig , logger .Logger )
87
93
configMap , err := client .CoreV1 ().ConfigMaps (configMapNamespace ).Get (configMapName , metav1.GetOptions {})
88
94
if err != nil {
89
- logger .Fatalf ("error getting configmap: %v " , err )
95
+ logger .Fatalf ("error getting configmap: %s " , err )
90
96
}
91
97
92
98
sqlLoader , err := sqlite .NewSQLLiteLoader (dbName )
@@ -96,26 +102,30 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
96
102
97
103
configMapPopulator := sqlite .NewSQLLoaderForConfigMap (sqlLoader , * configMap )
98
104
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" )
100
110
}
101
111
102
112
store , err := sqlite .NewSQLLiteQuerier (dbName )
103
113
if err != nil {
104
- logger .Fatalf ("failed to load db: %v " , err )
114
+ logger .Fatalf ("failed to load db: %s " , err )
105
115
}
106
116
107
117
// sanity check that the db is available
108
118
tables , err := store .ListTables (context .TODO ())
109
119
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 )
111
121
}
112
122
if len (tables ) == 0 {
113
123
logger .Fatal ("no tables found in db" )
114
124
}
115
125
116
126
lis , err := net .Listen ("tcp" , ":" + port )
117
127
if err != nil {
118
- logger .Fatalf ("failed to listen: %v " , err )
128
+ logger .Fatalf ("failed to listen: %s " , err )
119
129
}
120
130
s := grpc .NewServer ()
121
131
@@ -125,7 +135,7 @@ func runCmdFunc(cmd *cobra.Command, args []string) error {
125
135
126
136
logger .Info ("serving registry" )
127
137
if err := s .Serve (lis ); err != nil {
128
- logger .Fatalf ("failed to serve: %v " , err )
138
+ logger .Fatalf ("failed to serve: %s " , err )
129
139
}
130
140
return nil
131
141
}
@@ -144,7 +154,7 @@ func NewClientFromConfig(kubeconfig string, logger *logrus.Logger) kubernetes.In
144
154
}
145
155
146
156
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 )
148
158
}
149
159
150
160
return kubernetes .NewForConfigOrDie (config )
0 commit comments