Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot deploy apps on Azure when mTLS is enabled on the cell(s) #300

Closed
paolostivanin opened this issue Apr 19, 2017 · 25 comments
Closed

Cannot deploy apps on Azure when mTLS is enabled on the cell(s) #300

paolostivanin opened this issue Apr 19, 2017 · 25 comments

Comments

@paolostivanin
Copy link
Contributor

paolostivanin commented Apr 19, 2017

When the mTLS is enabled (https://github.com/cloudfoundry/diego-release/blob/develop/manifest-generation/diego.yml#L240) it's not possible to deploy apps on Azure. On AWS and Openstack everything works fine though.

cf push hello-php
Downloading dotnet_core_buildpack...
Downloading python_buildpack...
Downloading php_buildpack...
Downloading staticfile_buildpack...
Downloading go_buildpack...
Downloading dotnet_core_buildpack failed
Downloading binary_buildpack...
Downloading staticfile_buildpack failed
Downloading java_buildpack...
Downloading python_buildpack failed
Downloading ruby_buildpack...
Downloading php_buildpack failed
Downloading nodejs_buildpack...
Downloading go_buildpack failed
Downloading binary_buildpack failed
Downloading java_buildpack failed
Destroying container
Downloading ruby_buildpack failed
Downloading nodejs_buildpack failed
Successfully destroyed container

FAILED
Error restarting application: StagingError

Diego manifest:

- name: cell_z1
  ...
    properties:
      tls: &cell-tls-configuration
        ca_cert: (( diego ca cert ))
        cert: (( rep server cert ))
        key: (( rep server key ))

  capi:
    cc_uploader:
      dropsonde_port: ~
      cc:
        ca_cert: (( diego ca cert ))
        client_cert: (( cc uploader client cert ))
        client_key: (( rcc uploader client key ))
      mutual_tls:
        ca_cert: (( diego ca cert ))
        server_cert: (( cc uploader server cert ))
        server_key: (( cc uploader server cert ))

CF manifest:

cc:
    mutual_tls:
      ca_cert: (( diego ca cert ))
      public_cert: (( cloud controller cert ))
      private_key: (( cloud controller key ))

Info:
CF 257
Diego 1.13.0
Bosh 261.4
Stemcell 3363.15

@cf-gitbot
Copy link

We have created an issue in Pivotal Tracker to manage this:

https://www.pivotaltracker.com/story/show/143940609

The labels on this github issue will be updated when the story is started.

@paolostivanin
Copy link
Contributor Author

More logs from the rep.stdout.log

{"timestamp":"1492598597.527005196","source":"rep","message":"rep.executing-container-operation.skipped-because-container-does-not-exist","log_level":1,"data":{"container-guid":"e814f21e-da81-4d2b-88c4-fccc02f0f954","session":"150"}}
{"timestamp":"1492598597.527124405","source":"rep","message":"rep.executing-container-operation.finished","log_level":1,"data":{"container-guid":"e814f21e-da81-4d2b-88c4-fccc02f0f954","session":"150"}}
{"timestamp":"1492598597.526906967","source":"rep","message":"rep.executing-container-operation.task-processor.run-container.containerstore-create.node-create.downloader.download.fetch-request","log_level":1,"data":{"container-guid":"e8
14f21e-da81-4d2b-88c4-fccc02f0f954","container-state":"reserved","duration-ns":4154500,"guid":"e814f21e-da81-4d2b-88c4-fccc02f0f954","host":"BLABLA.blob.core.windows.net","session":"148.1.3.2.1.10.3"}}
{"timestamp":"1492598597.527252436","source":"rep","message":"rep.executing-container-operation.task-processor.run-container.containerstore-create.node-create.downloader.download.completed","log_level":1,"data":{"container-guid":"e814f2
1e-da81-4d2b-88c4-fccc02f0f954","container-state":"reserved","duration-ns":130900,"guid":"e814f21e-da81-4d2b-88c4-fccc02f0f954","host":"BLABLA.blob.core.windows.net","session":"148.1.3.2.1.10.3"}}
{"timestamp":"1492598597.527281761","source":"rep","message":"rep.executing-container-operation.task-processor.run-container.containerstore-create.node-create.downloader.file-cache.close-directory.starting","log_level":1,"data":{"cache_
key":"6d1aea81db0700232310c1595ddad2f8","container-guid":"e814f21e-da81-4d2b-88c4-fccc02f0f954","container-state":"reserved","dir_path":"/var/vcap/data/executor_cache/6d1aea81db0700232310c1595ddad2f8-1492005585194067300-8.d","guid":"e81
4f21e-da81-4d2b-88c4-fccc02f0f954","session":"148.1.3.2.1.10.4"}}
{"timestamp":"1492598597.527331114","source":"rep","message":"rep.executing-container-operation.task-processor.run-container.containerstore-create.node-create.downloader.file-cache.close-directory.finished","log_level":1,"data":{"cache_
key":"6d1aea81db0700232310c1595ddad2f8","container-guid":"e814f21e-da81-4d2b-88c4-fccc02f0f954","container-state":"reserved","dir_path":"/var/vcap/data/executor_cache/6d1aea81db0700232310c1595ddad2f8-1492005585194067300-8.d","guid":"e81
4f21e-da81-4d2b-88c4-fccc02f0f954","session":"148.1.3.2.1.10.4"}}
{"timestamp":"1492598597.527385235","source":"rep","message":"rep.executing-container-operation.task-processor.run-container.containerstore-create.node-create.failed-fetching-cache-dependency","log_level":2,"data":{"cache-key":"b62a1e96
-e592-4e3f-8329-8e2dd3a1d801_c8c9c8cdfb757857ed23b86f0640f2fc5cfaa7c839eb589440453ad52efb436d","container-guid":"e814f21e-da81-4d2b-88c4-fccc02f0f954","container-state":"reserved","download-url":"https://BLABLA.blob.cor
e.windows.net/buildpacks/b6/2a/b62a1e96-e592-4e3f-8329-8e2dd3a1d801_c8c9c8cdfb757857ed23b86f0640f2fc5cfaa7c839eb589440453ad52efb436d?sp=r\u0026sv=2015-04-05\u0026sr=b\u0026se=2017-04-19T11%3A43%3A16Z\u0026spr=https\u0026sig=TACKOJMEwVg4
GeuTKmHHOO9lDNlHB3TKGIyxOpaHGco%3D","error":"Get https://BLABLA.blob.core.windows.net/buildpacks/b6/2a/b62a1e96-e592-4e3f-8329-8e2dd3a1d801_c8c9c8cdfb757857ed23b86f0640f2fc5cfaa7c839eb589440453ad52efb436d?sp=r\u0026sv=2
015-04-05\u0026sr=b\u0026se=2017-04-19T11%3A43%3A16Z\u0026spr=https\u0026sig=TACKOJMEwVg4GeuTKmHHOO9lDNlHB3TKGIyxOpaHGco%3D: read tcp 10.1.7.67:33836-\u003e23.99.32.78:443: read: connection reset by peer","guid":"e814f21e-da81-4d2b-88c4
-fccc02f0f954","session":"148.1.3.2.1"}}

@emalm
Copy link
Member

emalm commented Apr 19, 2017

Thanks for the report, @paolostivanin. We'll prioritize this for the Diego team to investigate. In the meantime, is it correct that your Azure deployment is configured to use Azure Blob Storage for the CC blobstore, and that the staging task contains a CC URL for the droplet that redirects to the Azure URL? That's my impression from the BLABLA.blob.core.windows.net hostname in the log snippet from the rep. Also, is it correct that this error occurs on a Linux cell VM (again, that's my guess from the fact that you're attempting to stage a PHP app).

From the read tcp 10.1.7.67:33836-\u003e23.99.32.78:443: read: connection reset by peer error in the log snippet, it looks like the Azure server is the side that terminates the connection. Is there any chance you could post the PEM-encoded certificate that the cell is using for its asset client? I'd be surprised if the Azure server is even requesting that client certificate as part of the TLS handshake, but if it is and if that certificate is misconfigured (say, with the wrong key usage or extended key usage extensions), it could be causing the server to fail the handshake and then to kill the connection.

Oh, it might also be informative to connect to that Azure URL with the same client credentials using curl or openssl s_client in verbose/debug mode. That also might help us determine whether it's an issue with the TLS handshake, or something else past that handshake.

Best,
Eric, CF Diego PM

@paolostivanin
Copy link
Contributor Author

@ematpl we got an answer from MS about the problem:

mutual TLS communication with storage account is not supported.

but if I got it right, the mTLS is between the cell and the cc_bridge, am I right? Then the cloud controller will communicate with the blobstore using "standard" TLS.
Or also the CC is communicating with the blobstore using mTLS if this option is enabled?

@paolostivanin
Copy link
Contributor Author

paolostivanin commented Apr 20, 2017

@ematpl

  • yes, it's a linux OS. More specifically, we are using THIS stemcell (3363.15). We tried also downgrading to diego 1.12 and 1.11 but the issue was still there. Same errors on the log.
  • yes, we are using the Azure blob storage.
  • please find attached the rep certs and the diego ca cert. They should be correct because 1) we are using the same cmds that are on the diego-release/scripts folder and 2) on AWS and Openstack everything is working fine

certs.zip

@paolostivanin
Copy link
Contributor Author

@ematpl what do you mean with "... with the same client creds using ..."? The cell is using the rep server cert not the client one (as written here)

@paolostivanin
Copy link
Contributor Author

paolostivanin commented Apr 20, 2017

Just for my understanding, Is the connection flow blobstore <-> cloud controller <-> cc_bridge <-> bbs <-> cell_z* correct?
And, if yes, how does the mTLS introduced by Diego 1.11.0 work exactly?

Thanks :)

@paolostivanin
Copy link
Contributor Author

strangely enough, I was looking at the traffic on the cc_bridge on our openstack dev landscape and, while here everything is working fine, the traffic still goes through port 9090 instead of 9091:

11:50:43.703348 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], seq 57660991:57670871, ack 117, win 229, options [nop,nop,TS val 302572851 ecr 301494350], length 9880
11:50:43.703367 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], seq 57670871:57691143, ack 117, win 229, options [nop,nop,TS val 302572851 ecr 301494350], length 20272
11:50:43.703444 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57691143, win 2843, options [nop,nop,TS val 301494350 ecr 302572851], length 0
11:50:43.703469 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], seq 57691143:57712863, ack 117, win 229, options [nop,nop,TS val 302572851 ecr 301494350], length 21720
11:50:43.703494 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], seq 57712863:57755863, ack 117, win 229, options [nop,nop,TS val 302572851 ecr 301494350], length 43000
11:50:43.703506 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], seq 57755863:57760207, ack 117, win 229, options [nop,nop,TS val 302572851 ecr 301494350], length 4344
11:50:43.703535 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], seq 57760207:57801191, ack 117, win 229, options [nop,nop,TS val 302572851 ecr 301494350], length 40984
11:50:43.703546 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [P.], seq 57801191:57813540, ack 117, win 229, options [nop,nop,TS val 302572851 ecr 301494350], length 12349
11:50:43.703644 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 2288, options [nop,nop,TS val 301494350 ecr 302572851], length 0
11:50:43.709875 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 4809, options [nop,nop,TS val 301494352 ecr 302572851], length 0
11:50:43.717569 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 9905, options [nop,nop,TS val 301494353 ecr 302572851], length 0
11:50:43.732879 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 20726, options [nop,nop,TS val 301494357 ecr 302572851], length 0
11:50:45.909405 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [P.], seq 117:238, ack 57813540, win 24576, options [nop,nop,TS val 301494901 ecr 302572851], length 121
11:50:45.909748 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], ack 238, win 229, options [nop,nop,TS val 302573403 ecr 301494901], length 0
11:51:15.913909 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], ack 238, win 229, options [nop,nop,TS val 302580904 ecr 301494901], length 0
11:51:15.913927 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 24576, options [nop,nop,TS val 301502403 ecr 302573403], length 0
11:51:45.961676 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], ack 238, win 229, options [nop,nop,TS val 302588416 ecr 301502403], length 0
11:51:45.961696 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 24576, options [nop,nop,TS val 301509914 ecr 302573403], length 0
11:52:16.041565 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], ack 238, win 229, options [nop,nop,TS val 302595936 ecr 301509914], length 0
11:52:16.041589 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 24576, options [nop,nop,TS val 301517434 ecr 302573403], length 0
11:52:46.121576 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], ack 238, win 229, options [nop,nop,TS val 302603456 ecr 301517434], length 0
11:52:46.121599 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 24576, options [nop,nop,TS val 301524954 ecr 302573403], length 0
11:53:16.201923 IP cell-z1-0.node.dc1.cf.internal.49382 > cc-bridge-z1-0.node.dc1.cf.internal.9090: Flags [.], ack 238, win 229, options [nop,nop,TS val 302610976 ecr 301524954], length 0
11:53:16.201940 IP cc-bridge-z1-0.node.dc1.cf.internal.9090 > cell-z1-0.node.dc1.cf.internal.49382: Flags [.], ack 57813540, win 24576, options [nop,nop,TS val 301532475 ecr 302573403], length 0

@paolostivanin
Copy link
Contributor Author

$ openssl s_client -connect BLABLA.blob.core.windows.net:443 -cert diego-certs/rep-certs/server.crt -key diego-certs/rep-certs/server.key 
CONNECTED(00000003)
depth=1 C = US, ST = Washington, L = Redmond, O = Microsoft Corporation, OU = Microsoft IT, CN = Microsoft IT SSL SHA2
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=*.blob.core.windows.net
   i:/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/OU=Microsoft IT/CN=Microsoft IT SSL SHA2
 1 s:/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/OU=Microsoft IT/CN=Microsoft IT SSL SHA2
   i:/C=IE/O=Baltimore/OU=CyberTrust/CN=Baltimore CyberTrust Root
---
Server certificate
-----BEGIN CERTIFICATE-----
here we have the cert
-----END CERTIFICATE-----
subject=/CN=*.blob.core.windows.net
issuer=/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/OU=Microsoft IT/CN=Microsoft IT SSL SHA2
---
No client certificate CA names sent
---
SSL handshake has read 3683 bytes and written 509 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-SHA384
    Session-ID: long string here
    Session-ID-ctx: 
    Master-Key: long string here
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1492695355
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---
read:errno=104

@caod123
Copy link
Contributor

caod123 commented Apr 20, 2017

Or also the CC is communicating with the blobstore using mTLS if this option is enabled?

Most blobstores don't support client-side cert validation so in this case the Fog library handles interactions with the Azure blobstore (likely just standard TLS)

Just for my understanding, Is the connection flow blobstore <-> cloud controller <-> cc_bridge <-> bbs <-> cell_z* correct?

Something more like
blobstore <-(upload)-> cc <-> cc_bridge <-> bbs <-> auctioneer <-> cell <-(download)-> blobstore

Right now it would seem that the rep is failing to download from the blobstore, but CC has successfully uploaded to the blobstore. It's hard to say if this is a mutual TLS issue.

@anoop2811
Copy link

@paolostivanin specifically with regard to the data flow to download from blobstore, the flow would be like the following after the cell rep has the information from the bbs about the lrp,
cell -> cc -> blobstore. The cc would do an HTTP 301 url redirect to the actual blobstore url.

@paolostivanin
Copy link
Contributor Author

paolostivanin commented Apr 21, 2017

I found the issue!
So, starting from CF 253 only 2 cipher suites are supported by gorouter and we can see that from the following pic:

screen shot 2017-04-21 at 8 49 21 am

This is a dump of the traffic on port 80 and port 443 from within the cell. During the ssl handshake the client is asking for the above 2 ciphers but...

screen shot 2017-04-21 at 8 36 53 am

Basically, the SSL connection cannot be established because of missing ciphers support from the blobstore.

PS when will this feature become mandatory?

@paolostivanin
Copy link
Contributor Author

paolostivanin commented Apr 21, 2017

Summary:
When this option to use TLS is enabled the cell starts the SSL handshake asking only for TLS v1.2 and these cipher suites:

    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)

The ssl handshake then fails because the blobstore doesn't support the aforementioned ciphers.
But when the TLS option is disabled the behavior is a little bit different. The cell asks for TLS v1.2 but with a lot more ciphers, as shown below:

Cipher Suites (14 suites)
    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
    Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
    Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
    Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
    Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
    Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
    Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
    Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
    Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
    Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
    Cipher Suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)
    Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)

The server then answers with the hello and chooses:
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)

May I ask you when are you planning to make this option mandatory? Do you already have an ETA?

@caod123
Copy link
Contributor

caod123 commented Apr 21, 2017

@paolostivanin great find! @ematpl might have a better idea of when we plan to make it the default. If this is the case we can potentially push that out until the blobstore supports it.

@paolostivanin
Copy link
Contributor Author

@caod123 thanks :) we are also in touch with MSFT, let's see what they will answer!

@emalm
Copy link
Member

emalm commented Apr 21, 2017

Thanks for tracking that issue down, @paolostivanin! There has recently been an effort to make TLS clients and servers throughout Cloud Foundry more restrictive in the cipher suites and TLS versions they accept. It looks like when the client credentials are configured, the TLS configuration for the HTTP client that the rep uses in uploads and downloads also happens to include this more restricted set of cipher suites (from https://github.com/cloudfoundry/cfhttp/blob/012f40c12b36dd67274e611f4f44ed932ae155d5/cf_http.go#L17-L20) instead of the larger default set configured in Golang (https://golang.org/pkg/crypto/tls/#pkg-constants). Even if Microsoft enables those two GCM cipher suites on the Azure Blob Storage service relatively soon, there are potentially other blob stores or asset servers that wouldn't support them. I'll check with other security-minded folks on CF, but I think we'll probably configure this particular HTTP client to support a broader set of cipher suites for TLS 1.2 communication.

@zrob and the CAPI team have been driving this particular set of TLS changes in order to finish securing communication between Cloud Controller, the CC-Bridge, and Diego, so they would be most authoritative about when these changes will be required. In any case, I'm hoping to get the cipher-suite relaxation into Diego before that happens.

Thanks again,
Eric

@zrob
Copy link
Contributor

zrob commented Apr 21, 2017

@paolostivanin The CAPI is working on a document to describe how operators can opt in to the more secure TLS communications b/t CC and Diego. The code should be available as of either CF 257 or 258. Once the guide is available, we will wait around a month before removing the opt-in option and making it mandatory.

@paolostivanin
Copy link
Contributor Author

@zrob and about about supporting a broader cipher suites as @ematpl was suggesting? Would that be possible? Thanks

@emalm
Copy link
Member

emalm commented Apr 24, 2017

@paolostivanin That cipher-suite configuration is on the Diego side, in the cell rep. I've added https://www.pivotaltracker.com/story/show/144119911 for that work, and the Diego team will likely get to it later this week.

Best,
Eric

@amhuber
Copy link

amhuber commented Apr 28, 2017

For what it's worth, this is also breaking the TLS handshake to our Swift endpoints.

@emalm
Copy link
Member

emalm commented Apr 28, 2017

Thanks, @amhuber, I just finished acceptance on https://www.pivotaltracker.com/story/show/144119911 and will be releasing Diego v1.15.0 with the correct behavior shortly.

Best,
Eric

@emalm
Copy link
Member

emalm commented Apr 28, 2017

Closing, as Diego v1.15.0 resolves the issue. Please let us know if you encounter any further problems!

Thanks,
Eric

@emalm emalm closed this as completed Apr 28, 2017
@amhuber
Copy link

amhuber commented Apr 28, 2017

Confirmed fixed with 1.15.0, thanks!

@emalm
Copy link
Member

emalm commented Apr 28, 2017

Fantastic, thanks for letting us know, @amhuber !

@paolostivanin
Copy link
Contributor Author

I can also confirm that Diego 1.15.x solved the problem!
Thank you all!

n4wei pushed a commit that referenced this issue Oct 9, 2019
Submodule src/github.com/onsi/ginkgo eea6ad008..d90e0dcda:
  > Add integration test
  > Fix coverage files combining
  > A new CLI option: -ginkgo.reportFile <file path> (#601)
  > v1.10.2
  > speed up table entry generateIt() (#609)
  > Fix. Write errors to stderr instead of stdout (#610)
  > v1.10.1
  > stack backtrace: fix skipping (#600)
  > v1.10.0
  > stack backtrace: fix alignment and skipping
  > fix typo in documentation
  > v1.9.0
  > Fixed typos in comments
  > gofmt code
  > Simplify code
  > Simplify concatenation, incrementation and function assignment
  > Avoid unnecessary conversions
  > JUnit: include more detailed information about panic
  > Option to print output into report, when tests have passed
  > Print help to stdout when the user asks for help
Submodule src/github.com/onsi/gomega 41673fd8f..bdebf9e0e:
  > v1.7.0
  > export format property variables (#347)
  > minor fix in the documentation of ExpectWithOffset (#358)
  > v1.6.0
  > Remove duplication in XML matcher tests
  > Remove unnecessary conversions (#357)
  > Fixed import order (#353)
  > Added missing error handling in test (#355)
  > Simplify code (#356)
  > Simplify code (#354)
  > Fixed typos (#352)
  > Add failure message tests to BeElementOf matcher
  > Update go-testcov untested sections
  > mark all uncovered files so go-testcov ./... works
  > display special chars on error
  > Reenable gotip in travis
  > Add BeElementOf matcher
  > Fix the typo of comment (#345)
  > Optimize contain_element_matcher
  > v1.5.0
  > add analogous tests to fields_test.go
  > added tests for error messages
  > remove redundant validity check
  > ensure error messages refer to the underlying interface, not the `reflect.Value`
  > Run CI on go 1.12 and not 1.9
  > Turn off gotip on travis
  > Mark session_test.go with build tag (#324)
  > more matcher tests
  > try to appease linters
  > MatchKeys
  > Clarify message for unexpected errors
  > make it easy to run everythin that travis would do
  > remove go 1.6, 1.7, 1.8 from the build matrix, and add tip
  > fix lint errors and use type aliases to remove stuttering
  > remove duplication of code and add docs to public function
  > v1.4.3
  > test yaml parser errors and better comment on why panics are there
  > add test for not matcher with errors
  > add test for or matcher with errors
  > add tests for positive failure messages of Panic
  > ensure file name and line numbers are correctly reported
  > Fail the build if gofmt detects any changes required
  > Make changes to satisfy gofmt
  > Move GO111MODULE into more suitable env key in Travis
  > Add coverage for BeZero and Succeed matchers (#307)
  > Fixed matcher for content-type (#305)
  > v1.4.2
  > Refactor goexec build test
  > Updates for Go v1.11 official release
  > Add go.mod and go.sum files to define the gomega go module
  > Work around go vet issue with Go v1.11 (#300)
  > Better output when using with go XUnit-style tests, fixes #255 (#297)
  > Fix MatchJSON fail to parse json.RawMessage (#298)
  > Move funcs shared by MatchJSON and MatchYAML to a dedicated support file
  > Added first failure path matching for YAML (#279)
  > show threshold in failure message of BeNumericallyMatcher (#293)
  > v1.4.1
  > Update documentation (#289)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants