Esempio n. 1
0
    def _to_balancer(self, el):
        name = findtext(element=el, xpath='LoadBalancerName', namespace=NS)
        id = findtext(element=el, xpath='LoadBalancerArn', namespace=NS)
        dns_name = findtext(el, xpath='DNSName', namespace=NS)

        balancer = LoadBalancer(id=id,
                                name=name,
                                state=State.UNKNOWN,
                                ip=dns_name,
                                port=None,
                                driver=self.connection.driver)

        extra = {
            'listeners': self._ex_get_balancer_listeners(balancer),
            'target_groups': self._ex_get_balancer_target_groups(balancer),
            'tags': self._ex_get_balancer_tags(balancer)
        }
        balancer.extra = extra
        if len(extra['listeners']) > 0:
            balancer.port = extra['listeners'][0]['port']
        else:
            balancer.port = None
        balancer._members = self._ex_get_balancer_memebers(balancer)

        return balancer
Esempio n. 2
0
    def test_balancer_detach_member(self):
        balancer = LoadBalancer(23530, None, None, None, None, None)
        member = self.driver.balancer_list_members(balancer)[0]

        ret = self.driver.balancer_detach_member(balancer, member)

        self.assertTrue(ret)
Esempio n. 3
0
    def test_balancer_attach_member(self):
        balancer = LoadBalancer(23530, None, None, None, None, None)
        member = self.driver.balancer_attach_member(balancer,
                    Member(None, ip='10.0.0.75', port='80'))

        self.assertEquals(member.ip, '10.0.0.75')
        self.assertEquals(member.port, 80)
Esempio n. 4
0
    def create_balancer(self,
                        name,
                        port,
                        protocol,
                        algorithm,
                        members,
                        ex_members_availability_zones=None):
        if ex_members_availability_zones is None:
            ex_members_availability_zones = ['a']

        params = {
            'Action': 'CreateLoadBalancer',
            'LoadBalancerName': name,
            'Listeners.member.1.InstancePort': str(port),
            'Listeners.member.1.InstanceProtocol': protocol.upper(),
            'Listeners.member.1.LoadBalancerPort': str(port),
            'Listeners.member.1.Protocol': protocol.upper(),
        }

        for i, z in enumerate(ex_members_availability_zones):
            zone = ''.join((self.region, z))
            params['AvailabilityZones.member.%d' % (i + 1)] = zone

        data = self.connection.request(ROOT, params=params).object

        balancer = LoadBalancer(id=name,
                                name=name,
                                state=State.PENDING,
                                ip=findtext(element=data,
                                            xpath='DNSName',
                                            namespace=NS),
                                port=port,
                                driver=self.connection.driver)
        balancer._members = []
        return balancer
Esempio n. 5
0
    def _to_balancer(self, el):
        _id = findtext(element=el,
                       xpath='LoadBalancerId',
                       namespace=self.namespace)
        name = findtext(element=el,
                        xpath='LoadBalancerName',
                        namespace=self.namespace)
        status = findtext(element=el,
                          xpath='LoadBalancerStatus',
                          namespace=self.namespace)
        state = STATE_MAPPINGS.get(status, State.UNKNOWN)
        address = findtext(element=el,
                           xpath='Address',
                           namespace=self.namespace)
        extra = self._get_extra_dict(el,
                                     RESOURCE_EXTRA_ATTRIBUTES_MAP['balancer'])

        balancer = LoadBalancer(id=_id,
                                name=name,
                                state=state,
                                ip=address,
                                port=None,
                                driver=self,
                                extra=extra)
        return balancer
Esempio n. 6
0
    def _to_balancer(self, element):
        ipaddress = findtext(element, 'listenerIpAddress', TYPES_URN)
        name = findtext(element, 'name', TYPES_URN)
        port = findtext(element, 'port', TYPES_URN)
        extra = {}

        pool_element = element.find(fixxpath('pool', TYPES_URN))
        if pool_element is None:
            extra['pool_id'] = None

        else:
            extra['pool_id'] = pool_element.get('id')

        extra['network_domain_id'] = findtext(element, 'networkDomainId',
                                              TYPES_URN)

        balancer = LoadBalancer(id=element.get('id'),
                                name=name,
                                state=self._VALUE_TO_STATE_MAP.get(
                                    findtext(element, 'state', TYPES_URN),
                                    State.UNKNOWN),
                                ip=ipaddress,
                                port=port,
                                driver=self.connection.driver,
                                extra=extra)

        return balancer
Esempio n. 7
0
    def _to_balancer(self, element):
        ipaddress = findtext(element, "listenerIpAddress", TYPES_URN)
        name = findtext(element, "name", TYPES_URN)
        port = findtext(element, "port", TYPES_URN)
        extra = {}

        pool_element = element.find(fixxpath("pool", TYPES_URN))
        if pool_element is None:
            extra["pool_id"] = None

        else:
            extra["pool_id"] = pool_element.get("id")

        extra["network_domain_id"] = findtext(element, "networkDomainId",
                                              TYPES_URN)

        balancer = LoadBalancer(
            id=element.get("id"),
            name=name,
            state=self._VALUE_TO_STATE_MAP.get(
                findtext(element, "state", TYPES_URN), State.UNKNOWN),
            ip=ipaddress,
            port=port,
            driver=self.connection.driver,
            extra=extra,
        )

        return balancer
Esempio n. 8
0
 def _to_balancer(self, data):
     return LoadBalancer(id=data['id'],
                         name=data['name'],
                         state=self.LB_STATE_MAP.get(
                             data['status'], State.UNKNOWN),
                         ip=self._public_ip(data),
                         port=data['listeners'][0]['in'],
                         driver=self.connection.driver)
Esempio n. 9
0
 def _to_balancer(self, data):
     return LoadBalancer(
         id=data["id"],
         name=data["name"],
         state=self.LB_STATE_MAP.get(data["status"], State.UNKNOWN),
         ip=self._public_ip(data),
         port=data["listeners"][0]["in"],
         driver=self.connection.driver,
     )
Esempio n. 10
0
 def _to_balancer(self, el):
     lb = LoadBalancer(id=el.get("id"),
                       name=el["name"],
                       state=self.LB_STATE_MAP.get(el["state"]["name"],
                                                   State.UNKNOWN),
                       ip=el["virtualip"]["ip"]["ip"],
                       port=el["virtualip"]["port"],
                       driver=self.connection.driver)
     return lb
Esempio n. 11
0
 def test_update_balancer_port(self):
     balancer = LoadBalancer(id='3131',
                             name='LB_update',
                             state='PENDING_UPDATE',
                             ip='10.34.4.3',
                             port=80,
                             driver=self.driver)
     updated_balancer = self.driver.update_balancer(balancer, port=1337)
     self.assertEqual(1337, updated_balancer.port)
Esempio n. 12
0
 def test_ex_update_balancer_no_poll_port(self):
     balancer = LoadBalancer(id='3131',
                             name='LB_update',
                             state='PENDING_UPDATE',
                             ip='10.34.4.3',
                             port=80,
                             driver=self.driver)
     action_succeeded = self.driver.ex_update_balancer_no_poll(balancer,
                                                               port=1337)
     self.assertTrue(action_succeeded)
Esempio n. 13
0
 def test_ex_update_balancer_no_poll_algorithm(self):
     balancer = LoadBalancer(id='3133',
                             name='LB_update',
                             state='PENDING_UPDATE',
                             ip='10.34.4.3',
                             port=80,
                             driver=self.driver)
     action_succeeded = self.driver.ex_update_balancer_no_poll(
         balancer, algorithm=Algorithm.ROUND_ROBIN)
     self.assertTrue(action_succeeded)
Esempio n. 14
0
    def test_balancer_attach_member(self):
        balancer = LoadBalancer(23530, None, None, None, None, self.driver)
        member = Member(None, ip='10.0.0.75', port='80')
        member1 = self.driver.balancer_attach_member(balancer, member=member)
        member2 = balancer.attach_member(member=member)

        self.assertEqual(member1.ip, '10.0.0.75')
        self.assertEqual(member1.port, 80)
        self.assertEqual(member2.ip, '10.0.0.75')
        self.assertEqual(member2.port, 80)
Esempio n. 15
0
 def _to_balancer(self, obj):
     balancer = LoadBalancer(id=obj['id'],
                             name=obj['name'],
                             state=obj['state'],
                             ip=obj['publicip'],
                             port=obj['publicport'],
                             driver=self.connection.driver)
     balancer.ex_private_port = obj['privateport']
     balancer.ex_public_ip_id = obj['publicipid']
     return balancer
Esempio n. 16
0
 def test_update_balancer_name(self):
     balancer = LoadBalancer(id='3132',
                             name='LB_update',
                             state='PENDING_UPDATE',
                             ip='10.34.4.3',
                             port=80,
                             driver=self.driver)
     updated_balancer = self.driver.update_balancer(balancer,
                                                    name='new_lb_name')
     self.assertEqual('new_lb_name', updated_balancer.name)
Esempio n. 17
0
 def test_update_balancer_protocol(self):
     balancer = LoadBalancer(id='3130',
                             name='LB_update',
                             state='PENDING_UPDATE',
                             ip='10.34.4.3',
                             port=80,
                             driver=self.driver)
     updated_balancer = self.driver.update_balancer(balancer,
                                                    protocol='HTTPS')
     self.assertEqual('HTTPS', updated_balancer.extra['protocol'])
Esempio n. 18
0
    def test_balancer_attach_compute_node(self):
        balancer = LoadBalancer(23530, None, None, None, None, self.driver)
        node = Node(id='1', name='test', state=None, public_ips=['10.0.0.75'],
                    private_ips=[], driver=DummyNodeDriver)
        member1 = self.driver.balancer_attach_compute_node(balancer, node)
        member2 = balancer.attach_compute_node(node)

        self.assertEqual(member1.ip, '10.0.0.75')
        self.assertEqual(member1.port, 80)
        self.assertEqual(member2.ip, '10.0.0.75')
        self.assertEqual(member2.port, 80)
Esempio n. 19
0
 def test_update_balancer_algorithm(self):
     balancer = LoadBalancer(id='3133',
                             name='LB_update',
                             state='PENDING_UPDATE',
                             ip='10.34.4.3',
                             port=80,
                             driver=self.driver)
     updated_balancer = self.driver.update_balancer(
         balancer, algorithm=Algorithm.ROUND_ROBIN)
     self.assertEqual(Algorithm.ROUND_ROBIN,
                      updated_balancer.extra['algorithm'])
Esempio n. 20
0
 def _to_balancer(self, obj):
     balancer = LoadBalancer(
         id=obj["id"],
         name=obj["name"],
         state=self.LB_STATE_MAP.get(obj["state"], State.UNKNOWN),
         ip=obj["publicip"],
         port=obj["publicport"],
         driver=self.connection.driver,
     )
     balancer.ex_private_port = obj["privateport"]
     balancer.ex_public_ip_id = obj["publicipid"]
     return balancer
Esempio n. 21
0
 def test_destroy_balancer(self):
     extra = {
         'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
         'network_domain_id': '1234'
     }
     balancer = LoadBalancer(id='234',
                             name='test',
                             state=State.RUNNING,
                             ip='1.2.3.4',
                             port=1234,
                             driver=self.driver,
                             extra=extra)
     response = self.driver.destroy_balancer(balancer)
     self.assertEqual(response, True)
Esempio n. 22
0
 def test_ex_update_balancer_no_poll_bad_algorithm_exception(self):
     balancer = LoadBalancer(id='3134',
                             name='LB_update',
                             state='PENDING_UPDATE',
                             ip='10.34.4.3',
                             port=80,
                             driver=self.driver)
     try:
         self.driver.update_balancer(balancer,
                                     algorithm='HAVE_MERCY_ON_OUR_SERVERS')
     except LibcloudError:
         pass
     else:
         self.fail('Should have thrown exception with bad algorithm value')
Esempio n. 23
0
 def __init__(self):
     self._TEST_BALANCER = LoadBalancer(
         id='test_id',
         name='test_balancer',
         state=0,  # RUNNING
         ip='1.2.3.4',
         port=80,
         driver=self,
         extra={})
     self._TEST_MEMBER = Member(id='member_id',
                                ip='12.3.4.5',
                                port=443,
                                balancer=self._TEST_BALANCER,
                                extra=None)
Esempio n. 24
0
def test_destroy_balancer(driver):
    extra = {
        "pool_id": "4d360b1f-bc2c-4ab7-9884-1f03ba2768f7",
        "network_domain_id": "1234",
    }
    balancer = LoadBalancer(
        id="234",
        name="test",
        state=State.RUNNING,
        ip="1.2.3.4",
        port=1234,
        driver=driver,
        extra=extra,
    )
    response = driver.destroy_balancer(balancer)
    assert response is True
Esempio n. 25
0
 def test_balancer_list_members(self):
     extra = {
         'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
         'network_domain_id': '1234'
     }
     balancer = LoadBalancer(id='234',
                             name='test',
                             state=State.RUNNING,
                             ip='1.2.3.4',
                             port=1234,
                             driver=self.driver,
                             extra=extra)
     members = self.driver.balancer_list_members(balancer)
     self.assertEqual(2, len(members))
     self.assertEqual(members[0].ip, '10.0.3.13')
     self.assertEqual(members[0].id, '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0')
     self.assertEqual(members[0].port, 9889)
Esempio n. 26
0
def test_balancer_list_members(driver):
    extra = {
        'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
        'network_domain_id': '1234'
    }
    balancer = LoadBalancer(id='234',
                            name='test',
                            state=State.RUNNING,
                            ip='1.2.3.4',
                            port=1234,
                            driver=driver,
                            extra=extra)
    members = driver.balancer_list_members(balancer)
    assert 2 == len(members)
    assert members[0].ip == '10.0.3.13'
    assert members[0].id == '3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0'
    assert members[0].port == 9889
 def __init__(self):  # pylint: disable=W0231
     self._TEST_BALANCER = LoadBalancer(
         id="test_id",
         name="test_balancer",
         state=0,  # RUNNING
         ip="1.2.3.4",
         port=80,
         driver=self,
         extra={},
     )
     self._TEST_MEMBER = Member(
         id="member_id",
         ip="12.3.4.5",
         port=443,
         balancer=self._TEST_BALANCER,
         extra=None,
     )
Esempio n. 28
0
    def _to_balancer(self, el):
        ip = None
        port = None

        if 'virtualIps' in el:
            ip = el["virtualIps"][0]["address"]

        if 'port' in el:
            port = el["port"]

        lb = LoadBalancer(id=el["id"],
                          name=el["name"],
                          state=self.LB_STATE_MAP.get(el["status"],
                                                      State.UNKNOWN),
                          ip=ip,
                          port=port,
                          driver=self.connection.driver)
        return lb
Esempio n. 29
0
def test_balancer_list_members(driver):
    extra = {
        "pool_id": "4d360b1f-bc2c-4ab7-9884-1f03ba2768f7",
        "network_domain_id": "1234",
    }
    balancer = LoadBalancer(
        id="234",
        name="test",
        state=State.RUNNING,
        ip="1.2.3.4",
        port=1234,
        driver=driver,
        extra=extra,
    )
    members = driver.balancer_list_members(balancer)
    assert 2 == len(members)
    assert members[0].ip == "10.0.3.13"
    assert members[0].id == "3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0"
    assert members[0].port == 9889
Esempio n. 30
0
 def test_balancer_detach_member(self):
     extra = {
         'pool_id': '4d360b1f-bc2c-4ab7-9884-1f03ba2768f7',
         'network_domain_id': '1234'
     }
     balancer = LoadBalancer(id='234',
                             name='test',
                             state=State.RUNNING,
                             ip='1.2.3.4',
                             port=1234,
                             driver=self.driver,
                             extra=extra)
     member = Member(id='3dd806a2-c2c8-4c0c-9a4f-5219ea9266c0',
                     ip='112.12.2.2',
                     port=80,
                     balancer=balancer,
                     extra=None)
     result = self.driver.balancer_detach_member(balancer, member)
     self.assertEqual(result, True)