Example #1
0
    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)
Example #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}
Example #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()
Example #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()
Example #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)
Example #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))
Example #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'])
Example #8
0
 def _get_database_names(self):
     oratab_items = operating_system.read_file(
         OracleVMPaths.oratab_file,
         stream_codecs.PropertiesCodec(delimiter=':'))
     return oratab_items.keys()
Example #9
0
 def _get_database_names(self):
     oratab_items = operating_system.read_file(
         '/etc/oratab', stream_codecs.PropertiesCodec(delimiter=':'))
     return oratab_items.keys()