mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
Merge pull request #30867 from rallytime/boto-utils-fix
Pass in 'pack' variable to utils.boto.assign_funcs function from ALL boto modules
This commit is contained in:
commit
89bac9076a
@ -78,7 +78,7 @@ def __virtual__():
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
|
||||
__utils__['boto.assign_funcs'](__name__, 'asg', module='ec2.autoscale')
|
||||
__utils__['boto.assign_funcs'](__name__, 'asg', module='ec2.autoscale', pack=__salt__)
|
||||
setattr(sys.modules[__name__], '_get_ec2_conn',
|
||||
__utils__['boto.get_connection_func']('ec2'))
|
||||
return True
|
||||
|
@ -64,7 +64,7 @@ def __virtual__():
|
||||
|
||||
def __init__(opts):
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'cfn', module='cloudformation')
|
||||
__utils__['boto.assign_funcs'](__name__, 'cfn', module='cloudformation', pack=__salt__)
|
||||
|
||||
|
||||
def exists(name, region=None, key=None, keyid=None, profile=None):
|
||||
|
@ -76,7 +76,8 @@ def __virtual__():
|
||||
if not HAS_BOTO:
|
||||
return (False, 'The boto_cloudwatch module cannot be loaded: boto libraries are unavailable.')
|
||||
__utils__['boto.assign_funcs'](__name__, 'cloudwatch',
|
||||
module='ec2.cloudwatch')
|
||||
module='ec2.cloudwatch',
|
||||
pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -75,7 +75,7 @@ def __virtual__():
|
||||
'''
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
__utils__['boto.assign_funcs'](__name__, 'dynamodb2')
|
||||
__utils__['boto.assign_funcs'](__name__, 'dynamodb2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -83,7 +83,7 @@ def __virtual__():
|
||||
elif _LooseVersion(boto.__version__) < _LooseVersion(required_boto_version):
|
||||
return False
|
||||
else:
|
||||
__utils__['boto.assign_funcs'](__name__, 'ec2')
|
||||
__utils__['boto.assign_funcs'](__name__, 'ec2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -74,7 +74,7 @@ def __virtual__():
|
||||
'''
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
__utils__['boto.assign_funcs'](__name__, 'elasticache')
|
||||
__utils__['boto.assign_funcs'](__name__, 'elasticache', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -86,7 +86,7 @@ def __virtual__():
|
||||
'''
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
__utils__['boto.assign_funcs'](__name__, 'elb', module='ec2.elb')
|
||||
__utils__['boto.assign_funcs'](__name__, 'elb', module='ec2.elb', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -67,7 +67,7 @@ def __virtual__():
|
||||
'''
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
__utils__['boto.assign_funcs'](__name__, 'iam')
|
||||
__utils__['boto.assign_funcs'](__name__, 'iam', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -80,7 +80,7 @@ def __virtual__():
|
||||
def __init__(opts):
|
||||
salt.utils.compat.pack_dunder(__name__)
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'kms')
|
||||
__utils__['boto.assign_funcs'](__name__, 'kms', pack=__salt__)
|
||||
|
||||
|
||||
def create_alias(alias_name, target_key_id, region=None, key=None, keyid=None,
|
||||
|
@ -70,7 +70,7 @@ def __virtual__():
|
||||
'''
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
__utils__['boto.assign_funcs'](__name__, 'rds', module='rds2')
|
||||
__utils__['boto.assign_funcs'](__name__, 'rds', module='rds2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -88,7 +88,7 @@ def __virtual__():
|
||||
def __init__(opts):
|
||||
salt.utils.compat.pack_dunder(__name__)
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'route53')
|
||||
__utils__['boto.assign_funcs'](__name__, 'route53', pack=__salt__)
|
||||
|
||||
|
||||
def _get_split_zone(zone, _conn, private_zone):
|
||||
|
@ -85,7 +85,7 @@ def __virtual__():
|
||||
elif _LooseVersion(boto.__version__) < _LooseVersion(required_boto_version):
|
||||
return False
|
||||
else:
|
||||
__utils__['boto.assign_funcs'](__name__, 'ec2')
|
||||
__utils__['boto.assign_funcs'](__name__, 'ec2', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -66,7 +66,7 @@ def __virtual__():
|
||||
'''
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
__utils__['boto.assign_funcs'](__name__, 'sns')
|
||||
__utils__['boto.assign_funcs'](__name__, 'sns', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -73,7 +73,7 @@ def __virtual__():
|
||||
'''
|
||||
if not HAS_BOTO:
|
||||
return False
|
||||
__utils__['boto.assign_funcs'](__name__, 'sqs')
|
||||
__utils__['boto.assign_funcs'](__name__, 'sqs', pack=__salt__)
|
||||
return True
|
||||
|
||||
|
||||
|
@ -125,10 +125,10 @@ def __virtual__():
|
||||
return True
|
||||
|
||||
|
||||
def __init__(opts, pack=None):
|
||||
def __init__(opts):
|
||||
salt.utils.compat.pack_dunder(__name__)
|
||||
if HAS_BOTO:
|
||||
__utils__['boto.assign_funcs'](__name__, 'vpc', pack=pack)
|
||||
__utils__['boto.assign_funcs'](__name__, 'vpc', pack=__salt__)
|
||||
|
||||
|
||||
def _check_vpc(vpc_id, vpc_name, region, key, keyid, profile):
|
||||
|
@ -63,6 +63,8 @@ except ImportError:
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
__salt__ = {}
|
||||
|
||||
|
||||
def __virtual__():
|
||||
'''
|
||||
|
@ -73,7 +73,8 @@ utils = salt.loader.utils(opts, whitelist=['boto'])
|
||||
mods = salt.loader.minion_mods(opts)
|
||||
|
||||
boto_vpc.__utils__ = utils
|
||||
boto_vpc.__init__(opts, pack=mods)
|
||||
boto_vpc.__salt__ = {}
|
||||
boto_vpc.__init__(opts)
|
||||
|
||||
|
||||
def _has_required_boto():
|
||||
@ -726,7 +727,8 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
Tests checking subnet existence without any filters
|
||||
'''
|
||||
with self.assertRaisesRegexp(SaltInvocationError,
|
||||
'At least one of the following must be specified: subnet id, cidr, subnet_name, tags, or zones.'):
|
||||
'At least one of the following must be specified: '
|
||||
'subnet id, cidr, subnet_name, tags, or zones.'):
|
||||
boto_vpc.subnet_exists(**conn_parameters)
|
||||
|
||||
@mock_ec2
|
||||
@ -737,7 +739,10 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
vpc = self._create_vpc()
|
||||
subnet = self._create_subnet(vpc.id)
|
||||
|
||||
describe_subnet_results = boto_vpc.describe_subnet(subnet_id=subnet.id)
|
||||
describe_subnet_results = boto_vpc.describe_subnet(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
subnet_id=subnet.id)
|
||||
self.assertEqual(set(describe_subnet_results['subnet'].keys()),
|
||||
set(['id', 'cidr_block', 'availability_zone', 'tags']))
|
||||
|
||||
@ -746,9 +751,12 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
'''
|
||||
Tests describing a non-existent subnet by id.
|
||||
'''
|
||||
vpc = self._create_vpc()
|
||||
self._create_vpc()
|
||||
|
||||
describe_subnet_results = boto_vpc.describe_subnet(subnet_id='subnet-a1b2c3')
|
||||
describe_subnet_results = boto_vpc.describe_subnet(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
subnet_id='subnet-a1b2c3')
|
||||
self.assertEqual(describe_subnet_results['subnet'], None)
|
||||
|
||||
@mock_ec2
|
||||
@ -757,9 +765,12 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
Tests describing a subnet by name.
|
||||
'''
|
||||
vpc = self._create_vpc()
|
||||
subnet = self._create_subnet(vpc.id, name='test')
|
||||
self._create_subnet(vpc.id, name='test')
|
||||
|
||||
describe_subnet_results = boto_vpc.describe_subnet(subnet_name='test')
|
||||
describe_subnet_results = boto_vpc.describe_subnet(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
subnet_name='test')
|
||||
self.assertEqual(set(describe_subnet_results['subnet'].keys()),
|
||||
set(['id', 'cidr_block', 'availability_zone', 'tags']))
|
||||
|
||||
@ -768,9 +779,12 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
'''
|
||||
Tests describing a non-existent subnet by id.
|
||||
'''
|
||||
vpc = self._create_vpc()
|
||||
self._create_vpc()
|
||||
|
||||
describe_subnet_results = boto_vpc.describe_subnet(subnet_name='test')
|
||||
describe_subnet_results = boto_vpc.describe_subnet(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
subnet_name='test')
|
||||
self.assertEqual(describe_subnet_results['subnet'], None)
|
||||
|
||||
@mock_ec2
|
||||
@ -782,7 +796,10 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
subnet1 = self._create_subnet(vpc.id)
|
||||
subnet2 = self._create_subnet(vpc.id)
|
||||
|
||||
describe_subnet_results = boto_vpc.describe_subnets(subnet_ids=[subnet1.id, subnet2.id])
|
||||
describe_subnet_results = boto_vpc.describe_subnets(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
subnet_ids=[subnet1.id, subnet2.id])
|
||||
self.assertEqual(len(describe_subnet_results['subnets']), 2)
|
||||
self.assertEqual(set(describe_subnet_results['subnets'][0].keys()),
|
||||
set(['id', 'cidr_block', 'availability_zone', 'tags']))
|
||||
@ -793,10 +810,13 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
Tests describing multiple subnets by id.
|
||||
'''
|
||||
vpc = self._create_vpc()
|
||||
subnet1 = self._create_subnet(vpc.id, name='subnet1')
|
||||
subnet2 = self._create_subnet(vpc.id, name='subnet2')
|
||||
self._create_subnet(vpc.id, name='subnet1')
|
||||
self._create_subnet(vpc.id, name='subnet2')
|
||||
|
||||
describe_subnet_results = boto_vpc.describe_subnets(subnet_names=['subnet1', 'subnet2'])
|
||||
describe_subnet_results = boto_vpc.describe_subnets(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
subnet_names=['subnet1', 'subnet2'])
|
||||
self.assertEqual(len(describe_subnet_results['subnets']), 2)
|
||||
self.assertEqual(set(describe_subnet_results['subnets'][0].keys()),
|
||||
set(['id', 'cidr_block', 'availability_zone', 'tags']))
|
||||
@ -808,7 +828,10 @@ class BotoVpcSubnetsTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
'''
|
||||
vpc = self._create_vpc()
|
||||
self._create_subnet(vpc.id, name='subnet1', availability_zone='us-east-1a')
|
||||
describe_subnet_results = boto_vpc.describe_subnets(subnet_names=['subnet1'])
|
||||
describe_subnet_results = boto_vpc.describe_subnets(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
subnet_names=['subnet1'])
|
||||
self.assertEqual(describe_subnet_results['subnets'][0]['availability_zone'], 'us-east-1a')
|
||||
|
||||
|
||||
@ -825,7 +848,9 @@ class BotoVpcInternetGatewayTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
Tests creating an internet gateway successfully (with no vpc id or name)
|
||||
'''
|
||||
|
||||
igw_creation_result = boto_vpc.create_internet_gateway()
|
||||
igw_creation_result = boto_vpc.create_internet_gateway(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key)
|
||||
self.assertTrue(igw_creation_result.get('created'))
|
||||
|
||||
@mock_ec2
|
||||
@ -834,7 +859,10 @@ class BotoVpcInternetGatewayTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
Tests that creating an internet gateway for a non-existent VPC fails.
|
||||
'''
|
||||
|
||||
igw_creation_result = boto_vpc.create_internet_gateway(vpc_name='non-existent-vpc')
|
||||
igw_creation_result = boto_vpc.create_internet_gateway(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
vpc_name='non-existent-vpc')
|
||||
self.assertTrue('error' in igw_creation_result)
|
||||
|
||||
@mock_ec2
|
||||
@ -845,7 +873,10 @@ class BotoVpcInternetGatewayTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
|
||||
self._create_vpc(name='test-vpc')
|
||||
|
||||
igw_creation_result = boto_vpc.create_internet_gateway(vpc_name='test-vpc')
|
||||
igw_creation_result = boto_vpc.create_internet_gateway(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
vpc_name='test-vpc')
|
||||
|
||||
self.assertTrue(igw_creation_result.get('created'))
|
||||
|
||||
@ -857,7 +888,10 @@ class BotoVpcInternetGatewayTestCase(BotoVpcTestCaseBase, BotoVpcTestCaseMixin):
|
||||
|
||||
vpc = self._create_vpc()
|
||||
|
||||
igw_creation_result = boto_vpc.create_internet_gateway(vpc_id=vpc.id)
|
||||
igw_creation_result = boto_vpc.create_internet_gateway(region=region,
|
||||
key=secret_key,
|
||||
keyid=access_key,
|
||||
vpc_id=vpc.id)
|
||||
|
||||
self.assertTrue(igw_creation_result.get('created'))
|
||||
|
||||
|
@ -104,7 +104,8 @@ class BotoVpcTestCase(BotoVpcStateTestCaseBase, BotoVpcTestCaseMixin):
|
||||
'''
|
||||
Tests present on a VPC that does not exist.
|
||||
'''
|
||||
vpc_present_result = salt_states['boto_vpc.present']('test', cidr_block)
|
||||
with patch.dict('salt.utils.boto.__salt__', funcs):
|
||||
vpc_present_result = salt_states['boto_vpc.present']('test', cidr_block)
|
||||
|
||||
self.assertTrue(vpc_present_result['result'])
|
||||
self.assertEqual(vpc_present_result['changes']['new']['vpc']['state'], 'available')
|
||||
@ -129,14 +130,16 @@ class BotoVpcTestCase(BotoVpcStateTestCaseBase, BotoVpcTestCaseMixin):
|
||||
'''
|
||||
Tests absent on a VPC that does not exist.
|
||||
'''
|
||||
vpc_absent_result = salt_states['boto_vpc.absent']('test')
|
||||
with patch.dict('salt.utils.boto.__salt__', funcs):
|
||||
vpc_absent_result = salt_states['boto_vpc.absent']('test')
|
||||
self.assertTrue(vpc_absent_result['result'])
|
||||
self.assertEqual(vpc_absent_result['changes'], {})
|
||||
|
||||
@mock_ec2
|
||||
def test_absent_when_vpc_exists(self):
|
||||
vpc = self._create_vpc(name='test')
|
||||
vpc_absent_result = salt_states['boto_vpc.absent']('test')
|
||||
with patch.dict('salt.utils.boto.__salt__', funcs):
|
||||
vpc_absent_result = salt_states['boto_vpc.absent']('test')
|
||||
self.assertTrue(vpc_absent_result['result'])
|
||||
self.assertEqual(vpc_absent_result['changes']['new']['vpc'], None)
|
||||
|
||||
@ -166,8 +169,9 @@ class BotoVpcResourceTestCaseMixin(BotoVpcTestCaseMixin):
|
||||
Tests present on a resource that does not exist.
|
||||
'''
|
||||
vpc = self._create_vpc(name='test')
|
||||
resource_present_result = salt_states['boto_vpc.{0}_present'.format(self.resource_type)](
|
||||
name='test', vpc_name='test', **self.extra_kwargs)
|
||||
with patch.dict('salt.utils.boto.__salt__', funcs):
|
||||
resource_present_result = salt_states['boto_vpc.{0}_present'.format(self.resource_type)](
|
||||
name='test', vpc_name='test', **self.extra_kwargs)
|
||||
|
||||
self.assertTrue(resource_present_result['result'])
|
||||
|
||||
@ -178,8 +182,9 @@ class BotoVpcResourceTestCaseMixin(BotoVpcTestCaseMixin):
|
||||
def test_present_when_resource_exists(self):
|
||||
vpc = self._create_vpc(name='test')
|
||||
resource = self._create_resource(vpc_id=vpc.id, name='test')
|
||||
resource_present_result = salt_states['boto_vpc.{0}_present'.format(self.resource_type)](
|
||||
name='test', vpc_name='test', **self.extra_kwargs)
|
||||
with patch.dict('salt.utils.boto.__salt__', funcs):
|
||||
resource_present_result = salt_states['boto_vpc.{0}_present'.format(self.resource_type)](
|
||||
name='test', vpc_name='test', **self.extra_kwargs)
|
||||
self.assertTrue(resource_present_result['result'])
|
||||
self.assertEqual(resource_present_result['changes'], {})
|
||||
|
||||
@ -199,7 +204,8 @@ class BotoVpcResourceTestCaseMixin(BotoVpcTestCaseMixin):
|
||||
'''
|
||||
Tests absent on a resource that does not exist.
|
||||
'''
|
||||
resource_absent_result = salt_states['boto_vpc.{0}_absent'.format(self.resource_type)]('test')
|
||||
with patch.dict('salt.utils.boto.__salt__', funcs):
|
||||
resource_absent_result = salt_states['boto_vpc.{0}_absent'.format(self.resource_type)]('test')
|
||||
self.assertTrue(resource_absent_result['result'])
|
||||
self.assertEqual(resource_absent_result['changes'], {})
|
||||
|
||||
@ -208,7 +214,8 @@ class BotoVpcResourceTestCaseMixin(BotoVpcTestCaseMixin):
|
||||
vpc = self._create_vpc(name='test')
|
||||
self._create_resource(vpc_id=vpc.id, name='test')
|
||||
|
||||
resource_absent_result = salt_states['boto_vpc.{0}_absent'.format(self.resource_type)]('test')
|
||||
with patch.dict('salt.utils.boto.__salt__', funcs):
|
||||
resource_absent_result = salt_states['boto_vpc.{0}_absent'.format(self.resource_type)]('test')
|
||||
self.assertTrue(resource_absent_result['result'])
|
||||
self.assertEqual(resource_absent_result['changes']['new'][self.resource_type], None)
|
||||
exists = funcs['boto_vpc.resource_exists'](self.resource_type, 'test').get('exists')
|
||||
|
Loading…
Reference in New Issue
Block a user