コード例 #1
0
ファイル: service.py プロジェクト: crowdy/trove
    def apply_access_rules(self):
        """PostgreSQL Client authentication settings

        The order of entries is important. The first failure to authenticate
        stops the lookup. That is why the 'local' connections validate first.
        The OrderedDict is necessary to guarantee the iteration order.
        """
        LOG.debug("Applying client authentication access rules.")

        access_rules = OrderedDict([
            ('local', [['all', SUPER_USER_NAME, None, 'trust'],
                       ['replication', SUPER_USER_NAME, None, 'trust'],
                       ['all', 'all', None, 'md5']]),
            ('host', [['all', SUPER_USER_NAME, '127.0.0.1/32', 'trust'],
                      ['all', SUPER_USER_NAME, '::1/128', 'trust'],
                      ['all', SUPER_USER_NAME, 'localhost', 'trust'],
                      ['all', SUPER_USER_NAME, '0.0.0.0/0', 'reject'],
                      ['all', SUPER_USER_NAME, '::/0', 'reject'],
                      ['all', 'all', '0.0.0.0/0', 'md5'],
                      ['all', 'all', '::/0', 'md5']])
        ])
        operating_system.write_file(
            HBA_CONFIG_FILE,
            access_rules,
            stream_codecs.PropertiesCodec(string_mappings={'\t': None}),
            as_root=True)
        operating_system.chown(HBA_CONFIG_FILE,
                               CONF.database_service_uid,
                               CONF.database_service_uid,
                               as_root=True)
        operating_system.chmod(HBA_CONFIG_FILE,
                               operating_system.FileMode.SET_USR_RO,
                               as_root=True)
コード例 #2
0
 def _read_log_position(self):
     backup_var_file = ('%s/backup_variables.txt' %
                        MySqlApp.get_data_dir())
     if operating_system.exists(backup_var_file):
         try:
             LOG.info(_("Reading log position from %s") % backup_var_file)
             backup_vars = operating_system.read_file(
                 backup_var_file,
                 stream_codecs.PropertiesCodec(delimiter='='),
                 as_root=True)
             binlog_position = backup_vars['binlog_position']
             binlog_file, binlog_pos = binlog_position.split(':')
             return {
                 'log_file': binlog_file,
                 'log_position': int(binlog_pos)
             }
         except Exception as ex:
             LOG.exception(ex)
             raise self.UnableToDetermineBinlogPosition(
                 {'binlog_file': backup_var_file})
     else:
         LOG.info(_("Log position detail not available. "
                    "Using default values."))
         return {'log_file': '',
                 'log_position': 4}
コード例 #3
0
class PostgresqlConfParser(object):

    CODEC = stream_codecs.PropertiesCodec(delimiter='=')

    def __init__(self, config):
        self.config = config

    def parse(self):
        return self.CODEC.deserialize(self.config).items()
コード例 #4
0
class RedisConfParser(object):

    CODEC = stream_codecs.PropertiesCodec()

    def __init__(self, config):
        self.config = config

    def parse(self):
        return self.CODEC.deserialize(self.config).items()
コード例 #5
0
 def set_db_start_flag_in_oratab(self, db_start_flag='Y'):
     """Set the database start flag of all entries in the oratab file to the
     specified value.
     """
     oratab = operating_system.read_file(
         ORATAB_FILE,
         stream_codecs.PropertiesCodec(delimiter=':'),
         as_root=True)
     for key in oratab.keys():
         oratab[key][1] = db_start_flag
     operating_system.write_file(ORATAB_FILE,
                                 oratab,
                                 stream_codecs.PropertiesCodec(
                                     delimiter=':', line_terminator='\n'),
                                 as_root=True)
     operating_system.chown(ORATAB_FILE,
                            self.instance_owner,
                            self.instance_owner_group,
                            as_root=True)
コード例 #6
0
 def _init_configuration_manager(self):
     revision_dir = self._init_overrides_dir()
     self.configuration_manager = configuration.ConfigurationManager(
         self.pfile,
         system.ORACLE_INSTANCE_OWNER,
         system.ORACLE_GROUP_OWNER,
         stream_codecs.PropertiesCodec(delimiter='=',
                                       comment_markers=('#')),
         requires_root=True,
         override_strategy=configuration.OneFileOverrideStrategy(
             revision_dir))
コード例 #7
0
 def _create_tns_file(self, dbs):
     if not path.isfile(TNS_PATH):
         operating_system.write_file(TNS_PATH, '', as_root=True)
     conf = configuration.ConfigurationManager(
         TNS_PATH,
         system.ORACLE_INSTANCE_OWNER,
         system.ORACLE_GROUP_OWNER,
         stream_codecs.PropertiesCodec('='),
         requires_root=True)
     conf.save_configuration({})
     for db in dbs:
         tns_entry = self._create_tns_entry(db['db_unique_name'],
                                            db['host'],
                                            self.ORA_CONF.db_name)
         conf.apply_system_override({db['db_unique_name']: tns_entry},
                                    db['db_unique_name'])
コード例 #8
0
 def _get_database_names(self):
     oratab_items = operating_system.read_file(
         OracleVMPaths.oratab_file,
         stream_codecs.PropertiesCodec(delimiter=':'))
     return oratab_items.keys()
コード例 #9
0
 def _get_database_names(self):
     oratab_items = operating_system.read_file(
         '/etc/oratab', stream_codecs.PropertiesCodec(delimiter=':'))
     return oratab_items.keys()