Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/boto/rds/dbinstance.py @ 0:d30785e31577 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
| author | guerler |
|---|---|
| date | Fri, 31 Jul 2020 00:18:57 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:d30785e31577 |
|---|---|
| 1 # Copyright (c) 2006-2009 Mitch Garnaat http://garnaat.org/ | |
| 2 # | |
| 3 # Permission is hereby granted, free of charge, to any person obtaining a | |
| 4 # copy of this software and associated documentation files (the | |
| 5 # "Software"), to deal in the Software without restriction, including | |
| 6 # without limitation the rights to use, copy, modify, merge, publish, dis- | |
| 7 # tribute, sublicense, and/or sell copies of the Software, and to permit | |
| 8 # persons to whom the Software is furnished to do so, subject to the fol- | |
| 9 # lowing conditions: | |
| 10 # | |
| 11 # The above copyright notice and this permission notice shall be included | |
| 12 # in all copies or substantial portions of the Software. | |
| 13 # | |
| 14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | |
| 15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- | |
| 16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT | |
| 17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
| 18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | |
| 20 # IN THE SOFTWARE. | |
| 21 | |
| 22 from boto.rds.dbsecuritygroup import DBSecurityGroup | |
| 23 from boto.rds.parametergroup import ParameterGroup | |
| 24 from boto.rds.statusinfo import StatusInfo | |
| 25 from boto.rds.dbsubnetgroup import DBSubnetGroup | |
| 26 from boto.rds.vpcsecuritygroupmembership import VPCSecurityGroupMembership | |
| 27 from boto.resultset import ResultSet | |
| 28 | |
| 29 | |
| 30 class DBInstance(object): | |
| 31 """ | |
| 32 Represents a RDS DBInstance | |
| 33 | |
| 34 Properties reference available from the AWS documentation at | |
| 35 http://goo.gl/sC2Kn | |
| 36 | |
| 37 :ivar connection: connection | |
| 38 :ivar id: The name and identifier of the DBInstance | |
| 39 :ivar create_time: The date and time of creation | |
| 40 :ivar engine: The database engine being used | |
| 41 :ivar status: The status of the database in a string. e.g. "available" | |
| 42 :ivar allocated_storage: The size of the disk in gigabytes (int). | |
| 43 :ivar auto_minor_version_upgrade: Indicates that minor version patches | |
| 44 are applied automatically. | |
| 45 :ivar endpoint: A tuple that describes the hostname and port of | |
| 46 the instance. This is only available when the database is | |
| 47 in status "available". | |
| 48 :ivar instance_class: Contains the name of the compute and memory | |
| 49 capacity class of the DB Instance. | |
| 50 :ivar master_username: The username that is set as master username | |
| 51 at creation time. | |
| 52 :ivar parameter_groups: Provides the list of DB Parameter Groups | |
| 53 applied to this DB Instance. | |
| 54 :ivar security_groups: Provides List of DB Security Group elements | |
| 55 containing only DBSecurityGroup.Name and DBSecurityGroup.Status | |
| 56 subelements. | |
| 57 :ivar availability_zone: Specifies the name of the Availability Zone | |
| 58 the DB Instance is located in. | |
| 59 :ivar backup_retention_period: Specifies the number of days for | |
| 60 which automatic DB Snapshots are retained. | |
| 61 :ivar preferred_backup_window: Specifies the daily time range during | |
| 62 which automated backups are created if automated backups are | |
| 63 enabled, as determined by the backup_retention_period. | |
| 64 :ivar preferred_maintenance_window: Specifies the weekly time | |
| 65 range (in UTC) during which system maintenance can occur. (string) | |
| 66 :ivar latest_restorable_time: Specifies the latest time to which | |
| 67 a database can be restored with point-in-time restore. (string) | |
| 68 :ivar multi_az: Boolean that specifies if the DB Instance is a | |
| 69 Multi-AZ deployment. | |
| 70 :ivar iops: The current number of provisioned IOPS for the DB Instance. | |
| 71 Can be None if this is a standard instance. | |
| 72 :ivar vpc_security_groups: List of VPC Security Group Membership elements | |
| 73 containing only VpcSecurityGroupMembership.VpcSecurityGroupId and | |
| 74 VpcSecurityGroupMembership.Status subelements. | |
| 75 :ivar pending_modified_values: Specifies that changes to the | |
| 76 DB Instance are pending. This element is only included when changes | |
| 77 are pending. Specific changes are identified by subelements. | |
| 78 :ivar read_replica_dbinstance_identifiers: List of read replicas | |
| 79 associated with this DB instance. | |
| 80 :ivar status_infos: The status of a Read Replica. If the instance is not a | |
| 81 for a read replica, this will be blank. | |
| 82 :ivar character_set_name: If present, specifies the name of the character | |
| 83 set that this instance is associated with. | |
| 84 :ivar subnet_group: Specifies information on the subnet group associated | |
| 85 with the DB instance, including the name, description, and subnets | |
| 86 in the subnet group. | |
| 87 :ivar engine_version: Indicates the database engine version. | |
| 88 :ivar license_model: License model information for this DB instance. | |
| 89 """ | |
| 90 | |
| 91 def __init__(self, connection=None, id=None): | |
| 92 self.connection = connection | |
| 93 self.id = id | |
| 94 self.create_time = None | |
| 95 self.engine = None | |
| 96 self.status = None | |
| 97 self.allocated_storage = None | |
| 98 self.auto_minor_version_upgrade = None | |
| 99 self.endpoint = None | |
| 100 self.instance_class = None | |
| 101 self.master_username = None | |
| 102 self.parameter_groups = [] | |
| 103 self.security_groups = [] | |
| 104 self.read_replica_dbinstance_identifiers = [] | |
| 105 self.availability_zone = None | |
| 106 self.backup_retention_period = None | |
| 107 self.preferred_backup_window = None | |
| 108 self.preferred_maintenance_window = None | |
| 109 self.latest_restorable_time = None | |
| 110 self.multi_az = False | |
| 111 self.iops = None | |
| 112 self.vpc_security_groups = None | |
| 113 self.pending_modified_values = None | |
| 114 self._in_endpoint = False | |
| 115 self._port = None | |
| 116 self._address = None | |
| 117 self.status_infos = None | |
| 118 self.character_set_name = None | |
| 119 self.subnet_group = None | |
| 120 self.engine_version = None | |
| 121 self.license_model = None | |
| 122 | |
| 123 def __repr__(self): | |
| 124 return 'DBInstance:%s' % self.id | |
| 125 | |
| 126 def startElement(self, name, attrs, connection): | |
| 127 if name == 'Endpoint': | |
| 128 self._in_endpoint = True | |
| 129 elif name == 'DBParameterGroups': | |
| 130 self.parameter_groups = ResultSet([('DBParameterGroup', | |
| 131 ParameterGroup)]) | |
| 132 return self.parameter_groups | |
| 133 elif name == 'DBSecurityGroups': | |
| 134 self.security_groups = ResultSet([('DBSecurityGroup', | |
| 135 DBSecurityGroup)]) | |
| 136 return self.security_groups | |
| 137 elif name == 'VpcSecurityGroups': | |
| 138 self.vpc_security_groups = ResultSet([('VpcSecurityGroupMembership', | |
| 139 VPCSecurityGroupMembership)]) | |
| 140 return self.vpc_security_groups | |
| 141 elif name == 'PendingModifiedValues': | |
| 142 self.pending_modified_values = PendingModifiedValues() | |
| 143 return self.pending_modified_values | |
| 144 elif name == 'ReadReplicaDBInstanceIdentifiers': | |
| 145 self.read_replica_dbinstance_identifiers = \ | |
| 146 ReadReplicaDBInstanceIdentifiers() | |
| 147 return self.read_replica_dbinstance_identifiers | |
| 148 elif name == 'StatusInfos': | |
| 149 self.status_infos = ResultSet([ | |
| 150 ('DBInstanceStatusInfo', StatusInfo) | |
| 151 ]) | |
| 152 return self.status_infos | |
| 153 elif name == 'DBSubnetGroup': | |
| 154 self.subnet_group = DBSubnetGroup() | |
| 155 return self.subnet_group | |
| 156 return None | |
| 157 | |
| 158 def endElement(self, name, value, connection): | |
| 159 if name == 'DBInstanceIdentifier': | |
| 160 self.id = value | |
| 161 elif name == 'DBInstanceStatus': | |
| 162 self.status = value | |
| 163 elif name == 'InstanceCreateTime': | |
| 164 self.create_time = value | |
| 165 elif name == 'Engine': | |
| 166 self.engine = value | |
| 167 elif name == 'DBInstanceStatus': | |
| 168 self.status = value | |
| 169 elif name == 'AllocatedStorage': | |
| 170 self.allocated_storage = int(value) | |
| 171 elif name == 'AutoMinorVersionUpgrade': | |
| 172 self.auto_minor_version_upgrade = value.lower() == 'true' | |
| 173 elif name == 'DBInstanceClass': | |
| 174 self.instance_class = value | |
| 175 elif name == 'MasterUsername': | |
| 176 self.master_username = value | |
| 177 elif name == 'Port': | |
| 178 if self._in_endpoint: | |
| 179 self._port = int(value) | |
| 180 elif name == 'Address': | |
| 181 if self._in_endpoint: | |
| 182 self._address = value | |
| 183 elif name == 'Endpoint': | |
| 184 self.endpoint = (self._address, self._port) | |
| 185 self._in_endpoint = False | |
| 186 elif name == 'AvailabilityZone': | |
| 187 self.availability_zone = value | |
| 188 elif name == 'BackupRetentionPeriod': | |
| 189 self.backup_retention_period = int(value) | |
| 190 elif name == 'LatestRestorableTime': | |
| 191 self.latest_restorable_time = value | |
| 192 elif name == 'PreferredMaintenanceWindow': | |
| 193 self.preferred_maintenance_window = value | |
| 194 elif name == 'PreferredBackupWindow': | |
| 195 self.preferred_backup_window = value | |
| 196 elif name == 'MultiAZ': | |
| 197 if value.lower() == 'true': | |
| 198 self.multi_az = True | |
| 199 elif name == 'Iops': | |
| 200 self.iops = int(value) | |
| 201 elif name == 'CharacterSetName': | |
| 202 self.character_set_name = value | |
| 203 elif name == 'EngineVersion': | |
| 204 self.engine_version = value | |
| 205 elif name == 'LicenseModel': | |
| 206 self.license_model = value | |
| 207 else: | |
| 208 setattr(self, name, value) | |
| 209 | |
| 210 @property | |
| 211 def security_group(self): | |
| 212 """ | |
| 213 Provide backward compatibility for previous security_group | |
| 214 attribute. | |
| 215 """ | |
| 216 if len(self.security_groups) > 0: | |
| 217 return self.security_groups[-1] | |
| 218 else: | |
| 219 return None | |
| 220 | |
| 221 @property | |
| 222 def parameter_group(self): | |
| 223 """ | |
| 224 Provide backward compatibility for previous parameter_group | |
| 225 attribute. | |
| 226 """ | |
| 227 if len(self.parameter_groups) > 0: | |
| 228 return self.parameter_groups[-1] | |
| 229 else: | |
| 230 return None | |
| 231 | |
| 232 def snapshot(self, snapshot_id): | |
| 233 """ | |
| 234 Create a new DB snapshot of this DBInstance. | |
| 235 | |
| 236 :type identifier: string | |
| 237 :param identifier: The identifier for the DBSnapshot | |
| 238 | |
| 239 :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot` | |
| 240 :return: The newly created DBSnapshot | |
| 241 """ | |
| 242 return self.connection.create_dbsnapshot(snapshot_id, self.id) | |
| 243 | |
| 244 def reboot(self): | |
| 245 """ | |
| 246 Reboot this DBInstance | |
| 247 | |
| 248 :rtype: :class:`boto.rds.dbsnapshot.DBSnapshot` | |
| 249 :return: The newly created DBSnapshot | |
| 250 """ | |
| 251 return self.connection.reboot_dbinstance(self.id) | |
| 252 | |
| 253 def update(self, validate=False): | |
| 254 """ | |
| 255 Update the DB instance's status information by making a call to fetch | |
| 256 the current instance attributes from the service. | |
| 257 | |
| 258 :type validate: bool | |
| 259 :param validate: By default, if EC2 returns no data about the | |
| 260 instance the update method returns quietly. If the | |
| 261 validate param is True, however, it will raise a | |
| 262 ValueError exception if no data is returned from EC2. | |
| 263 """ | |
| 264 rs = self.connection.get_all_dbinstances(self.id) | |
| 265 if len(rs) > 0: | |
| 266 for i in rs: | |
| 267 if i.id == self.id: | |
| 268 self.__dict__.update(i.__dict__) | |
| 269 elif validate: | |
| 270 raise ValueError('%s is not a valid Instance ID' % self.id) | |
| 271 return self.status | |
| 272 | |
| 273 def stop(self, skip_final_snapshot=False, final_snapshot_id=''): | |
| 274 """ | |
| 275 Delete this DBInstance. | |
| 276 | |
| 277 :type skip_final_snapshot: bool | |
| 278 :param skip_final_snapshot: This parameter determines whether | |
| 279 a final db snapshot is created before the instance is | |
| 280 deleted. If True, no snapshot is created. If False, a | |
| 281 snapshot is created before deleting the instance. | |
| 282 | |
| 283 :type final_snapshot_id: str | |
| 284 :param final_snapshot_id: If a final snapshot is requested, this | |
| 285 is the identifier used for that snapshot. | |
| 286 | |
| 287 :rtype: :class:`boto.rds.dbinstance.DBInstance` | |
| 288 :return: The deleted db instance. | |
| 289 """ | |
| 290 return self.connection.delete_dbinstance(self.id, | |
| 291 skip_final_snapshot, | |
| 292 final_snapshot_id) | |
| 293 | |
| 294 def modify(self, param_group=None, security_groups=None, | |
| 295 preferred_maintenance_window=None, | |
| 296 master_password=None, allocated_storage=None, | |
| 297 instance_class=None, | |
| 298 backup_retention_period=None, | |
| 299 preferred_backup_window=None, | |
| 300 multi_az=False, | |
| 301 iops=None, | |
| 302 vpc_security_groups=None, | |
| 303 apply_immediately=False, | |
| 304 new_instance_id=None): | |
| 305 """ | |
| 306 Modify this DBInstance. | |
| 307 | |
| 308 :type param_group: str | |
| 309 :param param_group: Name of DBParameterGroup to associate with | |
| 310 this DBInstance. | |
| 311 | |
| 312 :type security_groups: list of str or list of DBSecurityGroup objects | |
| 313 :param security_groups: List of names of DBSecurityGroup to | |
| 314 authorize on this DBInstance. | |
| 315 | |
| 316 :type preferred_maintenance_window: str | |
| 317 :param preferred_maintenance_window: The weekly time range (in | |
| 318 UTC) during which maintenance can occur. Default is | |
| 319 Sun:05:00-Sun:09:00 | |
| 320 | |
| 321 :type master_password: str | |
| 322 :param master_password: Password of master user for the DBInstance. | |
| 323 Must be 4-15 alphanumeric characters. | |
| 324 | |
| 325 :type allocated_storage: int | |
| 326 :param allocated_storage: The new allocated storage size, in GBs. | |
| 327 Valid values are [5-1024] | |
| 328 | |
| 329 :type instance_class: str | |
| 330 :param instance_class: The compute and memory capacity of the | |
| 331 DBInstance. Changes will be applied at next maintenance | |
| 332 window unless apply_immediately is True. | |
| 333 | |
| 334 Valid values are: | |
| 335 | |
| 336 * db.m1.small | |
| 337 * db.m1.large | |
| 338 * db.m1.xlarge | |
| 339 * db.m2.xlarge | |
| 340 * db.m2.2xlarge | |
| 341 * db.m2.4xlarge | |
| 342 | |
| 343 :type apply_immediately: bool | |
| 344 :param apply_immediately: If true, the modifications will be | |
| 345 applied as soon as possible rather than waiting for the | |
| 346 next preferred maintenance window. | |
| 347 | |
| 348 :type new_instance_id: str | |
| 349 :param new_instance_id: The new DB instance identifier. | |
| 350 | |
| 351 :type backup_retention_period: int | |
| 352 :param backup_retention_period: The number of days for which | |
| 353 automated backups are retained. Setting this to zero | |
| 354 disables automated backups. | |
| 355 | |
| 356 :type preferred_backup_window: str | |
| 357 :param preferred_backup_window: The daily time range during | |
| 358 which automated backups are created (if enabled). Must be | |
| 359 in h24:mi-hh24:mi format (UTC). | |
| 360 | |
| 361 :type multi_az: bool | |
| 362 :param multi_az: If True, specifies the DB Instance will be | |
| 363 deployed in multiple availability zones. | |
| 364 | |
| 365 :type iops: int | |
| 366 :param iops: The amount of IOPS (input/output operations per | |
| 367 second) to Provisioned for the DB Instance. Can be | |
| 368 modified at a later date. | |
| 369 | |
| 370 Must scale linearly. For every 1000 IOPS provision, you | |
| 371 must allocated 100 GB of storage space. This scales up to | |
| 372 1 TB / 10 000 IOPS for MySQL and Oracle. MSSQL is limited | |
| 373 to 700 GB / 7 000 IOPS. | |
| 374 | |
| 375 If you specify a value, it must be at least 1000 IOPS and | |
| 376 you must allocate 100 GB of storage. | |
| 377 | |
| 378 :type vpc_security_groups: list | |
| 379 :param vpc_security_groups: List of VPCSecurityGroupMembership | |
| 380 that this DBInstance is a memberof. | |
| 381 | |
| 382 :rtype: :class:`boto.rds.dbinstance.DBInstance` | |
| 383 :return: The modified db instance. | |
| 384 """ | |
| 385 return self.connection.modify_dbinstance(self.id, | |
| 386 param_group, | |
| 387 security_groups, | |
| 388 preferred_maintenance_window, | |
| 389 master_password, | |
| 390 allocated_storage, | |
| 391 instance_class, | |
| 392 backup_retention_period, | |
| 393 preferred_backup_window, | |
| 394 multi_az, | |
| 395 apply_immediately, | |
| 396 iops, | |
| 397 vpc_security_groups, | |
| 398 new_instance_id) | |
| 399 | |
| 400 | |
| 401 class PendingModifiedValues(dict): | |
| 402 def startElement(self, name, attrs, connection): | |
| 403 return None | |
| 404 | |
| 405 def endElement(self, name, value, connection): | |
| 406 if name != 'PendingModifiedValues': | |
| 407 self[name] = value | |
| 408 | |
| 409 | |
| 410 class ReadReplicaDBInstanceIdentifiers(list): | |
| 411 def startElement(self, name, attrs, connection): | |
| 412 return None | |
| 413 | |
| 414 def endElement(self, name, value, connection): | |
| 415 if name == 'ReadReplicaDBInstanceIdentifier': | |
| 416 self.append(value) |
