Beispiel #1
0
def delete_external_network(ctx, name):
    try:
        restore_session(ctx)
        client = ctx.obj['client']

        platform = Platform(client)
        task = platform.delete_external_network(name=name)

        stdout(task, ctx)
        stdout('External network deleted successfully.', ctx)
    except Exception as e:
        stderr(e, ctx)
Beispiel #2
0
    def test_9998_teardown(self):
        """Test the method Platform.delete_external_network().

        Invoke the method for the external network created by setup.

        This test passes if the task for deleting the external network
        succeeds.
        """
        logger = Environment.get_default_logger()
        platform = Platform(TestExtNet._sys_admin_client)
        task = platform.delete_external_network(TestExtNet._name)
        TestExtNet._sys_admin_client.get_task_monitor().wait_for_success(
            task=task)
        logger.debug('Deleted external network ' + TestExtNet._name + '.')
Beispiel #3
0
    def test_9998_teardown(self):
        """Test the method Platform.delete_external_network().

        Invoke the method for the external network created by setup.

        This test passes if the task for deleting the external network
        succeeds.
        """
        logger = Environment.get_default_logger()
        platform = Platform(TestExtNet._sys_admin_client)
        task = platform.delete_external_network(TestExtNet._name)
        TestExtNet._sys_admin_client.get_task_monitor().wait_for_success(
            task=task)
        logger.debug('Deleted external network ' + TestExtNet._name + '.')
class VcdExternalNetwork(VcdAnsibleModule):
    def __init__(self, **kwargs):
        super(VcdExternalNetwork, self).__init__(**kwargs)
        self.platform = Platform(self.client)

    def manage_states(self):
        state = self.params.get('state')
        if state == "present":
            return self.create()

        if state == "update":
            return self.update()

        if state == "absent":
            return self.delete()

    def manage_operations(self):
        operation = self.params.get('operation')
        if operation == "list_networks":
            return self.list_external_networks()

        if operation == "add_subnet":
            return self.add_subnet()

        if operation == "add_ip_ranges":
            return self.add_ip_ranges()

        if operation == "modify_ip_ranges":
            return self.modify_ip_ranges()

        if operation == "delete_ip_ranges":
            return self.delete_ip_ranges()

        if operation == "enable_subnet":
            return self.enable_subnet()

        if operation == "attach_port_group":
            return self.attach_port_group()

        if operation == "detach_port_group":
            return self.detach_port_group()

    def create(self):
        vc_name = self.params.get('vc_name')
        port_group_names = self.params.get('port_group_names')
        network_name = self.params.get('network_name')
        gateway_ip = self.params.get('gateway_ip')
        netmask = self.params.get('netmask')
        ip_ranges = self.params.get('ip_ranges')
        primary_dns_ip = self.params.get('primary_dns_ip')
        secondary_dns_ip = self.params.get('secondary_dns_ip')
        dns_suffix = self.params.get('dns_suffix')
        description = self.params.get('description')
        response = dict()
        response['changed'] = False

        try:
            self.platform.get_external_network(network_name)
        except EntityNotFoundException:
            self.platform.create_external_network(network_name, vc_name,
                                                  port_group_names, gateway_ip,
                                                  netmask, ip_ranges,
                                                  description,
                                                  primary_dns_ip,
                                                  secondary_dns_ip,
                                                  dns_suffix)
            msg = "External Network {0} is created"
            response['msg'] = msg.format(network_name)
            response['changed'] = True
        else:
            msg = "External Network {0} is already present"
            response['warnings'] = msg.format(network_name)

        return response

    def update(self):
        network_name = self.params.get('network_name')
        new_network_name = self.params.get('new_network_name')
        description = self.params.get('description')
        response = dict()
        response['changed'] = False

        try:
            self.platform.get_external_network(network_name)
            self.platform.update_external_network(
                network_name, new_network_name, description)
        except EntityNotFoundException:
            msg = "External Network {0} does not exists"
            response['msg'] = msg.format(network_name)
        else:
            msg = "External Network {0} has been updated with {1}"
            response['msg'] = msg.format(network_name, new_network_name)
            response['changed'] = True

        return response

    def delete(self):
        network_name = self.params.get('network_name')
        force_delete = self.params.get('force_delete')
        response = dict()
        response['changed'] = False

        try:
            task = self.platform.delete_external_network(
                network_name, force_delete)
            self.execute_task(task)
        except EntityNotFoundException:
            msg = "External Network {0} does not exists"
            response['msg'] = msg.format(network_name)
        else:
            msg = "External Network {0} has been deleted"
            response['msg'] = msg.format(network_name)
            response['changed'] = True

        return response

    def list_external_networks(self):
        response = dict()
        response['msg'] = list()
        response['changed'] = False

        networks = self.platform.list_external_networks()
        response['msg'] = [v for k, v in networks.items() if k == "name"]

        return response

    def add_subnet(self):
        network_name = self.params.get('network_name')
        gateway_ip = self.params.get('gateway_ip')
        netmask = self.params.get('netmask')
        ip_ranges = self.params.get('ip_ranges')
        primary_dns_ip = self.params.get('primary_dns_ip')
        secondary_dns_ip = self.params.get('secondary_dns_ip')
        dns_suffix = self.params.get('dns_suffix')
        response = dict()
        response['changed'] = False

        network = self.get_network(network_name)
        network.add_subnet(network_name, gateway_ip, netmask, ip_ranges,
                           primary_dns_ip, secondary_dns_ip, dns_suffix)
        msg = "A new subnet has been added to network {0}"
        response['msg'] = msg.format(network_name)
        response['changed'] = True

        return response

    def add_ip_ranges(self):
        network_name = self.params.get('network_name')
        gateway_ip = self.params.get('gateway_ip')
        ip_ranges = self.params.get('ip_ranges')
        response = dict()
        response['changed'] = False

        network = self.get_network(network_name)
        network.add_ip_range(gateway_ip, ip_ranges)
        msg = "A new ip ranges has been added to network {0}"
        response['msg'] = msg.format(network_name)
        response['changed'] = True

        return response

    def modify_ip_ranges(self):
        network_name = self.params.get('network_name')
        gateway_ip = self.params.get('gateway_ip')
        ip_ranges = self.params.get('ip_ranges')
        new_ip_ranges = self.params.get('new_ip_ranges')
        response = dict()
        response['changed'] = False

        if len(ip_ranges) != len(new_ip_ranges):
            raise ValueError(
                "ip_ranges and new_ip_ranges should have same length")

        network = self.get_network(network_name)
        for i in range(len(ip_ranges)):
            network.modify_ip_range(gateway_ip, ip_ranges[i], new_ip_ranges[i])

        msg = "Ip ranges have been updated to network {0}"
        response['msg'] = msg.format(network_name)
        response['changed'] = True

        return response

    def delete_ip_ranges(self):
        network_name = self.params.get('network_name')
        gateway_ip = self.params.get('gateway_ip')
        ip_ranges = self.params.get('ip_ranges')
        response = dict()
        response['changed'] = False

        network = self.get_network(network_name)
        network.delete_ip_range(gateway_ip, ip_ranges)
        msg = "Ip ranges have been deleted from network {0}"
        response['msg'] = msg.format(network_name)
        response['changed'] = True

        return response

    def enable_subnet(self):
        network_name = self.params.get('network_name')
        gateway_ip = self.params.get('gateway_ip')
        enable_subnet = self.params.get('enable_subnet')
        response = dict()
        response['changed'] = False

        network = self.get_network(network_name)
        network.enable_subnet(gateway_ip, enable_subnet)
        s = "has been enabled" if enable_subnet else "has been disabled"
        msg = "subnet with gatway {0} {1} now in network {2}"
        response['msg'] = msg.format(gateway_ip, s, network_name)
        response['changed'] = True

        return response

    def attach_port_group(self):
        network_name = self.params.get('network_name')
        vc_name = self.params.get('vc_name')
        port_group_names = self.params.get('port_group_names')
        response = dict()
        response['changed'] = False

        network = self.get_network(network_name)
        for port_group_name in port_group_names:
            network.attach_port_group(vc_name, port_group_name)

        msg = "port groups {0} have been attached now from network {1}"
        response['msg'] = msg.format(','.join(port_group_names), network_name)
        response['changed'] = True

        return response

    def detach_port_group(self):
        network_name = self.params.get('network_name')
        vc_name = self.params.get('vc_name')
        port_group_names = self.params.get('port_group_names')
        response = dict()
        response['changed'] = False
        network = self.get_network(network_name)

        for port_group_name in port_group_names:
            network.detach_port_group(vc_name, port_group_name)

        msg = "port groups {0} have been detached now from network {1}"
        response['msg'] = msg.format(','.join(port_group_names), network_name)
        response['changed'] = True

        return response

    def get_network(self, network_name):
        network_resource = self.platform.get_external_network(network_name)

        return ExternalNetwork(self.client, resource=network_resource)
Beispiel #5
0
 def _delete_external_network(self, network):
     logger = Environment.get_default_logger()
     platform = Platform(TestGateway._client)
     task = platform.delete_external_network(network.get('name'))
     TestGateway._client.get_task_monitor().wait_for_success(task=task)
     logger.debug('Deleted external network ' + network.get('name') + '.')
Beispiel #6
0
 def _delete_external_network(self, network):
     logger = Environment.get_default_logger()
     platform = Platform(TestGateway._client)
     task = platform.delete_external_network(network.get('name'))
     TestGateway._client.get_task_monitor().wait_for_success(task=task)
     logger.debug('Deleted external network ' + network.get('name') + '.')
Beispiel #7
0
    i = 0
    while i < 60:
        obj = client.get_resource(delete_edge.attrib['href'])
        if obj.attrib['status'] != 'success':
            print(obj.attrib['status'])
            i += 1
            time.sleep(1)
        else:
            print("The edge {0} doesn't exist".format(
                cfg.org.edge_gateway.name))
            i = 61

except Exception:
    print("The Edge gateway {0} does not exist".format(
        cfg.org.edge_gateway.name))

# Create an instance of the Class Platform --------------------------------------------------------
platform = Platform(client)

# Ensure External Network exists and delete it ----------------------------------------------------
print("\nFetching the external network...")
try:
    network_resource = platform.get_external_network(
        cfg.system.ext_network.name)
    print("The external network {0} exists, deleting".format(
        cfg.system.ext_network.name))
    platform.delete_external_network(cfg.system.ext_network.name)
except Exception:
    print("The external network {0} does not exist.".format(
        cfg.system.ext_network.name))