|
| 1 | +package cmd |
| 2 | + |
| 3 | +import ( |
| 4 | + "time" |
| 5 | + |
| 6 | + "github.com/go-acme/lego/v4/lego" |
| 7 | + "github.com/spf13/cobra" |
| 8 | + "github.com/spf13/viper" |
| 9 | + |
| 10 | + "github.com/cosmos/cosmos-sdk/client/flags" |
| 11 | + sdk "github.com/cosmos/cosmos-sdk/types" |
| 12 | + |
| 13 | + mparams "github.com/akash-network/akash-api/go/node/market/v1beta4" |
| 14 | + |
| 15 | + "github.com/akash-network/provider" |
| 16 | + providerflags "github.com/akash-network/provider/cmd/provider-services/cmd/flags" |
| 17 | +) |
| 18 | + |
| 19 | +func addRunFlags(cmd *cobra.Command) error { |
| 20 | + cfg := provider.NewDefaultConfig() |
| 21 | + |
| 22 | + cmd.Flags().String(flags.FlagChainID, "", "The network chain ID") |
| 23 | + if err := viper.BindPFlag(flags.FlagChainID, cmd.Flags().Lookup(flags.FlagChainID)); err != nil { |
| 24 | + panic(err) |
| 25 | + } |
| 26 | + |
| 27 | + cmd.Flags().Bool(FlagClusterK8s, false, "Use Kubernetes cluster") |
| 28 | + if err := viper.BindPFlag(FlagClusterK8s, cmd.Flags().Lookup(FlagClusterK8s)); err != nil { |
| 29 | + return err |
| 30 | + } |
| 31 | + |
| 32 | + cmd.Flags().String(providerflags.FlagK8sManifestNS, "lease", "Cluster manifest namespace") |
| 33 | + if err := viper.BindPFlag(providerflags.FlagK8sManifestNS, cmd.Flags().Lookup(providerflags.FlagK8sManifestNS)); err != nil { |
| 34 | + return err |
| 35 | + } |
| 36 | + |
| 37 | + cmd.Flags().String(FlagGatewayListenAddress, "0.0.0.0:8443", "Gateway listen address") |
| 38 | + if err := viper.BindPFlag(FlagGatewayListenAddress, cmd.Flags().Lookup(FlagGatewayListenAddress)); err != nil { |
| 39 | + return err |
| 40 | + } |
| 41 | + |
| 42 | + cmd.Flags().String(FlagGatewayGRPCListenAddress, "0.0.0.0:8444", "Gateway listen address") |
| 43 | + if err := viper.BindPFlag(FlagGatewayGRPCListenAddress, cmd.Flags().Lookup(FlagGatewayGRPCListenAddress)); err != nil { |
| 44 | + return err |
| 45 | + } |
| 46 | + |
| 47 | + cmd.Flags().String(FlagBidPricingStrategy, "scale", "Pricing strategy to use") |
| 48 | + if err := viper.BindPFlag(FlagBidPricingStrategy, cmd.Flags().Lookup(FlagBidPricingStrategy)); err != nil { |
| 49 | + return err |
| 50 | + } |
| 51 | + |
| 52 | + cmd.Flags().String(FlagBidPriceCPUScale, "0", "cpu pricing scale in uakt per millicpu") |
| 53 | + if err := viper.BindPFlag(FlagBidPriceCPUScale, cmd.Flags().Lookup(FlagBidPriceCPUScale)); err != nil { |
| 54 | + return err |
| 55 | + } |
| 56 | + |
| 57 | + cmd.Flags().String(FlagBidPriceMemoryScale, "0", "memory pricing scale in uakt per megabyte") |
| 58 | + if err := viper.BindPFlag(FlagBidPriceMemoryScale, cmd.Flags().Lookup(FlagBidPriceMemoryScale)); err != nil { |
| 59 | + return err |
| 60 | + } |
| 61 | + |
| 62 | + cmd.Flags().String(FlagBidPriceStorageScale, "0", "storage pricing scale in uakt per megabyte") |
| 63 | + if err := viper.BindPFlag(FlagBidPriceStorageScale, cmd.Flags().Lookup(FlagBidPriceStorageScale)); err != nil { |
| 64 | + return err |
| 65 | + } |
| 66 | + |
| 67 | + cmd.Flags().String(FlagBidPriceEndpointScale, "0", "endpoint pricing scale in uakt") |
| 68 | + if err := viper.BindPFlag(FlagBidPriceEndpointScale, cmd.Flags().Lookup(FlagBidPriceEndpointScale)); err != nil { |
| 69 | + return err |
| 70 | + } |
| 71 | + |
| 72 | + cmd.Flags().String(FlagBidPriceIPScale, "0", "leased ip pricing scale in uakt") |
| 73 | + if err := viper.BindPFlag(FlagBidPriceIPScale, cmd.Flags().Lookup(FlagBidPriceIPScale)); err != nil { |
| 74 | + return err |
| 75 | + } |
| 76 | + |
| 77 | + cmd.Flags().String(FlagBidPriceScriptPath, "", "path to script to run for computing bid price") |
| 78 | + if err := viper.BindPFlag(FlagBidPriceScriptPath, cmd.Flags().Lookup(FlagBidPriceScriptPath)); err != nil { |
| 79 | + return err |
| 80 | + } |
| 81 | + |
| 82 | + cmd.Flags().Uint(FlagBidPriceScriptProcessLimit, 32, "limit to the number of scripts run concurrently for bid pricing") |
| 83 | + if err := viper.BindPFlag(FlagBidPriceScriptProcessLimit, cmd.Flags().Lookup(FlagBidPriceScriptProcessLimit)); err != nil { |
| 84 | + return err |
| 85 | + } |
| 86 | + |
| 87 | + cmd.Flags().Duration(FlagBidPriceScriptTimeout, time.Second*10, "execution timelimit for bid pricing as a duration") |
| 88 | + if err := viper.BindPFlag(FlagBidPriceScriptTimeout, cmd.Flags().Lookup(FlagBidPriceScriptTimeout)); err != nil { |
| 89 | + return err |
| 90 | + } |
| 91 | + |
| 92 | + cmd.Flags().String(FlagBidDeposit, cfg.BidDeposit.String(), "Bid deposit amount") |
| 93 | + if err := viper.BindPFlag(FlagBidDeposit, cmd.Flags().Lookup(FlagBidDeposit)); err != nil { |
| 94 | + return err |
| 95 | + } |
| 96 | + |
| 97 | + cmd.Flags().String(FlagClusterPublicHostname, "", "The public IP of the Kubernetes cluster") |
| 98 | + if err := viper.BindPFlag(FlagClusterPublicHostname, cmd.Flags().Lookup(FlagClusterPublicHostname)); err != nil { |
| 99 | + return err |
| 100 | + } |
| 101 | + |
| 102 | + cmd.Flags().Uint(FlagClusterNodePortQuantity, 1, "The number of node ports available on the Kubernetes cluster") |
| 103 | + if err := viper.BindPFlag(FlagClusterNodePortQuantity, cmd.Flags().Lookup(FlagClusterNodePortQuantity)); err != nil { |
| 104 | + return err |
| 105 | + } |
| 106 | + |
| 107 | + cmd.Flags().Duration(FlagClusterWaitReadyDuration, time.Second*5, "The time to wait for the cluster to be available") |
| 108 | + if err := viper.BindPFlag(FlagClusterWaitReadyDuration, cmd.Flags().Lookup(FlagClusterWaitReadyDuration)); err != nil { |
| 109 | + return err |
| 110 | + } |
| 111 | + |
| 112 | + cmd.Flags().Duration(FlagInventoryResourcePollPeriod, time.Second*5, "The period to poll the cluster inventory") |
| 113 | + if err := viper.BindPFlag(FlagInventoryResourcePollPeriod, cmd.Flags().Lookup(FlagInventoryResourcePollPeriod)); err != nil { |
| 114 | + return err |
| 115 | + } |
| 116 | + |
| 117 | + cmd.Flags().Uint(FlagInventoryResourceDebugFrequency, 10, "The rate at which to log all inventory resources") |
| 118 | + if err := viper.BindPFlag(FlagInventoryResourceDebugFrequency, cmd.Flags().Lookup(FlagInventoryResourceDebugFrequency)); err != nil { |
| 119 | + return err |
| 120 | + } |
| 121 | + |
| 122 | + cmd.Flags().Bool(FlagDeploymentIngressStaticHosts, false, "") |
| 123 | + if err := viper.BindPFlag(FlagDeploymentIngressStaticHosts, cmd.Flags().Lookup(FlagDeploymentIngressStaticHosts)); err != nil { |
| 124 | + return err |
| 125 | + } |
| 126 | + |
| 127 | + cmd.Flags().String(FlagDeploymentIngressDomain, "", "") |
| 128 | + if err := viper.BindPFlag(FlagDeploymentIngressDomain, cmd.Flags().Lookup(FlagDeploymentIngressDomain)); err != nil { |
| 129 | + return err |
| 130 | + } |
| 131 | + |
| 132 | + cmd.Flags().Bool(FlagDeploymentIngressExposeLBHosts, false, "") |
| 133 | + if err := viper.BindPFlag(FlagDeploymentIngressExposeLBHosts, cmd.Flags().Lookup(FlagDeploymentIngressExposeLBHosts)); err != nil { |
| 134 | + return err |
| 135 | + } |
| 136 | + |
| 137 | + cmd.Flags().Bool(FlagDeploymentNetworkPoliciesEnabled, true, "Enable network policies") |
| 138 | + if err := viper.BindPFlag(FlagDeploymentNetworkPoliciesEnabled, cmd.Flags().Lookup(FlagDeploymentNetworkPoliciesEnabled)); err != nil { |
| 139 | + return err |
| 140 | + } |
| 141 | + |
| 142 | + cmd.Flags().String(FlagDockerImagePullSecretsName, "", "Name of the local image pull secret configured with kubectl") |
| 143 | + if err := viper.BindPFlag(FlagDockerImagePullSecretsName, cmd.Flags().Lookup(FlagDockerImagePullSecretsName)); err != nil { |
| 144 | + return err |
| 145 | + } |
| 146 | + |
| 147 | + cmd.Flags().Uint64(FlagOvercommitPercentMemory, 0, "Percentage of memory overcommit") |
| 148 | + if err := viper.BindPFlag(FlagOvercommitPercentMemory, cmd.Flags().Lookup(FlagOvercommitPercentMemory)); err != nil { |
| 149 | + return err |
| 150 | + } |
| 151 | + |
| 152 | + cmd.Flags().Uint64(FlagOvercommitPercentCPU, 0, "Percentage of CPU overcommit") |
| 153 | + if err := viper.BindPFlag(FlagOvercommitPercentCPU, cmd.Flags().Lookup(FlagOvercommitPercentCPU)); err != nil { |
| 154 | + return err |
| 155 | + } |
| 156 | + |
| 157 | + cmd.Flags().Uint64(FlagOvercommitPercentStorage, 0, "Percentage of storage overcommit") |
| 158 | + if err := viper.BindPFlag(FlagOvercommitPercentStorage, cmd.Flags().Lookup(FlagOvercommitPercentStorage)); err != nil { |
| 159 | + return err |
| 160 | + } |
| 161 | + |
| 162 | + cmd.Flags().StringSlice(FlagDeploymentBlockedHostnames, nil, "hostnames blocked for deployments") |
| 163 | + if err := viper.BindPFlag(FlagDeploymentBlockedHostnames, cmd.Flags().Lookup(FlagDeploymentBlockedHostnames)); err != nil { |
| 164 | + return err |
| 165 | + } |
| 166 | + |
| 167 | + cmd.Flags().String(FlagAuthPem, "", "") |
| 168 | + |
| 169 | + if err := providerflags.AddKubeConfigPathFlag(cmd); err != nil { |
| 170 | + return err |
| 171 | + } |
| 172 | + |
| 173 | + cmd.Flags().String(FlagDeploymentRuntimeClass, "gvisor", "kubernetes runtime class for deployments, use none for no specification") |
| 174 | + if err := viper.BindPFlag(FlagDeploymentRuntimeClass, cmd.Flags().Lookup(FlagDeploymentRuntimeClass)); err != nil { |
| 175 | + return err |
| 176 | + } |
| 177 | + |
| 178 | + cmd.Flags().Duration(FlagBidTimeout, 5*time.Minute, "time after which bids are cancelled if no lease is created") |
| 179 | + if err := viper.BindPFlag(FlagBidTimeout, cmd.Flags().Lookup(FlagBidTimeout)); err != nil { |
| 180 | + return err |
| 181 | + } |
| 182 | + |
| 183 | + cmd.Flags().Duration(FlagManifestTimeout, 5*time.Minute, "time after which bids are cancelled if no manifest is received") |
| 184 | + if err := viper.BindPFlag(FlagManifestTimeout, cmd.Flags().Lookup(FlagManifestTimeout)); err != nil { |
| 185 | + return err |
| 186 | + } |
| 187 | + |
| 188 | + cmd.Flags().String(FlagMetricsListener, "", "ip and port to start the metrics listener on") |
| 189 | + if err := viper.BindPFlag(FlagMetricsListener, cmd.Flags().Lookup(FlagMetricsListener)); err != nil { |
| 190 | + return err |
| 191 | + } |
| 192 | + |
| 193 | + cmd.Flags().Duration(FlagWithdrawalPeriod, time.Hour*24, "period at which withdrawals are made from the escrow accounts") |
| 194 | + if err := viper.BindPFlag(FlagWithdrawalPeriod, cmd.Flags().Lookup(FlagWithdrawalPeriod)); err != nil { |
| 195 | + return err |
| 196 | + } |
| 197 | + |
| 198 | + cmd.Flags().Duration(FlagLeaseFundsMonitorInterval, time.Minute*10, "interval at which lease is checked for funds available on the escrow accounts. >= 1m") |
| 199 | + if err := viper.BindPFlag(FlagLeaseFundsMonitorInterval, cmd.Flags().Lookup(FlagLeaseFundsMonitorInterval)); err != nil { |
| 200 | + return err |
| 201 | + } |
| 202 | + |
| 203 | + cmd.Flags().Uint64(FlagMinimumBalance, mparams.DefaultBidMinDeposit.Amount.Mul(sdk.NewIntFromUint64(2)).Uint64(), "minimum account balance at which withdrawal is started") |
| 204 | + if err := viper.BindPFlag(FlagMinimumBalance, cmd.Flags().Lookup(FlagMinimumBalance)); err != nil { |
| 205 | + return err |
| 206 | + } |
| 207 | + |
| 208 | + cmd.Flags().String(FlagProviderConfig, "", "provider configuration file path") |
| 209 | + if err := viper.BindPFlag(FlagProviderConfig, cmd.Flags().Lookup(FlagProviderConfig)); err != nil { |
| 210 | + return err |
| 211 | + } |
| 212 | + |
| 213 | + cmd.Flags().Duration(FlagRPCQueryTimeout, time.Minute, "timeout for requests made to the RPC node") |
| 214 | + if err := viper.BindPFlag(FlagRPCQueryTimeout, cmd.Flags().Lookup(FlagRPCQueryTimeout)); err != nil { |
| 215 | + return err |
| 216 | + } |
| 217 | + |
| 218 | + cmd.Flags().Duration(FlagCachedResultMaxAge, 5*time.Second, "max. cache age for results from the RPC node") |
| 219 | + if err := viper.BindPFlag(FlagCachedResultMaxAge, cmd.Flags().Lookup(FlagCachedResultMaxAge)); err != nil { |
| 220 | + return err |
| 221 | + } |
| 222 | + |
| 223 | + cmd.Flags().Bool(FlagEnableIPOperator, false, "enable usage of the IP operator to lease IP addresses") |
| 224 | + if err := viper.BindPFlag(FlagEnableIPOperator, cmd.Flags().Lookup(FlagEnableIPOperator)); err != nil { |
| 225 | + return err |
| 226 | + } |
| 227 | + |
| 228 | + cmd.Flags().Duration(FlagTxBroadcastTimeout, 30*time.Second, "tx broadcast timeout. defaults to 30s") |
| 229 | + if err := viper.BindPFlag(FlagTxBroadcastTimeout, cmd.Flags().Lookup(FlagTxBroadcastTimeout)); err != nil { |
| 230 | + return err |
| 231 | + } |
| 232 | + |
| 233 | + cmd.Flags().Uint(FlagMonitorMaxRetries, 40, "max count of status retries before closing the lease. defaults to 40") |
| 234 | + if err := viper.BindPFlag(FlagMonitorMaxRetries, cmd.Flags().Lookup(FlagMonitorMaxRetries)); err != nil { |
| 235 | + return err |
| 236 | + } |
| 237 | + |
| 238 | + cmd.Flags().Duration(FlagMonitorRetryPeriod, 4*time.Second, "monitor status retry period. defaults to 4s (min value)") |
| 239 | + if err := viper.BindPFlag(FlagMonitorRetryPeriod, cmd.Flags().Lookup(FlagMonitorRetryPeriod)); err != nil { |
| 240 | + return err |
| 241 | + } |
| 242 | + |
| 243 | + cmd.Flags().Duration(FlagMonitorRetryPeriodJitter, 15*time.Second, "monitor status retry window. defaults to 15s") |
| 244 | + if err := viper.BindPFlag(FlagMonitorRetryPeriodJitter, cmd.Flags().Lookup(FlagMonitorRetryPeriodJitter)); err != nil { |
| 245 | + return err |
| 246 | + } |
| 247 | + |
| 248 | + cmd.Flags().Duration(FlagMonitorHealthcheckPeriod, 10*time.Second, "monitor healthcheck period. defaults to 10s") |
| 249 | + if err := viper.BindPFlag(FlagMonitorHealthcheckPeriod, cmd.Flags().Lookup(FlagMonitorHealthcheckPeriod)); err != nil { |
| 250 | + return err |
| 251 | + } |
| 252 | + |
| 253 | + cmd.Flags().Duration(FlagMonitorHealthcheckPeriodJitter, 5*time.Second, "monitor healthcheck window. defaults to 5s") |
| 254 | + if err := viper.BindPFlag(FlagMonitorHealthcheckPeriodJitter, cmd.Flags().Lookup(FlagMonitorHealthcheckPeriodJitter)); err != nil { |
| 255 | + return err |
| 256 | + } |
| 257 | + |
| 258 | + cmd.Flags().String(FlagPersistentConfigBackend, "bbolt", "backend storage for persistent config. defaults to bbolt. available options: bbolt") |
| 259 | + if err := viper.BindPFlag(FlagPersistentConfigBackend, cmd.Flags().Lookup(FlagPersistentConfigBackend)); err != nil { |
| 260 | + return err |
| 261 | + } |
| 262 | + |
| 263 | + cmd.Flags().String(FlagPersistentConfigPath, "", "path to backend storage for persistent config") |
| 264 | + if err := viper.BindPFlag(FlagPersistentConfigPath, cmd.Flags().Lookup(FlagPersistentConfigPath)); err != nil { |
| 265 | + return err |
| 266 | + } |
| 267 | + |
| 268 | + if err := providerflags.AddServiceEndpointFlag(cmd, serviceHostnameOperator); err != nil { |
| 269 | + return err |
| 270 | + } |
| 271 | + |
| 272 | + if err := providerflags.AddServiceEndpointFlag(cmd, serviceIPOperator); err != nil { |
| 273 | + return err |
| 274 | + } |
| 275 | + |
| 276 | + cmd.Flags().Bool(FlagCertIssuerEnabled, false, "enable certificate issuer") |
| 277 | + if err := viper.BindPFlag(FlagCertIssuerEnabled, cmd.Flags().Lookup(FlagCertIssuerEnabled)); err != nil { |
| 278 | + return err |
| 279 | + } |
| 280 | + |
| 281 | + cmd.Flags().String(FlagCertIssuerEmail, "", "user email for certificate registar") |
| 282 | + if err := viper.BindPFlag(FlagCertIssuerEmail, cmd.Flags().Lookup(FlagCertIssuerEmail)); err != nil { |
| 283 | + return err |
| 284 | + } |
| 285 | + |
| 286 | + cmd.Flags().String(FlagCertIssuerCADirURL, lego.LEDirectoryStaging, "URL to server directory URL. Defaults to Let's Encrypt Staging") |
| 287 | + if err := viper.BindPFlag(FlagCertIssuerCADirURL, cmd.Flags().Lookup(FlagCertIssuerCADirURL)); err != nil { |
| 288 | + return err |
| 289 | + } |
| 290 | + |
| 291 | + cmd.Flags().String(FlagCertIssuerStorageDir, "", "path to store acme information. defaults to $AP_HOME/.certissuer") |
| 292 | + if err := viper.BindPFlag(FlagCertIssuerStorageDir, cmd.Flags().Lookup(FlagCertIssuerStorageDir)); err != nil { |
| 293 | + return err |
| 294 | + } |
| 295 | + |
| 296 | + cmd.Flags().StringSlice(FlagCertIssuerDNSProviders, nil, "comma separated list of dns providers") |
| 297 | + if err := viper.BindPFlag(FlagCertIssuerDNSProviders, cmd.Flags().Lookup(FlagCertIssuerDNSProviders)); err != nil { |
| 298 | + return err |
| 299 | + } |
| 300 | + |
| 301 | + cmd.Flags().String(FlagCertIssuerKID, "", "") |
| 302 | + if err := viper.BindPFlag(FlagCertIssuerKID, cmd.Flags().Lookup(FlagCertIssuerKID)); err != nil { |
| 303 | + return err |
| 304 | + } |
| 305 | + |
| 306 | + cmd.Flags().String(FlagCertIssuerHMAC, "", "") |
| 307 | + if err := viper.BindPFlag(FlagCertIssuerHMAC, cmd.Flags().Lookup(FlagCertIssuerHMAC)); err != nil { |
| 308 | + return err |
| 309 | + } |
| 310 | + |
| 311 | + return nil |
| 312 | +} |
0 commit comments