123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- class nova::api(
- $enabled = true,
- $manage_service = true,
- $api_paste_config = 'api-paste.ini',
- $ensure_package = 'present',
- $api_bind_address = '0.0.0.0',
- $osapi_compute_listen_port = 8774,
- $metadata_listen = '0.0.0.0',
- $metadata_listen_port = 8775,
- $enabled_apis = ['osapi_compute', 'metadata'],
- $use_forwarded_for = false,
- $osapi_compute_workers = $::processorcount,
- $metadata_workers = $::processorcount,
- $sync_db = true,
- $sync_db_api = true,
- $db_online_data_migrations = false,
- $neutron_metadata_proxy_shared_secret = undef,
- $default_floating_pool = 'nova',
- $pci_alias = undef,
- $ratelimits = undef,
- $ratelimits_factory =
- 'nova.api.openstack.compute.limits:RateLimitingMiddleware.factory',
- $validate = false,
- $validation_options = {},
- $instance_name_template = undef,
- $fping_path = '/usr/sbin/fping',
- $service_name = $::nova::params::api_service_name,
- $enable_proxy_headers_parsing = $::os_service_default,
- $metadata_cache_expiration = $::os_service_default,
- $vendordata_jsonfile_path = $::os_service_default,
- $vendordata_providers = $::os_service_default,
- $vendordata_dynamic_targets = $::os_service_default,
- $vendordata_dynamic_connect_timeout = $::os_service_default,
- $vendordata_dynamic_read_timeout = $::os_service_default,
- $max_limit = $::os_service_default,
- $compute_link_prefix = $::os_service_default,
- $glance_link_prefix = $::os_service_default,
- $hide_server_address_states = $::os_service_default,
- $allow_instance_snapshots = $::os_service_default,
- $enable_network_quota = $::os_service_default,
- $enable_instance_password = $::os_service_default,
- $password_length = $::os_service_default,
- $install_cinder_client = true,
- $allow_resize_to_same_host = false,
-
- $conductor_workers = undef,
- $osapi_max_limit = undef,
- $osapi_compute_link_prefix = undef,
- $osapi_glance_link_prefix = undef,
- $osapi_hide_server_address_states = undef,
- ) inherits nova::params {
- include ::nova::deps
- include ::nova::db
- include ::nova::policy
- include ::nova::keystone::authtoken
- if $install_cinder_client {
- include ::cinder::client
- Class['cinder::client'] ~> Nova::Generic_service['api']
- }
- if $conductor_workers {
- warning('The conductor_workers parameter is deprecated and has no effect. Use workers parameter of nova::conductor class instead.')
- }
- if $instance_name_template {
- nova_config {
- 'DEFAULT/instance_name_template': value => $instance_name_template;
- }
- } else {
- nova_config{
- 'DEFAULT/instance_name_template': ensure => absent;
- }
- }
- if $osapi_max_limit {
- warning('The osapi_max_limit parameter is deprecated. Please use max_limit instead')
- $max_limit_real = $osapi_max_limit
- } else {
- $max_limit_real = $max_limit
- }
- if $osapi_compute_link_prefix {
- warning('The osapi_compute_link_prefix parameter is deprecated. Please use compute_link_prefix instead')
- $compute_link_prefix_real = $osapi_compute_link_prefix
- } else {
- $compute_link_prefix_real = $compute_link_prefix
- }
- if $osapi_glance_link_prefix {
- warning('The osapi_glance_link_prefix parameter is deprecated. Please use glance_link_prefix instead')
- $glance_link_prefix_real = $osapi_glance_link_prefix
- } else {
- $glance_link_prefix_real = $glance_link_prefix
- }
- if $osapi_hide_server_address_states {
- warning('The osapi_hide_server_address_states parameter is deprecated. Please use hide_server_address_states instead')
- $hide_server_address_states_real = $osapi_hide_server_address_states
- } else {
- $hide_server_address_states_real = $hide_server_address_states
- }
- if !is_service_default($vendordata_providers) and !empty($vendordata_providers){
- validate_array($vendordata_providers)
- $vendordata_providers_real = join($vendordata_providers, ',')
- } else {
- $vendordata_providers_real = $::os_service_default
- }
- if !is_service_default($vendordata_dynamic_targets) and !empty($vendordata_dynamic_targets){
- validate_array($vendordata_dynamic_targets)
- $vendordata_dynamic_targets_real = join($vendordata_dynamic_targets, ',')
- } else {
- $vendordata_dynamic_targets_real = $::os_service_default
- }
-
- if ('metadata' in $enabled_apis and $service_name == 'httpd') {
- $enable_metadata = true
- } else {
- $enable_metadata = false
- }
-
- if $service_name == $::nova::params::api_service_name {
-
-
- $enabled_apis_real = $enabled_apis
- $service_enabled = $enabled
- } elsif $service_name == 'httpd' {
-
- if $enable_metadata {
- $enabled_apis_real = ['metadata']
- $service_enabled = $enabled
- } else {
-
- $enabled_apis_real = []
-
-
- $service_enabled = false
- }
- policy_rcd { 'nova-api':
- ensure => present,
- set_code => '101',
- before => Package['nova-api'],
- }
-
- Service[$service_name] -> Service['nova-api']
- } else {
- fail("Invalid service_name. Either nova-api/openstack-nova-api for running \
- as a standalone service, or httpd for being run by a httpd server")
- }
- nova::generic_service { 'api':
- enabled => $service_enabled,
- manage_service => $manage_service,
- ensure_package => $ensure_package,
- package_name => $::nova::params::api_package_name,
- service_name => $::nova::params::api_service_name,
- }
- nova_config {
- 'wsgi/api_paste_config': value => $api_paste_config;
- 'DEFAULT/enabled_apis': value => join($enabled_apis_real, ',');
- 'DEFAULT/osapi_compute_listen': value => $api_bind_address;
- 'DEFAULT/metadata_listen': value => $metadata_listen;
- 'DEFAULT/metadata_listen_port': value => $metadata_listen_port;
- 'DEFAULT/osapi_compute_listen_port': value => $osapi_compute_listen_port;
- 'DEFAULT/osapi_volume_listen': value => $api_bind_address;
- 'DEFAULT/osapi_compute_workers': value => $osapi_compute_workers;
- 'DEFAULT/metadata_workers': value => $metadata_workers;
- 'DEFAULT/default_floating_pool': value => $default_floating_pool;
- 'DEFAULT/enable_network_quota': value => $enable_network_quota;
- 'DEFAULT/password_length': value => $password_length;
- 'api/metadata_cache_expiration': value => $metadata_cache_expiration;
- 'api/use_forwarded_for': value => $use_forwarded_for;
- 'api/fping_path': value => $fping_path;
- 'api/vendordata_jsonfile_path': value => $vendordata_jsonfile_path;
- 'api/vendordata_providers': value => $vendordata_providers_real;
- 'api/vendordata_dynamic_targets': value => $vendordata_dynamic_targets_real;
- 'api/vendordata_dynamic_connect_timeout': value => $vendordata_dynamic_connect_timeout;
- 'api/vendordata_dynamic_read_timeout': value => $vendordata_dynamic_read_timeout;
- 'api/max_limit': value => $max_limit_real;
- 'api/compute_link_prefix': value => $compute_link_prefix_real;
- 'api/glance_link_prefix': value => $glance_link_prefix_real;
- 'api/hide_server_address_states': value => $hide_server_address_states_real;
- 'api/allow_instance_snapshots': value => $allow_instance_snapshots;
- 'api/enable_instance_password': value => $enable_instance_password;
- }
- oslo::middleware {'nova_config':
- enable_proxy_headers_parsing => $enable_proxy_headers_parsing,
- }
- if ($neutron_metadata_proxy_shared_secret){
- nova_config {
- 'neutron/service_metadata_proxy': value => true;
- 'neutron/metadata_proxy_shared_secret':
- value => $neutron_metadata_proxy_shared_secret;
- }
- } else {
- nova_config {
- 'neutron/service_metadata_proxy': value => false;
- 'neutron/metadata_proxy_shared_secret': ensure => absent;
- }
- }
- if ($ratelimits != undef) {
- nova_paste_api_ini {
- 'filter:ratelimit/paste.filter_factory': value => $ratelimits_factory;
- 'filter:ratelimit/limits': value => $ratelimits;
- }
- }
-
-
- if $sync_db {
- include ::nova::db::sync
- }
- if $sync_db_api {
- include ::nova::db::sync_api
- }
- if $db_online_data_migrations {
- include ::nova::db::online_data_migrations
- }
-
- nova_paste_api_ini {
- 'filter:authtoken/auth_uri': ensure => absent;
- 'filter:authtoken/auth_host': ensure => absent;
- 'filter:authtoken/auth_port': ensure => absent;
- 'filter:authtoken/auth_protocol': ensure => absent;
- 'filter:authtoken/admin_tenant_name': ensure => absent;
- 'filter:authtoken/admin_user': ensure => absent;
- 'filter:authtoken/admin_password': ensure => absent;
- 'filter:authtoken/auth_admin_prefix': ensure => absent;
- }
- if $pci_alias {
- nova_config {
- 'DEFAULT/pci_alias': value => check_array_of_hash($pci_alias);
- }
- }
- if $validate {
-
-
-
- $aur = $::nova::keystone::authtoken::username
-
- $apr = $::nova::keystone::authtoken::password
-
- $atnr = $::nova::keystone::authtoken::project_name
-
- $kau = $::nova::keystone::authtoken::auth_uri
- $defaults = {
- 'nova-api' => {
- 'command' => "nova --os-auth-url ${kau} --os-project-name ${atnr} --os-username ${aur} --os-password ${apr} flavor-list",
- }
- }
- $validation_options_hash = merge ($defaults, $validation_options)
- create_resources('openstacklib::service_validation', $validation_options_hash, {'subscribe' => 'Service[nova-api]'})
- }
- ensure_resource('nova_config', 'DEFAULT/allow_resize_to_same_host', { value => $allow_resize_to_same_host })
- }
|