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')
|