Retire puppet-sahara: Remove Project Content
Depends-on: https://review.opendev.org/c/openstack/project-config/+/910452 Change-Id: Ifbcdf71f515ab24da67c9350b958cb987b1badc8
This commit is contained in:
parent
23a403b211
commit
50b3fc6ac7
26
.gitignore
vendored
26
.gitignore
vendored
@ -1,26 +0,0 @@
|
||||
# Add patterns in here to exclude files created by tools integrated with this
|
||||
# repository, such as test frameworks from the project's recommended workflow,
|
||||
# rendered documentation and package builds.
|
||||
#
|
||||
# Don't add patterns to exclude files created by preferred personal tools
|
||||
# (editors, IDEs, your operating system itself even). These should instead be
|
||||
# maintained outside the repository, for example in a ~/.gitignore file added
|
||||
# with:
|
||||
#
|
||||
# git config --global core.excludesfile '~/.gitignore'
|
||||
|
||||
pkg/
|
||||
Gemfile.lock
|
||||
vendor/
|
||||
spec/fixtures/
|
||||
.vagrant/
|
||||
.bundle/
|
||||
coverage/
|
||||
.idea/
|
||||
*.iml
|
||||
/openstack
|
||||
/log
|
||||
|
||||
# Files created by releasenotes build
|
||||
releasenotes/build
|
||||
.tox
|
52
.pdkignore
52
.pdkignore
@ -1,52 +0,0 @@
|
||||
# common list used in puppetlabs repos
|
||||
.git/
|
||||
.*.sw[op]
|
||||
.metadata
|
||||
.yardoc
|
||||
.yardwarns
|
||||
*.iml
|
||||
/.bundle/
|
||||
/.idea/
|
||||
/.vagrant/
|
||||
/coverage/
|
||||
/bin/
|
||||
/doc/
|
||||
/Gemfile.local
|
||||
/Gemfile.lock
|
||||
/junit/
|
||||
/log/
|
||||
/pkg/
|
||||
/spec/fixtures/manifests/
|
||||
/spec/fixtures/modules/*
|
||||
/tmp/
|
||||
/vendor/
|
||||
/convert_report.txt
|
||||
/update_report.txt
|
||||
.DS_Store
|
||||
.project
|
||||
.envrc
|
||||
/inventory.yaml
|
||||
/spec/fixtures/litmus_inventory.yaml
|
||||
/.fixtures.yml
|
||||
/Gemfile
|
||||
/.gitattributes
|
||||
/.gitignore
|
||||
/.pdkignore
|
||||
/.puppet-lint.rc
|
||||
/Rakefile
|
||||
/rakelib/
|
||||
/.rspec
|
||||
/..yml
|
||||
/.yardopts
|
||||
/spec/
|
||||
/.vscode/
|
||||
/.sync.yml
|
||||
/.devcontainer/
|
||||
# OpenStack-specific files
|
||||
/bindep.txt
|
||||
/.gitreview
|
||||
/releasenotes/
|
||||
/setup.cfg
|
||||
/setup.py
|
||||
/tox.ini
|
||||
/.zuul.yaml
|
@ -1,7 +0,0 @@
|
||||
- project:
|
||||
templates:
|
||||
- puppet-openstack-check-jobs
|
||||
- puppet-openstack-module-unit-jobs
|
||||
- puppet-openstack-integration-jobs-scenario003
|
||||
- puppet-openstack-litmus-jobs
|
||||
- release-notes-jobs-python3
|
53
CHANGELOG.md
53
CHANGELOG.md
@ -1,53 +0,0 @@
|
||||
## 8.0.0 and beyond
|
||||
|
||||
From 8.0.0 release and beyond, release notes are published on
|
||||
[docs.openstack.org](https://docs.openstack.org/releasenotes/puppet-sahara/).
|
||||
|
||||
##2015-11-25 - 7.0.0
|
||||
###Summary
|
||||
|
||||
This is a backwards-incompatible major release for OpenStack Liberty.
|
||||
|
||||
####Backwards-incompatible changes
|
||||
- remove kilo deprecated parameters
|
||||
|
||||
####Features
|
||||
- add distribute mode support
|
||||
- introduce Sahara extended logging class
|
||||
- remove POSIX file modes
|
||||
- add tag to package and service resources
|
||||
- add sahara::config class
|
||||
- add sahara::db::sync
|
||||
- add support of SSL
|
||||
- add an ability to manage use_stderr parameter
|
||||
- reflect provider change in puppet-openstacklib
|
||||
- introduce sahara::db class
|
||||
- db: use postgresql lib class for psycopg package
|
||||
- add new parameter 'plugins' for Sahara
|
||||
- configure rpc options separately from ceilometer notifications
|
||||
|
||||
####Bugfixes
|
||||
- rely on autorequire for config resource ordering
|
||||
- remove Sqlite validation for database_connection
|
||||
|
||||
####Maintenance
|
||||
- initial msync run for all Puppet OpenStack modules
|
||||
- try to use zuul-cloner to prepare fixtures
|
||||
- remove class_parameter_defaults puppet-lint check
|
||||
- acceptance: use common bits from puppet-openstack-integration
|
||||
|
||||
##2015-10-10 - 6.1.0
|
||||
###Summary
|
||||
|
||||
This is a maintenance and features release in the Kilo series.
|
||||
|
||||
####Features
|
||||
- Update parameters for Sahara
|
||||
|
||||
####Maintenance
|
||||
- acceptance: checkout stable/kilo puppet modules
|
||||
|
||||
##2015-07-08 - 6.0.0
|
||||
###Summary
|
||||
|
||||
- Initial release of the puppet-sahara module
|
@ -1,19 +0,0 @@
|
||||
The source repository for this project can be found at:
|
||||
|
||||
https://opendev.org/openstack/puppet-sahara
|
||||
|
||||
Pull requests submitted through GitHub are not monitored.
|
||||
|
||||
To start contributing to OpenStack, follow the steps in the contribution guide
|
||||
to set up and use Gerrit:
|
||||
|
||||
https://docs.openstack.org/contributors/code-and-documentation/quick-start.html
|
||||
|
||||
Bugs should be filed on Launchpad:
|
||||
|
||||
https://bugs.launchpad.net/puppet-sahara
|
||||
|
||||
For more specific information about contributing to this repository, see the
|
||||
Puppet OpenStack contributor guide:
|
||||
|
||||
https://docs.openstack.org/puppet-openstack-guide/latest/contributor/contributing.html
|
36
Gemfile
36
Gemfile
@ -1,36 +0,0 @@
|
||||
source ENV['GEM_SOURCE'] || "https://rubygems.org"
|
||||
|
||||
group :development, :test, :system_tests do
|
||||
spec_helper_dir = '/home/zuul/src/opendev.org/openstack/puppet-openstack_spec_helper'
|
||||
if File.directory?(spec_helper_dir)
|
||||
if ENV['ZUUL_PROJECT'] == 'openstack/puppet-openstack_spec_helper'
|
||||
gem 'puppet-openstack_spec_helper',
|
||||
:path => '../..',
|
||||
:require => 'false'
|
||||
else
|
||||
gem 'puppet-openstack_spec_helper',
|
||||
:path => spec_helper_dir,
|
||||
:require => 'false'
|
||||
end
|
||||
else
|
||||
spec_helper_version = ENV['ZUUL_BRANCH'] || "master"
|
||||
gem 'puppet-openstack_spec_helper',
|
||||
:git => 'https://opendev.org/openstack/puppet-openstack_spec_helper',
|
||||
:ref => spec_helper_version,
|
||||
:require => 'false'
|
||||
end
|
||||
end
|
||||
|
||||
if facterversion = ENV['FACTER_GEM_VERSION']
|
||||
gem 'facter', facterversion, :require => false
|
||||
else
|
||||
gem 'facter', :require => false
|
||||
end
|
||||
|
||||
if puppetversion = ENV['PUPPET_GEM_VERSION']
|
||||
gem 'puppet', puppetversion, :require => false
|
||||
else
|
||||
gem 'puppet', :require => false
|
||||
end
|
||||
|
||||
# vim:ft=ruby
|
176
LICENSE
176
LICENSE
@ -1,176 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
120
README.md
120
README.md
@ -1,120 +0,0 @@
|
||||
Team and repository tags
|
||||
========================
|
||||
|
||||
[![Team and repository tags](https://governance.openstack.org/tc/badges/puppet-sahara.svg)](https://governance.openstack.org/tc/reference/tags/index.html)
|
||||
|
||||
<!-- Change things from this point on -->
|
||||
|
||||
sahara
|
||||
======
|
||||
|
||||
#### Table of Contents
|
||||
|
||||
1. [Overview - What is the sahara module?](#overview)
|
||||
2. [Module Description - What does the module do?](#module-description)
|
||||
3. [Setup - The basics of getting started with sahara](#setup)
|
||||
4. [Implementation - An under-the-hood peek at what the module is doing](#implementation)
|
||||
5. [Limitations - OS compatibility, etc.](#limitations)
|
||||
6. [Development - Guide for contributing to the module](#development)
|
||||
7. [Contributors - Those with commits](#contributors)
|
||||
8. [Release Notes - Release notes for the project](#release-notes)
|
||||
9. [Repository - The project source code repository](#repository)
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The sahara module is a part of [OpenStack](https://opendev.org/openstack), an effort
|
||||
by the OpenStack infrastructure team to provide continuous integration testing and
|
||||
code review for OpenStack and OpenStack community projects as part of the core software.
|
||||
The Sahara module itself is used to flexibly configure and manage the clustering service for OpenStack.
|
||||
|
||||
Module Description
|
||||
------------------
|
||||
|
||||
The sahara module is an attempt to make Puppet capable of managing the
|
||||
entirety of sahara.
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
**What the sahara module affects:**
|
||||
|
||||
* [Sahara](https://docs.openstack.org/sahara/latest/), the data processing service for OpenStack.
|
||||
|
||||
### Installing Sahara
|
||||
|
||||
puppet module install openstack/sahara
|
||||
|
||||
### Beginning with sahara
|
||||
|
||||
To use the sahara module's functionality you will need to declare multiple
|
||||
resources. This is not an exhaustive list of all the components needed; we
|
||||
recommend you consult and understand the
|
||||
[core of openstack](https://docs.openstack.org) documentation.
|
||||
|
||||
Examples of usage can be found in the *examples* directory.
|
||||
|
||||
Implementation
|
||||
--------------
|
||||
|
||||
### sahara
|
||||
|
||||
puppet-sahara is a combination of Puppet manifests and ruby code to deliver
|
||||
configuration and extra functionality through types and providers.
|
||||
|
||||
### Types
|
||||
|
||||
#### sahara_config
|
||||
|
||||
The `sahara_config` provider is a children of the ini_setting provider. It allows one to write an entry in the `/etc/sahara/sahara.conf` file.
|
||||
|
||||
```puppet
|
||||
sahara_config { 'DEFAULT/use_neutron' :
|
||||
value => True,
|
||||
}
|
||||
```
|
||||
|
||||
This will write `use_neutron=True` in the `[DEFAULT]` section.
|
||||
|
||||
##### name
|
||||
|
||||
Section/setting name to manage from `sahara.conf`
|
||||
|
||||
##### value
|
||||
|
||||
The value of the setting to be defined.
|
||||
|
||||
##### secret
|
||||
|
||||
Whether to hide the value from Puppet logs. Defaults to `false`.
|
||||
|
||||
##### ensure_absent_val
|
||||
|
||||
If value is equal to ensure_absent_val then the resource will behave as if `ensure => absent` was specified. Defaults to `<SERVICE DEFAULT>`
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
None.
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
||||
Developer documentation for the entire puppet-openstack project.
|
||||
|
||||
* https://docs.openstack.org/puppet-openstack-guide/latest/
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* https://github.com/openstack/puppet-sahara/graphs/contributors
|
||||
|
||||
Release Notes
|
||||
-------------
|
||||
|
||||
* https://docs.openstack.org/releasenotes/puppet-sahara
|
||||
|
||||
Repository
|
||||
----------
|
||||
|
||||
* https://opendev.org/openstack/puppet-sahara
|
8
README.rst
Normal file
8
README.rst
Normal file
@ -0,0 +1,8 @@
|
||||
This project is no longer maintained.
|
||||
|
||||
The contents of this repository are still available in the Git source code
|
||||
management system. To see the contents of this repository before it reached its
|
||||
end of life, please check out the previous commit with "git checkout HEAD^1".
|
||||
|
||||
For any further questions, please email openstack-discuss@lists.openstack.org
|
||||
or join #openstack-dev on OFTC.
|
12
bindep.txt
12
bindep.txt
@ -1,12 +0,0 @@
|
||||
# This is a cross-platform list tracking distribution packages needed by tests;
|
||||
# see https://docs.openstack.org/infra/bindep/ for additional information.
|
||||
|
||||
libxml2-devel [test platform:rpm]
|
||||
libxml2-dev [test platform:dpkg]
|
||||
libxslt-devel [test platform:rpm]
|
||||
libxslt1-dev [test platform:dpkg]
|
||||
ruby-devel [test platform:rpm]
|
||||
ruby-dev [test platform:dpkg]
|
||||
zlib1g-dev [test platform:dpkg]
|
||||
zlib-devel [test platform:rpm]
|
||||
puppet [build]
|
@ -1,6 +0,0 @@
|
||||
# This is required for the docs build jobs
|
||||
sphinx>=3.5.1 # BSD
|
||||
openstackdocstheme>=2.2.7 # Apache-2.0
|
||||
|
||||
# This is required for the releasenotes build jobs
|
||||
reno>=3.2.0 # Apache-2.0
|
@ -1,72 +0,0 @@
|
||||
# First, install a mysql server
|
||||
class { 'mysql::server':
|
||||
# sahara documentation recommends this configuration.
|
||||
override_options => {
|
||||
'mysqld' => {
|
||||
'max_allowed_packet' => '256M',
|
||||
},
|
||||
},
|
||||
|
||||
# many configurations will need this line, too
|
||||
package_name => 'mariadb-galera-server',
|
||||
|
||||
# if you're installing into an existing openstack
|
||||
manage_config_file => false,
|
||||
purge_conf_dir => false,
|
||||
}
|
||||
|
||||
# Then, create a database
|
||||
class { 'sahara::db::mysql':
|
||||
password => 'a_big_secret',
|
||||
}
|
||||
|
||||
# Then the common class
|
||||
class { 'sahara':
|
||||
database_connection => 'mysql+pymysql://sahara:a_big_secret@127.0.0.1:3306/sahara',
|
||||
debug => true,
|
||||
host => '0.0.0.0',
|
||||
port => 8386,
|
||||
use_floating_ips => true,
|
||||
}
|
||||
|
||||
# Keystone authtoken parameters
|
||||
class { 'sahara::keystone::authtoken':
|
||||
password => 'a_big_secret',
|
||||
}
|
||||
|
||||
# Setup API service in Apache
|
||||
class { 'sahara::service::api':
|
||||
service_name => 'httpd',
|
||||
}
|
||||
|
||||
# On Ubuntu there are Apache configuration that is dropped when the
|
||||
# sahara-api package is installed. The puppet-sahara module will remove
|
||||
# these and fix the apache configuration for you but the Ubuntu packages
|
||||
# requires these files to exist for upgrading the sahara-api package to not
|
||||
# break.
|
||||
if ($facts['os']['name'] == 'Ubuntu') {
|
||||
ensure_resource('file', '/etc/apache2/sites-available/sahara-api.conf', {
|
||||
'ensure' => 'present',
|
||||
'content' => '',
|
||||
})
|
||||
ensure_resource('file', '/etc/apache2/sites-enabled/sahara-api.conf', {
|
||||
'ensure' => 'present',
|
||||
'content' => '',
|
||||
})
|
||||
|
||||
Package['sahara-api'] -> File['/etc/apache2/sites-available/sahara-api.conf']
|
||||
-> File['/etc/apache2/sites-enabled/sahara-api.conf'] ~> Anchor['sahara::install::end']
|
||||
}
|
||||
|
||||
include apache
|
||||
class { 'sahara::wsgi::apache':
|
||||
workers => 2,
|
||||
}
|
||||
|
||||
# Setup the engine service
|
||||
class { 'sahara::service::engine': }
|
||||
|
||||
# Finally, make it accessible
|
||||
class { 'sahara::keystone::auth':
|
||||
password => 'secrete',
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
require 'puppet/provider/openstack'
|
||||
require 'puppet/provider/openstack/auth'
|
||||
|
||||
class Puppet::Provider::Sahara < Puppet::Provider::Openstack
|
||||
|
||||
extend Puppet::Provider::Openstack::Auth
|
||||
|
||||
def self.flavors_list
|
||||
unless @flavors_hash
|
||||
list = request('flavor', 'list')
|
||||
@flavors_hash = Hash[list.collect { |flavor| [ flavor[:id], flavor[:name] ] } ]
|
||||
end
|
||||
@flavors_hash
|
||||
end
|
||||
|
||||
def self.network_list
|
||||
unless @network_hash
|
||||
list = request('network', 'list')
|
||||
@network_hash = Hash[list.collect { |network| [ network[:id], network[:name] ] } ]
|
||||
end
|
||||
@network_hash
|
||||
end
|
||||
|
||||
def self.reset
|
||||
@flavors_hash = nil
|
||||
@network_hash = nil
|
||||
end
|
||||
end
|
@ -1,10 +0,0 @@
|
||||
Puppet::Type.type(:sahara_api_paste_ini).provide(
|
||||
:ini_setting,
|
||||
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
|
||||
) do
|
||||
|
||||
def self.file_path
|
||||
'/etc/sahara/api-paste.ini'
|
||||
end
|
||||
|
||||
end
|
@ -1,8 +0,0 @@
|
||||
Puppet::Type.type(:sahara_api_uwsgi_config).provide(
|
||||
:ini_setting,
|
||||
:parent => Puppet::Type.type(:openstack_config).provider(:ini_setting)
|
||||
) do
|
||||
def self.file_path
|
||||
'/etc/sahara/sahara-api-uwsgi.ini'
|
||||
end
|
||||
end
|
@ -1,84 +0,0 @@
|
||||
require 'puppet/provider/sahara'
|
||||
|
||||
Puppet::Type.type(:sahara_cluster_template).provide(
|
||||
:openstack,
|
||||
:parent => Puppet::Provider::Sahara
|
||||
) do
|
||||
|
||||
desc 'Provider for managing Sahara cluster templates.'
|
||||
|
||||
@credentials = Puppet::Provider::Openstack::CredentialsV3.new
|
||||
|
||||
mk_resource_methods
|
||||
|
||||
def initialize(value={})
|
||||
super(value)
|
||||
@property_flush = {}
|
||||
end
|
||||
|
||||
def create
|
||||
options = []
|
||||
options << '--name' << @resource[:name]
|
||||
options << '--node-groups' << @resource[:node_groups]
|
||||
options << '--autoconfig' if @resource[:auto_config]
|
||||
options << '--description' << @resource[:description] if @resource[:description]
|
||||
self.class.request('dataprocessing cluster template', 'create', options)
|
||||
end
|
||||
|
||||
def exists?
|
||||
@property_hash[:ensure] == :present
|
||||
end
|
||||
|
||||
def destroy
|
||||
self.class.request('dataprocessing cluster template', 'delete', id)
|
||||
@property_hash.clear
|
||||
end
|
||||
|
||||
def node_groups=(value)
|
||||
@property_flush[:node_groups] = value
|
||||
end
|
||||
|
||||
def auto_config=(value)
|
||||
@property_flush[:auto_config] = value
|
||||
end
|
||||
|
||||
def description=(value)
|
||||
@property_flush[:description] = value
|
||||
end
|
||||
|
||||
def self.instances
|
||||
list = request('dataprocessing cluster template', 'list')
|
||||
list.collect do |template|
|
||||
template_info = request('dataprocessing cluster template', 'show', template[:id])
|
||||
new({
|
||||
:name => template_info[:name],
|
||||
:ensure => :present,
|
||||
:id => template_info[:id],
|
||||
:node_groups => template_info[:node_groups].split(',').map(&:strip),
|
||||
:auto_config => template_info[:use_autoconfig].downcase.to_sym,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
def self.prefetch(resources)
|
||||
cluster_templates = instances
|
||||
resources.keys.each do |name|
|
||||
if provider = cluster_templates.find{ |template| template.name == name }
|
||||
resources[name].provider = provider
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def flush
|
||||
options = []
|
||||
if @property_flush && !@property_flush.empty?
|
||||
options << @property_hash[:id]
|
||||
options << '--autoconfig-enable' if @property_flush[:auto_config] == :true
|
||||
options << '--autoconfig-disable' if @property_flush[:auto_config] == :false
|
||||
options << '--node-groups' << @property_flush[:node_groups] if @property_flush[:node_groups]
|
||||
options << '--description' << @property_flush[:description] if @property_flush[:description]
|
||||
self.class.request('dataprocessing cluster template', 'update', options)
|
||||
@property_flush.clear
|
||||
end
|
||||
end
|
||||
end
|
@ -1,10 +0,0 @@
|
||||
Puppet::Type.type(:sahara_config).provide(
|
||||
:openstackconfig,
|
||||
:parent => Puppet::Type.type(:openstack_config).provider(:ruby)
|
||||
) do
|
||||
|
||||
def self.file_path
|
||||
'/etc/sahara/sahara.conf'
|
||||
end
|
||||
|
||||
end
|
@ -1,156 +0,0 @@
|
||||
require 'puppet/provider/sahara'
|
||||
|
||||
Puppet::Type.type(:sahara_node_group_template).provide(
|
||||
:openstack,
|
||||
:parent => Puppet::Provider::Sahara
|
||||
) do
|
||||
|
||||
desc 'Provider for managing Sahara node group templates.'
|
||||
|
||||
@credentials = Puppet::Provider::Openstack::CredentialsV3.new
|
||||
|
||||
mk_resource_methods
|
||||
|
||||
def initialize(value={})
|
||||
super(value)
|
||||
@property_flush = {}
|
||||
end
|
||||
|
||||
def create
|
||||
options = []
|
||||
options << '--name' << @resource[:name]
|
||||
options << '--plugin' << @resource[:plugin]
|
||||
options << '--plugin-version' << @resource[:plugin_version]
|
||||
options << '--description' << @resource[:description] if @resource[:description]
|
||||
options << '--auto-security-group' if @resource[:auto_security_group]
|
||||
|
||||
if @resource[:floating_ip_pool]
|
||||
# we need only <id> of network
|
||||
network_id = self.class.request('network', 'show', @resource[:floating_ip_pool])[:id]
|
||||
options << '--floating-ip-pool' << network_id
|
||||
end
|
||||
|
||||
options << '--flavor' << @resource[:flavor]
|
||||
options << '--processes' << @resource[:node_processes]
|
||||
options << '--security-groups' << @resource[:security_groups] unless @resource[:security_groups].empty?
|
||||
self.class.request('dataprocessing node group template', 'create', options)
|
||||
end
|
||||
|
||||
def exists?
|
||||
@property_hash[:ensure] == :present
|
||||
end
|
||||
|
||||
def destroy
|
||||
self.class.request('dataprocessing node group template', 'delete', id)
|
||||
@property_hash.clear
|
||||
end
|
||||
|
||||
def plugin=(value)
|
||||
fail('Property \'plugin\' can\'t be updated')
|
||||
end
|
||||
|
||||
def plugin_version=(value)
|
||||
fail('Property \'version\' can\'t be updated')
|
||||
end
|
||||
|
||||
def flavor
|
||||
# we can set flavor as in <id> format as in <name> format
|
||||
flavors = self.class.flavors_list
|
||||
if flavors[@property_hash[:flavor]] == @resource[:flavor] or
|
||||
@property_hash[:flavor] == @resource[:flavor]
|
||||
@resource[:flavor]
|
||||
else
|
||||
@property_hash[:flavor]
|
||||
end
|
||||
end
|
||||
|
||||
def floating_ip_pool
|
||||
# this should be only <id>, but we can accept
|
||||
# name of network as input, because user may know
|
||||
# network name, but not a network <id>
|
||||
networks = self.class.network_list
|
||||
if networks[@property_hash[:floating_ip_pool]] == @resource[:floating_ip_pool] or
|
||||
@property_hash[:floating_ip_pool] == @resource[:floating_ip_pool]
|
||||
@resource[:floating_ip_pool]
|
||||
else
|
||||
@property_hash[:floating_ip_pool]
|
||||
end
|
||||
end
|
||||
|
||||
def flavor=(value)
|
||||
@property_flush[:flavor] = value
|
||||
end
|
||||
|
||||
def node_processes=(value)
|
||||
@property_flush[:node_processes] = value
|
||||
end
|
||||
|
||||
def floating_ip_pool=(value)
|
||||
@property_flush[:floating_ip_pool] = value
|
||||
end
|
||||
|
||||
def auto_security_group=(value)
|
||||
@property_flush[:auto_security_group] = value
|
||||
end
|
||||
|
||||
def description=(value)
|
||||
@property_flush[:description] = value
|
||||
end
|
||||
|
||||
def security_groups=(value)
|
||||
@property_flush[:security_groups] = value
|
||||
end
|
||||
|
||||
def self.instances
|
||||
list = request('dataprocessing node group template', 'list')
|
||||
list.collect do |template|
|
||||
template_info = request('dataprocessing node group template', 'show', template[:id])
|
||||
new({
|
||||
:name => template_info[:name],
|
||||
:ensure => :present,
|
||||
:id => template_info[:id],
|
||||
:plugin => template_info[:plugin_name],
|
||||
:plugin_version => template_info[:plugin_version],
|
||||
:flavor => template_info[:flavor_id],
|
||||
:description => template_info[:description],
|
||||
:node_processes => template_info[:node_processes].split(',').map(&:strip),
|
||||
:auto_security_group => template_info[:auto_security_group].downcase.to_sym,
|
||||
:floating_ip_pool => template_info[:floating_ip_pool],
|
||||
:security_groups => string2list(template_info[:security_groups]),
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
def self.string2list(input)
|
||||
return [] if input.eql? "None"
|
||||
return input[1..-2].split(",").map { |x| x.match(/'(.*?)'/)[1] }
|
||||
end
|
||||
|
||||
def self.prefetch(resources)
|
||||
node_group_templates = instances
|
||||
resources.keys.each do |name|
|
||||
if provider = node_group_templates.find{ |template| template.name == name }
|
||||
resources[name].provider = provider
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def flush
|
||||
options = []
|
||||
if @property_flush && !@property_flush.empty?
|
||||
options << @property_hash[:id]
|
||||
options << '--auto-security-group-enable' if @property_flush[:auto_security_group] == :true
|
||||
options << '--auto-security-group-disable' if @property_flush[:auto_security_group] == :false
|
||||
options << '--flavor' << @property_flush[:flavor] if @property_flush[:flavor]
|
||||
options << '--description' << @property_flush[:description] if @property_flush[:description]
|
||||
options << '--floating-ip-pool' << @property_flush[:floating_ip_pool] if @property_flush[:floating_ip_pool]
|
||||
options << '--processes' << @property_flush[:node_processes] if @property_flush[:node_processes]
|
||||
if @property_flush[:security_groups]
|
||||
# OSC has not ability to unset security groups at all for sahara template
|
||||
options << '--security-groups' << @property_flush[:security_groups] unless @property_flush[:security_groups].empty?
|
||||
end
|
||||
self.class.request('dataprocessing node group template', 'update', options)
|
||||
@property_flush.clear
|
||||
end
|
||||
end
|
||||
end
|
@ -1,57 +0,0 @@
|
||||
Puppet::Type.newtype(:sahara_api_paste_ini) do
|
||||
|
||||
ensurable
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Section/setting name to manage from /etc/sahara/api-paste.ini'
|
||||
newvalues(/\S+\/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:value) do
|
||||
desc 'The value of the setting to be defined.'
|
||||
munge do |value|
|
||||
value = value.to_s.strip
|
||||
value.capitalize! if value =~ /^(true|false)$/i
|
||||
value
|
||||
end
|
||||
|
||||
def is_to_s( currentvalue )
|
||||
if resource.secret?
|
||||
return '[old secret redacted]'
|
||||
else
|
||||
return currentvalue
|
||||
end
|
||||
end
|
||||
|
||||
def should_to_s( newvalue )
|
||||
if resource.secret?
|
||||
return '[new secret redacted]'
|
||||
else
|
||||
return newvalue
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:secret, :boolean => true) do
|
||||
desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
|
||||
|
||||
newvalues(:true, :false)
|
||||
|
||||
defaultto false
|
||||
end
|
||||
|
||||
newparam(:ensure_absent_val) do
|
||||
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
|
||||
defaultto('<SERVICE DEFAULT>')
|
||||
end
|
||||
|
||||
newparam(:key_val_separator) do
|
||||
desc 'The separator string to use between each setting name and value.'
|
||||
defaultto('=')
|
||||
end
|
||||
|
||||
autorequire(:anchor) do
|
||||
['sahara::install::end']
|
||||
end
|
||||
|
||||
end
|
@ -1,27 +0,0 @@
|
||||
Puppet::Type.newtype(:sahara_api_uwsgi_config) do
|
||||
|
||||
ensurable
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Section/setting name to manage from sahara-api-uwsgi.ini'
|
||||
newvalues(/\S+\/\S+/)
|
||||
end
|
||||
|
||||
newparam(:ensure_absent_val) do
|
||||
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
|
||||
defaultto('<SERVICE DEFAULT>')
|
||||
end
|
||||
|
||||
autorequire(:anchor) do
|
||||
['sahara::install::end']
|
||||
end
|
||||
|
||||
newproperty(:value) do
|
||||
desc 'The value of the setting to be defined.'
|
||||
munge do |value|
|
||||
value = value.to_s.strip
|
||||
value.capitalize! if value =~ /^(true|false)$/i
|
||||
value
|
||||
end
|
||||
end
|
||||
end
|
@ -1,61 +0,0 @@
|
||||
Puppet::Type.newtype(:sahara_cluster_template) do
|
||||
|
||||
ensurable
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'The name of this cluster template.'
|
||||
newvalues(/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:id) do
|
||||
desc 'The unique Id of the cluster template.'
|
||||
validate do |v|
|
||||
raise ArgumentError, 'This is a read only property'
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:description) do
|
||||
desc 'The description of this cluster template.'
|
||||
end
|
||||
|
||||
newproperty(:node_groups, :array_matching => :all) do
|
||||
desc 'List of the node groups(names or IDs) and numbers of instances for each one of them.'
|
||||
defaultto { fail 'Property \'node_groups\' is required.' }
|
||||
validate do |group|
|
||||
args = group.split(':')
|
||||
raise ArgumentError, 'You should specify node_groups in format <node_group_name:count> format' unless args.count == 2
|
||||
raise ArgumentError, 'Node group count should be an integer' unless args[1].to_i.to_s == args[1]
|
||||
end
|
||||
|
||||
def insync?(is)
|
||||
is.sort == should.sort
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:auto_config) do
|
||||
desc 'If enabled, instances of the cluster will be automatically configured'
|
||||
newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
|
||||
defaultto(true)
|
||||
munge do |value|
|
||||
value.to_s.downcase.to_sym
|
||||
end
|
||||
end
|
||||
|
||||
validate do
|
||||
if self[:node_groups].empty?
|
||||
raise ArgumentError, 'You should specify at least one node group.'
|
||||
end
|
||||
end
|
||||
|
||||
autorequire(:anchor) do
|
||||
['sahara::service::end']
|
||||
end
|
||||
|
||||
autorequire(:sahara_node_group_template) do
|
||||
templates = []
|
||||
self[:node_groups].each do |template|
|
||||
templates.push(template.split(':')[0])
|
||||
end
|
||||
templates
|
||||
end
|
||||
end
|
@ -1,59 +0,0 @@
|
||||
Puppet::Type.newtype(:sahara_config) do
|
||||
ensurable
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'Section/setting name to manage from sahara.conf'
|
||||
newvalues(/\S+\/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:value, :array_matching => :all) do
|
||||
desc 'The value of the setting to be defined.'
|
||||
def insync?(is)
|
||||
return true if @should.empty?
|
||||
return false unless is.is_a? Array
|
||||
return false unless is.length == @should.length
|
||||
return (
|
||||
is & @should == is or
|
||||
is & @should.map(&:to_s) == is
|
||||
)
|
||||
end
|
||||
munge do |value|
|
||||
value = value.to_s.strip
|
||||
value.capitalize! if value =~ /^(true|false)$/i
|
||||
value
|
||||
end
|
||||
|
||||
def is_to_s(currentvalue)
|
||||
if resource.secret?
|
||||
return '[old secret redacted]'
|
||||
else
|
||||
return currentvalue
|
||||
end
|
||||
end
|
||||
|
||||
def should_to_s(newvalue)
|
||||
if resource.secret?
|
||||
return '[new secret redacted]'
|
||||
else
|
||||
return newvalue
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
newparam(:secret, :boolean => true) do
|
||||
desc 'Whether to hide the value from Puppet logs. Defaults to `false`.'
|
||||
|
||||
newvalues(:true, :false)
|
||||
|
||||
defaultto false
|
||||
end
|
||||
|
||||
newparam(:ensure_absent_val) do
|
||||
desc 'A value that is specified as the value property will behave as if ensure => absent was specified'
|
||||
defaultto('<SERVICE DEFAULT>')
|
||||
end
|
||||
|
||||
autorequire(:anchor) do
|
||||
['sahara::install::end']
|
||||
end
|
||||
end
|
@ -1,80 +0,0 @@
|
||||
Puppet::Type.newtype(:sahara_node_group_template) do
|
||||
|
||||
ensurable
|
||||
|
||||
newparam(:name, :namevar => true) do
|
||||
desc 'The name of this node group template.'
|
||||
newvalues(/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:id) do
|
||||
desc 'The unique Id of the node group template.'
|
||||
validate do |v|
|
||||
raise ArgumentError, 'This is a read only property'
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:plugin) do
|
||||
desc 'The plugin name for current template'
|
||||
defaultto { fail 'Property \'plugin\' is required.' }
|
||||
newvalues(/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:description) do
|
||||
desc 'The description of this node group template.'
|
||||
end
|
||||
|
||||
newproperty(:plugin_version) do
|
||||
desc 'The version of plugin for this template'
|
||||
defaultto { fail 'Property \'plugin_version\' is required.' }
|
||||
newvalues(/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:node_processes, :array_matching => :all) do
|
||||
desc 'List of the processes that will be launched on each instance'
|
||||
defaultto { fail 'Property \'node_processes\' is required.' }
|
||||
|
||||
def insync?(is)
|
||||
is.sort == should.sort
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:flavor) do
|
||||
desc 'The id or name of the flavor assigned to this node group template'
|
||||
defaultto { fail 'Property \'flavor\' is required.' }
|
||||
newvalues(/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:floating_ip_pool) do
|
||||
desc 'The id or name of floating ip pool'
|
||||
newvalues(/\S+/)
|
||||
end
|
||||
|
||||
newproperty(:auto_security_group) do
|
||||
desc 'Indicates if an additional security group should be created for the node group'
|
||||
newvalues(/(t|T)rue/, /(f|F)alse/, true, false)
|
||||
defaultto(true)
|
||||
munge do |value|
|
||||
value.to_s.downcase.to_sym
|
||||
end
|
||||
end
|
||||
|
||||
newproperty(:security_groups, :array_matching => :all) do
|
||||
desc 'List of the processes that will be launched on each instance'
|
||||
defaultto([])
|
||||
|
||||
def insync?(is)
|
||||
is.sort == should.sort
|
||||
end
|
||||
end
|
||||
|
||||
validate do
|
||||
if self[:node_processes].empty?
|
||||
raise ArgumentError, 'You should specify at least one node process.'
|
||||
end
|
||||
end
|
||||
|
||||
autorequire(:anchor) do
|
||||
['sahara::service::end']
|
||||
end
|
||||
end
|
@ -1,26 +0,0 @@
|
||||
# == Class: sahara::client
|
||||
#
|
||||
# Installs the sahara python library.
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (Optional) Ensure state for package.
|
||||
# Default: present.
|
||||
#
|
||||
class sahara::client (
|
||||
$package_ensure = 'present'
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::params
|
||||
|
||||
package { 'python-saharaclient':
|
||||
ensure => $package_ensure,
|
||||
name => $::sahara::params::client_package_name,
|
||||
tag => ['openstack', 'openstackclient'],
|
||||
}
|
||||
|
||||
include openstacklib::openstackclient
|
||||
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
# == Class: sahara::config
|
||||
#
|
||||
# This class is used to manage arbitrary Sahara configurations.
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*sahara_config*]
|
||||
# (optional) Allow configuration of arbitrary Sahara configurations.
|
||||
# The value is an hash of sahara_config resources. Example:
|
||||
# { 'DEFAULT/foo' => { value => 'fooValue'},
|
||||
# 'DEFAULT/bar' => { value => 'barValue'}
|
||||
# }
|
||||
# In yaml format, Example:
|
||||
# sahara_config:
|
||||
# DEFAULT/foo:
|
||||
# value: fooValue
|
||||
# DEFAULT/bar:
|
||||
# value: barValue
|
||||
#
|
||||
# [*sahara_api_paste_ini*]
|
||||
# (optional) Allow configuration of /etc/sahara/api-paste.ini options.
|
||||
#
|
||||
# NOTE: The configuration MUST NOT be already handled by this module
|
||||
# or Puppet catalog compilation will fail with duplicate resources.
|
||||
#
|
||||
class sahara::config (
|
||||
Hash $sahara_config = {},
|
||||
Hash $sahara_api_paste_ini = {},
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
create_resources('sahara_config', $sahara_config)
|
||||
create_resources('sahara_api_paste_ini', $sahara_api_paste_ini)
|
||||
}
|
@ -1,71 +0,0 @@
|
||||
# == Class: sahara:db
|
||||
#
|
||||
# Configure the Sahara database
|
||||
#
|
||||
# == Parameters
|
||||
#
|
||||
# [*database_db_max_retries*]
|
||||
# (optional) Maximum retries in case of connection error or deadlock error
|
||||
# before error is raised. Set to -1 to specify an infinite retry count.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*database_connection*]
|
||||
# (Optional) The connection string to use to connect to the database.
|
||||
# Defaults to 'mysql+pymysql://sahara:secrete@localhost:3306/sahara'
|
||||
#
|
||||
# [*database_max_retries*]
|
||||
# (Optional) Maximum number of database connection retries during startup.
|
||||
# Set to -1 to specify an infinite retry count.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_connection_recycle_time*]
|
||||
# (Optional) Timeout before idle SQL connections are reaped.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_retry_interval*]
|
||||
# (optional) Interval between retries of opening a database connection.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_max_pool_size*]
|
||||
# (optional) Maximum number of SQL connections to keep open in a pool.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_max_overflow*]
|
||||
# (optional) If set, use this value for max_overflow with sqlalchemy.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*database_pool_timeout*]
|
||||
# (Optional) If set, use this value for pool_timeout with SQLAlchemy.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*mysql_enable_ndb*]
|
||||
# (Optional) If True, transparently enables support for handling MySQL
|
||||
# Cluster (NDB).
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
class sahara::db (
|
||||
$database_db_max_retries = $facts['os_service_default'],
|
||||
$database_connection = 'mysql+pymysql://sahara:secrete@localhost:3306/sahara',
|
||||
$database_connection_recycle_time = $facts['os_service_default'],
|
||||
$database_max_pool_size = $facts['os_service_default'],
|
||||
$database_max_retries = $facts['os_service_default'],
|
||||
$database_retry_interval = $facts['os_service_default'],
|
||||
$database_max_overflow = $facts['os_service_default'],
|
||||
$database_pool_timeout = $facts['os_service_default'],
|
||||
$mysql_enable_ndb = $facts['os_service_default'],
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
oslo::db { 'sahara_config':
|
||||
db_max_retries => $database_db_max_retries,
|
||||
connection => $database_connection,
|
||||
connection_recycle_time => $database_connection_recycle_time,
|
||||
max_pool_size => $database_max_pool_size,
|
||||
max_retries => $database_max_retries,
|
||||
retry_interval => $database_retry_interval,
|
||||
max_overflow => $database_max_overflow,
|
||||
pool_timeout => $database_pool_timeout,
|
||||
mysql_enable_ndb => $mysql_enable_ndb,
|
||||
}
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
# == Class: sahara::db::mysql
|
||||
#
|
||||
# The sahara::db::mysql class creates a MySQL database for sahara.
|
||||
# It must be used on the MySQL server.
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*password*]
|
||||
# (Required) Password to connect to the database.
|
||||
#
|
||||
# [*dbname*]
|
||||
# (Optional) Name of the database.
|
||||
# Defaults to 'sahara'.
|
||||
#
|
||||
# [*user*]
|
||||
# (Optional) User to connect to the database.
|
||||
# Defaults to 'sahara'.
|
||||
#
|
||||
# [*host*]
|
||||
# (Optional) The default source host user is allowed to connect from.
|
||||
# Defaults to '127.0.0.1'
|
||||
#
|
||||
# [*allowed_hosts*]
|
||||
# (Optional) Other hosts the user is allowed to connect from.
|
||||
# Defaults to 'undef'.
|
||||
#
|
||||
# [*charset*]
|
||||
# (Optional) The database charset.
|
||||
# Defaults to 'utf8'.
|
||||
#
|
||||
# [*collate*]
|
||||
# (Optional) Charset collate of sahara database.
|
||||
# Defaults to 'utf8_general_ci'.
|
||||
#
|
||||
class sahara::db::mysql(
|
||||
String[1] $password,
|
||||
$dbname = 'sahara',
|
||||
$user = 'sahara',
|
||||
$host = '127.0.0.1',
|
||||
$allowed_hosts = undef,
|
||||
$charset = 'utf8',
|
||||
$collate = 'utf8_general_ci',
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
::openstacklib::db::mysql{ 'sahara':
|
||||
user => $user,
|
||||
password => $password,
|
||||
dbname => $dbname,
|
||||
host => $host,
|
||||
charset => $charset,
|
||||
collate => $collate,
|
||||
allowed_hosts => $allowed_hosts,
|
||||
}
|
||||
|
||||
Anchor['sahara::db::begin']
|
||||
~> Class['sahara::db::mysql']
|
||||
~> Anchor['sahara::db::end']
|
||||
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
# == Class: sahara::db::postgresql
|
||||
#
|
||||
# The sahara::db::postgresql creates a PostgreSQL database for sahara.
|
||||
# It must be used on the PostgreSQL server.
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*password*]
|
||||
# (Required) Password to connect to the database.
|
||||
#
|
||||
# [*dbname*]
|
||||
# (Optional) Name of the database.
|
||||
# Defaults to 'sahara'.
|
||||
#
|
||||
# [*user*]
|
||||
# (Optional) User to connect to the database.
|
||||
# Defaults to 'sahara'.
|
||||
#
|
||||
# [*encoding*]
|
||||
# (Optional) The charset to use for the database.
|
||||
# Default to undef.
|
||||
#
|
||||
# [*privileges*]
|
||||
# (Optional) Privileges given to the database user.
|
||||
# Default to 'ALL'
|
||||
#
|
||||
class sahara::db::postgresql(
|
||||
$password,
|
||||
$dbname = 'sahara',
|
||||
$user = 'sahara',
|
||||
$encoding = undef,
|
||||
$privileges = 'ALL',
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
::openstacklib::db::postgresql { 'sahara':
|
||||
password => $password,
|
||||
dbname => $dbname,
|
||||
user => $user,
|
||||
encoding => $encoding,
|
||||
privileges => $privileges,
|
||||
}
|
||||
|
||||
Anchor['sahara::db::begin']
|
||||
~> Class['sahara::db::postgresql']
|
||||
~> Anchor['sahara::db::end']
|
||||
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
#
|
||||
# Class to execute sahara dbsync
|
||||
#
|
||||
# == Parameters
|
||||
#
|
||||
# [*extra_params*]
|
||||
# (Optional) String of extra command line parameters to append
|
||||
# to the sahara-db-manage command.
|
||||
# Defaults to '--config-file /etc/sahara/sahara.conf'
|
||||
#
|
||||
# [*db_sync_timeout*]
|
||||
# (Optional) Timeout for the execution of the db_sync
|
||||
# Defaults to 300
|
||||
#
|
||||
class sahara::db::sync(
|
||||
$extra_params = '--config-file /etc/sahara/sahara.conf',
|
||||
$db_sync_timeout = 300,
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::params
|
||||
|
||||
exec { 'sahara-dbmanage':
|
||||
command => "sahara-db-manage ${extra_params} upgrade head",
|
||||
path => '/usr/bin',
|
||||
user => $::sahara::params::user,
|
||||
refreshonly => true,
|
||||
try_sleep => 5,
|
||||
tries => 10,
|
||||
timeout => $db_sync_timeout,
|
||||
logoutput => on_failure,
|
||||
subscribe => [
|
||||
Anchor['sahara::install::end'],
|
||||
Anchor['sahara::config::end'],
|
||||
Anchor['sahara::dbsync::begin']
|
||||
],
|
||||
notify => Anchor['sahara::dbsync::end'],
|
||||
tag => 'openstack-db',
|
||||
}
|
||||
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
# == Class: sahara::deps
|
||||
#
|
||||
# Sahara anchors and dependency management
|
||||
#
|
||||
class sahara::deps {
|
||||
# Setup anchors for install, config and service phases of the module. These
|
||||
# anchors allow external modules to hook the begin and end of any of these
|
||||
# phases. Package or service management can also be replaced by ensuring the
|
||||
# package is absent or turning off service management and having the
|
||||
# replacement depend on the appropriate anchors. When applicable, end tags
|
||||
# should be notified so that subscribers can determine if installation,
|
||||
# config or service state changed and act on that if needed.
|
||||
anchor { 'sahara::install::begin': }
|
||||
-> Package<| tag == 'sahara-package'|>
|
||||
~> anchor { 'sahara::install::end': }
|
||||
-> anchor { 'sahara::config::begin': }
|
||||
-> Sahara_config<||>
|
||||
~> anchor { 'sahara::config::end': }
|
||||
-> anchor { 'sahara::db::begin': }
|
||||
-> anchor { 'sahara::db::end': }
|
||||
~> anchor { 'sahara::dbsync::begin': }
|
||||
-> anchor { 'sahara::dbsync::end': }
|
||||
~> anchor { 'sahara::service::begin': }
|
||||
~> Service<| tag == 'sahara-service' |>
|
||||
~> anchor { 'sahara::service::end': }
|
||||
|
||||
# paste-api.ini config should occur in the config block also.
|
||||
Anchor['sahara::config::begin']
|
||||
-> Sahara_api_paste_ini<||>
|
||||
~> Anchor['sahara::config::end']
|
||||
|
||||
# policy config should occur in the config block also.
|
||||
Anchor['sahara::config::begin']
|
||||
-> Openstacklib::Policy<| tag == 'sahara' |>
|
||||
-> Anchor['sahara::config::end']
|
||||
|
||||
# On any uwsgi config change, we must restart Sahara API.
|
||||
Anchor['sahara::config::begin']
|
||||
-> Sahara_api_uwsgi_config<||>
|
||||
~> Anchor['sahara::config::end']
|
||||
|
||||
# all db settings should be applied and all packages should be installed
|
||||
# before dbsync starts
|
||||
Oslo::Db<||> -> Anchor['sahara::dbsync::begin']
|
||||
|
||||
# We need openstackclient before marking service end so that sahara
|
||||
# will have clients available to create resources. This tag handles the
|
||||
# openstackclient but indirectly since the client is not available in
|
||||
# all catalogs that don't need the client class (like many spec tests)
|
||||
Package<| tag == 'openstackclient'|>
|
||||
-> Anchor['sahara::service::end']
|
||||
|
||||
# Installation or config changes will always restart services.
|
||||
Anchor['sahara::install::end'] ~> Anchor['sahara::service::begin']
|
||||
Anchor['sahara::config::end'] ~> Anchor['sahara::service::begin']
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
# == Class: sahara::healthcheck
|
||||
#
|
||||
# Configure oslo_middleware options in healthcheck section
|
||||
#
|
||||
# == Params
|
||||
#
|
||||
# [*detailed*]
|
||||
# (Optional) Show more detailed information as part of the response.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*backends*]
|
||||
# (Optional) Additional backends that can perform health checks and report
|
||||
# that information back as part of a request.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*disable_by_file_path*]
|
||||
# (Optional) Check the presense of a file to determine if an application
|
||||
# is running on a port.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*disable_by_file_paths*]
|
||||
# (Optional) Check the presense of a file to determine if an application
|
||||
# is running on a port. Expects a "port:path" list of strings.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
class sahara::healthcheck (
|
||||
$detailed = $facts['os_service_default'],
|
||||
$backends = $facts['os_service_default'],
|
||||
$disable_by_file_path = $facts['os_service_default'],
|
||||
$disable_by_file_paths = $facts['os_service_default'],
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
oslo::healthcheck { 'sahara_config':
|
||||
detailed => $detailed,
|
||||
backends => $backends,
|
||||
disable_by_file_path => $disable_by_file_path,
|
||||
disable_by_file_paths => $disable_by_file_paths,
|
||||
}
|
||||
}
|
@ -1,382 +0,0 @@
|
||||
# == Class: sahara
|
||||
#
|
||||
# Sahara base package & configuration
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (Optional) Ensure state for package
|
||||
# Defaults to 'present'.
|
||||
#
|
||||
# [*host*]
|
||||
# (Optional) Hostname for sahara to listen on
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*port*]
|
||||
# (Optional) Port for sahara to listen on
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*plugins*]
|
||||
# (Optional) List of plugins to be loaded.
|
||||
# Sahara preserves the order of the list when returning it.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*use_floating_ips*]
|
||||
# (Optional) Whether to use floating IPs to communicate with instances.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*node_domain*]
|
||||
# (Optional) The suffix of the node's FQDN.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*use_designate*]
|
||||
# (Optional) Use Designate for internal and external hostnames resolution.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*nameservers*]
|
||||
# (Optional) IP addresses of Designate nameservers.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*use_ssl*]
|
||||
# (optional) Enable SSL on the API server
|
||||
# Defaults to false
|
||||
#
|
||||
# [*cert_file*]
|
||||
# (optinal) Certificate file to use when starting API server securely
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*key_file*]
|
||||
# (optional) Private key file to use when starting API server securely
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*ca_file*]
|
||||
# (optional) CA certificate file to use to verify connecting clients
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# == database configuration options
|
||||
#
|
||||
# [*sync_db*]
|
||||
# (Optional) Enable dbsync
|
||||
# Defaults to true.
|
||||
#
|
||||
# == rpc backend options
|
||||
#
|
||||
# [*default_transport_url*]
|
||||
# (optional) A URL representing the messaging driver to use and its full
|
||||
# configuration. Transport URLs take the form:
|
||||
# transport://user:pass@host1:port[,hostN:portN]/virtual_host
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*rpc_response_timeout*]
|
||||
# (Optional) Seconds to wait for a response from a call.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*control_exchange*]
|
||||
# (Optional) The default exchange to scope topics.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_durable_queues*]
|
||||
# (optional) Use durable queues in AMQP
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*rabbit_ha_queues*]
|
||||
# (Optional) Use durable queues in RabbitMQ.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*rabbit_use_ssl*]
|
||||
# (Optional) Connect over SSL for RabbitMQ.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*rabbit_login_method*]
|
||||
# (Optional) Method to auth with the rabbit server.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*rabbit_retry_interval*]
|
||||
# (Optional) Reconnection attempt frequency for rabbit.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*rabbit_retry_backoff*]
|
||||
# (Optional) Backoff between reconnection attempts for rabbit.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*rabbit_heartbeat_in_pthread*]
|
||||
# (Optional) EXPERIMENTAL: Run the health check heartbeat thread
|
||||
# through a native python thread. By default if this
|
||||
# option isn't provided the health check heartbeat will
|
||||
# inherit the execution model from the parent process. By
|
||||
# example if the parent process have monkey patched the
|
||||
# stdlib by using eventlet/greenlet then the heartbeat
|
||||
# will be run through a green thread.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*rabbit_quorum_queue*]
|
||||
# (Optional) Use quorum queues in RabbitMQ.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*rabbit_quorum_delivery_limit*]
|
||||
# (Optional) Each time a message is rdelivered to a consumer, a counter is
|
||||
# incremented. Once the redelivery count exceeds the delivery limit
|
||||
# the message gets dropped or dead-lettered.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*rabbit_quorum_max_memory_length*]
|
||||
# (Optional) Limit the number of messages in the quorum queue.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*rabbit_quorum_max_memory_bytes*]
|
||||
# (Optional) Limit the number of memory bytes used by the quorum queue.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*kombu_ssl_version*]
|
||||
# (optional) SSL version to use (valid only if SSL enabled).
|
||||
# Valid values are TLSv1, SSLv23 and SSLv3. SSLv2 may be
|
||||
# available on some distributions.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*kombu_ssl_keyfile*]
|
||||
# (Optional) SSL key file (valid only if SSL enabled).
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*kombu_ssl_certfile*]
|
||||
# (Optional) SSL cert file (valid only if SSL enabled).
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*kombu_ssl_ca_certs*]
|
||||
# (Optional) SSL certification authority file (valid only if SSL enabled).
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*kombu_reconnect_delay*]
|
||||
# (Optional) Backoff on cancel notification (valid only if SSL enabled).
|
||||
# (floating-point value)
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*kombu_failover_strategy*]
|
||||
# (Optional) Determines how the next RabbitMQ node is chosen in case the one
|
||||
# we are currently connected to becomes unavailable. Takes effect only if
|
||||
# more than one RabbitMQ node is provided in config. (string value)
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*kombu_compression*]
|
||||
# (optional) Possible values are: gzip, bz2. If not set compression will not
|
||||
# be used. This option may notbe available in future versions. EXPERIMENTAL.
|
||||
# (string value)
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_server_request_prefix*]
|
||||
# (Optional) Address prefix used when sending to a specific server
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_broadcast_prefix*]
|
||||
# (Optional) address prefix used when broadcasting to all servers
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_group_request_prefix*]
|
||||
# (Optional) address prefix when sending to any server in group
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_container_name*]
|
||||
# (Optional) Name for the AMQP container
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_idle_timeout*]
|
||||
# (Optional) Timeout for inactive connections
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_trace*]
|
||||
# (Optional) Debug: dump AMQP frames to stdout
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_ssl_ca_file*]
|
||||
# (Optional) CA certificate PEM file to verify server certificate
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_ssl_cert_file*]
|
||||
# (Optional) Identifying certificate PEM file to present to clients
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_ssl_key_file*]
|
||||
# (Optional) Private key PEM file used to sign cert_file certificate
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_ssl_key_password*]
|
||||
# (Optional) Password for decrypting ssl_key_file (if encrypted)
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_sasl_mechanisms*]
|
||||
# (Optional) Space separated list of acceptable SASL mechanisms
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_sasl_config_dir*]
|
||||
# (Optional) Path to directory that contains the SASL configuration
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_sasl_config_name*]
|
||||
# (Optional) Name of configuration file (without .conf suffix)
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_username*]
|
||||
# (Optional) User name for message broker authentication
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*amqp_password*]
|
||||
# (Optional) Password for message broker authentication
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*purge_config*]
|
||||
# (optional) Whether to set only the specified config options
|
||||
# in the sahara config.
|
||||
# Defaults to false.
|
||||
#
|
||||
# [*default_ntp_server*]
|
||||
# (optional) default ntp server to be used by the cluster instances
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
class sahara(
|
||||
$package_ensure = 'present',
|
||||
$host = $facts['os_service_default'],
|
||||
$port = $facts['os_service_default'],
|
||||
$plugins = $facts['os_service_default'],
|
||||
$use_floating_ips = $facts['os_service_default'],
|
||||
$node_domain = $facts['os_service_default'],
|
||||
$use_designate = $facts['os_service_default'],
|
||||
$nameservers = $facts['os_service_default'],
|
||||
Boolean $use_ssl = false,
|
||||
$ca_file = $facts['os_service_default'],
|
||||
$cert_file = $facts['os_service_default'],
|
||||
$key_file = $facts['os_service_default'],
|
||||
Boolean $sync_db = true,
|
||||
$default_transport_url = $facts['os_service_default'],
|
||||
$rpc_response_timeout = $facts['os_service_default'],
|
||||
$control_exchange = $facts['os_service_default'],
|
||||
$amqp_durable_queues = $facts['os_service_default'],
|
||||
$rabbit_ha_queues = $facts['os_service_default'],
|
||||
$rabbit_use_ssl = $facts['os_service_default'],
|
||||
$rabbit_login_method = $facts['os_service_default'],
|
||||
$rabbit_retry_interval = $facts['os_service_default'],
|
||||
$rabbit_retry_backoff = $facts['os_service_default'],
|
||||
$rabbit_heartbeat_in_pthread = $facts['os_service_default'],
|
||||
$rabbit_quorum_queue = $facts['os_service_default'],
|
||||
$rabbit_quorum_delivery_limit = $facts['os_service_default'],
|
||||
$rabbit_quorum_max_memory_length = $facts['os_service_default'],
|
||||
$rabbit_quorum_max_memory_bytes = $facts['os_service_default'],
|
||||
$kombu_ssl_version = $facts['os_service_default'],
|
||||
$kombu_ssl_keyfile = $facts['os_service_default'],
|
||||
$kombu_ssl_certfile = $facts['os_service_default'],
|
||||
$kombu_ssl_ca_certs = $facts['os_service_default'],
|
||||
$kombu_reconnect_delay = $facts['os_service_default'],
|
||||
$kombu_failover_strategy = $facts['os_service_default'],
|
||||
$kombu_compression = $facts['os_service_default'],
|
||||
$amqp_server_request_prefix = $facts['os_service_default'],
|
||||
$amqp_broadcast_prefix = $facts['os_service_default'],
|
||||
$amqp_group_request_prefix = $facts['os_service_default'],
|
||||
$amqp_container_name = $facts['os_service_default'],
|
||||
$amqp_idle_timeout = $facts['os_service_default'],
|
||||
$amqp_trace = $facts['os_service_default'],
|
||||
$amqp_ssl_ca_file = $facts['os_service_default'],
|
||||
$amqp_ssl_cert_file = $facts['os_service_default'],
|
||||
$amqp_ssl_key_file = $facts['os_service_default'],
|
||||
$amqp_ssl_key_password = $facts['os_service_default'],
|
||||
$amqp_sasl_mechanisms = $facts['os_service_default'],
|
||||
$amqp_sasl_config_dir = $facts['os_service_default'],
|
||||
$amqp_sasl_config_name = $facts['os_service_default'],
|
||||
$amqp_username = $facts['os_service_default'],
|
||||
$amqp_password = $facts['os_service_default'],
|
||||
Boolean $purge_config = false,
|
||||
$default_ntp_server = $facts['os_service_default'],
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::params
|
||||
include sahara::db
|
||||
|
||||
package { 'sahara-common':
|
||||
ensure => $package_ensure,
|
||||
name => $::sahara::params::common_package_name,
|
||||
tag => ['openstack', 'sahara-package'],
|
||||
}
|
||||
|
||||
resources { 'sahara_config':
|
||||
purge => $purge_config,
|
||||
}
|
||||
|
||||
sahara_config {
|
||||
'DEFAULT/plugins': value => join(any2array($plugins),',');
|
||||
'DEFAULT/use_floating_ips': value => $use_floating_ips;
|
||||
'DEFAULT/node_domain': value => $node_domain;
|
||||
'DEFAULT/use_designate': value => $use_designate;
|
||||
'DEFAULT/nameservers': value => join(any2array($nameservers), ',');
|
||||
'DEFAULT/host': value => $host;
|
||||
'DEFAULT/port': value => $port;
|
||||
'DEFAULT/default_ntp_server': value => $default_ntp_server;
|
||||
}
|
||||
|
||||
oslo::messaging::default { 'sahara_config':
|
||||
transport_url => $default_transport_url,
|
||||
rpc_response_timeout => $rpc_response_timeout,
|
||||
control_exchange => $control_exchange,
|
||||
}
|
||||
|
||||
oslo::messaging::rabbit { 'sahara_config':
|
||||
rabbit_ha_queues => $rabbit_ha_queues,
|
||||
rabbit_use_ssl => $rabbit_use_ssl,
|
||||
kombu_failover_strategy => $kombu_failover_strategy,
|
||||
kombu_compression => $kombu_compression,
|
||||
kombu_reconnect_delay => $kombu_reconnect_delay,
|
||||
kombu_ssl_version => $kombu_ssl_version,
|
||||
kombu_ssl_keyfile => $kombu_ssl_keyfile,
|
||||
kombu_ssl_certfile => $kombu_ssl_certfile,
|
||||
kombu_ssl_ca_certs => $kombu_ssl_ca_certs,
|
||||
amqp_durable_queues => $amqp_durable_queues,
|
||||
rabbit_login_method => $rabbit_login_method,
|
||||
rabbit_retry_interval => $rabbit_retry_interval,
|
||||
rabbit_retry_backoff => $rabbit_retry_backoff,
|
||||
heartbeat_in_pthread => $rabbit_heartbeat_in_pthread,
|
||||
rabbit_quorum_queue => $rabbit_quorum_queue,
|
||||
rabbit_quorum_delivery_limit => $rabbit_quorum_delivery_limit,
|
||||
rabbit_quorum_max_memory_length => $rabbit_quorum_max_memory_length,
|
||||
rabbit_quorum_max_memory_bytes => $rabbit_quorum_max_memory_bytes,
|
||||
}
|
||||
|
||||
oslo::messaging::amqp { 'sahara_config':
|
||||
server_request_prefix => $amqp_server_request_prefix,
|
||||
broadcast_prefix => $amqp_broadcast_prefix,
|
||||
group_request_prefix => $amqp_group_request_prefix,
|
||||
container_name => $amqp_container_name,
|
||||
idle_timeout => $amqp_idle_timeout,
|
||||
trace => $amqp_trace,
|
||||
ssl_ca_file => $amqp_ssl_ca_file,
|
||||
ssl_cert_file => $amqp_ssl_cert_file,
|
||||
ssl_key_file => $amqp_ssl_key_file,
|
||||
ssl_key_password => $amqp_ssl_key_password,
|
||||
sasl_mechanisms => $amqp_sasl_mechanisms,
|
||||
sasl_config_dir => $amqp_sasl_config_dir,
|
||||
sasl_config_name => $amqp_sasl_config_name,
|
||||
username => $amqp_username,
|
||||
password => $amqp_password,
|
||||
}
|
||||
|
||||
if $use_ssl {
|
||||
if is_service_default($cert_file) {
|
||||
fail('The cert_file parameter is required when use_ssl is set to true')
|
||||
}
|
||||
if is_service_default($key_file) {
|
||||
fail('The key_file parameter is required when use_ssl is set to true')
|
||||
}
|
||||
sahara_config {
|
||||
'ssl/cert_file': value => $cert_file;
|
||||
'ssl/key_file': value => $key_file;
|
||||
'ssl/ca_file': value => $ca_file;
|
||||
}
|
||||
} else {
|
||||
sahara_config {
|
||||
'ssl/cert_file': ensure => absent;
|
||||
'ssl/key_file': ensure => absent;
|
||||
'ssl/ca_file': ensure => absent;
|
||||
}
|
||||
}
|
||||
|
||||
if $sync_db {
|
||||
include sahara::db::sync
|
||||
}
|
||||
|
||||
}
|
@ -1,129 +0,0 @@
|
||||
# == Class: sahara::keystone::auth
|
||||
#
|
||||
# Configures sahara service and endpoint in Keystone.
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*password*]
|
||||
# (Required) Password for Sahara user.
|
||||
#
|
||||
# [*service_name*]
|
||||
# (Optional) Name of the service.
|
||||
# Defaults to 'sahara'
|
||||
#
|
||||
# [*auth_name*]
|
||||
# (Optional) Username for sahara service.
|
||||
# Defaults to 'sahara'.
|
||||
#
|
||||
# [*email*]
|
||||
# (Optional) Email for Sahara user.
|
||||
# Defaults to 'sahara@localhost'.
|
||||
#
|
||||
# [*tenant*]
|
||||
# (Optional) Tenant for Sahara user.
|
||||
# Defaults to 'services'.
|
||||
#
|
||||
# [*roles*]
|
||||
# (Optional) List of roles assigned to sahara user.
|
||||
# Defaults to ['admin']
|
||||
#
|
||||
# [*system_scope*]
|
||||
# (Optional) Scope for system operations.
|
||||
# Defaults to 'all'
|
||||
#
|
||||
# [*system_roles*]
|
||||
# (Optional) List of system roles assigned to sahara user.
|
||||
# Defaults to []
|
||||
#
|
||||
# [*configure_endpoint*]
|
||||
# (Optional) Should Sahara endpoint be configured?
|
||||
# Defaults to true.
|
||||
#
|
||||
# [*configure_user*]
|
||||
# (Optional) Should the service user be configured?
|
||||
# Defaults to true
|
||||
#
|
||||
# [*configure_user_role*]
|
||||
# (Optional) Should the admin role be configured for the service user?
|
||||
# Defaults to true
|
||||
#
|
||||
# [*service_type*]
|
||||
# (Optional) Type of service.
|
||||
# Defaults to 'data-processing'.
|
||||
#
|
||||
# [*service_description*]
|
||||
# (Optional) Description of service.
|
||||
# Defaults to 'Sahara Data Processing'.
|
||||
#
|
||||
# [*region*]
|
||||
# (Optional) Region for endpoint.
|
||||
# Defaults to 'RegionOne'.
|
||||
#
|
||||
# [*public_url*]
|
||||
# (Optional) The endpoint's public url.
|
||||
# This url should *not* contain any trailing '/'.
|
||||
# Defaults to 'http://127.0.0.1:8386'
|
||||
#
|
||||
# [*admin_url*]
|
||||
# (Optional) The endpoint's admin url.
|
||||
# This url should *not* contain any trailing '/'.
|
||||
# Defaults to 'http://127.0.0.1:8386'
|
||||
#
|
||||
# [*internal_url*]
|
||||
# (Optional) The endpoint's internal url.
|
||||
# This url should *not* contain any trailing '/'.
|
||||
# Defaults to 'http://127.0.0.1:8386'
|
||||
#
|
||||
# === Examples
|
||||
#
|
||||
# class { 'sahara::keystone::auth':
|
||||
# password => 'secret',
|
||||
# public_url => 'https://10.0.0.10:8386',
|
||||
# internal_url => 'https://10.0.0.11:8386',
|
||||
# admin_url => 'https://10.0.0.11:8386',
|
||||
# }
|
||||
#
|
||||
class sahara::keystone::auth(
|
||||
$password,
|
||||
$service_name = 'sahara',
|
||||
$auth_name = 'sahara',
|
||||
$email = 'sahara@localhost',
|
||||
$tenant = 'services',
|
||||
$roles = ['admin'],
|
||||
$system_scope = 'all',
|
||||
$system_roles = [],
|
||||
$service_type = 'data-processing',
|
||||
$service_description = 'Sahara Data Processing',
|
||||
$configure_endpoint = true,
|
||||
$configure_user = true,
|
||||
$configure_user_role = true,
|
||||
$region = 'RegionOne',
|
||||
$public_url = 'http://127.0.0.1:8386',
|
||||
$admin_url = 'http://127.0.0.1:8386',
|
||||
$internal_url = 'http://127.0.0.1:8386',
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
Keystone::Resource::Service_identity['sahara'] -> Anchor['sahara::service::end']
|
||||
|
||||
keystone::resource::service_identity { 'sahara':
|
||||
configure_user => $configure_user,
|
||||
configure_user_role => $configure_user_role,
|
||||
configure_endpoint => $configure_endpoint,
|
||||
service_type => $service_type,
|
||||
service_description => $service_description,
|
||||
service_name => $service_name,
|
||||
auth_name => $auth_name,
|
||||
region => $region,
|
||||
password => $password,
|
||||
email => $email,
|
||||
tenant => $tenant,
|
||||
roles => $roles,
|
||||
system_scope => $system_scope,
|
||||
system_roles => $system_roles,
|
||||
public_url => $public_url,
|
||||
admin_url => $admin_url,
|
||||
internal_url => $internal_url,
|
||||
}
|
||||
}
|
@ -1,284 +0,0 @@
|
||||
# class: sahara::keystone::authtoken
|
||||
#
|
||||
# Configure the keystone_authtoken and the trustee sections in the
|
||||
# configuration file
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*password*]
|
||||
# (Required) Password to create for the service user
|
||||
#
|
||||
# [*username*]
|
||||
# (Optional) The name of the service user
|
||||
# Defaults to 'sahara'
|
||||
#
|
||||
# [*auth_url*]
|
||||
# (Optional) The URL to use for authentication.
|
||||
# Defaults to 'http:://127.0.0.1:5000'
|
||||
#
|
||||
# [*project_name*]
|
||||
# (Optional) Service project name
|
||||
# Defaults to 'services'
|
||||
#
|
||||
# [*user_domain_name*]
|
||||
# (Optional) Name of domain for $username
|
||||
# Defaults to 'Default'
|
||||
#
|
||||
# [*project_domain_name*]
|
||||
# (Optional) Name of domain for $project_name
|
||||
# Defaults to 'Default'
|
||||
#
|
||||
# [*system_scope*]
|
||||
# (Optional) Scope for system operations
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*insecure*]
|
||||
# (Optional) If true, explicitly allow TLS without checking server cert
|
||||
# against any certificate authorities. WARNING: not recommended. Use with
|
||||
# caution.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*auth_section*]
|
||||
# (Optional) Config Section from which to load plugin specific options
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*auth_type*]
|
||||
# (Optional) Authentication type to load
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*www_authenticate_uri*]
|
||||
# (Optional) Complete public Identity API endpoint.
|
||||
# Defaults to 'http://127.0.0.1:5000/'.
|
||||
#
|
||||
# [*auth_version*]
|
||||
# (Optional) API version of the admin Identity API endpoint.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*cache*]
|
||||
# (Optional) Env key for the swift cache.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*cafile*]
|
||||
# (Optional) A PEM encoded Certificate Authority to use when verifying HTTPs
|
||||
# connections.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*certfile*]
|
||||
# (Optional) Required if identity server requires client certificate
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*delay_auth_decision*]
|
||||
# (Optional) Do not handle authorization requests within the middleware, but
|
||||
# delegate the authorization decision to downstream WSGI components. Boolean
|
||||
# value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*enforce_token_bind*]
|
||||
# (Optional) Used to control the use and type of token binding. Can be set
|
||||
# to: "disabled" to not check token binding. "permissive" (default) to
|
||||
# validate binding information if the bind type is of a form known to the
|
||||
# server and ignore it if not. "strict" like "permissive" but if the bind
|
||||
# type is unknown the token will be rejected. "required" any form of token
|
||||
# binding is needed to be allowed. Finally the name of a binding method that
|
||||
# must be present in tokens. String value.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*http_connect_timeout*]
|
||||
# (Optional) Request timeout value for communicating with Identity API
|
||||
# server.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*http_request_max_retries*]
|
||||
# (Optional) How many times are we trying to reconnect when communicating
|
||||
# with Identity API Server. Integer value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*include_service_catalog*]
|
||||
# (Optional) Indicate whether to set the X-Service-Catalog header. If False,
|
||||
# middleware will not ask for service catalog on token validation and will
|
||||
# not set the X-Service-Catalog header. Boolean value.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*keyfile*]
|
||||
# (Optional) Required if identity server requires client certificate
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_pool_conn_get_timeout*]
|
||||
# (Optional) Number of seconds that an operation will wait to get a memcached
|
||||
# client connection from the pool. Integer value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_pool_dead_retry*]
|
||||
# (Optional) Number of seconds memcached server is considered dead before it
|
||||
# is tried again. Integer value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_pool_maxsize*]
|
||||
# (Optional) Maximum total number of open connections to every memcached
|
||||
# server. Integer value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_pool_socket_timeout*]
|
||||
# (Optional) Number of seconds a connection to memcached is held unused in
|
||||
# the pool before it is closed. Integer value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_pool_unused_timeout*]
|
||||
# (Optional) Number of seconds a connection to memcached is held unused in
|
||||
# the pool before it is closed. Integer value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_secret_key*]
|
||||
# (Optional, mandatory if memcache_security_strategy is defined) This string
|
||||
# is used for key derivation.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_security_strategy*]
|
||||
# (Optional) If defined, indicate whether token data should be authenticated
|
||||
# or authenticated and encrypted. If MAC, token data is authenticated (with
|
||||
# HMAC) in the cache. If ENCRYPT, token data is encrypted and authenticated in the
|
||||
# cache. If the value is not one of these options or empty, auth_token will
|
||||
# raise an exception on initialization.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcache_use_advanced_pool*]
|
||||
# (Optional) Use the advanced (eventlet safe) memcached client pool. The
|
||||
# advanced pool will only work under python 2.x Boolean value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*memcached_servers*]
|
||||
# (Optional) Optionally specify a list of memcached server(s) to use for
|
||||
# caching. If left undefined, tokens will instead be cached in-process.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*manage_memcache_package*]
|
||||
# (Optional) Whether to install the python-memcache package.
|
||||
# Defaults to false.
|
||||
#
|
||||
# [*region_name*]
|
||||
# (Optional) The region in which the identity server can be found.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*token_cache_time*]
|
||||
# (Optional) In order to prevent excessive effort spent validating tokens,
|
||||
# the middleware caches previously-seen tokens for a configurable duration
|
||||
# (in seconds). Set to -1 to disable caching completely. Integer value
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*service_token_roles*]
|
||||
# (Optional) A choice of roles that must be present in a service token.
|
||||
# Service tokens are allowed to request that an expired token
|
||||
# can be used and so this check should tightly control that
|
||||
# only actual services should be sending this token. Roles
|
||||
# here are applied as an ANY check so any role in this list
|
||||
# must be present. For backwards compatibility reasons this
|
||||
# currently only affects the allow_expired check. (list value)
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*service_token_roles_required*]
|
||||
# (optional) backwards compatibility to ensure that the service tokens are
|
||||
# compared against a list of possible roles for validity
|
||||
# true/false
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*service_type*]
|
||||
# (Optional) The name or type of the service as it appears in the service
|
||||
# catalog. This is used to validate tokens that have restricted access rules.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*interface*]
|
||||
# (Optional) Interface to use for the Identity API endpoint. Valid values are
|
||||
# "public", "internal" or "admin".
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
class sahara::keystone::authtoken(
|
||||
String[1] $password,
|
||||
$username = 'sahara',
|
||||
$auth_url = 'http://127.0.0.1:5000/',
|
||||
$project_name = 'services',
|
||||
$user_domain_name = 'Default',
|
||||
$project_domain_name = 'Default',
|
||||
$system_scope = $facts['os_service_default'],
|
||||
$insecure = $facts['os_service_default'],
|
||||
$auth_section = $facts['os_service_default'],
|
||||
$auth_type = 'password',
|
||||
$www_authenticate_uri = 'http://127.0.0.1:5000/',
|
||||
$auth_version = $facts['os_service_default'],
|
||||
$cache = $facts['os_service_default'],
|
||||
$cafile = $facts['os_service_default'],
|
||||
$certfile = $facts['os_service_default'],
|
||||
$delay_auth_decision = $facts['os_service_default'],
|
||||
$enforce_token_bind = $facts['os_service_default'],
|
||||
$http_connect_timeout = $facts['os_service_default'],
|
||||
$http_request_max_retries = $facts['os_service_default'],
|
||||
$include_service_catalog = $facts['os_service_default'],
|
||||
$keyfile = $facts['os_service_default'],
|
||||
$memcache_pool_conn_get_timeout = $facts['os_service_default'],
|
||||
$memcache_pool_dead_retry = $facts['os_service_default'],
|
||||
$memcache_pool_maxsize = $facts['os_service_default'],
|
||||
$memcache_pool_socket_timeout = $facts['os_service_default'],
|
||||
$memcache_pool_unused_timeout = $facts['os_service_default'],
|
||||
$memcache_secret_key = $facts['os_service_default'],
|
||||
$memcache_security_strategy = $facts['os_service_default'],
|
||||
$memcache_use_advanced_pool = $facts['os_service_default'],
|
||||
$memcached_servers = $facts['os_service_default'],
|
||||
$manage_memcache_package = false,
|
||||
$region_name = $facts['os_service_default'],
|
||||
$token_cache_time = $facts['os_service_default'],
|
||||
$service_token_roles = $facts['os_service_default'],
|
||||
$service_token_roles_required = $facts['os_service_default'],
|
||||
$service_type = $facts['os_service_default'],
|
||||
$interface = $facts['os_service_default'],
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
keystone::resource::authtoken { 'sahara_config':
|
||||
username => $username,
|
||||
password => $password,
|
||||
project_name => $project_name,
|
||||
auth_url => $auth_url,
|
||||
www_authenticate_uri => $www_authenticate_uri,
|
||||
auth_version => $auth_version,
|
||||
auth_type => $auth_type,
|
||||
auth_section => $auth_section,
|
||||
user_domain_name => $user_domain_name,
|
||||
project_domain_name => $project_domain_name,
|
||||
system_scope => $system_scope,
|
||||
insecure => $insecure,
|
||||
cache => $cache,
|
||||
cafile => $cafile,
|
||||
certfile => $certfile,
|
||||
delay_auth_decision => $delay_auth_decision,
|
||||
enforce_token_bind => $enforce_token_bind,
|
||||
http_connect_timeout => $http_connect_timeout,
|
||||
http_request_max_retries => $http_request_max_retries,
|
||||
include_service_catalog => $include_service_catalog,
|
||||
keyfile => $keyfile,
|
||||
memcache_pool_conn_get_timeout => $memcache_pool_conn_get_timeout,
|
||||
memcache_pool_dead_retry => $memcache_pool_dead_retry,
|
||||
memcache_pool_maxsize => $memcache_pool_maxsize,
|
||||
memcache_pool_socket_timeout => $memcache_pool_socket_timeout,
|
||||
memcache_secret_key => $memcache_secret_key,
|
||||
memcache_security_strategy => $memcache_security_strategy,
|
||||
memcache_use_advanced_pool => $memcache_use_advanced_pool,
|
||||
memcache_pool_unused_timeout => $memcache_pool_unused_timeout,
|
||||
memcached_servers => $memcached_servers,
|
||||
manage_memcache_package => $manage_memcache_package,
|
||||
region_name => $region_name,
|
||||
token_cache_time => $token_cache_time,
|
||||
service_token_roles => $service_token_roles,
|
||||
service_token_roles_required => $service_token_roles_required,
|
||||
service_type => $service_type,
|
||||
interface => $interface,
|
||||
}
|
||||
|
||||
sahara_config {
|
||||
'trustee/username' : value => $username;
|
||||
'trustee/password' : value => $password, secret => true;
|
||||
'trustee/project_name' : value => $project_name;
|
||||
'trustee/auth_url' : value => $auth_url;
|
||||
'trustee/user_domain_name' : value => $user_domain_name;
|
||||
'trustee/project_domain_name' : value => $project_domain_name;
|
||||
}
|
||||
}
|
@ -1,151 +0,0 @@
|
||||
# == Class sahara::logging
|
||||
#
|
||||
# sahara extended logging configuration
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*debug*]
|
||||
# (Optional) Should the daemons log debug messages
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*use_syslog*]
|
||||
# Use syslog for logging.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*use_json*]
|
||||
# Use json for logging.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*use_journal*]
|
||||
# Use journal for logging.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*use_stderr*]
|
||||
# (Optional) Use stderr for logging
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*log_facility*]
|
||||
# Syslog facility to receive log lines.
|
||||
# (Optional) Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*log_file*]
|
||||
# (optional) Where to log
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*watch_log_file*]
|
||||
# (Optional) Uses logging handler designed to watch file system (boolean value).
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*log_dir*]
|
||||
# (Optional) Directory where logs should be stored.
|
||||
# If set to $facts['os_service_default'], it will not log to any directory.
|
||||
# Defaults to '/var/log/sahara'
|
||||
#
|
||||
# [*logging_context_format_string*]
|
||||
# (Optional) Format string to use for log messages with context.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\
|
||||
# [%(request_id)s %(user_identity)s] %(instance)s%(message)s'
|
||||
#
|
||||
# [*logging_default_format_string*]
|
||||
# (Optional) Format string to use for log messages without context.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example: '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s\
|
||||
# [-] %(instance)s%(message)s'
|
||||
#
|
||||
# [*logging_debug_format_suffix*]
|
||||
# (Optional) Formatted data to append to log format when level is DEBUG.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example: '%(funcName)s %(pathname)s:%(lineno)d'
|
||||
#
|
||||
# [*logging_exception_prefix*]
|
||||
# (Optional) Prefix each line of exception output with this format.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example: '%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s'
|
||||
#
|
||||
# [*log_config_append*]
|
||||
# (Optional) The name of an additional logging configuration file.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# See https://docs.python.org/2/howto/logging.html
|
||||
#
|
||||
# [*default_log_levels*]
|
||||
# (0ptional) Hash of logger (keys) and level (values) pairs.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example:
|
||||
# {'amqp' => 'WARN', 'amqplib' => 'WARN', 'boto' => 'WARN',
|
||||
# 'sqlalchemy' => 'WARN', 'suds' => 'INFO', 'iso8601' => 'WARN',
|
||||
# 'requests.packages.urllib3.connectionpool' => 'WARN' }
|
||||
#
|
||||
# [*publish_errors*]
|
||||
# (Optional) Publish error events (boolean value).
|
||||
# Defaults to $facts['os_service_default'] (false if unconfigured).
|
||||
#
|
||||
# [*fatal_deprecations*]
|
||||
# (Optional) Make deprecations fatal (boolean value)
|
||||
# Defaults to $facts['os_service_default'] (false if unconfigured).
|
||||
#
|
||||
# [*instance_format*]
|
||||
# (Optional) If an instance is passed with the log message, format it
|
||||
# like this (string value).
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example: '[instance: %(uuid)s] '
|
||||
#
|
||||
# [*instance_uuid_format*]
|
||||
# (Optional) If an instance UUID is passed with the log message, format
|
||||
# It like this (string value).
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example: instance_uuid_format='[instance: %(uuid)s] '
|
||||
|
||||
# [*log_date_format*]
|
||||
# (Optional) Format string for %%(asctime)s in log records.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
# Example: 'Y-%m-%d %H:%M:%S'
|
||||
#
|
||||
class sahara::logging(
|
||||
$debug = $facts['os_service_default'],
|
||||
$use_syslog = $facts['os_service_default'],
|
||||
$use_json = $facts['os_service_default'],
|
||||
$use_journal = $facts['os_service_default'],
|
||||
$use_stderr = $facts['os_service_default'],
|
||||
$log_facility = $facts['os_service_default'],
|
||||
$log_file = $facts['os_service_default'],
|
||||
$watch_log_file = $facts['os_service_default'],
|
||||
$log_dir = '/var/log/sahara',
|
||||
$logging_context_format_string = $facts['os_service_default'],
|
||||
$logging_default_format_string = $facts['os_service_default'],
|
||||
$logging_debug_format_suffix = $facts['os_service_default'],
|
||||
$logging_exception_prefix = $facts['os_service_default'],
|
||||
$log_config_append = $facts['os_service_default'],
|
||||
$default_log_levels = $facts['os_service_default'],
|
||||
$publish_errors = $facts['os_service_default'],
|
||||
$fatal_deprecations = $facts['os_service_default'],
|
||||
$instance_format = $facts['os_service_default'],
|
||||
$instance_uuid_format = $facts['os_service_default'],
|
||||
$log_date_format = $facts['os_service_default'],
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
oslo::log { 'sahara_config':
|
||||
debug => $debug,
|
||||
use_syslog => $use_syslog,
|
||||
use_json => $use_json,
|
||||
use_journal => $use_journal,
|
||||
use_stderr => $use_stderr,
|
||||
log_file => $log_file,
|
||||
watch_log_file => $watch_log_file,
|
||||
log_dir => $log_dir,
|
||||
syslog_log_facility => $log_facility,
|
||||
logging_context_format_string => $logging_context_format_string,
|
||||
logging_default_format_string => $logging_default_format_string,
|
||||
logging_debug_format_suffix => $logging_debug_format_suffix,
|
||||
logging_exception_prefix => $logging_exception_prefix,
|
||||
log_config_append => $log_config_append,
|
||||
default_log_levels => $default_log_levels,
|
||||
publish_errors => $publish_errors,
|
||||
fatal_deprecations => $fatal_deprecations,
|
||||
log_date_format => $log_date_format,
|
||||
instance_format => $instance_format,
|
||||
instance_uuid_format => $instance_uuid_format,
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
# == Class: sahara::notify
|
||||
#
|
||||
# Ceilometer notifications configuration for Sahara
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*notification_transport_url*]
|
||||
# (Optional) A URL representing the messaging driver to use for notifications
|
||||
# and its full configuration. Transport URLs take the form:
|
||||
# transport://user:pass@host1:port[,hostN:portN]/virtual_host
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*notification_driver*]
|
||||
# (Optional) Notification driver to use.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*notification_topics*]
|
||||
# (Optional) Topic to use for notifications.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
class sahara::notify (
|
||||
$notification_transport_url = $facts['os_service_default'],
|
||||
$notification_driver = $facts['os_service_default'],
|
||||
$notification_topics = $facts['os_service_default'],
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
|
||||
oslo::messaging::notifications { 'sahara_config':
|
||||
transport_url => $notification_transport_url,
|
||||
driver => $notification_driver,
|
||||
topics => $notification_topics,
|
||||
}
|
||||
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
# == Class: sahara::params
|
||||
#
|
||||
# Parameters for puppet-sahara
|
||||
#
|
||||
class sahara::params {
|
||||
include openstacklib::defaults
|
||||
|
||||
$client_package_name = 'python3-saharaclient'
|
||||
$user = 'sahara'
|
||||
$group = 'sahara'
|
||||
|
||||
case $facts['os']['family'] {
|
||||
'RedHat': {
|
||||
$common_package_name = 'openstack-sahara-common'
|
||||
$api_package_name = 'openstack-sahara-api'
|
||||
$engine_package_name = 'openstack-sahara-engine'
|
||||
$api_service_name = 'openstack-sahara-api'
|
||||
$engine_service_name = 'openstack-sahara-engine'
|
||||
$sahara_wsgi_script_path = '/var/www/cgi-bin/sahara'
|
||||
$sahara_wsgi_script_source = '/usr/bin/sahara-wsgi-api'
|
||||
$plugin_package_name_base = 'python3-sahara-plugin-'
|
||||
}
|
||||
'Debian': {
|
||||
$common_package_name = 'sahara-common'
|
||||
$api_package_name = 'sahara-api'
|
||||
$engine_package_name = 'sahara-engine'
|
||||
$api_service_name = 'sahara-api'
|
||||
$engine_service_name = 'sahara-engine'
|
||||
$sahara_wsgi_script_path = '/usr/lib/cgi-bin/sahara'
|
||||
$sahara_wsgi_script_source = '/usr/bin/sahara-wsgi-api'
|
||||
$plugin_package_name_base = 'python3-sahara-plugin-'
|
||||
}
|
||||
default: {
|
||||
fail("Unsupported osfamily: ${facts['os']['family']}")
|
||||
}
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
# == Define: sahara::plugin
|
||||
#
|
||||
# Sahara plugin configuration
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (Optional) Ensure state for package
|
||||
# Defaults to 'present'.
|
||||
#
|
||||
define sahara::plugin(
|
||||
$package_ensure = 'present',
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::params
|
||||
|
||||
package { "sahara-plugin-${name}":
|
||||
ensure => $package_ensure,
|
||||
name => "${::sahara::params::plugin_package_name_base}${name}",
|
||||
tag => ['openstack', 'sahara-package'],
|
||||
}
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
# == Class: sahara::policy
|
||||
#
|
||||
# Configure the sahara policies
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*enforce_scope*]
|
||||
# (Optional) Whether or not to enforce scope when evaluating policies.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*enforce_new_defaults*]
|
||||
# (Optional) Whether or not to use old deprecated defaults when evaluating
|
||||
# policies.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*policies*]
|
||||
# (Optional) Set of policies to configure for sahara
|
||||
# Example :
|
||||
# {
|
||||
# 'sahara-context_is_admin' => {
|
||||
# 'key' => 'context_is_admin',
|
||||
# 'value' => 'true'
|
||||
# },
|
||||
# 'sahara-default' => {
|
||||
# 'key' => 'default',
|
||||
# 'value' => 'rule:admin_or_owner'
|
||||
# }
|
||||
# }
|
||||
# Defaults to empty hash.
|
||||
#
|
||||
# [*policy_path*]
|
||||
# (Optional) Path to the sahara policy.yaml file
|
||||
# Defaults to /etc/sahara/policy.yaml
|
||||
#
|
||||
# [*policy_default_rule*]
|
||||
# (Optional) Default rule. Enforced when a requested rule is not found.
|
||||
# Defaults to $facts['os_service_default'].
|
||||
#
|
||||
# [*policy_dirs*]
|
||||
# (Optional) Path to the sahara policy folder
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*purge_config*]
|
||||
# (optional) Whether to set only the specified policy rules in the policy
|
||||
# file.
|
||||
# Defaults to false.
|
||||
#
|
||||
class sahara::policy (
|
||||
$enforce_scope = $facts['os_service_default'],
|
||||
$enforce_new_defaults = $facts['os_service_default'],
|
||||
Hash $policies = {},
|
||||
$policy_path = '/etc/sahara/policy.yaml',
|
||||
$policy_default_rule = $facts['os_service_default'],
|
||||
$policy_dirs = $facts['os_service_default'],
|
||||
Boolean $purge_config = false,
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::params
|
||||
|
||||
$policy_parameters = {
|
||||
policies => $policies,
|
||||
policy_path => $policy_path,
|
||||
file_user => 'root',
|
||||
file_group => $::sahara::params::group,
|
||||
file_format => 'yaml',
|
||||
purge_config => $purge_config,
|
||||
tag => 'sahara',
|
||||
}
|
||||
|
||||
create_resources('openstacklib::policy', { $policy_path => $policy_parameters })
|
||||
|
||||
oslo::policy { 'sahara_config':
|
||||
enforce_scope => $enforce_scope,
|
||||
enforce_new_defaults => $enforce_new_defaults,
|
||||
policy_file => $policy_path,
|
||||
policy_default_rule => $policy_default_rule,
|
||||
policy_dirs => $policy_dirs,
|
||||
}
|
||||
|
||||
}
|
@ -1,87 +0,0 @@
|
||||
# == Class: sahara::service::api
|
||||
#
|
||||
# Installs & configure the Sahara API service
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*api_workers*]
|
||||
# (Optional) Number of workers for Sahara API service
|
||||
# 0 means all-in-one-thread configuration
|
||||
# Defaults to $facts['os_workers']
|
||||
#
|
||||
# [*enabled*]
|
||||
# (Optional) Should the service be enabled.
|
||||
# Defaults to 'true'.
|
||||
#
|
||||
# [*manage_service*]
|
||||
# (Optional) Whether the service should be managed by Puppet.
|
||||
# Defaults to 'true'.
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (Optional) Ensure state for package.
|
||||
# Defaults to 'present'
|
||||
#
|
||||
# [*service_name*]
|
||||
# (Optional) Name of the service that will be providing the
|
||||
# server functionality of sahara-api.
|
||||
# If the value is 'httpd', this means sahara-api will be a web
|
||||
# service, and you must use another class to configure that
|
||||
# web service. For example, use class { 'sahara::wsgi::apache'...}
|
||||
# to make sahara-api be a web app using apache mod_wsgi.
|
||||
# Defaults to '$::sahara::params::api_service_name'
|
||||
#
|
||||
class sahara::service::api (
|
||||
$api_workers = $facts['os_workers'],
|
||||
Boolean $enabled = true,
|
||||
Boolean $manage_service = true,
|
||||
$package_ensure = 'present',
|
||||
$service_name = $::sahara::params::api_service_name,
|
||||
) inherits sahara::params {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::policy
|
||||
|
||||
if $facts['os']['name'] == 'Ubuntu' and $service_name == $::sahara::params::api_service_name {
|
||||
fail('The Sahara API must be run with WSGI on Ubuntu')
|
||||
}
|
||||
|
||||
package { 'sahara-api':
|
||||
ensure => $package_ensure,
|
||||
name => $::sahara::params::api_package_name,
|
||||
tag => ['openstack', 'sahara-package'],
|
||||
}
|
||||
|
||||
sahara_config {
|
||||
'DEFAULT/api_workers': value => $api_workers;
|
||||
}
|
||||
|
||||
if $manage_service {
|
||||
if $enabled {
|
||||
$service_ensure = 'running'
|
||||
} else {
|
||||
$service_ensure = 'stopped'
|
||||
}
|
||||
|
||||
if $service_name == $::sahara::params::api_service_name {
|
||||
service { 'sahara-api':
|
||||
ensure => $service_ensure,
|
||||
name => $::sahara::params::api_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
tag => 'sahara-service',
|
||||
}
|
||||
} elsif $service_name == 'httpd' {
|
||||
if $facts['os']['name'] != 'Ubuntu' {
|
||||
service { 'sahara-api':
|
||||
ensure => 'stopped',
|
||||
name => $::sahara::params::api_service_name,
|
||||
enable => false,
|
||||
tag => 'sahara-service',
|
||||
}
|
||||
Service['sahara-api'] -> Service[$service_name]
|
||||
}
|
||||
Service<| title == 'httpd' |> { tag +> 'sahara-service' }
|
||||
}
|
||||
}
|
||||
}
|
@ -1,115 +0,0 @@
|
||||
# == Class: sahara::service::engine
|
||||
#
|
||||
# Installs & configure the Sahara Engine service
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*enabled*]
|
||||
# (Optional) Should the service be enabled.
|
||||
# Defaults to 'true'.
|
||||
#
|
||||
# [*manage_service*]
|
||||
# (Optional) Whether the service should be managed by Puppet.
|
||||
# Defaults to 'true'.
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (Optional) Ensure state for package.
|
||||
# Defaults to 'present'
|
||||
#
|
||||
# [*periodic_enable*]
|
||||
# (Optional) Enable periodic tasks.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*periodic_fuzzy_delay*]
|
||||
# (Optional) Range in seconds to randomly delay when starting the periodic
|
||||
# task scheduler to reduse stampending.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*periodic_interval_max*]
|
||||
# (Optional) Max interval size between periodic tasks execution in seconds.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*min_transient_cluster_active_time*]
|
||||
# (Optional) Minimal "lifetime" in seconds for a transient cluster.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*cleanup_time_for_incomplete_clusters*]
|
||||
# (Optional) Maximal time (in hours) for clusters allowed to be in states
|
||||
# other than "Active", "Deleting" or "Error".
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*periodic_coordinator_backend_url*]
|
||||
# (Optional) The backend URL to use for distributed periodic tasks
|
||||
# coordination.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*periodic_workers_number*]
|
||||
# (Optional) Number of threads to run periodic tasks.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*coordinator_heartbeat_interval*]
|
||||
# (Optional) Interval size between heartbeat execution in seconds.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*hash_ring_replicas_count*]
|
||||
# (Optional) Number of points that belongs to each number on a hash ring.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
class sahara::service::engine (
|
||||
Boolean $enabled = true,
|
||||
Boolean $manage_service = true,
|
||||
$package_ensure = 'present',
|
||||
$periodic_enable = $facts['os_service_default'],
|
||||
$periodic_fuzzy_delay = $facts['os_service_default'],
|
||||
$periodic_interval_max = $facts['os_service_default'],
|
||||
$min_transient_cluster_active_time = $facts['os_service_default'],
|
||||
$cleanup_time_for_incomplete_clusters = $facts['os_service_default'],
|
||||
$periodic_coordinator_backend_url = $facts['os_service_default'],
|
||||
$periodic_workers_number = $facts['os_service_default'],
|
||||
$coordinator_heartbeat_interval = $facts['os_service_default'],
|
||||
$hash_ring_replicas_count = $facts['os_service_default'],
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::params
|
||||
|
||||
package { 'sahara-engine':
|
||||
ensure => $package_ensure,
|
||||
name => $::sahara::params::engine_package_name,
|
||||
tag => ['openstack', 'sahara-package'],
|
||||
}
|
||||
|
||||
if $manage_service {
|
||||
if $enabled {
|
||||
$service_ensure = 'running'
|
||||
} else {
|
||||
$service_ensure = 'stopped'
|
||||
}
|
||||
|
||||
service { 'sahara-engine':
|
||||
ensure => $service_ensure,
|
||||
name => $::sahara::params::engine_service_name,
|
||||
enable => $enabled,
|
||||
hasstatus => true,
|
||||
hasrestart => true,
|
||||
tag => 'sahara-service',
|
||||
}
|
||||
}
|
||||
|
||||
oslo::coordination{ 'sahara_config':
|
||||
backend_url => $periodic_coordinator_backend_url,
|
||||
manage_config => false
|
||||
}
|
||||
|
||||
sahara_config {
|
||||
'DEFAULT/periodic_enable': value => $periodic_enable;
|
||||
'DEFAULT/periodic_fuzzy_delay': value => $periodic_fuzzy_delay;
|
||||
'DEFAULT/periodic_interval_max': value => $periodic_interval_max;
|
||||
'DEFAULT/min_transient_cluster_active_time': value => $min_transient_cluster_active_time;
|
||||
'DEFAULT/cleanup_time_for_incomplete_clusters': value => $cleanup_time_for_incomplete_clusters;
|
||||
'DEFAULT/periodic_coordinator_backend_url': value => $periodic_coordinator_backend_url, secret => true;
|
||||
'DEFAULT/periodic_workers_number': value => $periodic_workers_number;
|
||||
'DEFAULT/coordinator_heartbeat_interval': value => $coordinator_heartbeat_interval;
|
||||
'DEFAULT/hash_ring_replicas_count': value => $hash_ring_replicas_count;
|
||||
}
|
||||
}
|
@ -1,190 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018 Binero
|
||||
#
|
||||
# Author: Tobias Urdin <tobias.urdin@binero.se>
|
||||
#
|
||||
# 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: sahara::wsgi::apache
|
||||
#
|
||||
# Install Sahara API under apache with mod_wsgi.
|
||||
#
|
||||
# == Parameters:
|
||||
#
|
||||
# [*servername*]
|
||||
# (Optional) The servername for the virtualhost.
|
||||
# Defaults to $facts['networking']['fqdn']
|
||||
#
|
||||
# [*port*]
|
||||
# (Optional) The port.
|
||||
# Defaults to 8386
|
||||
#
|
||||
# [*bind_host*]
|
||||
# (Optional) The host/ip address Apache will listen on.
|
||||
# Defaults to undef (listen on all ip addresses).
|
||||
#
|
||||
# [*path*]
|
||||
# (Optional) The prefix for the endpoint.
|
||||
# Defaults to '/'
|
||||
#
|
||||
# [*ssl*]
|
||||
# (Optional) Use ssl.
|
||||
# Defaults to false
|
||||
#
|
||||
# [*workers*]
|
||||
# (Optional) Number of WSGI workers to spawn.
|
||||
# Defaults to $facts['os_workers']
|
||||
#
|
||||
# [*priority*]
|
||||
# (Optional) The priority for the vhost.
|
||||
# Defaults to 10
|
||||
#
|
||||
# [*threads*]
|
||||
# (Optional) The number of threads for the vhost.
|
||||
# Defaults to 1
|
||||
#
|
||||
# [*wsgi_process_display_name*]
|
||||
# (Optional) Name of the WSGI process display-name.
|
||||
# Defaults to undef
|
||||
#
|
||||
# [*ssl_cert*]
|
||||
# [*ssl_key*]
|
||||
# [*ssl_chain*]
|
||||
# [*ssl_ca*]
|
||||
# [*ssl_crl_path*]
|
||||
# [*ssl_crl*]
|
||||
# [*ssl_certs_dir*]
|
||||
# (Optional) apache::vhost ssl parameters.
|
||||
# Default to apache::vhost 'ssl_*' defaults
|
||||
#
|
||||
# [*access_log_file*]
|
||||
# (Optional) The log file name for the virtualhost.
|
||||
# Defaults to undef.
|
||||
#
|
||||
# [*access_log_pipe*]
|
||||
# (Optional) Specifies a pipe where Apache sends access logs for
|
||||
# the virtualhost.
|
||||
# Defaults to undef.
|
||||
#
|
||||
# [*access_log_syslog*]
|
||||
# (Optional) Sends the virtualhost access log messages to syslog.
|
||||
# Defaults to undef.
|
||||
#
|
||||
# [*access_log_format*]
|
||||
# (Optional) The log format for the virtualhost.
|
||||
# Defaults to undef.
|
||||
#
|
||||
# [*error_log_file*]
|
||||
# (Optional) The error log file name for the virtualhost.
|
||||
# Defaults to undef.
|
||||
#
|
||||
# [*error_log_pipe*]
|
||||
# (Optional) Specifies a pipe where Apache sends error logs for
|
||||
# the virtualhost.
|
||||
# Defaults to undef.
|
||||
#
|
||||
# [*error_log_syslog*]
|
||||
# (Optional) Sends the virtualhost error log messages to syslog.
|
||||
# Defaults to undef.
|
||||
#
|
||||
# [*custom_wsgi_process_options*]
|
||||
# (Optional) gives you the oportunity to add custom process options or to
|
||||
# overwrite the default options for the WSGI main process.
|
||||
# eg. to use a virtual python environment for the WSGI process
|
||||
# you could set it to:
|
||||
# { python-path => '/my/python/virtualenv' }
|
||||
# Defaults to {}
|
||||
#
|
||||
# [*headers*]
|
||||
# (Optional) Headers for the vhost.
|
||||
# Defaults to undef
|
||||
#
|
||||
# [*request_headers*]
|
||||
# (Optional) Modifies collected request headers in various ways.
|
||||
# Defaults to undef
|
||||
#
|
||||
# == Example:
|
||||
#
|
||||
# include apache
|
||||
# class { 'sahara::wsgi::apache': }
|
||||
#
|
||||
class sahara::wsgi::apache (
|
||||
$servername = $facts['networking']['fqdn'],
|
||||
$port = 8386,
|
||||
$bind_host = undef,
|
||||
$path = '/',
|
||||
$ssl = false,
|
||||
$workers = $facts['os_workers'],
|
||||
$ssl_cert = undef,
|
||||
$ssl_key = undef,
|
||||
$ssl_chain = undef,
|
||||
$ssl_ca = undef,
|
||||
$ssl_crl_path = undef,
|
||||
$ssl_crl = undef,
|
||||
$ssl_certs_dir = undef,
|
||||
$wsgi_process_display_name = undef,
|
||||
$threads = 1,
|
||||
$priority = 10,
|
||||
$access_log_file = undef,
|
||||
$access_log_pipe = undef,
|
||||
$access_log_syslog = undef,
|
||||
$access_log_format = undef,
|
||||
$error_log_file = undef,
|
||||
$error_log_pipe = undef,
|
||||
$error_log_syslog = undef,
|
||||
$custom_wsgi_process_options = {},
|
||||
$headers = undef,
|
||||
$request_headers = undef,
|
||||
) {
|
||||
|
||||
include sahara::deps
|
||||
include sahara::params
|
||||
|
||||
Anchor['sahara::install::end'] -> Class['apache']
|
||||
|
||||
::openstacklib::wsgi::apache { 'sahara_wsgi':
|
||||
bind_host => $bind_host,
|
||||
bind_port => $port,
|
||||
group => $::sahara::params::group,
|
||||
path => $path,
|
||||
priority => $priority,
|
||||
servername => $servername,
|
||||
ssl => $ssl,
|
||||
ssl_ca => $ssl_ca,
|
||||
ssl_cert => $ssl_cert,
|
||||
ssl_certs_dir => $ssl_certs_dir,
|
||||
ssl_chain => $ssl_chain,
|
||||
ssl_crl => $ssl_crl,
|
||||
ssl_crl_path => $ssl_crl_path,
|
||||
ssl_key => $ssl_key,
|
||||
threads => $threads,
|
||||
user => $::sahara::params::user,
|
||||
workers => $workers,
|
||||
wsgi_daemon_process => 'sahara',
|
||||
wsgi_process_display_name => $wsgi_process_display_name,
|
||||
wsgi_process_group => 'sahara',
|
||||
wsgi_script_dir => $::sahara::params::sahara_wsgi_script_path,
|
||||
wsgi_script_file => 'app',
|
||||
wsgi_script_source => $::sahara::params::sahara_wsgi_script_source,
|
||||
headers => $headers,
|
||||
request_headers => $request_headers,
|
||||
custom_wsgi_process_options => $custom_wsgi_process_options,
|
||||
access_log_file => $access_log_file,
|
||||
access_log_pipe => $access_log_pipe,
|
||||
access_log_syslog => $access_log_syslog,
|
||||
access_log_format => $access_log_format,
|
||||
error_log_file => $error_log_file,
|
||||
error_log_pipe => $error_log_pipe,
|
||||
error_log_syslog => $error_log_syslog,
|
||||
}
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
#
|
||||
# Copyright 2021 Thomas Goirand <zigo@debian.org>
|
||||
#
|
||||
# Author: Thomas Goirand <zigo@debian.org>
|
||||
#
|
||||
# == Class: sahara::wsgi::uwsgi
|
||||
#
|
||||
# Configure the UWSGI service for Sahara API.
|
||||
#
|
||||
# == Parameters
|
||||
#
|
||||
# [*processes*]
|
||||
# (Optional) Number of processes.
|
||||
# Defaults to $facts['os_workers'].
|
||||
#
|
||||
# [*threads*]
|
||||
# (Optional) Number of threads.
|
||||
# Defaults to 32.
|
||||
#
|
||||
# [*listen_queue_size*]
|
||||
# (Optional) Socket listen queue size.
|
||||
# Defaults to 100
|
||||
#
|
||||
class sahara::wsgi::uwsgi (
|
||||
$processes = $facts['os_workers'],
|
||||
$threads = 32,
|
||||
$listen_queue_size = 100,
|
||||
){
|
||||
|
||||
include sahara::deps
|
||||
|
||||
if $facts['os']['name'] != 'Debian'{
|
||||
warning('This class is only valid for Debian, as other operating systems are not using uwsgi by default.')
|
||||
}
|
||||
|
||||
sahara_api_uwsgi_config {
|
||||
'uwsgi/processes': value => $processes;
|
||||
'uwsgi/threads': value => $threads;
|
||||
'uwsgi/listen': value => $listen_queue_size;
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
{
|
||||
"author": "Red Hat and OpenStack Contributors",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "openstack/keystone",
|
||||
"version_requirement": ">=23.0.0 <24.0.0"
|
||||
},
|
||||
{
|
||||
"name": "puppetlabs/inifile",
|
||||
"version_requirement": ">=2.0.0 <7.0.0"
|
||||
},
|
||||
{
|
||||
"name": "puppetlabs/stdlib",
|
||||
"version_requirement": ">=5.0.0 <10.0.0"
|
||||
},
|
||||
{
|
||||
"name": "openstack/openstacklib",
|
||||
"version_requirement": ">=23.0.0 <24.0.0"
|
||||
},
|
||||
{
|
||||
"name": "openstack/oslo",
|
||||
"version_requirement": ">=23.0.0 <24.0.0"
|
||||
}
|
||||
],
|
||||
"description": "Installs and configures OpenStack Sahara (Data Processing).",
|
||||
"issues_url": "https://bugs.launchpad.net/puppet-sahara",
|
||||
"license": "Apache-2.0",
|
||||
"name": "openstack-sahara",
|
||||
"operatingsystem_support": [
|
||||
{
|
||||
"operatingsystem": "Debian",
|
||||
"operatingsystemrelease": [
|
||||
"12"
|
||||
]
|
||||
},
|
||||
{
|
||||
"operatingsystem": "RedHat",
|
||||
"operatingsystemrelease": [
|
||||
"9"
|
||||
]
|
||||
},
|
||||
{
|
||||
"operatingsystem": "CentOS",
|
||||
"operatingsystemrelease": [
|
||||
"9"
|
||||
]
|
||||
},
|
||||
{
|
||||
"operatingsystem": "Ubuntu",
|
||||
"operatingsystemrelease": [
|
||||
"22.04"
|
||||
]
|
||||
}
|
||||
],
|
||||
"project_page": "https://launchpad.net/puppet-sahara",
|
||||
"requirements": [
|
||||
{
|
||||
"name": "puppet",
|
||||
"version_requirement": ">= 7.0.0 < 8.0.0"
|
||||
}
|
||||
],
|
||||
"source": "https://opendev.org/openstack/puppet-sahara.git",
|
||||
"summary": "Puppet module for OpenStack Sahara",
|
||||
"version": "23.0.0"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add the log_file option for logging.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Add openstackclient installation to the client class.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds the pool_timeout option for configuring oslo.db. This will
|
||||
configure this value for pool_timeout with SQLAlchemy.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add support to configure service_token_roles in authtoken middleware.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Adds the use_journal option for configuring oslo.log. This will enable
|
||||
passing the logs to journald.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Adds db_sync_timeout parameter to db sync.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Add new parameter "rpc_response_timeout", seconds to wait for a
|
||||
response from a call
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add mysql_enable_ndb parameter to select mysql storage engine.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Add support for oslo_messaging_amqp backend via puppet-oslo resource
|
@ -1,7 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Add oslo.messaging transport_url parameters via puppet-oslo resource
|
||||
deprecations:
|
||||
- control_exchange moved to sahara class definition as it is intrinsic to
|
||||
default messaging configuration. It can no longer be set via the
|
||||
notify class and will be removed in a future release.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::logging::watch_log_file`` parameter has been added.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The ``sahara::wsgi::apache`` class now supports customizing
|
||||
request/response headers added by apache.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Add api_paste type/provider.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``key_val_separator`` parameter has been added to
|
||||
the ``sahara_api_paste_ini`` resource type.
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Allow to configure authtoken parameters, useful when running Keystone
|
||||
v3 API. This class is sahara::keystone::authtoken and parameters are
|
||||
consistent with other modules.
|
||||
deprecations:
|
||||
- sahara::admin_user, sahara::admin_password, sahara::auth_uri,
|
||||
sahara::identity_uri, sahara::admin_tenant_name and sahara::memcached_servers
|
||||
are deprecated. Please use sahara::keystone::authtoken::* parameters instead.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Now this module supports CentOS 9 and Red Hat Enterprise Linux 9.
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The following parameters have been added to the ``sahara::keystone::auth``
|
||||
class.
|
||||
|
||||
- ``configure_user``
|
||||
- ``configure_user_role``
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The following two parameters have been added to
|
||||
the ``sahara::service::engine`` class.
|
||||
|
||||
- ``coordinator_heartbeat_interval``
|
||||
- ``hash_ring_replicas_count``
|
@ -1,7 +0,0 @@
|
||||
---
|
||||
issues:
|
||||
- |
|
||||
Keystone v2.0 API was removed so we need to set a default value
|
||||
for user_domain_name and project_domain name, which will be
|
||||
Default as it is already in some other classes in modules.
|
||||
|
@ -1,20 +0,0 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
The now deprecated sahara::service::all class that manages the sahara-all service
|
||||
is not recommended to be used as the sahara-all service has minimal testing upstream.
|
||||
It's recommended that deployments move to using the separate API and engine services
|
||||
which can be deployed like shown in the puppet-sahara/examples/basic.pp file.
|
||||
Please see below on how to move away from the sahara-all service.
|
||||
|
||||
- Set ```enabled``` to ```false``` in ```sahara::service::all``` will stop the sahara-all service
|
||||
- Setup ```sahara::service::api``` and ```sahara::wsgi::apache``` classes
|
||||
- Setup ```sahara::service::engine``` class
|
||||
|
||||
Full example on how this is done can be seen in the puppet-sahara/examples/basic.pp
|
||||
examples file.
|
||||
deprecations:
|
||||
- |
|
||||
The sahara::service::all class that manages the sahara-all service is deprecated.
|
||||
It's recommended to not use the sahara-all service and instead use the separated
|
||||
API and engine services, the sahara-all service has minimal testing upstream.
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- |
|
||||
The following ZeroMQ parameters in ::sahara is now deprecated and has no effect:
|
||||
|
||||
- ``zeromq_bind_address``
|
||||
- ``zeromq_contexts``
|
||||
- ``zeromq_topic_backlog``
|
||||
- ``zeromq_ipc_dir``
|
||||
- ``zeromq_host``
|
||||
- ``cast_timeout``
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- allow_insecure_clients option is now deprecated for removal, the
|
||||
parameter has no effect.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- auth_uri is deprecated and will be removed in a future release.
|
||||
Please use www_authenticate_uri instead.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- database_min_pool_size option is now deprecated for removal, the
|
||||
parameter has no effect.
|
@ -1,12 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- |
|
||||
The following options have been deprecated, as those options have been
|
||||
moved to sahara::db class.
|
||||
|
||||
- ``sahara::database_connection``
|
||||
- ``sahara::database_idle_timeout``
|
||||
- ``sahara::database_max_overflow``
|
||||
- ``sahara::database_max_pool_size``
|
||||
- ``sahara::database_max_retries``
|
||||
- ``sahara::database_retry_interval``
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- database_idle_timeout is deprecated and will be removed in a future
|
||||
release. Please use database_connection_recycle_time instead.
|
@ -1,6 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- check_revocations_for_cached option is now deprecated for removal, the
|
||||
parameter has no effect.
|
||||
- hash_algorithms option is now deprecated for removal, the parameter
|
||||
has no effect.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- |
|
||||
The configuration option ``rabbit_max_retries`` is now deprecated and
|
||||
will be removed in the future.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- revocation_cache_time option is now deprecated for removal, the
|
||||
parameter has no effect.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- sahara::rpc_backend is deprecated and will be removed in a future
|
||||
release. Please use sahara::default_transport_url instead.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- |
|
||||
The configuration option ``use_neutron`` is now deprecated and
|
||||
will be removed in the future.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
deprecations:
|
||||
- Remove deprecated parameters since Liberty release.
|
@ -1,7 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The ``sahara`` class now supports the following two parameters.
|
||||
|
||||
- ``use_designate``
|
||||
- ``nameservers``
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
Fedora is no longer supported.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
other:
|
||||
- Drop all Qpid support, it was removed from Oslo in Mitaka.
|
@ -1,10 +0,0 @@
|
||||
---
|
||||
prelude: >
|
||||
Add hooks for external install & svc management.
|
||||
features:
|
||||
- This adds defined anchor points for external modules to
|
||||
hook into the software install, config and service dependency
|
||||
chain. This allows external modules to manage software
|
||||
installation (virtualenv, containers, etc) and service management
|
||||
(pacemaker) without needing rely on resources that may change or
|
||||
be renamed.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
fixes:
|
||||
- Fixed documentation for log_dir parameter
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::healthcheck`` class has been added. This class manages
|
||||
parameters of healthcheck middlware in oslo.middleware.
|
@ -1,6 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Added parameters for advanced configuration of httpd access and error log
|
||||
destinations including piped logging and syslog (see `mod_syslog`). Note
|
||||
that mod_syslog requires Apache2 >= 2.5.0.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
fixes:
|
||||
- The keystone auth class has been updated to provide a default service_name
|
||||
to allow a user to specify a custom auth_name that may not contain the
|
||||
name of the service.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::keystone::authtoken::interface`` parameter has been added,
|
||||
which can be used to set the interface parameter in authtoken middleware.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
fixes:
|
||||
- Added the ability to manage the memcached servers
|
||||
for keystone_authtoken in sahara
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::keystone::authtoken::service_type`` parameter has been
|
||||
added to configure the service_type parameter in authtoken middleware.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Expose use_json logging parameter, which enables JSON formatted logging.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
Now policy.yaml is used by default instead of policy.json.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::node_domain`` parameter has been added.
|
@ -1,3 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- Add openstack-db tag to Exec that run db-sync.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
other:
|
||||
- Parameters that control the number of spawned child processes for
|
||||
distributing processing have had their default value changed from
|
||||
::processorcount to ::os_workers.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::policy::enforce_scope`` parameter has been added to
|
||||
support the corresponding parameter in oslo.policy library.
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The following parameters have been added to the ``sahara::service::engine``
|
||||
class.
|
||||
|
||||
- ``periodic_enable``
|
||||
- ``periodic_fuzzy_delay``
|
||||
- ``periodic_interval_max``
|
||||
- ``min_transient_cluster_active_time``
|
||||
- ``cleanup_time_for_incomplete_clusters``
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The ``sahara::service::engine`` class now support the following two
|
||||
parameters.
|
||||
|
||||
- ``periodic_coordinator_backend_url``
|
||||
- ``periodic_workers_number``
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::plugin`` defined resource type has been added. This can
|
||||
be used to manage plugin packages.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
There is now a new policy_dirs parameter in the sahara::policy class,
|
||||
so one can set a custom path.
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::policy::enforce_new_defaults`` parameter has been
|
||||
added.
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``sahara::policy::policy_default_rule`` parameter has been added.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user