Server Test

Server Test

rev. d838bf488731ae5e751cce0fe13f339a5b9be858 (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-server-test/ebs/rust-server-codegen/src/operation.rs

@@ -1,1 +632,632 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
::pin_project_lite::pin_project! {
    3      3   
    /// A [`Future`](std::future::Future) aggregating the body bytes of a [`Request`] and constructing the
    4         -
    /// [`StartSnapshotInput`](crate::input::StartSnapshotInput) using modelled bindings.
    5         -
    pub struct StartSnapshotInputFuture {
    6         -
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::StartSnapshotInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
           4  +
    /// [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput) using modelled bindings.
           5  +
    pub struct CompleteSnapshotInputFuture {
           6  +
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::CompleteSnapshotInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
    7      7   
    }
    8      8   
}
    9      9   
   10         -
impl std::future::Future for StartSnapshotInputFuture {
          10  +
impl std::future::Future for CompleteSnapshotInputFuture {
   11     11   
    type Output = Result<
   12         -
        crate::input::StartSnapshotInput,
          12  +
        crate::input::CompleteSnapshotInput,
   13     13   
        ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError,
   14     14   
    >;
   15     15   
   16     16   
    fn poll(
   17     17   
        self: std::pin::Pin<&mut Self>,
   18     18   
        cx: &mut std::task::Context<'_>,
   19     19   
    ) -> std::task::Poll<Self::Output> {
   20     20   
        let this = self.project();
   21     21   
        this.inner.as_mut().poll(cx)
   22     22   
    }
   23     23   
}
   24     24   
   25     25   
impl<B>
   26     26   
    ::aws_smithy_http_server::request::FromRequest<
   27     27   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
   28     28   
        B,
   29         -
    > for crate::input::StartSnapshotInput
          29  +
    > for crate::input::CompleteSnapshotInput
   30     30   
where
   31     31   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
   32     32   
    B: 'static,
   33     33   
   34     34   
    B::Data: Send,
   35     35   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
   36     36   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
   37     37   
{
   38     38   
    type Rejection = ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError;
   39         -
    type Future = StartSnapshotInputFuture;
          39  +
    type Future = CompleteSnapshotInputFuture;
   40     40   
   41     41   
    fn from_request(request: ::http_1x::Request<B>) -> Self::Future {
   42     42   
        let fut = async move {
   43     43   
            if !::aws_smithy_http_server::protocol::accept_header_classifier(
   44     44   
                request.headers(),
   45     45   
                &crate::mimes::CONTENT_TYPE_APPLICATION_JSON,
   46     46   
            ) {
   47     47   
                return Err(::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection::NotAcceptable);
   48     48   
            }
   49         -
            crate::protocol_serde::shape_start_snapshot::de_start_snapshot_http_request(request)
          49  +
            crate::protocol_serde::shape_complete_snapshot::de_complete_snapshot_http_request(
          50  +
                request,
          51  +
            )
   50     52   
            .await
   51     53   
        };
   52     54   
        use ::futures_util::future::TryFutureExt;
   53     55   
        let fut = fut.map_err(
   54     56   
            |e: ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection| {
   55     57   
                ::tracing::debug!(error = %e, "failed to deserialize request");
   56     58   
                ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(
   57     59   
                    e,
   58     60   
                )
   59     61   
            },
   60     62   
        );
   61         -
        StartSnapshotInputFuture {
          63  +
        CompleteSnapshotInputFuture {
   62     64   
            inner: Box::pin(fut),
   63     65   
        }
   64     66   
    }
   65     67   
}
   66     68   
impl
   67     69   
    ::aws_smithy_http_server::response::IntoResponse<
   68     70   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
   69         -
    > for crate::output::StartSnapshotOutput
          71  +
    > for crate::output::CompleteSnapshotOutput
   70     72   
{
   71     73   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
   72         -
        match crate::protocol_serde::shape_start_snapshot::ser_start_snapshot_http_response(self) {
          74  +
        match crate::protocol_serde::shape_complete_snapshot::ser_complete_snapshot_http_response(
          75  +
            self,
          76  +
        ) {
   73     77   
            Ok(response) => response,
   74     78   
            Err(e) => {
   75     79   
                ::tracing::error!(error = %e, "failed to serialize response");
   76     80   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
   77     81   
            }
   78     82   
        }
   79     83   
    }
   80     84   
}
   81     85   
impl
   82     86   
    ::aws_smithy_http_server::response::IntoResponse<
   83     87   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
   84         -
    > for crate::error::StartSnapshotError
          88  +
    > for crate::error::CompleteSnapshotError
   85     89   
{
   86     90   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
   87         -
        match crate::protocol_serde::shape_start_snapshot::ser_start_snapshot_http_error(&self) {
          91  +
        match crate::protocol_serde::shape_complete_snapshot::ser_complete_snapshot_http_error(
          92  +
            &self,
          93  +
        ) {
   88     94   
            Ok(mut response) => {
   89     95   
                response.extensions_mut().insert(
   90     96   
                    ::aws_smithy_http_server::extension::ModeledErrorExtension::new(self.name()),
   91     97   
                );
   92     98   
                response
   93     99   
            }
   94    100   
            Err(e) => {
   95    101   
                ::tracing::error!(error = %e, "failed to serialize response");
   96    102   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
   97    103   
            }
   98    104   
        }
   99    105   
    }
  100    106   
}
  101    107   
  102    108   
::pin_project_lite::pin_project! {
  103    109   
    /// A [`Future`](std::future::Future) aggregating the body bytes of a [`Request`] and constructing the
  104         -
    /// [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput) using modelled bindings.
  105         -
    pub struct PutSnapshotBlockInputFuture {
  106         -
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::PutSnapshotBlockInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
         110  +
    /// [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput) using modelled bindings.
         111  +
    pub struct GetSnapshotBlockInputFuture {
         112  +
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::GetSnapshotBlockInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
  107    113   
    }
  108    114   
}
  109    115   
  110         -
impl std::future::Future for PutSnapshotBlockInputFuture {
         116  +
impl std::future::Future for GetSnapshotBlockInputFuture {
  111    117   
    type Output = Result<
  112         -
        crate::input::PutSnapshotBlockInput,
         118  +
        crate::input::GetSnapshotBlockInput,
  113    119   
        ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError,
  114    120   
    >;
  115    121   
  116    122   
    fn poll(
  117    123   
        self: std::pin::Pin<&mut Self>,
  118    124   
        cx: &mut std::task::Context<'_>,
  119    125   
    ) -> std::task::Poll<Self::Output> {
  120    126   
        let this = self.project();
  121    127   
        this.inner.as_mut().poll(cx)
  122    128   
    }
  123    129   
}
  124    130   
  125    131   
impl<B>
  126    132   
    ::aws_smithy_http_server::request::FromRequest<
  127    133   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  128    134   
        B,
  129         -
    > for crate::input::PutSnapshotBlockInput
         135  +
    > for crate::input::GetSnapshotBlockInput
  130    136   
where
  131    137   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
  132    138   
    B: 'static,
  133    139   
  134         -
    B: ::http_body_1x::Body<Data = ::bytes::Bytes>
  135         -
        + ::std::marker::Send
  136         -
        + ::std::marker::Sync
  137         -
        + 'static,
  138         -
    B::Error: Into<::aws_smithy_types::body::Error> + 'static,
  139         -
  140    140   
    B::Data: Send,
  141    141   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
  142    142   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
  143    143   
{
  144    144   
    type Rejection = ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError;
  145         -
    type Future = PutSnapshotBlockInputFuture;
         145  +
    type Future = GetSnapshotBlockInputFuture;
  146    146   
  147    147   
    fn from_request(request: ::http_1x::Request<B>) -> Self::Future {
  148    148   
        let fut = async move {
  149    149   
            if !::aws_smithy_http_server::protocol::accept_header_classifier(
  150    150   
                request.headers(),
  151         -
                &crate::mimes::CONTENT_TYPE_APPLICATION_JSON,
         151  +
                &crate::mimes::CONTENT_TYPE_APPLICATION_OCTET_STREAM,
  152    152   
            ) {
  153    153   
                return Err(::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection::NotAcceptable);
  154    154   
            }
  155         -
            crate::protocol_serde::shape_put_snapshot_block::de_put_snapshot_block_http_request(
         155  +
            crate::protocol_serde::shape_get_snapshot_block::de_get_snapshot_block_http_request(
  156    156   
                request,
  157    157   
            )
  158    158   
            .await
  159    159   
        };
  160    160   
        use ::futures_util::future::TryFutureExt;
  161    161   
        let fut = fut.map_err(
  162    162   
            |e: ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection| {
  163    163   
                ::tracing::debug!(error = %e, "failed to deserialize request");
  164    164   
                ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(
  165    165   
                    e,
  166    166   
                )
  167    167   
            },
  168    168   
        );
  169         -
        PutSnapshotBlockInputFuture {
         169  +
        GetSnapshotBlockInputFuture {
  170    170   
            inner: Box::pin(fut),
  171    171   
        }
  172    172   
    }
  173    173   
}
  174    174   
impl
  175    175   
    ::aws_smithy_http_server::response::IntoResponse<
  176    176   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  177         -
    > for crate::output::PutSnapshotBlockOutput
         177  +
    > for crate::output::GetSnapshotBlockOutput
  178    178   
{
  179    179   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  180         -
        match crate::protocol_serde::shape_put_snapshot_block::ser_put_snapshot_block_http_response(
         180  +
        match crate::protocol_serde::shape_get_snapshot_block::ser_get_snapshot_block_http_response(
  181    181   
            self,
  182    182   
        ) {
  183    183   
            Ok(response) => response,
  184    184   
            Err(e) => {
  185    185   
                ::tracing::error!(error = %e, "failed to serialize response");
  186    186   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  187    187   
            }
  188    188   
        }
  189    189   
    }
  190    190   
}
  191    191   
impl
  192    192   
    ::aws_smithy_http_server::response::IntoResponse<
  193    193   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  194         -
    > for crate::error::PutSnapshotBlockError
         194  +
    > for crate::error::GetSnapshotBlockError
  195    195   
{
  196    196   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  197         -
        match crate::protocol_serde::shape_put_snapshot_block::ser_put_snapshot_block_http_error(
         197  +
        match crate::protocol_serde::shape_get_snapshot_block::ser_get_snapshot_block_http_error(
  198    198   
            &self,
  199    199   
        ) {
  200    200   
            Ok(mut response) => {
  201    201   
                response.extensions_mut().insert(
  202    202   
                    ::aws_smithy_http_server::extension::ModeledErrorExtension::new(self.name()),
  203    203   
                );
  204    204   
                response
  205    205   
            }
  206    206   
            Err(e) => {
  207    207   
                ::tracing::error!(error = %e, "failed to serialize response");
  208    208   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  209    209   
            }
  210    210   
        }
  211    211   
    }
  212    212   
}
  213    213   
  214    214   
::pin_project_lite::pin_project! {
  215    215   
    /// A [`Future`](std::future::Future) aggregating the body bytes of a [`Request`] and constructing the
  216         -
    /// [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput) using modelled bindings.
  217         -
    pub struct ListSnapshotBlocksInputFuture {
  218         -
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::ListSnapshotBlocksInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
         216  +
    /// [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput) using modelled bindings.
         217  +
    pub struct ListChangedBlocksInputFuture {
         218  +
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::ListChangedBlocksInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
  219    219   
    }
  220    220   
}
  221    221   
  222         -
impl std::future::Future for ListSnapshotBlocksInputFuture {
         222  +
impl std::future::Future for ListChangedBlocksInputFuture {
  223    223   
    type Output = Result<
  224         -
        crate::input::ListSnapshotBlocksInput,
         224  +
        crate::input::ListChangedBlocksInput,
  225    225   
        ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError,
  226    226   
    >;
  227    227   
  228    228   
    fn poll(
  229    229   
        self: std::pin::Pin<&mut Self>,
  230    230   
        cx: &mut std::task::Context<'_>,
  231    231   
    ) -> std::task::Poll<Self::Output> {
  232    232   
        let this = self.project();
  233    233   
        this.inner.as_mut().poll(cx)
  234    234   
    }
  235    235   
}
  236    236   
  237    237   
impl<B>
  238    238   
    ::aws_smithy_http_server::request::FromRequest<
  239    239   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  240    240   
        B,
  241         -
    > for crate::input::ListSnapshotBlocksInput
         241  +
    > for crate::input::ListChangedBlocksInput
  242    242   
where
  243    243   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
  244    244   
    B: 'static,
  245    245   
  246    246   
    B::Data: Send,
  247    247   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
  248    248   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
  249    249   
{
  250    250   
    type Rejection = ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError;
  251         -
    type Future = ListSnapshotBlocksInputFuture;
         251  +
    type Future = ListChangedBlocksInputFuture;
  252    252   
  253    253   
    fn from_request(request: ::http_1x::Request<B>) -> Self::Future {
  254    254   
        let fut = async move {
  255    255   
            if !::aws_smithy_http_server::protocol::accept_header_classifier(
  256    256   
                request.headers(),
  257    257   
                &crate::mimes::CONTENT_TYPE_APPLICATION_JSON,
  258    258   
            ) {
  259    259   
                return Err(::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection::NotAcceptable);
  260    260   
            }
  261         -
            crate::protocol_serde::shape_list_snapshot_blocks::de_list_snapshot_blocks_http_request(
         261  +
            crate::protocol_serde::shape_list_changed_blocks::de_list_changed_blocks_http_request(
  262    262   
                request,
  263    263   
            )
  264    264   
            .await
  265    265   
        };
  266    266   
        use ::futures_util::future::TryFutureExt;
  267    267   
        let fut = fut.map_err(
  268    268   
            |e: ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection| {
  269    269   
                ::tracing::debug!(error = %e, "failed to deserialize request");
  270    270   
                ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(
  271    271   
                    e,
  272    272   
                )
  273    273   
            },
  274    274   
        );
  275         -
        ListSnapshotBlocksInputFuture {
         275  +
        ListChangedBlocksInputFuture {
  276    276   
            inner: Box::pin(fut),
  277    277   
        }
  278    278   
    }
  279    279   
}
  280    280   
impl
  281    281   
    ::aws_smithy_http_server::response::IntoResponse<
  282    282   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  283         -
    > for crate::output::ListSnapshotBlocksOutput
         283  +
    > for crate::output::ListChangedBlocksOutput
  284    284   
{
  285    285   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  286         -
        match crate::protocol_serde::shape_list_snapshot_blocks::ser_list_snapshot_blocks_http_response(self) {
         286  +
        match crate::protocol_serde::shape_list_changed_blocks::ser_list_changed_blocks_http_response(self) {
  287    287   
                        Ok(response) => response,
  288    288   
                        Err(e) => {
  289    289   
                            ::tracing::error!(error = %e, "failed to serialize response");
  290    290   
                            ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  291    291   
                        }
  292    292   
                    }
  293    293   
    }
  294    294   
}
  295    295   
impl
  296    296   
    ::aws_smithy_http_server::response::IntoResponse<
  297    297   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  298         -
    > for crate::error::ListSnapshotBlocksError
         298  +
    > for crate::error::ListChangedBlocksError
  299    299   
{
  300    300   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  301         -
        match crate::protocol_serde::shape_list_snapshot_blocks::ser_list_snapshot_blocks_http_error(
         301  +
        match crate::protocol_serde::shape_list_changed_blocks::ser_list_changed_blocks_http_error(
  302    302   
            &self,
  303    303   
        ) {
  304    304   
            Ok(mut response) => {
  305    305   
                response.extensions_mut().insert(
  306    306   
                    ::aws_smithy_http_server::extension::ModeledErrorExtension::new(self.name()),
  307    307   
                );
  308    308   
                response
  309    309   
            }
  310    310   
            Err(e) => {
  311    311   
                ::tracing::error!(error = %e, "failed to serialize response");
  312    312   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  313    313   
            }
  314    314   
        }
  315    315   
    }
  316    316   
}
  317    317   
  318    318   
::pin_project_lite::pin_project! {
  319    319   
    /// A [`Future`](std::future::Future) aggregating the body bytes of a [`Request`] and constructing the
  320         -
    /// [`ListChangedBlocksInput`](crate::input::ListChangedBlocksInput) using modelled bindings.
  321         -
    pub struct ListChangedBlocksInputFuture {
  322         -
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::ListChangedBlocksInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
         320  +
    /// [`ListSnapshotBlocksInput`](crate::input::ListSnapshotBlocksInput) using modelled bindings.
         321  +
    pub struct ListSnapshotBlocksInputFuture {
         322  +
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::ListSnapshotBlocksInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
  323    323   
    }
  324    324   
}
  325    325   
  326         -
impl std::future::Future for ListChangedBlocksInputFuture {
         326  +
impl std::future::Future for ListSnapshotBlocksInputFuture {
  327    327   
    type Output = Result<
  328         -
        crate::input::ListChangedBlocksInput,
         328  +
        crate::input::ListSnapshotBlocksInput,
  329    329   
        ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError,
  330    330   
    >;
  331    331   
  332    332   
    fn poll(
  333    333   
        self: std::pin::Pin<&mut Self>,
  334    334   
        cx: &mut std::task::Context<'_>,
  335    335   
    ) -> std::task::Poll<Self::Output> {
  336    336   
        let this = self.project();
  337    337   
        this.inner.as_mut().poll(cx)
  338    338   
    }
  339    339   
}
  340    340   
  341    341   
impl<B>
  342    342   
    ::aws_smithy_http_server::request::FromRequest<
  343    343   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  344    344   
        B,
  345         -
    > for crate::input::ListChangedBlocksInput
         345  +
    > for crate::input::ListSnapshotBlocksInput
  346    346   
where
  347    347   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
  348    348   
    B: 'static,
  349    349   
  350    350   
    B::Data: Send,
  351    351   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
  352    352   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
  353    353   
{
  354    354   
    type Rejection = ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError;
  355         -
    type Future = ListChangedBlocksInputFuture;
         355  +
    type Future = ListSnapshotBlocksInputFuture;
  356    356   
  357    357   
    fn from_request(request: ::http_1x::Request<B>) -> Self::Future {
  358    358   
        let fut = async move {
  359    359   
            if !::aws_smithy_http_server::protocol::accept_header_classifier(
  360    360   
                request.headers(),
  361    361   
                &crate::mimes::CONTENT_TYPE_APPLICATION_JSON,
  362    362   
            ) {
  363    363   
                return Err(::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection::NotAcceptable);
  364    364   
            }
  365         -
            crate::protocol_serde::shape_list_changed_blocks::de_list_changed_blocks_http_request(
         365  +
            crate::protocol_serde::shape_list_snapshot_blocks::de_list_snapshot_blocks_http_request(
  366    366   
                request,
  367    367   
            )
  368    368   
            .await
  369    369   
        };
  370    370   
        use ::futures_util::future::TryFutureExt;
  371    371   
        let fut = fut.map_err(
  372    372   
            |e: ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection| {
  373    373   
                ::tracing::debug!(error = %e, "failed to deserialize request");
  374    374   
                ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(
  375    375   
                    e,
  376    376   
                )
  377    377   
            },
  378    378   
        );
  379         -
        ListChangedBlocksInputFuture {
         379  +
        ListSnapshotBlocksInputFuture {
  380    380   
            inner: Box::pin(fut),
  381    381   
        }
  382    382   
    }
  383    383   
}
  384    384   
impl
  385    385   
    ::aws_smithy_http_server::response::IntoResponse<
  386    386   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  387         -
    > for crate::output::ListChangedBlocksOutput
         387  +
    > for crate::output::ListSnapshotBlocksOutput
  388    388   
{
  389    389   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  390         -
        match crate::protocol_serde::shape_list_changed_blocks::ser_list_changed_blocks_http_response(self) {
         390  +
        match crate::protocol_serde::shape_list_snapshot_blocks::ser_list_snapshot_blocks_http_response(self) {
  391    391   
                        Ok(response) => response,
  392    392   
                        Err(e) => {
  393    393   
                            ::tracing::error!(error = %e, "failed to serialize response");
  394    394   
                            ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  395    395   
                        }
  396    396   
                    }
  397    397   
    }
  398    398   
}
  399    399   
impl
  400    400   
    ::aws_smithy_http_server::response::IntoResponse<
  401    401   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  402         -
    > for crate::error::ListChangedBlocksError
         402  +
    > for crate::error::ListSnapshotBlocksError
  403    403   
{
  404    404   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  405         -
        match crate::protocol_serde::shape_list_changed_blocks::ser_list_changed_blocks_http_error(
         405  +
        match crate::protocol_serde::shape_list_snapshot_blocks::ser_list_snapshot_blocks_http_error(
  406    406   
            &self,
  407    407   
        ) {
  408    408   
            Ok(mut response) => {
  409    409   
                response.extensions_mut().insert(
  410    410   
                    ::aws_smithy_http_server::extension::ModeledErrorExtension::new(self.name()),
  411    411   
                );
  412    412   
                response
  413    413   
            }
  414    414   
            Err(e) => {
  415    415   
                ::tracing::error!(error = %e, "failed to serialize response");
  416    416   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  417    417   
            }
  418    418   
        }
  419    419   
    }
  420    420   
}
  421    421   
  422    422   
::pin_project_lite::pin_project! {
  423    423   
    /// A [`Future`](std::future::Future) aggregating the body bytes of a [`Request`] and constructing the
  424         -
    /// [`GetSnapshotBlockInput`](crate::input::GetSnapshotBlockInput) using modelled bindings.
  425         -
    pub struct GetSnapshotBlockInputFuture {
  426         -
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::GetSnapshotBlockInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
         424  +
    /// [`PutSnapshotBlockInput`](crate::input::PutSnapshotBlockInput) using modelled bindings.
         425  +
    pub struct PutSnapshotBlockInputFuture {
         426  +
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::PutSnapshotBlockInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
  427    427   
    }
  428    428   
}
  429    429   
  430         -
impl std::future::Future for GetSnapshotBlockInputFuture {
         430  +
impl std::future::Future for PutSnapshotBlockInputFuture {
  431    431   
    type Output = Result<
  432         -
        crate::input::GetSnapshotBlockInput,
         432  +
        crate::input::PutSnapshotBlockInput,
  433    433   
        ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError,
  434    434   
    >;
  435    435   
  436    436   
    fn poll(
  437    437   
        self: std::pin::Pin<&mut Self>,
  438    438   
        cx: &mut std::task::Context<'_>,
  439    439   
    ) -> std::task::Poll<Self::Output> {
  440    440   
        let this = self.project();
  441    441   
        this.inner.as_mut().poll(cx)
  442    442   
    }
  443    443   
}
  444    444   
  445    445   
impl<B>
  446    446   
    ::aws_smithy_http_server::request::FromRequest<
  447    447   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  448    448   
        B,
  449         -
    > for crate::input::GetSnapshotBlockInput
         449  +
    > for crate::input::PutSnapshotBlockInput
  450    450   
where
  451    451   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
  452    452   
    B: 'static,
  453    453   
         454  +
    B: ::http_body_1x::Body<Data = ::bytes::Bytes>
         455  +
        + ::std::marker::Send
         456  +
        + ::std::marker::Sync
         457  +
        + 'static,
         458  +
    B::Error: Into<::aws_smithy_types::body::Error> + 'static,
         459  +
  454    460   
    B::Data: Send,
  455    461   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
  456    462   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
  457    463   
{
  458    464   
    type Rejection = ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError;
  459         -
    type Future = GetSnapshotBlockInputFuture;
         465  +
    type Future = PutSnapshotBlockInputFuture;
  460    466   
  461    467   
    fn from_request(request: ::http_1x::Request<B>) -> Self::Future {
  462    468   
        let fut = async move {
  463    469   
            if !::aws_smithy_http_server::protocol::accept_header_classifier(
  464    470   
                request.headers(),
  465         -
                &crate::mimes::CONTENT_TYPE_APPLICATION_OCTET_STREAM,
         471  +
                &crate::mimes::CONTENT_TYPE_APPLICATION_JSON,
  466    472   
            ) {
  467    473   
                return Err(::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection::NotAcceptable);
  468    474   
            }
  469         -
            crate::protocol_serde::shape_get_snapshot_block::de_get_snapshot_block_http_request(
         475  +
            crate::protocol_serde::shape_put_snapshot_block::de_put_snapshot_block_http_request(
  470    476   
                request,
  471    477   
            )
  472    478   
            .await
  473    479   
        };
  474    480   
        use ::futures_util::future::TryFutureExt;
  475    481   
        let fut = fut.map_err(
  476    482   
            |e: ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection| {
  477    483   
                ::tracing::debug!(error = %e, "failed to deserialize request");
  478    484   
                ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(
  479    485   
                    e,
  480    486   
                )
  481    487   
            },
  482    488   
        );
  483         -
        GetSnapshotBlockInputFuture {
         489  +
        PutSnapshotBlockInputFuture {
  484    490   
            inner: Box::pin(fut),
  485    491   
        }
  486    492   
    }
  487    493   
}
  488    494   
impl
  489    495   
    ::aws_smithy_http_server::response::IntoResponse<
  490    496   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  491         -
    > for crate::output::GetSnapshotBlockOutput
         497  +
    > for crate::output::PutSnapshotBlockOutput
  492    498   
{
  493    499   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  494         -
        match crate::protocol_serde::shape_get_snapshot_block::ser_get_snapshot_block_http_response(
         500  +
        match crate::protocol_serde::shape_put_snapshot_block::ser_put_snapshot_block_http_response(
  495    501   
            self,
  496    502   
        ) {
  497    503   
            Ok(response) => response,
  498    504   
            Err(e) => {
  499    505   
                ::tracing::error!(error = %e, "failed to serialize response");
  500    506   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  501    507   
            }
  502    508   
        }
  503    509   
    }
  504    510   
}
  505    511   
impl
  506    512   
    ::aws_smithy_http_server::response::IntoResponse<
  507    513   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  508         -
    > for crate::error::GetSnapshotBlockError
         514  +
    > for crate::error::PutSnapshotBlockError
  509    515   
{
  510    516   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  511         -
        match crate::protocol_serde::shape_get_snapshot_block::ser_get_snapshot_block_http_error(
         517  +
        match crate::protocol_serde::shape_put_snapshot_block::ser_put_snapshot_block_http_error(
  512    518   
            &self,
  513    519   
        ) {
  514    520   
            Ok(mut response) => {
  515    521   
                response.extensions_mut().insert(
  516    522   
                    ::aws_smithy_http_server::extension::ModeledErrorExtension::new(self.name()),
  517    523   
                );
  518    524   
                response
  519    525   
            }
  520    526   
            Err(e) => {
  521    527   
                ::tracing::error!(error = %e, "failed to serialize response");
  522    528   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  523    529   
            }
  524    530   
        }
  525    531   
    }
  526    532   
}
  527    533   
  528    534   
::pin_project_lite::pin_project! {
  529    535   
    /// A [`Future`](std::future::Future) aggregating the body bytes of a [`Request`] and constructing the
  530         -
    /// [`CompleteSnapshotInput`](crate::input::CompleteSnapshotInput) using modelled bindings.
  531         -
    pub struct CompleteSnapshotInputFuture {
  532         -
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::CompleteSnapshotInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
         536  +
    /// [`StartSnapshotInput`](crate::input::StartSnapshotInput) using modelled bindings.
         537  +
    pub struct StartSnapshotInputFuture {
         538  +
        inner: std::pin::Pin<Box<dyn std::future::Future<Output = Result<crate::input::StartSnapshotInput, ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError>> + Send>>
  533    539   
    }
  534    540   
}
  535    541   
  536         -
impl std::future::Future for CompleteSnapshotInputFuture {
         542  +
impl std::future::Future for StartSnapshotInputFuture {
  537    543   
    type Output = Result<
  538         -
        crate::input::CompleteSnapshotInput,
         544  +
        crate::input::StartSnapshotInput,
  539    545   
        ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError,
  540    546   
    >;
  541    547   
  542    548   
    fn poll(
  543    549   
        self: std::pin::Pin<&mut Self>,
  544    550   
        cx: &mut std::task::Context<'_>,
  545    551   
    ) -> std::task::Poll<Self::Output> {
  546    552   
        let this = self.project();
  547    553   
        this.inner.as_mut().poll(cx)
  548    554   
    }
  549    555   
}
  550    556   
  551    557   
impl<B>
  552    558   
    ::aws_smithy_http_server::request::FromRequest<
  553    559   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  554    560   
        B,
  555         -
    > for crate::input::CompleteSnapshotInput
         561  +
    > for crate::input::StartSnapshotInput
  556    562   
where
  557    563   
    B: ::aws_smithy_http_server::body::HttpBody + Send,
  558    564   
    B: 'static,
  559    565   
  560    566   
    B::Data: Send,
  561    567   
    ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection:
  562    568   
        From<<B as ::aws_smithy_http_server::body::HttpBody>::Error>,
  563    569   
{
  564    570   
    type Rejection = ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError;
  565         -
    type Future = CompleteSnapshotInputFuture;
         571  +
    type Future = StartSnapshotInputFuture;
  566    572   
  567    573   
    fn from_request(request: ::http_1x::Request<B>) -> Self::Future {
  568    574   
        let fut = async move {
  569    575   
            if !::aws_smithy_http_server::protocol::accept_header_classifier(
  570    576   
                request.headers(),
  571    577   
                &crate::mimes::CONTENT_TYPE_APPLICATION_JSON,
  572    578   
            ) {
  573    579   
                return Err(::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection::NotAcceptable);
  574    580   
            }
  575         -
            crate::protocol_serde::shape_complete_snapshot::de_complete_snapshot_http_request(
  576         -
                request,
  577         -
            )
         581  +
            crate::protocol_serde::shape_start_snapshot::de_start_snapshot_http_request(request)
  578    582   
                .await
  579    583   
        };
  580    584   
        use ::futures_util::future::TryFutureExt;
  581    585   
        let fut = fut.map_err(
  582    586   
            |e: ::aws_smithy_http_server::protocol::rest_json_1::rejection::RequestRejection| {
  583    587   
                ::tracing::debug!(error = %e, "failed to deserialize request");
  584    588   
                ::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(
  585    589   
                    e,
  586    590   
                )
  587    591   
            },
  588    592   
        );
  589         -
        CompleteSnapshotInputFuture {
         593  +
        StartSnapshotInputFuture {
  590    594   
            inner: Box::pin(fut),
  591    595   
        }
  592    596   
    }
  593    597   
}
  594    598   
impl
  595    599   
    ::aws_smithy_http_server::response::IntoResponse<
  596    600   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  597         -
    > for crate::output::CompleteSnapshotOutput
         601  +
    > for crate::output::StartSnapshotOutput
  598    602   
{
  599    603   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  600         -
        match crate::protocol_serde::shape_complete_snapshot::ser_complete_snapshot_http_response(
  601         -
            self,
  602         -
        ) {
         604  +
        match crate::protocol_serde::shape_start_snapshot::ser_start_snapshot_http_response(self) {
  603    605   
            Ok(response) => response,
  604    606   
            Err(e) => {
  605    607   
                ::tracing::error!(error = %e, "failed to serialize response");
  606    608   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  607    609   
            }
  608    610   
        }
  609    611   
    }
  610    612   
}
  611    613   
impl
  612    614   
    ::aws_smithy_http_server::response::IntoResponse<
  613    615   
        ::aws_smithy_http_server::protocol::rest_json_1::RestJson1,
  614         -
    > for crate::error::CompleteSnapshotError
         616  +
    > for crate::error::StartSnapshotError
  615    617   
{
  616    618   
    fn into_response(self) -> ::aws_smithy_http_server::response::Response {
  617         -
        match crate::protocol_serde::shape_complete_snapshot::ser_complete_snapshot_http_error(
  618         -
            &self,
  619         -
        ) {
         619  +
        match crate::protocol_serde::shape_start_snapshot::ser_start_snapshot_http_error(&self) {
  620    620   
            Ok(mut response) => {
  621    621   
                response.extensions_mut().insert(
  622    622   
                    ::aws_smithy_http_server::extension::ModeledErrorExtension::new(self.name()),
  623    623   
                );
  624    624   
                response
  625    625   
            }
  626    626   
            Err(e) => {
  627    627   
                ::tracing::error!(error = %e, "failed to serialize response");
  628    628   
                ::aws_smithy_http_server::response::IntoResponse::<::aws_smithy_http_server::protocol::rest_json_1::RestJson1>::into_response(::aws_smithy_http_server::protocol::rest_json_1::runtime_error::RuntimeError::from(e))
  629    629   
            }

tmp-codegen-diff/codegen-server-test/ebs/rust-server-codegen/src/operation_shape.rs

@@ -1,1 +231,231 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
    3         -
/// <p>Creates a new Amazon EBS snapshot. The new snapshot enters the <code>pending</code> state after the request completes.</p>
    4         -
/// <p>After creating the snapshot, use <a href="https://docs.aws.amazon.com/ebs/latest/APIReference/API_PutSnapshotBlock.html"> PutSnapshotBlock</a> to write blocks of data to the snapshot.</p>
    5         -
pub struct StartSnapshot;
           3  +
/// <p>Seals and completes the snapshot after all of the required blocks of data have been written to it. Completing the snapshot changes the status to <code>completed</code>. You cannot write new blocks to a snapshot after it has been completed.</p>
           4  +
pub struct CompleteSnapshot;
    6      5   
    7         -
impl ::aws_smithy_http_server::operation::OperationShape for StartSnapshot {
           6  +
impl ::aws_smithy_http_server::operation::OperationShape for CompleteSnapshot {
    8      7   
    const ID: ::aws_smithy_http_server::shape_id::ShapeId =
    9      8   
        ::aws_smithy_http_server::shape_id::ShapeId::new(
   10         -
            "com.amazonaws.ebs#StartSnapshot",
           9  +
            "com.amazonaws.ebs#CompleteSnapshot",
   11     10   
            "com.amazonaws.ebs",
   12         -
            "StartSnapshot",
          11  +
            "CompleteSnapshot",
   13     12   
        );
   14     13   
   15         -
    type Input = crate::input::StartSnapshotInput;
   16         -
    type Output = crate::output::StartSnapshotOutput;
   17         -
    type Error = crate::error::StartSnapshotError;
          14  +
    type Input = crate::input::CompleteSnapshotInput;
          15  +
    type Output = crate::output::CompleteSnapshotOutput;
          16  +
    type Error = crate::error::CompleteSnapshotError;
   18     17   
}
   19     18   
   20         -
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for StartSnapshot {
          19  +
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for CompleteSnapshot {
   21     20   
    type RequestFmt = ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt<
   22     21   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
   23     22   
        ::aws_smithy_http_server::instrumentation::sensitivity::uri::MakeUri<
   24     23   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
   25     24   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
   26     25   
        >,
   27     26   
    >;
   28     27   
    type ResponseFmt = ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt<
   29     28   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
   30     29   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
   31     30   
    >;
   32     31   
   33     32   
    fn request_fmt() -> Self::RequestFmt {
   34     33   
        ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt::new()
   35     34   
    }
   36     35   
   37     36   
    fn response_fmt() -> Self::ResponseFmt {
   38     37   
        ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt::new()
   39     38   
    }
   40     39   
}
   41     40   
   42         -
/// <p>Writes a block of data to a snapshot. If the specified block contains data, the existing data is overwritten. The target snapshot must be in the <code>pending</code> state.</p>
   43         -
/// <p>Data written to a snapshot must be aligned with 512-byte sectors.</p>
   44         -
pub struct PutSnapshotBlock;
          41  +
/// <p>Returns the data in a block in an Amazon Elastic Block Store snapshot.</p>
          42  +
pub struct GetSnapshotBlock;
   45     43   
   46         -
impl ::aws_smithy_http_server::operation::OperationShape for PutSnapshotBlock {
          44  +
impl ::aws_smithy_http_server::operation::OperationShape for GetSnapshotBlock {
   47     45   
    const ID: ::aws_smithy_http_server::shape_id::ShapeId =
   48     46   
        ::aws_smithy_http_server::shape_id::ShapeId::new(
   49         -
            "com.amazonaws.ebs#PutSnapshotBlock",
          47  +
            "com.amazonaws.ebs#GetSnapshotBlock",
   50     48   
            "com.amazonaws.ebs",
   51         -
            "PutSnapshotBlock",
          49  +
            "GetSnapshotBlock",
   52     50   
        );
   53     51   
   54         -
    type Input = crate::input::PutSnapshotBlockInput;
   55         -
    type Output = crate::output::PutSnapshotBlockOutput;
   56         -
    type Error = crate::error::PutSnapshotBlockError;
          52  +
    type Input = crate::input::GetSnapshotBlockInput;
          53  +
    type Output = crate::output::GetSnapshotBlockOutput;
          54  +
    type Error = crate::error::GetSnapshotBlockError;
   57     55   
}
   58     56   
   59         -
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for PutSnapshotBlock {
          57  +
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for GetSnapshotBlock {
   60     58   
    type RequestFmt = ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt<
   61     59   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
   62     60   
        ::aws_smithy_http_server::instrumentation::sensitivity::uri::MakeUri<
   63     61   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
   64     62   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
   65     63   
        >,
   66     64   
    >;
   67     65   
    type ResponseFmt = ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt<
   68     66   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
   69     67   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
   70     68   
    >;
   71     69   
   72     70   
    fn request_fmt() -> Self::RequestFmt {
   73     71   
        ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt::new()
   74     72   
    }
   75     73   
   76     74   
    fn response_fmt() -> Self::ResponseFmt {
   77     75   
        ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt::new()
   78     76   
    }
   79     77   
}
   80     78   
   81         -
/// <p>Returns information about the blocks in an Amazon Elastic Block Store snapshot.</p>
   82         -
pub struct ListSnapshotBlocks;
          79  +
/// <p>Returns information about the blocks that are different between two Amazon Elastic Block Store snapshots of the same volume/snapshot lineage.</p>
          80  +
pub struct ListChangedBlocks;
   83     81   
   84         -
impl ::aws_smithy_http_server::operation::OperationShape for ListSnapshotBlocks {
          82  +
impl ::aws_smithy_http_server::operation::OperationShape for ListChangedBlocks {
   85     83   
    const ID: ::aws_smithy_http_server::shape_id::ShapeId =
   86     84   
        ::aws_smithy_http_server::shape_id::ShapeId::new(
   87         -
            "com.amazonaws.ebs#ListSnapshotBlocks",
          85  +
            "com.amazonaws.ebs#ListChangedBlocks",
   88     86   
            "com.amazonaws.ebs",
   89         -
            "ListSnapshotBlocks",
          87  +
            "ListChangedBlocks",
   90     88   
        );
   91     89   
   92         -
    type Input = crate::input::ListSnapshotBlocksInput;
   93         -
    type Output = crate::output::ListSnapshotBlocksOutput;
   94         -
    type Error = crate::error::ListSnapshotBlocksError;
          90  +
    type Input = crate::input::ListChangedBlocksInput;
          91  +
    type Output = crate::output::ListChangedBlocksOutput;
          92  +
    type Error = crate::error::ListChangedBlocksError;
   95     93   
}
   96     94   
   97         -
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for ListSnapshotBlocks {
          95  +
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for ListChangedBlocks {
   98     96   
    type RequestFmt = ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt<
   99     97   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  100     98   
        ::aws_smithy_http_server::instrumentation::sensitivity::uri::MakeUri<
  101     99   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  102    100   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  103    101   
        >,
  104    102   
    >;
  105    103   
    type ResponseFmt = ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt<
  106    104   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  107    105   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  108    106   
    >;
  109    107   
  110    108   
    fn request_fmt() -> Self::RequestFmt {
  111    109   
        ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt::new()
  112    110   
    }
  113    111   
  114    112   
    fn response_fmt() -> Self::ResponseFmt {
  115    113   
        ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt::new()
  116    114   
    }
  117    115   
}
  118    116   
  119         -
/// <p>Returns information about the blocks that are different between two Amazon Elastic Block Store snapshots of the same volume/snapshot lineage.</p>
  120         -
pub struct ListChangedBlocks;
         117  +
/// <p>Returns information about the blocks in an Amazon Elastic Block Store snapshot.</p>
         118  +
pub struct ListSnapshotBlocks;
  121    119   
  122         -
impl ::aws_smithy_http_server::operation::OperationShape for ListChangedBlocks {
         120  +
impl ::aws_smithy_http_server::operation::OperationShape for ListSnapshotBlocks {
  123    121   
    const ID: ::aws_smithy_http_server::shape_id::ShapeId =
  124    122   
        ::aws_smithy_http_server::shape_id::ShapeId::new(
  125         -
            "com.amazonaws.ebs#ListChangedBlocks",
         123  +
            "com.amazonaws.ebs#ListSnapshotBlocks",
  126    124   
            "com.amazonaws.ebs",
  127         -
            "ListChangedBlocks",
         125  +
            "ListSnapshotBlocks",
  128    126   
        );
  129    127   
  130         -
    type Input = crate::input::ListChangedBlocksInput;
  131         -
    type Output = crate::output::ListChangedBlocksOutput;
  132         -
    type Error = crate::error::ListChangedBlocksError;
         128  +
    type Input = crate::input::ListSnapshotBlocksInput;
         129  +
    type Output = crate::output::ListSnapshotBlocksOutput;
         130  +
    type Error = crate::error::ListSnapshotBlocksError;
  133    131   
}
  134    132   
  135         -
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for ListChangedBlocks {
         133  +
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for ListSnapshotBlocks {
  136    134   
    type RequestFmt = ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt<
  137    135   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  138    136   
        ::aws_smithy_http_server::instrumentation::sensitivity::uri::MakeUri<
  139    137   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  140    138   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  141    139   
        >,
  142    140   
    >;
  143    141   
    type ResponseFmt = ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt<
  144    142   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  145    143   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  146    144   
    >;
  147    145   
  148    146   
    fn request_fmt() -> Self::RequestFmt {
  149    147   
        ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt::new()
  150    148   
    }
  151    149   
  152    150   
    fn response_fmt() -> Self::ResponseFmt {
  153    151   
        ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt::new()
  154    152   
    }
  155    153   
}
  156    154   
  157         -
/// <p>Returns the data in a block in an Amazon Elastic Block Store snapshot.</p>
  158         -
pub struct GetSnapshotBlock;
         155  +
/// <p>Writes a block of data to a snapshot. If the specified block contains data, the existing data is overwritten. The target snapshot must be in the <code>pending</code> state.</p>
         156  +
/// <p>Data written to a snapshot must be aligned with 512-byte sectors.</p>
         157  +
pub struct PutSnapshotBlock;
  159    158   
  160         -
impl ::aws_smithy_http_server::operation::OperationShape for GetSnapshotBlock {
         159  +
impl ::aws_smithy_http_server::operation::OperationShape for PutSnapshotBlock {
  161    160   
    const ID: ::aws_smithy_http_server::shape_id::ShapeId =
  162    161   
        ::aws_smithy_http_server::shape_id::ShapeId::new(
  163         -
            "com.amazonaws.ebs#GetSnapshotBlock",
         162  +
            "com.amazonaws.ebs#PutSnapshotBlock",
  164    163   
            "com.amazonaws.ebs",
  165         -
            "GetSnapshotBlock",
         164  +
            "PutSnapshotBlock",
  166    165   
        );
  167    166   
  168         -
    type Input = crate::input::GetSnapshotBlockInput;
  169         -
    type Output = crate::output::GetSnapshotBlockOutput;
  170         -
    type Error = crate::error::GetSnapshotBlockError;
         167  +
    type Input = crate::input::PutSnapshotBlockInput;
         168  +
    type Output = crate::output::PutSnapshotBlockOutput;
         169  +
    type Error = crate::error::PutSnapshotBlockError;
  171    170   
}
  172    171   
  173         -
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for GetSnapshotBlock {
         172  +
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for PutSnapshotBlock {
  174    173   
    type RequestFmt = ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt<
  175    174   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  176    175   
        ::aws_smithy_http_server::instrumentation::sensitivity::uri::MakeUri<
  177    176   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  178    177   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  179    178   
        >,
  180    179   
    >;
  181    180   
    type ResponseFmt = ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt<
  182    181   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  183    182   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  184    183   
    >;
  185    184   
  186    185   
    fn request_fmt() -> Self::RequestFmt {
  187    186   
        ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt::new()
  188    187   
    }
  189    188   
  190    189   
    fn response_fmt() -> Self::ResponseFmt {
  191    190   
        ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt::new()
  192    191   
    }
  193    192   
}
  194    193   
  195         -
/// <p>Seals and completes the snapshot after all of the required blocks of data have been written to it. Completing the snapshot changes the status to <code>completed</code>. You cannot write new blocks to a snapshot after it has been completed.</p>
  196         -
pub struct CompleteSnapshot;
         194  +
/// <p>Creates a new Amazon EBS snapshot. The new snapshot enters the <code>pending</code> state after the request completes.</p>
         195  +
/// <p>After creating the snapshot, use <a href="https://docs.aws.amazon.com/ebs/latest/APIReference/API_PutSnapshotBlock.html"> PutSnapshotBlock</a> to write blocks of data to the snapshot.</p>
         196  +
pub struct StartSnapshot;
  197    197   
  198         -
impl ::aws_smithy_http_server::operation::OperationShape for CompleteSnapshot {
         198  +
impl ::aws_smithy_http_server::operation::OperationShape for StartSnapshot {
  199    199   
    const ID: ::aws_smithy_http_server::shape_id::ShapeId =
  200    200   
        ::aws_smithy_http_server::shape_id::ShapeId::new(
  201         -
            "com.amazonaws.ebs#CompleteSnapshot",
         201  +
            "com.amazonaws.ebs#StartSnapshot",
  202    202   
            "com.amazonaws.ebs",
  203         -
            "CompleteSnapshot",
         203  +
            "StartSnapshot",
  204    204   
        );
  205    205   
  206         -
    type Input = crate::input::CompleteSnapshotInput;
  207         -
    type Output = crate::output::CompleteSnapshotOutput;
  208         -
    type Error = crate::error::CompleteSnapshotError;
         206  +
    type Input = crate::input::StartSnapshotInput;
         207  +
    type Output = crate::output::StartSnapshotOutput;
         208  +
    type Error = crate::error::StartSnapshotError;
  209    209   
}
  210    210   
  211         -
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for CompleteSnapshot {
         211  +
impl ::aws_smithy_http_server::instrumentation::sensitivity::Sensitivity for StartSnapshot {
  212    212   
    type RequestFmt = ::aws_smithy_http_server::instrumentation::sensitivity::RequestFmt<
  213    213   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  214    214   
        ::aws_smithy_http_server::instrumentation::sensitivity::uri::MakeUri<
  215    215   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  216    216   
            ::aws_smithy_http_server::instrumentation::MakeIdentity,
  217    217   
        >,
  218    218   
    >;
  219    219   
    type ResponseFmt = ::aws_smithy_http_server::instrumentation::sensitivity::ResponseFmt<
  220    220   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,
  221    221   
        ::aws_smithy_http_server::instrumentation::MakeIdentity,

tmp-codegen-diff/codegen-server-test/ebs/rust-server-codegen/src/output.rs

@@ -1,1 +144,140 @@
    1      1   
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
#[allow(missing_docs)] // documentation missing in model
    3         -
#[derive(::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::hash::Hash)]
    4         -
pub struct StartSnapshotOutput {
    5         -
    /// <p>The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html"> Tagging your Amazon EC2 resources</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
    6         -
    pub tags: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
    7         -
    /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) used to encrypt the snapshot.</p>
    8         -
    pub kms_key_arn: ::std::option::Option<crate::model::KmsKeyArn>,
    9         -
    /// <p>The AWS account ID of the snapshot owner.</p>
   10         -
    pub owner_id: ::std::option::Option<crate::model::OwnerId>,
   11         -
    /// <p>The size of the volume, in GiB.</p>
   12         -
    pub volume_size: ::std::option::Option<crate::model::VolumeSize>,
   13         -
    /// <p>The ID of the parent snapshot.</p>
   14         -
    pub parent_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
   15         -
    /// <p>The description of the snapshot.</p>
   16         -
    pub description: ::std::option::Option<crate::model::Description>,
   17         -
    /// <p>The ID of the snapshot.</p>
   18         -
    pub snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
   19         -
    /// <p>The size of the blocks in the snapshot, in bytes.</p>
   20         -
    pub block_size: ::std::option::Option<i32>,
   21         -
    /// <p>The timestamp when the snapshot was created.</p>
   22         -
    pub start_time: ::std::option::Option<::aws_smithy_types::DateTime>,
           3  +
#[derive(
           4  +
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
           5  +
)]
           6  +
pub struct CompleteSnapshotOutput {
   23      7   
    /// <p>The status of the snapshot.</p>
   24      8   
    pub status: ::std::option::Option<crate::model::Status>,
   25      9   
}
   26         -
impl StartSnapshotOutput {
   27         -
    /// <p>The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html"> Tagging your Amazon EC2 resources</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
   28         -
    pub fn tags(&self) -> ::std::option::Option<&[crate::model::Tag]> {
   29         -
        self.tags.as_deref()
   30         -
    }
   31         -
    /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) used to encrypt the snapshot.</p>
   32         -
    pub fn kms_key_arn(&self) -> ::std::option::Option<&crate::model::KmsKeyArn> {
   33         -
        self.kms_key_arn.as_ref()
   34         -
    }
   35         -
    /// <p>The AWS account ID of the snapshot owner.</p>
   36         -
    pub fn owner_id(&self) -> ::std::option::Option<&crate::model::OwnerId> {
   37         -
        self.owner_id.as_ref()
   38         -
    }
   39         -
    /// <p>The size of the volume, in GiB.</p>
   40         -
    pub fn volume_size(&self) -> ::std::option::Option<&crate::model::VolumeSize> {
   41         -
        self.volume_size.as_ref()
   42         -
    }
   43         -
    /// <p>The ID of the parent snapshot.</p>
   44         -
    pub fn parent_snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
   45         -
        self.parent_snapshot_id.as_ref()
          10  +
impl CompleteSnapshotOutput {
          11  +
    /// <p>The status of the snapshot.</p>
          12  +
    pub fn status(&self) -> ::std::option::Option<&crate::model::Status> {
          13  +
        self.status.as_ref()
   46     14   
    }
   47         -
    /// <p>The description of the snapshot.</p>
   48         -
    pub fn description(&self) -> ::std::option::Option<&crate::model::Description> {
   49         -
        self.description.as_ref()
          15  +
}
          16  +
impl CompleteSnapshotOutput {
          17  +
    /// Creates a new builder-style object to manufacture [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
          18  +
    pub fn builder() -> crate::output::complete_snapshot_output::Builder {
          19  +
        crate::output::complete_snapshot_output::Builder::default()
   50     20   
    }
   51         -
    /// <p>The ID of the snapshot.</p>
   52         -
    pub fn snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
   53         -
        self.snapshot_id.as_ref()
          21  +
}
          22  +
          23  +
#[allow(missing_docs)] // documentation missing in model
          24  +
pub struct GetSnapshotBlockOutput {
          25  +
    /// <p>The size of the data in the block.</p>
          26  +
    pub data_length: ::std::option::Option<i32>,
          27  +
    /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
          28  +
    pub checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
          29  +
    /// <p>The checksum generated for the block, which is Base64 encoded.</p>
          30  +
    pub checksum: ::std::option::Option<crate::model::Checksum>,
          31  +
    /// <p>The data content of the block.</p>
          32  +
    pub block_data: ::aws_smithy_types::byte_stream::ByteStream,
          33  +
}
          34  +
impl GetSnapshotBlockOutput {
          35  +
    /// <p>The size of the data in the block.</p>
          36  +
    pub fn data_length(&self) -> ::std::option::Option<i32> {
          37  +
        self.data_length
   54     38   
    }
   55         -
    /// <p>The size of the blocks in the snapshot, in bytes.</p>
   56         -
    pub fn block_size(&self) -> ::std::option::Option<i32> {
   57         -
        self.block_size
          39  +
    /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
          40  +
    pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::model::ChecksumAlgorithm> {
          41  +
        self.checksum_algorithm.as_ref()
   58     42   
    }
   59         -
    /// <p>The timestamp when the snapshot was created.</p>
   60         -
    pub fn start_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
   61         -
        self.start_time.as_ref()
          43  +
    /// <p>The checksum generated for the block, which is Base64 encoded.</p>
          44  +
    pub fn checksum(&self) -> ::std::option::Option<&crate::model::Checksum> {
          45  +
        self.checksum.as_ref()
   62     46   
    }
   63         -
    /// <p>The status of the snapshot.</p>
   64         -
    pub fn status(&self) -> ::std::option::Option<&crate::model::Status> {
   65         -
        self.status.as_ref()
          47  +
    /// <p>The data content of the block.</p>
          48  +
    pub fn block_data(&self) -> &::aws_smithy_types::byte_stream::ByteStream {
          49  +
        &self.block_data
   66     50   
    }
   67     51   
}
   68         -
impl ::std::fmt::Debug for StartSnapshotOutput {
          52  +
impl ::std::fmt::Debug for GetSnapshotBlockOutput {
   69     53   
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
   70         -
        let mut formatter = f.debug_struct("StartSnapshotOutput");
   71         -
        formatter.field("tags", &self.tags);
   72         -
        formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
   73         -
        formatter.field("owner_id", &self.owner_id);
   74         -
        formatter.field("volume_size", &self.volume_size);
   75         -
        formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
   76         -
        formatter.field("description", &self.description);
   77         -
        formatter.field("snapshot_id", &self.snapshot_id);
   78         -
        formatter.field("block_size", &self.block_size);
   79         -
        formatter.field("start_time", &self.start_time);
   80         -
        formatter.field("status", &self.status);
          54  +
        let mut formatter = f.debug_struct("GetSnapshotBlockOutput");
          55  +
        formatter.field("data_length", &self.data_length);
          56  +
        formatter.field("checksum_algorithm", &self.checksum_algorithm);
          57  +
        formatter.field("checksum", &self.checksum);
          58  +
        formatter.field("block_data", &"*** Sensitive Data Redacted ***");
   81     59   
        formatter.finish()
   82     60   
    }
   83     61   
}
   84         -
impl StartSnapshotOutput {
   85         -
    /// Creates a new builder-style object to manufacture [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
   86         -
    pub fn builder() -> crate::output::start_snapshot_output::Builder {
   87         -
        crate::output::start_snapshot_output::Builder::default()
          62  +
impl GetSnapshotBlockOutput {
          63  +
    /// Creates a new builder-style object to manufacture [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
          64  +
    pub fn builder() -> crate::output::get_snapshot_block_output::Builder {
          65  +
        crate::output::get_snapshot_block_output::Builder::default()
   88     66   
    }
   89     67   
}
   90     68   
   91     69   
#[allow(missing_docs)] // documentation missing in model
   92     70   
#[derive(
   93     71   
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
   94     72   
)]
   95         -
pub struct PutSnapshotBlockOutput {
   96         -
    /// <p>The algorithm used by Amazon EBS to generate the checksum.</p>
   97         -
    pub checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
   98         -
    /// <p>The SHA256 checksum generated for the block data by Amazon EBS.</p>
   99         -
    pub checksum: ::std::option::Option<crate::model::Checksum>,
          73  +
pub struct ListChangedBlocksOutput {
          74  +
    /// <p>The size of the block.</p>
          75  +
    pub block_size: ::std::option::Option<i32>,
          76  +
    /// <p>The time when the <code>BlockToken</code> expires.</p>
          77  +
    pub expiry_time: ::std::option::Option<::aws_smithy_types::DateTime>,
          78  +
    /// <p>The size of the volume in GB.</p>
          79  +
    pub volume_size: ::std::option::Option<crate::model::VolumeSize>,
          80  +
    /// <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
          81  +
    pub next_token: ::std::option::Option<crate::model::PageToken>,
          82  +
    /// <p>An array of objects containing information about the changed blocks.</p>
          83  +
    pub changed_blocks: ::std::option::Option<::std::vec::Vec<crate::model::ChangedBlock>>,
  100     84   
}
  101         -
impl PutSnapshotBlockOutput {
  102         -
    /// <p>The algorithm used by Amazon EBS to generate the checksum.</p>
  103         -
    pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::model::ChecksumAlgorithm> {
  104         -
        self.checksum_algorithm.as_ref()
          85  +
impl ListChangedBlocksOutput {
          86  +
    /// <p>The size of the block.</p>
          87  +
    pub fn block_size(&self) -> ::std::option::Option<i32> {
          88  +
        self.block_size
  105     89   
    }
  106         -
    /// <p>The SHA256 checksum generated for the block data by Amazon EBS.</p>
  107         -
    pub fn checksum(&self) -> ::std::option::Option<&crate::model::Checksum> {
  108         -
        self.checksum.as_ref()
          90  +
    /// <p>The time when the <code>BlockToken</code> expires.</p>
          91  +
    pub fn expiry_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
          92  +
        self.expiry_time.as_ref()
          93  +
    }
          94  +
    /// <p>The size of the volume in GB.</p>
          95  +
    pub fn volume_size(&self) -> ::std::option::Option<&crate::model::VolumeSize> {
          96  +
        self.volume_size.as_ref()
          97  +
    }
          98  +
    /// <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
          99  +
    pub fn next_token(&self) -> ::std::option::Option<&crate::model::PageToken> {
         100  +
        self.next_token.as_ref()
         101  +
    }
         102  +
    /// <p>An array of objects containing information about the changed blocks.</p>
         103  +
    pub fn changed_blocks(&self) -> ::std::option::Option<&[crate::model::ChangedBlock]> {
         104  +
        self.changed_blocks.as_deref()
  109    105   
    }
  110    106   
}
  111         -
impl PutSnapshotBlockOutput {
  112         -
    /// Creates a new builder-style object to manufacture [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
  113         -
    pub fn builder() -> crate::output::put_snapshot_block_output::Builder {
  114         -
        crate::output::put_snapshot_block_output::Builder::default()
         107  +
impl ListChangedBlocksOutput {
         108  +
    /// Creates a new builder-style object to manufacture [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
         109  +
    pub fn builder() -> crate::output::list_changed_blocks_output::Builder {
         110  +
        crate::output::list_changed_blocks_output::Builder::default()
  115    111   
    }
  116    112   
}
  117    113   
  118    114   
#[allow(missing_docs)] // documentation missing in model
  119    115   
#[derive(::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::hash::Hash)]
  120    116   
pub struct ListSnapshotBlocksOutput {
  121    117   
    /// <p>The size of the volume in GB.</p>
  122    118   
    pub volume_size: ::std::option::Option<crate::model::VolumeSize>,
  123    119   
    /// <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
  124    120   
    pub next_token: ::std::option::Option<crate::model::PageToken>,
@@ -146,142 +478,470 @@
  166    162   
    /// Creates a new builder-style object to manufacture [`ListSnapshotBlocksOutput`](crate::output::ListSnapshotBlocksOutput).
  167    163   
    pub fn builder() -> crate::output::list_snapshot_blocks_output::Builder {
  168    164   
        crate::output::list_snapshot_blocks_output::Builder::default()
  169    165   
    }
  170    166   
}
  171    167   
  172    168   
#[allow(missing_docs)] // documentation missing in model
  173    169   
#[derive(
  174    170   
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
  175    171   
)]
  176         -
pub struct ListChangedBlocksOutput {
  177         -
    /// <p>The size of the block.</p>
  178         -
    pub block_size: ::std::option::Option<i32>,
  179         -
    /// <p>The time when the <code>BlockToken</code> expires.</p>
  180         -
    pub expiry_time: ::std::option::Option<::aws_smithy_types::DateTime>,
  181         -
    /// <p>The size of the volume in GB.</p>
  182         -
    pub volume_size: ::std::option::Option<crate::model::VolumeSize>,
  183         -
    /// <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
  184         -
    pub next_token: ::std::option::Option<crate::model::PageToken>,
  185         -
    /// <p>An array of objects containing information about the changed blocks.</p>
  186         -
    pub changed_blocks: ::std::option::Option<::std::vec::Vec<crate::model::ChangedBlock>>,
  187         -
}
  188         -
impl ListChangedBlocksOutput {
  189         -
    /// <p>The size of the block.</p>
  190         -
    pub fn block_size(&self) -> ::std::option::Option<i32> {
  191         -
        self.block_size
  192         -
    }
  193         -
    /// <p>The time when the <code>BlockToken</code> expires.</p>
  194         -
    pub fn expiry_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
  195         -
        self.expiry_time.as_ref()
  196         -
    }
  197         -
    /// <p>The size of the volume in GB.</p>
  198         -
    pub fn volume_size(&self) -> ::std::option::Option<&crate::model::VolumeSize> {
  199         -
        self.volume_size.as_ref()
  200         -
    }
  201         -
    /// <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
  202         -
    pub fn next_token(&self) -> ::std::option::Option<&crate::model::PageToken> {
  203         -
        self.next_token.as_ref()
  204         -
    }
  205         -
    /// <p>An array of objects containing information about the changed blocks.</p>
  206         -
    pub fn changed_blocks(&self) -> ::std::option::Option<&[crate::model::ChangedBlock]> {
  207         -
        self.changed_blocks.as_deref()
  208         -
    }
  209         -
}
  210         -
impl ListChangedBlocksOutput {
  211         -
    /// Creates a new builder-style object to manufacture [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
  212         -
    pub fn builder() -> crate::output::list_changed_blocks_output::Builder {
  213         -
        crate::output::list_changed_blocks_output::Builder::default()
  214         -
    }
  215         -
}
  216         -
  217         -
#[allow(missing_docs)] // documentation missing in model
  218         -
pub struct GetSnapshotBlockOutput {
  219         -
    /// <p>The size of the data in the block.</p>
  220         -
    pub data_length: ::std::option::Option<i32>,
  221         -
    /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
         172  +
pub struct PutSnapshotBlockOutput {
         173  +
    /// <p>The algorithm used by Amazon EBS to generate the checksum.</p>
  222    174   
    pub checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  223         -
    /// <p>The checksum generated for the block, which is Base64 encoded.</p>
         175  +
    /// <p>The SHA256 checksum generated for the block data by Amazon EBS.</p>
  224    176   
    pub checksum: ::std::option::Option<crate::model::Checksum>,
  225         -
    /// <p>The data content of the block.</p>
  226         -
    pub block_data: ::aws_smithy_types::byte_stream::ByteStream,
  227    177   
}
  228         -
impl GetSnapshotBlockOutput {
  229         -
    /// <p>The size of the data in the block.</p>
  230         -
    pub fn data_length(&self) -> ::std::option::Option<i32> {
  231         -
        self.data_length
  232         -
    }
  233         -
    /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
         178  +
impl PutSnapshotBlockOutput {
         179  +
    /// <p>The algorithm used by Amazon EBS to generate the checksum.</p>
  234    180   
    pub fn checksum_algorithm(&self) -> ::std::option::Option<&crate::model::ChecksumAlgorithm> {
  235    181   
        self.checksum_algorithm.as_ref()
  236    182   
    }
  237         -
    /// <p>The checksum generated for the block, which is Base64 encoded.</p>
         183  +
    /// <p>The SHA256 checksum generated for the block data by Amazon EBS.</p>
  238    184   
    pub fn checksum(&self) -> ::std::option::Option<&crate::model::Checksum> {
  239    185   
        self.checksum.as_ref()
  240    186   
    }
  241         -
    /// <p>The data content of the block.</p>
  242         -
    pub fn block_data(&self) -> &::aws_smithy_types::byte_stream::ByteStream {
  243         -
        &self.block_data
  244         -
    }
  245         -
}
  246         -
impl ::std::fmt::Debug for GetSnapshotBlockOutput {
  247         -
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
  248         -
        let mut formatter = f.debug_struct("GetSnapshotBlockOutput");
  249         -
        formatter.field("data_length", &self.data_length);
  250         -
        formatter.field("checksum_algorithm", &self.checksum_algorithm);
  251         -
        formatter.field("checksum", &self.checksum);
  252         -
        formatter.field("block_data", &"*** Sensitive Data Redacted ***");
  253         -
        formatter.finish()
  254         -
    }
  255    187   
}
  256         -
impl GetSnapshotBlockOutput {
  257         -
    /// Creates a new builder-style object to manufacture [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
  258         -
    pub fn builder() -> crate::output::get_snapshot_block_output::Builder {
  259         -
        crate::output::get_snapshot_block_output::Builder::default()
         188  +
impl PutSnapshotBlockOutput {
         189  +
    /// Creates a new builder-style object to manufacture [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
         190  +
    pub fn builder() -> crate::output::put_snapshot_block_output::Builder {
         191  +
        crate::output::put_snapshot_block_output::Builder::default()
  260    192   
    }
  261    193   
}
  262    194   
  263    195   
#[allow(missing_docs)] // documentation missing in model
  264         -
#[derive(
  265         -
    ::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::fmt::Debug, ::std::hash::Hash,
  266         -
)]
  267         -
pub struct CompleteSnapshotOutput {
         196  +
#[derive(::std::clone::Clone, ::std::cmp::Eq, ::std::cmp::PartialEq, ::std::hash::Hash)]
         197  +
pub struct StartSnapshotOutput {
         198  +
    /// <p>The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html"> Tagging your Amazon EC2 resources</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
         199  +
    pub tags: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
         200  +
    /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) used to encrypt the snapshot.</p>
         201  +
    pub kms_key_arn: ::std::option::Option<crate::model::KmsKeyArn>,
         202  +
    /// <p>The AWS account ID of the snapshot owner.</p>
         203  +
    pub owner_id: ::std::option::Option<crate::model::OwnerId>,
         204  +
    /// <p>The size of the volume, in GiB.</p>
         205  +
    pub volume_size: ::std::option::Option<crate::model::VolumeSize>,
         206  +
    /// <p>The ID of the parent snapshot.</p>
         207  +
    pub parent_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
         208  +
    /// <p>The description of the snapshot.</p>
         209  +
    pub description: ::std::option::Option<crate::model::Description>,
         210  +
    /// <p>The ID of the snapshot.</p>
         211  +
    pub snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
         212  +
    /// <p>The size of the blocks in the snapshot, in bytes.</p>
         213  +
    pub block_size: ::std::option::Option<i32>,
         214  +
    /// <p>The timestamp when the snapshot was created.</p>
         215  +
    pub start_time: ::std::option::Option<::aws_smithy_types::DateTime>,
  268    216   
    /// <p>The status of the snapshot.</p>
  269    217   
    pub status: ::std::option::Option<crate::model::Status>,
  270    218   
}
  271         -
impl CompleteSnapshotOutput {
         219  +
impl StartSnapshotOutput {
         220  +
    /// <p>The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html"> Tagging your Amazon EC2 resources</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
         221  +
    pub fn tags(&self) -> ::std::option::Option<&[crate::model::Tag]> {
         222  +
        self.tags.as_deref()
         223  +
    }
         224  +
    /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) used to encrypt the snapshot.</p>
         225  +
    pub fn kms_key_arn(&self) -> ::std::option::Option<&crate::model::KmsKeyArn> {
         226  +
        self.kms_key_arn.as_ref()
         227  +
    }
         228  +
    /// <p>The AWS account ID of the snapshot owner.</p>
         229  +
    pub fn owner_id(&self) -> ::std::option::Option<&crate::model::OwnerId> {
         230  +
        self.owner_id.as_ref()
         231  +
    }
         232  +
    /// <p>The size of the volume, in GiB.</p>
         233  +
    pub fn volume_size(&self) -> ::std::option::Option<&crate::model::VolumeSize> {
         234  +
        self.volume_size.as_ref()
         235  +
    }
         236  +
    /// <p>The ID of the parent snapshot.</p>
         237  +
    pub fn parent_snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
         238  +
        self.parent_snapshot_id.as_ref()
         239  +
    }
         240  +
    /// <p>The description of the snapshot.</p>
         241  +
    pub fn description(&self) -> ::std::option::Option<&crate::model::Description> {
         242  +
        self.description.as_ref()
         243  +
    }
         244  +
    /// <p>The ID of the snapshot.</p>
         245  +
    pub fn snapshot_id(&self) -> ::std::option::Option<&crate::model::SnapshotId> {
         246  +
        self.snapshot_id.as_ref()
         247  +
    }
         248  +
    /// <p>The size of the blocks in the snapshot, in bytes.</p>
         249  +
    pub fn block_size(&self) -> ::std::option::Option<i32> {
         250  +
        self.block_size
         251  +
    }
         252  +
    /// <p>The timestamp when the snapshot was created.</p>
         253  +
    pub fn start_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
         254  +
        self.start_time.as_ref()
         255  +
    }
  272    256   
    /// <p>The status of the snapshot.</p>
  273    257   
    pub fn status(&self) -> ::std::option::Option<&crate::model::Status> {
  274    258   
        self.status.as_ref()
  275    259   
    }
  276    260   
}
  277         -
impl CompleteSnapshotOutput {
  278         -
    /// Creates a new builder-style object to manufacture [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
  279         -
    pub fn builder() -> crate::output::complete_snapshot_output::Builder {
  280         -
        crate::output::complete_snapshot_output::Builder::default()
         261  +
impl ::std::fmt::Debug for StartSnapshotOutput {
         262  +
    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         263  +
        let mut formatter = f.debug_struct("StartSnapshotOutput");
         264  +
        formatter.field("tags", &self.tags);
         265  +
        formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
         266  +
        formatter.field("owner_id", &self.owner_id);
         267  +
        formatter.field("volume_size", &self.volume_size);
         268  +
        formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
         269  +
        formatter.field("description", &self.description);
         270  +
        formatter.field("snapshot_id", &self.snapshot_id);
         271  +
        formatter.field("block_size", &self.block_size);
         272  +
        formatter.field("start_time", &self.start_time);
         273  +
        formatter.field("status", &self.status);
         274  +
        formatter.finish()
  281    275   
    }
  282    276   
}
  283         -
/// See [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
  284         -
pub mod start_snapshot_output {
         277  +
impl StartSnapshotOutput {
         278  +
    /// Creates a new builder-style object to manufacture [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
         279  +
    pub fn builder() -> crate::output::start_snapshot_output::Builder {
         280  +
        crate::output::start_snapshot_output::Builder::default()
         281  +
    }
         282  +
}
         283  +
/// See [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
         284  +
pub mod complete_snapshot_output {
  285    285   
  286         -
    impl ::std::convert::From<Builder> for crate::output::StartSnapshotOutput {
         286  +
    impl ::std::convert::From<Builder> for crate::output::CompleteSnapshotOutput {
  287    287   
        fn from(builder: Builder) -> Self {
  288    288   
            builder.build()
  289    289   
        }
  290    290   
    }
  291         -
    /// A builder for [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
  292         -
    #[derive(::std::clone::Clone, ::std::default::Default)]
         291  +
    /// A builder for [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
         292  +
    #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
  293    293   
    pub struct Builder {
  294         -
        pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
  295         -
        pub(crate) kms_key_arn: ::std::option::Option<crate::model::KmsKeyArn>,
  296         -
        pub(crate) owner_id: ::std::option::Option<crate::model::OwnerId>,
  297         -
        pub(crate) volume_size: ::std::option::Option<crate::model::VolumeSize>,
  298         -
        pub(crate) parent_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
  299         -
        pub(crate) description: ::std::option::Option<crate::model::Description>,
  300         -
        pub(crate) snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
  301         -
        pub(crate) block_size: ::std::option::Option<i32>,
  302         -
        pub(crate) start_time: ::std::option::Option<::aws_smithy_types::DateTime>,
  303    294   
        pub(crate) status: ::std::option::Option<crate::model::Status>,
  304    295   
    }
  305    296   
    impl Builder {
  306         -
        /// <p>The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html"> Tagging your Amazon EC2 resources</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
  307         -
        pub fn tags(
  308         -
            mut self,
  309         -
            input: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
  310         -
        ) -> Self {
  311         -
            self.tags = input;
         297  +
        /// <p>The status of the snapshot.</p>
         298  +
        pub fn status(mut self, input: ::std::option::Option<crate::model::Status>) -> Self {
         299  +
            self.status = input;
  312    300   
            self
  313    301   
        }
  314         -
        /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) used to encrypt the snapshot.</p>
  315         -
        pub fn kms_key_arn(
  316         -
            mut self,
  317         -
            input: ::std::option::Option<crate::model::KmsKeyArn>,
  318         -
        ) -> Self {
  319         -
            self.kms_key_arn = input;
  320         -
            self
         302  +
        /// Consumes the builder and constructs a [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
         303  +
        pub fn build(self) -> crate::output::CompleteSnapshotOutput {
         304  +
            self.build_enforcing_all_constraints()
  321    305   
        }
  322         -
        /// <p>The AWS account ID of the snapshot owner.</p>
  323         -
        pub fn owner_id(mut self, input: ::std::option::Option<crate::model::OwnerId>) -> Self {
  324         -
            self.owner_id = input;
  325         -
            self
         306  +
        fn build_enforcing_all_constraints(self) -> crate::output::CompleteSnapshotOutput {
         307  +
            crate::output::CompleteSnapshotOutput {
         308  +
                status: self.status,
  326    309   
            }
  327         -
        /// <p>The size of the volume, in GiB.</p>
  328         -
        pub fn volume_size(
  329         -
            mut self,
  330         -
            input: ::std::option::Option<crate::model::VolumeSize>,
  331         -
        ) -> Self {
  332         -
            self.volume_size = input;
  333         -
            self
  334    310   
        }
  335         -
        /// <p>The ID of the parent snapshot.</p>
  336         -
        pub fn parent_snapshot_id(
  337         -
            mut self,
  338         -
            input: ::std::option::Option<crate::model::SnapshotId>,
  339         -
        ) -> Self {
  340         -
            self.parent_snapshot_id = input;
  341         -
            self
  342    311   
    }
  343         -
        /// <p>The description of the snapshot.</p>
  344         -
        pub fn description(
  345         -
            mut self,
  346         -
            input: ::std::option::Option<crate::model::Description>,
  347         -
        ) -> Self {
  348         -
            self.description = input;
  349         -
            self
         312  +
}
         313  +
/// See [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
         314  +
pub mod get_snapshot_block_output {
         315  +
         316  +
    impl ::std::convert::From<Builder> for crate::output::GetSnapshotBlockOutput {
         317  +
        fn from(builder: Builder) -> Self {
         318  +
            builder.build()
  350    319   
        }
  351         -
        /// <p>The ID of the snapshot.</p>
  352         -
        pub fn snapshot_id(
  353         -
            mut self,
  354         -
            input: ::std::option::Option<crate::model::SnapshotId>,
  355         -
        ) -> Self {
  356         -
            self.snapshot_id = input;
  357         -
            self
  358    320   
    }
  359         -
        /// <p>The size of the blocks in the snapshot, in bytes.</p>
  360         -
        pub fn block_size(mut self, input: ::std::option::Option<i32>) -> Self {
  361         -
            self.block_size = input;
         321  +
    /// A builder for [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
         322  +
    #[derive(::std::default::Default)]
         323  +
    pub struct Builder {
         324  +
        pub(crate) data_length: ::std::option::Option<i32>,
         325  +
        pub(crate) checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
         326  +
        pub(crate) checksum: ::std::option::Option<crate::model::Checksum>,
         327  +
        pub(crate) block_data: ::std::option::Option<::aws_smithy_types::byte_stream::ByteStream>,
         328  +
    }
         329  +
    impl Builder {
         330  +
        /// <p>The size of the data in the block.</p>
         331  +
        pub fn data_length(mut self, input: ::std::option::Option<i32>) -> Self {
         332  +
            self.data_length = input;
  362    333   
            self
  363    334   
        }
  364         -
        /// <p>The timestamp when the snapshot was created.</p>
  365         -
        pub fn start_time(
         335  +
        /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
         336  +
        pub fn checksum_algorithm(
  366    337   
            mut self,
  367         -
            input: ::std::option::Option<::aws_smithy_types::DateTime>,
         338  +
            input: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  368    339   
        ) -> Self {
  369         -
            self.start_time = input;
         340  +
            self.checksum_algorithm = input;
  370    341   
            self
  371    342   
        }
  372         -
        /// <p>The status of the snapshot.</p>
  373         -
        pub fn status(mut self, input: ::std::option::Option<crate::model::Status>) -> Self {
  374         -
            self.status = input;
         343  +
        /// <p>The checksum generated for the block, which is Base64 encoded.</p>
         344  +
        pub fn checksum(mut self, input: ::std::option::Option<crate::model::Checksum>) -> Self {
         345  +
            self.checksum = input;
  375    346   
            self
  376    347   
        }
  377         -
        /// Consumes the builder and constructs a [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
  378         -
        pub fn build(self) -> crate::output::StartSnapshotOutput {
         348  +
        /// <p>The data content of the block.</p>
         349  +
        pub fn block_data(mut self, input: ::aws_smithy_types::byte_stream::ByteStream) -> Self {
         350  +
            self.block_data = Some(input);
         351  +
            self
         352  +
        }
         353  +
        /// Consumes the builder and constructs a [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
         354  +
        pub fn build(self) -> crate::output::GetSnapshotBlockOutput {
  379    355   
            self.build_enforcing_all_constraints()
  380    356   
        }
  381         -
        fn build_enforcing_all_constraints(self) -> crate::output::StartSnapshotOutput {
  382         -
            crate::output::StartSnapshotOutput {
  383         -
                tags: self.tags,
  384         -
                kms_key_arn: self.kms_key_arn,
  385         -
                owner_id: self.owner_id,
  386         -
                volume_size: self.volume_size,
  387         -
                parent_snapshot_id: self.parent_snapshot_id,
  388         -
                description: self.description,
  389         -
                snapshot_id: self.snapshot_id,
  390         -
                block_size: self.block_size,
  391         -
                start_time: self.start_time,
  392         -
                status: self.status,
         357  +
        fn build_enforcing_all_constraints(self) -> crate::output::GetSnapshotBlockOutput {
         358  +
            crate::output::GetSnapshotBlockOutput {
         359  +
                data_length: self.data_length,
         360  +
                checksum_algorithm: self.checksum_algorithm,
         361  +
                checksum: self.checksum,
         362  +
                block_data: self.block_data.unwrap_or_default(),
  393    363   
            }
  394    364   
        }
  395    365   
    }
  396    366   
    impl ::std::fmt::Debug for Builder {
  397    367   
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
  398    368   
            let mut formatter = f.debug_struct("Builder");
  399         -
            formatter.field("tags", &self.tags);
  400         -
            formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
  401         -
            formatter.field("owner_id", &self.owner_id);
  402         -
            formatter.field("volume_size", &self.volume_size);
  403         -
            formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
  404         -
            formatter.field("description", &self.description);
  405         -
            formatter.field("snapshot_id", &self.snapshot_id);
  406         -
            formatter.field("block_size", &self.block_size);
  407         -
            formatter.field("start_time", &self.start_time);
  408         -
            formatter.field("status", &self.status);
         369  +
            formatter.field("data_length", &self.data_length);
         370  +
            formatter.field("checksum_algorithm", &self.checksum_algorithm);
         371  +
            formatter.field("checksum", &self.checksum);
         372  +
            formatter.field("block_data", &"*** Sensitive Data Redacted ***");
  409    373   
            formatter.finish()
  410    374   
        }
  411    375   
    }
  412    376   
}
  413         -
/// See [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
  414         -
pub mod put_snapshot_block_output {
         377  +
/// See [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
         378  +
pub mod list_changed_blocks_output {
  415    379   
  416         -
    impl ::std::convert::From<Builder> for crate::output::PutSnapshotBlockOutput {
         380  +
    impl ::std::convert::From<Builder> for crate::output::ListChangedBlocksOutput {
  417    381   
        fn from(builder: Builder) -> Self {
  418    382   
            builder.build()
  419    383   
        }
  420    384   
    }
  421         -
    /// A builder for [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
         385  +
    /// A builder for [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
  422    386   
    #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
  423    387   
    pub struct Builder {
  424         -
        pub(crate) checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  425         -
        pub(crate) checksum: ::std::option::Option<crate::model::Checksum>,
         388  +
        pub(crate) block_size: ::std::option::Option<i32>,
         389  +
        pub(crate) expiry_time: ::std::option::Option<::aws_smithy_types::DateTime>,
         390  +
        pub(crate) volume_size: ::std::option::Option<crate::model::VolumeSize>,
         391  +
        pub(crate) next_token: ::std::option::Option<crate::model::PageToken>,
         392  +
        pub(crate) changed_blocks:
         393  +
            ::std::option::Option<::std::vec::Vec<crate::model::ChangedBlock>>,
  426    394   
    }
  427    395   
    impl Builder {
  428         -
        /// <p>The algorithm used by Amazon EBS to generate the checksum.</p>
  429         -
        pub fn checksum_algorithm(
         396  +
        /// <p>The size of the block.</p>
         397  +
        pub fn block_size(mut self, input: ::std::option::Option<i32>) -> Self {
         398  +
            self.block_size = input;
         399  +
            self
         400  +
        }
         401  +
        /// <p>The time when the <code>BlockToken</code> expires.</p>
         402  +
        pub fn expiry_time(
         403  +
            mut self,
         404  +
            input: ::std::option::Option<::aws_smithy_types::DateTime>,
         405  +
        ) -> Self {
         406  +
            self.expiry_time = input;
         407  +
            self
         408  +
        }
         409  +
        /// <p>The size of the volume in GB.</p>
         410  +
        pub fn volume_size(
  430    411   
            mut self,
  431         -
            input: ::std::option::Option<crate::model::ChecksumAlgorithm>,
         412  +
            input: ::std::option::Option<crate::model::VolumeSize>,
  432    413   
        ) -> Self {
  433         -
            self.checksum_algorithm = input;
         414  +
            self.volume_size = input;
  434    415   
            self
  435    416   
        }
  436         -
        /// <p>The SHA256 checksum generated for the block data by Amazon EBS.</p>
  437         -
        pub fn checksum(mut self, input: ::std::option::Option<crate::model::Checksum>) -> Self {
  438         -
            self.checksum = input;
         417  +
        /// <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
         418  +
        pub fn next_token(mut self, input: ::std::option::Option<crate::model::PageToken>) -> Self {
         419  +
            self.next_token = input;
  439    420   
            self
  440    421   
        }
  441         -
        /// Consumes the builder and constructs a [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
  442         -
        pub fn build(self) -> crate::output::PutSnapshotBlockOutput {
         422  +
        /// <p>An array of objects containing information about the changed blocks.</p>
         423  +
        pub fn changed_blocks(
         424  +
            mut self,
         425  +
            input: ::std::option::Option<::std::vec::Vec<crate::model::ChangedBlock>>,
         426  +
        ) -> Self {
         427  +
            self.changed_blocks = input;
         428  +
            self
         429  +
        }
         430  +
        /// Consumes the builder and constructs a [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
         431  +
        pub fn build(self) -> crate::output::ListChangedBlocksOutput {
  443    432   
            self.build_enforcing_all_constraints()
  444    433   
        }
  445         -
        fn build_enforcing_all_constraints(self) -> crate::output::PutSnapshotBlockOutput {
  446         -
            crate::output::PutSnapshotBlockOutput {
  447         -
                checksum_algorithm: self.checksum_algorithm,
  448         -
                checksum: self.checksum,
         434  +
        fn build_enforcing_all_constraints(self) -> crate::output::ListChangedBlocksOutput {
         435  +
            crate::output::ListChangedBlocksOutput {
         436  +
                block_size: self.block_size,
         437  +
                expiry_time: self.expiry_time,
         438  +
                volume_size: self.volume_size,
         439  +
                next_token: self.next_token,
         440  +
                changed_blocks: self.changed_blocks,
  449    441   
            }
  450    442   
        }
  451    443   
    }
  452    444   
}
  453    445   
/// See [`ListSnapshotBlocksOutput`](crate::output::ListSnapshotBlocksOutput).
  454    446   
pub mod list_snapshot_blocks_output {
  455    447   
  456    448   
    impl ::std::convert::From<Builder> for crate::output::ListSnapshotBlocksOutput {
  457    449   
        fn from(builder: Builder) -> Self {
  458    450   
            builder.build()
@@ -501,493 +692,692 @@
  521    513   
            let mut formatter = f.debug_struct("Builder");
  522    514   
            formatter.field("volume_size", &self.volume_size);
  523    515   
            formatter.field("next_token", &self.next_token);
  524    516   
            formatter.field("expiry_time", &self.expiry_time);
  525    517   
            formatter.field("blocks", &"*** Sensitive Data Redacted ***");
  526    518   
            formatter.field("block_size", &self.block_size);
  527    519   
            formatter.finish()
  528    520   
        }
  529    521   
    }
  530    522   
}
  531         -
/// See [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
  532         -
pub mod list_changed_blocks_output {
         523  +
/// See [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
         524  +
pub mod put_snapshot_block_output {
  533    525   
  534         -
    impl ::std::convert::From<Builder> for crate::output::ListChangedBlocksOutput {
         526  +
    impl ::std::convert::From<Builder> for crate::output::PutSnapshotBlockOutput {
  535    527   
        fn from(builder: Builder) -> Self {
  536    528   
            builder.build()
  537    529   
        }
  538    530   
    }
  539         -
    /// A builder for [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
         531  +
    /// A builder for [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
  540    532   
    #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
  541    533   
    pub struct Builder {
  542         -
        pub(crate) block_size: ::std::option::Option<i32>,
  543         -
        pub(crate) expiry_time: ::std::option::Option<::aws_smithy_types::DateTime>,
  544         -
        pub(crate) volume_size: ::std::option::Option<crate::model::VolumeSize>,
  545         -
        pub(crate) next_token: ::std::option::Option<crate::model::PageToken>,
  546         -
        pub(crate) changed_blocks:
  547         -
            ::std::option::Option<::std::vec::Vec<crate::model::ChangedBlock>>,
         534  +
        pub(crate) checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
         535  +
        pub(crate) checksum: ::std::option::Option<crate::model::Checksum>,
  548    536   
    }
  549    537   
    impl Builder {
  550         -
        /// <p>The size of the block.</p>
  551         -
        pub fn block_size(mut self, input: ::std::option::Option<i32>) -> Self {
  552         -
            self.block_size = input;
  553         -
            self
  554         -
        }
  555         -
        /// <p>The time when the <code>BlockToken</code> expires.</p>
  556         -
        pub fn expiry_time(
  557         -
            mut self,
  558         -
            input: ::std::option::Option<::aws_smithy_types::DateTime>,
  559         -
        ) -> Self {
  560         -
            self.expiry_time = input;
  561         -
            self
  562         -
        }
  563         -
        /// <p>The size of the volume in GB.</p>
  564         -
        pub fn volume_size(
         538  +
        /// <p>The algorithm used by Amazon EBS to generate the checksum.</p>
         539  +
        pub fn checksum_algorithm(
  565    540   
            mut self,
  566         -
            input: ::std::option::Option<crate::model::VolumeSize>,
         541  +
            input: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  567    542   
        ) -> Self {
  568         -
            self.volume_size = input;
  569         -
            self
  570         -
        }
  571         -
        /// <p>The token to use to retrieve the next page of results. This value is null when there are no more results to return.</p>
  572         -
        pub fn next_token(mut self, input: ::std::option::Option<crate::model::PageToken>) -> Self {
  573         -
            self.next_token = input;
         543  +
            self.checksum_algorithm = input;
  574    544   
            self
  575    545   
        }
  576         -
        /// <p>An array of objects containing information about the changed blocks.</p>
  577         -
        pub fn changed_blocks(
  578         -
            mut self,
  579         -
            input: ::std::option::Option<::std::vec::Vec<crate::model::ChangedBlock>>,
  580         -
        ) -> Self {
  581         -
            self.changed_blocks = input;
         546  +
        /// <p>The SHA256 checksum generated for the block data by Amazon EBS.</p>
         547  +
        pub fn checksum(mut self, input: ::std::option::Option<crate::model::Checksum>) -> Self {
         548  +
            self.checksum = input;
  582    549   
            self
  583    550   
        }
  584         -
        /// Consumes the builder and constructs a [`ListChangedBlocksOutput`](crate::output::ListChangedBlocksOutput).
  585         -
        pub fn build(self) -> crate::output::ListChangedBlocksOutput {
         551  +
        /// Consumes the builder and constructs a [`PutSnapshotBlockOutput`](crate::output::PutSnapshotBlockOutput).
         552  +
        pub fn build(self) -> crate::output::PutSnapshotBlockOutput {
  586    553   
            self.build_enforcing_all_constraints()
  587    554   
        }
  588         -
        fn build_enforcing_all_constraints(self) -> crate::output::ListChangedBlocksOutput {
  589         -
            crate::output::ListChangedBlocksOutput {
  590         -
                block_size: self.block_size,
  591         -
                expiry_time: self.expiry_time,
  592         -
                volume_size: self.volume_size,
  593         -
                next_token: self.next_token,
  594         -
                changed_blocks: self.changed_blocks,
         555  +
        fn build_enforcing_all_constraints(self) -> crate::output::PutSnapshotBlockOutput {
         556  +
            crate::output::PutSnapshotBlockOutput {
         557  +
                checksum_algorithm: self.checksum_algorithm,
         558  +
                checksum: self.checksum,
  595    559   
            }
  596    560   
        }
  597    561   
    }
  598    562   
}
  599         -
/// See [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
  600         -
pub mod get_snapshot_block_output {
         563  +
/// See [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
         564  +
pub mod start_snapshot_output {
  601    565   
  602         -
    impl ::std::convert::From<Builder> for crate::output::GetSnapshotBlockOutput {
         566  +
    impl ::std::convert::From<Builder> for crate::output::StartSnapshotOutput {
  603    567   
        fn from(builder: Builder) -> Self {
  604    568   
            builder.build()
  605    569   
        }
  606    570   
    }
  607         -
    /// A builder for [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
  608         -
    #[derive(::std::default::Default)]
         571  +
    /// A builder for [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
         572  +
    #[derive(::std::clone::Clone, ::std::default::Default)]
  609    573   
    pub struct Builder {
  610         -
        pub(crate) data_length: ::std::option::Option<i32>,
  611         -
        pub(crate) checksum_algorithm: ::std::option::Option<crate::model::ChecksumAlgorithm>,
  612         -
        pub(crate) checksum: ::std::option::Option<crate::model::Checksum>,
  613         -
        pub(crate) block_data: ::std::option::Option<::aws_smithy_types::byte_stream::ByteStream>,
         574  +
        pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
         575  +
        pub(crate) kms_key_arn: ::std::option::Option<crate::model::KmsKeyArn>,
         576  +
        pub(crate) owner_id: ::std::option::Option<crate::model::OwnerId>,
         577  +
        pub(crate) volume_size: ::std::option::Option<crate::model::VolumeSize>,
         578  +
        pub(crate) parent_snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
         579  +
        pub(crate) description: ::std::option::Option<crate::model::Description>,
         580  +
        pub(crate) snapshot_id: ::std::option::Option<crate::model::SnapshotId>,
         581  +
        pub(crate) block_size: ::std::option::Option<i32>,
         582  +
        pub(crate) start_time: ::std::option::Option<::aws_smithy_types::DateTime>,
         583  +
        pub(crate) status: ::std::option::Option<crate::model::Status>,
  614    584   
    }
  615    585   
    impl Builder {
  616         -
        /// <p>The size of the data in the block.</p>
  617         -
        pub fn data_length(mut self, input: ::std::option::Option<i32>) -> Self {
  618         -
            self.data_length = input;
         586  +
        /// <p>The tags applied to the snapshot. You can specify up to 50 tags per snapshot. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html"> Tagging your Amazon EC2 resources</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>
         587  +
        pub fn tags(
         588  +
            mut self,
         589  +
            input: ::std::option::Option<::std::vec::Vec<crate::model::Tag>>,
         590  +
        ) -> Self {
         591  +
            self.tags = input;
  619    592   
            self
  620    593   
        }
  621         -
        /// <p>The algorithm used to generate the checksum for the block, such as SHA256.</p>
  622         -
        pub fn checksum_algorithm(
         594  +
        /// <p>The Amazon Resource Name (ARN) of the AWS Key Management Service (AWS KMS) customer master key (CMK) used to encrypt the snapshot.</p>
         595  +
        pub fn kms_key_arn(
  623    596   
            mut self,
  624         -
            input: ::std::option::Option<crate::model::ChecksumAlgorithm>,
         597  +
            input: ::std::option::Option<crate::model::KmsKeyArn>,
  625    598   
        ) -> Self {
  626         -
            self.checksum_algorithm = input;
         599  +
            self.kms_key_arn = input;
  627    600   
            self
  628    601   
        }
  629         -
        /// <p>The checksum generated for the block, which is Base64 encoded.</p>
  630         -
        pub fn checksum(mut self, input: ::std::option::Option<crate::model::Checksum>) -> Self {
  631         -
            self.checksum = input;
         602  +
        /// <p>The AWS account ID of the snapshot owner.</p>
         603  +
        pub fn owner_id(mut self, input: ::std::option::Option<crate::model::OwnerId>) -> Self {
         604  +
            self.owner_id = input;
  632    605   
            self
  633    606   
        }
  634         -
        /// <p>The data content of the block.</p>
  635         -
        pub fn block_data(mut self, input: ::aws_smithy_types::byte_stream::ByteStream) -> Self {
  636         -
            self.block_data = Some(input);
         607  +
        /// <p>The size of the volume, in GiB.</p>
         608  +
        pub fn volume_size(
         609  +
            mut self,
         610  +
            input: ::std::option::Option<crate::model::VolumeSize>,
         611  +
        ) -> Self {
         612  +
            self.volume_size = input;
  637    613   
            self
  638    614   
        }
  639         -
        /// Consumes the builder and constructs a [`GetSnapshotBlockOutput`](crate::output::GetSnapshotBlockOutput).
  640         -
        pub fn build(self) -> crate::output::GetSnapshotBlockOutput {
  641         -
            self.build_enforcing_all_constraints()
  642         -
        }
  643         -
        fn build_enforcing_all_constraints(self) -> crate::output::GetSnapshotBlockOutput {
  644         -
            crate::output::GetSnapshotBlockOutput {
  645         -
                data_length: self.data_length,
  646         -
                checksum_algorithm: self.checksum_algorithm,
  647         -
                checksum: self.checksum,
  648         -
                block_data: self.block_data.unwrap_or_default(),
  649         -
            }
  650         -
        }
  651         -
    }
  652         -
    impl ::std::fmt::Debug for Builder {
  653         -
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
  654         -
            let mut formatter = f.debug_struct("Builder");
  655         -
            formatter.field("data_length", &self.data_length);
  656         -
            formatter.field("checksum_algorithm", &self.checksum_algorithm);
  657         -
            formatter.field("checksum", &self.checksum);
  658         -
            formatter.field("block_data", &"*** Sensitive Data Redacted ***");
  659         -
            formatter.finish()
         615  +
        /// <p>The ID of the parent snapshot.</p>
         616  +
        pub fn parent_snapshot_id(
         617  +
            mut self,
         618  +
            input: ::std::option::Option<crate::model::SnapshotId>,
         619  +
        ) -> Self {
         620  +
            self.parent_snapshot_id = input;
         621  +
            self
  660    622   
        }
         623  +
        /// <p>The description of the snapshot.</p>
         624  +
        pub fn description(
         625  +
            mut self,
         626  +
            input: ::std::option::Option<crate::model::Description>,
         627  +
        ) -> Self {
         628  +
            self.description = input;
         629  +
            self
  661    630   
        }
  662         -
}
  663         -
/// See [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
  664         -
pub mod complete_snapshot_output {
  665         -
  666         -
    impl ::std::convert::From<Builder> for crate::output::CompleteSnapshotOutput {
  667         -
        fn from(builder: Builder) -> Self {
  668         -
            builder.build()
         631  +
        /// <p>The ID of the snapshot.</p>
         632  +
        pub fn snapshot_id(
         633  +
            mut self,
         634  +
            input: ::std::option::Option<crate::model::SnapshotId>,
         635  +
        ) -> Self {
         636  +
            self.snapshot_id = input;
         637  +
            self
  669    638   
        }
         639  +
        /// <p>The size of the blocks in the snapshot, in bytes.</p>
         640  +
        pub fn block_size(mut self, input: ::std::option::Option<i32>) -> Self {
         641  +
            self.block_size = input;
         642  +
            self
  670    643   
        }
  671         -
    /// A builder for [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
  672         -
    #[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
  673         -
    pub struct Builder {
  674         -
        pub(crate) status: ::std::option::Option<crate::model::Status>,
         644  +
        /// <p>The timestamp when the snapshot was created.</p>
         645  +
        pub fn start_time(
         646  +
            mut self,
         647  +
            input: ::std::option::Option<::aws_smithy_types::DateTime>,
         648  +
        ) -> Self {
         649  +
            self.start_time = input;
         650  +
            self
  675    651   
        }
  676         -
    impl Builder {
  677    652   
        /// <p>The status of the snapshot.</p>
  678    653   
        pub fn status(mut self, input: ::std::option::Option<crate::model::Status>) -> Self {
  679    654   
            self.status = input;
  680    655   
            self
  681    656   
        }
  682         -
        /// Consumes the builder and constructs a [`CompleteSnapshotOutput`](crate::output::CompleteSnapshotOutput).
  683         -
        pub fn build(self) -> crate::output::CompleteSnapshotOutput {
         657  +
        /// Consumes the builder and constructs a [`StartSnapshotOutput`](crate::output::StartSnapshotOutput).
         658  +
        pub fn build(self) -> crate::output::StartSnapshotOutput {
  684    659   
            self.build_enforcing_all_constraints()
  685    660   
        }
  686         -
        fn build_enforcing_all_constraints(self) -> crate::output::CompleteSnapshotOutput {
  687         -
            crate::output::CompleteSnapshotOutput {
         661  +
        fn build_enforcing_all_constraints(self) -> crate::output::StartSnapshotOutput {
         662  +
            crate::output::StartSnapshotOutput {
         663  +
                tags: self.tags,
         664  +
                kms_key_arn: self.kms_key_arn,
         665  +
                owner_id: self.owner_id,
         666  +
                volume_size: self.volume_size,
         667  +
                parent_snapshot_id: self.parent_snapshot_id,
         668  +
                description: self.description,
         669  +
                snapshot_id: self.snapshot_id,
         670  +
                block_size: self.block_size,
         671  +
                start_time: self.start_time,
  688    672   
                status: self.status,
  689    673   
            }
  690    674   
        }
  691    675   
    }
         676  +
    impl ::std::fmt::Debug for Builder {
         677  +
        fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
         678  +
            let mut formatter = f.debug_struct("Builder");
         679  +
            formatter.field("tags", &self.tags);
         680  +
            formatter.field("kms_key_arn", &"*** Sensitive Data Redacted ***");
         681  +
            formatter.field("owner_id", &self.owner_id);
         682  +
            formatter.field("volume_size", &self.volume_size);
         683  +
            formatter.field("parent_snapshot_id", &self.parent_snapshot_id);
         684  +
            formatter.field("description", &self.description);
         685  +
            formatter.field("snapshot_id", &self.snapshot_id);
         686  +
            formatter.field("block_size", &self.block_size);
         687  +
            formatter.field("start_time", &self.start_time);
         688  +
            formatter.field("status", &self.status);
         689  +
            formatter.finish()
         690  +
        }
         691  +
    }
  692    692   
}