You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by Duncan Godwin <dr...@apache.org> on 2017/09/20 20:53:50 UTC

[VOTE] Release Apache Brooklyn 0.12.0 [rc2]

This is to call for a vote for the release of Apache Brooklyn 0.12.0.

This release comprises of a source code distribution, and a corresponding
binary distribution, and Maven artifacts.

The source and binary distributions, including signatures, digests, etc. can
be found at:

  https://dist.apache.org/repos/dist/dev/brooklyn/apache-brooklyn-0.12.0-rc2

The artifact SHA-256 checksums are as follows:

  73006ef48d72fde41880dd9fb2ffe4d1cb5c4cea35a3e20b32fd5d6d7f971d3b
*apache-brooklyn-0.12.0-rc2-1.noarch.rpm
  f52a90ae6cb9c480ac5d0b98e51821978f0a0188505408f0d2e2977682184386
*apache-brooklyn-0.12.0-rc2-bin.tar.gz
  333fe5eed360c940e203e1b119d6a3d521dc48d71c4944f35bd50ab12284b07c
*apache-brooklyn-0.12.0-rc2-bin.zip
  a6ba979df9fb9edfb983c2ece0c447a35cc70d1c556eade82abdd8a93fdebd77
*apache-brooklyn-0.12.0-rc2-classic.tar.gz
  377445e6e48993deba90b606b25b1120254dfcad08b89a2121321ef04df9cbd5
*apache-brooklyn-0.12.0-rc2-classic.zip
  644764583a1767bf7e4e916d25373df41fcac5594f3d1b4b121cbf65f78ebe38
*apache-brooklyn-0.12.0-rc2-client-cli-linux.tar.gz
  95a75d04abe249a030f15276aa32d31d22f1a430d008e02f0c4cdb1822130135
*apache-brooklyn-0.12.0-rc2-client-cli-linux.zip
  bbb0b8180465fc4fe82b40618f43a439f44ed155aad885248d3b2bc300cf8a53
*apache-brooklyn-0.12.0-rc2-client-cli-macosx.tar.gz
  ecec1773fd8dcff13bd0bdae2e4fa3bbf73f421f393c79dc847616b393a8218a
*apache-brooklyn-0.12.0-rc2-client-cli-macosx.zip
  9b8f4841a6bd05ffe0b9830a067a3f2189a934195f4aacb946f7cb435931b49a
*apache-brooklyn-0.12.0-rc2-client-cli-windows.tar.gz
  0d568c5067aabf067ba4ccc86a82d3c3c0488ec57530fdca8ecd67b2394dc62d
*apache-brooklyn-0.12.0-rc2-client-cli-windows.zip
  fb48961136c89001c84b122c107c7d49d8440cf5d877fcd8ad211f6728073097
*apache-brooklyn-0.12.0-rc2-src.tar.gz
  6a07a36d5d3deddb9056a63987fc9bb7dd785666a2c6967390d7db09c45a2db1
*apache-brooklyn-0.12.0-rc2-src.zip
  6b3a0191d1910c977fb6a8f770fa4e762b94df15b81d11f49f5784a27818d65a
*apache-brooklyn-0.12.0-rc2-vagrant.tar.gz
  544e4d082769de333981dcf8a21fe7958813c7452bc083ae454d64cbaa363746
*apache-brooklyn-0.12.0-rc2-vagrant.zip

The Nexus staging repository for the Maven artifacts is located at:


https://repository.apache.org/content/repositories/orgapachebrooklyn-1048

All release artifacts are signed with the following key:

    https://people.apache.org/keys/committer/drigodwin.asc

KEYS file available here:

    https://dist.apache.org/repos/dist/release/brooklyn/KEYS


The artifacts were built from git commit IDs:

brooklyn: 38b85117f576ff686b72b98ea97d3b79e1eef009
All of the above have been tagged as "apache-brooklyn-0.12.0-rc2"

Please vote on releasing this package as Apache Brooklyn 0.12.0.

The vote will be open for at least 72 hours.
[ ] +1 Release this package as Apache Brooklyn 0.12.0
[ ] +0 no opinion
[ ] -1 Do not release this package because ...


Thanks!

Duncan



CHECKLIST for reference

[ ] Download links work.
[ ] Binaries work.
[ ] Checksums and PGP signatures are valid.
[ ] Expanded source archive matches contents of RC tag.
[ ] Expanded source archive builds and passes tests.
[ ] LICENSE is present and correct.
[ ] NOTICE is present and correct, including copyright date.
[ ] All files have license headers where appropriate.
[ ] All dependencies have compatible licenses.
[ ] No compiled archives bundled in source archive.
[ ] I follow this project’s commits list.

Re: [VOTE] Release Apache Brooklyn 0.12.0 [rc2]

Posted by Duncan Godwin <du...@cloudsoftcorp.com>.
Thanks All,

Due to discovery of these problems this vote is cancelled

I have cherry picked the two PRs thomas mentioned and will produce a new RC
shortly

https://github.com/apache/brooklyn-dist/pull/109
https://github.com/apache/brooklyn-server/pull/840

Many  thanks

Duncan

On 21 September 2017 at 15:02, Alex Heneveld <
alex.heneveld@cloudsoftcorp.com> wrote:

>
> Good catches Thomas -- suggest we cancel and do a new RC.
>
> The build-from-source problem I suspect is simply down to network setup /
> firewall on your box.  But it would be good to force use of localhost for
> those tests or mark them integration so that it doesn't bite others or
> ideally be smart about detecting interfaces.  Probably due to [1] -- if it
> checks that random ports are locally accessible on the NIC it tries to use
> for localhost then it should prevent binding to that IP (unless it was the
> case that you changed IP addresses during the build which seems unlikely).
>
> But lack of license (we know how this happened) and empty catalog (did
> someone do a too-broad search-and-replace?) are showstoppers.
>
> Best
> Alex
>
>
> [1]  https://github.com/apache/brooklyn-server/pull/768
>
>
> On 21/09/2017 11:40, Thomas Bouron wrote:
>
>> -1
>>
>> Quick summary of the tests I've done:
>> [✓] Download links work.
>>
>> [✓] Checksums and PGP signatures are valid.
>> [✓] Expanded source archive matches contents of RC tag.
>> [x] Expanded source archive builds athttps://github.com/apache/br
>> ooklyn-server/pull/768ynd passes tests.
>>
>> [✓] LICENSE is present and correct.
>> [✓] NOTICE is present and correct, including copyright date.
>> [✓] No compiled archives bundled in source archive.
>>
>> Checks left to do manually with the help of above instructions:
>> [-] All files have license headers where appropriate.
>> [-] All dependencies have compatible licenses.
>>
>> Remaining items from checklist:
>> [✓] Binaries work.
>> [✓] I follow this project’s commits list.
>>
>> ----
>> Ran the verification script, which tries to build the sources but got the
>> following error:
>>
>> ```
>> ===============================================
>>      Surefire test
>>      Tests run: 59, Failures: 3, Skips: 3
>> ===============================================
>> Tests run: 59, Failures: 3, Errors: 0, Skipped: 3, Time elapsed: 15.322
>> sec
>> <<< FAILURE! - in TestSuite
>> verifyHttp(org.apache.brooklyn.launcher.BrooklynWebServerTest)  Time
>> elapsed: 0.22 sec  <<< FAILURE!
>> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
>> at
>> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifyHtt
>> p(BrooklynWebServerTest.java:99)
>> Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
>> failed to respond
>> at
>> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifyHtt
>> p(BrooklynWebServerTest.java:99)
>>
>> verifySecurityInitialized(org.apache.brooklyn.launcher.Brook
>> lynWebServerTest)
>>   Time elapsed: 0.156 sec  <<< FAILURE!
>> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
>> at
>> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySec
>> urityInitialized(BrooklynWebServerTest.java:111)
>> Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
>> failed to respond
>> at
>> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySec
>> urityInitialized(BrooklynWebServerTest.java:111)
>>
>> verifySecurityInitializedExplicitUser(org.apache.brooklyn.la
>> uncher.BrooklynWebServerTest)
>>   Time elapsed: 0.166 sec  <<< FAILURE!
>> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
>> at
>> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySec
>> urityInitializedExplicitUser(BrooklynWebServerTest.java:131)
>> Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
>> failed to respond
>> at
>> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySec
>> urityInitializedExplicitUser(BrooklynWebServerTest.java:131)
>>
>> 2017-09-21 10:51:31,132 INFO  Brooklyn shutdown: stopping entities
>> [Application[9cxo585b], BasicApplicationImpl{id=hmg9nnlah0},
>> Application[1x28b8p2], Application[7c5vs0rx]]
>>
>> Results :
>>
>> Failed tests:
>>    BrooklynWebServerTest.verifyHttp:99 » PropagatedRuntime
>>    BrooklynWebServerTest.verifySecurityInitialized:111 »
>> PropagatedRuntime
>>    BrooklynWebServerTest.verifySecurityInitializedExplicitUser:131 »
>> PropagatedRuntime
>>
>> Tests run: 59, Failures: 3, Errors: 0, Skipped: 3
>> ```
>>
>> ----
>> Also, the RPM and DEB package don't have LICENSE and NOTICE files. This
>> one
>> is one me, I pushed a PR [1] to fix it.
>>
>> ----
>> Finally, tried to run the bin distribution (karaf). Brooklyn starts but
>> the
>> catalog is empty. In the startup log, I can see the following exceptions
>> which looks like a regression. A quick workaround would be to wrap the
>> text
>> in quote (and there is already a PR for it [2]) but I think there might be
>> a deeper issue:
>>
>> ```
>> 2017-09-21 10:53:09,164 | WARN  | nager-k0hvRLoI-0 | OsgiArchiveInstaller
>>            | 123 - org.apache.brooklyn.core - 0.12.0 | Error adding
>> Brooklyn
>> items from bundle brooklyn-default-karaf-catalog:0.12.0, uninstalling,
>> restoring any old bundle and items, then re-throwing error: Error
>> installing catalog items: ParserException: while parsing a block mapping
>>   in 'reader', line 241, column 9:
>>              type: org.apache.brooklyn.policy ...
>>              ^
>> expected <block end>, but found Scalar
>>   in 'reader', line 242, column 28:
>>              name: [DEPRECATED] Rolling Mean in Time Window
>>                                 ^
>> 2017-09-21 10:53:09,173 | WARN  | nager-k0hvRLoI-0 | CatalogInitialization
>>             | 123 - org.apache.brooklyn.core - 0.12.0 | Error importing
>> catalog from
>> file:/Users/thomasbouron/apache-brooklyn-0.12.0-rc2/apache-
>> brooklyn-0.12.0-bin/etc/default.catalog.bom:
>> java.lang.IllegalStateException: Bundle
>> BasicManagedBundle{symbolicName=brooklyn-default-karaf-catalog,
>> version=0.12.0, url=null} failed installation: Error installing catalog
>> items: ParserException: while parsing a block mapping
>>   in 'reader', line 241, column 9:
>>              type: org.apache.brooklyn.policy ...
>>              ^
>> expected <block end>, but found Scalar
>>   in 'reader', line 242, column 28:
>>              name: [DEPRECATED] Rolling Mean in Time Window
>>                                 ^
>>
>> java.lang.IllegalStateException: Bundle
>> BasicManagedBundle{symbolicName=brooklyn-default-karaf-catalog,
>> version=0.12.0, url=null} failed installation: Error installing catalog
>> items: ParserException: while parsing a block mapping
>>   in 'reader', line 241, column 9:
>>              type: org.apache.brooklyn.policy ...
>>              ^
>> expected <block end>, but found Scalar
>>   in 'reader', line 242, column 28:
>>              name: [DEPRECATED] Rolling Mean in Time Window
>>                                 ^
>>
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.instal
>> l(OsgiArchiveInstaller.java:519)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiManager.install(OsgiMan
>> ager.java:373)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.addItems(BasicBrooklynCatalog.java:1435)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.addItems(BasicBrooklynCatalog.java:1397)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.catalog.internal.CatalogInitializat
>> ion.populateInitialFromUri(CatalogInitialization.java:294)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.catalog.internal.CatalogInitializat
>> ion.populateInitial(CatalogInitialization.java:256)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.catalog.internal.CatalogInitializat
>> ion.populateCatalogImpl(CatalogInitialization.java:232)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.catalog.internal.CatalogInitializat
>> ion.populateCatalog(CatalogInitialization.java:199)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.install
>> BundlesAndRebuildCatalog(RebindIteration.java:473)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(R
>> ebindIteration.java:255)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIterat
>> ion.doRun(InitialFullRebindIteration.java:69)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(Reb
>> indIteration.java:282)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebin
>> dImpl(RebindManagerImpl.java:575)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.cal
>> l(RebindManagerImpl.java:525)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.cal
>> l(RebindManagerImpl.java:523)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at
>> org.apache.brooklyn.util.core.task.BasicExecutionManager$Sub
>> missionCallable.call(BasicExecutionManager.java:529)
>> [123:org.apache.brooklyn.core:0.12.0]
>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>> Executor.java:1142)
>> [?:?]
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>> lExecutor.java:617)
>> [?:?]
>> at java.lang.Thread.run(Thread.java:748) [?:?]
>> Caused by: java.lang.IllegalArgumentException: Error installing catalog
>> items
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiManager.loadCatalogBom(
>> OsgiManager.java:461)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller$1.run(
>> OsgiArchiveInstaller.java:445)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.instal
>> l(OsgiArchiveInstaller.java:496)
>> ~[?:?]
>> ... 19 more
>> Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a
>> block
>> mapping
>>   in 'reader', line 241, column 9:
>>              type: org.apache.brooklyn.policy ...
>>              ^
>> expected <block end>, but found Scalar
>>   in 'reader', line 242, column 28:
>>              name: [DEPRECATED] Rolling Mean in Time Window
>>                                 ^
>>
>> at
>> org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.
>> produce(ParserImpl.java:569)
>> ~[?:?]
>> at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:157)
>> ~[?:?]
>> at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:147)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Comp
>> oser.java:224)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Compos
>> er.java:246)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(
>> Composer.java:237)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Comp
>> oser.java:225)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Com
>> poser.java:199)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:153)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Compos
>> er.java:246)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(
>> Composer.java:237)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Comp
>> oser.java:225)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Com
>> poser.java:199)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:153)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Compos
>> er.java:246)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(
>> Composer.java:237)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Comp
>> oser.java:225)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Compos
>> er.java:246)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(
>> Composer.java:237)
>> ~[?:?]
>> at
>> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Comp
>> oser.java:225)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.composeDocument(Compose
>> r.java:122)
>> ~[?:?]
>> at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:84) ~[?:?]
>> at
>> org.yaml.snakeyaml.constructor.BaseConstructor.getData(
>> BaseConstructor.java:104)
>> ~[?:?]
>> at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:471) ~[?:?]
>> at org.apache.brooklyn.util.yaml.Yamls.getAs(Yamls.java:89) ~[?:?]
>> at org.apache.brooklyn.util.yaml.Yamls.parseAll(Yamls.java:166) ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:532)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCat
>> alog.java:727)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCat
>> alog.java:727)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCat
>> alog.java:716)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatal
>> og.addTypesFromBundleBom(BasicBrooklynCatalog.java:1497)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.CatalogBundleLoade
>> r.scanForCatalogInternal(CatalogBundleLoader.java:103)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.catalog.internal.CatalogBundleLoade
>> r.scanForCatalog(CatalogBundleLoader.java:66)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiManager.loadCatalogBom(
>> OsgiManager.java:456)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller$1.run(
>> OsgiArchiveInstaller.java:445)
>> ~[?:?]
>> at
>> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.instal
>> l(OsgiArchiveInstaller.java:496)
>> ~[?:?]
>> ... 19 more
>> ```
>>
>> [1] https://github.com/apache/brooklyn-dist/pull/109
>> [2] https://github.com/apache/brooklyn-server/pull/840
>>
>>
>>
>> On Wed, 20 Sep 2017 at 21:53 Duncan Godwin <dr...@apache.org> wrote:
>>
>> This is to call for a vote for the release of Apache Brooklyn 0.12.0.
>>>
>>> This release comprises of a source code distribution, and a corresponding
>>> binary distribution, and Maven artifacts.
>>>
>>> The source and binary distributions, including signatures, digests, etc.
>>> can
>>> be found at:
>>>
>>>
>>> https://dist.apache.org/repos/dist/dev/brooklyn/apache-brook
>>> lyn-0.12.0-rc2
>>>
>>> The artifact SHA-256 checksums are as follows:
>>>
>>>    73006ef48d72fde41880dd9fb2ffe4d1cb5c4cea35a3e20b32fd5d6d7f971d3b
>>> *apache-brooklyn-0.12.0-rc2-1.noarch.rpm
>>>    f52a90ae6cb9c480ac5d0b98e51821978f0a0188505408f0d2e2977682184386
>>> *apache-brooklyn-0.12.0-rc2-bin.tar.gz
>>>    333fe5eed360c940e203e1b119d6a3d521dc48d71c4944f35bd50ab12284b07c
>>> *apache-brooklyn-0.12.0-rc2-bin.zip
>>>    a6ba979df9fb9edfb983c2ece0c447a35cc70d1c556eade82abdd8a93fdebd77
>>> *apache-brooklyn-0.12.0-rc2-classic.tar.gz
>>>    377445e6e48993deba90b606b25b1120254dfcad08b89a2121321ef04df9cbd5
>>> *apache-brooklyn-0.12.0-rc2-classic.zip
>>>    644764583a1767bf7e4e916d25373df41fcac5594f3d1b4b121cbf65f78ebe38
>>> *apache-brooklyn-0.12.0-rc2-client-cli-linux.tar.gz
>>>    95a75d04abe249a030f15276aa32d31d22f1a430d008e02f0c4cdb1822130135
>>> *apache-brooklyn-0.12.0-rc2-client-cli-linux.zip
>>>    bbb0b8180465fc4fe82b40618f43a439f44ed155aad885248d3b2bc300cf8a53
>>> *apache-brooklyn-0.12.0-rc2-client-cli-macosx.tar.gz
>>>    ecec1773fd8dcff13bd0bdae2e4fa3bbf73f421f393c79dc847616b393a8218a
>>> *apache-brooklyn-0.12.0-rc2-client-cli-macosx.zip
>>>    9b8f4841a6bd05ffe0b9830a067a3f2189a934195f4aacb946f7cb435931b49a
>>> *apache-brooklyn-0.12.0-rc2-client-cli-windows.tar.gz
>>>    0d568c5067aabf067ba4ccc86a82d3c3c0488ec57530fdca8ecd67b2394dc62d
>>> *apache-brooklyn-0.12.0-rc2-client-cli-windows.zip
>>>    fb48961136c89001c84b122c107c7d49d8440cf5d877fcd8ad211f6728073097
>>> *apache-brooklyn-0.12.0-rc2-src.tar.gz
>>>    6a07a36d5d3deddb9056a63987fc9bb7dd785666a2c6967390d7db09c45a2db1
>>> *apache-brooklyn-0.12.0-rc2-src.zip
>>>    6b3a0191d1910c977fb6a8f770fa4e762b94df15b81d11f49f5784a27818d65a
>>> *apache-brooklyn-0.12.0-rc2-vagrant.tar.gz
>>>    544e4d082769de333981dcf8a21fe7958813c7452bc083ae454d64cbaa363746
>>> *apache-brooklyn-0.12.0-rc2-vagrant.zip
>>>
>>> The Nexus staging repository for the Maven artifacts is located at:
>>>
>>>
>>> https://repository.apache.org/content/repositories/orgapache
>>> brooklyn-1048
>>>
>>> All release artifacts are signed with the following key:
>>>
>>>      https://people.apache.org/keys/committer/drigodwin.asc
>>>
>>> KEYS file available here:
>>>
>>>      https://dist.apache.org/repos/dist/release/brooklyn/KEYS
>>>
>>>
>>> The artifacts were built from git commit IDs:
>>>
>>> brooklyn: 38b85117f576ff686b72b98ea97d3b79e1eef009
>>> All of the above have been tagged as "apache-brooklyn-0.12.0-rc2"
>>>
>>> Please vote on releasing this package as Apache Brooklyn 0.12.0.
>>>
>>> The vote will be open for at least 72 hours.
>>> [ ] +1 Release this package as Apache Brooklyn 0.12.0
>>> [ ] +0 no opinion
>>> [ ] -1 Do not release this package because ...
>>>
>>>
>>> Thanks!
>>>
>>> Duncan
>>>
>>>
>>>
>>> CHECKLIST for reference
>>>
>>> [ ] Download links work.
>>> [ ] Binaries work.
>>> [ ] Checksums and PGP signatures are valid.
>>> [ ] Expanded source archive matches contents of RC tag.
>>> [ ] Expanded source archive builds and passes tests.
>>> [ ] LICENSE is present and correct.
>>> [ ] NOTICE is present and correct, including copyright date.
>>> [ ] All files have license headers where appropriate.
>>> [ ] All dependencies have compatible licenses.
>>> [ ] No compiled archives bundled in source archive.
>>> [ ] I follow this project’s commits list.
>>>
>>>
>

Re: [VOTE] Release Apache Brooklyn 0.12.0 [rc2]

Posted by Alex Heneveld <al...@cloudsoftcorp.com>.
Good catches Thomas -- suggest we cancel and do a new RC.

The build-from-source problem I suspect is simply down to network setup 
/ firewall on your box.  But it would be good to force use of localhost 
for those tests or mark them integration so that it doesn't bite others 
or ideally be smart about detecting interfaces.  Probably due to [1] -- 
if it checks that random ports are locally accessible on the NIC it 
tries to use for localhost then it should prevent binding to that IP 
(unless it was the case that you changed IP addresses during the build 
which seems unlikely).

But lack of license (we know how this happened) and empty catalog (did 
someone do a too-broad search-and-replace?) are showstoppers.

Best
Alex


[1]  https://github.com/apache/brooklyn-server/pull/768


On 21/09/2017 11:40, Thomas Bouron wrote:
> -1
>
> Quick summary of the tests I've done:
> [✓] Download links work.
>
> [✓] Checksums and PGP signatures are valid.
> [✓] Expanded source archive matches contents of RC tag.
> [x] Expanded source archive builds athttps://github.com/apache/brooklyn-server/pull/768ynd passes tests.
> [✓] LICENSE is present and correct.
> [✓] NOTICE is present and correct, including copyright date.
> [✓] No compiled archives bundled in source archive.
>
> Checks left to do manually with the help of above instructions:
> [-] All files have license headers where appropriate.
> [-] All dependencies have compatible licenses.
>
> Remaining items from checklist:
> [✓] Binaries work.
> [✓] I follow this project’s commits list.
>
> ----
> Ran the verification script, which tries to build the sources but got the
> following error:
>
> ```
> ===============================================
>      Surefire test
>      Tests run: 59, Failures: 3, Skips: 3
> ===============================================
> Tests run: 59, Failures: 3, Errors: 0, Skipped: 3, Time elapsed: 15.322 sec
> <<< FAILURE! - in TestSuite
> verifyHttp(org.apache.brooklyn.launcher.BrooklynWebServerTest)  Time
> elapsed: 0.22 sec  <<< FAILURE!
> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> at
> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifyHttp(BrooklynWebServerTest.java:99)
> Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
> failed to respond
> at
> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifyHttp(BrooklynWebServerTest.java:99)
>
> verifySecurityInitialized(org.apache.brooklyn.launcher.BrooklynWebServerTest)
>   Time elapsed: 0.156 sec  <<< FAILURE!
> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> at
> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitialized(BrooklynWebServerTest.java:111)
> Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
> failed to respond
> at
> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitialized(BrooklynWebServerTest.java:111)
>
> verifySecurityInitializedExplicitUser(org.apache.brooklyn.launcher.BrooklynWebServerTest)
>   Time elapsed: 0.166 sec  <<< FAILURE!
> org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
> at
> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitializedExplicitUser(BrooklynWebServerTest.java:131)
> Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
> failed to respond
> at
> org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitializedExplicitUser(BrooklynWebServerTest.java:131)
>
> 2017-09-21 10:51:31,132 INFO  Brooklyn shutdown: stopping entities
> [Application[9cxo585b], BasicApplicationImpl{id=hmg9nnlah0},
> Application[1x28b8p2], Application[7c5vs0rx]]
>
> Results :
>
> Failed tests:
>    BrooklynWebServerTest.verifyHttp:99 » PropagatedRuntime
>    BrooklynWebServerTest.verifySecurityInitialized:111 » PropagatedRuntime
>    BrooklynWebServerTest.verifySecurityInitializedExplicitUser:131 »
> PropagatedRuntime
>
> Tests run: 59, Failures: 3, Errors: 0, Skipped: 3
> ```
>
> ----
> Also, the RPM and DEB package don't have LICENSE and NOTICE files. This one
> is one me, I pushed a PR [1] to fix it.
>
> ----
> Finally, tried to run the bin distribution (karaf). Brooklyn starts but the
> catalog is empty. In the startup log, I can see the following exceptions
> which looks like a regression. A quick workaround would be to wrap the text
> in quote (and there is already a PR for it [2]) but I think there might be
> a deeper issue:
>
> ```
> 2017-09-21 10:53:09,164 | WARN  | nager-k0hvRLoI-0 | OsgiArchiveInstaller
>            | 123 - org.apache.brooklyn.core - 0.12.0 | Error adding Brooklyn
> items from bundle brooklyn-default-karaf-catalog:0.12.0, uninstalling,
> restoring any old bundle and items, then re-throwing error: Error
> installing catalog items: ParserException: while parsing a block mapping
>   in 'reader', line 241, column 9:
>              type: org.apache.brooklyn.policy ...
>              ^
> expected <block end>, but found Scalar
>   in 'reader', line 242, column 28:
>              name: [DEPRECATED] Rolling Mean in Time Window
>                                 ^
> 2017-09-21 10:53:09,173 | WARN  | nager-k0hvRLoI-0 | CatalogInitialization
>             | 123 - org.apache.brooklyn.core - 0.12.0 | Error importing
> catalog from
> file:/Users/thomasbouron/apache-brooklyn-0.12.0-rc2/apache-brooklyn-0.12.0-bin/etc/default.catalog.bom:
> java.lang.IllegalStateException: Bundle
> BasicManagedBundle{symbolicName=brooklyn-default-karaf-catalog,
> version=0.12.0, url=null} failed installation: Error installing catalog
> items: ParserException: while parsing a block mapping
>   in 'reader', line 241, column 9:
>              type: org.apache.brooklyn.policy ...
>              ^
> expected <block end>, but found Scalar
>   in 'reader', line 242, column 28:
>              name: [DEPRECATED] Rolling Mean in Time Window
>                                 ^
>
> java.lang.IllegalStateException: Bundle
> BasicManagedBundle{symbolicName=brooklyn-default-karaf-catalog,
> version=0.12.0, url=null} failed installation: Error installing catalog
> items: ParserException: while parsing a block mapping
>   in 'reader', line 241, column 9:
>              type: org.apache.brooklyn.policy ...
>              ^
> expected <block end>, but found Scalar
>   in 'reader', line 242, column 28:
>              name: [DEPRECATED] Rolling Mean in Time Window
>                                 ^
>
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.install(OsgiArchiveInstaller.java:519)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiManager.install(OsgiManager.java:373)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.addItems(BasicBrooklynCatalog.java:1435)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.addItems(BasicBrooklynCatalog.java:1397)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateInitialFromUri(CatalogInitialization.java:294)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateInitial(CatalogInitialization.java:256)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateCatalogImpl(CatalogInitialization.java:232)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateCatalog(CatalogInitialization.java:199)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.installBundlesAndRebuildCatalog(RebindIteration.java:473)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(RebindIteration.java:255)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIteration.doRun(InitialFullRebindIteration.java:69)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:282)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:575)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:525)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:523)
> [123:org.apache.brooklyn.core:0.12.0]
> at
> org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:529)
> [123:org.apache.brooklyn.core:0.12.0]
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> [?:?]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> [?:?]
> at java.lang.Thread.run(Thread.java:748) [?:?]
> Caused by: java.lang.IllegalArgumentException: Error installing catalog
> items
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiManager.loadCatalogBom(OsgiManager.java:461)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller$1.run(OsgiArchiveInstaller.java:445)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.install(OsgiArchiveInstaller.java:496)
> ~[?:?]
> ... 19 more
> Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block
> mapping
>   in 'reader', line 241, column 9:
>              type: org.apache.brooklyn.policy ...
>              ^
> expected <block end>, but found Scalar
>   in 'reader', line 242, column 28:
>              name: [DEPRECATED] Rolling Mean in Time Window
>                                 ^
>
> at
> org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:569)
> ~[?:?]
> at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:157)
> ~[?:?]
> at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:147)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:224)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:199)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:153)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:199)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:153)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
> ~[?:?]
> at
> org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122)
> ~[?:?]
> at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:84) ~[?:?]
> at
> org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:104)
> ~[?:?]
> at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:471) ~[?:?]
> at org.apache.brooklyn.util.yaml.Yamls.getAs(Yamls.java:89) ~[?:?]
> at org.apache.brooklyn.util.yaml.Yamls.parseAll(Yamls.java:166) ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:532)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCatalog.java:727)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCatalog.java:727)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCatalog.java:716)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.addTypesFromBundleBom(BasicBrooklynCatalog.java:1497)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.CatalogBundleLoader.scanForCatalogInternal(CatalogBundleLoader.java:103)
> ~[?:?]
> at
> org.apache.brooklyn.core.catalog.internal.CatalogBundleLoader.scanForCatalog(CatalogBundleLoader.java:66)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiManager.loadCatalogBom(OsgiManager.java:456)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller$1.run(OsgiArchiveInstaller.java:445)
> ~[?:?]
> at
> org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.install(OsgiArchiveInstaller.java:496)
> ~[?:?]
> ... 19 more
> ```
>
> [1] https://github.com/apache/brooklyn-dist/pull/109
> [2] https://github.com/apache/brooklyn-server/pull/840
>
>
>
> On Wed, 20 Sep 2017 at 21:53 Duncan Godwin <dr...@apache.org> wrote:
>
>> This is to call for a vote for the release of Apache Brooklyn 0.12.0.
>>
>> This release comprises of a source code distribution, and a corresponding
>> binary distribution, and Maven artifacts.
>>
>> The source and binary distributions, including signatures, digests, etc.
>> can
>> be found at:
>>
>>
>> https://dist.apache.org/repos/dist/dev/brooklyn/apache-brooklyn-0.12.0-rc2
>>
>> The artifact SHA-256 checksums are as follows:
>>
>>    73006ef48d72fde41880dd9fb2ffe4d1cb5c4cea35a3e20b32fd5d6d7f971d3b
>> *apache-brooklyn-0.12.0-rc2-1.noarch.rpm
>>    f52a90ae6cb9c480ac5d0b98e51821978f0a0188505408f0d2e2977682184386
>> *apache-brooklyn-0.12.0-rc2-bin.tar.gz
>>    333fe5eed360c940e203e1b119d6a3d521dc48d71c4944f35bd50ab12284b07c
>> *apache-brooklyn-0.12.0-rc2-bin.zip
>>    a6ba979df9fb9edfb983c2ece0c447a35cc70d1c556eade82abdd8a93fdebd77
>> *apache-brooklyn-0.12.0-rc2-classic.tar.gz
>>    377445e6e48993deba90b606b25b1120254dfcad08b89a2121321ef04df9cbd5
>> *apache-brooklyn-0.12.0-rc2-classic.zip
>>    644764583a1767bf7e4e916d25373df41fcac5594f3d1b4b121cbf65f78ebe38
>> *apache-brooklyn-0.12.0-rc2-client-cli-linux.tar.gz
>>    95a75d04abe249a030f15276aa32d31d22f1a430d008e02f0c4cdb1822130135
>> *apache-brooklyn-0.12.0-rc2-client-cli-linux.zip
>>    bbb0b8180465fc4fe82b40618f43a439f44ed155aad885248d3b2bc300cf8a53
>> *apache-brooklyn-0.12.0-rc2-client-cli-macosx.tar.gz
>>    ecec1773fd8dcff13bd0bdae2e4fa3bbf73f421f393c79dc847616b393a8218a
>> *apache-brooklyn-0.12.0-rc2-client-cli-macosx.zip
>>    9b8f4841a6bd05ffe0b9830a067a3f2189a934195f4aacb946f7cb435931b49a
>> *apache-brooklyn-0.12.0-rc2-client-cli-windows.tar.gz
>>    0d568c5067aabf067ba4ccc86a82d3c3c0488ec57530fdca8ecd67b2394dc62d
>> *apache-brooklyn-0.12.0-rc2-client-cli-windows.zip
>>    fb48961136c89001c84b122c107c7d49d8440cf5d877fcd8ad211f6728073097
>> *apache-brooklyn-0.12.0-rc2-src.tar.gz
>>    6a07a36d5d3deddb9056a63987fc9bb7dd785666a2c6967390d7db09c45a2db1
>> *apache-brooklyn-0.12.0-rc2-src.zip
>>    6b3a0191d1910c977fb6a8f770fa4e762b94df15b81d11f49f5784a27818d65a
>> *apache-brooklyn-0.12.0-rc2-vagrant.tar.gz
>>    544e4d082769de333981dcf8a21fe7958813c7452bc083ae454d64cbaa363746
>> *apache-brooklyn-0.12.0-rc2-vagrant.zip
>>
>> The Nexus staging repository for the Maven artifacts is located at:
>>
>>
>> https://repository.apache.org/content/repositories/orgapachebrooklyn-1048
>>
>> All release artifacts are signed with the following key:
>>
>>      https://people.apache.org/keys/committer/drigodwin.asc
>>
>> KEYS file available here:
>>
>>      https://dist.apache.org/repos/dist/release/brooklyn/KEYS
>>
>>
>> The artifacts were built from git commit IDs:
>>
>> brooklyn: 38b85117f576ff686b72b98ea97d3b79e1eef009
>> All of the above have been tagged as "apache-brooklyn-0.12.0-rc2"
>>
>> Please vote on releasing this package as Apache Brooklyn 0.12.0.
>>
>> The vote will be open for at least 72 hours.
>> [ ] +1 Release this package as Apache Brooklyn 0.12.0
>> [ ] +0 no opinion
>> [ ] -1 Do not release this package because ...
>>
>>
>> Thanks!
>>
>> Duncan
>>
>>
>>
>> CHECKLIST for reference
>>
>> [ ] Download links work.
>> [ ] Binaries work.
>> [ ] Checksums and PGP signatures are valid.
>> [ ] Expanded source archive matches contents of RC tag.
>> [ ] Expanded source archive builds and passes tests.
>> [ ] LICENSE is present and correct.
>> [ ] NOTICE is present and correct, including copyright date.
>> [ ] All files have license headers where appropriate.
>> [ ] All dependencies have compatible licenses.
>> [ ] No compiled archives bundled in source archive.
>> [ ] I follow this project’s commits list.
>>


Re: [VOTE] Release Apache Brooklyn 0.12.0 [rc2]

Posted by Thomas Bouron <th...@cloudsoftcorp.com>.
-1

Quick summary of the tests I've done:
[✓] Download links work.

[✓] Checksums and PGP signatures are valid.
[✓] Expanded source archive matches contents of RC tag.
[x] Expanded source archive builds and passes tests.
[✓] LICENSE is present and correct.
[✓] NOTICE is present and correct, including copyright date.
[✓] No compiled archives bundled in source archive.

Checks left to do manually with the help of above instructions:
[-] All files have license headers where appropriate.
[-] All dependencies have compatible licenses.

Remaining items from checklist:
[✓] Binaries work.
[✓] I follow this project’s commits list.

----
Ran the verification script, which tries to build the sources but got the
following error:

```
===============================================
    Surefire test
    Tests run: 59, Failures: 3, Skips: 3
===============================================
Tests run: 59, Failures: 3, Errors: 0, Skipped: 3, Time elapsed: 15.322 sec
<<< FAILURE! - in TestSuite
verifyHttp(org.apache.brooklyn.launcher.BrooklynWebServerTest)  Time
elapsed: 0.22 sec  <<< FAILURE!
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.launcher.BrooklynWebServerTest.verifyHttp(BrooklynWebServerTest.java:99)
Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
failed to respond
at
org.apache.brooklyn.launcher.BrooklynWebServerTest.verifyHttp(BrooklynWebServerTest.java:99)

verifySecurityInitialized(org.apache.brooklyn.launcher.BrooklynWebServerTest)
 Time elapsed: 0.156 sec  <<< FAILURE!
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitialized(BrooklynWebServerTest.java:111)
Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
failed to respond
at
org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitialized(BrooklynWebServerTest.java:111)

verifySecurityInitializedExplicitUser(org.apache.brooklyn.launcher.BrooklynWebServerTest)
 Time elapsed: 0.166 sec  <<< FAILURE!
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitializedExplicitUser(BrooklynWebServerTest.java:131)
Caused by: org.apache.http.NoHttpResponseException: 192.168.101.104:8081
failed to respond
at
org.apache.brooklyn.launcher.BrooklynWebServerTest.verifySecurityInitializedExplicitUser(BrooklynWebServerTest.java:131)

2017-09-21 10:51:31,132 INFO  Brooklyn shutdown: stopping entities
[Application[9cxo585b], BasicApplicationImpl{id=hmg9nnlah0},
Application[1x28b8p2], Application[7c5vs0rx]]

Results :

Failed tests:
  BrooklynWebServerTest.verifyHttp:99 » PropagatedRuntime
  BrooklynWebServerTest.verifySecurityInitialized:111 » PropagatedRuntime
  BrooklynWebServerTest.verifySecurityInitializedExplicitUser:131 »
PropagatedRuntime

Tests run: 59, Failures: 3, Errors: 0, Skipped: 3
```

----
Also, the RPM and DEB package don't have LICENSE and NOTICE files. This one
is one me, I pushed a PR [1] to fix it.

----
Finally, tried to run the bin distribution (karaf). Brooklyn starts but the
catalog is empty. In the startup log, I can see the following exceptions
which looks like a regression. A quick workaround would be to wrap the text
in quote (and there is already a PR for it [2]) but I think there might be
a deeper issue:

```
2017-09-21 10:53:09,164 | WARN  | nager-k0hvRLoI-0 | OsgiArchiveInstaller
          | 123 - org.apache.brooklyn.core - 0.12.0 | Error adding Brooklyn
items from bundle brooklyn-default-karaf-catalog:0.12.0, uninstalling,
restoring any old bundle and items, then re-throwing error: Error
installing catalog items: ParserException: while parsing a block mapping
 in 'reader', line 241, column 9:
            type: org.apache.brooklyn.policy ...
            ^
expected <block end>, but found Scalar
 in 'reader', line 242, column 28:
            name: [DEPRECATED] Rolling Mean in Time Window
                               ^
2017-09-21 10:53:09,173 | WARN  | nager-k0hvRLoI-0 | CatalogInitialization
           | 123 - org.apache.brooklyn.core - 0.12.0 | Error importing
catalog from
file:/Users/thomasbouron/apache-brooklyn-0.12.0-rc2/apache-brooklyn-0.12.0-bin/etc/default.catalog.bom:
java.lang.IllegalStateException: Bundle
BasicManagedBundle{symbolicName=brooklyn-default-karaf-catalog,
version=0.12.0, url=null} failed installation: Error installing catalog
items: ParserException: while parsing a block mapping
 in 'reader', line 241, column 9:
            type: org.apache.brooklyn.policy ...
            ^
expected <block end>, but found Scalar
 in 'reader', line 242, column 28:
            name: [DEPRECATED] Rolling Mean in Time Window
                               ^

java.lang.IllegalStateException: Bundle
BasicManagedBundle{symbolicName=brooklyn-default-karaf-catalog,
version=0.12.0, url=null} failed installation: Error installing catalog
items: ParserException: while parsing a block mapping
 in 'reader', line 241, column 9:
            type: org.apache.brooklyn.policy ...
            ^
expected <block end>, but found Scalar
 in 'reader', line 242, column 28:
            name: [DEPRECATED] Rolling Mean in Time Window
                               ^

at
org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.install(OsgiArchiveInstaller.java:519)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.ha.OsgiManager.install(OsgiManager.java:373)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.addItems(BasicBrooklynCatalog.java:1435)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.addItems(BasicBrooklynCatalog.java:1397)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateInitialFromUri(CatalogInitialization.java:294)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateInitial(CatalogInitialization.java:256)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateCatalogImpl(CatalogInitialization.java:232)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.catalog.internal.CatalogInitialization.populateCatalog(CatalogInitialization.java:199)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.rebind.RebindIteration.installBundlesAndRebuildCatalog(RebindIteration.java:473)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.rebind.RebindIteration.doRun(RebindIteration.java:255)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.rebind.InitialFullRebindIteration.doRun(InitialFullRebindIteration.java:69)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:282)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:575)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:525)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:523)
[123:org.apache.brooklyn.core:0.12.0]
at
org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:529)
[123:org.apache.brooklyn.core:0.12.0]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[?:?]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[?:?]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.lang.IllegalArgumentException: Error installing catalog
items
at
org.apache.brooklyn.core.mgmt.ha.OsgiManager.loadCatalogBom(OsgiManager.java:461)
~[?:?]
at
org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller$1.run(OsgiArchiveInstaller.java:445)
~[?:?]
at
org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.install(OsgiArchiveInstaller.java:496)
~[?:?]
... 19 more
Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block
mapping
 in 'reader', line 241, column 9:
            type: org.apache.brooklyn.policy ...
            ^
expected <block end>, but found Scalar
 in 'reader', line 242, column 28:
            name: [DEPRECATED] Rolling Mean in Time Window
                               ^

at
org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:569)
~[?:?]
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:157)
~[?:?]
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:147)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:224)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:199)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:153)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:199)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:153)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeValueNode(Composer.java:246)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:237)
~[?:?]
at
org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:225)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122)
~[?:?]
at org.yaml.snakeyaml.composer.Composer.getNode(Composer.java:84) ~[?:?]
at
org.yaml.snakeyaml.constructor.BaseConstructor.getData(BaseConstructor.java:104)
~[?:?]
at org.yaml.snakeyaml.Yaml$1.next(Yaml.java:471) ~[?:?]
at org.apache.brooklyn.util.yaml.Yamls.getAs(Yamls.java:89) ~[?:?]
at org.apache.brooklyn.util.yaml.Yamls.parseAll(Yamls.java:166) ~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:532)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCatalog.java:727)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCatalog.java:727)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectUrlReferencedCatalogItems(BasicBrooklynCatalog.java:1044)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromItemMetadataBlock(BasicBrooklynCatalog.java:716)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.collectCatalogItemsFromCatalogBomRoot(BasicBrooklynCatalog.java:538)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.addTypesFromBundleBom(BasicBrooklynCatalog.java:1497)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.CatalogBundleLoader.scanForCatalogInternal(CatalogBundleLoader.java:103)
~[?:?]
at
org.apache.brooklyn.core.catalog.internal.CatalogBundleLoader.scanForCatalog(CatalogBundleLoader.java:66)
~[?:?]
at
org.apache.brooklyn.core.mgmt.ha.OsgiManager.loadCatalogBom(OsgiManager.java:456)
~[?:?]
at
org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller$1.run(OsgiArchiveInstaller.java:445)
~[?:?]
at
org.apache.brooklyn.core.mgmt.ha.OsgiArchiveInstaller.install(OsgiArchiveInstaller.java:496)
~[?:?]
... 19 more
```

[1] https://github.com/apache/brooklyn-dist/pull/109
[2] https://github.com/apache/brooklyn-server/pull/840



On Wed, 20 Sep 2017 at 21:53 Duncan Godwin <dr...@apache.org> wrote:

> This is to call for a vote for the release of Apache Brooklyn 0.12.0.
>
> This release comprises of a source code distribution, and a corresponding
> binary distribution, and Maven artifacts.
>
> The source and binary distributions, including signatures, digests, etc.
> can
> be found at:
>
>
> https://dist.apache.org/repos/dist/dev/brooklyn/apache-brooklyn-0.12.0-rc2
>
> The artifact SHA-256 checksums are as follows:
>
>   73006ef48d72fde41880dd9fb2ffe4d1cb5c4cea35a3e20b32fd5d6d7f971d3b
> *apache-brooklyn-0.12.0-rc2-1.noarch.rpm
>   f52a90ae6cb9c480ac5d0b98e51821978f0a0188505408f0d2e2977682184386
> *apache-brooklyn-0.12.0-rc2-bin.tar.gz
>   333fe5eed360c940e203e1b119d6a3d521dc48d71c4944f35bd50ab12284b07c
> *apache-brooklyn-0.12.0-rc2-bin.zip
>   a6ba979df9fb9edfb983c2ece0c447a35cc70d1c556eade82abdd8a93fdebd77
> *apache-brooklyn-0.12.0-rc2-classic.tar.gz
>   377445e6e48993deba90b606b25b1120254dfcad08b89a2121321ef04df9cbd5
> *apache-brooklyn-0.12.0-rc2-classic.zip
>   644764583a1767bf7e4e916d25373df41fcac5594f3d1b4b121cbf65f78ebe38
> *apache-brooklyn-0.12.0-rc2-client-cli-linux.tar.gz
>   95a75d04abe249a030f15276aa32d31d22f1a430d008e02f0c4cdb1822130135
> *apache-brooklyn-0.12.0-rc2-client-cli-linux.zip
>   bbb0b8180465fc4fe82b40618f43a439f44ed155aad885248d3b2bc300cf8a53
> *apache-brooklyn-0.12.0-rc2-client-cli-macosx.tar.gz
>   ecec1773fd8dcff13bd0bdae2e4fa3bbf73f421f393c79dc847616b393a8218a
> *apache-brooklyn-0.12.0-rc2-client-cli-macosx.zip
>   9b8f4841a6bd05ffe0b9830a067a3f2189a934195f4aacb946f7cb435931b49a
> *apache-brooklyn-0.12.0-rc2-client-cli-windows.tar.gz
>   0d568c5067aabf067ba4ccc86a82d3c3c0488ec57530fdca8ecd67b2394dc62d
> *apache-brooklyn-0.12.0-rc2-client-cli-windows.zip
>   fb48961136c89001c84b122c107c7d49d8440cf5d877fcd8ad211f6728073097
> *apache-brooklyn-0.12.0-rc2-src.tar.gz
>   6a07a36d5d3deddb9056a63987fc9bb7dd785666a2c6967390d7db09c45a2db1
> *apache-brooklyn-0.12.0-rc2-src.zip
>   6b3a0191d1910c977fb6a8f770fa4e762b94df15b81d11f49f5784a27818d65a
> *apache-brooklyn-0.12.0-rc2-vagrant.tar.gz
>   544e4d082769de333981dcf8a21fe7958813c7452bc083ae454d64cbaa363746
> *apache-brooklyn-0.12.0-rc2-vagrant.zip
>
> The Nexus staging repository for the Maven artifacts is located at:
>
>
> https://repository.apache.org/content/repositories/orgapachebrooklyn-1048
>
> All release artifacts are signed with the following key:
>
>     https://people.apache.org/keys/committer/drigodwin.asc
>
> KEYS file available here:
>
>     https://dist.apache.org/repos/dist/release/brooklyn/KEYS
>
>
> The artifacts were built from git commit IDs:
>
> brooklyn: 38b85117f576ff686b72b98ea97d3b79e1eef009
> All of the above have been tagged as "apache-brooklyn-0.12.0-rc2"
>
> Please vote on releasing this package as Apache Brooklyn 0.12.0.
>
> The vote will be open for at least 72 hours.
> [ ] +1 Release this package as Apache Brooklyn 0.12.0
> [ ] +0 no opinion
> [ ] -1 Do not release this package because ...
>
>
> Thanks!
>
> Duncan
>
>
>
> CHECKLIST for reference
>
> [ ] Download links work.
> [ ] Binaries work.
> [ ] Checksums and PGP signatures are valid.
> [ ] Expanded source archive matches contents of RC tag.
> [ ] Expanded source archive builds and passes tests.
> [ ] LICENSE is present and correct.
> [ ] NOTICE is present and correct, including copyright date.
> [ ] All files have license headers where appropriate.
> [ ] All dependencies have compatible licenses.
> [ ] No compiled archives bundled in source archive.
> [ ] I follow this project’s commits list.
>
-- 

Thomas Bouron • Senior Software Engineer @ Cloudsoft Corporation •
https://cloudsoft.io/
Github: https://github.com/tbouron
Twitter: https://twitter.com/eltibouron