Skip to content

Commit e66e5ab

Browse files
author
Dan Bode
committed
Add fedora support
This commit is a refactor of work performed by Derek Higgins that adds fedora 16 support to these openstack modules. It contains the following: - creates a params class to store all of the data differences. - installs all packages on all nova nodes - introuces an anchor that is used to specify ordering for things that need to occur before nova is installed. - manages libvirt package and service in the nova::compute::libvirt class
1 parent 649f335 commit e66e5ab

File tree

12 files changed

+112
-44
lines changed

12 files changed

+112
-44
lines changed

manifests/api.pp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,14 @@
1212
exec { "initial-db-sync":
1313
command => "/usr/bin/nova-manage db sync",
1414
refreshonly => true,
15-
require => [Package["nova-common"], Nova_config['sql_connection']],
15+
require => [Package[$::nova::params::package_names], Nova_config['sql_connection']],
1616
}
1717

18-
package { "nova-api":
19-
ensure => present,
20-
require => Package["python-greenlet"],
21-
notify => Exec['initial-db-sync'],
22-
}
2318
service { "nova-api":
19+
name => $::nova::params::api_service_name,
2420
ensure => $service_ensure,
2521
enable => $enabled,
26-
require => Package["nova-api"],
22+
require => Package[$::nova::params::package_names],
2723
#subscribe => File["/etc/nova/nova.conf"]
2824
}
2925
}

manifests/compute.pp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,11 @@
1616
$service_ensure = 'stopped'
1717
}
1818

19-
package { "nova-compute":
20-
ensure => present,
21-
require => Package['nova-common'],
22-
}
23-
2419
service { "nova-compute":
20+
name => $::nova::params::compute_service_name,
2521
ensure => $service_ensure,
2622
enable => $enabled,
27-
require => Package["nova-compute"],
23+
require => Package[$::nova::params::package_names],
2824
before => Exec['networking-refresh'],
2925
}
3026

manifests/compute/libvirt.pp

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,29 @@
33
$flat_network_bridge = 'br100',
44
$flat_network_bridge_ip,
55
$flat_network_bridge_netmask
6-
) {
6+
) inherits nova::compute{
7+
8+
include nova::params
9+
10+
package { 'libvirt':
11+
name => $::nova::params::libvirt_package_name,
12+
ensure => present,
13+
}
14+
15+
service {"libvirt" :
16+
name => $::nova::params::libvirt_service_name,
17+
ensure => running,
18+
provider => $::nova::params::special_service_provider,
19+
require => Package['libvirt'],
20+
}
21+
22+
Service['nova-compute'] {
23+
require +> Service['libvirt'],
24+
}
25+
726
nova_config { 'libvirt_type': value => $libvirt_type }
827
nova_config { 'connection_type': value => 'libvirt' }
28+
929
nova::network::bridge { $flat_network_bridge:
1030
ip => $flat_network_bridge_ip,
1131
netmask => $flat_network_bridge_netmask,

manifests/controller.pp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@
5656
flat_network_bridge_netmask => $flat_network_bridge_netmask,
5757
}
5858

59-
class { "nova::objectstore": enabled => true }
59+
class { "nova::objectstore":
60+
enabled => true,
61+
}
62+
6063
class { "nova::scheduler": enabled => true }
6164

6265
nova::manage::admin { $admin_user: }

manifests/db.pp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
$cluster_id = 'localzone'
88
) {
99

10-
# Create the db instance before nova-common if its installed
11-
Mysql::Db[$dbname] -> Package<| title == "nova-common" |>
10+
# Create the db instance before openstack-nova if its installed
11+
Mysql::Db[$dbname] -> Anchor<| title == "nova-start" |>
1212
Mysql::Db[$dbname] ~> Exec<| title == 'initial-db-sync' |>
1313

1414
# now this requires storedconfigs

manifests/init.pp

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,23 @@
2424
$nodaemon = false,
2525
$periodic_interval = '60',
2626
$report_interval = '10'
27+
2728
) {
2829

30+
include nova::params
31+
2932
Nova_config<| |> {
30-
require +> Package["nova-common"],
33+
require +> Package[$::nova::params::package_names],
3134
before +> File['/etc/nova/nova.conf'],
3235
notify +> Exec['post-nova_config']
3336
}
37+
38+
File {
39+
require => Package[$::nova::params::package_names],
40+
owner => 'nova',
41+
group => 'nova',
42+
}
43+
3444
# TODO - why is this required?
3545
package { 'python':
3646
ensure => present,
@@ -41,10 +51,21 @@
4151
}
4252

4353
class { 'nova::utilities': }
44-
package { ["python-nova", "nova-common", "nova-doc"]:
54+
55+
# this anchor is used to simplify the graph between nova components by
56+
# allowing a resource to serve as a point where the configuration of nova begins
57+
anchor { 'nova-start': }
58+
59+
package { ["python-nova", $::nova::params::doc_package_name]:
4560
ensure => present,
4661
require => Package["python-greenlet"]
4762
}
63+
64+
package { $::nova::params::package_names:
65+
ensure => present,
66+
require => [Package["python-greenlet"], Anchor['nova-start']]
67+
}
68+
4869
group { 'nova':
4970
ensure => present
5071
}
@@ -55,13 +76,8 @@
5576
file { $logdir:
5677
ensure => directory,
5778
mode => '751',
58-
owner => 'nova',
59-
group => 'nova',
60-
require => Package['nova-common'],
6179
}
6280
file { '/etc/nova/nova.conf':
63-
owner => 'nova',
64-
group => 'nova',
6581
mode => '0640',
6682
}
6783
exec { "nova-db-sync":

manifests/network.pp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@
99
$service_ensure = 'stopped'
1010
}
1111

12-
package { "nova-network":
13-
ensure => present,
14-
require => Package["python-greenlet"]
15-
}
16-
1712
service { "nova-network":
13+
name => $::nova::params::network_service_name,
1814
ensure => $service_ensure,
1915
enable => $enabled,
20-
require => Package["nova-network"],
16+
require => Package[$::nova::params::package_names],
2117
before => Exec['networking-refresh'],
2218
#subscribe => File["/etc/nova/nova.conf"]
2319
}

manifests/network/bridge.pp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
}
2121
}
2222

23+
'fedora' : {
24+
}
25+
2326
default: { fail('nova::network_bridge currently only supports Debian and Ubuntu') }
2427

2528
}

manifests/objectstore.pp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
class nova::objectstore( $enabled=false ) {
22

3+
include nova::params
4+
35
Exec['post-nova_config'] ~> Service['nova-objectstore']
46
Exec['nova-db-sync'] ~> Service['nova-objectstore']
57

@@ -9,15 +11,11 @@
911
$service_ensure = 'stopped'
1012
}
1113

12-
package { "nova-objectstore":
13-
ensure => present,
14-
require => Package["python-greenlet"]
15-
}
16-
1714
service { "nova-objectstore":
15+
name => $::nova::params::objectstore_service_name,
1816
ensure => $service_ensure,
1917
enable => $enabled,
20-
require => Package["nova-objectstore"],
18+
require => Package[$::nova::params::package_names],
2119
#subscribe => File["/etc/nova/nova.conf"]
2220
}
2321
}

manifests/params.pp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# these parameters need to be accessed from several locations and
2+
# should be considered to be constant
3+
class nova::params {
4+
5+
case $::osfamily {
6+
'RedHat': {
7+
$package_names = 'openstack-nova'
8+
$doc_package_name = 'openstack-nova-doc'
9+
$api_service_name = 'openstack-nova-api'
10+
$compute_service_name = 'openstack-nova-compute'
11+
$network_service_name = 'openstack-nova-network'
12+
$objectstore_service_name = 'openstack-nova-objectstore'
13+
$scheduler_service_name = 'openstack-nova-scheduler'
14+
$libvirt_package_name = 'libvirt'
15+
$libvirt_service_name = 'libvirtd'
16+
$special_service_provider = 'init'
17+
}
18+
'Debian': {
19+
$package_names = ['nova-common',
20+
'nova-api',
21+
'nova-compute',
22+
'nova-network',
23+
'nova-objectstore',
24+
'nova-scheduler'
25+
]
26+
$doc_package_name = 'nova-doc'
27+
$api_service_name = 'nova-api'
28+
$compute_service_name = 'nova-compute'
29+
$network_service_name = 'nova-network'
30+
$objectstore_service_name = 'nova-objectstore'
31+
$scheduler_service_name = 'nova-scheduler'
32+
$libvirt_package_name = 'libvirt-bin'
33+
$libvirt_service_name = 'libvirt-bin'
34+
# some of the services need to be started form the special upstart provider
35+
$special_service_provider = 'upstart'
36+
}
37+
default: {
38+
fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, module ${module_name} only support osfamily RedHat and Debian")
39+
}
40+
}
41+
42+
}

0 commit comments

Comments
 (0)