本文整理汇总了Python中augeas.Augeas.close方法的典型用法代码示例。如果您正苦于以下问题:Python Augeas.close方法的具体用法?Python Augeas.close怎么用?Python Augeas.close使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类augeas.Augeas
的用法示例。
在下文中一共展示了Augeas.close方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: configure_chrony
# 需要导入模块: from augeas import Augeas [as 别名]
# 或者: from augeas.Augeas import close [as 别名]
def configure_chrony(ntp_servers, ntp_pool=None,
fstore=None, sysstore=None, debug=False):
"""
This method only configures chrony client with ntp_servers or ntp_pool
"""
module = "chrony"
if sysstore:
sysstore.backup_state(module, "enabled",
services.knownservices.chronyd.is_enabled())
aug = Augeas(flags=Augeas.NO_LOAD | Augeas.NO_MODL_AUTOLOAD,
loadpath=paths.USR_SHARE_IPA_DIR)
try:
logger.debug("Configuring chrony")
chrony_conf = os.path.abspath(paths.CHRONY_CONF)
aug.transform(module, chrony_conf) # loads chrony lens file
aug.load() # loads augeas tree
# augeas needs to prepend path with '/files'
path = '/files{path}'.format(path=chrony_conf)
# remove possible conflicting configuration of servers
aug.remove('{}/server'.format(path))
aug.remove('{}/pool'.format(path))
aug.remove('{}/peer'.format(path))
if ntp_pool:
logger.debug("Setting server pool:")
logger.debug("'%s'", ntp_pool)
aug.set('{}/pool[last()+1]'.format(path), ntp_pool)
aug.set('{}/pool[last()]/iburst'.format(path), None)
if ntp_servers:
logger.debug("Setting time servers:")
for server in ntp_servers:
aug.set('{}/server[last()+1]'.format(path), server)
aug.set('{}/server[last()]/iburst'.format(path), None)
logger.debug("'%s'", server)
# backup oginal conf file
logger.debug("Backing up '%s'", chrony_conf)
__backup_config(chrony_conf, fstore)
logger.debug("Writing configuration to '%s'", chrony_conf)
aug.save()
logger.info('Configuration of chrony was changed by installer.')
configured = True
except IOError:
logger.error("Augeas failed to configure file %s", chrony_conf)
configured = False
except RuntimeError as e:
logger.error("Configuration failed with: %s", e)
configured = False
finally:
aug.close()
tasks.restore_context(chrony_conf)
return configured
示例2: get_configured_ifaces
# 需要导入模块: from augeas import Augeas [as 别名]
# 或者: from augeas.Augeas import close [as 别名]
def get_configured_ifaces():
aug = Augeas(flags=Augeas.NO_MODL_AUTOLOAD)
aug.add_transform('interfaces', '/etc/network/interfaces')
aug.load()
base = '/files/etc/network/interfaces'
for m in aug.match('%s/iface' % base):
yield aug.get(m)
aug.close()
示例3: set_api_timeouts
# 需要导入模块: from augeas import Augeas [as 别名]
# 或者: from augeas.Augeas import close [as 别名]
def set_api_timeouts(self, timeout):
# Determine the file to change
if self.https:
config_file = self.abiquo_ssl_conf
else:
config_file = self.abiquo_conf
logging.info("Setting Proxy timeouts in %s" % config_file)
# Set timeout using Augeas
a = Augeas()
for loc in a.match("/files%s/VirtualHost/*[arg='/api']" % config_file):
proxy_pass = a.match("%s/*[self::directive='ProxyPass']" % loc)
if len(proxy_pass) == 1:
# Proxy timeout already exists
logging.info("ProxyPass found")
arg1 = a.get("%s/arg" % proxy_pass[0])
arg2 = "timeout=%s" % timeout
a.set("%s/arg[1]" % proxy_pass[0], arg1)
a.set("%s/arg[2]" % proxy_pass[0], arg2)
a.save()
a.close()
示例4: LVMConfig
# 需要导入模块: from augeas import Augeas [as 别名]
# 或者: from augeas.Augeas import close [as 别名]
class LVMConfig(object):
def __init__(self, path="/etc/lvm/lvm.conf"):
self.path = path
# Augeas loads by default tons of unneeded lenses and configuration
# files. On my test host, it fails to load, trying to read my 500 MiB
# /etc/lvm/archive/.
#
# These are the standard LVM lens includes:
# /augeas/load/LVM/incl[1] /etc/lvm/lvm.conf
# /augeas/load/LVM/incl[2] /etc/lvm/backup/*
# /augeas/load/LVM/incl[3] /etc/lvm/archive/*.vg
#
# We need only the first entry to work with lvm.conf. Using customized
# load setup, as explained in
# https://github.com/hercules-team/augeas/wiki/Loading-specific-files
#
# Removing the archive and backup entries, we can load augeas in 0.7
# seconds on my test vm. Removing all other lenses shorten the time to
# 0.04 seconds.
log.debug("Loading LVM configuration from %r", path)
self.aug = Augeas(flags=Augeas.NO_MODL_AUTOLOAD | Augeas.SAVE_BACKUP)
self.aug.add_transform("lvm.lns", [path])
self.aug.load()
# Context manager interface
def __enter__(self):
return self
def __exit__(self, t, v, tb):
try:
self.close()
except Exception as e:
# Caller succeeded, raise the close error.
if t is None:
raise
# Caller has failed, do not hide the original error.
log.exception("Error closing %s: %s" % (self, e))
# Accessing list of strings
def getlist(self, section, option):
pat = "/files%s/%s/dict/%s/list/*/str" % (self.path, section, option)
matches = self.aug.match(pat)
if not matches:
return None # Cannot store/read empty list
return [self.aug.get(m) for m in matches]
def setlist(self, section, option, value):
log.debug("Setting %s/%s to %s", section, option, value)
opt_path = "/files%s/%s/dict/%s" % (self.path, section, option)
self.aug.remove(opt_path)
item_path = opt_path + "/list/%d/str"
for i, item in enumerate(value, 1):
self.aug.set(item_path % i, item)
# Accessing flat values (int, string)
def getint(self, section, option):
val = self._get_flat(section, option, "int")
return int(val) if val is not None else None
def setint(self, section, option, value):
self._set_flat(section, option, "int", str(value))
def getstr(self, section, option):
return self._get_flat(section, option, "str")
def setstr(self, section, option, value):
self._set_flat(section, option, "str", value)
def _get_flat(self, section, option, opt_type):
path = self._flat_path(section, option, opt_type)
return self.aug.get(path)
def _set_flat(self, section, option, opt_type, value):
log.debug("Setting %s/%s to %r", section, option, value)
path = self._flat_path(section, option, opt_type)
return self.aug.set(path, value)
def _flat_path(self, section, option, opt_type):
return "/files%s/%s/dict/%s/%s" % (
self.path, section, option, opt_type)
# Removing options
def remove(self, section, option):
log.debug("Removing %s/%s", section, option)
path = "/files%s/%s/dict/%s" % (self.path, section, option)
self.aug.remove(path)
# File operations
def save(self):
log.info("Saving new LVM configuration to %r, previous configuration "
"saved to %r",
self.path, self.path + ".augsave")
#.........这里部分代码省略.........
示例5: execute
# 需要导入模块: from augeas import Augeas [as 别名]
# 或者: from augeas.Augeas import close [as 别名]
#.........这里部分代码省略.........
"server_host": server_host,
"service_bind_dn": conf.get('ldap', 'service_bind_dn'),
"service_bind_pw": conf.get('ldap', 'service_bind_pw'),
},
"/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf": """
server_host = %(server_host)s
server_port = 389
version = 3
search_base = %(base_dn)s
scope = sub
domain = ldap:/etc/postfix/ldap/mydestination.cf
bind_dn = %(service_bind_dn)s
bind_pw = %(service_bind_pw)s
query_filter = (&(|(mail=%%s)(alias=%%s))(objectclass=kolabsharedfolder)(kolabFolderType=mail))
result_attribute = kolabtargetfolder
result_format = shared+%%s
""" % {
"base_dn": conf.get('ldap', 'base_dn'),
"server_host": server_host,
"service_bind_dn": conf.get('ldap', 'service_bind_dn'),
"service_bind_pw": conf.get('ldap', 'service_bind_pw'),
},
}
if not os.path.isdir('/etc/postfix/ldap'):
os.mkdir('/etc/postfix/ldap/', 0770)
for filename in files.keys():
fp = open(filename, 'w')
fp.write(files[filename])
fp.close()
fp = open('/etc/postfix/transport', 'a')
fp.write("\n# Shared Folder Delivery for %(domain)s:\[email protected]%(domain)s\t\tlmtp:unix:/var/lib/imap/socket/lmtp\n" % {'domain': conf.get('kolab', 'primary_domain')})
fp.close()
subprocess.call(["postmap", "/etc/postfix/transport"])
postfix_main_settings = {
"inet_interfaces": "all",
"recipient_delimiter": "+",
"local_recipient_maps": "ldap:/etc/postfix/ldap/local_recipient_maps.cf",
"mydestination": "ldap:/etc/postfix/ldap/mydestination.cf",
"transport_maps": "ldap:/etc/postfix/ldap/transport_maps.cf, hash:/etc/postfix/transport",
"virtual_alias_maps": "$alias_maps, ldap:/etc/postfix/ldap/virtual_alias_maps.cf, ldap:/etc/postfix/ldap/virtual_alias_maps_mailforwarding.cf, ldap:/etc/postfix/ldap/virtual_alias_maps_sharedfolders.cf, ldap:/etc/postfix/ldap/mailenabled_distgroups.cf, ldap:/etc/postfix/ldap/mailenabled_dynamic_distgroups.cf",
"smtpd_tls_auth_only": "yes",
"smtpd_tls_security_level": "may",
"smtp_tls_security_level": "may",
"smtpd_sasl_auth_enable": "yes",
"smtpd_sender_login_maps": "$local_recipient_maps",
"smtpd_sender_restrictions": "permit_mynetworks, reject_sender_login_mismatch",
"smtpd_recipient_restrictions": "permit_mynetworks, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org, reject_non_fqdn_recipient, reject_invalid_helo_hostname, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service unix:private/recipient_policy_incoming, permit",
"smtpd_sender_restrictions": "permit_mynetworks, check_policy_service unix:private/sender_policy_incoming",
"submission_recipient_restrictions": "check_policy_service unix:private/submission_policy, permit_sasl_authenticated, reject",
"submission_sender_restrictions": "reject_non_fqdn_sender, check_policy_service unix:private/submission_policy, permit_sasl_authenticated, reject",
"submission_data_restrictions": "check_policy_service unix:private/submission_policy",
"content_filter": "smtp-amavis:[127.0.0.1]:10024"
}
if os.path.isfile('/etc/pki/tls/certs/make-dummy-cert') and not os.path.isfile('/etc/pki/tls/private/localhost.pem'):
subprocess.call(['/etc/pki/tls/certs/make-dummy-cert', '/etc/pki/tls/private/localhost.pem'])
示例6: TestNode
# 需要导入模块: from augeas import Augeas [as 别名]
# 或者: from augeas.Augeas import close [as 别名]
class TestNode(unittest.TestCase):
"""Tests the Node class"""
def setUp(self):
self.tmp = tempfile.mkdtemp()
self.root = "%s/root" % self.tmp
shutil.copytree("%s/fakeroot" % os.path.dirname(__file__), self.root)
self.aug = Augeas(root=self.root, flags=Augeas.NO_MODL_AUTOLOAD)
self.aug.add_transform("Nsswitch.lns", "/etc/nsswitch.conf")
self.aug.load()
class FakeParent:
def setpath(self):
return "/files/etc/nsswitch.conf"
self.parent = FakeParent()
def tearDown(self):
shutil.rmtree(self.tmp)
self.aug.close()
def test_setpath_self(self):
"""Test setpath generates path for '.' (itself)"""
n = aug2cmds.Node(self.aug, self.parent, uniqpaths=["."],
path="/files/etc/nsswitch.conf/database[1]")
self.assertEqual(n.setpath(),
"/files/etc/nsswitch.conf/database[.='passwd']")
def test_setpath_subnode(self):
"""Test setpath generates path for a subnode"""
n = aug2cmds.Node(self.aug, self.parent, uniqpaths=["service"],
path="/files/etc/nsswitch.conf/database[1]")
self.assertEqual(n.setpath(),
"/files/etc/nsswitch.conf/database[service='files']")
def test_setpath_and(self):
"""Test setpath generates path for multiple subpaths"""
n = aug2cmds.Node(self.aug, self.parent, uniqpaths=[".", "service"],
path="/files/etc/nsswitch.conf/database[1]")
self.assertEqual(n.setpath(),
"/files/etc/nsswitch.conf/database[.='passwd' and service='files']")
def test_basename(self):
"""Test basename understands Augeas paths"""
self.assertEqual(aug2cmds.Node.basename("/files"), "files")
self.assertEqual(aug2cmds.Node.basename("/files/test"), "test")
self.assertEqual(aug2cmds.Node.basename("/files/test[foo]"), "test")
self.assertEqual(aug2cmds.Node.basename(
"/files/test[foo/bar]"), "test")
def test_dirname(self):
"""Test dirname understands Augeas paths"""
self.assertEqual(aug2cmds.Node.dirname("/files"), "/")
self.assertEqual(aug2cmds.Node.dirname("/files/test"), "/files")
self.assertEqual(aug2cmds.Node.dirname("/files/test[foo]"), "/files")
self.assertEqual(aug2cmds.Node.dirname(
"/files/test[foo/bar]"), "/files")
def test_children_none(self):
"""Test when there are no children"""
n = aug2cmds.Node(self.aug, self.parent,
"/files/etc/nsswitch.conf/#comment[1]", ["."])
self.assertRaises(StopIteration, next, n.children())
def test_children(self):
"""Test new Node objects are created for children"""
n = aug2cmds.Node(self.aug, self.parent,
"/files/etc/nsswitch.conf/database[15]", ["."])
c = n.children()
sn = c.next()
self.assertEqual(sn.path,
"/files/etc/nsswitch.conf/database[15]/service[1]")
self.assertEqual(sn.setpath(),
"/files/etc/nsswitch.conf/database[.='aliases']/service[.='files']")
sn = c.next()
self.assertEqual(sn.path,
"/files/etc/nsswitch.conf/database[15]/service[2]")
self.assertEqual(sn.setpath(),
"/files/etc/nsswitch.conf/database[.='aliases']/service[.='nisplus']")
self.assertRaises(StopIteration, next, c)
def test_value(self):
"""Test value is retrieved"""
n = aug2cmds.Node(self.aug, self.parent, uniqpaths=["."],
path="/files/etc/nsswitch.conf/database[1]")
self.assertEqual(n.value(), "passwd")
def test_value_none(self):
"""Test when no value is set"""
n = aug2cmds.Node(self.aug, self.parent, uniqpaths=["."],
path="/files/etc/nsswitch.conf")
self.assertEqual(n.value(), None)
示例7: execute
# 需要导入模块: from augeas import Augeas [as 别名]
# 或者: from augeas.Augeas import close [as 别名]
def execute(*args, **kw):
"""
Apply the necessary settings to /etc/imapd.conf
"""
imapd_settings = {
"ldap_servers": conf.get('ldap', 'ldap_uri'),
"ldap_base": conf.get('ldap', 'base_dn'),
"ldap_bind_dn": conf.get('ldap', 'service_bind_dn'),
"ldap_password": conf.get('ldap', 'service_bind_pw'),
"ldap_filter": '(|(&(|(uid=%s)(uid=cyrus-murder))(uid=%%U))(&(|(uid=%%U)(mail=%%[email protected]%%d)(mail=%%[email protected]%%r))(objectclass=kolabinetorgperson)))' % (conf.get('cyrus-imap', 'admin_login')),
"ldap_user_attribute": conf.get('cyrus-sasl', 'result_attribute'),
"ldap_group_base": conf.get('ldap', 'base_dn'),
"ldap_group_filter": "(&(cn=%u)(objectclass=ldapsubentry)(objectclass=nsroledefinition))",
"ldap_group_scope": "one",
"ldap_member_base": conf.get('ldap','user_base_dn'),
"ldap_member_method": "attribute",
"ldap_member_attribute": "nsrole",
"admins": conf.get('cyrus-imap', 'admin_login'),
"postuser": "shared",
}
template_file = None
if os.path.isfile('/etc/kolab/templates/imapd.conf.tpl'):
template_file = '/etc/kolab/templates/imapd.conf.tpl'
elif os.path.isfile('/usr/share/kolab/templates/imapd.conf.tpl'):
template_file = '/usr/share/kolab/templates/imapd.conf.tpl'
elif os.path.isfile(os.path.abspath(os.path.join(__file__, '..', '..', '..', 'share', 'templates', 'imapd.conf.tpl'))):
template_file = os.path.abspath(os.path.join(__file__, '..', '..', '..', 'share', 'templates', 'imapd.conf.tpl'))
if not template_file == None:
fp = open(template_file, 'r')
template_definition = fp.read()
fp.close()
t = Template(template_definition, searchList=[imapd_settings])
fp = open('/etc/imapd.conf', 'w')
fp.write(t.__str__())
fp.close()
else:
log.error(_("Could not write out Cyrus IMAP configuration file /etc/imapd.conf"))
return
cyrus_settings = {}
template_file = None
if os.path.isfile('/etc/kolab/templates/cyrus.conf.tpl'):
template_file = '/etc/kolab/templates/cyrus.conf.tpl'
elif os.path.isfile('/usr/share/kolab/templates/cyrus.conf.tpl'):
template_file = '/usr/share/kolab/templates/cyrus.conf.tpl'
elif os.path.isfile(os.path.abspath(os.path.join(__file__, '..', '..', '..', 'share', 'templates', 'cyrus.conf.tpl'))):
template_file = os.path.abspath(os.path.join(__file__, '..', '..', '..', 'share', 'templates', 'cyrus.conf.tpl'))
if not template_file == None:
fp = open(template_file, 'r')
template_definition = fp.read()
fp.close()
t = Template(template_definition, searchList=[cyrus_settings])
fp = open('/etc/cyrus.conf', 'w')
fp.write(t.__str__())
fp.close()
else:
log.error(_("Could not write out Cyrus IMAP configuration file /etc/cyrus.conf"))
return
annotations = [
"/vendor/kolab/activesync,mailbox,string,backend,value.priv,r",
"/vendor/kolab/color,mailbox,string,backend,value.shared value.priv,a",
"/vendor/kolab/displayname,mailbox,string,backend,value.shared value.priv,a",
"/vendor/kolab/folder-test,mailbox,string,backend,value.shared value.priv,a",
"/vendor/kolab/folder-type,mailbox,string,backend,value.shared value.priv,a",
"/vendor/kolab/incidences-for,mailbox,string,backend,value.shared value.priv,a",
"/vendor/kolab/pxfb-readable-for,mailbox,string,backend,value.shared value.priv,a",
"/vendor/kolab/uniqueid,mailbox,string,backend,value.shared value.priv,a",
"/vendor/kolab/h-share-attr-desc,mailbox,string,backend,value.shared value.priv,a",
"/vendor/horde/share-params,mailbox,string,backend,value.shared value.priv,a",
"/vendor/x-toltec/test,mailbox,string,backend,value.shared value.priv,a",
]
fp = open('/etc/imapd.annotations.conf', 'w')
fp.write("\n".join(annotations))
fp.close()
if os.path.isfile('/etc/default/kolab-saslauthd'):
myaugeas = Augeas()
setting = os.path.join('/files/etc/default/kolab-saslauthd','START')
if not myaugeas.get(setting) == 'yes':
myaugeas.set(setting,'yes')
myaugeas.save()
myaugeas.close()
if os.path.isfile('/bin/systemctl'):
subprocess.call(['systemctl', 'stop', 'saslauthd.service'])
#.........这里部分代码省略.........