diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c259be3..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -Gemfile.lock -.bundled_gems/ -*.swp diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 019213a..0000000 --- a/Gemfile +++ /dev/null @@ -1,15 +0,0 @@ -source 'https://rubygems.org' - -if File.exists?('/home/zuul/src/git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper') - gem_checkout_method = {:path => '/home/zuul/src/git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper'} -else - gem_checkout_method = {:git => 'https://git.openstack.org/openstack-infra/puppet-openstack_infra_spec_helper'} -end -gem_checkout_method[:require] = false - -group :development, :test, :system_tests do - gem 'puppet-openstack_infra_spec_helper', - gem_checkout_method -end - -# vim:ft=ruby diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d645695..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +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. - - 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/README.md b/README.md deleted file mode 100644 index 3ac5026..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# OpenStack Accessbot Module - -## Overview - -Configures Accessbot. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..c4ba6c6 --- /dev/null +++ b/README.rst @@ -0,0 +1,9 @@ +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 +service-discuss@lists.opendev.org or join #opendev on Freenode. diff --git a/Rakefile b/Rakefile deleted file mode 100644 index ff1f0d7..0000000 --- a/Rakefile +++ /dev/null @@ -1,8 +0,0 @@ -require 'rubygems' -require 'puppetlabs_spec_helper/rake_tasks' -require 'puppet-lint/tasks/puppet-lint' -PuppetLint.configuration.fail_on_warnings = true -PuppetLint.configuration.send('disable_80chars') -PuppetLint.configuration.send('disable_autoloader_layout') -PuppetLint.configuration.send('disable_class_inherits_from_params_class') -PuppetLint.configuration.send('disable_class_parameter_defaults') diff --git a/bindep.txt b/bindep.txt deleted file mode 100644 index 7cdd58e..0000000 --- a/bindep.txt +++ /dev/null @@ -1,11 +0,0 @@ -# This is a cross-platform list tracking distribution packages needed by tests; -# see http://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] diff --git a/files/accessbot.py b/files/accessbot.py deleted file mode 100755 index 7c968e3..0000000 --- a/files/accessbot.py +++ /dev/null @@ -1,248 +0,0 @@ -#! /usr/bin/env python - -# Copyright 2011, 2013-2014 OpenStack Foundation -# Copyright 2012 Hewlett-Packard Development Company, L.P. -# -# 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. - -import ConfigParser -import argparse -import irc.client -import logging -import ssl -import sys -import time -import yaml - -logging.basicConfig( - format='%(asctime)s [%(levelname)s] %(name)s - %(message)s', - level=logging.DEBUG) - - -class SetAccess(irc.client.SimpleIRCClient): - log = logging.getLogger("setaccess") - - def __init__(self, config, noop, nick, password, server, port): - irc.client.SimpleIRCClient.__init__(self) - self.identify_msg_cap = False - self.config = config - self.nick = nick - self.password = password - self.server = server - self.port = int(port) - self.noop = noop - self.channels = [x['name'] for x in self.config['channels']] - self.current_channel = None - self.current_list = [] - self.changes = [] - self.identified = False - if self.port == 6697: - factory = irc.connection.Factory(wrapper=ssl.wrap_socket) - self.connect(self.server, self.port, self.nick, - connect_factory=factory) - else: - self.connect(self.server, self.port, self.nick) - - def on_disconnect(self, connection, event): - sys.exit(0) - - def on_welcome(self, c, e): - self.identify_msg_cap = False - self.log.debug("Requesting identify-msg capability") - c.cap('REQ', 'identify-msg') - c.cap('END') - - def on_cap(self, c, e): - self.log.debug("Received cap response %s" % repr(e.arguments)) - if e.arguments[0] == 'ACK' and 'identify-msg' in e.arguments[1]: - self.log.debug("identify-msg cap acked") - self.identify_msg_cap = True - self.log.debug("Identifying to nickserv") - c.privmsg("nickserv", "identify %s " % self.password) - - def on_privnotice(self, c, e): - if not self.identify_msg_cap: - self.log.debug("Ignoring message because identify-msg " - "cap not enabled") - return - nick = e.source.split('!')[0] - auth = e.arguments[0][0] - msg = e.arguments[0][1:] - if auth == '+' and nick == 'NickServ' and not self.identified: - if msg.startswith('You are now identified'): - self.identified = True - # Prejoin and set ourselves as op in these channels, - # to facilitate +f forwarding. - for channel in self.config.get('op_channels', []): - c.join("#%s" % channel) - c.privmsg("chanserv", "op #%s" % channel) - self.advance() - return - if auth != '+' or nick != 'ChanServ': - self.log.debug("Ignoring message from unauthenticated " - "user %s" % nick) - return - self.failed = False - self.advance(msg) - - def _get_access_list(self, channel_name): - ret = {} - alumni = [] - mode = '' - channel = None - for c in self.config['channels']: - if c['name'] == channel_name: - channel = c - if channel is None: - raise Exception("Unknown channel %s" % (channel_name,)) - mask = '' - for access, nicks in (self.config['global'].items() + - channel.items()): - if access == 'mask': - mask = self.config['access'].get(nicks) - continue - if access == 'alumni': - alumni += nicks - continue - if access == 'mode': - mode = nicks - continue - flags = self.config['access'].get(access) - if flags is None: - continue - for nick in nicks: - ret[nick] = flags - return mask, ret, alumni, mode - - def _get_access_change(self, current, target, mask): - remove = '' - add = '' - change = '' - for x in current: - if x in '+-': - continue - if target: - if x not in target: - remove += x - else: - if x not in mask: - remove += x - for x in target: - if x in '+-': - continue - if x not in current: - add += x - if remove: - change += '-' + remove - if add: - change += '+' + add - return change - - def _get_access_changes(self): - mask, target, alumni, mode = self._get_access_list(self.current_channel) - self.log.debug("Mask for %s: %s" % (self.current_channel, mask)) - self.log.debug("Target for %s: %s" % (self.current_channel, target)) - all_nicks = set() - global_alumni = self.config.get('alumni', {}) - global_mode = self.config.get('mode', '') - current = {} - changes = [] - for nick, flags, msg in self.current_list: - if nick in global_alumni or nick in alumni : - self.log.debug("%s is an alumni; removing access", nick) - changes.append('access #%s del %s' % (self.current_channel, nick)) - continue - all_nicks.add(nick) - current[nick] = flags - for nick in target.keys(): - all_nicks.add(nick) - for nick in all_nicks: - change = self._get_access_change(current.get(nick, ''), - target.get(nick, ''), mask) - if change: - changes.append('access #%s add %s %s' % (self.current_channel, - nick, change)) - - # Set the mode. Note we always just hard-set the mode for - # simplicity (per the man page mlock always clears and sets - # anyway). Channel mode overrides global mode. - # - # Note for +f you need to be op in the target channel; see - # op_channel option. - if not mode and global_mode: - mode = global_mode - self.log.debug("Setting mode to : %s" % mode) - if mode: - changes.append('set #%s mlock %s' % (self.current_channel, mode)) - - return changes - - def advance(self, msg=None): - if self.changes: - if self.noop: - for change in self.changes: - self.log.info('NOOP: ' + change) - self.changes = [] - else: - change = self.changes.pop() - self.log.info(change) - self.connection.privmsg('chanserv', change) - time.sleep(1) - return - if not self.current_channel: - if not self.channels: - self.connection.quit() - return - self.current_channel = self.channels.pop() - self.current_list = [] - self.connection.privmsg('chanserv', 'access list #%s' % - self.current_channel) - time.sleep(1) - return - if msg.startswith('End of'): - self.changes = self._get_access_changes() - self.current_channel = None - self.advance() - return - parts = msg.split() - if parts[2].startswith('+'): - self.current_list.append((parts[1], parts[2], msg)) - - -def main(): - parser = argparse.ArgumentParser(description='IRC channel access check') - parser.add_argument('-c', dest='config', nargs=1, - help='specify the config file') - parser.add_argument('-l', dest='channels', - default='/etc/irc/channels.yaml', - help='path to the channel config') - parser.add_argument('--noop', dest='noop', - action='store_true', - help="Don't make any changes") - args = parser.parse_args() - - config = ConfigParser.ConfigParser() - config.read(args.config) - - channels = yaml.load(open(args.channels)) - - a = SetAccess(channels, args.noop, - config.get('ircbot', 'nick'), - config.get('ircbot', 'pass'), - config.get('ircbot', 'server'), - config.get('ircbot', 'port')) - a.start() - - -if __name__ == "__main__": - main() diff --git a/files/checkaccess.py b/files/checkaccess.py deleted file mode 100755 index 4038404..0000000 --- a/files/checkaccess.py +++ /dev/null @@ -1,154 +0,0 @@ -#! /usr/bin/env python - -# Copyright 2011, 2013-2014 OpenStack Foundation -# Copyright 2012 Hewlett-Packard Development Company, L.P. -# -# 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. - -import argparse -import irc.client -import logging -import random -import string -import ssl -import sys -import time -import yaml - - -logging.basicConfig(level=logging.INFO) - - -class CheckAccess(irc.client.SimpleIRCClient): - log = logging.getLogger("checkaccess") - - def __init__(self, channels, nick, flags): - irc.client.SimpleIRCClient.__init__(self) - self.identify_msg_cap = False - self.channels = channels - self.nick = nick - self.flags = flags - self.current_channel = None - self.current_list = [] - self.failed = True - - def on_disconnect(self, connection, event): - if self.failed: - sys.exit(1) - else: - sys.exit(0) - - def on_welcome(self, c, e): - self.identify_msg_cap = False - self.log.debug("Requesting identify-msg capability") - c.cap('REQ', 'identify-msg') - c.cap('END') - - def on_cap(self, c, e): - self.log.debug("Received cap response %s" % repr(e.arguments)) - if e.arguments[0] == 'ACK' and 'identify-msg' in e.arguments[1]: - self.log.debug("identify-msg cap acked") - self.identify_msg_cap = True - self.advance() - - def on_privnotice(self, c, e): - if not self.identify_msg_cap: - self.log.debug("Ignoring message because identify-msg " - "cap not enabled") - return - nick = e.source.split('!')[0] - auth = e.arguments[0][0] - msg = e.arguments[0][1:] - if auth != '+' or nick != 'ChanServ': - self.log.debug("Ignoring message from unauthenticated " - "user %s" % nick) - return - self.failed = False - self.advance(msg) - - def advance(self, msg=None): - if not self.current_channel: - if not self.channels: - self.connection.quit() - return - self.current_channel = self.channels.pop() - self.current_list = [] - self.connection.privmsg('chanserv', 'access list %s' % - self.current_channel) - time.sleep(1) - return - if msg.startswith('End of'): - found = False - for nick, flags, msg in self.current_list: - if nick == self.nick and flags == self.flags: - self.log.info('%s access ok on %s' % - (self.nick, self.current_channel)) - found = True - break - if not found: - self.failed = True - print ("%s does not have permissions on %s:" % - (self.nick, self.current_channel)) - for nick, flags, msg in self.current_list: - print msg - print - self.current_channel = None - self.advance() - return - parts = msg.split() - self.current_list.append((parts[1], parts[2], msg)) - - -def main(): - parser = argparse.ArgumentParser(description='IRC channel access check') - parser.add_argument('-l', dest='config', - default='/etc/accessbot/channels.yaml', - help='path to the config file') - parser.add_argument('-s', dest='server', - default='chat.freenode.net', - help='IRC server') - parser.add_argument('-p', dest='port', - default=6697, - help='IRC port') - parser.add_argument('nick', - help='the nick for which access should be validated') - args = parser.parse_args() - - config = yaml.load(open(args.config)) - channels = [] - for channel in config['channels']: - channels.append('#' + channel['name']) - - access_level = None - for level, names in config['global'].items(): - if args.nick in names: - access_level = level - if access_level is None: - raise Exception("Unable to determine global access level for %s" % - args.nick) - flags = config['access'][access_level] - - a = CheckAccess(channels, args.nick, flags) - mynick = ''.join(random.choice(string.ascii_uppercase) - for x in range(16)) - port = int(args.port) - if port == 6697: - factory = irc.connection.Factory(wrapper=ssl.wrap_socket) - a.connect(args.server, int(args.port), mynick, - connect_factory=factory) - else: - a.connect(args.server, int(args.port), mynick) - a.start() - -if __name__ == "__main__": - main() diff --git a/manifests/init.pp b/manifests/init.pp deleted file mode 100644 index 21b6e74..0000000 --- a/manifests/init.pp +++ /dev/null @@ -1,102 +0,0 @@ -# == Class: accessbot -# -class accessbot( - $channel_file, - $nick, - $password, - $server, -) { - - user { 'accessbot': - ensure => present, - home => '/home/accessbot', - shell => '/bin/bash', - gid => 'accessbot', - managehome => true, - require => Group['accessbot'], - } - - group { 'accessbot': - ensure => present, - } - - # A lot of things need yaml, be conservative requiring this package to avoid - # conflicts with other modules. - if ! defined(Package['python-yaml']) { - package { 'python-yaml': - ensure => present, - } - } - - package { 'irc': - ensure => installed, - provider => openstack_pip, - } - - exec { 'run_accessbot' : - command => '/usr/local/bin/accessbot -c /etc/accessbot/accessbot.config -l /etc/accessbot/channels.yaml >> /var/log/accessbot/accessbot.log 2>&1', - path => '/usr/local/bin:/usr/bin:/bin/', - user => 'accessbot', - refreshonly => true, - subscribe => File['/etc/accessbot/channels.yaml'], - require => [File['/etc/accessbot/channels.yaml'], - File['/etc/accessbot/accessbot.config'], - File['/usr/local/bin/accessbot'], - Package['irc']], - } - - file { '/etc/accessbot': - ensure => directory, - } - - file { '/var/log/accessbot': - ensure => directory, - owner => 'accessbot', - group => 'accessbot', - mode => '0775', - require => User['accessbot'], - } - - include ::logrotate - logrotate::file { 'accessbot.log': - ensure => present, - log => '/var/log/accessbot/accessbot.log', - options => ['compress', - 'copytruncate', - 'delaycompress', - 'missingok', - 'rotate 7', - 'daily', - 'notifempty', - ], - } - - file { '/etc/accessbot/accessbot.config': - ensure => present, - content => template('accessbot/accessbot.config.erb'), - group => 'accessbot', - mode => '0440', - owner => 'root', - replace => true, - require => User['accessbot'], - } - - file { '/etc/accessbot/channels.yaml': - ensure => present, - source => $channel_file, - group => 'accessbot', - mode => '0440', - owner => 'root', - replace => true, - require => User['accessbot'], - } - - file { '/usr/local/bin/accessbot': - ensure => present, - source => 'puppet:///modules/accessbot/accessbot.py', - mode => '0555', - owner => 'root', - group => 'root', - replace => true, - } -} diff --git a/metadata.json b/metadata.json deleted file mode 100644 index 2e278fa..0000000 --- a/metadata.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "openstackinfra-accessbot", - "version": "0.0.1", - "author": "OpenStack CI", - "summary": "Puppet module for Accessbot", - "license": "Apache 2.0", - "source": "https://git.openstack.org/openstack-infra/puppet-accessbot.git", - "project_page": "http://docs.openstack.org/infra/system-config/", - "issues_url": "https://storyboard.openstack.org/#!/project/792", - "dependencies": [ - ] -} diff --git a/spec/acceptance/basic_spec.rb b/spec/acceptance/basic_spec.rb deleted file mode 100755 index 5f3161b..0000000 --- a/spec/acceptance/basic_spec.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'puppet-openstack_infra_spec_helper/spec_helper_acceptance' - -describe 'basic accessbot' do - - if fact('osfamily') == 'Debian' - - context 'default parameters' do - - it 'should work with no errors' do - - base_path = File.dirname(__FILE__) - pp_path = File.join(base_path, 'fixtures', 'default.pp') - pp = File.read(pp_path) - - # Run it twice and test for idempotency - apply_manifest(pp, :catch_failures => true) - apply_manifest(pp, :catch_changes => true) - end - - end - - context 'installation of packages' do - - describe package('python-yaml') do - it { should be_installed } - end - - end - - context 'files and directories' do - - describe file('/etc/accessbot/accessbot.config') do - it { should be_file } - it { should be_owned_by 'root' } - it { should be_mode 440 } - it { should be_grouped_into 'accessbot' } - end - - end - - end - -end diff --git a/spec/acceptance/fixtures/default.pp b/spec/acceptance/fixtures/default.pp deleted file mode 100644 index f0745a4..0000000 --- a/spec/acceptance/fixtures/default.pp +++ /dev/null @@ -1,12 +0,0 @@ -file { '/etc/channels.yaml': - ensure => file, - content => "access:\n nobody: +v\nglobal:\n nobody:\n - nobody\nchannels:\n - name: openstack-rainbow-unicorn-pals", -} - -class { '::accessbot': - nick => 'accessbot-test', - password => 'infraR4lez', - server => 'irc.freenode.net', - channel_file => '/etc/channels.yaml', - require => File['/etc/channels.yaml'], -} diff --git a/spec/acceptance/nodesets/default.yml b/spec/acceptance/nodesets/default.yml deleted file mode 100644 index 3bb3e62..0000000 --- a/spec/acceptance/nodesets/default.yml +++ /dev/null @@ -1,11 +0,0 @@ -HOSTS: - ubuntu-server-1404-x64: - roles: - - master - platform: ubuntu-14.04-amd64 - box: puppetlabs/ubuntu-14.04-64-nocm - box_url: https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm - hypervisor: vagrant -CONFIG: - log_level: debug - type: git diff --git a/spec/acceptance/nodesets/nodepool-centos7.yml b/spec/acceptance/nodesets/nodepool-centos7.yml deleted file mode 100644 index c552874..0000000 --- a/spec/acceptance/nodesets/nodepool-centos7.yml +++ /dev/null @@ -1,10 +0,0 @@ -HOSTS: - centos-70-x64: - roles: - - master - platform: el-7-x86_64 - hypervisor: none - ip: 127.0.0.1 -CONFIG: - type: foss - set_env: false diff --git a/spec/acceptance/nodesets/nodepool-trusty.yml b/spec/acceptance/nodesets/nodepool-trusty.yml deleted file mode 100644 index 9fc624e..0000000 --- a/spec/acceptance/nodesets/nodepool-trusty.yml +++ /dev/null @@ -1,10 +0,0 @@ -HOSTS: - ubuntu-14.04-amd64: - roles: - - master - platform: ubuntu-14.04-amd64 - hypervisor: none - ip: 127.0.0.1 -CONFIG: - type: foss - set_env: false diff --git a/spec/acceptance/nodesets/nodepool-xenial.yml b/spec/acceptance/nodesets/nodepool-xenial.yml deleted file mode 100644 index 99dd318..0000000 --- a/spec/acceptance/nodesets/nodepool-xenial.yml +++ /dev/null @@ -1,10 +0,0 @@ -HOSTS: - ubuntu-16.04-amd64: - roles: - - master - platform: ubuntu-16.04-amd64 - hypervisor: none - ip: 127.0.0.1 -CONFIG: - type: foss - set_env: false diff --git a/templates/accessbot.config.erb b/templates/accessbot.config.erb deleted file mode 100644 index 032f67b..0000000 --- a/templates/accessbot.config.erb +++ /dev/null @@ -1,5 +0,0 @@ -[ircbot] -nick=<%= @nick %> -pass=<%= @password %> -server=<%= @server %> -port=6697