#![allow(clippy::ptr_arg)]
use std::collections::{BTreeSet, HashMap};
use tokio::time::sleep;
#[derive(PartialEq, Eq, Ord, PartialOrd, Hash, Debug, Clone, Copy)]
pub enum Scope {
AppengineAdmin,
CloudPlatform,
CloudPlatformReadOnly,
Compute,
DevstorageReadWrite,
NdevCloudman,
NdevCloudmanReadonly,
}
impl AsRef<str> for Scope {
fn as_ref(&self) -> &str {
match *self {
Scope::AppengineAdmin => "https://www.googleapis.com/auth/appengine.admin",
Scope::CloudPlatform => "https://www.googleapis.com/auth/cloud-platform",
Scope::CloudPlatformReadOnly => {
"https://www.googleapis.com/auth/cloud-platform.read-only"
}
Scope::Compute => "https://www.googleapis.com/auth/compute",
Scope::DevstorageReadWrite => "https://www.googleapis.com/auth/devstorage.read_write",
Scope::NdevCloudman => "https://www.googleapis.com/auth/ndev.cloudman",
Scope::NdevCloudmanReadonly => "https://www.googleapis.com/auth/ndev.cloudman.readonly",
}
}
}
#[allow(clippy::derivable_impls)]
impl Default for Scope {
fn default() -> Scope {
Scope::NdevCloudmanReadonly
}
}
#[derive(Clone)]
pub struct Manager<C> {
pub client: common::Client<C>,
pub auth: Box<dyn common::GetToken>,
_user_agent: String,
_base_url: String,
_root_url: String,
}
impl<C> common::Hub for Manager<C> {}
impl<'a, C> Manager<C> {
pub fn new<A: 'static + common::GetToken>(client: common::Client<C>, auth: A) -> Manager<C> {
Manager {
client,
auth: Box::new(auth),
_user_agent: "google-api-rust-client/7.0.0".to_string(),
_base_url: "https://www.googleapis.com/manager/v1beta2/projects/".to_string(),
_root_url: "https://www.googleapis.com/".to_string(),
}
}
pub fn deployments(&'a self) -> DeploymentMethods<'a, C> {
DeploymentMethods { hub: self }
}
pub fn templates(&'a self) -> TemplateMethods<'a, C> {
TemplateMethods { hub: self }
}
pub fn user_agent(&mut self, agent_name: String) -> String {
std::mem::replace(&mut self._user_agent, agent_name)
}
pub fn base_url(&mut self, new_base_url: String) -> String {
std::mem::replace(&mut self._base_url, new_base_url)
}
pub fn root_url(&mut self, new_root_url: String) -> String {
std::mem::replace(&mut self._root_url, new_root_url)
}
}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AccessConfig {
pub name: Option<String>,
#[serde(rename = "natIp")]
pub nat_ip: Option<String>,
#[serde(rename = "type")]
pub type_: Option<String>,
}
impl common::Part for AccessConfig {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Action {
pub commands: Option<Vec<String>>,
#[serde(rename = "timeoutMs")]
pub timeout_ms: Option<i32>,
}
impl common::Part for Action {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AllowedRule {
#[serde(rename = "IPProtocol")]
pub ip_protocol: Option<String>,
pub ports: Option<Vec<String>>,
}
impl common::Part for AllowedRule {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AutoscalingModule {
#[serde(rename = "coolDownPeriodSec")]
pub cool_down_period_sec: Option<i32>,
pub description: Option<String>,
#[serde(rename = "maxNumReplicas")]
pub max_num_replicas: Option<i32>,
#[serde(rename = "minNumReplicas")]
pub min_num_replicas: Option<i32>,
#[serde(rename = "signalType")]
pub signal_type: Option<String>,
#[serde(rename = "targetModule")]
pub target_module: Option<String>,
#[serde(rename = "targetUtilization")]
pub target_utilization: Option<f64>,
}
impl common::Part for AutoscalingModule {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct AutoscalingModuleStatus {
#[serde(rename = "autoscalingConfigUrl")]
pub autoscaling_config_url: Option<String>,
}
impl common::Part for AutoscalingModuleStatus {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct DeployState {
pub details: Option<String>,
pub status: Option<String>,
}
impl common::Part for DeployState {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Deployment {
#[serde(rename = "creationDate")]
pub creation_date: Option<String>,
pub description: Option<String>,
pub modules: Option<HashMap<String, ModuleStatus>>,
pub name: Option<String>,
pub overrides: Option<Vec<ParamOverride>>,
pub state: Option<DeployState>,
#[serde(rename = "templateName")]
pub template_name: Option<String>,
}
impl common::RequestValue for Deployment {}
impl common::Resource for Deployment {}
impl common::ResponseResult for Deployment {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct DeploymentsListResponse {
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
pub resources: Option<Vec<Deployment>>,
}
impl common::ResponseResult for DeploymentsListResponse {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct DiskAttachment {
#[serde(rename = "deviceName")]
pub device_name: Option<String>,
pub index: Option<u32>,
}
impl common::Part for DiskAttachment {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct EnvVariable {
pub hidden: Option<bool>,
pub value: Option<String>,
}
impl common::Part for EnvVariable {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ExistingDisk {
pub attachment: Option<DiskAttachment>,
pub source: Option<String>,
}
impl common::Part for ExistingDisk {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct FirewallModule {
pub allowed: Option<Vec<AllowedRule>>,
pub description: Option<String>,
pub network: Option<String>,
#[serde(rename = "sourceRanges")]
pub source_ranges: Option<Vec<String>>,
#[serde(rename = "sourceTags")]
pub source_tags: Option<Vec<String>>,
#[serde(rename = "targetTags")]
pub target_tags: Option<Vec<String>>,
}
impl common::Part for FirewallModule {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct FirewallModuleStatus {
#[serde(rename = "firewallUrl")]
pub firewall_url: Option<String>,
}
impl common::Part for FirewallModuleStatus {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct HealthCheckModule {
#[serde(rename = "checkIntervalSec")]
pub check_interval_sec: Option<i32>,
pub description: Option<String>,
#[serde(rename = "healthyThreshold")]
pub healthy_threshold: Option<i32>,
pub host: Option<String>,
pub path: Option<String>,
pub port: Option<i32>,
#[serde(rename = "timeoutSec")]
pub timeout_sec: Option<i32>,
#[serde(rename = "unhealthyThreshold")]
pub unhealthy_threshold: Option<i32>,
}
impl common::Part for HealthCheckModule {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct HealthCheckModuleStatus {
#[serde(rename = "healthCheckUrl")]
pub health_check_url: Option<String>,
}
impl common::Part for HealthCheckModuleStatus {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LbModule {
pub description: Option<String>,
#[serde(rename = "healthChecks")]
pub health_checks: Option<Vec<String>>,
#[serde(rename = "ipAddress")]
pub ip_address: Option<String>,
#[serde(rename = "ipProtocol")]
pub ip_protocol: Option<String>,
#[serde(rename = "portRange")]
pub port_range: Option<String>,
#[serde(rename = "sessionAffinity")]
pub session_affinity: Option<String>,
#[serde(rename = "targetModules")]
pub target_modules: Option<Vec<String>>,
}
impl common::Part for LbModule {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct LbModuleStatus {
#[serde(rename = "forwardingRuleUrl")]
pub forwarding_rule_url: Option<String>,
#[serde(rename = "targetPoolUrl")]
pub target_pool_url: Option<String>,
}
impl common::Part for LbModuleStatus {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Metadata {
#[serde(rename = "fingerPrint")]
pub finger_print: Option<String>,
pub items: Option<Vec<MetadataItem>>,
}
impl common::Part for Metadata {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct MetadataItem {
pub key: Option<String>,
pub value: Option<String>,
}
impl common::Part for MetadataItem {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Module {
#[serde(rename = "autoscalingModule")]
pub autoscaling_module: Option<AutoscalingModule>,
#[serde(rename = "firewallModule")]
pub firewall_module: Option<FirewallModule>,
#[serde(rename = "healthCheckModule")]
pub health_check_module: Option<HealthCheckModule>,
#[serde(rename = "lbModule")]
pub lb_module: Option<LbModule>,
#[serde(rename = "networkModule")]
pub network_module: Option<NetworkModule>,
#[serde(rename = "replicaPoolModule")]
pub replica_pool_module: Option<ReplicaPoolModule>,
#[serde(rename = "type")]
pub type_: Option<String>,
}
impl common::Part for Module {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ModuleStatus {
#[serde(rename = "autoscalingModuleStatus")]
pub autoscaling_module_status: Option<AutoscalingModuleStatus>,
#[serde(rename = "firewallModuleStatus")]
pub firewall_module_status: Option<FirewallModuleStatus>,
#[serde(rename = "healthCheckModuleStatus")]
pub health_check_module_status: Option<HealthCheckModuleStatus>,
#[serde(rename = "lbModuleStatus")]
pub lb_module_status: Option<LbModuleStatus>,
#[serde(rename = "networkModuleStatus")]
pub network_module_status: Option<NetworkModuleStatus>,
#[serde(rename = "replicaPoolModuleStatus")]
pub replica_pool_module_status: Option<ReplicaPoolModuleStatus>,
pub state: Option<DeployState>,
#[serde(rename = "type")]
pub type_: Option<String>,
}
impl common::Part for ModuleStatus {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct NetworkInterface {
#[serde(rename = "accessConfigs")]
pub access_configs: Option<Vec<AccessConfig>>,
pub name: Option<String>,
pub network: Option<String>,
#[serde(rename = "networkIp")]
pub network_ip: Option<String>,
}
impl common::Part for NetworkInterface {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct NetworkModule {
#[serde(rename = "IPv4Range")]
pub i_pv4_range: Option<String>,
pub description: Option<String>,
#[serde(rename = "gatewayIPv4")]
pub gateway_i_pv4: Option<String>,
}
impl common::Part for NetworkModule {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct NetworkModuleStatus {
#[serde(rename = "networkUrl")]
pub network_url: Option<String>,
}
impl common::Part for NetworkModuleStatus {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct NewDisk {
pub attachment: Option<DiskAttachment>,
#[serde(rename = "autoDelete")]
pub auto_delete: Option<bool>,
pub boot: Option<bool>,
#[serde(rename = "initializeParams")]
pub initialize_params: Option<NewDiskInitializeParams>,
}
impl common::Part for NewDisk {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct NewDiskInitializeParams {
#[serde(rename = "diskSizeGb")]
#[serde_as(as = "Option<serde_with::DisplayFromStr>")]
pub disk_size_gb: Option<i64>,
#[serde(rename = "diskType")]
pub disk_type: Option<String>,
#[serde(rename = "sourceImage")]
pub source_image: Option<String>,
}
impl common::Part for NewDiskInitializeParams {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ParamOverride {
pub path: Option<String>,
pub value: Option<String>,
}
impl common::Part for ParamOverride {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ReplicaPoolModule {
#[serde(rename = "envVariables")]
pub env_variables: Option<HashMap<String, EnvVariable>>,
#[serde(rename = "healthChecks")]
pub health_checks: Option<Vec<String>>,
#[serde(rename = "numReplicas")]
pub num_replicas: Option<i32>,
#[serde(rename = "replicaPoolParams")]
pub replica_pool_params: Option<ReplicaPoolParams>,
#[serde(rename = "resourceView")]
pub resource_view: Option<String>,
}
impl common::Part for ReplicaPoolModule {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ReplicaPoolModuleStatus {
#[serde(rename = "replicaPoolUrl")]
pub replica_pool_url: Option<String>,
#[serde(rename = "resourceViewUrl")]
pub resource_view_url: Option<String>,
}
impl common::Part for ReplicaPoolModuleStatus {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ReplicaPoolParams {
pub v1beta1: Option<ReplicaPoolParamsV1Beta1>,
}
impl common::Part for ReplicaPoolParams {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ReplicaPoolParamsV1Beta1 {
#[serde(rename = "autoRestart")]
pub auto_restart: Option<bool>,
#[serde(rename = "baseInstanceName")]
pub base_instance_name: Option<String>,
#[serde(rename = "canIpForward")]
pub can_ip_forward: Option<bool>,
pub description: Option<String>,
#[serde(rename = "disksToAttach")]
pub disks_to_attach: Option<Vec<ExistingDisk>>,
#[serde(rename = "disksToCreate")]
pub disks_to_create: Option<Vec<NewDisk>>,
#[serde(rename = "initAction")]
pub init_action: Option<String>,
#[serde(rename = "machineType")]
pub machine_type: Option<String>,
pub metadata: Option<Metadata>,
#[serde(rename = "networkInterfaces")]
pub network_interfaces: Option<Vec<NetworkInterface>>,
#[serde(rename = "onHostMaintenance")]
pub on_host_maintenance: Option<String>,
#[serde(rename = "serviceAccounts")]
pub service_accounts: Option<Vec<ServiceAccount>>,
pub tags: Option<Tag>,
pub zone: Option<String>,
}
impl common::Part for ReplicaPoolParamsV1Beta1 {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct ServiceAccount {
pub email: Option<String>,
pub scopes: Option<Vec<String>>,
}
impl common::Part for ServiceAccount {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Tag {
#[serde(rename = "fingerPrint")]
pub finger_print: Option<String>,
pub items: Option<Vec<String>>,
}
impl common::Part for Tag {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct Template {
pub actions: Option<HashMap<String, Action>>,
pub description: Option<String>,
pub modules: Option<HashMap<String, Module>>,
pub name: Option<String>,
}
impl common::RequestValue for Template {}
impl common::Resource for Template {}
impl common::ResponseResult for Template {}
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[serde_with::serde_as]
#[derive(Default, Clone, Debug, serde::Serialize, serde::Deserialize)]
pub struct TemplatesListResponse {
#[serde(rename = "nextPageToken")]
pub next_page_token: Option<String>,
pub resources: Option<Vec<Template>>,
}
impl common::ResponseResult for TemplatesListResponse {}
pub struct DeploymentMethods<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
}
impl<'a, C> common::MethodsBuilder for DeploymentMethods<'a, C> {}
impl<'a, C> DeploymentMethods<'a, C> {
pub fn delete(
&self,
project_id: &str,
region: &str,
deployment_name: &str,
) -> DeploymentDeleteCall<'a, C> {
DeploymentDeleteCall {
hub: self.hub,
_project_id: project_id.to_string(),
_region: region.to_string(),
_deployment_name: deployment_name.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get(
&self,
project_id: &str,
region: &str,
deployment_name: &str,
) -> DeploymentGetCall<'a, C> {
DeploymentGetCall {
hub: self.hub,
_project_id: project_id.to_string(),
_region: region.to_string(),
_deployment_name: deployment_name.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn insert(
&self,
request: Deployment,
project_id: &str,
region: &str,
) -> DeploymentInsertCall<'a, C> {
DeploymentInsertCall {
hub: self.hub,
_request: request,
_project_id: project_id.to_string(),
_region: region.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, project_id: &str, region: &str) -> DeploymentListCall<'a, C> {
DeploymentListCall {
hub: self.hub,
_project_id: project_id.to_string(),
_region: region.to_string(),
_page_token: Default::default(),
_max_results: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct TemplateMethods<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
}
impl<'a, C> common::MethodsBuilder for TemplateMethods<'a, C> {}
impl<'a, C> TemplateMethods<'a, C> {
pub fn delete(&self, project_id: &str, template_name: &str) -> TemplateDeleteCall<'a, C> {
TemplateDeleteCall {
hub: self.hub,
_project_id: project_id.to_string(),
_template_name: template_name.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn get(&self, project_id: &str, template_name: &str) -> TemplateGetCall<'a, C> {
TemplateGetCall {
hub: self.hub,
_project_id: project_id.to_string(),
_template_name: template_name.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn insert(&self, request: Template, project_id: &str) -> TemplateInsertCall<'a, C> {
TemplateInsertCall {
hub: self.hub,
_request: request,
_project_id: project_id.to_string(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
pub fn list(&self, project_id: &str) -> TemplateListCall<'a, C> {
TemplateListCall {
hub: self.hub,
_project_id: project_id.to_string(),
_page_token: Default::default(),
_max_results: Default::default(),
_delegate: Default::default(),
_additional_params: Default::default(),
_scopes: Default::default(),
}
}
}
pub struct DeploymentDeleteCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_project_id: String,
_region: String,
_deployment_name: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for DeploymentDeleteCall<'a, C> {}
impl<'a, C> DeploymentDeleteCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<common::Response> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.deployments.delete",
http_method: hyper::Method::DELETE,
});
for &field in ["projectId", "region", "deploymentName"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
params.push("projectId", self._project_id);
params.push("region", self._region);
params.push("deploymentName", self._deployment_name);
params.extend(self._additional_params.iter());
let mut url = self.hub._base_url.clone()
+ "{projectId}/regions/{region}/deployments/{deploymentName}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::CloudPlatform.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{projectId}", "projectId"),
("{region}", "region"),
("{deploymentName}", "deploymentName"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["deploymentName", "region", "projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::DELETE)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = common::Response::from_parts(parts, body);
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn project_id(mut self, new_value: &str) -> DeploymentDeleteCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn region(mut self, new_value: &str) -> DeploymentDeleteCall<'a, C> {
self._region = new_value.to_string();
self
}
pub fn deployment_name(mut self, new_value: &str) -> DeploymentDeleteCall<'a, C> {
self._deployment_name = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> DeploymentDeleteCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DeploymentDeleteCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> DeploymentDeleteCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> DeploymentDeleteCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> DeploymentDeleteCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct DeploymentGetCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_project_id: String,
_region: String,
_deployment_name: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for DeploymentGetCall<'a, C> {}
impl<'a, C> DeploymentGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Deployment)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.deployments.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "projectId", "region", "deploymentName"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
params.push("projectId", self._project_id);
params.push("region", self._region);
params.push("deploymentName", self._deployment_name);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone()
+ "{projectId}/regions/{region}/deployments/{deploymentName}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::NdevCloudmanReadonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{projectId}", "projectId"),
("{region}", "region"),
("{deploymentName}", "deploymentName"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["deploymentName", "region", "projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn project_id(mut self, new_value: &str) -> DeploymentGetCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn region(mut self, new_value: &str) -> DeploymentGetCall<'a, C> {
self._region = new_value.to_string();
self
}
pub fn deployment_name(mut self, new_value: &str) -> DeploymentGetCall<'a, C> {
self._deployment_name = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> DeploymentGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DeploymentGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> DeploymentGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> DeploymentGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> DeploymentGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct DeploymentInsertCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_request: Deployment,
_project_id: String,
_region: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for DeploymentInsertCall<'a, C> {}
impl<'a, C> DeploymentInsertCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Deployment)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.deployments.insert",
http_method: hyper::Method::POST,
});
for &field in ["alt", "projectId", "region"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
params.push("projectId", self._project_id);
params.push("region", self._region);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "{projectId}/regions/{region}/deployments";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::DevstorageReadWrite.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in
[("{projectId}", "projectId"), ("{region}", "region")].iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["region", "projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(mut self, new_value: Deployment) -> DeploymentInsertCall<'a, C> {
self._request = new_value;
self
}
pub fn project_id(mut self, new_value: &str) -> DeploymentInsertCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn region(mut self, new_value: &str) -> DeploymentInsertCall<'a, C> {
self._region = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> DeploymentInsertCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DeploymentInsertCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> DeploymentInsertCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> DeploymentInsertCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> DeploymentInsertCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct DeploymentListCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_project_id: String,
_region: String,
_page_token: Option<String>,
_max_results: Option<i32>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for DeploymentListCall<'a, C> {}
impl<'a, C> DeploymentListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, DeploymentsListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.deployments.list",
http_method: hyper::Method::GET,
});
for &field in ["alt", "projectId", "region", "pageToken", "maxResults"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(6 + self._additional_params.len());
params.push("projectId", self._project_id);
params.push("region", self._region);
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "{projectId}/regions/{region}/deployments";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::NdevCloudmanReadonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in
[("{projectId}", "projectId"), ("{region}", "region")].iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["region", "projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn project_id(mut self, new_value: &str) -> DeploymentListCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn region(mut self, new_value: &str) -> DeploymentListCall<'a, C> {
self._region = new_value.to_string();
self
}
pub fn page_token(mut self, new_value: &str) -> DeploymentListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> DeploymentListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> DeploymentListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> DeploymentListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> DeploymentListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> DeploymentListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> DeploymentListCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct TemplateDeleteCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_project_id: String,
_template_name: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for TemplateDeleteCall<'a, C> {}
impl<'a, C> TemplateDeleteCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<common::Response> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.templates.delete",
http_method: hyper::Method::DELETE,
});
for &field in ["projectId", "templateName"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(3 + self._additional_params.len());
params.push("projectId", self._project_id);
params.push("templateName", self._template_name);
params.extend(self._additional_params.iter());
let mut url = self.hub._base_url.clone() + "{projectId}/templates/{templateName}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::CloudPlatform.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{projectId}", "projectId"),
("{templateName}", "templateName"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["templateName", "projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::DELETE)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = common::Response::from_parts(parts, body);
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn project_id(mut self, new_value: &str) -> TemplateDeleteCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn template_name(mut self, new_value: &str) -> TemplateDeleteCall<'a, C> {
self._template_name = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> TemplateDeleteCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> TemplateDeleteCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> TemplateDeleteCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> TemplateDeleteCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> TemplateDeleteCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct TemplateGetCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_project_id: String,
_template_name: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for TemplateGetCall<'a, C> {}
impl<'a, C> TemplateGetCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Template)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.templates.get",
http_method: hyper::Method::GET,
});
for &field in ["alt", "projectId", "templateName"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
params.push("projectId", self._project_id);
params.push("templateName", self._template_name);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "{projectId}/templates/{templateName}";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::NdevCloudmanReadonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [
("{projectId}", "projectId"),
("{templateName}", "templateName"),
]
.iter()
{
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["templateName", "projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn project_id(mut self, new_value: &str) -> TemplateGetCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn template_name(mut self, new_value: &str) -> TemplateGetCall<'a, C> {
self._template_name = new_value.to_string();
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> TemplateGetCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> TemplateGetCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> TemplateGetCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> TemplateGetCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> TemplateGetCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct TemplateInsertCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_request: Template,
_project_id: String,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for TemplateInsertCall<'a, C> {}
impl<'a, C> TemplateInsertCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, Template)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.templates.insert",
http_method: hyper::Method::POST,
});
for &field in ["alt", "projectId"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(4 + self._additional_params.len());
params.push("projectId", self._project_id);
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "{projectId}/templates";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::CloudPlatform.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{projectId}", "projectId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
let mut json_mime_type = mime::APPLICATION_JSON;
let mut request_value_reader = {
let mut value = serde_json::value::to_value(&self._request).expect("serde to work");
common::remove_json_null_values(&mut value);
let mut dst = std::io::Cursor::new(Vec::with_capacity(128));
serde_json::to_writer(&mut dst, &value).unwrap();
dst
};
let request_size = request_value_reader
.seek(std::io::SeekFrom::End(0))
.unwrap();
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
request_value_reader
.seek(std::io::SeekFrom::Start(0))
.unwrap();
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::POST)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_TYPE, json_mime_type.to_string())
.header(CONTENT_LENGTH, request_size as u64)
.body(common::to_body(
request_value_reader.get_ref().clone().into(),
));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn request(mut self, new_value: Template) -> TemplateInsertCall<'a, C> {
self._request = new_value;
self
}
pub fn project_id(mut self, new_value: &str) -> TemplateInsertCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn delegate(
mut self,
new_value: &'a mut dyn common::Delegate,
) -> TemplateInsertCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> TemplateInsertCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> TemplateInsertCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> TemplateInsertCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> TemplateInsertCall<'a, C> {
self._scopes.clear();
self
}
}
pub struct TemplateListCall<'a, C>
where
C: 'a,
{
hub: &'a Manager<C>,
_project_id: String,
_page_token: Option<String>,
_max_results: Option<i32>,
_delegate: Option<&'a mut dyn common::Delegate>,
_additional_params: HashMap<String, String>,
_scopes: BTreeSet<String>,
}
impl<'a, C> common::CallBuilder for TemplateListCall<'a, C> {}
impl<'a, C> TemplateListCall<'a, C>
where
C: common::Connector,
{
pub async fn doit(mut self) -> common::Result<(common::Response, TemplatesListResponse)> {
use std::borrow::Cow;
use std::io::{Read, Seek};
use common::{url::Params, ToParts};
use hyper::header::{AUTHORIZATION, CONTENT_LENGTH, CONTENT_TYPE, LOCATION, USER_AGENT};
let mut dd = common::DefaultDelegate;
let mut dlg: &mut dyn common::Delegate = self._delegate.unwrap_or(&mut dd);
dlg.begin(common::MethodInfo {
id: "manager.templates.list",
http_method: hyper::Method::GET,
});
for &field in ["alt", "projectId", "pageToken", "maxResults"].iter() {
if self._additional_params.contains_key(field) {
dlg.finished(false);
return Err(common::Error::FieldClash(field));
}
}
let mut params = Params::with_capacity(5 + self._additional_params.len());
params.push("projectId", self._project_id);
if let Some(value) = self._page_token.as_ref() {
params.push("pageToken", value);
}
if let Some(value) = self._max_results.as_ref() {
params.push("maxResults", value.to_string());
}
params.extend(self._additional_params.iter());
params.push("alt", "json");
let mut url = self.hub._base_url.clone() + "{projectId}/templates";
if self._scopes.is_empty() {
self._scopes
.insert(Scope::NdevCloudmanReadonly.as_ref().to_string());
}
#[allow(clippy::single_element_loop)]
for &(find_this, param_name) in [("{projectId}", "projectId")].iter() {
url = params.uri_replacement(url, param_name, find_this, false);
}
{
let to_remove = ["projectId"];
params.remove_params(&to_remove);
}
let url = params.parse_with_url(&url);
loop {
let token = match self
.hub
.auth
.get_token(&self._scopes.iter().map(String::as_str).collect::<Vec<_>>()[..])
.await
{
Ok(token) => token,
Err(e) => match dlg.token(e) {
Ok(token) => token,
Err(e) => {
dlg.finished(false);
return Err(common::Error::MissingToken(e));
}
},
};
let mut req_result = {
let client = &self.hub.client;
dlg.pre_request();
let mut req_builder = hyper::Request::builder()
.method(hyper::Method::GET)
.uri(url.as_str())
.header(USER_AGENT, self.hub._user_agent.clone());
if let Some(token) = token.as_ref() {
req_builder = req_builder.header(AUTHORIZATION, format!("Bearer {}", token));
}
let request = req_builder
.header(CONTENT_LENGTH, 0_u64)
.body(common::to_body::<String>(None));
client.request(request.unwrap()).await
};
match req_result {
Err(err) => {
if let common::Retry::After(d) = dlg.http_error(&err) {
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(common::Error::HttpError(err));
}
Ok(res) => {
let (mut parts, body) = res.into_parts();
let mut body = common::Body::new(body);
if !parts.status.is_success() {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let error = serde_json::from_str(&common::to_string(&bytes));
let response = common::to_response(parts, bytes.into());
if let common::Retry::After(d) =
dlg.http_failure(&response, error.as_ref().ok())
{
sleep(d).await;
continue;
}
dlg.finished(false);
return Err(match error {
Ok(value) => common::Error::BadRequest(value),
_ => common::Error::Failure(response),
});
}
let response = {
let bytes = common::to_bytes(body).await.unwrap_or_default();
let encoded = common::to_string(&bytes);
match serde_json::from_str(&encoded) {
Ok(decoded) => (common::to_response(parts, bytes.into()), decoded),
Err(error) => {
dlg.response_json_decode_error(&encoded, &error);
return Err(common::Error::JsonDecodeError(
encoded.to_string(),
error,
));
}
}
};
dlg.finished(true);
return Ok(response);
}
}
}
}
pub fn project_id(mut self, new_value: &str) -> TemplateListCall<'a, C> {
self._project_id = new_value.to_string();
self
}
pub fn page_token(mut self, new_value: &str) -> TemplateListCall<'a, C> {
self._page_token = Some(new_value.to_string());
self
}
pub fn max_results(mut self, new_value: i32) -> TemplateListCall<'a, C> {
self._max_results = Some(new_value);
self
}
pub fn delegate(mut self, new_value: &'a mut dyn common::Delegate) -> TemplateListCall<'a, C> {
self._delegate = Some(new_value);
self
}
pub fn param<T>(mut self, name: T, value: T) -> TemplateListCall<'a, C>
where
T: AsRef<str>,
{
self._additional_params
.insert(name.as_ref().to_string(), value.as_ref().to_string());
self
}
pub fn add_scope<St>(mut self, scope: St) -> TemplateListCall<'a, C>
where
St: AsRef<str>,
{
self._scopes.insert(String::from(scope.as_ref()));
self
}
pub fn add_scopes<I, St>(mut self, scopes: I) -> TemplateListCall<'a, C>
where
I: IntoIterator<Item = St>,
St: AsRef<str>,
{
self._scopes
.extend(scopes.into_iter().map(|s| String::from(s.as_ref())));
self
}
pub fn clear_scopes(mut self) -> TemplateListCall<'a, C> {
self._scopes.clear();
self
}
}