1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct CreateGroupOutput {
    /// <p>The description of the resource group.</p>
    pub group: ::std::option::Option<crate::types::Group>,
    /// <p>The resource query associated with the group. For more information about resource queries, see <a href="https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag">Create a tag-based group in Resource Groups</a>. </p>
    pub resource_query: ::std::option::Option<crate::types::ResourceQuery>,
    /// <p>The tags associated with the group.</p>
    pub tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    /// <p>The service configuration associated with the resource group. For details about the syntax of a service configuration, see <a href="https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html">Service configurations for Resource Groups</a>.</p>
    pub group_configuration: ::std::option::Option<crate::types::GroupConfiguration>,
    _request_id: Option<String>,
}
impl CreateGroupOutput {
    /// <p>The description of the resource group.</p>
    pub fn group(&self) -> ::std::option::Option<&crate::types::Group> {
        self.group.as_ref()
    }
    /// <p>The resource query associated with the group. For more information about resource queries, see <a href="https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag">Create a tag-based group in Resource Groups</a>. </p>
    pub fn resource_query(&self) -> ::std::option::Option<&crate::types::ResourceQuery> {
        self.resource_query.as_ref()
    }
    /// <p>The tags associated with the group.</p>
    pub fn tags(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        self.tags.as_ref()
    }
    /// <p>The service configuration associated with the resource group. For details about the syntax of a service configuration, see <a href="https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html">Service configurations for Resource Groups</a>.</p>
    pub fn group_configuration(&self) -> ::std::option::Option<&crate::types::GroupConfiguration> {
        self.group_configuration.as_ref()
    }
}
impl ::aws_types::request_id::RequestId for CreateGroupOutput {
    fn request_id(&self) -> Option<&str> {
        self._request_id.as_deref()
    }
}
impl CreateGroupOutput {
    /// Creates a new builder-style object to manufacture [`CreateGroupOutput`](crate::operation::create_group::CreateGroupOutput).
    pub fn builder() -> crate::operation::create_group::builders::CreateGroupOutputBuilder {
        crate::operation::create_group::builders::CreateGroupOutputBuilder::default()
    }
}

/// A builder for [`CreateGroupOutput`](crate::operation::create_group::CreateGroupOutput).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct CreateGroupOutputBuilder {
    pub(crate) group: ::std::option::Option<crate::types::Group>,
    pub(crate) resource_query: ::std::option::Option<crate::types::ResourceQuery>,
    pub(crate) tags: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    pub(crate) group_configuration: ::std::option::Option<crate::types::GroupConfiguration>,
    _request_id: Option<String>,
}
impl CreateGroupOutputBuilder {
    /// <p>The description of the resource group.</p>
    pub fn group(mut self, input: crate::types::Group) -> Self {
        self.group = ::std::option::Option::Some(input);
        self
    }
    /// <p>The description of the resource group.</p>
    pub fn set_group(mut self, input: ::std::option::Option<crate::types::Group>) -> Self {
        self.group = input;
        self
    }
    /// <p>The description of the resource group.</p>
    pub fn get_group(&self) -> &::std::option::Option<crate::types::Group> {
        &self.group
    }
    /// <p>The resource query associated with the group. For more information about resource queries, see <a href="https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag">Create a tag-based group in Resource Groups</a>. </p>
    pub fn resource_query(mut self, input: crate::types::ResourceQuery) -> Self {
        self.resource_query = ::std::option::Option::Some(input);
        self
    }
    /// <p>The resource query associated with the group. For more information about resource queries, see <a href="https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag">Create a tag-based group in Resource Groups</a>. </p>
    pub fn set_resource_query(mut self, input: ::std::option::Option<crate::types::ResourceQuery>) -> Self {
        self.resource_query = input;
        self
    }
    /// <p>The resource query associated with the group. For more information about resource queries, see <a href="https://docs.aws.amazon.com/ARG/latest/userguide/gettingstarted-query.html#gettingstarted-query-cli-tag">Create a tag-based group in Resource Groups</a>. </p>
    pub fn get_resource_query(&self) -> &::std::option::Option<crate::types::ResourceQuery> {
        &self.resource_query
    }
    /// Adds a key-value pair to `tags`.
    ///
    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
    ///
    /// <p>The tags associated with the group.</p>
    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
        let mut hash_map = self.tags.unwrap_or_default();
        hash_map.insert(k.into(), v.into());
        self.tags = ::std::option::Option::Some(hash_map);
        self
    }
    /// <p>The tags associated with the group.</p>
    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
        self.tags = input;
        self
    }
    /// <p>The tags associated with the group.</p>
    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        &self.tags
    }
    /// <p>The service configuration associated with the resource group. For details about the syntax of a service configuration, see <a href="https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html">Service configurations for Resource Groups</a>.</p>
    pub fn group_configuration(mut self, input: crate::types::GroupConfiguration) -> Self {
        self.group_configuration = ::std::option::Option::Some(input);
        self
    }
    /// <p>The service configuration associated with the resource group. For details about the syntax of a service configuration, see <a href="https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html">Service configurations for Resource Groups</a>.</p>
    pub fn set_group_configuration(mut self, input: ::std::option::Option<crate::types::GroupConfiguration>) -> Self {
        self.group_configuration = input;
        self
    }
    /// <p>The service configuration associated with the resource group. For details about the syntax of a service configuration, see <a href="https://docs.aws.amazon.com/ARG/latest/APIReference/about-slg.html">Service configurations for Resource Groups</a>.</p>
    pub fn get_group_configuration(&self) -> &::std::option::Option<crate::types::GroupConfiguration> {
        &self.group_configuration
    }
    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
        self._request_id = Some(request_id.into());
        self
    }

    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
        self._request_id = request_id;
        self
    }
    /// Consumes the builder and constructs a [`CreateGroupOutput`](crate::operation::create_group::CreateGroupOutput).
    pub fn build(self) -> crate::operation::create_group::CreateGroupOutput {
        crate::operation::create_group::CreateGroupOutput {
            group: self.group,
            resource_query: self.resource_query,
            tags: self.tags,
            group_configuration: self.group_configuration,
            _request_id: self._request_id,
        }
    }
}