Why SSH Credentials are something Blueprint-related and not Service-related?

Hello everybody! :smiley:

This night I was playing with Harbormaster and its Automation part to try the cute “Land” button to approve Differentials patches from the web interface.

In short I was trying to describe this basic use case of two SSH users on a machine. I mean:

  • one SSH user to build (foo@host)
  • one SSH user to land (bar@host)

At first I admit that I had no idea what I was doing (related meme) because I was the first one in the world meeting this exception:

DrydockSlotLockException: Unable to allocate any binding as a resource

Anyway, I’ve fixed that issue, and I’ve understood how, so I’ve produced three small schemas to share with you some questions:

First question:

  1. Why is bad to describe my use case (two SSH users, one host) in Phabricator with the first schema from the left? I assume this is bad because you get an Unable to allocate any binding as a resource.

The first schema from the left had sense to me because the SSH Credentials are something Host-Blueprint-related and not something related to a service/interface.

The second schema is how I’ve fixed, creating two services, describing the same SSH server on the same host, but with different names…

Second question:

  1. Is the second picture a workaround or is that a feature? (for example to be very generic to describe something that I cannot imagine… in this case can you describe this scenario?)

Third question:

  1. Why Credentials are Blueprint-related? It seems more logical to me to describe how to enter the service in the service, and describe the purpose in the Blueprint. This is shown in the last picture (the right one).

P.S.

Talking about security: someone may say that two Unix users (two SSH users) on the same host is bad to build and land. But they cannot write each-other stuff as default and this should be enough to have a nice separation. But I’m open to suggestions.

What do you think about my three questions? :slight_smile: Cheers!

1 Like