use std::error::Error;
use std::fmt;
use async_trait::async_trait;
use rusoto_core::credential::ProvideAwsCredentials;
use rusoto_core::region;
use rusoto_core::request::{BufferedHttpResponse, DispatchSignedRequest};
use rusoto_core::{Client, RusotoError};
use rusoto_core::param::{Params, ServiceParams};
use rusoto_core::proto;
use rusoto_core::signature::SignedRequest;
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
use serde_json;
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct CreateLifecyclePolicyRequest {
#[serde(rename = "Description")]
pub description: String,
#[serde(rename = "ExecutionRoleArn")]
pub execution_role_arn: String,
#[serde(rename = "PolicyDetails")]
pub policy_details: PolicyDetails,
#[serde(rename = "State")]
pub state: String,
#[serde(rename = "Tags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<::std::collections::HashMap<String, String>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct CreateLifecyclePolicyResponse {
#[serde(rename = "PolicyId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_id: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct CreateRule {
#[serde(rename = "CronExpression")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cron_expression: Option<String>,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<i64>,
#[serde(rename = "IntervalUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_unit: Option<String>,
#[serde(rename = "Times")]
#[serde(skip_serializing_if = "Option::is_none")]
pub times: Option<Vec<String>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct CrossRegionCopyRetainRule {
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<i64>,
#[serde(rename = "IntervalUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_unit: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct CrossRegionCopyRule {
#[serde(rename = "CmkArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cmk_arn: Option<String>,
#[serde(rename = "CopyTags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub copy_tags: Option<bool>,
#[serde(rename = "Encrypted")]
pub encrypted: bool,
#[serde(rename = "RetainRule")]
#[serde(skip_serializing_if = "Option::is_none")]
pub retain_rule: Option<CrossRegionCopyRetainRule>,
#[serde(rename = "TargetRegion")]
pub target_region: String,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct DeleteLifecyclePolicyRequest {
#[serde(rename = "PolicyId")]
pub policy_id: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct DeleteLifecyclePolicyResponse {}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct FastRestoreRule {
#[serde(rename = "AvailabilityZones")]
pub availability_zones: Vec<String>,
#[serde(rename = "Count")]
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<i64>,
#[serde(rename = "IntervalUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_unit: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct GetLifecyclePoliciesRequest {
#[serde(rename = "PolicyIds")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_ids: Option<Vec<String>>,
#[serde(rename = "ResourceTypes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_types: Option<Vec<String>>,
#[serde(rename = "State")]
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(rename = "TagsToAdd")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags_to_add: Option<Vec<String>>,
#[serde(rename = "TargetTags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub target_tags: Option<Vec<String>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct GetLifecyclePoliciesResponse {
#[serde(rename = "Policies")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policies: Option<Vec<LifecyclePolicySummary>>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct GetLifecyclePolicyRequest {
#[serde(rename = "PolicyId")]
pub policy_id: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct GetLifecyclePolicyResponse {
#[serde(rename = "Policy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy: Option<LifecyclePolicy>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct LifecyclePolicy {
#[serde(rename = "DateCreated")]
#[serde(skip_serializing_if = "Option::is_none")]
pub date_created: Option<f64>,
#[serde(rename = "DateModified")]
#[serde(skip_serializing_if = "Option::is_none")]
pub date_modified: Option<f64>,
#[serde(rename = "Description")]
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "ExecutionRoleArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub execution_role_arn: Option<String>,
#[serde(rename = "PolicyArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_arn: Option<String>,
#[serde(rename = "PolicyDetails")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_details: Option<PolicyDetails>,
#[serde(rename = "PolicyId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_id: Option<String>,
#[serde(rename = "State")]
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(rename = "StatusMessage")]
#[serde(skip_serializing_if = "Option::is_none")]
pub status_message: Option<String>,
#[serde(rename = "Tags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<::std::collections::HashMap<String, String>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct LifecyclePolicySummary {
#[serde(rename = "Description")]
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "PolicyId")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_id: Option<String>,
#[serde(rename = "State")]
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
#[serde(rename = "Tags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<::std::collections::HashMap<String, String>>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct ListTagsForResourceRequest {
#[serde(rename = "ResourceArn")]
pub resource_arn: String,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct ListTagsForResourceResponse {
#[serde(rename = "Tags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<::std::collections::HashMap<String, String>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Parameters {
#[serde(rename = "ExcludeBootVolume")]
#[serde(skip_serializing_if = "Option::is_none")]
pub exclude_boot_volume: Option<bool>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct PolicyDetails {
#[serde(rename = "Parameters")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parameters: Option<Parameters>,
#[serde(rename = "PolicyType")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_type: Option<String>,
#[serde(rename = "ResourceTypes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub resource_types: Option<Vec<String>>,
#[serde(rename = "Schedules")]
#[serde(skip_serializing_if = "Option::is_none")]
pub schedules: Option<Vec<Schedule>>,
#[serde(rename = "TargetTags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub target_tags: Option<Vec<Tag>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct RetainRule {
#[serde(rename = "Count")]
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<i64>,
#[serde(rename = "IntervalUnit")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_unit: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Schedule {
#[serde(rename = "CopyTags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub copy_tags: Option<bool>,
#[serde(rename = "CreateRule")]
#[serde(skip_serializing_if = "Option::is_none")]
pub create_rule: Option<CreateRule>,
#[serde(rename = "CrossRegionCopyRules")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cross_region_copy_rules: Option<Vec<CrossRegionCopyRule>>,
#[serde(rename = "FastRestoreRule")]
#[serde(skip_serializing_if = "Option::is_none")]
pub fast_restore_rule: Option<FastRestoreRule>,
#[serde(rename = "Name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "RetainRule")]
#[serde(skip_serializing_if = "Option::is_none")]
pub retain_rule: Option<RetainRule>,
#[serde(rename = "TagsToAdd")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags_to_add: Option<Vec<Tag>>,
#[serde(rename = "VariableTags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub variable_tags: Option<Vec<Tag>>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Tag {
#[serde(rename = "Key")]
pub key: String,
#[serde(rename = "Value")]
pub value: String,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct TagResourceRequest {
#[serde(rename = "ResourceArn")]
pub resource_arn: String,
#[serde(rename = "Tags")]
pub tags: ::std::collections::HashMap<String, String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct TagResourceResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct UntagResourceRequest {
#[serde(rename = "ResourceArn")]
pub resource_arn: String,
#[serde(rename = "TagKeys")]
pub tag_keys: Vec<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct UntagResourceResponse {}
#[derive(Clone, Debug, Default, PartialEq, Serialize)]
#[cfg_attr(feature = "deserialize_structs", derive(Deserialize))]
pub struct UpdateLifecyclePolicyRequest {
#[serde(rename = "Description")]
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(rename = "ExecutionRoleArn")]
#[serde(skip_serializing_if = "Option::is_none")]
pub execution_role_arn: Option<String>,
#[serde(rename = "PolicyDetails")]
#[serde(skip_serializing_if = "Option::is_none")]
pub policy_details: Option<PolicyDetails>,
#[serde(rename = "PolicyId")]
pub policy_id: String,
#[serde(rename = "State")]
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<String>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq)]
#[cfg_attr(any(test, feature = "serialize_structs"), derive(Serialize))]
pub struct UpdateLifecyclePolicyResponse {}
#[derive(Debug, PartialEq)]
pub enum CreateLifecyclePolicyError {
InternalServer(String),
InvalidRequest(String),
LimitExceeded(String),
}
impl CreateLifecyclePolicyError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<CreateLifecyclePolicyError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(CreateLifecyclePolicyError::InternalServer(
err.msg,
))
}
"InvalidRequestException" => {
return RusotoError::Service(CreateLifecyclePolicyError::InvalidRequest(
err.msg,
))
}
"LimitExceededException" => {
return RusotoError::Service(CreateLifecyclePolicyError::LimitExceeded(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for CreateLifecyclePolicyError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
CreateLifecyclePolicyError::InternalServer(ref cause) => write!(f, "{}", cause),
CreateLifecyclePolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
CreateLifecyclePolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for CreateLifecyclePolicyError {}
#[derive(Debug, PartialEq)]
pub enum DeleteLifecyclePolicyError {
InternalServer(String),
LimitExceeded(String),
ResourceNotFound(String),
}
impl DeleteLifecyclePolicyError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<DeleteLifecyclePolicyError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(DeleteLifecyclePolicyError::InternalServer(
err.msg,
))
}
"LimitExceededException" => {
return RusotoError::Service(DeleteLifecyclePolicyError::LimitExceeded(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(DeleteLifecyclePolicyError::ResourceNotFound(
err.msg,
))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for DeleteLifecyclePolicyError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
DeleteLifecyclePolicyError::InternalServer(ref cause) => write!(f, "{}", cause),
DeleteLifecyclePolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
DeleteLifecyclePolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for DeleteLifecyclePolicyError {}
#[derive(Debug, PartialEq)]
pub enum GetLifecyclePoliciesError {
InternalServer(String),
InvalidRequest(String),
LimitExceeded(String),
ResourceNotFound(String),
}
impl GetLifecyclePoliciesError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetLifecyclePoliciesError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(GetLifecyclePoliciesError::InternalServer(err.msg))
}
"InvalidRequestException" => {
return RusotoError::Service(GetLifecyclePoliciesError::InvalidRequest(err.msg))
}
"LimitExceededException" => {
return RusotoError::Service(GetLifecyclePoliciesError::LimitExceeded(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(GetLifecyclePoliciesError::ResourceNotFound(
err.msg,
))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for GetLifecyclePoliciesError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
GetLifecyclePoliciesError::InternalServer(ref cause) => write!(f, "{}", cause),
GetLifecyclePoliciesError::InvalidRequest(ref cause) => write!(f, "{}", cause),
GetLifecyclePoliciesError::LimitExceeded(ref cause) => write!(f, "{}", cause),
GetLifecyclePoliciesError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for GetLifecyclePoliciesError {}
#[derive(Debug, PartialEq)]
pub enum GetLifecyclePolicyError {
InternalServer(String),
LimitExceeded(String),
ResourceNotFound(String),
}
impl GetLifecyclePolicyError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<GetLifecyclePolicyError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(GetLifecyclePolicyError::InternalServer(err.msg))
}
"LimitExceededException" => {
return RusotoError::Service(GetLifecyclePolicyError::LimitExceeded(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(GetLifecyclePolicyError::ResourceNotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for GetLifecyclePolicyError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
GetLifecyclePolicyError::InternalServer(ref cause) => write!(f, "{}", cause),
GetLifecyclePolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
GetLifecyclePolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for GetLifecyclePolicyError {}
#[derive(Debug, PartialEq)]
pub enum ListTagsForResourceError {
InternalServer(String),
InvalidRequest(String),
ResourceNotFound(String),
}
impl ListTagsForResourceError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<ListTagsForResourceError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(ListTagsForResourceError::InternalServer(err.msg))
}
"InvalidRequestException" => {
return RusotoError::Service(ListTagsForResourceError::InvalidRequest(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(ListTagsForResourceError::ResourceNotFound(
err.msg,
))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for ListTagsForResourceError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
ListTagsForResourceError::InternalServer(ref cause) => write!(f, "{}", cause),
ListTagsForResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
ListTagsForResourceError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for ListTagsForResourceError {}
#[derive(Debug, PartialEq)]
pub enum TagResourceError {
InternalServer(String),
InvalidRequest(String),
ResourceNotFound(String),
}
impl TagResourceError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<TagResourceError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(TagResourceError::InternalServer(err.msg))
}
"InvalidRequestException" => {
return RusotoError::Service(TagResourceError::InvalidRequest(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(TagResourceError::ResourceNotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for TagResourceError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
TagResourceError::InternalServer(ref cause) => write!(f, "{}", cause),
TagResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
TagResourceError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for TagResourceError {}
#[derive(Debug, PartialEq)]
pub enum UntagResourceError {
InternalServer(String),
InvalidRequest(String),
ResourceNotFound(String),
}
impl UntagResourceError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UntagResourceError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(UntagResourceError::InternalServer(err.msg))
}
"InvalidRequestException" => {
return RusotoError::Service(UntagResourceError::InvalidRequest(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(UntagResourceError::ResourceNotFound(err.msg))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for UntagResourceError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
UntagResourceError::InternalServer(ref cause) => write!(f, "{}", cause),
UntagResourceError::InvalidRequest(ref cause) => write!(f, "{}", cause),
UntagResourceError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for UntagResourceError {}
#[derive(Debug, PartialEq)]
pub enum UpdateLifecyclePolicyError {
InternalServer(String),
InvalidRequest(String),
LimitExceeded(String),
ResourceNotFound(String),
}
impl UpdateLifecyclePolicyError {
pub fn from_response(res: BufferedHttpResponse) -> RusotoError<UpdateLifecyclePolicyError> {
if let Some(err) = proto::json::Error::parse_rest(&res) {
match err.typ.as_str() {
"InternalServerException" => {
return RusotoError::Service(UpdateLifecyclePolicyError::InternalServer(
err.msg,
))
}
"InvalidRequestException" => {
return RusotoError::Service(UpdateLifecyclePolicyError::InvalidRequest(
err.msg,
))
}
"LimitExceededException" => {
return RusotoError::Service(UpdateLifecyclePolicyError::LimitExceeded(err.msg))
}
"ResourceNotFoundException" => {
return RusotoError::Service(UpdateLifecyclePolicyError::ResourceNotFound(
err.msg,
))
}
"ValidationException" => return RusotoError::Validation(err.msg),
_ => {}
}
}
RusotoError::Unknown(res)
}
}
impl fmt::Display for UpdateLifecyclePolicyError {
#[allow(unused_variables)]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
UpdateLifecyclePolicyError::InternalServer(ref cause) => write!(f, "{}", cause),
UpdateLifecyclePolicyError::InvalidRequest(ref cause) => write!(f, "{}", cause),
UpdateLifecyclePolicyError::LimitExceeded(ref cause) => write!(f, "{}", cause),
UpdateLifecyclePolicyError::ResourceNotFound(ref cause) => write!(f, "{}", cause),
}
}
}
impl Error for UpdateLifecyclePolicyError {}
#[async_trait]
pub trait Dlm {
async fn create_lifecycle_policy(
&self,
input: CreateLifecyclePolicyRequest,
) -> Result<CreateLifecyclePolicyResponse, RusotoError<CreateLifecyclePolicyError>>;
async fn delete_lifecycle_policy(
&self,
input: DeleteLifecyclePolicyRequest,
) -> Result<DeleteLifecyclePolicyResponse, RusotoError<DeleteLifecyclePolicyError>>;
async fn get_lifecycle_policies(
&self,
input: GetLifecyclePoliciesRequest,
) -> Result<GetLifecyclePoliciesResponse, RusotoError<GetLifecyclePoliciesError>>;
async fn get_lifecycle_policy(
&self,
input: GetLifecyclePolicyRequest,
) -> Result<GetLifecyclePolicyResponse, RusotoError<GetLifecyclePolicyError>>;
async fn list_tags_for_resource(
&self,
input: ListTagsForResourceRequest,
) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>>;
async fn tag_resource(
&self,
input: TagResourceRequest,
) -> Result<TagResourceResponse, RusotoError<TagResourceError>>;
async fn untag_resource(
&self,
input: UntagResourceRequest,
) -> Result<UntagResourceResponse, RusotoError<UntagResourceError>>;
async fn update_lifecycle_policy(
&self,
input: UpdateLifecyclePolicyRequest,
) -> Result<UpdateLifecyclePolicyResponse, RusotoError<UpdateLifecyclePolicyError>>;
}
#[derive(Clone)]
pub struct DlmClient {
client: Client,
region: region::Region,
}
impl DlmClient {
pub fn new(region: region::Region) -> DlmClient {
DlmClient {
client: Client::shared(),
region,
}
}
pub fn new_with<P, D>(
request_dispatcher: D,
credentials_provider: P,
region: region::Region,
) -> DlmClient
where
P: ProvideAwsCredentials + Send + Sync + 'static,
D: DispatchSignedRequest + Send + Sync + 'static,
{
DlmClient {
client: Client::new_with(credentials_provider, request_dispatcher),
region,
}
}
pub fn new_with_client(client: Client, region: region::Region) -> DlmClient {
DlmClient { client, region }
}
}
#[async_trait]
impl Dlm for DlmClient {
#[allow(unused_mut)]
async fn create_lifecycle_policy(
&self,
input: CreateLifecyclePolicyRequest,
) -> Result<CreateLifecyclePolicyResponse, RusotoError<CreateLifecyclePolicyError>> {
let request_uri = "/policies";
let mut request = SignedRequest::new("POST", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let encoded = Some(serde_json::to_vec(&input).unwrap());
request.set_payload(encoded);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<CreateLifecyclePolicyResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(CreateLifecyclePolicyError::from_response(response))
}
}
#[allow(unused_mut)]
async fn delete_lifecycle_policy(
&self,
input: DeleteLifecyclePolicyRequest,
) -> Result<DeleteLifecyclePolicyResponse, RusotoError<DeleteLifecyclePolicyError>> {
let request_uri = format!("/policies/{policy_id}/", policy_id = input.policy_id);
let mut request = SignedRequest::new("DELETE", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<DeleteLifecyclePolicyResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(DeleteLifecyclePolicyError::from_response(response))
}
}
#[allow(unused_mut)]
async fn get_lifecycle_policies(
&self,
input: GetLifecyclePoliciesRequest,
) -> Result<GetLifecyclePoliciesResponse, RusotoError<GetLifecyclePoliciesError>> {
let request_uri = "/policies";
let mut request = SignedRequest::new("GET", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let mut params = Params::new();
if let Some(ref x) = input.policy_ids {
for item in x.iter() {
params.put("policyIds", item);
}
}
if let Some(ref x) = input.resource_types {
for item in x.iter() {
params.put("resourceTypes", item);
}
}
if let Some(ref x) = input.state {
params.put("state", x);
}
if let Some(ref x) = input.tags_to_add {
for item in x.iter() {
params.put("tagsToAdd", item);
}
}
if let Some(ref x) = input.target_tags {
for item in x.iter() {
params.put("targetTags", item);
}
}
request.set_params(params);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<GetLifecyclePoliciesResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(GetLifecyclePoliciesError::from_response(response))
}
}
#[allow(unused_mut)]
async fn get_lifecycle_policy(
&self,
input: GetLifecyclePolicyRequest,
) -> Result<GetLifecyclePolicyResponse, RusotoError<GetLifecyclePolicyError>> {
let request_uri = format!("/policies/{policy_id}/", policy_id = input.policy_id);
let mut request = SignedRequest::new("GET", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<GetLifecyclePolicyResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(GetLifecyclePolicyError::from_response(response))
}
}
#[allow(unused_mut)]
async fn list_tags_for_resource(
&self,
input: ListTagsForResourceRequest,
) -> Result<ListTagsForResourceResponse, RusotoError<ListTagsForResourceError>> {
let request_uri = format!("/tags/{resource_arn}", resource_arn = input.resource_arn);
let mut request = SignedRequest::new("GET", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<ListTagsForResourceResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(ListTagsForResourceError::from_response(response))
}
}
#[allow(unused_mut)]
async fn tag_resource(
&self,
input: TagResourceRequest,
) -> Result<TagResourceResponse, RusotoError<TagResourceError>> {
let request_uri = format!("/tags/{resource_arn}", resource_arn = input.resource_arn);
let mut request = SignedRequest::new("POST", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let encoded = Some(serde_json::to_vec(&input).unwrap());
request.set_payload(encoded);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<TagResourceResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(TagResourceError::from_response(response))
}
}
#[allow(unused_mut)]
async fn untag_resource(
&self,
input: UntagResourceRequest,
) -> Result<UntagResourceResponse, RusotoError<UntagResourceError>> {
let request_uri = format!("/tags/{resource_arn}", resource_arn = input.resource_arn);
let mut request = SignedRequest::new("DELETE", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let mut params = Params::new();
for item in input.tag_keys.iter() {
params.put("tagKeys", item);
}
request.set_params(params);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<UntagResourceResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(UntagResourceError::from_response(response))
}
}
#[allow(unused_mut)]
async fn update_lifecycle_policy(
&self,
input: UpdateLifecyclePolicyRequest,
) -> Result<UpdateLifecyclePolicyResponse, RusotoError<UpdateLifecyclePolicyError>> {
let request_uri = format!("/policies/{policy_id}", policy_id = input.policy_id);
let mut request = SignedRequest::new("PATCH", "dlm", &self.region, &request_uri);
request.set_content_type("application/x-amz-json-1.1".to_owned());
let encoded = Some(serde_json::to_vec(&input).unwrap());
request.set_payload(encoded);
let mut response = self
.client
.sign_and_dispatch(request)
.await
.map_err(RusotoError::from)?;
if response.status.is_success() {
let mut response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
let result = proto::json::ResponsePayload::new(&response)
.deserialize::<UpdateLifecyclePolicyResponse, _>()?;
Ok(result)
} else {
let response = response.buffer().await.map_err(RusotoError::HttpDispatch)?;
Err(UpdateLifecyclePolicyError::from_response(response))
}
}
}