~ubuntu-branches/ubuntu/trusty/python-boto/trusty

« back to all changes in this revision

Viewing changes to boto/rds/optiongroup.py

  • Committer: Package Import Robot
  • Author(s): Eric Evans
  • Date: 2013-08-13 13:56:47 UTC
  • mfrom: (1.1.12)
  • Revision ID: package-import@ubuntu.com-20130813135647-o43z7y15uid87fzl
Tags: 2.10.0-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (c) 2013 Amazon.com, Inc. or its affiliates.
 
2
# All Rights Reserved
 
3
#
 
4
# Permission is hereby granted, free of charge, to any person obtaining a
 
5
# copy of this software and associated documentation files (the
 
6
# "Software"), to deal in the Software without restriction, including
 
7
# without limitation the rights to use, copy, modify, merge, publish, dis-
 
8
# tribute, sublicense, and/or sell copies of the Software, and to permit
 
9
# persons to whom the Software is furnished to do so, subject to the fol-
 
10
# lowing conditions:
 
11
#
 
12
# The above copyright notice and this permission notice shall be included
 
13
# in all copies or substantial portions of the Software.
 
14
#
 
15
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
16
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
 
17
# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
 
18
# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 
19
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 
20
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 
21
# IN THE SOFTWARE.
 
22
 
 
23
"""
 
24
Represents an OptionGroup
 
25
"""
 
26
 
 
27
from boto.rds.dbsecuritygroup import DBSecurityGroup
 
28
from boto.resultset import ResultSet
 
29
 
 
30
 
 
31
class OptionGroup(object):
 
32
    """
 
33
    Represents an RDS option group
 
34
 
 
35
    Properties reference available from the AWS documentation at
 
36
    http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_OptionGroup.html
 
37
 
 
38
    :ivar connection: :py:class:`boto.rds.RDSConnection` associated with the
 
39
                      current object
 
40
    :ivar name: Name of the option group
 
41
    :ivar description: The description of the option group
 
42
    :ivar engine_name: The name of the database engine to use
 
43
    :ivar major_engine_version: The major version number of the engine to use
 
44
    :ivar allow_both_vpc_and_nonvpc: Indicates whether this option group can be
 
45
                                     applied to both VPC and non-VPC instances.
 
46
                                     The value ``True`` indicates the option
 
47
                                     group can be applied to both VPC and
 
48
                                     non-VPC instances.
 
49
    :ivar vpc_id: If AllowsVpcAndNonVpcInstanceMemberships is 'false', this
 
50
                  field is blank. If AllowsVpcAndNonVpcInstanceMemberships is
 
51
                  ``True`` and this field is blank, then this option group can
 
52
                  be applied to both VPC and non-VPC instances. If this field
 
53
                  contains a value, then this option group can only be applied
 
54
                  to instances that are in the VPC indicated by this field.
 
55
    :ivar options: The list of :py:class:`boto.rds.optiongroup.Option` objects
 
56
                   associated with the group
 
57
    """
 
58
    def __init__(self, connection=None, name=None, engine_name=None,
 
59
                 major_engine_version=None, description=None,
 
60
                 allow_both_vpc_and_nonvpc=False, vpc_id=None):
 
61
        self.name = name
 
62
        self.engine_name = engine_name
 
63
        self.major_engine_version = major_engine_version
 
64
        self.description = description
 
65
        self.allow_both_vpc_and_nonvpc = allow_both_vpc_and_nonvpc
 
66
        self.vpc_id = vpc_id
 
67
        self.options = []
 
68
 
 
69
    def __repr__(self):
 
70
        return 'OptionGroup:%s' % self.name
 
71
 
 
72
    def startElement(self, name, attrs, connection):
 
73
        if name == 'Options':
 
74
            self.options = ResultSet([
 
75
                ('Options', Option)
 
76
            ])
 
77
        else:
 
78
            return None
 
79
 
 
80
    def endElement(self, name, value, connection):
 
81
        if name == 'OptionGroupName':
 
82
            self.name = value
 
83
        elif name == 'EngineName':
 
84
            self.engine_name = value
 
85
        elif name == 'MajorEngineVersion':
 
86
            self.major_engine_version = value
 
87
        elif name == 'OptionGroupDescription':
 
88
            self.description = value
 
89
        elif name == 'AllowsVpcAndNonVpcInstanceMemberships':
 
90
            if value.lower() == 'true':
 
91
                self.allow_both_vpc_and_nonvpc = True
 
92
            else:
 
93
                self.allow_both_vpc_and_nonvpc = False
 
94
        elif name == 'VpcId':
 
95
            self.vpc_id = value
 
96
        else:
 
97
            setattr(self, name, value)
 
98
 
 
99
    def delete(self):
 
100
        return self.connection.delete_option_group(self.name)
 
101
 
 
102
 
 
103
class Option(object):
 
104
    """
 
105
    Describes a Option for use in an OptionGroup
 
106
 
 
107
    :ivar name: The name of the option
 
108
    :ivar description: The description of the option.
 
109
    :ivar permanent: Indicate if this option is permanent.
 
110
    :ivar persistent: Indicate if this option is persistent.
 
111
    :ivar port: If required, the port configured for this option to use.
 
112
    :ivar settings: The option settings for this option.
 
113
    :ivar db_security_groups: If the option requires access to a port, then
 
114
                              this DB Security Group allows access to the port.
 
115
    :ivar vpc_security_groups: If the option requires access to a port, then
 
116
                               this VPC Security Group allows access to the
 
117
                               port.
 
118
    """
 
119
    def __init__(self, name=None, description=None, permanent=False,
 
120
                 persistent=False, port=None, settings=None,
 
121
                 db_security_groups=None, vpc_security_groups=None):
 
122
        self.name = name
 
123
        self.description = description
 
124
        self.permanent = permanent
 
125
        self.persistent = persistent
 
126
        self.port = port
 
127
        self.settings = settings
 
128
        self.db_security_groups = db_security_groups
 
129
        self.vpc_security_groups = vpc_security_groups
 
130
 
 
131
        if self.settings is None:
 
132
            self.settings = []
 
133
 
 
134
        if self.db_security_groups is None:
 
135
            self.db_security_groups = []
 
136
 
 
137
        if self.vpc_security_groups is None:
 
138
            self.vpc_security_groups = []
 
139
 
 
140
    def __repr__(self):
 
141
        return 'Option:%s' % self.name
 
142
 
 
143
    def startElement(self, name, attrs, connection):
 
144
        if name == 'OptionSettings':
 
145
            self.settings = ResultSet([
 
146
                ('OptionSettings', OptionSetting)
 
147
            ])
 
148
        elif name == 'DBSecurityGroupMemberships':
 
149
            self.db_security_groups = ResultSet([
 
150
                ('DBSecurityGroupMemberships', DBSecurityGroup)
 
151
            ])
 
152
        elif name == 'VpcSecurityGroupMemberships':
 
153
            self.vpc_security_groups = ResultSet([
 
154
                ('VpcSecurityGroupMemberships', VpcSecurityGroup)
 
155
            ])
 
156
        else:
 
157
            return None
 
158
 
 
159
    def endElement(self, name, value, connection):
 
160
        if name == 'OptionName':
 
161
            self.name = value
 
162
        elif name == 'OptionDescription':
 
163
            self.description = value
 
164
        elif name == 'Permanent':
 
165
            if value.lower() == 'true':
 
166
                self.permenant = True
 
167
            else:
 
168
                self.permenant = False
 
169
        elif name == 'Persistent':
 
170
            if value.lower() == 'true':
 
171
                self.persistent = True
 
172
            else:
 
173
                self.persistent = False
 
174
        elif name == 'Port':
 
175
            self.port = int(value)
 
176
        else:
 
177
            setattr(self, name, value)
 
178
 
 
179
 
 
180
class OptionSetting(object):
 
181
    """
 
182
    Describes a OptionSetting for use in an Option
 
183
 
 
184
    :ivar name: The name of the option that has settings that you can set.
 
185
    :ivar description: The description of the option setting.
 
186
    :ivar value: The current value of the option setting.
 
187
    :ivar default_value: The default value of the option setting.
 
188
    :ivar allowed_values: The allowed values of the option setting.
 
189
    :ivar data_type: The data type of the option setting.
 
190
    :ivar apply_type: The DB engine specific parameter type.
 
191
    :ivar is_modifiable: A Boolean value that, when true, indicates the option
 
192
                         setting can be modified from the default.
 
193
    :ivar is_collection: Indicates if the option setting is part of a
 
194
                         collection.
 
195
    """
 
196
 
 
197
    def __init__(self, name=None, description=None, value=None,
 
198
                 default_value=False, allowed_values=None, data_type=None,
 
199
                 apply_type=None, is_modifiable=False, is_collection=False):
 
200
        self.name = name
 
201
        self.description = description
 
202
        self.value = value
 
203
        self.default_value = default_value
 
204
        self.allowed_values = allowed_values
 
205
        self.data_type = data_type
 
206
        self.apply_type = apply_type
 
207
        self.is_modifiable = is_modifiable
 
208
        self.is_collection = is_collection
 
209
 
 
210
    def __repr__(self):
 
211
        return 'OptionSetting:%s' % self.name
 
212
 
 
213
    def startElement(self, name, attrs, connection):
 
214
        return None
 
215
 
 
216
    def endElement(self, name, value, connection):
 
217
        if name == 'Name':
 
218
            self.name = value
 
219
        elif name == 'Description':
 
220
            self.description = value
 
221
        elif name == 'Value':
 
222
            self.value = value
 
223
        elif name == 'DefaultValue':
 
224
            self.default_value = value
 
225
        elif name == 'AllowedValues':
 
226
            self.allowed_values = value
 
227
        elif name == 'DataType':
 
228
            self.data_type = value
 
229
        elif name == 'ApplyType':
 
230
            self.apply_type = value
 
231
        elif name == 'IsModifiable':
 
232
            if value.lower() == 'true':
 
233
                self.is_modifiable = True
 
234
            else:
 
235
                self.is_modifiable = False
 
236
        elif name == 'IsCollection':
 
237
            if value.lower() == 'true':
 
238
                self.is_collection = True
 
239
            else:
 
240
                self.is_collection = False
 
241
        else:
 
242
            setattr(self, name, value)
 
243
 
 
244
 
 
245
class VpcSecurityGroup(object):
 
246
    """
 
247
    Describes a VPC security group for use in a OptionGroup
 
248
    """
 
249
    def __init__(self, vpc_id=None, status=None):
 
250
        self.vpc_id = vpc_id
 
251
        self.status = status
 
252
 
 
253
    def __repr__(self):
 
254
        return 'VpcSecurityGroup:%s' % self.vpc_id
 
255
 
 
256
    def startElement(self, name, attrs, connection):
 
257
        pass
 
258
 
 
259
    def endElement(self, name, value, connection):
 
260
        if name == 'VpcSecurityGroupId':
 
261
            self.vpc_id = value
 
262
        elif name == 'Status':
 
263
            self.status = value
 
264
        else:
 
265
            setattr(self, name, value)
 
266
 
 
267
 
 
268
class OptionGroupOption(object):
 
269
    """
 
270
    Describes a OptionGroupOption for use in an OptionGroup
 
271
 
 
272
    :ivar name: The name of the option
 
273
    :ivar description: The description of the option.
 
274
    :ivar engine_name: Engine name that this option can be applied to.
 
275
    :ivar major_engine_version: Indicates the major engine version that the
 
276
                                option is available for.
 
277
    :ivar min_minor_engine_version: The minimum required engine version for the
 
278
                                    option to be applied.
 
279
    :ivar permanent: Indicate if this option is permanent.
 
280
    :ivar persistent: Indicate if this option is persistent.
 
281
    :ivar port_required: Specifies whether the option requires a port.
 
282
    :ivar default_port: If the option requires a port, specifies the default
 
283
                        port for the option.
 
284
    :ivar settings: The option settings for this option.
 
285
    :ivar depends_on: List of all options that are prerequisites for this
 
286
                      option.
 
287
    """
 
288
    def __init__(self, name=None, description=None, engine_name=None,
 
289
                 major_engine_version=None, min_minor_engine_version=None,
 
290
                 permanent=False, persistent=False, port_required=False,
 
291
                 default_port=None, settings=None, depends_on=None):
 
292
        self.name = name
 
293
        self.description = description
 
294
        self.engine_name = engine_name
 
295
        self.major_engine_version = major_engine_version
 
296
        self.min_minor_engine_version = min_minor_engine_version
 
297
        self.permanent = permanent
 
298
        self.persistent = persistent
 
299
        self.port_required = port_required
 
300
        self.default_port = default_port
 
301
        self.settings = settings
 
302
        self.depends_on = depends_on
 
303
 
 
304
        if self.settings is None:
 
305
            self.settings = []
 
306
 
 
307
        if self.depends_on is None:
 
308
            self.depends_on = []
 
309
 
 
310
    def __repr__(self):
 
311
        return 'OptionGroupOption:%s' % self.name
 
312
 
 
313
    def startElement(self, name, attrs, connection):
 
314
        if name == 'OptionGroupOptionSettings':
 
315
            self.settings = ResultSet([
 
316
                ('OptionGroupOptionSettings', OptionGroupOptionSetting)
 
317
            ])
 
318
        elif name == 'OptionsDependedOn':
 
319
            self.depends_on = []
 
320
        else:
 
321
            return None
 
322
 
 
323
    def endElement(self, name, value, connection):
 
324
        if name == 'Name':
 
325
            self.name = value
 
326
        elif name == 'Description':
 
327
            self.description = value
 
328
        elif name == 'EngineName':
 
329
            self.engine_name = value
 
330
        elif name == 'MajorEngineVersion':
 
331
            self.major_engine_version = value
 
332
        elif name == 'MinimumRequiredMinorEngineVersion':
 
333
            self.min_minor_engine_version = value
 
334
        elif name == 'Permanent':
 
335
            if value.lower() == 'true':
 
336
                self.permenant = True
 
337
            else:
 
338
                self.permenant = False
 
339
        elif name == 'Persistent':
 
340
            if value.lower() == 'true':
 
341
                self.persistent = True
 
342
            else:
 
343
                self.persistent = False
 
344
        elif name == 'PortRequired':
 
345
            if value.lower() == 'true':
 
346
                self.port_required = True
 
347
            else:
 
348
                self.port_required = False
 
349
        elif name == 'DefaultPort':
 
350
            self.default_port = int(value)
 
351
        else:
 
352
            setattr(self, name, value)
 
353
 
 
354
 
 
355
class OptionGroupOptionSetting(object):
 
356
    """
 
357
    Describes a OptionGroupOptionSetting for use in an OptionGroupOption.
 
358
 
 
359
    :ivar name: The name of the option that has settings that you can set.
 
360
    :ivar description: The description of the option setting.
 
361
    :ivar value: The current value of the option setting.
 
362
    :ivar default_value: The default value of the option setting.
 
363
    :ivar allowed_values: The allowed values of the option setting.
 
364
    :ivar data_type: The data type of the option setting.
 
365
    :ivar apply_type: The DB engine specific parameter type.
 
366
    :ivar is_modifiable: A Boolean value that, when true, indicates the option
 
367
                         setting can be modified from the default.
 
368
    :ivar is_collection: Indicates if the option setting is part of a
 
369
                         collection.
 
370
    """
 
371
 
 
372
    def __init__(self, name=None, description=None, default_value=False,
 
373
                 allowed_values=None, apply_type=None, is_modifiable=False):
 
374
        self.name = name
 
375
        self.description = description
 
376
        self.default_value = default_value
 
377
        self.allowed_values = allowed_values
 
378
        self.apply_type = apply_type
 
379
        self.is_modifiable = is_modifiable
 
380
 
 
381
    def __repr__(self):
 
382
        return 'OptionGroupOptionSetting:%s' % self.name
 
383
 
 
384
    def startElement(self, name, attrs, connection):
 
385
        return None
 
386
 
 
387
    def endElement(self, name, value, connection):
 
388
        if name == 'SettingName':
 
389
            self.name = value
 
390
        elif name == 'SettingDescription':
 
391
            self.description = value
 
392
        elif name == 'DefaultValue':
 
393
            self.default_value = value
 
394
        elif name == 'AllowedValues':
 
395
            self.allowed_values = value
 
396
        elif name == 'ApplyType':
 
397
            self.apply_type = value
 
398
        elif name == 'IsModifiable':
 
399
            if value.lower() == 'true':
 
400
                self.is_modifiable = True
 
401
            else:
 
402
                self.is_modifiable = False
 
403
        else:
 
404
            setattr(self, name, value)