use reqwest::blocking::Client;
use zabbix_api::client::client::{ZabbixApiClient, ZabbixApiClientImpl};
use zabbix_api::error::ZabbixApiError;
use zabbix_api::host::create::{CreateHostRequest, InventoryMode};
use zabbix_api::host::model::ZabbixHostInventory;
use zabbix_api::hostgroup::create::CreateHostGroupRequest;
use zabbix_api::hostgroup::model::ZabbixHostGroupId;
fn generate_unique_name(prefix: &str) -> String {
let timestamp = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap_or_default()
.as_secs();
format!("{}_{}", prefix, timestamp)
}
fn main() -> Result<(), ZabbixApiError> {
let zabbix_api_url = "http://localhost:3080/api_jsonrpc.php".to_string();
let zabbix_api_user = "Admin".to_string();
let zabbix_api_password = "zabbix".to_string();
let http_client = Client::new();
let client = ZabbixApiClientImpl::new(http_client, &zabbix_api_url);
let session = client.get_auth_session(&zabbix_api_user, &zabbix_api_password)?;
println!("Authenticated successfully.");
let host_group_name = generate_unique_name("example_host_group_for_host");
let create_group_request = CreateHostGroupRequest {
name: host_group_name.clone(),
};
let group_id = match client.create_host_group(&session, &create_group_request) {
Ok(id) => {
println!(
"Successfully created host group '{}' with ID: {}",
host_group_name, id
);
id.to_string()
}
Err(e) => {
eprintln!("Error creating host group '{}': {}", host_group_name, e);
return Err(e);
}
};
let host_name = generate_unique_name("example_host");
let create_host_request = CreateHostRequest {
host: host_name.clone(),
groups: vec![ZabbixHostGroupId {
group_id: group_id.clone(),
}],
interfaces: vec![], tags: vec![], templates: vec![], macros: vec![], inventory_mode: InventoryMode::Manual, inventory: ZabbixHostInventory::default(), ..Default::default() };
println!(
"Attempting to create host '{}' in group ID '{}'...",
host_name, group_id
);
match client.create_host(&session, &create_host_request) {
Ok(host_id) => {
println!(
"Successfully created host '{}' with ID: {}",
host_name, host_id
);
}
Err(e) => {
eprintln!("Error creating host '{}': {}", host_name, e);
return Err(e);
}
}
Ok(())
}