diff --git a/centos_pkg_dirs b/centos_pkg_dirs index 68fd3e8689..712f75838f 100644 --- a/centos_pkg_dirs +++ b/centos_pkg_dirs @@ -19,3 +19,4 @@ puppet-modules-wrs/puppet-dcmanager puppet-modules-wrs/puppet-smapi puppet-modules-wrs/puppet-fm playbookconfig +puppet-modules-wrs/puppet-dcdbsync diff --git a/puppet-modules-wrs/puppet-dcdbsync/PKG_INFO b/puppet-modules-wrs/puppet-dcdbsync/PKG_INFO new file mode 100644 index 0000000000..d77f0619c4 --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/PKG_INFO @@ -0,0 +1,2 @@ +Name: puppet-dcdbsync +Version: 1.0.0 diff --git a/puppet-modules-wrs/puppet-dcdbsync/centos/build_srpm.data b/puppet-modules-wrs/puppet-dcdbsync/centos/build_srpm.data new file mode 100644 index 0000000000..29c4710a74 --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/centos/build_srpm.data @@ -0,0 +1,3 @@ +SRC_DIR="src" +COPY_LIST="$SRC_DIR/LICENSE" +TIS_PATCH_VER=1 diff --git a/puppet-modules-wrs/puppet-dcdbsync/centos/puppet-dcdbsync.spec b/puppet-modules-wrs/puppet-dcdbsync/centos/puppet-dcdbsync.spec new file mode 100644 index 0000000000..b435be3f37 --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/centos/puppet-dcdbsync.spec @@ -0,0 +1,35 @@ +%global module_dir dcdbsync + +Name: puppet-%{module_dir} +Version: 1.0.0 +Release: %{tis_patch_ver}%{?_tis_dist} +Summary: Puppet dcdbsync module +License: Apache +Packager: Wind River + +URL: unknown + +Source0: %{name}-%{version}.tar.gz +Source1: LICENSE + +BuildArch: noarch + +BuildRequires: python2-devel + +%description +A puppet module for dcorch dbsync service + +%prep +%autosetup -c %{module_dir} + +# +# The src for this puppet module needs to be staged to puppet/modules +# +%install +install -d -m 0755 %{buildroot}%{_datadir}/puppet/modules/%{module_dir} +cp -R %{name}-%{version}/%{module_dir} %{buildroot}%{_datadir}/puppet/modules + +%files +%license %{name}-%{version}/LICENSE +%{_datadir}/puppet/modules/%{module_dir} + diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/LICENSE b/puppet-modules-wrs/puppet-dcdbsync/src/LICENSE new file mode 100644 index 0000000000..8d968b6cb0 --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/LICENSE @@ -0,0 +1,201 @@ + 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. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/LICENSE b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/LICENSE new file mode 100644 index 0000000000..8d968b6cb0 --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/LICENSE @@ -0,0 +1,201 @@ + 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. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/lib/puppet/provider/dcdbsync_config/ini_setting.rb b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/lib/puppet/provider/dcdbsync_config/ini_setting.rb new file mode 100644 index 0000000000..9a27027a27 --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/lib/puppet/provider/dcdbsync_config/ini_setting.rb @@ -0,0 +1,37 @@ +# +# Files in this package are licensed under Apache; see LICENSE file. +# +# Copyright (c) 2019 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# Jan 2019 Creation based off puppet-sysinv +# + +Puppet::Type.type(:dcdbsync_config).provide( + :ini_setting, + :parent => Puppet::Type.type(:ini_setting).provider(:ruby) +) do + + def section + resource[:name].split('/', 2).first + end + + def setting + resource[:name].split('/', 2).last + end + + def separator + '=' + end + + def self.file_path + '/etc/dcdbsync/dcdbsync.conf' + end + + # added for backwards compatibility with older versions of inifile + def file_path + self.class.file_path + end + +end diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/lib/puppet/type/dcdbsync_config.rb b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/lib/puppet/type/dcdbsync_config.rb new file mode 100644 index 0000000000..2ada627417 --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/lib/puppet/type/dcdbsync_config.rb @@ -0,0 +1,52 @@ +# +# Files in this package are licensed under Apache; see LICENSE file. +# +# Copyright (c) 2019 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# Jan 2019 Creation based off puppet-sysinv +# + +Puppet::Type.newtype(:dcdbsync_config) do + + ensurable + + newparam(:name, :namevar => true) do + desc 'Section/setting name to manage from /etc/dcdbsync/dcdbsync.conf' + 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 +end diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/api.pp b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/api.pp new file mode 100644 index 0000000000..2710a311cf --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/api.pp @@ -0,0 +1,183 @@ +# +# Files in this package are licensed under Apache; see LICENSE file. +# +# Copyright (c) 2019 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + +# == Class: dcdbsync::api +# +# Setup and configure the dcdbsync API endpoint +# +# === Parameters +# +# [*keystone_password*] +# The password to use for authentication (keystone) +# +# [*keystone_enabled*] +# (optional) Use keystone for authentification +# Defaults to true +# +# [*keystone_tenant*] +# (optional) The tenant of the auth user +# Defaults to services +# +# [*keystone_user*] +# (optional) The name of the auth user +# Defaults to dcdbsync +# +# [*keystone_auth_host*] +# (optional) The keystone host +# Defaults to localhost +# +# [*keystone_auth_port*] +# (optional) The keystone auth port +# Defaults to 5000 +# +# [*keystone_auth_protocol*] +# (optional) The protocol used to access the auth host +# Defaults to http. +# +# [*keystone_auth_admin_prefix*] +# (optional) The admin_prefix used to admin endpoint of the auth host +# This allow admin auth URIs like http://auth_host:5000/keystone. +# (where '/keystone' is the admin prefix) +# Defaults to false for empty. If defined, should be a string with a +# leading '/' and no trailing '/'. +# +# [*keystone_user_domain*] +# (Optional) domain name for auth user. +# Defaults to 'Default'. +# +# [*keystone_project_domain*] +# (Optional) domain name for auth project. +# Defaults to 'Default'. +# +# [*auth_type*] +# (Optional) Authentication type to load. +# Defaults to 'password'. +# +# [*bind_port*] +# (optional) The dcorch dbsync api port +# Defaults to 8219 +# +# [*package_ensure*] +# (optional) The state of the package +# Defaults to present +# +# [*bind_host*] +# (optional) The dcorch dbsync api bind address +# Defaults to 0.0.0.0 +# +# [*enabled*] +# (optional) The state of the service +# Defaults to true +# +class dcdbsync::api ( + $keystone_password, + $keystone_enabled = true, + $keystone_tenant = 'services', + $keystone_user = 'dcdbsync', + $keystone_auth_host = 'localhost', + $keystone_auth_port = '5000', + $keystone_auth_protocol = 'http', + $keystone_auth_admin_prefix = false, + $keystone_auth_uri = false, + $keystone_auth_version = false, + $keystone_identity_uri = false, + $keystone_user_domain = 'Default', + $keystone_project_domain = 'Default', + $auth_type = 'password', + $package_ensure = 'latest', + $bind_host = '0.0.0.0', + $bind_port = 8219, + $enabled = false +) { + + include dcdbsync::params + + Dcdbsync_config<||> ~> Service['dcdbsync-api'] + + if $::dcdbsync::params::api_package { + Package['dcdbsync-api'] -> Dcdbsync_config<||> + Package['dcdbsync-api'] -> Service['dcdbsync-api'] + package { 'dcdbsync-api': + ensure => $package_ensure, + name => $::dcdbsync::params::api_package, + } + } + + dcdbsync_config { + 'DEFAULT/bind_host': value => $bind_host; + 'DEFAULT/bind_port': value => $bind_port; + } + + if $keystone_identity_uri { + dcdbsync_config { 'keystone_authtoken/auth_url': value => $keystone_identity_uri; } + dcdbsync_config { 'cache/auth_uri': value => "${keystone_identity_uri}/v3"; } + } else { + dcdbsync_config { 'keystone_authtoken/auth_url': value => "${keystone_auth_protocol}://${keystone_auth_host}:5000/v3"; } + } + + if $keystone_auth_uri { + dcdbsync_config { 'keystone_authtoken/auth_uri': value => $keystone_auth_uri; } + } else { + dcdbsync_config { + 'keystone_authtoken/auth_uri': value => "${keystone_auth_protocol}://${keystone_auth_host}:5000/v3"; + } + } + + if $keystone_auth_version { + dcdbsync_config { 'keystone_authtoken/auth_version': value => $keystone_auth_version; } + } else { + dcdbsync_config { 'keystone_authtoken/auth_version': ensure => absent; } + } + + if $keystone_enabled { + dcdbsync_config { + 'DEFAULT/auth_strategy': value => 'keystone' ; + } + dcdbsync_config { + 'keystone_authtoken/auth_type': value => $auth_type; + 'keystone_authtoken/project_name': value => $keystone_tenant; + 'keystone_authtoken/username': value => $keystone_user; + 'keystone_authtoken/password': value => $keystone_password, secret=> true; + 'keystone_authtoken/user_domain_name': value => $keystone_user_domain; + 'keystone_authtoken/project_domain_name': value => $keystone_project_domain; + } + + if $keystone_auth_admin_prefix { + validate_re($keystone_auth_admin_prefix, '^(/.+[^/])?$') + dcdbsync_config { + 'keystone_authtoken/auth_admin_prefix': value => $keystone_auth_admin_prefix; + } + } else { + dcdbsync_config { + 'keystone_authtoken/auth_admin_prefix': ensure => absent; + } + } + } + else + { + dcdbsync_config { + 'DEFAULT/auth_strategy': value => 'noauth' ; + } + } + + if $enabled { + $ensure = 'running' + } else { + $ensure = 'stopped' + } + + service { 'dcdbsync-api': + ensure => $ensure, + name => $::dcdbsync::params::api_service, + enable => $enabled, + hasstatus => true, + hasrestart => true, + tag => 'dcdbsync-api', + } + Keystone_endpoint<||> -> Service['dcdbsync-api'] +} diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/init.pp b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/init.pp new file mode 100644 index 0000000000..7e87d6d26f --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/init.pp @@ -0,0 +1,85 @@ +# +# Files in this package are licensed under Apache; see LICENSE file. +# +# Copyright (c) 2019 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# Jan 2019 Creation based off puppet-sysinv +# + +# +# == Parameters +# +# [use_syslog] +# Use syslog for logging. +# (Optional) Defaults to false. +# +# [log_facility] +# Syslog facility to receive log lines. +# (Optional) Defaults to LOG_USER. + +class dcdbsync ( + $database_connection = '', + $database_idle_timeout = 3600, + $database_max_pool_size = 5, + $database_max_overflow = 10, + $package_ensure = 'present', + $use_stderr = false, + $log_file = 'dcdbsync.log', + $log_dir = '/var/log/dcdbsync', + $use_syslog = false, + $log_facility = 'LOG_USER', + $verbose = false, + $debug = false, + $region_name = 'RegionOne', +) { + + include dcdbsync::params + + Package['dcdbsync'] -> Dcdbsync_config<||> + + package { 'dcdbsync': + ensure => $package_ensure, + name => $::dcdbsync::params::package_name, + } + + file { $::dcdbsync::params::conf_file: + ensure => present, + mode => '0600', + require => Package['dcdbsync'], + } + + dcdbsync_config { + 'DEFAULT/verbose': value => $verbose; + 'DEFAULT/debug': value => $debug; + } + + # Automatically add psycopg2 driver to postgresql (only does this if it is missing) + $real_connection = regsubst($database_connection,'^postgresql:','postgresql+psycopg2:') + + dcdbsync_config { + 'database/connection': value => $real_connection, secret => true; + 'database/idle_timeout': value => $database_idle_timeout; + 'database/max_pool_size': value => $database_max_pool_size; + 'database/max_overflow': value => $database_max_overflow; + } + + if $use_syslog { + dcdbsync_config { + 'DEFAULT/use_syslog': value => true; + 'DEFAULT/syslog_log_facility': value => $log_facility; + } + } else { + dcdbsync_config { + 'DEFAULT/use_syslog': value => false; + 'DEFAULT/use_stderr': value => false; + 'DEFAULT/log_file' : value => $log_file; + 'DEFAULT/log_dir' : value => $log_dir; + } + } + + dcdbsync_config { + 'keystone_authtoken/region_name': value => $region_name; + } +} diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/keystone/auth.pp b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/keystone/auth.pp new file mode 100644 index 0000000000..f5cb4dbf7c --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/keystone/auth.pp @@ -0,0 +1,51 @@ +# +# Files in this package are licensed under Apache; see LICENSE file. +# +# Copyright (c) 2019 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# Jan 2019: creation +# + +# == Class: dcdbsync::keystone::auth +# +# Configures dbsync user, service and endpoint in Keystone. +# +class dcdbsync::keystone::auth ( + $password, + $auth_domain, + $auth_name = 'dcdbsync', + $email = 'dcdbsync@localhost', + $tenant = 'services', + $region = 'RegionOne', + $service_description = 'DCOrch DBsync service', + $service_name = 'dcdbsync', + $service_type = 'dcorch-dbsync', + $configure_endpoint = true, + $configure_user = true, + $configure_user_role = true, + $public_url = 'http://127.0.0.1:8219/v1', + $admin_url = 'http://127.0.0.1:8219/v1', + $internal_url = 'http://127.0.0.1:8219/v1', +) { + + $real_service_name = pick($service_name, $auth_name) + + keystone::resource::service_identity { 'dcdbsync': + configure_user => $configure_user, + configure_user_role => $configure_user_role, + configure_endpoint => $configure_endpoint, + service_type => $service_type, + service_description => $service_description, + service_name => $real_service_name, + region => $region, + auth_name => $auth_name, + password => $password, + email => $email, + tenant => $tenant, + public_url => $public_url, + admin_url => $admin_url, + internal_url => $internal_url, + } +} diff --git a/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/params.pp b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/params.pp new file mode 100644 index 0000000000..1e22b49c2b --- /dev/null +++ b/puppet-modules-wrs/puppet-dcdbsync/src/dcdbsync/manifests/params.pp @@ -0,0 +1,29 @@ +# +# Files in this package are licensed under Apache; see LICENSE file. +# +# Copyright (c) 2019 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# + +class dcdbsync::params { + + $conf_dir = '/etc/dcdbsync' + $conf_file = '/etc/dcdbsync/dcdbsync.conf' + + if $::osfamily == 'Debian' { + $package_name = 'distributedcloud-dcdbsync' + $api_package = 'distributedcloud-dcdbsync' + $api_service = 'dcdbsync-api' + + } elsif($::osfamily == 'RedHat') { + + $package_name = 'distributedcloud-dcdbsync' + $api_package = false + $api_service = 'dcdbsync-api' + + } else { + fail("Unsupported osfamily ${::osfamily}") + } +}