Merge "Fix AWS driver equality check"

This commit is contained in:
Zuul 2021-06-23 21:28:15 +00:00 committed by Gerrit Code Review
commit f45817e6ab
3 changed files with 46 additions and 51 deletions

View File

@ -29,17 +29,6 @@ class ProviderCloudImage(ConfigValue):
self.connection_type = None self.connection_type = None
self.connection_port = None self.connection_port = None
def __eq__(self, other):
if isinstance(other, ProviderCloudImage):
return (self.name == other.name
and self.image_id == other.image_id
and self.username == other.username
and self.python_path == other.python_path
and self.shell_type == other.shell_type
and self.connection_type == other.connection_type
and self.connection_port == other.connection_port)
return False
def __repr__(self): def __repr__(self):
return "<ProviderCloudImage %s>" % self.name return "<ProviderCloudImage %s>" % self.name
@ -50,6 +39,8 @@ class ProviderCloudImage(ConfigValue):
class ProviderLabel(ConfigValue): class ProviderLabel(ConfigValue):
ignore_equality = ['pool']
def __init__(self): def __init__(self):
self.name = None self.name = None
self.cloud_image = None self.cloud_image = None
@ -64,27 +55,13 @@ class ProviderLabel(ConfigValue):
self.pool = None self.pool = None
self.tags = None self.tags = None
def __eq__(self, other):
if isinstance(other, ProviderLabel):
# NOTE(Shrews): We intentionally do not compare 'pool' here
# since this causes recursive checks with ProviderPool.
return (other.name == self.name
and other.cloud_image == self.cloud_image
and other.ebs_optimized == self.ebs_optimized
and other.instance_type == self.instance_type
and other.key_name == self.key_name
and other.volume_size == self.volume_size
and other.volume_type == self.volume_type
and other.userdata == self.userdata
and other.iam_instance_profile == self.iam_instance_profile
and other.tags == self.tags)
return False
def __repr__(self): def __repr__(self):
return "<ProviderLabel %s>" % self.name return "<ProviderLabel %s>" % self.name
class ProviderPool(ConfigPool): class ProviderPool(ConfigPool):
ignore_equality = ['provider']
def __init__(self): def __init__(self):
self.name = None self.name = None
self.max_cores = None self.max_cores = None
@ -143,19 +120,6 @@ class ProviderPool(ConfigPool):
] ]
full_config.labels[label['name']].pools.append(self) full_config.labels[label['name']].pools.append(self)
def __eq__(self, other):
if isinstance(other, ProviderPool):
# NOTE(Shrews): We intentionally do not compare 'provider' here
# since this causes recursive checks with OpenStackProviderConfig.
return (super().__eq__(other)
and other.name == self.name
and other.subnet_id == self.subnet_id
and other.security_group_id == self.security_group_id
and other.public_ip == self.public_ip
and other.host_key_checking == self.host_key_checking
and other.labels == self.labels)
return False
def __repr__(self): def __repr__(self):
return "<ProviderPool %s>" % self.name return "<ProviderPool %s>" % self.name
@ -171,17 +135,6 @@ class AwsProviderConfig(ProviderConfig):
self.cloud_images = {} self.cloud_images = {}
super().__init__(provider) super().__init__(provider)
def __eq__(self, other):
if isinstance(other, AwsProviderConfig):
return (super().__eq__(other)
and other.profile_name == self.profile_name
and other.region_name == self.region_name
and other.pools == self.pools
and other.boot_timeout == self.boot_timeout
and other.launch_retries == self.launch_retries
and other.cloud_images == self.cloud_images)
return False
@property @property
def pools(self): def pools(self):
return self.__pools return self.__pools

34
nodepool/tests/fixtures/aws-config.yaml vendored Normal file
View File

@ -0,0 +1,34 @@
zookeeper-servers:
- host: {zookeeper_host}
port: {zookeeper_port}
chroot: {zookeeper_chroot}
zookeeper-tls:
ca: {zookeeper_ca}
cert: {zookeeper_cert}
key: {zookeeper_key}
labels:
- name: ubuntu1404
providers:
- name: ec2-us-west-2
driver: aws
region-name: us-west-2
cloud-images:
- name: ubuntu1404
image-id: ami-1e749f67
username: ubuntu
pools:
- name: main
max-servers: 1
subnet-id: 'subnetid'
security-group-id: 'secgroupid'
node-attributes:
key1: value1
key2: value2
labels:
- name: ubuntu1404
cloud-image: ubuntu1404
instance-type: t3.medium
key-name: zuul

View File

@ -25,6 +25,7 @@ import boto3
from moto import mock_ec2 from moto import mock_ec2
import yaml import yaml
from nodepool import config as nodepool_config
from nodepool import tests from nodepool import tests
from nodepool import zk from nodepool import zk
from nodepool.nodeutils import iterate_timeout from nodepool.nodeutils import iterate_timeout
@ -259,3 +260,10 @@ class TestDriverAws(tests.DBTestCase):
def test_ec2_machine_shell_type(self): def test_ec2_machine_shell_type(self):
self._test_ec2_machine('ubuntu1404-with-shell-type', self._test_ec2_machine('ubuntu1404-with-shell-type',
shell_type="csh") shell_type="csh")
def test_aws_config(self):
configfile = self.setup_config('aws-config.yaml')
config = nodepool_config.loadConfig(configfile)
self.assertIn('ec2-us-west-2', config.providers)
config2 = nodepool_config.loadConfig(configfile)
self.assertEqual(config, config2)