 1b2725b551
			
		
	
	1b2725b551
	
	
	
		
			
			Nova is able to talk to a read-only database for some tables so it improves the scalability of MySQL server and reduce the access to the server in charge of writes. More documentation: https://wiki.openstack.org/wiki/Slave_usage Change-Id: I1d44332acb381b11d90b63535d274f535be26d55
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| #
 | |
| # Copyright (C) 2014 eNovance SAS <licensing@enovance.com>
 | |
| #
 | |
| # Author: Emilien Macchi <emilien.macchi@enovance.com>
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may
 | |
| # not use this file except in compliance with the License. You may obtain
 | |
| # a copy of the License at
 | |
| #
 | |
| #      http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | |
| # License for the specific language governing permissions and limitations
 | |
| # under the License.
 | |
| #
 | |
| # == Class: nova::db
 | |
| # Configures the nova database.
 | |
| #
 | |
| # == Parameters
 | |
| #
 | |
| # [*database_connection*]
 | |
| #   (optional) Connection url to connect to nova database.
 | |
| #   Defaults to undef
 | |
| #
 | |
| # [*slave_connection*]
 | |
| #   (optional) Connection url to connect to nova slave database (read-only).
 | |
| #   Defaults to undef
 | |
| #
 | |
| # [*database_idle_timeout*]
 | |
| #   (optional) Timeout before idle db connections are reaped.
 | |
| #   Defaults to undef
 | |
| #
 | |
| class nova::db (
 | |
|   $database_connection   = undef,
 | |
|   $slave_connection      = undef,
 | |
|   $database_idle_timeout = undef,
 | |
| ) {
 | |
| 
 | |
|   $database_connection_real = pick($database_connection, $::nova::database_connection, false)
 | |
|   $slave_connection_real = pick($slave_connection, $::nova::slave_connection, false)
 | |
|   $database_idle_timeout_real = pick($database_idle_timeout, $::nova::database_idle_timeout, false)
 | |
| 
 | |
|   if $database_connection_real {
 | |
|     if($database_connection_real =~ /mysql:\/\/\S+:\S+@\S+\/\S+/) {
 | |
|       require 'mysql::bindings'
 | |
|       require 'mysql::bindings::python'
 | |
|     } elsif($database_connection_real =~ /postgresql:\/\/\S+:\S+@\S+\/\S+/) {
 | |
| 
 | |
|     } elsif($database_connection_real =~ /sqlite:\/\//) {
 | |
| 
 | |
|     } else {
 | |
|       fail("Invalid db connection ${database_connection_real}")
 | |
|     }
 | |
|     nova_config {
 | |
|       'database/connection':   value => $database_connection_real, secret => true;
 | |
|       'database/idle_timeout': value => $database_idle_timeout_real;
 | |
|     }
 | |
|     if $slave_connection_real {
 | |
|       nova_config {
 | |
|         'database/slave_connection': value => $slave_connection_real, secret => true;
 | |
|       }
 | |
|     } else {
 | |
|       nova_config {
 | |
|         'database/slave_connection': ensure => absent;
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
| }
 |