Index: boto-2.45.0/boto/vpc/__init__.py =================================================================== --- boto-2.45.0.orig/boto/vpc/__init__.py +++ boto-2.45.0/boto/vpc/__init__.py @@ -1269,6 +1269,33 @@ class VPCConnection(EC2Connection): params['DryRun'] = 'true' return self.get_status('DeleteSubnet', params) + def modify_subnet_attribute(self, subnet_id, map_public_ip_on_launch, + dry_run=False): + """ + :type subnet_id: str + :param subnet_id: The ID of the subnet. + + :type map_public_ip_on_launch: bool + :param map_public_ip_on_launch: Specifies whether public IP addresses + are provided for the instances launched into this subnet. + + :type dry_run: bool + :param dry_run: Set to True if the operation should not actually run. + + :rtype: bool + :return: True if successful + """ + params = { + 'SubnetId': subnet_id + } + + params['MapPublicIpOnLaunch.Value'] = ( + 'true' if map_public_ip_on_launch else 'false') + + if dry_run: + params['DryRun'] = 'true' + return self.get_status('ModifySubnetAttribute', params) + # DHCP Options def get_all_dhcp_options(self, dhcp_options_ids=None, filters=None, dry_run=False): Index: boto-2.45.0/tests/unit/vpc/test_subnet.py =================================================================== --- boto-2.45.0.orig/tests/unit/vpc/test_subnet.py +++ boto-2.45.0/tests/unit/vpc/test_subnet.py @@ -129,5 +129,30 @@ class TestDeleteSubnet(AWSMockServiceTes self.assertEquals(api_response, True) +class TestModifySubnetAttribute(AWSMockServiceTestCase): + + connection_class = VPCConnection + + def default_body(self): + return b""" + + 7a62c49f-347e-4fc4-9331-6e8eEXAMPLE + true + + """ + + def test_modify_subnet_attribute(self): + self.set_http_response(status_code=200) + api_response = self.service_connection.modify_subnet_attribute('subnet-a605r929', + True) + self.assert_request_parameters({ + 'Action': 'ModifySubnetAttribute', + 'SubnetId': 'subnet-a605r929', 'MapPublicIpOnLaunch.Value': 'true'}, + ignore_params_values=['AWSAccessKeyId', 'SignatureMethod', + 'SignatureVersion', 'Timestamp', + 'Version']) + self.assertEquals(api_response, True) + + if __name__ == '__main__': unittest.main()