当前位置: 首页>>代码示例>>Python>>正文


Python DAL.dns_zones方法代码示例

本文整理汇总了Python中pydal.DAL.dns_zones方法的典型用法代码示例。如果您正苦于以下问题:Python DAL.dns_zones方法的具体用法?Python DAL.dns_zones怎么用?Python DAL.dns_zones使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在pydal.DAL的用法示例。


在下文中一共展示了DAL.dns_zones方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: DNSAPI

# 需要导入模块: from pydal import DAL [as 别名]
# 或者: from pydal.DAL import dns_zones [as 别名]
class DNSAPI(object):
    """DNSAPI is an easy way to use your database so dockerlab-dns knows how to read your records. Use this class to interact with the database or just use it as an example."""

    def __init__(self, db_user, db_pass, db_host, db_name, migrate=False):
        super(DNSAPI, self).__init__()
        self.db = DAL("postgres://%s:%[email protected]%s/%s" % (db_user, db_pass, db_host, db_name), migrate=migrate)

        if self.db:
            print 'Successfully connected to db "%s" on host "%s"' % (db_name, db_host)

        self.db.define_table(
            "dns_zones",
            Field(
                "name", "string"
            ),  # ends in . (e.g. example.com.); input should probably have a validator to ensure zones end in a .
        )

        self.db.define_table(
            "dns_zone_records",
            Field("zone", "reference dns_zones"),
            Field("record_name", "string"),  # (e.g. ns1.example.com.)
            Field(
                "record_type", "string", default="A", requires=IS_IN_SET(RECORD_TYPES)
            ),  # (e.g. A, AAAA, CNAME, MX, NS)
            Field(
                "record_value", "string"
            ),  # (e.g. an IP for A or AAAA, an address for CNAME, and an address and priority for MX)
            Field(
                "record_ttl", "integer", default=60 * 5
            ),  # A TTL in seconds before a client should check for a new value. Can reasonably set to lower or higher depending on the volatility of the records
        )

    def get_zones(self):
        return self.db(self.db.dns_zones).select().as_list()

    def get_zone(self, zone_name):
        return self.db(self.db.dns_zones.name == zone_name).select().as_list()

    def get_records(self, zone_id):
        return self.db((self.db.dns_zone_records.zone == zone_id)).select().as_list()

    def get_records_matching(self, zone_id, record_name=None, record_type=None):
        q = self.db.dns_zone_records.zone == zone_id
        if not record_name is None:
            q = q & (self.db.dns_zone_records.record_name == record_name)
        if not record_type is None:
            q = q & (self.db.dns_zone_records.record_type == record_type)
        return self.db(q).select().as_list()

    def delete_zone(self, zone_name):
        self.db.dns_zones(
            (self.db.dns_zone_records.zone == self.db.dns_zones.id) & (self.db.dns_zones.name == zone_name)
        ).delete()
        return self.db(self.db.dns_zones.name == zone_name).delete()

    def delete_record(self, record_id):
        return self.db((self.db.dns_zone_records.id == record_id)).delete()

    def delete_record_matching(self, zone_id, record_name, record_type):
        return self.db(
            (self.db.dns_zone_records.zone == zone_id)
            & (self.db.dns_zone_records.record_name == record_name)
            & (self.db.dns_zone_records.record_type == record_type)
        ).delete()

    def create_zone(self, zone_name):
        return self.db.dns_zones.insert(name=zone_name)

    def create_record(self, zone_id, record_name, record_type, record_value, record_ttl):
        return self.db.dns_zone_records.insert(
            zone=zone_id,
            record_name=record_name,
            record_type=record_type,
            record_value=record_value,
            record_ttl=record_ttl,
        )
开发者ID:Annixa,项目名称:dockerlab-dns,代码行数:78,代码来源:dnsapi.py


注:本文中的pydal.DAL.dns_zones方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。