1# coding: utf-8
2# Copyright (c) 2016, 2021, Oracle and/or its affiliates.  All rights reserved.
3# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
4
5
6from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel  # noqa: F401
7from oci.decorators import init_model_state_from_kwargs
8
9
10@init_model_state_from_kwargs
11class CreateStreamPoolDetails(object):
12    """
13    Object used to create a stream pool.
14    """
15
16    def __init__(self, **kwargs):
17        """
18        Initializes a new CreateStreamPoolDetails object with values from keyword arguments.
19        The following keyword arguments are supported (corresponding to the getters/setters of this class):
20
21        :param compartment_id:
22            The value to assign to the compartment_id property of this CreateStreamPoolDetails.
23        :type compartment_id: str
24
25        :param name:
26            The value to assign to the name property of this CreateStreamPoolDetails.
27        :type name: str
28
29        :param kafka_settings:
30            The value to assign to the kafka_settings property of this CreateStreamPoolDetails.
31        :type kafka_settings: oci.streaming.models.KafkaSettings
32
33        :param custom_encryption_key_details:
34            The value to assign to the custom_encryption_key_details property of this CreateStreamPoolDetails.
35        :type custom_encryption_key_details: oci.streaming.models.CustomEncryptionKeyDetails
36
37        :param private_endpoint_details:
38            The value to assign to the private_endpoint_details property of this CreateStreamPoolDetails.
39        :type private_endpoint_details: oci.streaming.models.PrivateEndpointDetails
40
41        :param freeform_tags:
42            The value to assign to the freeform_tags property of this CreateStreamPoolDetails.
43        :type freeform_tags: dict(str, str)
44
45        :param defined_tags:
46            The value to assign to the defined_tags property of this CreateStreamPoolDetails.
47        :type defined_tags: dict(str, dict(str, object))
48
49        """
50        self.swagger_types = {
51            'compartment_id': 'str',
52            'name': 'str',
53            'kafka_settings': 'KafkaSettings',
54            'custom_encryption_key_details': 'CustomEncryptionKeyDetails',
55            'private_endpoint_details': 'PrivateEndpointDetails',
56            'freeform_tags': 'dict(str, str)',
57            'defined_tags': 'dict(str, dict(str, object))'
58        }
59
60        self.attribute_map = {
61            'compartment_id': 'compartmentId',
62            'name': 'name',
63            'kafka_settings': 'kafkaSettings',
64            'custom_encryption_key_details': 'customEncryptionKeyDetails',
65            'private_endpoint_details': 'privateEndpointDetails',
66            'freeform_tags': 'freeformTags',
67            'defined_tags': 'definedTags'
68        }
69
70        self._compartment_id = None
71        self._name = None
72        self._kafka_settings = None
73        self._custom_encryption_key_details = None
74        self._private_endpoint_details = None
75        self._freeform_tags = None
76        self._defined_tags = None
77
78    @property
79    def compartment_id(self):
80        """
81        **[Required]** Gets the compartment_id of this CreateStreamPoolDetails.
82        The OCID of the compartment that contains the stream.
83
84
85        :return: The compartment_id of this CreateStreamPoolDetails.
86        :rtype: str
87        """
88        return self._compartment_id
89
90    @compartment_id.setter
91    def compartment_id(self, compartment_id):
92        """
93        Sets the compartment_id of this CreateStreamPoolDetails.
94        The OCID of the compartment that contains the stream.
95
96
97        :param compartment_id: The compartment_id of this CreateStreamPoolDetails.
98        :type: str
99        """
100        self._compartment_id = compartment_id
101
102    @property
103    def name(self):
104        """
105        **[Required]** Gets the name of this CreateStreamPoolDetails.
106        The name of the stream pool. Avoid entering confidential information.
107
108        Example: `MyStreamPool`
109
110
111        :return: The name of this CreateStreamPoolDetails.
112        :rtype: str
113        """
114        return self._name
115
116    @name.setter
117    def name(self, name):
118        """
119        Sets the name of this CreateStreamPoolDetails.
120        The name of the stream pool. Avoid entering confidential information.
121
122        Example: `MyStreamPool`
123
124
125        :param name: The name of this CreateStreamPoolDetails.
126        :type: str
127        """
128        self._name = name
129
130    @property
131    def kafka_settings(self):
132        """
133        Gets the kafka_settings of this CreateStreamPoolDetails.
134
135        :return: The kafka_settings of this CreateStreamPoolDetails.
136        :rtype: oci.streaming.models.KafkaSettings
137        """
138        return self._kafka_settings
139
140    @kafka_settings.setter
141    def kafka_settings(self, kafka_settings):
142        """
143        Sets the kafka_settings of this CreateStreamPoolDetails.
144
145        :param kafka_settings: The kafka_settings of this CreateStreamPoolDetails.
146        :type: oci.streaming.models.KafkaSettings
147        """
148        self._kafka_settings = kafka_settings
149
150    @property
151    def custom_encryption_key_details(self):
152        """
153        Gets the custom_encryption_key_details of this CreateStreamPoolDetails.
154
155        :return: The custom_encryption_key_details of this CreateStreamPoolDetails.
156        :rtype: oci.streaming.models.CustomEncryptionKeyDetails
157        """
158        return self._custom_encryption_key_details
159
160    @custom_encryption_key_details.setter
161    def custom_encryption_key_details(self, custom_encryption_key_details):
162        """
163        Sets the custom_encryption_key_details of this CreateStreamPoolDetails.
164
165        :param custom_encryption_key_details: The custom_encryption_key_details of this CreateStreamPoolDetails.
166        :type: oci.streaming.models.CustomEncryptionKeyDetails
167        """
168        self._custom_encryption_key_details = custom_encryption_key_details
169
170    @property
171    def private_endpoint_details(self):
172        """
173        Gets the private_endpoint_details of this CreateStreamPoolDetails.
174
175        :return: The private_endpoint_details of this CreateStreamPoolDetails.
176        :rtype: oci.streaming.models.PrivateEndpointDetails
177        """
178        return self._private_endpoint_details
179
180    @private_endpoint_details.setter
181    def private_endpoint_details(self, private_endpoint_details):
182        """
183        Sets the private_endpoint_details of this CreateStreamPoolDetails.
184
185        :param private_endpoint_details: The private_endpoint_details of this CreateStreamPoolDetails.
186        :type: oci.streaming.models.PrivateEndpointDetails
187        """
188        self._private_endpoint_details = private_endpoint_details
189
190    @property
191    def freeform_tags(self):
192        """
193        Gets the freeform_tags of this CreateStreamPoolDetails.
194        Free-form tags for this resource. Each tag is a simple key-value pair that is applied with no predefined name, type, or namespace. Exists for cross-compatibility only.
195        For more information, see `Resource Tags`__.
196
197        Example: `{\"Department\": \"Finance\"}`
198
199        __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
200
201
202        :return: The freeform_tags of this CreateStreamPoolDetails.
203        :rtype: dict(str, str)
204        """
205        return self._freeform_tags
206
207    @freeform_tags.setter
208    def freeform_tags(self, freeform_tags):
209        """
210        Sets the freeform_tags of this CreateStreamPoolDetails.
211        Free-form tags for this resource. Each tag is a simple key-value pair that is applied with no predefined name, type, or namespace. Exists for cross-compatibility only.
212        For more information, see `Resource Tags`__.
213
214        Example: `{\"Department\": \"Finance\"}`
215
216        __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
217
218
219        :param freeform_tags: The freeform_tags of this CreateStreamPoolDetails.
220        :type: dict(str, str)
221        """
222        self._freeform_tags = freeform_tags
223
224    @property
225    def defined_tags(self):
226        """
227        Gets the defined_tags of this CreateStreamPoolDetails.
228        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see `Resource Tags`__.
229
230        Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
231
232        __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
233
234
235        :return: The defined_tags of this CreateStreamPoolDetails.
236        :rtype: dict(str, dict(str, object))
237        """
238        return self._defined_tags
239
240    @defined_tags.setter
241    def defined_tags(self, defined_tags):
242        """
243        Sets the defined_tags of this CreateStreamPoolDetails.
244        Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see `Resource Tags`__.
245
246        Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
247
248        __ https://docs.cloud.oracle.com/Content/General/Concepts/resourcetags.htm
249
250
251        :param defined_tags: The defined_tags of this CreateStreamPoolDetails.
252        :type: dict(str, dict(str, object))
253        """
254        self._defined_tags = defined_tags
255
256    def __repr__(self):
257        return formatted_flat_dict(self)
258
259    def __eq__(self, other):
260        if other is None:
261            return False
262
263        return self.__dict__ == other.__dict__
264
265    def __ne__(self, other):
266        return not self == other
267