sensu-plugins-github 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +14 -14
- data/LICENSE +1 -1
- data/README.md +2 -34
- data/bin/check-user-2fa.rb +104 -0
- data/bin/github-repo-metrics.rb +3 -2
- data/lib/sensu-plugins-github.rb +1 -14
- data/lib/sensu-plugins-github/auth.rb +5 -5
- data/lib/sensu-plugins-github/version.rb +1 -18
- metadata +18 -13
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: bbd54573fea4cce2e2de2e8db098146ca6e17b6f
         | 
| 4 | 
            +
              data.tar.gz: 4b61569c0e93d97e27bfc61ed9c24fac1244a88a
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 702750b75c43deb925c12214538a519f6c086f1291fea8a62127dc547e1a000e7282b054d7403435be4f0db43a41c04b4e7cb10454285530dbb54b98aa78759c
         | 
| 7 | 
            +
              data.tar.gz: d7eb5ccec49aa290d31950de33426f171ac27c3818b8c9c7c7848c33d22bf25d7d22440b4af8439cd649314f651611a29ed3a2e16f4a5f39469791cd389e0dca
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,18 +1,18 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            * yard doc coverage
         | 
| 1 | 
            +
            #Change Log
         | 
| 2 | 
            +
            This project adheres to [Semantic Versioning](http://semver.org/).
         | 
| 4 3 |  | 
| 5 | 
            -
             | 
| 6 | 
            -
            * initial stable release
         | 
| 4 | 
            +
            This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
         | 
| 7 5 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
            * add ability to read got token from file
         | 
| 6 | 
            +
            ## Unreleased][unreleased]
         | 
| 10 7 |  | 
| 11 | 
            -
             | 
| 8 | 
            +
            ## [0.0.4] - 2015-06-02
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            ### Added
         | 
| 11 | 
            +
            - check-user-2fa.rb 
         | 
| 12 | 
            +
                - Check to alert upon org users that do not have 2FA enabled
         | 
| 13 | 
            +
            ### Fixed
         | 
| 14 | 
            +
            - added binstubs
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            ### Changed
         | 
| 17 | 
            +
            - removed cruft from /lib
         | 
| 12 18 |  | 
| 13 | 
            -
            * add metadata to gems
         | 
| 14 | 
            -
            * pin all dev and runtime dependencies
         | 
| 15 | 
            -
            * add chef provisioner to Vagrantfile
         | 
| 16 | 
            -
            * fix rubocop issues
         | 
| 17 | 
            -
            * add new version module
         | 
| 18 | 
            -
            * add new version and bump tasks
         | 
    
        data/LICENSE
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -5,6 +5,7 @@ | |
| 5 5 | 
             
            [](https://codeclimate.com/github/sensu-plugins/sensu-plugins-github)
         | 
| 6 6 | 
             
            [](https://codeclimate.com/github/sensu-plugins/sensu-plugins-github)
         | 
| 7 7 | 
             
            [](https://gemnasium.com/sensu-plugins/sensu-plugins-github)
         | 
| 8 | 
            +
            [ ](https://codeship.com/projects/75587)
         | 
| 8 9 |  | 
| 9 10 | 
             
            ## Functionality
         | 
| 10 11 |  | 
| @@ -21,39 +22,6 @@ Your github token must be placed in *~/.ssh/git_token*, you should not be entrin | |
| 21 22 |  | 
| 22 23 | 
             
            ## Installation
         | 
| 23 24 |  | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
            ```
         | 
| 27 | 
            -
            gem cert --add <(curl -Ls https://raw.githubusercontent.com/sensu-plugins/sensu-plugins.github.io/master/certs/sensu-plugins.pem)
         | 
| 28 | 
            -
            gem install sensu-plugins-github -P MediumSecurity
         | 
| 29 | 
            -
            ```
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            You can also download the key from /certs/ within each repository.
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            #### Rubygems
         | 
| 34 | 
            -
             | 
| 35 | 
            -
            `gem install sensu-plugins-github`
         | 
| 36 | 
            -
             | 
| 37 | 
            -
            #### Bundler
         | 
| 38 | 
            -
             | 
| 39 | 
            -
            Add *sensu-plugins-github* to your Gemfile and run `bundle install` or `bundle update`
         | 
| 40 | 
            -
             | 
| 41 | 
            -
            #### Chef
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            Using the Sensu **sensu_gem** LWRP
         | 
| 44 | 
            -
            ```
         | 
| 45 | 
            -
            sensu_gem 'sensu-plugins-github' do
         | 
| 46 | 
            -
              options('--prerelease')
         | 
| 47 | 
            -
              version '0.0.1.alpha.1'
         | 
| 48 | 
            -
            end
         | 
| 49 | 
            -
            ```
         | 
| 50 | 
            -
             | 
| 51 | 
            -
            Using the Chef **gem_package** resource
         | 
| 52 | 
            -
            ```
         | 
| 53 | 
            -
            gem_package 'sensu-plugins-github' do
         | 
| 54 | 
            -
              options('--prerelease')
         | 
| 55 | 
            -
              version '0.0.1.alpha.1'
         | 
| 56 | 
            -
            end
         | 
| 57 | 
            -
            ```
         | 
| 25 | 
            +
            [Installation and Setup](https://github.com/sensu-plugins/documentation/blob/master/user_docs/installation_instructions.md)
         | 
| 58 26 |  | 
| 59 27 | 
             
            ## Notes
         | 
| @@ -0,0 +1,104 @@ | |
| 1 | 
            +
            #! /usr/bin/env ruby
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            #   check-user-2fa.rb
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # DESCRIPTION:
         | 
| 6 | 
            +
            #   Interacts with Github API to generate metrics about repo.
         | 
| 7 | 
            +
            #
         | 
| 8 | 
            +
            # OUTPUT:
         | 
| 9 | 
            +
            #
         | 
| 10 | 
            +
            # PLATFORMS:
         | 
| 11 | 
            +
            #   All
         | 
| 12 | 
            +
            #
         | 
| 13 | 
            +
            # DEPENDENCIES:
         | 
| 14 | 
            +
            #   gem: sensu-plugin
         | 
| 15 | 
            +
            #   gem: rest-client
         | 
| 16 | 
            +
            #   gem: json
         | 
| 17 | 
            +
            #
         | 
| 18 | 
            +
            # USAGE:
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
            #
         | 
| 21 | 
            +
            # NOTES:
         | 
| 22 | 
            +
            #
         | 
| 23 | 
            +
            #
         | 
| 24 | 
            +
            # LICENSE:
         | 
| 25 | 
            +
            #   Copyright 2015 Yieldbot, devops@yieldbot.com
         | 
| 26 | 
            +
            #   Released under the same terms as Sensu (the MIT license); see LICENSE
         | 
| 27 | 
            +
            #   for details.
         | 
| 28 | 
            +
            #
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            require 'sensu-plugin/check/cli'
         | 
| 31 | 
            +
            require 'rest-client'
         | 
| 32 | 
            +
            require 'json'
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            # $LOAD_PATH.unshift([File.expand_path(File.dirname(__FILE__)), '..', 'lib'].join('/'))
         | 
| 35 | 
            +
            # require 'sensu-plugins-github'
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            class CheckUser2FA < Sensu::Plugin::Check::CLI
         | 
| 38 | 
            +
              option :api,
         | 
| 39 | 
            +
                     short: '-a URL',
         | 
| 40 | 
            +
                     long: '--api URL',
         | 
| 41 | 
            +
                     description: 'Github API URL'
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              option :token,
         | 
| 44 | 
            +
                     short: '-t TOKEN',
         | 
| 45 | 
            +
                     long: '--token TOKEN',
         | 
| 46 | 
            +
                     description: 'Github OAuth Token'
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              option :org,
         | 
| 49 | 
            +
                     short: '-o ORG',
         | 
| 50 | 
            +
                     long: '--org ORG',
         | 
| 51 | 
            +
                     description: 'Github Org',
         | 
| 52 | 
            +
                     required: true
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              option :exclude,
         | 
| 55 | 
            +
                     short: '-x E',
         | 
| 56 | 
            +
                     long: '--exclude-list EXCLUDE_LIST',
         | 
| 57 | 
            +
                     proc:        proc { |a| a.split(/[,;]\s*/) },
         | 
| 58 | 
            +
                     description: 'List of users to exclude'
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              def api_request(resource, api, token) #rubocop:disable all
         | 
| 61 | 
            +
                endpoint = api + resource
         | 
| 62 | 
            +
                request = RestClient::Resource.new(endpoint, timeout: 30)
         | 
| 63 | 
            +
                headers = {}
         | 
| 64 | 
            +
                headers[:Authorization] = "token #{ token }"
         | 
| 65 | 
            +
                JSON.parse(request.get(headers), symbolize_names: true)
         | 
| 66 | 
            +
              rescue RestClient::ResourceNotFound
         | 
| 67 | 
            +
                warning "Resource not found (or not accessible): #{resource}"
         | 
| 68 | 
            +
              rescue Errno::ECONNREFUSED
         | 
| 69 | 
            +
                warning 'Connection refused'
         | 
| 70 | 
            +
              rescue RestClient::RequestFailed => e
         | 
| 71 | 
            +
                # #YELLOW Better handle github rate limiting case
         | 
| 72 | 
            +
                # (with data from e.response.headers)
         | 
| 73 | 
            +
                warning "Request failed: #{e.inspect}"
         | 
| 74 | 
            +
              rescue RestClient::RequestTimeout
         | 
| 75 | 
            +
                warning 'Connection timed out'
         | 
| 76 | 
            +
              rescue RestClient::Unauthorized
         | 
| 77 | 
            +
                warning 'Missing or incorrect Github API credentials'
         | 
| 78 | 
            +
              rescue JSON::ParserError
         | 
| 79 | 
            +
                warning 'Github API returned invalid JSON'
         | 
| 80 | 
            +
              end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
              def run
         | 
| 83 | 
            +
                # Set the token from the commandline or read it in from a file.  Preference
         | 
| 84 | 
            +
                # is given towards the later and at some point it may be enforced.
         | 
| 85 | 
            +
                token = config[:token] || SensuPluginsGithub::Auth.acquire_git_token
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                # This is the default url and will be fine for most people,
         | 
| 88 | 
            +
                # github enterprise customers will have a url based upon the org name and
         | 
| 89 | 
            +
                # will need to set it at the commandline.
         | 
| 90 | 
            +
                api_url = config[:api] || 'https://api.github.com'
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                # List to hold users who do not have 2FA
         | 
| 93 | 
            +
                user_list = []
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                exclude_list = config[:exclude] || ''
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                data = api_request("/orgs/#{config[:org]}/members?filter=2fa_disabled", api_url, token)
         | 
| 98 | 
            +
                data.each do |d|
         | 
| 99 | 
            +
                  user_list << d[:login] unless exclude_list.include?(d[:login])
         | 
| 100 | 
            +
                end
         | 
| 101 | 
            +
                critical("The following users don't have 2FA enabled: #{ user_list }") unless user_list == []
         | 
| 102 | 
            +
                ok
         | 
| 103 | 
            +
              end
         | 
| 104 | 
            +
            end
         | 
    
        data/bin/github-repo-metrics.rb
    CHANGED
    
    | @@ -14,7 +14,6 @@ | |
| 14 14 | 
             
            # DEPENDENCIES:
         | 
| 15 15 | 
             
            #   gem: sensu-plugin
         | 
| 16 16 | 
             
            #   gem: rest-client
         | 
| 17 | 
            -
            #   gem: json
         | 
| 18 17 | 
             
            #
         | 
| 19 18 | 
             
            # USAGE:
         | 
| 20 19 | 
             
            #
         | 
| @@ -31,7 +30,9 @@ | |
| 31 30 | 
             
            require 'sensu-plugin/metric/cli'
         | 
| 32 31 | 
             
            require 'rest-client'
         | 
| 33 32 | 
             
            require 'json'
         | 
| 34 | 
            -
             | 
| 33 | 
            +
             | 
| 34 | 
            +
            # $:.unshift([File.expand_path(File.dirname(__FILE__)), '..', 'lib'].join('/'))
         | 
| 35 | 
            +
            # require 'sensu-plugins-github'
         | 
| 35 36 |  | 
| 36 37 | 
             
            #
         | 
| 37 38 | 
             
            # AggregateMetrics
         | 
    
        data/lib/sensu-plugins-github.rb
    CHANGED
    
    
| @@ -2,11 +2,11 @@ | |
| 2 2 | 
             
            # Acquire auth for Github
         | 
| 3 3 | 
             
            #
         | 
| 4 4 | 
             
            module SensuPluginsGithub
         | 
| 5 | 
            -
               | 
| 6 | 
            -
                 | 
| 7 | 
            -
                   | 
| 8 | 
            -
             | 
| 9 | 
            -
                   | 
| 5 | 
            +
              module Auth
         | 
| 6 | 
            +
                def self.acquire_git_token
         | 
| 7 | 
            +
                  File.readlines(File.expand_path('~/.ssh/git_token')).each do |line|
         | 
| 8 | 
            +
                    @github_token = line
         | 
| 9 | 
            +
                  end
         | 
| 10 10 | 
             
                end
         | 
| 11 11 | 
             
              end
         | 
| 12 12 | 
             
            end
         | 
| @@ -1,28 +1,11 @@ | |
| 1 1 | 
             
            require 'json'
         | 
| 2 2 |  | 
| 3 | 
            -
            # encoding: utf-8
         | 
| 4 3 | 
             
            module SensuPluginsGithub
         | 
| 5 | 
            -
              # This defines the version of the gem
         | 
| 6 4 | 
             
              module Version
         | 
| 7 5 | 
             
                MAJOR = 0
         | 
| 8 6 | 
             
                MINOR = 0
         | 
| 9 | 
            -
                PATCH =  | 
| 7 | 
            +
                PATCH = 4
         | 
| 10 8 |  | 
| 11 9 | 
             
                VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                NAME   = 'sensu-plugins-github'
         | 
| 14 | 
            -
                BANNER = "#{NAME} v%s"
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                module_function
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                def version
         | 
| 19 | 
            -
                  format(BANNER, VER_STRING)
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                def json_version
         | 
| 23 | 
            -
                  {
         | 
| 24 | 
            -
                    'version' => VER_STRING
         | 
| 25 | 
            -
                  }.to_json
         | 
| 26 | 
            -
                end
         | 
| 27 10 | 
             
              end
         | 
| 28 11 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,10 +1,10 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sensu-plugins-github
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 | 
            -
            -  | 
| 7 | 
            +
            - Sensu Plugins and contributors
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain:
         | 
| @@ -30,7 +30,7 @@ cert_chain: | |
| 30 30 | 
             
              8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
         | 
| 31 31 | 
             
              HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
         | 
| 32 32 | 
             
              -----END CERTIFICATE-----
         | 
| 33 | 
            -
            date: 2015- | 
| 33 | 
            +
            date: 2015-06-03 00:00:00.000000000 Z
         | 
| 34 34 | 
             
            dependencies:
         | 
| 35 35 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 36 36 | 
             
              name: json
         | 
| @@ -92,16 +92,16 @@ dependencies: | |
| 92 92 | 
             
              name: rubocop
         | 
| 93 93 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 94 94 | 
             
                requirements:
         | 
| 95 | 
            -
                - -  | 
| 95 | 
            +
                - - "~>"
         | 
| 96 96 | 
             
                  - !ruby/object:Gem::Version
         | 
| 97 | 
            -
                    version: 0. | 
| 97 | 
            +
                    version: '0.30'
         | 
| 98 98 | 
             
              type: :development
         | 
| 99 99 | 
             
              prerelease: false
         | 
| 100 100 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 101 101 | 
             
                requirements:
         | 
| 102 | 
            -
                - -  | 
| 102 | 
            +
                - - "~>"
         | 
| 103 103 | 
             
                  - !ruby/object:Gem::Version
         | 
| 104 | 
            -
                    version: 0. | 
| 104 | 
            +
                    version: '0.30'
         | 
| 105 105 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 106 106 | 
             
              name: rspec
         | 
| 107 107 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -200,15 +200,18 @@ dependencies: | |
| 200 200 | 
             
                - - "~>"
         | 
| 201 201 | 
             
                  - !ruby/object:Gem::Version
         | 
| 202 202 | 
             
                    version: '0.10'
         | 
| 203 | 
            -
            description: Sensu plugins for  | 
| 203 | 
            +
            description: Sensu plugins for Github
         | 
| 204 204 | 
             
            email: "<sensu-users@googlegroups.com>"
         | 
| 205 | 
            -
            executables: | 
| 205 | 
            +
            executables:
         | 
| 206 | 
            +
            - github-repo-metrics.rb
         | 
| 207 | 
            +
            - check-user-2fa.rb
         | 
| 206 208 | 
             
            extensions: []
         | 
| 207 209 | 
             
            extra_rdoc_files: []
         | 
| 208 210 | 
             
            files:
         | 
| 209 211 | 
             
            - CHANGELOG.md
         | 
| 210 212 | 
             
            - LICENSE
         | 
| 211 213 | 
             
            - README.md
         | 
| 214 | 
            +
            - bin/check-user-2fa.rb
         | 
| 212 215 | 
             
            - bin/github-repo-metrics.rb
         | 
| 213 216 | 
             
            - lib/sensu-plugins-github.rb
         | 
| 214 217 | 
             
            - lib/sensu-plugins-github/auth.rb
         | 
| @@ -220,7 +223,10 @@ metadata: | |
| 220 223 | 
             
              maintainer: "@mattyjones"
         | 
| 221 224 | 
             
              development_status: active
         | 
| 222 225 | 
             
              production_status: unstable - testing recommended
         | 
| 223 | 
            -
             | 
| 226 | 
            +
              release_draft: 'false'
         | 
| 227 | 
            +
              release_prerelease: 'false'
         | 
| 228 | 
            +
            post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
         | 
| 229 | 
            +
              in /etc/default/sensu
         | 
| 224 230 | 
             
            rdoc_options: []
         | 
| 225 231 | 
             
            require_paths:
         | 
| 226 232 | 
             
            - lib
         | 
| @@ -236,9 +242,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 236 242 | 
             
                  version: '0'
         | 
| 237 243 | 
             
            requirements: []
         | 
| 238 244 | 
             
            rubyforge_project: 
         | 
| 239 | 
            -
            rubygems_version: 2. | 
| 245 | 
            +
            rubygems_version: 2.4.6
         | 
| 240 246 | 
             
            signing_key: 
         | 
| 241 247 | 
             
            specification_version: 4
         | 
| 242 | 
            -
            summary: Sensu plugins for  | 
| 248 | 
            +
            summary: Sensu plugins for Github
         | 
| 243 249 | 
             
            test_files: []
         | 
| 244 | 
            -
            has_rdoc: 
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |