mirror of
https://github.com/hanzo-ml/trainer.git
synced 2026-09-24 00:31:34 +00:00
* chore(scripts): add copyright boilerplate verification system Signed-off-by: tariq-hasan <[email protected]> * chore(ci): add boilerplate verification to CI pipeline Signed-off-by: tariq-hasan <[email protected]> * chore: regenerate files with year-less copyright headers Signed-off-by: tariq-hasan <[email protected]> * refactor(boilerplate): simplify verification logic Signed-off-by: tariq-hasan <[email protected]> * chore(boilerplate): add missing copyright headers Signed-off-by: tariq-hasan <[email protected]> * ci(boilerplate): move verifier to code-quality workflow and run unit tests Signed-off-by: tariq-hasan <[email protected]> * feat(boilerplate): accept license headers with any year and remove year validation logic Signed-off-by: tariq-hasan <[email protected]> * feat(boilerplate): add copyright headers to generated Python API Signed-off-by: tariq-hasan <[email protected]> * refactor(boilerplate): use block-comment header for generated Go files Signed-off-by: tariq-hasan <[email protected]> * feat(boilerplate): verify copyright headers in Rust files Signed-off-by: tariq-hasan <[email protected]> --------- Signed-off-by: tariq-hasan <[email protected]>
66 lines
2.1 KiB
Rust
66 lines
2.1 KiB
Rust
// Copyright The Kubeflow Authors.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
use hickory_resolver::TokioAsyncResolver;
|
|
use hickory_resolver::config::*;
|
|
use std::env;
|
|
use std::time::Duration;
|
|
use tokio::time::sleep;
|
|
use tracing::info;
|
|
use tracing_subscriber;
|
|
|
|
use kubeflow_data_cache::head;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
tracing_subscriber::fmt().init();
|
|
|
|
let args: Vec<String> = std::env::args().collect();
|
|
info!("Arguments passed to head: {:?}", &args[1..]);
|
|
|
|
let mut rpc_hosts = Vec::new();
|
|
|
|
if env::var("RUNTIME_ENV").is_ok() {
|
|
rpc_hosts.push(format!("{}:{}", "localhost", "50052"));
|
|
rpc_hosts.push(format!("{}:{}", "localhost", "50053"));
|
|
} else {
|
|
let lws_leader_address = env::var("LWS_LEADER_ADDRESS")?;
|
|
let lws_size: i32 = env::var("LWS_GROUP_SIZE")?.parse()?;
|
|
let rpc_port = 50051;
|
|
|
|
let service_tokens: Vec<&str> = lws_leader_address.split('.').collect();
|
|
|
|
let _resolver =
|
|
TokioAsyncResolver::tokio(ResolverConfig::default(), ResolverOpts::default());
|
|
|
|
for i in 1..lws_size {
|
|
let host = format!(
|
|
"{}-{}.{}",
|
|
service_tokens[0],
|
|
i,
|
|
service_tokens[1..].join(".")
|
|
);
|
|
|
|
sleep(Duration::from_secs(10)).await;
|
|
|
|
rpc_hosts.push(format!("{}:{}", host, rpc_port));
|
|
}
|
|
}
|
|
|
|
info!("RPC Hosts: {:?}", rpc_hosts);
|
|
let host = args.get(1).ok_or("Missing host argument")?;
|
|
let port = args.get(2).ok_or("Missing port argument")?;
|
|
head::head_service::run(host, port, rpc_hosts).await
|
|
}
|