tree b42c782a8e26bc0613c7bcc184c19eb7d1af7a87
parent 0b23a9399f372dd3f17f8cab1f39ed5d57a8eb1e
author Keith Turner <kturner@apache.org> 1574287946 -0500
committer GitHub <noreply@github.com> 1574287946 -0500
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJd1bpKCRBK7hj4Ov3rIwAAdHIIAJu4nwHsiA5yb8Y6XnimRFnC
 1zT/TCo2K9X5+rJ+J4qVmWqGJ3c3PQOcnZUQSaUFaBZregbDY/vs2gmTtO1NCPAN
 u5FK7+1yP0QrjjV1UEfURMchTsSaoPB5BMjoC6LaR/5jb/foK+eCZ7CjLvJG3zRP
 3mlwlmOw7ZbOWFkVn5Rp5qWH4yZ8Wm7+SzvRRuO6HRS+MsH9AH7aSIXRDFFsiWQ+
 Fi9fi+kzc5Qy6wGgc9dDN161/R0td42/FY9dNfuNy+fCHwvVa1SGqCHn9WdJKJXA
 VqN/TkyVAGQ06NEM71PfcL98Lid7Sur0wmLKXaMVRKGyX7msMY1gBDoOmr0ofis=
 =P1Uz
 -----END PGP SIGNATURE-----
 

allow using accumulo snapshot with java11 (#297)

Saw the following error when attempting to use snapshot version of
Accumulo and Java 11.  This commit fixes there error.

```
$ ./bin/muchos launch -c kt1
Traceback (most recent call last):
  File "/home/user1/muchos/lib/main.py", line 83, in <module>
    main()
  File "/home/user1/muchos/lib/main.py", line 55, in main
    config.verify_config(action)
  File "/home/user1/muchos/lib/muchos/config/ec2.py", line 40, in
verify_config
    self._verify_config(action)
  File "/home/user1/muchos/lib/muchos/config/base.py", line 174, in
_verify_config
    if self.java_product_version() >= 11 and
StrictVersion(self.version('accumulo')) <= StrictVersion("1.9.3"):
  File "/usr/lib/python3.5/distutils/version.py", line 40, in __init__
    self.parse(vstring)
  File "/usr/lib/python3.5/distutils/version.py", line 137, in parse
    raise ValueError("invalid version number '%s'" % vstring)
ValueError: invalid version number '2.1.0-SNAPSHOT'
```