libcloud/compute/drivers/dimensiondata.py [2057:2147]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                rule_name = relative_rule_for_position.name
            else:
                rule_name = relative_rule_for_position
            placement.set("relativeToRule", rule_name)
        else:
            if position not in positions_without_rule:
                raise ValueError(
                    "When position_relative_to_rule is not"
                    " specified position must be %s" % ", ".join(positions_without_rule)
                )
        placement.set("position", position)

        response = self.connection.request_with_orgId_api_2(
            "network/editFirewallRule", method="POST", data=ET.tostring(edit_node)
        ).object

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

    def ex_get_firewall_rule(self, network_domain, rule_id):
        locations = self.list_locations()
        rule = self.connection.request_with_orgId_api_2("network/firewallRule/%s" % rule_id).object
        return self._to_firewall_rule(rule, locations, network_domain)

    def ex_set_firewall_rule_state(self, rule, state):
        """
        Change the state (enabled or disabled) of a rule

        :param rule: The rule to delete
        :type  rule: :class:`DimensionDataFirewallRule`

        :param state: The desired state enabled (True) or disabled (False)
        :type  state: ``bool``

        :rtype: ``bool``
        """
        update_node = ET.Element("editFirewallRule", {"xmlns": TYPES_URN})
        update_node.set("id", rule.id)
        ET.SubElement(update_node, "enabled").text = str(state).lower()
        result = self.connection.request_with_orgId_api_2(
            "network/editFirewallRule", method="POST", data=ET.tostring(update_node)
        ).object

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

    def ex_delete_firewall_rule(self, rule):
        """
        Delete a firewall rule

        :param rule: The rule to delete
        :type  rule: :class:`DimensionDataFirewallRule`

        :rtype: ``bool``
        """
        update_node = ET.Element("deleteFirewallRule", {"xmlns": TYPES_URN})
        update_node.set("id", rule.id)
        result = self.connection.request_with_orgId_api_2(
            "network/deleteFirewallRule", method="POST", data=ET.tostring(update_node)
        ).object

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

    def ex_create_nat_rule(self, network_domain, internal_ip, external_ip):
        """
        Create a NAT rule

        :param  network_domain: The network domain the rule belongs to
        :type   network_domain: :class:`DimensionDataNetworkDomain`

        :param  internal_ip: The IPv4 address internally
        :type   internal_ip: ``str``

        :param  external_ip: The IPv4 address externally
        :type   external_ip: ``str``

        :rtype: :class:`DimensionDataNatRule`
        """
        create_node = ET.Element("createNatRule", {"xmlns": TYPES_URN})
        ET.SubElement(create_node, "networkDomainId").text = network_domain.id
        ET.SubElement(create_node, "internalIp").text = internal_ip
        ET.SubElement(create_node, "externalIp").text = external_ip
        result = self.connection.request_with_orgId_api_2(
            "network/createNatRule", method="POST", data=ET.tostring(create_node)
        ).object

        rule_id = None
        for info in findall(result, "info", TYPES_URN):
            if info.get("name") == "natRuleId":
                rule_id = info.get("value")
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



libcloud/compute/drivers/nttcis.py [2627:2725]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    rule_name = relative_rule_for_position.name
                else:
                    rule_name = relative_rule_for_position
                placement.set("relativeToRule", rule_name)
            else:
                if position not in positions_without_rule:
                    raise ValueError(
                        "When position_relative_to_rule is not"
                        " specified position must be %s" % ", ".join(positions_without_rule)
                    )
            placement.set("position", position)

        response = self.connection.request_with_orgId_api_2(
            "network/editFirewallRule", method="POST", data=ET.tostring(edit_node)
        ).object

        response_code = findtext(response, "responseCode", TYPES_URN)

        return response_code in ["IN_PROGRESS", "OK"]

    def ex_get_firewall_rule(self, network_domain, rule_id):
        locations = self.list_locations()
        rule = self.connection.request_with_orgId_api_2("network/firewallRule/%s" % rule_id).object

        return self._to_firewall_rule(rule, locations, network_domain)

    def ex_set_firewall_rule_state(self, rule, state):
        """
        Change the state (enabled or disabled) of a rule

        :param rule: The rule to delete
        :type  rule: :class:`NttCisFirewallRule`

        :param state: The desired state enabled (True) or disabled (False)
        :type  state: ``bool``

        :rtype: ``bool``
        """

        update_node = ET.Element("editFirewallRule", {"xmlns": TYPES_URN})
        update_node.set("id", rule.id)
        ET.SubElement(update_node, "enabled").text = str(state).lower()
        result = self.connection.request_with_orgId_api_2(
            "network/editFirewallRule", method="POST", data=ET.tostring(update_node)
        ).object

        response_code = findtext(result, "responseCode", TYPES_URN)

        return response_code in ["IN_PROGRESS", "OK"]

    def ex_delete_firewall_rule(self, rule):
        """
        Delete a firewall rule

        :param rule: The rule to delete
        :type  rule: :class:`NttCisFirewallRule`

        :rtype: ``bool``
        """

        update_node = ET.Element("deleteFirewallRule", {"xmlns": TYPES_URN})
        update_node.set("id", rule.id)
        result = self.connection.request_with_orgId_api_2(
            "network/deleteFirewallRule", method="POST", data=ET.tostring(update_node)
        ).object

        response_code = findtext(result, "responseCode", TYPES_URN)

        return response_code in ["IN_PROGRESS", "OK"]

    def ex_create_nat_rule(self, network_domain, internal_ip, external_ip):
        """
        Create a NAT rule

        :param  network_domain: The network domain the rule belongs to
        :type   network_domain: :class:`NttCisNetworkDomain`

        :param  internal_ip: The IPv4 address internally
        :type   internal_ip: ``str``

        :param  external_ip: The IPv4 address externally
        :type   external_ip: ``str``

        :rtype: :class:`NttCisNatRule`
        """

        create_node = ET.Element("createNatRule", {"xmlns": TYPES_URN})
        ET.SubElement(create_node, "networkDomainId").text = network_domain.id
        ET.SubElement(create_node, "internalIp").text = internal_ip
        ET.SubElement(create_node, "externalIp").text = external_ip
        result = self.connection.request_with_orgId_api_2(
            "network/createNatRule", method="POST", data=ET.tostring(create_node)
        ).object

        rule_id = None

        for info in findall(result, "info", TYPES_URN):
            if info.get("name") == "natRuleId":
                rule_id = info.get("value")
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



