github.com/openfga/openfga@v1.5.4-rc1/cmd/run/flags.go (about) 1 package run 2 3 import ( 4 "github.com/spf13/cobra" 5 "github.com/spf13/pflag" 6 7 "github.com/openfga/openfga/cmd/util" 8 ) 9 10 // bindRunFlags binds the cobra cmd flags to the equivalent config value being managed 11 // by viper. This bridges the config between cobra flags and viper flags. 12 func bindRunFlagsFunc(flags *pflag.FlagSet) func(*cobra.Command, []string) { 13 return func(command *cobra.Command, args []string) { 14 util.MustBindPFlag("experimentals", flags.Lookup("experimentals")) 15 util.MustBindEnv("experimentals", "OPENFGA_EXPERIMENTALS") 16 17 util.MustBindPFlag("grpc.addr", flags.Lookup("grpc-addr")) 18 util.MustBindEnv("grpc.addr", "OPENFGA_GRPC_ADDR") 19 20 util.MustBindPFlag("grpc.tls.enabled", flags.Lookup("grpc-tls-enabled")) 21 util.MustBindEnv("grpc.tls.enabled", "OPENFGA_GRPC_TLS_ENABLED") 22 23 util.MustBindPFlag("grpc.tls.cert", flags.Lookup("grpc-tls-cert")) 24 util.MustBindEnv("grpc.tls.cert", "OPENFGA_GRPC_TLS_CERT") 25 26 util.MustBindPFlag("grpc.tls.key", flags.Lookup("grpc-tls-key")) 27 util.MustBindEnv("grpc.tls.key", "OPENFGA_GRPC_TLS_KEY") 28 29 command.MarkFlagsRequiredTogether("grpc-tls-enabled", "grpc-tls-cert", "grpc-tls-key") 30 31 util.MustBindPFlag("http.enabled", flags.Lookup("http-enabled")) 32 util.MustBindEnv("http.enabled", "OPENFGA_HTTP_ENABLED") 33 34 util.MustBindPFlag("http.addr", flags.Lookup("http-addr")) 35 util.MustBindEnv("http.addr", "OPENFGA_HTTP_ADDR") 36 37 util.MustBindPFlag("http.tls.enabled", flags.Lookup("http-tls-enabled")) 38 util.MustBindEnv("http.tls.enabled", "OPENFGA_HTTP_TLS_ENABLED") 39 40 util.MustBindPFlag("http.tls.cert", flags.Lookup("http-tls-cert")) 41 util.MustBindEnv("http.tls.cert", "OPENFGA_HTTP_TLS_CERT") 42 43 util.MustBindPFlag("http.tls.key", flags.Lookup("http-tls-key")) 44 util.MustBindEnv("http.tls.key", "OPENFGA_HTTP_TLS_KEY") 45 46 command.MarkFlagsRequiredTogether("http-tls-enabled", "http-tls-cert", "http-tls-key") 47 48 util.MustBindPFlag("http.upstreamTimeout", flags.Lookup("http-upstream-timeout")) 49 util.MustBindEnv("http.upstreamTimeout", "OPENFGA_HTTP_UPSTREAM_TIMEOUT", "OPENFGA_HTTP_UPSTREAMTIMEOUT") 50 51 util.MustBindPFlag("http.corsAllowedOrigins", flags.Lookup("http-cors-allowed-origins")) 52 util.MustBindEnv("http.corsAllowedOrigins", "OPENFGA_HTTP_CORS_ALLOWED_ORIGINS", "OPENFGA_HTTP_CORSALLOWEDORIGINS") 53 54 util.MustBindPFlag("http.corsAllowedHeaders", flags.Lookup("http-cors-allowed-headers")) 55 util.MustBindEnv("http.corsAllowedHeaders", "OPENFGA_HTTP_CORS_ALLOWED_HEADERS", "OPENFGA_HTTP_CORSALLOWEDHEADERS") 56 57 util.MustBindPFlag("authn.method", flags.Lookup("authn-method")) 58 util.MustBindEnv("authn.method", "OPENFGA_AUTHN_METHOD") 59 60 util.MustBindPFlag("authn.preshared.keys", flags.Lookup("authn-preshared-keys")) 61 util.MustBindEnv("authn.preshared.keys", "OPENFGA_AUTHN_PRESHARED_KEYS") 62 63 util.MustBindPFlag("authn.oidc.audience", flags.Lookup("authn-oidc-audience")) 64 util.MustBindEnv("authn.oidc.audience", "OPENFGA_AUTHN_OIDC_AUDIENCE") 65 66 util.MustBindPFlag("authn.oidc.issuer", flags.Lookup("authn-oidc-issuer")) 67 util.MustBindEnv("authn.oidc.issuer", "OPENFGA_AUTHN_OIDC_ISSUER") 68 69 util.MustBindPFlag("authn.oidc.issuerAliases", flags.Lookup("authn-oidc-issuer-aliases")) 70 util.MustBindEnv("authn.oidc.issuerAliases", "OPENFGA_AUTHN_OIDC_ISSUER_ALIASES") 71 72 util.MustBindPFlag("datastore.engine", flags.Lookup("datastore-engine")) 73 util.MustBindEnv("datastore.engine", "OPENFGA_DATASTORE_ENGINE") 74 75 util.MustBindPFlag("datastore.uri", flags.Lookup("datastore-uri")) 76 util.MustBindEnv("datastore.uri", "OPENFGA_DATASTORE_URI") 77 78 util.MustBindPFlag("datastore.username", flags.Lookup("datastore-username")) 79 util.MustBindEnv("datastore.username", "OPENFGA_DATASTORE_USERNAME") 80 81 util.MustBindPFlag("datastore.password", flags.Lookup("datastore-password")) 82 util.MustBindEnv("datastore.password", "OPENFGA_DATASTORE_PASSWORD") 83 84 util.MustBindPFlag("datastore.maxCacheSize", flags.Lookup("datastore-max-cache-size")) 85 util.MustBindEnv("datastore.maxCacheSize", "OPENFGA_DATASTORE_MAX_CACHE_SIZE", "OPENFGA_DATASTORE_MAXCACHESIZE") 86 87 util.MustBindPFlag("datastore.maxOpenConns", flags.Lookup("datastore-max-open-conns")) 88 util.MustBindEnv("datastore.maxOpenConns", "OPENFGA_DATASTORE_MAX_OPEN_CONNS", "OPENFGA_DATASTORE_MAXOPENCONNS") 89 90 util.MustBindPFlag("datastore.maxIdleConns", flags.Lookup("datastore-max-idle-conns")) 91 util.MustBindEnv("datastore.maxIdleConns", "OPENFGA_DATASTORE_MAX_IDLE_CONNS", "OPENFGA_DATASTORE_MAXIDLECONNS") 92 93 util.MustBindPFlag("datastore.connMaxIdleTime", flags.Lookup("datastore-conn-max-idle-time")) 94 util.MustBindEnv("datastore.connMaxIdleTime", "OPENFGA_DATASTORE_CONN_MAX_IDLE_TIME", "OPENFGA_DATASTORE_CONNMAXIDLETIME") 95 96 util.MustBindPFlag("datastore.connMaxLifetime", flags.Lookup("datastore-conn-max-lifetime")) 97 util.MustBindEnv("datastore.connMaxLifetime", "OPENFGA_DATASTORE_CONN_MAX_LIFETIME", "OPENFGA_DATASTORE_CONNMAXLIFETIME") 98 99 util.MustBindPFlag("datastore.metrics.enabled", flags.Lookup("datastore-metrics-enabled")) 100 util.MustBindEnv("datastore.metrics.enabled", "OPENFGA_DATASTORE_METRICS_ENABLED") 101 102 util.MustBindPFlag("playground.enabled", flags.Lookup("playground-enabled")) 103 util.MustBindEnv("playground.enabled", "OPENFGA_PLAYGROUND_ENABLED") 104 105 util.MustBindPFlag("playground.port", flags.Lookup("playground-port")) 106 util.MustBindEnv("playground.port", "OPENFGA_PLAYGROUND_PORT") 107 108 util.MustBindPFlag("profiler.enabled", flags.Lookup("profiler-enabled")) 109 util.MustBindEnv("profiler.enabled", "OPENFGA_PROFILER_ENABLED") 110 111 util.MustBindPFlag("profiler.addr", flags.Lookup("profiler-addr")) 112 util.MustBindEnv("profiler.addr", "OPENFGA_PROFILER_ADDRESS") 113 114 util.MustBindPFlag("log.format", flags.Lookup("log-format")) 115 util.MustBindEnv("log.format", "OPENFGA_LOG_FORMAT") 116 117 util.MustBindPFlag("log.level", flags.Lookup("log-level")) 118 util.MustBindEnv("log.level", "OPENFGA_LOG_LEVEL") 119 120 util.MustBindPFlag("log.timestampFormat", flags.Lookup("log-timestamp-format")) 121 util.MustBindEnv("log.timestampFormat", "OPENFGA_LOG_TIMESTAMP_FORMAT") 122 123 util.MustBindPFlag("trace.enabled", flags.Lookup("trace-enabled")) 124 util.MustBindEnv("trace.enabled", "OPENFGA_TRACE_ENABLED") 125 126 util.MustBindPFlag("trace.otlp.endpoint", flags.Lookup("trace-otlp-endpoint")) 127 util.MustBindEnv("trace.otlp.endpoint", "OPENFGA_TRACE_OTLP_ENDPOINT") 128 129 util.MustBindPFlag("trace.otlp.tls.enabled", flags.Lookup("trace-otlp-tls-enabled")) 130 util.MustBindEnv("trace.otlp.tls.enabled", "OPENFGA_TRACE_OTLP_TLS_ENABLED") 131 132 util.MustBindPFlag("trace.sampleRatio", flags.Lookup("trace-sample-ratio")) 133 util.MustBindEnv("trace.sampleRatio", "OPENFGA_TRACE_SAMPLE_RATIO") 134 135 util.MustBindPFlag("trace.serviceName", flags.Lookup("trace-service-name")) 136 util.MustBindEnv("trace.serviceName", "OPENFGA_TRACE_SERVICE_NAME") 137 138 util.MustBindPFlag("metrics.enabled", flags.Lookup("metrics-enabled")) 139 util.MustBindEnv("metrics.enabled", "OPENFGA_METRICS_ENABLED") 140 141 util.MustBindPFlag("metrics.addr", flags.Lookup("metrics-addr")) 142 util.MustBindEnv("metrics.addr", "OPENFGA_METRICS_ADDR") 143 144 util.MustBindPFlag("metrics.enableRPCHistograms", flags.Lookup("metrics-enable-rpc-histograms")) 145 util.MustBindEnv("metrics.enableRPCHistograms", "OPENFGA_METRICS_ENABLE_RPC_HISTOGRAMS") 146 147 util.MustBindPFlag("maxTuplesPerWrite", flags.Lookup("max-tuples-per-write")) 148 util.MustBindEnv("maxTuplesPerWrite", "OPENFGA_MAX_TUPLES_PER_WRITE", "OPENFGA_MAXTUPLESPERWRITE") 149 150 util.MustBindPFlag("maxTypesPerAuthorizationModel", flags.Lookup("max-types-per-authorization-model")) 151 util.MustBindEnv("maxTypesPerAuthorizationModel", "OPENFGA_MAX_TYPES_PER_AUTHORIZATION_MODEL", "OPENFGA_MAXTYPESPERAUTHORIZATIONMODEL") 152 153 util.MustBindPFlag("maxAuthorizationModelSizeInBytes", flags.Lookup("max-authorization-model-size-in-bytes")) 154 util.MustBindEnv("maxAuthorizationModelSizeInBytes", "OPENFGA_MAX_AUTHORIZATION_MODEL_SIZE_IN_BYTES", "OPENFGA_MAXAUTHORIZATIONMODELSIZEINBYTES") 155 156 util.MustBindPFlag("maxConcurrentReadsForListObjects", flags.Lookup("max-concurrent-reads-for-list-objects")) 157 util.MustBindEnv("maxConcurrentReadsForListObjects", "OPENFGA_MAX_CONCURRENT_READS_FOR_LIST_OBJECTS", "OPENFGA_MAXCONCURRENTREADSFORLISTOBJECTS") 158 159 util.MustBindPFlag("maxConcurrentReadsForListUsers", flags.Lookup("max-concurrent-reads-for-list-users")) 160 util.MustBindEnv("maxConcurrentReadsForListUsers", "OPENFGA_MAX_CONCURRENT_READS_FOR_LIST_USERS", "OPENFGA_MAXCONCURRENTREADSFORLISTUSERS") 161 162 util.MustBindPFlag("maxConcurrentReadsForCheck", flags.Lookup("max-concurrent-reads-for-check")) 163 util.MustBindEnv("maxConcurrentReadsForCheck", "OPENFGA_MAX_CONCURRENT_READS_FOR_CHECK", "OPENFGA_MAXCONCURRENTREADSFORCHECK") 164 165 util.MustBindPFlag("changelogHorizonOffset", flags.Lookup("changelog-horizon-offset")) 166 util.MustBindEnv("changelogHorizonOffset", "OPENFGA_CHANGELOG_HORIZON_OFFSET", "OPENFGA_CHANGELOGHORIZONOFFSET") 167 168 util.MustBindPFlag("resolveNodeLimit", flags.Lookup("resolve-node-limit")) 169 util.MustBindEnv("resolveNodeLimit", "OPENFGA_RESOLVE_NODE_LIMIT", "OPENFGA_RESOLVENODELIMIT") 170 171 util.MustBindPFlag("resolveNodeBreadthLimit", flags.Lookup("resolve-node-breadth-limit")) 172 util.MustBindEnv("resolveNodeBreadthLimit", "OPENFGA_RESOLVE_NODE_BREADTH_LIMIT", "OPENFGA_RESOLVENODEBREADTHLIMIT") 173 174 util.MustBindPFlag("listObjectsDeadline", flags.Lookup("listObjects-deadline")) 175 util.MustBindEnv("listObjectsDeadline", "OPENFGA_LIST_OBJECTS_DEADLINE", "OPENFGA_LISTOBJECTSDEADLINE") 176 177 util.MustBindPFlag("listObjectsMaxResults", flags.Lookup("listObjects-max-results")) 178 util.MustBindEnv("listObjectsMaxResults", "OPENFGA_LIST_OBJECTS_MAX_RESULTS", "OPENFGA_LISTOBJECTSMAXRESULTS") 179 180 util.MustBindPFlag("listUsersDeadline", flags.Lookup("listUsers-deadline")) 181 util.MustBindEnv("listUsersDeadline", "OPENFGA_LIST_USERS_DEADLINE", "OPENFGA_LISTUSERSDEADLINE") 182 183 util.MustBindPFlag("listUsersMaxResults", flags.Lookup("listUsers-max-results")) 184 util.MustBindEnv("listUsersMaxResults", "OPENFGA_LIST_USERS_MAX_RESULTS", "OPENFGA_LISTUSERSMAXRESULTS") 185 186 util.MustBindPFlag("checkQueryCache.enabled", flags.Lookup("check-query-cache-enabled")) 187 util.MustBindEnv("checkQueryCache.enabled", "OPENFGA_CHECK_QUERY_CACHE_ENABLED") 188 189 util.MustBindPFlag("checkQueryCache.limit", flags.Lookup("check-query-cache-limit")) 190 util.MustBindEnv("checkQueryCache.limit", "OPENFGA_CHECK_QUERY_CACHE_LIMIT") 191 192 util.MustBindPFlag("checkQueryCache.ttl", flags.Lookup("check-query-cache-ttl")) 193 util.MustBindEnv("checkQueryCache.ttl", "OPENFGA_CHECK_QUERY_CACHE_TTL") 194 195 util.MustBindPFlag("requestDurationDatastoreQueryCountBuckets", flags.Lookup("request-duration-datastore-query-count-buckets")) 196 util.MustBindEnv("requestDurationDatastoreQueryCountBuckets", "OPENFGA_REQUEST_DURATION_DATASTORE_QUERY_COUNT_BUCKETS") 197 198 util.MustBindPFlag("requestDurationDispatchCountBuckets", flags.Lookup("request-duration-dispatch-count-buckets")) 199 util.MustBindEnv("requestDurationDispatchCountBuckets", "OPENFGA_REQUEST_DURATION_DISPATCH_COUNT_BUCKETS") 200 201 util.MustBindPFlag("dispatchThrottling.enabled", flags.Lookup("dispatch-throttling-enabled")) 202 util.MustBindEnv("dispatchThrottling.enabled", "OPENFGA_DISPATCH_THROTTLING_ENABLED") 203 204 util.MustBindPFlag("dispatchThrottling.frequency", flags.Lookup("dispatch-throttling-frequency")) 205 util.MustBindEnv("dispatchThrottling.frequency", "OPENFGA_DISPATCH_THROTTLING_FREQUENCY") 206 207 util.MustBindPFlag("dispatchThrottling.threshold", flags.Lookup("dispatch-throttling-threshold")) 208 util.MustBindEnv("dispatchThrottling.threshold", "OPENFGA_DISPATCH_THROTTLING_THRESHOLD") 209 210 util.MustBindPFlag("dispatchThrottling.maxThreshold", flags.Lookup("dispatch-throttling-max-threshold")) 211 util.MustBindEnv("dispatchThrottling.maxThreshold", "OPENFGA_DISPATCH_THROTTLING_MAX_THRESHOLD") 212 213 util.MustBindPFlag("requestTimeout", flags.Lookup("request-timeout")) 214 util.MustBindEnv("requestTimeout", "OPENFGA_REQUEST_TIMEOUT") 215 } 216 }