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

def process_request(self):

    p = self.module.params
    server_ids = p['server_ids']
    expiration_days = p['expiration_days']
    state = p['state']
    request_list = []
    changed = False
    changed_servers = []
    self._set_clc_credentials_from_env()
    if (state == 'present'):
        (changed, request_list, changed_servers) = self.ensure_server_snapshot_present(server_ids=server_ids, expiration_days=expiration_days)
    elif (state == 'absent'):
        (changed, request_list, changed_servers) = self.ensure_server_snapshot_absent(server_ids=server_ids)
    elif (state == 'restore'):
        (changed, request_list, changed_servers) = self.ensure_server_snapshot_restore(server_ids=server_ids)
    self._wait_for_requests_to_complete(request_list)
    return self.module.exit_json(changed=changed, server_ids=changed_servers)
