use crate::Client;
use crate::resource::Resource;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateTunnelGroupRequest {
pub name: String,
pub slug: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateTunnelGroupRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateTunnelRequest {
pub name: String,
pub status: String,
pub encapsulation: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub group: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ipsec_profile: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tenant: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tunnel_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateTunnelRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub encapsulation: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ipsec_profile: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tenant: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tunnel_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateL2VpnRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<i64>,
pub name: String,
pub slug: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub import_targets: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub export_targets: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tenant: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateL2VpnRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub identifier: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub import_targets: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub export_targets: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tenant: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateL2VpnTerminationRequest {
pub l2vpn: i32,
pub assigned_object_type: String,
pub assigned_object_id: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateL2VpnTerminationRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub l2vpn: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_object_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assigned_object_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateIkeProposalRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub authentication_method: String,
pub encryption_algorithm: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub authentication_algorithm: Option<String>,
pub group: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa_lifetime: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateIkeProposalRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authentication_method: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub encryption_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authentication_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa_lifetime: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateIkePolicyRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub version: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proposals: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preshared_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateIkePolicyRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proposals: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preshared_key: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateIpSecProposalRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub encryption_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authentication_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa_lifetime_seconds: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa_lifetime_data: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateIpSecProposalRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub encryption_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub authentication_algorithm: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa_lifetime_seconds: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sa_lifetime_data: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateIpSecPolicyRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proposals: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pfs_group: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateIpSecPolicyRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub proposals: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pfs_group: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateIpSecProfileRequest {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub mode: String,
pub ike_policy: i32,
pub ipsec_policy: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateIpSecProfileRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ike_policy: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ipsec_policy: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comments: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateTunnelTerminationRequest {
pub tunnel: i32,
pub role: String,
pub termination_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub termination_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub outside_ip: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UpdateTunnelTerminationRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub tunnel: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub termination_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub termination_id: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub outside_ip: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<i32>>,
}
#[cfg(test)]
mod tests {
use super::*;
use proptest::prelude::*;
use serde_json::Value;
fn assert_missing(value: &Value, key: &str) {
assert!(value.get(key).is_none(), "expected {} to be omitted", key);
}
fn assert_optional_i32(value: &Value, key: &str, field: &Option<i32>) {
match field {
Some(v) => assert_eq!(value[key], serde_json::json!(*v)),
None => assert_missing(value, key),
}
}
fn assert_optional_i64(value: &Value, key: &str, field: &Option<i64>) {
match field {
Some(v) => assert_eq!(value[key], serde_json::json!(*v)),
None => assert_missing(value, key),
}
}
fn assert_optional_string(value: &Value, key: &str, field: &Option<String>) {
match field {
Some(v) => assert_eq!(value[key], serde_json::json!(v)),
None => assert_missing(value, key),
}
}
#[test]
fn serialize_tunnel_group_requests() {
let create = CreateTunnelGroupRequest {
name: "core".to_string(),
slug: "core".to_string(),
description: None,
tags: None,
};
let value = serde_json::to_value(&create).unwrap();
assert_eq!(value["name"], "core");
assert_eq!(value["slug"], "core");
assert_missing(&value, "description");
let update = UpdateTunnelGroupRequest {
name: None,
slug: Some("core-new".to_string()),
description: Some("Updated".to_string()),
tags: None,
};
let value = serde_json::to_value(&update).unwrap();
assert_eq!(value["slug"], "core-new");
assert_eq!(value["description"], "Updated");
assert_missing(&value, "name");
}
#[test]
fn serialize_tunnel_requests() {
let create = CreateTunnelRequest {
name: "t1".to_string(),
status: "active".to_string(),
encapsulation: "gre".to_string(),
group: Some(2),
ipsec_profile: None,
tenant: None,
tunnel_id: None,
description: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&create).unwrap();
assert_eq!(value["name"], "t1");
assert_eq!(value["status"], "active");
assert_eq!(value["encapsulation"], "gre");
assert_eq!(value["group"], 2);
assert_missing(&value, "ipsec_profile");
let update = UpdateTunnelRequest {
name: None,
status: Some("disabled".to_string()),
encapsulation: None,
group: None,
ipsec_profile: None,
tenant: None,
tunnel_id: None,
description: Some("Updated".to_string()),
comments: None,
tags: None,
};
let value = serde_json::to_value(&update).unwrap();
assert_eq!(value["status"], "disabled");
assert_eq!(value["description"], "Updated");
assert_missing(&value, "name");
}
#[test]
fn serialize_tunnel_termination_requests() {
let create = CreateTunnelTerminationRequest {
tunnel: 1,
role: "peer".to_string(),
termination_type: "dcim.interface".to_string(),
termination_id: Some(5),
outside_ip: None,
tags: None,
};
let value = serde_json::to_value(&create).unwrap();
assert_eq!(value["tunnel"], 1);
assert_eq!(value["role"], "peer");
assert_eq!(value["termination_type"], "dcim.interface");
assert_eq!(value["termination_id"], 5);
assert_missing(&value, "outside_ip");
let update = UpdateTunnelTerminationRequest {
tunnel: None,
role: None,
termination_type: None,
termination_id: None,
outside_ip: Some(10),
tags: None,
};
let value = serde_json::to_value(&update).unwrap();
assert_eq!(value["outside_ip"], 10);
assert_missing(&value, "tunnel");
}
#[test]
fn serialize_l2vpn_requests() {
let create = CreateL2VpnRequest {
identifier: None,
name: "l2vpn".to_string(),
slug: "l2vpn".to_string(),
r#type: Some("vxlan".to_string()),
status: Some("active".to_string()),
import_targets: None,
export_targets: None,
description: None,
comments: None,
tenant: None,
tags: None,
};
let value = serde_json::to_value(&create).unwrap();
assert_eq!(value["name"], "l2vpn");
assert_eq!(value["slug"], "l2vpn");
assert_eq!(value["type"], "vxlan");
assert_eq!(value["status"], "active");
assert_missing(&value, "identifier");
let update = UpdateL2VpnRequest {
identifier: Some(100),
name: None,
slug: None,
r#type: None,
status: None,
import_targets: None,
export_targets: None,
description: Some("Updated".to_string()),
comments: None,
tenant: None,
tags: None,
};
let value = serde_json::to_value(&update).unwrap();
assert_eq!(value["identifier"], 100);
assert_eq!(value["description"], "Updated");
assert_missing(&value, "name");
}
#[test]
fn serialize_l2vpn_termination_requests() {
let create = CreateL2VpnTerminationRequest {
l2vpn: 1,
assigned_object_type: "dcim.interface".to_string(),
assigned_object_id: 2,
tags: None,
};
let value = serde_json::to_value(&create).unwrap();
assert_eq!(value["l2vpn"], 1);
assert_eq!(value["assigned_object_type"], "dcim.interface");
assert_eq!(value["assigned_object_id"], 2);
assert_missing(&value, "tags");
let update = UpdateL2VpnTerminationRequest {
l2vpn: None,
assigned_object_type: None,
assigned_object_id: Some(3),
tags: None,
};
let value = serde_json::to_value(&update).unwrap();
assert_eq!(value["assigned_object_id"], 3);
assert_missing(&value, "l2vpn");
}
#[test]
fn serialize_ike_requests() {
let proposal = CreateIkeProposalRequest {
name: "ike-proposal".to_string(),
description: None,
authentication_method: "preshared-keys".to_string(),
encryption_algorithm: "aes-256-gcm".to_string(),
authentication_algorithm: Some("hmac-sha256".to_string()),
group: "14".to_string(),
sa_lifetime: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&proposal).unwrap();
assert_eq!(value["authentication_method"], "preshared-keys");
assert_eq!(value["encryption_algorithm"], "aes-256-gcm");
assert_eq!(value["group"], "14");
assert_missing(&value, "sa_lifetime");
let policy = CreateIkePolicyRequest {
name: "ike-policy".to_string(),
description: None,
version: "2".to_string(),
mode: None,
proposals: Some(vec![1]),
preshared_key: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&policy).unwrap();
assert_eq!(value["version"], "2");
assert_eq!(value["proposals"], serde_json::json!([1]));
assert_missing(&value, "mode");
let update = UpdateIkeProposalRequest {
name: None,
description: Some("Updated".to_string()),
authentication_method: None,
encryption_algorithm: None,
authentication_algorithm: None,
group: None,
sa_lifetime: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&update).unwrap();
assert_eq!(value["description"], "Updated");
assert_missing(&value, "name");
}
#[test]
fn serialize_ipsec_requests() {
let proposal = CreateIpSecProposalRequest {
name: "ipsec-proposal".to_string(),
description: None,
encryption_algorithm: Some("aes-128-gcm".to_string()),
authentication_algorithm: None,
sa_lifetime_seconds: Some(3600),
sa_lifetime_data: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&proposal).unwrap();
assert_eq!(value["encryption_algorithm"], "aes-128-gcm");
assert_eq!(value["sa_lifetime_seconds"], 3600);
assert_missing(&value, "authentication_algorithm");
let policy = CreateIpSecPolicyRequest {
name: "ipsec-policy".to_string(),
description: None,
proposals: Some(vec![2]),
pfs_group: Some("14".to_string()),
comments: None,
tags: None,
};
let value = serde_json::to_value(&policy).unwrap();
assert_eq!(value["proposals"], serde_json::json!([2]));
assert_eq!(value["pfs_group"], "14");
assert_missing(&value, "description");
let profile = CreateIpSecProfileRequest {
name: "ipsec-profile".to_string(),
description: None,
mode: "esp".to_string(),
ike_policy: 1,
ipsec_policy: 2,
comments: None,
tags: None,
};
let value = serde_json::to_value(&profile).unwrap();
assert_eq!(value["mode"], "esp");
assert_eq!(value["ike_policy"], 1);
assert_eq!(value["ipsec_policy"], 2);
assert_missing(&value, "description");
let update = UpdateIpSecProfileRequest {
name: None,
description: Some("Updated".to_string()),
mode: None,
ike_policy: None,
ipsec_policy: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&update).unwrap();
assert_eq!(value["description"], "Updated");
assert_missing(&value, "name");
}
proptest! {
#[test]
fn prop_tunnel_optional_fields(
group in proptest::option::of(0i32..1000),
ipsec_profile in proptest::option::of(0i32..1000),
) {
let request = CreateTunnelRequest {
name: "t1".to_string(),
status: "active".to_string(),
encapsulation: "gre".to_string(),
group,
ipsec_profile,
tenant: None,
tunnel_id: None,
description: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&request).unwrap();
assert_optional_i32(&value, "group", &group);
assert_optional_i32(&value, "ipsec_profile", &ipsec_profile);
}
}
proptest! {
#[test]
fn prop_l2vpn_optional_fields(
identifier in proptest::option::of(0i64..10000),
r#type in proptest::option::of("[a-z0-9-]{1,12}"),
) {
let request = CreateL2VpnRequest {
identifier,
name: "l2vpn".to_string(),
slug: "l2vpn".to_string(),
r#type: r#type.clone(),
status: None,
import_targets: None,
export_targets: None,
description: None,
comments: None,
tenant: None,
tags: None,
};
let value = serde_json::to_value(&request).unwrap();
assert_optional_i64(&value, "identifier", &identifier);
assert_optional_string(&value, "type", &r#type);
}
}
proptest! {
#[test]
fn prop_ipsec_proposal_optional_fields(
encryption in proptest::option::of("[a-z0-9-]{1,16}"),
auth in proptest::option::of("[a-z0-9-]{1,16}"),
) {
let request = CreateIpSecProposalRequest {
name: "ipsec".to_string(),
description: None,
encryption_algorithm: encryption.clone(),
authentication_algorithm: auth.clone(),
sa_lifetime_seconds: None,
sa_lifetime_data: None,
comments: None,
tags: None,
};
let value = serde_json::to_value(&request).unwrap();
assert_optional_string(&value, "encryption_algorithm", &encryption);
assert_optional_string(&value, "authentication_algorithm", &auth);
}
}
}
pub type IkePolicy = crate::models::IkePolicy;
pub type IkeProposal = crate::models::IkeProposal;
pub type IpSecPolicy = crate::models::IpSecPolicy;
pub type IpSecProfile = crate::models::IpSecProfile;
pub type IpSecProposal = crate::models::IpSecProposal;
pub type L2Vpn = crate::models::L2Vpn;
pub type L2VpnTermination = crate::models::L2VpnTermination;
pub type TunnelGroup = crate::models::TunnelGroup;
pub type TunnelTermination = crate::models::TunnelTermination;
pub type Tunnel = crate::models::Tunnel;
pub type IkePoliciesApi = Resource<crate::models::IkePolicy>;
pub type IkeProposalsApi = Resource<crate::models::IkeProposal>;
pub type IpSecPoliciesApi = Resource<crate::models::IpSecPolicy>;
pub type IpSecProfilesApi = Resource<crate::models::IpSecProfile>;
pub type IpSecProposalsApi = Resource<crate::models::IpSecProposal>;
pub type L2VpnTerminationsApi = Resource<crate::models::L2VpnTermination>;
pub type L2VpnsApi = Resource<crate::models::L2Vpn>;
pub type TunnelGroupsApi = Resource<crate::models::TunnelGroup>;
pub type TunnelTerminationsApi = Resource<crate::models::TunnelTermination>;
pub type TunnelsApi = Resource<crate::models::Tunnel>;
#[derive(Clone)]
pub struct VpnApi {
client: Client,
}
impl VpnApi {
pub(crate) fn new(client: Client) -> Self {
Self { client }
}
pub fn ike_policies(&self) -> IkePoliciesApi {
Resource::new(self.client.clone(), "vpn/ike-policies/")
}
pub fn ike_proposals(&self) -> IkeProposalsApi {
Resource::new(self.client.clone(), "vpn/ike-proposals/")
}
pub fn ipsec_policies(&self) -> IpSecPoliciesApi {
Resource::new(self.client.clone(), "vpn/ipsec-policies/")
}
pub fn ipsec_profiles(&self) -> IpSecProfilesApi {
Resource::new(self.client.clone(), "vpn/ipsec-profiles/")
}
pub fn ipsec_proposals(&self) -> IpSecProposalsApi {
Resource::new(self.client.clone(), "vpn/ipsec-proposals/")
}
pub fn l2vpn_terminations(&self) -> L2VpnTerminationsApi {
Resource::new(self.client.clone(), "vpn/l2vpn-terminations/")
}
pub fn l2vpns(&self) -> L2VpnsApi {
Resource::new(self.client.clone(), "vpn/l2vpns/")
}
pub fn tunnel_groups(&self) -> TunnelGroupsApi {
Resource::new(self.client.clone(), "vpn/tunnel-groups/")
}
pub fn tunnel_terminations(&self) -> TunnelTerminationsApi {
Resource::new(self.client.clone(), "vpn/tunnel-terminations/")
}
pub fn tunnels(&self) -> TunnelsApi {
Resource::new(self.client.clone(), "vpn/tunnels/")
}
}