本文整理汇总了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,
)