libcloud/loadbalancer/drivers/dimensiondata.py [745:927]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        ET.SubElement(create_node_elm, "serviceDownAction").text = pool.service_down_action
        ET.SubElement(create_node_elm, "slowRampTime").text = str(pool.slow_ramp_time)

        response = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/editPool",
            method="POST",
            data=ET.tostring(create_node_elm),
        ).object
        response_code = findtext(response, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_destroy_pool(self, pool):
        """
        Destroy an existing pool

        :param pool: The instance of ``DimensionDataPool`` to destroy
        :type  pool: ``DimensionDataPool``

        :return: ``True`` for success, ``False`` for failure
        :rtype: ``bool``
        """
        destroy_request = ET.Element("deletePool", {"xmlns": TYPES_URN, "id": pool.id})

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/deletePool",
            method="POST",
            data=ET.tostring(destroy_request),
        ).object
        response_code = findtext(result, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_get_pool_members(self, pool_id):
        """
        Get the members of a pool

        :param pool: The instance of a pool
        :type  pool: ``DimensionDataPool``

        :return: Returns an ``list`` of ``DimensionDataPoolMember``
        :rtype: ``list`` of ``DimensionDataPoolMember``
        """
        members = self.connection.request_with_orgId_api_2(
            "networkDomainVip/poolMember?poolId=%s" % pool_id
        ).object
        return self._to_members(members)

    def ex_get_pool_member(self, pool_member_id):
        """
        Get a specific member of a pool

        :param pool: The id of a pool member
        :type  pool: ``str``

        :return: Returns an instance of ``DimensionDataPoolMember``
        :rtype: ``DimensionDataPoolMember``
        """
        member = self.connection.request_with_orgId_api_2(
            "networkDomainVip/poolMember/%s" % pool_member_id
        ).object
        return self._to_member(member)

    def ex_set_pool_member_state(self, member, enabled=True):
        request = ET.Element("editPoolMember", {"xmlns": TYPES_URN, "id": member.id})
        state = "ENABLED" if enabled is True else "DISABLED"
        ET.SubElement(request, "status").text = state

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/editPoolMember",
            method="POST",
            data=ET.tostring(request),
        ).object

        response_code = findtext(result, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_destroy_pool_member(self, member, destroy_node=False):
        """
        Destroy a specific member of a pool

        :param pool: The instance of a pool member
        :type  pool: ``DimensionDataPoolMember``

        :param destroy_node: Also destroy the associated node
        :type  destroy_node: ``bool``

        :return: ``True`` for success, ``False`` for failure
        :rtype: ``bool``
        """
        # remove the pool member
        destroy_request = ET.Element("removePoolMember", {"xmlns": TYPES_URN, "id": member.id})

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/removePoolMember",
            method="POST",
            data=ET.tostring(destroy_request),
        ).object

        if member.node_id is not None and destroy_node is True:
            return self.ex_destroy_node(member.node_id)
        else:
            response_code = findtext(result, "responseCode", TYPES_URN)
            return response_code in ["IN_PROGRESS", "OK"]

    def ex_get_nodes(self, ex_network_domain_id=None):
        """
        Get the nodes within this geography or in given network.

        :param ex_network_domain_id: UUID of Network Domain
               if not None returns only balancers in the given network
               if None then returns all pools for the organization
        :type  ex_network_domain_id: ``str``

        :return: Returns an ``list`` of ``DimensionDataVIPNode``
        :rtype: ``list`` of ``DimensionDataVIPNode``
        """
        params = None
        if ex_network_domain_id is not None:
            params = {"networkDomainId": ex_network_domain_id}

        nodes = self.connection.request_with_orgId_api_2(
            "networkDomainVip/node", params=params
        ).object
        return self._to_nodes(nodes)

    def ex_get_node(self, node_id):
        """
        Get the node specified by node_id

        :return: Returns an instance of ``DimensionDataVIPNode``
        :rtype: Instance of ``DimensionDataVIPNode``
        """
        nodes = self.connection.request_with_orgId_api_2(
            "networkDomainVip/node/%s" % node_id
        ).object
        return self._to_node(nodes)

    def ex_destroy_node(self, node_id):
        """
        Destroy a specific node

        :param node_id: The ID of of a ``DimensionDataVIPNode``
        :type  node_id: ``str``

        :return: ``True`` for success, ``False`` for failure
        :rtype: ``bool``
        """
        # Destroy the node
        destroy_request = ET.Element("deleteNode", {"xmlns": TYPES_URN, "id": node_id})

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/deleteNode",
            method="POST",
            data=ET.tostring(destroy_request),
        ).object
        response_code = findtext(result, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_wait_for_state(self, state, func, poll_interval=2, timeout=60, *args, **kwargs):
        """
        Wait for the function which returns a instance
        with field status to match

        Keep polling func until one of the desired states is matched

        :param state: Either the desired state (`str`) or a `list` of states
        :type  state: ``str`` or ``list``

        :param  func: The function to call, e.g. ex_get_vlan
        :type   func: ``function``

        :param  poll_interval: The number of seconds to wait between checks
        :type   poll_interval: `int`

        :param  timeout: The total number of seconds to wait to reach a state
        :type   timeout: `int`

        :param  args: The arguments for func
        :type   args: Positional arguments

        :param  kwargs: The arguments for func
        :type   kwargs: Keyword arguments
        """
        return self.connection.wait_for_state(state, func, poll_interval, timeout, *args, **kwargs)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



libcloud/loadbalancer/drivers/nttcis.py [1064:1246]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        ET.SubElement(create_node_elm, "serviceDownAction").text = pool.service_down_action
        ET.SubElement(create_node_elm, "slowRampTime").text = str(pool.slow_ramp_time)

        response = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/editPool",
            method="POST",
            data=ET.tostring(create_node_elm),
        ).object
        response_code = findtext(response, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_destroy_pool(self, pool):
        """
        Destroy an existing pool

        :param pool: The instance of ``NttCisPool`` to destroy
        :type  pool: ``NttCisPool``

        :return: ``True`` for success, ``False`` for failure
        :rtype: ``bool``
        """
        destroy_request = ET.Element("deletePool", {"xmlns": TYPES_URN, "id": pool.id})

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/deletePool",
            method="POST",
            data=ET.tostring(destroy_request),
        ).object
        response_code = findtext(result, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_get_pool_members(self, pool_id):
        """
        Get the members of a pool

        :param pool: The instance of a pool
        :type  pool: ``NttCisPool``

        :returns: Returns an ``list`` of ``NttCisPoolMember``
        :rtype: ``list`` of ``NttCisPoolMember``
        """
        members = self.connection.request_with_orgId_api_2(
            "networkDomainVip/poolMember?poolId=%s" % pool_id
        ).object
        return self._to_members(members)

    def ex_get_pool_member(self, pool_member_id):
        """
        Get a specific member of a pool

        :param pool: The id of a pool member
        :type  pool: ``str``

        :return: Returns an instance of ``NttCisPoolMember``
        :rtype: ``NttCisPoolMember``
        """
        member = self.connection.request_with_orgId_api_2(
            "networkDomainVip/poolMember/%s" % pool_member_id
        ).object
        return self._to_member(member)

    def ex_set_pool_member_state(self, member, enabled=True):
        request = ET.Element("editPoolMember", {"xmlns": TYPES_URN, "id": member.id})
        state = "ENABLED" if enabled is True else "DISABLED"
        ET.SubElement(request, "status").text = state

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/editPoolMember",
            method="POST",
            data=ET.tostring(request),
        ).object

        response_code = findtext(result, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_destroy_pool_member(self, member, destroy_node=False):
        """
        Destroy a specific member of a pool

        :param pool: The instance of a pool member
        :type  pool: ``NttCisPoolMember``

        :param destroy_node: Also destroy the associated node
        :type  destroy_node: ``bool``

        :return: ``True`` for success, ``False`` for failure
        :rtype: ``bool``
        """
        # remove the pool member
        destroy_request = ET.Element("removePoolMember", {"xmlns": TYPES_URN, "id": member.id})

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/removePoolMember",
            method="POST",
            data=ET.tostring(destroy_request),
        ).object

        if member.node_id is not None and destroy_node is True:
            return self.ex_destroy_node(member.node_id)
        else:
            response_code = findtext(result, "responseCode", TYPES_URN)
            return response_code in ["IN_PROGRESS", "OK"]

    def ex_get_nodes(self, ex_network_domain_id=None):
        """
        Get the nodes within this geography or in given network.

        :param ex_network_domain_id: UUID of Network Domain
               if not None returns only balancers in the given network
               if None then returns all pools for the organization
        :type  ex_network_domain_id: ``str``

        :return: Returns an ``list`` of ``NttCisVIPNode``
        :rtype: ``list`` of ``NttCisVIPNode``
        """
        params = None
        if ex_network_domain_id is not None:
            params = {"networkDomainId": ex_network_domain_id}

        nodes = self.connection.request_with_orgId_api_2(
            "networkDomainVip/node", params=params
        ).object
        return self._to_nodes(nodes)

    def ex_get_node(self, node_id):
        """
        Get the node specified by node_id

        :return: Returns an instance of ``NttCisVIPNode``
        :rtype: Instance of ``NttCisVIPNode``
        """
        nodes = self.connection.request_with_orgId_api_2(
            "networkDomainVip/node/%s" % node_id
        ).object
        return self._to_node(nodes)

    def ex_destroy_node(self, node_id):
        """
        Destroy a specific node

        :param node_id: The ID of of a ``NttCisVIPNode``
        :type  node_id: ``str``

        :return: ``True`` for success, ``False`` for failure
        :rtype: ``bool``
        """
        # Destroy the node
        destroy_request = ET.Element("deleteNode", {"xmlns": TYPES_URN, "id": node_id})

        result = self.connection.request_with_orgId_api_2(
            action="networkDomainVip/deleteNode",
            method="POST",
            data=ET.tostring(destroy_request),
        ).object
        response_code = findtext(result, "responseCode", TYPES_URN)
        return response_code in ["IN_PROGRESS", "OK"]

    def ex_wait_for_state(self, state, func, poll_interval=2, timeout=60, *args, **kwargs):
        """
        Wait for the function which returns a instance
        with field status to match

        Keep polling func until one of the desired states is matched

        :param state: Either the desired state (`str`) or a `list` of states
        :type  state: ``str`` or ``list``

        :param  func: The function to call, e.g. ex_get_vlan
        :type   func: ``function``

        :param  poll_interval: The number of seconds to wait between checks
        :type   poll_interval: `int`

        :param  timeout: The total number of seconds to wait to reach a state
        :type   timeout: `int`

        :param  args: The arguments for func
        :type   args: Positional arguments

        :param  kwargs: The arguments for func
        :type   kwargs: Keyword arguments
        """
        return self.connection.wait_for_state(state, func, poll_interval, timeout, *args, **kwargs)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



