'Process the request - Main Code Path
:return: Returns with either an exit_json or fail_json'

def process_request(self):

    self._set_clc_credentials_from_env()
    params = self.module.params
    server_ids = params['server_ids']
    ports = params['ports']
    protocol = params['protocol']
    state = params['state']
    if (state == 'present'):
        (changed, changed_server_ids, requests) = self.ensure_public_ip_present(server_ids=server_ids, protocol=protocol, ports=ports)
    elif (state == 'absent'):
        (changed, changed_server_ids, requests) = self.ensure_public_ip_absent(server_ids=server_ids)
    else:
        return self.module.fail_json(msg=('Unknown    State:    ' + state))
    self._wait_for_requests_to_complete(requests)
    return self.module.exit_json(changed=changed, server_ids=changed_server_ids)
