hiera-mysql-json-backend-jruby 1.0.1 → 1.1.0
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
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5c96d6e30cfeffa3fa425bfe7346b80d22a1f77b
         | 
| 4 | 
            +
              data.tar.gz: 88938c126d8489901ee3a5fd883c52840bdd18a1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 81d60c95edcfecca8cec2cb6d90be52cc301ebd6a44a975b98a29924ae42218911699efef5fc8d2d9794db7f9420faf2e7563c9e265f45669a5635991db511d6
         | 
| 7 | 
            +
              data.tar.gz: 593f3b3910733414be38f96c2fd3e15812ce3f577c1cf88e6d7a7b9fa61248e1acd1e0c11a53a0352167693fee0aa5b4f31451dbd814afe3182c4f466a38bf18
         | 
| @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |gem|
         | 
| 4 4 | 
             
              gem.name          = "hiera-mysql-json-backend-jruby"
         | 
| 5 | 
            -
              gem.version       = "1.0 | 
| 5 | 
            +
              gem.version       = "1.1.0"
         | 
| 6 6 | 
             
              gem.authors       = ["Hostnet"]
         | 
| 7 7 | 
             
              gem.email         = ["opensource@hostnet.nl"]
         | 
| 8 8 | 
             
              gem.description   = %q{Alternative MySQL backend with json support for hiera}
         | 
| @@ -2,7 +2,7 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |gem|
         | 
| 4 4 | 
             
              gem.name          = "hiera-mysql-json-backend"
         | 
| 5 | 
            -
              gem.version       = "1.0 | 
| 5 | 
            +
              gem.version       = "1.1.0"
         | 
| 6 6 | 
             
              gem.authors       = ["Hostnet"]
         | 
| 7 7 | 
             
              gem.email         = ["opensource@hostnet.nl"]
         | 
| 8 8 | 
             
              gem.description   = %q{Alternative MySQL backend with json support for hiera}
         | 
| @@ -18,7 +18,25 @@ class Hiera | |
| 18 18 |  | 
| 19 19 | 
             
                    @cache = cache || Filecache.new
         | 
| 20 20 |  | 
| 21 | 
            -
                    Hiera.debug( | 
| 21 | 
            +
                    Hiera.debug('Hiera mysql_json initialized')
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  def should_lookup?(constraints, scope)
         | 
| 25 | 
            +
                    return true unless constraints.is_a?(Hash)
         | 
| 26 | 
            +
                    should_lookup = false
         | 
| 27 | 
            +
                    constraints.each do |item, matchers|
         | 
| 28 | 
            +
                      next unless scope.exist?(item.to_s)
         | 
| 29 | 
            +
                      if scope[item.to_s] =~ compile_regexes(matchers)
         | 
| 30 | 
            +
                        should_lookup = true
         | 
| 31 | 
            +
                        break
         | 
| 32 | 
            +
                      end
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
                    should_lookup
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  def compile_regexes(regexes)
         | 
| 38 | 
            +
                    res = regexes.map { |re| Regexp.compile(re) }
         | 
| 39 | 
            +
                    Regexp.union(res)
         | 
| 22 40 | 
             
                  end
         | 
| 23 41 |  | 
| 24 42 | 
             
                  def lookup(key, scope, order_override, resolution_type)
         | 
| @@ -28,9 +46,11 @@ class Hiera | |
| 28 46 | 
             
                    # so hiera('myvalue', 'test1') returns [nil,nil,nil,nil]
         | 
| 29 47 | 
             
                    results = nil
         | 
| 30 48 |  | 
| 31 | 
            -
                    Hiera.debug("looking up #{key} in  | 
| 49 | 
            +
                    Hiera.debug("looking up #{key} in mysql_json Backend")
         | 
| 32 50 | 
             
                    Hiera.debug("resolution type is #{resolution_type}")
         | 
| 33 51 |  | 
| 52 | 
            +
                    return nil unless should_lookup?(Config[:mysql_json][:only_for], scope)
         | 
| 53 | 
            +
             | 
| 34 54 | 
             
                    Backend.datasources(scope, order_override) do |source|
         | 
| 35 55 | 
             
                      Hiera.debug("Looking for data source #{source}")
         | 
| 36 56 | 
             
                      sqlfile = Backend.datafile(:mysql_json, scope, source, "sql") || next
         | 
| @@ -41,20 +61,20 @@ class Hiera | |
| 41 61 | 
             
                      end
         | 
| 42 62 |  | 
| 43 63 | 
             
                      mysql_config = data.fetch(:dbconfig, {})
         | 
| 44 | 
            -
                      mysql_host = mysql_config.fetch(:host, nil) || Config[: | 
| 45 | 
            -
                      mysql_user = mysql_config.fetch(:user, nil) || Config[: | 
| 46 | 
            -
                      mysql_pass = mysql_config.fetch(:pass, nil) || Config[: | 
| 47 | 
            -
                      mysql_port = mysql_config.fetch(:port, nil) || Config[: | 
| 48 | 
            -
                      mysql_database = mysql_config.fetch(:database, nil) || Config[: | 
| 64 | 
            +
                      mysql_host = mysql_config.fetch(:host, nil) || Config[:mysql_json][:host] || 'localhost'
         | 
| 65 | 
            +
                      mysql_user = mysql_config.fetch(:user, nil) || Config[:mysql_json][:user]
         | 
| 66 | 
            +
                      mysql_pass = mysql_config.fetch(:pass, nil) || Config[:mysql_json][:pass]
         | 
| 67 | 
            +
                      mysql_port = mysql_config.fetch(:port, nil) || Config[:mysql_json][:port] || '3306'
         | 
| 68 | 
            +
                      mysql_database = mysql_config.fetch(:database, nil) || Config[:mysql_json][:database]
         | 
| 49 69 |  | 
| 50 70 | 
             
                      connection_hash = {
         | 
| 51 | 
            -
                        : | 
| 52 | 
            -
                        : | 
| 53 | 
            -
                        : | 
| 54 | 
            -
                        : | 
| 55 | 
            -
                        : | 
| 56 | 
            -
                        : | 
| 57 | 
            -
             | 
| 71 | 
            +
                        host:      mysql_host,
         | 
| 72 | 
            +
                        username:  mysql_user,
         | 
| 73 | 
            +
                        password:  mysql_pass,
         | 
| 74 | 
            +
                        database:  mysql_database,
         | 
| 75 | 
            +
                        port:      mysql_port,
         | 
| 76 | 
            +
                        reconnect: true
         | 
| 77 | 
            +
                      }
         | 
| 58 78 |  | 
| 59 79 | 
             
                      Hiera.debug("data #{data.inspect}")
         | 
| 60 80 | 
             
                      next if data.empty?
         | 
| @@ -70,6 +90,7 @@ class Hiera | |
| 70 90 | 
             
                      begin
         | 
| 71 91 | 
             
                        new_answer = JSON.parse(sql_results[0]['value'])
         | 
| 72 92 | 
             
                      rescue
         | 
| 93 | 
            +
                        raise Exception, "JSON parse error for key '#{key}'." unless Config[:mysql_json][:ignore_json_parse_errors]
         | 
| 73 94 | 
             
                        Hiera.debug("Miserable failure while looking for #{key}.")
         | 
| 74 95 | 
             
                        next
         | 
| 75 96 | 
             
                      end
         | 
| @@ -88,19 +109,18 @@ class Hiera | |
| 88 109 | 
             
                        break
         | 
| 89 110 | 
             
                      end
         | 
| 90 111 | 
             
                    end
         | 
| 91 | 
            -
                     | 
| 112 | 
            +
                    results
         | 
| 92 113 | 
             
                  end
         | 
| 93 114 |  | 
| 94 | 
            -
             | 
| 95 115 | 
             
                  def query(connection_hash, query)
         | 
| 96 116 | 
             
                    Hiera.debug("Executing SQL Query: #{query}")
         | 
| 97 117 |  | 
| 98 | 
            -
                    data=[]
         | 
| 99 | 
            -
                    mysql_host=connection_hash[:host]
         | 
| 100 | 
            -
                    mysql_user=connection_hash[:username]
         | 
| 101 | 
            -
                    mysql_pass=connection_hash[:password]
         | 
| 102 | 
            -
                    mysql_database=connection_hash[:database]
         | 
| 103 | 
            -
                    mysql_port=connection_hash[:port]
         | 
| 118 | 
            +
                    data = []
         | 
| 119 | 
            +
                    mysql_host     = connection_hash[:host]
         | 
| 120 | 
            +
                    mysql_user     = connection_hash[:username]
         | 
| 121 | 
            +
                    mysql_pass     = connection_hash[:password]
         | 
| 122 | 
            +
                    mysql_database = connection_hash[:database]
         | 
| 123 | 
            +
                    mysql_port     = connection_hash[:port]
         | 
| 104 124 |  | 
| 105 125 | 
             
                    if defined?(JRUBY_VERSION)
         | 
| 106 126 | 
             
                      Jdbc::MySQL.load_driver
         | 
| @@ -109,7 +129,7 @@ class Hiera | |
| 109 129 | 
             
                      props.set_property :user, mysql_user
         | 
| 110 130 | 
             
                      props.set_property :password, mysql_pass
         | 
| 111 131 |  | 
| 112 | 
            -
                      conn = com.mysql.jdbc.Driver.new.connect(url,props)
         | 
| 132 | 
            +
                      conn = com.mysql.jdbc.Driver.new.connect(url, props)
         | 
| 113 133 | 
             
                      stmt = conn.create_statement
         | 
| 114 134 |  | 
| 115 135 | 
             
                      res = stmt.execute_query(query)
         | 
| @@ -118,7 +138,7 @@ class Hiera | |
| 118 138 |  | 
| 119 139 | 
             
                      Hiera.debug("Mysql Query returned #{numcols} rows")
         | 
| 120 140 |  | 
| 121 | 
            -
                      while  | 
| 141 | 
            +
                      while res.next
         | 
| 122 142 | 
             
                        if numcols < 2
         | 
| 123 143 | 
             
                          Hiera.debug("Mysql value : #{res.getString(1)}")
         | 
| 124 144 | 
             
                          data << res.getString(1)
         | 
| @@ -144,8 +164,7 @@ class Hiera | |
| 144 164 | 
             
                      end
         | 
| 145 165 | 
             
                    end
         | 
| 146 166 |  | 
| 147 | 
            -
                     | 
| 148 | 
            -
             | 
| 167 | 
            +
                    data
         | 
| 149 168 | 
             
                  end
         | 
| 150 169 | 
             
                end
         | 
| 151 170 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: hiera-mysql-json-backend-jruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0 | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Hostnet
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-07- | 
| 11 | 
            +
            date: 2017-07-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: jdbc-mysql
         |