File: members.py

package info (click to toggle)
python-softlayer 6.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 7,508 kB
  • sloc: python: 57,195; makefile: 133; xml: 97; sh: 59
file content (57 lines) | stat: -rw-r--r-- 2,136 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
"""Manage LBaaS members."""
import click

import SoftLayer
from SoftLayer.CLI import environment
from SoftLayer.exceptions import SoftLayerAPIError


@click.command(cls=SoftLayer.CLI.command.SLCommand, )
@click.argument('identifier')
@click.option('--member', '-m', required=True, help="Member UUID")
@environment.pass_env
def remove(env, identifier, member):
    """Remove a LBaaS member.

    Member UUID can be found from `slcli lb detail`.
    """

    mgr = SoftLayer.LoadBalancerManager(env.client)

    uuid, _ = mgr.get_lbaas_uuid_id(identifier)
    # Get a member ID to remove

    try:
        mgr.delete_lb_member(uuid, member)
        click.secho(f"Member {member} removed", fg='green')
    except SoftLayerAPIError as exception:
        click.secho(f"ERROR: {exception.faultString}", fg='red')


@click.command(cls=SoftLayer.CLI.command.SLCommand, )
@click.argument('identifier')
@click.option('--private/--public', default=True, required=True, help="Private or public IP of the new member.")
@click.option('--member', '-m', required=True, help="Member IP address.")
@click.option('--weight', '-w', default=50, type=int, help="Weight of this member.")
@environment.pass_env
def add(env, identifier, private, member, weight):
    """Add a new LBaaS members."""

    mgr = SoftLayer.LoadBalancerManager(env.client)
    uuid, _ = mgr.get_lbaas_uuid_id(identifier)
    # Get a server ID to add
    to_add = {"weight": weight}
    if private:
        to_add['privateIpAddress'] = member
    else:
        to_add['publicIpAddress'] = member

    try:
        mgr.add_lb_member(uuid, to_add)
        click.secho(f"Member {member} added", fg='green')
    except SoftLayerAPIError as exception:
        if 'publicIpAddress must be a string' in exception.faultString:
            click.secho("This LB requires a Public IP address for its members and none was supplied", fg='red')
        elif 'privateIpAddress must be a string' in exception.faultString:
            click.secho("This LB requires a Private IP address for its members and none was supplied", fg='red')
        click.secho(f"ERROR: {exception.faultString}", fg='red')