@@ -85,13 +85,25 @@ func init() {
8585 rootCmd .PersistentFlags ().StringVar (& cfg .namespace , "namespace" , "ome" , "Kubernetes namespace to use" )
8686 rootCmd .PersistentFlags ().StringVar (& cfg .logLevel , "log-level" , "info" , "Log level (debug, info, warn, error)" )
8787
88+ // P2P distribution flags
89+ rootCmd .PersistentFlags ().BoolVar (& cfg .p2pEnabled , "p2p-enabled" , false , "Enable P2P model distribution" )
90+ rootCmd .PersistentFlags ().StringVar (& cfg .p2pPeersService , "p2p-peers-service" , "ome-peers.ome.svc.cluster.local" , "Headless service DNS for P2P peer discovery" )
91+ rootCmd .PersistentFlags ().IntVar (& cfg .p2pTorrentPort , "p2p-torrent-port" , 6881 , "BitTorrent peer port" )
92+ rootCmd .PersistentFlags ().IntVar (& cfg .p2pMetainfoPort , "p2p-metainfo-port" , 8081 , "HTTP port for metainfo sharing" )
93+ rootCmd .PersistentFlags ().Int64Var (& cfg .p2pMaxDownloadRate , "p2p-max-download-rate" , 2147483648 , "Max P2P download rate in bytes/s (default 2 GB/s)" )
94+ rootCmd .PersistentFlags ().Int64Var (& cfg .p2pMaxUploadRate , "p2p-max-upload-rate" , 2147483648 , "Max P2P upload rate in bytes/s (default 2 GB/s)" )
95+ rootCmd .PersistentFlags ().BoolVar (& cfg .p2pEnableEncryption , "p2p-enable-encryption" , false , "Enable BitTorrent header obfuscation" )
96+ rootCmd .PersistentFlags ().BoolVar (& cfg .p2pRequireEncryption , "p2p-require-encryption" , false , "Require encryption for all P2P peers" )
97+ rootCmd .PersistentFlags ().DurationVar (& cfg .p2pDownloadTimeout , "p2p-download-timeout" , time .Hour , "Timeout for P2P downloads" )
98+
8899 _ = v .BindPFlags (rootCmd .PersistentFlags ())
89100 v .SetEnvKeyReplacer (strings .NewReplacer ("-" , "_" ))
90101 v .AutomaticEnv ()
91102}
92103
93104// initConfig validates required environment variables
94105func initConfig (_ * cobra.Command , _ []string ) {
106+ // NODE_NAME comes from Kubernetes downward API, must be set as env var
95107 nodeName , ok := os .LookupEnv ("NODE_NAME" )
96108 if ! ok {
97109 panic ("NODE_NAME environment variable is not set for model-agent" )
@@ -100,40 +112,6 @@ func initConfig(_ *cobra.Command, _ []string) {
100112 panic ("NODE_NAME environment variable is empty" )
101113 }
102114 cfg .nodeName = nodeName
103-
104- // P2P configuration from environment variables
105- cfg .p2pEnabled = os .Getenv ("P2P_ENABLED" ) == "true"
106- cfg .p2pPeersService = os .Getenv ("PEERS_SERVICE" )
107- if cfg .p2pPeersService == "" {
108- cfg .p2pPeersService = "ome-peers.ome.svc.cluster.local"
109- }
110- cfg .p2pTorrentPort = getEnvInt ("P2P_TORRENT_PORT" , 6881 )
111- cfg .p2pMetainfoPort = getEnvInt ("P2P_METAINFO_PORT" , 8081 )
112- cfg .p2pMaxDownloadRate = getEnvInt64 ("P2P_MAX_DOWNLOAD_RATE" , 524288000 ) // 500 MB/s
113- cfg .p2pMaxUploadRate = getEnvInt64 ("P2P_MAX_UPLOAD_RATE" , 524288000 ) // 500 MB/s
114- cfg .p2pEnableEncryption = os .Getenv ("P2P_ENCRYPTION_ENABLED" ) == "true"
115- cfg .p2pRequireEncryption = os .Getenv ("P2P_ENCRYPTION_REQUIRED" ) == "true"
116- cfg .p2pDownloadTimeout = time .Duration (getEnvInt ("P2P_DOWNLOAD_TIMEOUT" , 3600 )) * time .Second // 1 hour default
117- }
118-
119- // getEnvInt reads an integer from environment variable with a default value
120- func getEnvInt (key string , defaultVal int ) int {
121- if val := os .Getenv (key ); val != "" {
122- if i , err := fmt .Sscanf (val , "%d" , & defaultVal ); err == nil && i == 1 {
123- return defaultVal
124- }
125- }
126- return defaultVal
127- }
128-
129- // getEnvInt64 reads an int64 from environment variable with a default value
130- func getEnvInt64 (key string , defaultVal int64 ) int64 {
131- if val := os .Getenv (key ); val != "" {
132- if i , err := fmt .Sscanf (val , "%d" , & defaultVal ); err == nil && i == 1 {
133- return defaultVal
134- }
135- }
136- return defaultVal
137115}
138116
139117// initializeLogger creates and configures a zap logger with the specified settings
0 commit comments