def _to_zone_elem()

in libcloud/dns/drivers/zerigo.py [0:0]


    def _to_zone_elem(self, domain=None, type=None, ttl=None, extra=None):
        zone_elem = ET.Element("zone", {})

        if domain:
            domain_elem = ET.SubElement(zone_elem, "domain")
            domain_elem.text = domain

        if type:
            ns_type_elem = ET.SubElement(zone_elem, "ns-type")

            if type == "master":
                ns_type_elem.text = "pri_sec"
            elif type == "slave":
                if not extra or "ns1" not in extra:
                    raise LibcloudError(
                        "ns1 extra attribute is required " + "when zone type is slave",
                        driver=self,
                    )

                ns_type_elem.text = "sec"
                ns1_elem = ET.SubElement(zone_elem, "ns1")
                ns1_elem.text = extra["ns1"]
            elif type == "std_master":
                # TODO: Each driver should provide supported zone types
                # Slave name servers are elsewhere

                if not extra or "slave-nameservers" not in extra:
                    raise LibcloudError(
                        "slave-nameservers extra "
                        + "attribute is required whenzone "
                        + "type is std_master",
                        driver=self,
                    )

                ns_type_elem.text = "pri"
                slave_nameservers_elem = ET.SubElement(zone_elem, "slave-nameservers")
                slave_nameservers_elem.text = extra["slave-nameservers"]

        if ttl:
            default_ttl_elem = ET.SubElement(zone_elem, "default-ttl")
            default_ttl_elem.text = str(ttl)

        if extra and "tag-list" in extra:
            tags = extra["tag-list"]

            tags_elem = ET.SubElement(zone_elem, "tag-list")
            tags_elem.text = " ".join(tags)

        return zone_elem