Пример #1
0
 def set_up(self):
     self.old_requests_post = requests.post
     self.old_requests_get = requests.get
     self.old_requests_delete = requests.delete
     requests.post = requests_post
     requests.get = requests_get
     requests.delete = requests_delete
     self.ec2 = Instance()
     self.ec2.id = 'i-foobar'
     self.ec2.private_ip_address = '127.0.0.1'
     self.ec2.private_dns_name = 'ip-127-0-0-1.eu-west-1.compute.internal'
     self.ec2.tags = {
         'aws:cloudformation:stack-name': 'etc-cluster',
         'aws:autoscaling:groupName': 'etc-cluster-postgres'
     }
     self.ec2_member = EtcdMember(self.ec2)
     self.etcd = {
         'id':
         'deadbeef',
         'name':
         'i-foobar2',
         'clientURLs': [],
         'peerURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
     }
     self.etcd_member = EtcdMember(self.etcd)
Пример #2
0
 def setUp(self):
     self.ec2 = MockInstance('i-foobar', '127.0.0.1')
     self.ec2_member = EtcdMember(self.ec2)
     self.etcd = {
         'id':
         'deadbeef',
         'name':
         'i-foobar2',
         'clientURLs': [],
         'peerURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
     }
     self.etcd_member = EtcdMember(self.etcd)
Пример #3
0
 def setUp(self):
     self.ec2 = MockInstance('i-foobar', '127.0.0.1')
     self.ec2_member = EtcdMember(self.ec2)
     self.etcd = {
         'id':
         'deadbeef',
         'name':
         'i-foobar2',
         'clientURLs': [],
         'peerURLs': [
             'http://ip-127-0-0-2.eu-west-1.compute.internal:{}'.format(
                 EtcdMember.DEFAULT_PEER_PORT)
         ],
     }
     self.etcd_member = EtcdMember(self.etcd)
    def test_is_healthy(self):
        private_ip_address = '127.0.0.22'
        private_dns_name = 'ip-{}.eu-west-1.compute.internal'.format(
            private_ip_address.replace('.', '-'))
        url = 'http://' + private_ip_address
        peer_urls = ['{}:{}'.format(url, EtcdMember.DEFAULT_PEER_PORT)]
        me = EtcdMember({
            'id':
            'ifoobari7',
            'name':
            'i-sadfjhg',
            'clientURLs': [
                '{}:{}'.format(private_ip_address,
                               EtcdMember.DEFAULT_CLIENT_PORT)
            ],
            'peerURLs':
            peer_urls
        })
        me.private_ip_address = private_ip_address
        self.assertFalse(self.cluster.is_healthy(me))
        self.cluster.members[-1].instance_id = 'foo'
        self.cluster.members[-1].name = ''
        self.assertFalse(self.cluster.is_healthy(me))

        self.cluster.members[-1].peer_urls = peer_urls
        self.assertTrue(self.cluster.is_healthy(me))
        self.cluster.members.pop()
        self.assertTrue(self.cluster.is_healthy(me))
Пример #5
0
 def test_delete_member(self, res):
     sg = Mock()
     sg.tags = [{
         'Key': 'aws:cloudformation:stack-name',
         'Value': 'etc-cluster'
     }, {
         'Key': 'aws:autoscaling:groupName',
         'Value': 'etc-cluster-postgres'
     }]
     sg.revoke_ingress.side_effect = Exception
     res.return_value.security_groups.all.return_value = [sg]
     member = EtcdMember({
         'id':
         'ifoobari7',
         'name':
         'i-sadfjhg',
         'clientURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_CLIENT_PORT)],
         'peerURLs': [
             'http://ip-127-0-0-2.eu-west-1.compute.internal:{}'.format(
                 EtcdMember.DEFAULT_PEER_PORT)
         ]
     })
     member.peer_urls[0] = member.peer_urls[0].replace('2', '1')
     self.assertFalse(self.ec2_member.delete_member(member))
Пример #6
0
 def test_delete_member(self):
     member = EtcdMember({
         'id':
         'ifoobari7',
         'name':
         'i-sadfjhg',
         'clientURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_CLIENT_PORT)],
         'peerURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
     })
     self.assertEqual(self.ec2_member.delete_member(member), False)
Пример #7
0
 def test_add_member(self):
     member = EtcdMember({
         'id':
         '',
         'name':
         '',
         'clientURLs': [],
         'peerURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
     })
     self.assertEqual(self.ec2_member.add_member(member), True)
     member.addr = '127.0.0.4'
     self.assertEqual(self.ec2_member.add_member(member), False)
Пример #8
0
 def test_add_member(self):
     member = EtcdMember({
         'id':
         '',
         'name':
         '',
         'clientURLs': [],
         'peerURLs': [
             'http://ip-127-0-0-2.eu-west-1.compute.internal:{}'.format(
                 EtcdMember.DEFAULT_PEER_PORT)
         ],
     })
     self.assertTrue(self.ec2_member.add_member(member))
     member.peer_urls[0] = member.peer_urls[0].replace('2', '4')
     self.assertFalse(self.ec2_member.add_member(member))
 def test_is_healthy(self):
     me = EtcdMember({
         'id':
         'ifoobari7',
         'name':
         'i-sadfjhg',
         'clientURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_CLIENT_PORT)],
         'peerURLs':
         ['http://127.0.0.2:{}'.format(EtcdMember.DEFAULT_PEER_PORT)],
     })
     self.assertFalse(self.cluster.is_healthy(me))
     self.cluster.members[-1].instance_id = 'foo'
     self.cluster.members[-1].name = ''
     self.assertFalse(self.cluster.is_healthy(me))
     self.cluster.members[-1].peer_urls = ['http://127.0.0.2:2380']
     self.assertTrue(self.cluster.is_healthy(me))
     self.cluster.members.pop()
     self.assertTrue(self.cluster.is_healthy(me))
Пример #10
0
 def test_is_healthy(self):
     public_dns_name = 'ec2-52-0-0-128.eu-west-1.compute.amazonaws.com'
     url = 'http://' + public_dns_name
     peer_urls = ['{}:{}'.format(url, EtcdMember.DEFAULT_PEER_PORT)]
     me = EtcdMember({
         'id':
         'ifoobari0815',
         'name':
         'i-sadfjhg',
         'clientURLs':
         ['{}:{}'.format(url, EtcdMember.DEFAULT_CLIENT_PORT)],
         'peerURLs':
         peer_urls
     })
     me.public_dns_name = public_dns_name
     self.assertFalse(self.cluster.is_healthy(me))
     self.cluster.members[-1].instance_id = 'foo'
     self.cluster.members[-1].name = ''
     self.assertFalse(self.cluster.is_healthy(me))
     self.cluster.members[-1].peer_urls = peer_urls
     self.assertTrue(self.cluster.is_healthy(me))
     self.cluster.members.pop()
     self.assertTrue(self.cluster.is_healthy(me))