On Aug 16, 2006, at 11:30 PM, Peter Wilkinson wrote:
> Hi,
> I've noticed the new version of QP and QPY along with Durus, nice
> stuff.
That reminds me, I should send an announcement about QP and Qpy.
>
> One quick thing that I'm running into that might be an issue is the
> new get_durus_address method.
>
> def get_durus_address(self):
> """() -> (host:str, port:int)|str
> The address at which the Durus StorageServer listens.
> """
> address = self.get('durus_address')
> if type(address) is tuple:
> return address
> if bool(address):
> return join(self.get_var_directory(),
> address or '%s.durus_server' % self.get_name())
> else:
> return None
>
> Given that, my reading is that durus_address=('localhost', 8002)
> will do the usual socket thing, and to get a unix socket I need to
> set a string value. Is the section that does "address or '%
> s.durus_server' % self.get_name()" slightly wrong as I can't see a
> way to get it to generate the name automatically?
> durus_address=True fails as True will then get passed into join
> which tries to do a .startswith() on it and durus_address=False
> stops Durus from starting at all.
>
> The logic that makes sense to me would be:
> durus_address=('localhost', 8002) -> usual
> durus_address=False (or no setting) -> off
> durus_address=True -> Unix socket, '%s.durus_server' % self.get_name()
> durus_address="string" -> Unix socket, whatever that value is.
>
> I hope I'm not missing something obvious here.
No. You are right, this code is goofy.
I'd prefer to leave the True/False out of it.
The setting should be a string, or a tuple, and that's it.
Does this look better?
def get_durus_address(self):
"""() -> (host:str, port:int)|str
The address at which the Durus StorageServer listens.
"""
address = self.get('durus_address')
if type(address) is tuple:
return address
if address:
return join(self.get_var_directory(), address)
else:
return None