Merge "ANSIBLE Bootstrap changes for System Controller"
This commit is contained in:
commit
2c04825fc9
@ -344,6 +344,7 @@ class openstack::keystone::endpoint::runtime {
|
|||||||
if $::platform::params::distributed_cloud_role =='systemcontroller' {
|
if $::platform::params::distributed_cloud_role =='systemcontroller' {
|
||||||
include ::dcorch::keystone::auth
|
include ::dcorch::keystone::auth
|
||||||
include ::dcmanager::keystone::auth
|
include ::dcmanager::keystone::auth
|
||||||
|
include ::dcdbsync::keystone::auth
|
||||||
}
|
}
|
||||||
|
|
||||||
include ::smapi::keystone::auth
|
include ::smapi::keystone::auth
|
||||||
|
@ -61,9 +61,21 @@ class platform::dcmanager::api
|
|||||||
|
|
||||||
class { '::dcmanager::api':
|
class { '::dcmanager::api':
|
||||||
bind_host => $api_host,
|
bind_host => $api_host,
|
||||||
|
sync_db => $::platform::params::init_database,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
include ::platform::dcmanager::haproxy
|
include ::platform::dcmanager::haproxy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class platform::dcmanager::runtime {
|
||||||
|
if $::platform::params::distributed_cloud_role == 'systemcontroller' {
|
||||||
|
include ::platform::amqp::params
|
||||||
|
include ::dcmanager
|
||||||
|
include ::dcmanager::db::postgresql
|
||||||
|
class { '::dcmanager::api':
|
||||||
|
sync_db => str2bool($::is_standalone_controller),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -130,9 +130,22 @@ class platform::dcorch::api_proxy
|
|||||||
|
|
||||||
class { '::dcorch::api_proxy':
|
class { '::dcorch::api_proxy':
|
||||||
bind_host => $api_host,
|
bind_host => $api_host,
|
||||||
|
sync_db => $::platform::params::init_database,
|
||||||
}
|
}
|
||||||
|
|
||||||
include ::platform::dcorch::firewall
|
include ::platform::dcorch::firewall
|
||||||
include ::platform::dcorch::haproxy
|
include ::platform::dcorch::haproxy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class platform::dcorch::runtime {
|
||||||
|
if $::platform::params::distributed_cloud_role == 'systemcontroller' {
|
||||||
|
include ::platform::amqp::params
|
||||||
|
include ::dcorch
|
||||||
|
include ::dcorch::db::postgresql
|
||||||
|
|
||||||
|
class { '::dcorch::api_proxy':
|
||||||
|
sync_db => str2bool($::is_standalone_controller),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -254,7 +254,7 @@ class platform::drbd::patch_vault::params (
|
|||||||
$service_enabled = false,
|
$service_enabled = false,
|
||||||
$device = '/dev/drbd6',
|
$device = '/dev/drbd6',
|
||||||
$lv_name = 'patch-vault-lv',
|
$lv_name = 'patch-vault-lv',
|
||||||
$lv_size = '1',
|
$lv_size = '8',
|
||||||
$mountpoint = '/opt/patch-vault',
|
$mountpoint = '/opt/patch-vault',
|
||||||
$port = '7794',
|
$port = '7794',
|
||||||
$resource_name = 'drbd-patch-vault',
|
$resource_name = 'drbd-patch-vault',
|
||||||
@ -264,7 +264,7 @@ class platform::drbd::patch_vault::params (
|
|||||||
class platform::drbd::patch_vault (
|
class platform::drbd::patch_vault (
|
||||||
) inherits ::platform::drbd::patch_vault::params {
|
) inherits ::platform::drbd::patch_vault::params {
|
||||||
|
|
||||||
if str2bool($::is_initial_config_primary) {
|
if str2bool($::is_standalone_controller) {
|
||||||
$drbd_primary = true
|
$drbd_primary = true
|
||||||
$drbd_initial = true
|
$drbd_initial = true
|
||||||
$drbd_automount = true
|
$drbd_automount = true
|
||||||
|
@ -204,3 +204,32 @@ class platform::postgresql::upgrade
|
|||||||
include ::fm::db::postgresql
|
include ::fm::db::postgresql
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class platform::postgresql::sc::configured {
|
||||||
|
|
||||||
|
file { '/etc/platform/.sc_database_configured':
|
||||||
|
ensure => present,
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
mode => '0644',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class platform::postgresql::sc::runtime
|
||||||
|
inherits ::platform::postgresql::params {
|
||||||
|
class {'::postgresql::globals':
|
||||||
|
datadir => $data_dir,
|
||||||
|
confdir => $config_dir,
|
||||||
|
needs_initdb => false,
|
||||||
|
}
|
||||||
|
|
||||||
|
-> class {'::postgresql::server':
|
||||||
|
}
|
||||||
|
|
||||||
|
include ::platform::dcmanager::runtime
|
||||||
|
include ::platform::dcorch::runtime
|
||||||
|
|
||||||
|
class {'::platform::postgresql::sc::configured':
|
||||||
|
stage => post
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -99,20 +99,18 @@ class dcmanager::api (
|
|||||||
$service_port = '5000',
|
$service_port = '5000',
|
||||||
$package_ensure = 'latest',
|
$package_ensure = 'latest',
|
||||||
$bind_host = '0.0.0.0',
|
$bind_host = '0.0.0.0',
|
||||||
$enabled = false
|
$enabled = false,
|
||||||
|
$sync_db = false,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
include dcmanager::params
|
include dcmanager::params
|
||||||
|
include dcmanager::deps
|
||||||
Dcmanager_config<||> ~> Service['dcmanager-api']
|
|
||||||
Dcmanager_config<||> ~> Exec['dcmanager-dbsync']
|
|
||||||
|
|
||||||
if $::dcmanager::params::api_package {
|
if $::dcmanager::params::api_package {
|
||||||
Package['dcmanager'] -> Dcmanager_config<||>
|
|
||||||
Package['dcmanager'] -> Service['dcmanager-api']
|
|
||||||
package { 'dcmanager':
|
package { 'dcmanager':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcmanager::params::api_package,
|
name => $::dcmanager::params::api_package,
|
||||||
|
tag => 'dcmanager-package',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,15 +192,7 @@ class dcmanager::api (
|
|||||||
}
|
}
|
||||||
Keystone_endpoint<||> -> Service['dcmanager-api']
|
Keystone_endpoint<||> -> Service['dcmanager-api']
|
||||||
|
|
||||||
exec { 'dcmanager-dbsync':
|
if $sync_db {
|
||||||
command => $::dcmanager::params::db_sync_command,
|
include ::dcmanager::db::sync
|
||||||
path => '/usr/bin',
|
|
||||||
refreshonly => true,
|
|
||||||
logoutput => 'on_failure',
|
|
||||||
require => Package['dcmanager'],
|
|
||||||
# Only do the db sync if both controllers are running the same software
|
|
||||||
# version. Avoids impacting mate controller during an upgrade.
|
|
||||||
onlyif => "test ${::controller_sw_versions_match} = true",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,11 @@ class dcmanager::client(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
include dcmanager::params
|
include dcmanager::params
|
||||||
|
include dcmanager::deps
|
||||||
|
|
||||||
package { 'dcmanagerclient':
|
package { 'dcmanagerclient':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcmanager::params::client_package,
|
name => $::dcmanager::params::client_package,
|
||||||
|
tag => 'dcmanager-package',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,8 @@ class dcmanager::db::postgresql(
|
|||||||
$privileges = 'ALL',
|
$privileges = 'ALL',
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
include dcmanager::deps
|
||||||
|
|
||||||
::openstacklib::db::postgresql { 'dcmanager':
|
::openstacklib::db::postgresql { 'dcmanager':
|
||||||
password_hash => postgresql_password($user, $password),
|
password_hash => postgresql_password($user, $password),
|
||||||
dbname => $dbname,
|
dbname => $dbname,
|
||||||
@ -48,7 +50,7 @@ class dcmanager::db::postgresql(
|
|||||||
privileges => $privileges,
|
privileges => $privileges,
|
||||||
}
|
}
|
||||||
|
|
||||||
::Openstacklib::Db::Postgresql['dcmanager'] ~> Service <| title == 'dcmanager-api' |>
|
Anchor['dcmanager::db::begin']
|
||||||
::Openstacklib::Db::Postgresql['dcmanager'] ~> Service <| title == 'dcmanager-manager' |>
|
~> Class['dcmanager::db::postgresql']
|
||||||
::Openstacklib::Db::Postgresql['dcmanager'] ~> Exec <| title == 'dcmanager-dbsync' |>
|
~> Anchor['dcmanager::db::end']
|
||||||
}
|
}
|
||||||
|
@ -10,12 +10,22 @@
|
|||||||
class dcmanager::db::sync {
|
class dcmanager::db::sync {
|
||||||
|
|
||||||
include dcmanager::params
|
include dcmanager::params
|
||||||
|
include dcmanager::deps
|
||||||
|
|
||||||
exec { 'dcmanager-dbsync':
|
exec { 'dcmanager-dbsync':
|
||||||
command => $::dcmanager::params::db_sync_command,
|
command => $::dcmanager::params::db_sync_command,
|
||||||
path => '/usr/bin',
|
path => '/usr/bin',
|
||||||
refreshonly => true,
|
refreshonly => true,
|
||||||
require => [File[$::dcmanager::params::dcmanager_conf], Class['dcmanager']],
|
|
||||||
logoutput => 'on_failure',
|
logoutput => 'on_failure',
|
||||||
|
subscribe => [
|
||||||
|
Anchor['dcmanager::install::end'],
|
||||||
|
Anchor['dcmanager::config::end'],
|
||||||
|
Anchor['dcmanager::db::end'],
|
||||||
|
Anchor['dcmanager::dbsync::begin']
|
||||||
|
],
|
||||||
|
notify => Anchor['dcmanager::dbsync::end'],
|
||||||
|
# Only do the db sync if both controllers are running the same software
|
||||||
|
# version. Avoids impacting mate controller during an upgrade.
|
||||||
|
onlyif => "test ${::controller_sw_versions_match} = true",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
# == Class: dcmanager::deps
|
||||||
|
#
|
||||||
|
# dcmanager anchors and dependency management
|
||||||
|
#
|
||||||
|
class dcmanager::deps {
|
||||||
|
anchor { 'dcmanager::install::begin': }
|
||||||
|
-> Package<| tag == 'dcmanager-package'|>
|
||||||
|
~> anchor { 'dcmanager::install::end': }
|
||||||
|
-> anchor { 'dcmanager::config::begin': }
|
||||||
|
-> Dcmanager_config<||>
|
||||||
|
~> anchor { 'dcmanager::config::end': }
|
||||||
|
-> anchor { 'dcmanager::db::begin': }
|
||||||
|
-> anchor { 'dcmanager::db::end': }
|
||||||
|
~> anchor { 'dcmanager::dbsync::begin': }
|
||||||
|
-> anchor { 'dcmanager::dbsync::end': }
|
||||||
|
~> anchor { 'dcmanager::service::begin': }
|
||||||
|
~> Service<| tag == 'dcmanager-service' |>
|
||||||
|
~> anchor { 'dcmanager::service::end': }
|
||||||
|
|
||||||
|
Oslo::Db<||> -> Anchor['dcmanager::dbsync::begin']
|
||||||
|
|
||||||
|
# Installation or config changes will always restart services.
|
||||||
|
Anchor['dcmanager::install::end'] ~> Anchor['dcmanager::service::begin']
|
||||||
|
Anchor['dcmanager::config::end'] ~> Anchor['dcmanager::service::begin']
|
||||||
|
}
|
@ -45,8 +45,7 @@ class dcmanager (
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
include dcmanager::params
|
include dcmanager::params
|
||||||
|
include dcmanager::deps
|
||||||
Package['dcmanager'] -> Dcmanager_config<||>
|
|
||||||
|
|
||||||
# this anchor is used to simplify the graph between dcmanager components by
|
# this anchor is used to simplify the graph between dcmanager components by
|
||||||
# allowing a resource to serve as a point where the configuration of dcmanager begins
|
# allowing a resource to serve as a point where the configuration of dcmanager begins
|
||||||
|
@ -14,15 +14,13 @@ class dcmanager::manager (
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
include dcmanager::params
|
include dcmanager::params
|
||||||
|
include dcmanager::deps
|
||||||
Dcmanager_config<||> ~> Service['dcmanager-manager']
|
|
||||||
|
|
||||||
if $::dcmanager::params::manager_package {
|
if $::dcmanager::params::manager_package {
|
||||||
Package['dcmanager-manager'] -> Dcmanager_config<||>
|
|
||||||
Package['dcmanager-manager'] -> Service['dcmanager-manager']
|
|
||||||
package { 'dcmanager-manager':
|
package { 'dcmanager-manager':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcmanager::params::manager_package,
|
name => $::dcmanager::params::manager_package,
|
||||||
|
tag => 'dcmanager-package',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,7 +36,6 @@ class dcmanager::manager (
|
|||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
hasstatus => false,
|
hasstatus => false,
|
||||||
require => Package['dcmanager'],
|
require => Package['dcmanager'],
|
||||||
|
tag => 'dcmanager-service',
|
||||||
}
|
}
|
||||||
|
|
||||||
Exec<| title == 'dcmanager-dbsync' |> -> Service['dcmanager-manager']
|
|
||||||
}
|
}
|
||||||
|
@ -99,22 +99,18 @@ class dcorch::api_proxy (
|
|||||||
$service_port = '5000',
|
$service_port = '5000',
|
||||||
$package_ensure = 'latest',
|
$package_ensure = 'latest',
|
||||||
$bind_host = '0.0.0.0',
|
$bind_host = '0.0.0.0',
|
||||||
$enabled = false
|
$enabled = false,
|
||||||
|
$sync_db = false,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
include dcorch::params
|
include dcorch::params
|
||||||
|
include dcorch::deps
|
||||||
Dcorch_config<||> ~> Service['dcorch-api-proxy']
|
|
||||||
Dcorch_config<||> ~> Exec['dcorch-dbsync']
|
|
||||||
Dcorch_api_paste_ini<||> ~> Service['dcorch-api-proxy']
|
|
||||||
|
|
||||||
if $::dcorch::params::api_package {
|
if $::dcorch::params::api_package {
|
||||||
Package['dcorch'] -> Dcorch_config<||>
|
|
||||||
Package['dcorch'] -> Dcorch_api_paste_ini<||>
|
|
||||||
Package['dcorch'] -> Service['dcorch-api-proxy']
|
|
||||||
package { 'dcorch':
|
package { 'dcorch':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcorch::params::api_proxy_package,
|
name => $::dcorch::params::api_proxy_package,
|
||||||
|
tag => 'dcorch-package',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,15 +192,7 @@ class dcorch::api_proxy (
|
|||||||
}
|
}
|
||||||
Keystone_endpoint<||> -> Service['dcorch-api-proxy']
|
Keystone_endpoint<||> -> Service['dcorch-api-proxy']
|
||||||
|
|
||||||
exec { 'dcorch-dbsync':
|
if $sync_db {
|
||||||
command => $::dcorch::params::db_sync_command,
|
include ::dcorch::db::sync
|
||||||
path => '/usr/bin',
|
|
||||||
refreshonly => true,
|
|
||||||
logoutput => 'on_failure',
|
|
||||||
require => Package['dcorch'],
|
|
||||||
# Only do the db sync if both controllers are running the same software
|
|
||||||
# version. Avoids impacting mate controller during an upgrade.
|
|
||||||
onlyif => "test ${::controller_sw_versions_match} = true",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,11 @@ class dcorch::client(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
include dcorch::params
|
include dcorch::params
|
||||||
|
include dcorch::deps
|
||||||
|
|
||||||
package { 'dcorchclient':
|
package { 'dcorchclient':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcorch::params::client_package,
|
name => $::dcorch::params::client_package,
|
||||||
|
tag => 'dcorch-package',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,8 @@ class dcorch::db::postgresql(
|
|||||||
$privileges = 'ALL',
|
$privileges = 'ALL',
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
include dcorch::deps
|
||||||
|
|
||||||
::openstacklib::db::postgresql { 'dcorch':
|
::openstacklib::db::postgresql { 'dcorch':
|
||||||
password_hash => postgresql_password($user, $password),
|
password_hash => postgresql_password($user, $password),
|
||||||
dbname => $dbname,
|
dbname => $dbname,
|
||||||
@ -48,7 +50,7 @@ class dcorch::db::postgresql(
|
|||||||
privileges => $privileges,
|
privileges => $privileges,
|
||||||
}
|
}
|
||||||
|
|
||||||
::Openstacklib::Db::Postgresql['dcorch'] ~> Service <| title == 'dcorch-api-proxy' |>
|
Anchor['dcorch::db::begin']
|
||||||
::Openstacklib::Db::Postgresql['dcorch'] ~> Service <| title == 'dcorch-engine' |>
|
~> Class['dcorch::db::postgresql']
|
||||||
::Openstacklib::Db::Postgresql['dcorch'] ~> Exec <| title == 'dcorch-dbsync' |>
|
~> Anchor['dcorch::db::end']
|
||||||
}
|
}
|
||||||
|
@ -10,12 +10,22 @@
|
|||||||
class dcorch::db::sync {
|
class dcorch::db::sync {
|
||||||
|
|
||||||
include dcorch::params
|
include dcorch::params
|
||||||
|
include dcorch::deps
|
||||||
|
|
||||||
exec { 'dcorch-dbsync':
|
exec { 'dcorch-dbsync':
|
||||||
command => $::dcorch::params::db_sync_command,
|
command => $::dcorch::params::db_sync_command,
|
||||||
path => '/usr/bin',
|
path => '/usr/bin',
|
||||||
refreshonly => true,
|
refreshonly => true,
|
||||||
require => [File[$::dcorch::params::dcorch_conf], Class['dcorch']],
|
|
||||||
logoutput => 'on_failure',
|
logoutput => 'on_failure',
|
||||||
|
subscribe => [
|
||||||
|
Anchor['dcorch::install::end'],
|
||||||
|
Anchor['dcorch::config::end'],
|
||||||
|
Anchor['dcorch::db::end'],
|
||||||
|
Anchor['dcorch::dbsync::begin']
|
||||||
|
],
|
||||||
|
notify => Anchor['dcorch::dbsync::end'],
|
||||||
|
# Only do the db sync if both controllers are running the same software
|
||||||
|
# version. Avoids impacting mate controller during an upgrade.
|
||||||
|
onlyif => "test ${::controller_sw_versions_match} = true",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
# == Class: dcorch::deps
|
||||||
|
#
|
||||||
|
# dcorch anchors and dependency management
|
||||||
|
#
|
||||||
|
class dcorch::deps {
|
||||||
|
anchor { 'dcorch::install::begin': }
|
||||||
|
-> Package<| tag == 'dcorch-package'|>
|
||||||
|
~> anchor { 'dcorch::install::end': }
|
||||||
|
-> anchor { 'dcorch::config::begin': }
|
||||||
|
-> Dcorch_config<||>
|
||||||
|
~> anchor { 'dcorch::config::end': }
|
||||||
|
-> anchor { 'dcorch::db::begin': }
|
||||||
|
-> anchor { 'dcorch::db::end': }
|
||||||
|
~> anchor { 'dcorch::dbsync::begin': }
|
||||||
|
-> anchor { 'dcorch::dbsync::end': }
|
||||||
|
~> anchor { 'dcorch::service::begin': }
|
||||||
|
~> Service<| tag == 'dcorch-service' |>
|
||||||
|
~> anchor { 'dcorch::service::end': }
|
||||||
|
|
||||||
|
Anchor['dcorch::config::begin']
|
||||||
|
-> Dcorch_api_paste_ini<||>
|
||||||
|
~> Anchor['dcorch::config::end']
|
||||||
|
|
||||||
|
Oslo::Db<||> -> Anchor['dcorch::dbsync::begin']
|
||||||
|
|
||||||
|
# Installation or config changes will always restart services.
|
||||||
|
Anchor['dcorch::install::end'] ~> Anchor['dcorch::service::begin']
|
||||||
|
Anchor['dcorch::config::end'] ~> Anchor['dcorch::service::begin']
|
||||||
|
}
|
@ -14,15 +14,13 @@ class dcorch::engine (
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
include dcorch::params
|
include dcorch::params
|
||||||
|
include dcorch::deps
|
||||||
Dcorch_config<||> ~> Service['dcorch-engine']
|
|
||||||
|
|
||||||
if $::dcorch::params::engine_package {
|
if $::dcorch::params::engine_package {
|
||||||
Package['dcorch-engine'] -> Dcorch_config<||>
|
|
||||||
Package['dcorch-engine'] -> Service['dcorch-engine']
|
|
||||||
package { 'dcorch-engine':
|
package { 'dcorch-engine':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcorch::params::engine_package,
|
name => $::dcorch::params::engine_package,
|
||||||
|
tag => 'dcorch-package',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,8 +35,7 @@ class dcorch::engine (
|
|||||||
name => $::dcorch::params::engine_service,
|
name => $::dcorch::params::engine_service,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
hasstatus => false,
|
hasstatus => false,
|
||||||
require => Package['dcorch'],
|
tag => 'dcorch-service',
|
||||||
}
|
}
|
||||||
|
|
||||||
Exec<| title == 'dcorch-dbsync' |> -> Service['dcorch-engine']
|
|
||||||
}
|
}
|
||||||
|
@ -60,9 +60,7 @@ class dcorch (
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
include dcorch::params
|
include dcorch::params
|
||||||
|
include dcorch::deps
|
||||||
Package['dcorch'] -> Dcorch_config<||>
|
|
||||||
Package['dcorch'] -> Dcorch_api_paste_ini<||>
|
|
||||||
|
|
||||||
# this anchor is used to simplify the graph between dcorch components by
|
# this anchor is used to simplify the graph between dcorch components by
|
||||||
# allowing a resource to serve as a point where the configuration of dcorch begins
|
# allowing a resource to serve as a point where the configuration of dcorch begins
|
||||||
@ -72,6 +70,7 @@ class dcorch (
|
|||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcorch::params::package_name,
|
name => $::dcorch::params::package_name,
|
||||||
require => Anchor['dcorch-start'],
|
require => Anchor['dcorch-start'],
|
||||||
|
tag => 'dcorch-package',
|
||||||
}
|
}
|
||||||
|
|
||||||
file { $::dcorch::params::dcorch_conf:
|
file { $::dcorch::params::dcorch_conf:
|
||||||
|
@ -16,15 +16,13 @@ class dcorch::snmp (
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
include dcorch::params
|
include dcorch::params
|
||||||
|
include dcorch::deps
|
||||||
Dcorch_config<||> ~> Service['dcorch-snmp']
|
|
||||||
|
|
||||||
if $::dcorch::params::snmp_package {
|
if $::dcorch::params::snmp_package {
|
||||||
Package['dcorch-snmp'] -> Dcorch_config<||>
|
|
||||||
Package['dcorch-snmp'] -> Service['dcorch-snmp']
|
|
||||||
package { 'dcorch-snmp':
|
package { 'dcorch-snmp':
|
||||||
ensure => $package_ensure,
|
ensure => $package_ensure,
|
||||||
name => $::dcorch::params::snmp_package,
|
name => $::dcorch::params::snmp_package,
|
||||||
|
tag => 'dcorch-package',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dcorch_config {
|
dcorch_config {
|
||||||
@ -43,8 +41,7 @@ class dcorch::snmp (
|
|||||||
name => $::dcorch::params::snmp_service,
|
name => $::dcorch::params::snmp_service,
|
||||||
enable => $enabled,
|
enable => $enabled,
|
||||||
hasstatus => false,
|
hasstatus => false,
|
||||||
require => Package['dcorch'],
|
tag => 'dcorch-service',
|
||||||
}
|
}
|
||||||
|
|
||||||
Exec<| title == 'dcorch-dbsync' |> -> Service['dcorch-snmp']
|
|
||||||
}
|
}
|
||||||
|
@ -1431,6 +1431,12 @@ class HostController(rest.RestController):
|
|||||||
pecan.request.rpcapi.reconfigure_service_endpoints(
|
pecan.request.rpcapi.reconfigure_service_endpoints(
|
||||||
pecan.request.context, controller_ihost)
|
pecan.request.context, controller_ihost)
|
||||||
|
|
||||||
|
# if it is a system controller, config the database
|
||||||
|
if (utils.get_distributed_cloud_role() ==
|
||||||
|
constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER):
|
||||||
|
pecan.request.rpcapi.configure_sc_database(
|
||||||
|
pecan.request.context, controller_ihost)
|
||||||
|
|
||||||
return Host.convert_with_links(controller_ihost)
|
return Host.convert_with_links(controller_ihost)
|
||||||
|
|
||||||
if ihost_dict['personality'] in (constants.CONTROLLER, constants.STORAGE):
|
if ihost_dict['personality'] in (constants.CONTROLLER, constants.STORAGE):
|
||||||
|
@ -191,7 +191,7 @@ class InterfaceNetworkController(rest.RestController):
|
|||||||
ethernet_port_mac = tmp_interface['imac']
|
ethernet_port_mac = tmp_interface['imac']
|
||||||
_update_host_mgmt_mac(host, ethernet_port_mac)
|
_update_host_mgmt_mac(host, ethernet_port_mac)
|
||||||
cutils.perform_distributed_cloud_config(pecan.request.dbapi,
|
cutils.perform_distributed_cloud_config(pecan.request.dbapi,
|
||||||
interface_id)
|
interface_uuid)
|
||||||
|
|
||||||
return InterfaceNetwork.convert_with_links(result)
|
return InterfaceNetwork.convert_with_links(result)
|
||||||
|
|
||||||
|
@ -477,18 +477,26 @@ class SystemController(rest.RestController):
|
|||||||
" as %s" % https_enabled))
|
" as %s" % https_enabled))
|
||||||
|
|
||||||
if 'distributed_cloud_role' in updates:
|
if 'distributed_cloud_role' in updates:
|
||||||
# At this point dc role cannot be changed after config_controller
|
# At this point dc role cannot be changed after initial
|
||||||
# and config_subcloud
|
# configuration is complete
|
||||||
if rpc_isystem['distributed_cloud_role'] is None and \
|
if (rpc_isystem['distributed_cloud_role'] is not None and
|
||||||
distributed_cloud_role in \
|
cutils.is_initial_config_complete()):
|
||||||
|
raise wsme.exc.ClientSideError(
|
||||||
|
_("distributed_cloud_role is already set "
|
||||||
|
" as %s" % rpc_isystem['distributed_cloud_role']))
|
||||||
|
# allow set the role to None before the initial config
|
||||||
|
# is complete
|
||||||
|
elif ((distributed_cloud_role in
|
||||||
[constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER,
|
[constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER,
|
||||||
constants.DISTRIBUTED_CLOUD_ROLE_SUBCLOUD]:
|
constants.DISTRIBUTED_CLOUD_ROLE_SUBCLOUD] or
|
||||||
|
distributed_cloud_role is None) and not
|
||||||
|
cutils.is_initial_config_complete()):
|
||||||
change_dc_role = True
|
change_dc_role = True
|
||||||
patched_system['distributed_cloud_role'] = distributed_cloud_role
|
patched_system['distributed_cloud_role'] = distributed_cloud_role
|
||||||
else:
|
else:
|
||||||
raise wsme.exc.ClientSideError(_("distributed_cloud_role is already set "
|
raise wsme.exc.ClientSideError(_("Unexpected value %s specified"
|
||||||
" as %s" % rpc_isystem['distributed_cloud_role']))
|
" for distributed_cloud_role"
|
||||||
|
% distributed_cloud_role))
|
||||||
|
|
||||||
if 'vswitch_type' in updates:
|
if 'vswitch_type' in updates:
|
||||||
if vswitch_type == rpc_isystem['capabilities']['vswitch_type']:
|
if vswitch_type == rpc_isystem['capabilities']['vswitch_type']:
|
||||||
@ -575,6 +583,16 @@ class SystemController(rest.RestController):
|
|||||||
pecan.request.rpcapi.update_distributed_cloud_role(
|
pecan.request.rpcapi.update_distributed_cloud_role(
|
||||||
pecan.request.context)
|
pecan.request.context)
|
||||||
|
|
||||||
|
# check if we need to config the system controller database
|
||||||
|
if (change_dc_role and distributed_cloud_role ==
|
||||||
|
constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER):
|
||||||
|
hosts = pecan.request.dbapi.ihost_get_by_personality(
|
||||||
|
constants.CONTROLLER)
|
||||||
|
# this is a replay case after the first host has been created
|
||||||
|
if len(hosts) == 1:
|
||||||
|
pecan.request.rpcapi.configure_sc_database(
|
||||||
|
pecan.request.context, hosts[0])
|
||||||
|
|
||||||
if 'security_feature' in delta_handle:
|
if 'security_feature' in delta_handle:
|
||||||
LOG.info("update security_feature %s" % security_feature)
|
LOG.info("update security_feature %s" % security_feature)
|
||||||
pecan.request.rpcapi.update_security_feature_config(
|
pecan.request.rpcapi.update_security_feature_config(
|
||||||
|
@ -10378,3 +10378,44 @@ class ConductorManager(service.PeriodicService):
|
|||||||
else:
|
else:
|
||||||
LOG.error("Received a request to update management mac for host "
|
LOG.error("Received a request to update management mac for host "
|
||||||
"%s under the wrong condition." % host.hostname)
|
"%s under the wrong condition." % host.hostname)
|
||||||
|
|
||||||
|
def configure_sc_database(self, context, host):
|
||||||
|
"""Configure the system controller database upon the creation of initial
|
||||||
|
controller host and distributed_cloud_role change from 'none' to
|
||||||
|
'systemcontroller' during bootstrap playbook play and replay.
|
||||||
|
|
||||||
|
:param context: request context.
|
||||||
|
:param host: an ihost object
|
||||||
|
|
||||||
|
"""
|
||||||
|
if (os.path.isfile(constants.ANSIBLE_BOOTSTRAP_FLAG) and
|
||||||
|
host.hostname == constants.CONTROLLER_0_HOSTNAME):
|
||||||
|
|
||||||
|
inventory_completed = True
|
||||||
|
|
||||||
|
# This could be called as part of host creation, wait for
|
||||||
|
# inventory to complete
|
||||||
|
for i in range(constants.INVENTORY_WAIT_TIMEOUT_IN_SECS):
|
||||||
|
if cutils.is_inventory_config_complete(self.dbapi, host.uuid):
|
||||||
|
break
|
||||||
|
LOG.info('Inventory incomplete, will try again in 1 second.')
|
||||||
|
greenthread.sleep(1)
|
||||||
|
else:
|
||||||
|
inventory_completed = False
|
||||||
|
|
||||||
|
if inventory_completed:
|
||||||
|
personalities = [constants.CONTROLLER]
|
||||||
|
config_uuid = self._config_update_hosts(context, personalities)
|
||||||
|
config_dict = {
|
||||||
|
"personalities": personalities,
|
||||||
|
"host_uuids": [host.uuid],
|
||||||
|
"classes": ['platform::postgresql::sc::runtime']
|
||||||
|
}
|
||||||
|
self._config_apply_runtime_manifest(
|
||||||
|
context, config_uuid, config_dict, force=True)
|
||||||
|
else:
|
||||||
|
LOG.error("Unable to configure the sc database. Timed out "
|
||||||
|
"waiting for inventory to complete.")
|
||||||
|
else:
|
||||||
|
LOG.error("Received a request to configure the sc database "
|
||||||
|
"for host %s under the wrong condition." % host.hostname)
|
||||||
|
@ -1832,3 +1832,16 @@ class ConductorAPI(sysinv.openstack.common.rpc.proxy.RpcProxy):
|
|||||||
self.make_msg('mgmt_mac_set_by_ihost',
|
self.make_msg('mgmt_mac_set_by_ihost',
|
||||||
host=host,
|
host=host,
|
||||||
mgmt_mac=mgmt_mac))
|
mgmt_mac=mgmt_mac))
|
||||||
|
|
||||||
|
def configure_sc_database(self, context, host):
|
||||||
|
"""Synchronously, configure system controller database upon the
|
||||||
|
creation of initial controller host and distributed_cloud_role
|
||||||
|
change from 'none' to 'systemcontroller' during bootstrap
|
||||||
|
playbook play and replay.
|
||||||
|
|
||||||
|
:param context: request context.
|
||||||
|
:param host: an ihost object
|
||||||
|
"""
|
||||||
|
return self.call(context,
|
||||||
|
self.make_msg('configure_sc_database',
|
||||||
|
host=host))
|
||||||
|
Loading…
Reference in New Issue
Block a user