Skip to main content

InstanceGroupManagerUpdatePolicy

Struct InstanceGroupManagerUpdatePolicy 

Source
#[non_exhaustive]
pub struct InstanceGroupManagerUpdatePolicy { pub instance_redistribution_type: Option<InstanceRedistributionType>, pub max_surge: Option<FixedOrPercent>, pub max_unavailable: Option<FixedOrPercent>, pub minimal_action: Option<MinimalAction>, pub most_disruptive_allowed_action: Option<MostDisruptiveAllowedAction>, pub replacement_method: Option<ReplacementMethod>, pub type: Option<Type>, /* private fields */ }
Available on crate features instance-group-managers or region-instance-group-managers only.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§instance_redistribution_type: Option<InstanceRedistributionType>

The instance redistribution policy for regional managed instance groups. Valid values are:

  • PROACTIVE (default): The group attempts to maintain an even distribution of VM instances across zones in the region.
  • NONE: For non-autoscaled groups, proactive redistribution is disabled.
§max_surge: Option<FixedOrPercent>

The maximum number of instances that can be created above the specifiedtargetSize during the update process. This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value for maxSurge is a fixed value equal to the number of zones in which the managed instance group operates.

At least one of either maxSurge ormaxUnavailable must be greater than 0. Learn more about maxSurge.

§max_unavailable: Option<FixedOrPercent>

The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied:

 - The instance's status is
 RUNNING.
  • If there is a health check on the instance group, the instance’s health check status must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available.

This value can be either a fixed number or, if the group has 10 or more instances, a percentage. If you set a percentage, the number of instances is rounded if necessary. The default value formaxUnavailable is a fixed value equal to the number of zones in which the managed instance group operates.

At least one of either maxSurge ormaxUnavailable must be greater than 0. Learn more about maxUnavailable.

§minimal_action: Option<MinimalAction>

Minimal action to be taken on an instance. Use this option to minimize disruption as much as possible or to apply a more disruptive action than is necessary.

  • To limit disruption as much as possible, set the minimal action toREFRESH. If your update requires a more disruptive action, Compute Engine performs the necessary action to execute the update.
  • To apply a more disruptive action than is strictly necessary, set the minimal action to RESTART or REPLACE. For example, Compute Engine does not need to restart a VM to change its metadata. But if your application reads instance metadata only when a VM is restarted, you can set the minimal action to RESTART in order to pick up metadata changes.
§most_disruptive_allowed_action: Option<MostDisruptiveAllowedAction>

Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions,REFRESH to avoid restarting the VM and to limit disruption as much as possible. RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.

§replacement_method: Option<ReplacementMethod>

What action should be used to replace instances. See minimal_action.REPLACE

§type: Option<Type>

The type of update process. You can specify either PROACTIVE so that the MIG automatically updates VMs to the latest configurations orOPPORTUNISTIC so that you can select the VMs that you want to update.

Implementations§

Source§

impl InstanceGroupManagerUpdatePolicy

Source

pub fn new() -> Self

Source

pub fn set_instance_redistribution_type<T>(self, v: T) -> Self

Sets the value of instance_redistribution_type.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::InstanceRedistributionType;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_instance_redistribution_type(InstanceRedistributionType::Proactive);
Source

pub fn set_or_clear_instance_redistribution_type<T>(self, v: Option<T>) -> Self

Sets or clears the value of instance_redistribution_type.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::InstanceRedistributionType;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_instance_redistribution_type(Some(InstanceRedistributionType::Proactive));
let x_none = InstanceGroupManagerUpdatePolicy::new().set_or_clear_instance_redistribution_type(None::<InstanceRedistributionType>);
Source

pub fn set_max_surge<T>(self, v: T) -> Self
where T: Into<FixedOrPercent>,

Sets the value of max_surge.

§Example
use google_cloud_compute_v1::model::FixedOrPercent;
let x = InstanceGroupManagerUpdatePolicy::new().set_max_surge(FixedOrPercent::default()/* use setters */);
Source

pub fn set_or_clear_max_surge<T>(self, v: Option<T>) -> Self
where T: Into<FixedOrPercent>,

Sets or clears the value of max_surge.

§Example
use google_cloud_compute_v1::model::FixedOrPercent;
let x = InstanceGroupManagerUpdatePolicy::new().set_or_clear_max_surge(Some(FixedOrPercent::default()/* use setters */));
let x = InstanceGroupManagerUpdatePolicy::new().set_or_clear_max_surge(None::<FixedOrPercent>);
Source

pub fn set_max_unavailable<T>(self, v: T) -> Self
where T: Into<FixedOrPercent>,

Sets the value of max_unavailable.

§Example
use google_cloud_compute_v1::model::FixedOrPercent;
let x = InstanceGroupManagerUpdatePolicy::new().set_max_unavailable(FixedOrPercent::default()/* use setters */);
Source

pub fn set_or_clear_max_unavailable<T>(self, v: Option<T>) -> Self
where T: Into<FixedOrPercent>,

Sets or clears the value of max_unavailable.

§Example
use google_cloud_compute_v1::model::FixedOrPercent;
let x = InstanceGroupManagerUpdatePolicy::new().set_or_clear_max_unavailable(Some(FixedOrPercent::default()/* use setters */));
let x = InstanceGroupManagerUpdatePolicy::new().set_or_clear_max_unavailable(None::<FixedOrPercent>);
Source

pub fn set_minimal_action<T>(self, v: T) -> Self
where T: Into<MinimalAction>,

Sets the value of minimal_action.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::MinimalAction;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_minimal_action(MinimalAction::Refresh);
let x1 = InstanceGroupManagerUpdatePolicy::new().set_minimal_action(MinimalAction::Replace);
let x2 = InstanceGroupManagerUpdatePolicy::new().set_minimal_action(MinimalAction::Restart);
Source

pub fn set_or_clear_minimal_action<T>(self, v: Option<T>) -> Self
where T: Into<MinimalAction>,

Sets or clears the value of minimal_action.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::MinimalAction;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_minimal_action(Some(MinimalAction::Refresh));
let x1 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_minimal_action(Some(MinimalAction::Replace));
let x2 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_minimal_action(Some(MinimalAction::Restart));
let x_none = InstanceGroupManagerUpdatePolicy::new().set_or_clear_minimal_action(None::<MinimalAction>);
Source

pub fn set_most_disruptive_allowed_action<T>(self, v: T) -> Self

Sets the value of most_disruptive_allowed_action.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::MostDisruptiveAllowedAction;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_most_disruptive_allowed_action(MostDisruptiveAllowedAction::Refresh);
let x1 = InstanceGroupManagerUpdatePolicy::new().set_most_disruptive_allowed_action(MostDisruptiveAllowedAction::Replace);
let x2 = InstanceGroupManagerUpdatePolicy::new().set_most_disruptive_allowed_action(MostDisruptiveAllowedAction::Restart);
Source

pub fn set_or_clear_most_disruptive_allowed_action<T>( self, v: Option<T>, ) -> Self

Sets or clears the value of most_disruptive_allowed_action.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::MostDisruptiveAllowedAction;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_most_disruptive_allowed_action(Some(MostDisruptiveAllowedAction::Refresh));
let x1 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_most_disruptive_allowed_action(Some(MostDisruptiveAllowedAction::Replace));
let x2 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_most_disruptive_allowed_action(Some(MostDisruptiveAllowedAction::Restart));
let x_none = InstanceGroupManagerUpdatePolicy::new().set_or_clear_most_disruptive_allowed_action(None::<MostDisruptiveAllowedAction>);
Source

pub fn set_replacement_method<T>(self, v: T) -> Self

Sets the value of replacement_method.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::ReplacementMethod;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_replacement_method(ReplacementMethod::Substitute);
Source

pub fn set_or_clear_replacement_method<T>(self, v: Option<T>) -> Self

Sets or clears the value of replacement_method.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::ReplacementMethod;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_replacement_method(Some(ReplacementMethod::Substitute));
let x_none = InstanceGroupManagerUpdatePolicy::new().set_or_clear_replacement_method(None::<ReplacementMethod>);
Source

pub fn set_type<T>(self, v: T) -> Self
where T: Into<Type>,

Sets the value of r#type.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::Type;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_type(Type::Proactive);
Source

pub fn set_or_clear_type<T>(self, v: Option<T>) -> Self
where T: Into<Type>,

Sets or clears the value of r#type.

§Example
use google_cloud_compute_v1::model::instance_group_manager_update_policy::Type;
let x0 = InstanceGroupManagerUpdatePolicy::new().set_or_clear_type(Some(Type::Proactive));
let x_none = InstanceGroupManagerUpdatePolicy::new().set_or_clear_type(None::<Type>);

Trait Implementations§

Source§

impl Clone for InstanceGroupManagerUpdatePolicy

Source§

fn clone(&self) -> InstanceGroupManagerUpdatePolicy

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for InstanceGroupManagerUpdatePolicy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for InstanceGroupManagerUpdatePolicy

Source§

fn default() -> InstanceGroupManagerUpdatePolicy

Returns the “default value” for a type. Read more
Source§

impl Message for InstanceGroupManagerUpdatePolicy

Source§

fn typename() -> &'static str

The typename of this message.
Source§

impl PartialEq for InstanceGroupManagerUpdatePolicy

Source§

fn eq(&self, other: &InstanceGroupManagerUpdatePolicy) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for InstanceGroupManagerUpdatePolicy

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,