* [PATCH 0/2] Fix for #8775
@ 2015-12-10 18:17 Ed Bartosh
2015-12-10 18:17 ` [PATCH 1/2] toaster: implement checksocket command Ed Bartosh
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Ed Bartosh @ 2015-12-10 18:17 UTC (permalink / raw)
To: toaster
Hi,
Implemented new management command 'checksocket' and used it in
toaster script to check if port:address is in use before toaster starts.
The following changes since commit 8e8b585191cafe9420e31de58d786afffe93d532:
toasterconf: remove SDKMACHINE variable (2015-12-10 16:28:21 +0200)
are available in the git repository at:
git://git.yoctoproject.org/poky-contrib ed/toaster/checksocket
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=ed/toaster/checksocket
Ed Bartosh (2):
toaster: implement checksocket command
toaster: check if address:port is in use
bitbake/bin/toaster | 5 ++
.../toastermain/management/commands/checksocket.py | 69 ++++++++++++++++++++++
2 files changed, 74 insertions(+)
create mode 100644 bitbake/lib/toaster/toastermain/management/commands/checksocket.py
--
Regards,
Ed
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 1/2] toaster: implement checksocket command 2015-12-10 18:17 [PATCH 0/2] Fix for #8775 Ed Bartosh @ 2015-12-10 18:17 ` Ed Bartosh 2015-12-10 18:17 ` [PATCH 2/2] toaster: check if address:port is in use Ed Bartosh 2015-12-11 13:43 ` [PATCH 0/2] Fix for #8775 Ed Bartosh 2 siblings, 0 replies; 4+ messages in thread From: Ed Bartosh @ 2015-12-10 18:17 UTC (permalink / raw) To: toaster Implemented new management command to check if it's possible to listen on specified address:port. [YOCTO #8775] Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> --- .../toastermain/management/commands/checksocket.py | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 bitbake/lib/toaster/toastermain/management/commands/checksocket.py diff --git a/bitbake/lib/toaster/toastermain/management/commands/checksocket.py b/bitbake/lib/toaster/toastermain/management/commands/checksocket.py new file mode 100644 index 0000000..0399b86 --- /dev/null +++ b/bitbake/lib/toaster/toastermain/management/commands/checksocket.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# BitBake Toaster Implementation +# +# Copyright (C) 2015 Intel Corporation +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +"""Custom management command checksocket.""" + +import errno +import socket + +from django.core.management.base import BaseCommand, CommandError +from django.utils.encoding import force_text + +DEFAULT_ADDRPORT = "0.0.0.0:8000" + +class Command(BaseCommand): + """Custom management command.""" + + help = 'Check if Toaster can listen on address:port' + + def add_arguments(self, parser): + parser.add_argument('addrport', nargs='?', default=DEFAULT_ADDRPORT, + help='ipaddr:port to check, %s by default' % \ + DEFAULT_ADDRPORT) + + def handle(self, *args, **options): + addrport = options['addrport'] + if ':' not in addrport: + raise CommandError('Invalid addr:port specified: %s' % addrport) + splitted = addrport.split(':') + try: + splitted[1] = int(splitted[1]) + except ValueError: + raise CommandError('Invalid port specified: %s' % splitted[1]) + self.stdout.write('Check if toaster can listen on %s' % addrport) + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sock.bind(tuple(splitted)) + except (socket.error, OverflowError) as err: + errors = { + errno.EACCES: 'You don\'t have permission to access port %s' \ + % splitted[1], + errno.EADDRINUSE: 'Port %s is already in use' % splitted[1], + errno.EADDRNOTAVAIL: 'IP address can\'t be assigned to', + } + if hasattr(err, 'errno') and err.errno in errors: + errtext = errors[err.errno] + else: + errtext = force_text(err) + raise CommandError(errtext) + + self.stdout.write("OK") -- 2.1.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] toaster: check if address:port is in use 2015-12-10 18:17 [PATCH 0/2] Fix for #8775 Ed Bartosh 2015-12-10 18:17 ` [PATCH 1/2] toaster: implement checksocket command Ed Bartosh @ 2015-12-10 18:17 ` Ed Bartosh 2015-12-11 13:43 ` [PATCH 0/2] Fix for #8775 Ed Bartosh 2 siblings, 0 replies; 4+ messages in thread From: Ed Bartosh @ 2015-12-10 18:17 UTC (permalink / raw) To: toaster Used new management command checksocket to check if Toaster can listen on address:port. [YOCTO #8775] Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com> --- bitbake/bin/toaster | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster index 1c1e029..f43bcb1 100755 --- a/bitbake/bin/toaster +++ b/bitbake/bin/toaster @@ -309,6 +309,11 @@ fi echo "The system will $CMD." +# check if addr:port is not in use +if [ "$CMD" == 'start' ]; then + python $BBBASEDIR/lib/toaster/manage.py checksocket "0.0.0.0:$WEB_PORT" || return 1 +fi + # Make sure it's safe to run by checking bitbake lock lock=1 -- 2.1.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] Fix for #8775 2015-12-10 18:17 [PATCH 0/2] Fix for #8775 Ed Bartosh 2015-12-10 18:17 ` [PATCH 1/2] toaster: implement checksocket command Ed Bartosh 2015-12-10 18:17 ` [PATCH 2/2] toaster: check if address:port is in use Ed Bartosh @ 2015-12-11 13:43 ` Ed Bartosh 2 siblings, 0 replies; 4+ messages in thread From: Ed Bartosh @ 2015-12-11 13:43 UTC (permalink / raw) To: toaster Please ignore this patchset. It's included into the next bigger patchset. Thanks. On Thu, Dec 10, 2015 at 08:17:03PM +0200, Ed Bartosh wrote: > Hi, > > Implemented new management command 'checksocket' and used it in > toaster script to check if port:address is in use before toaster starts. > > The following changes since commit 8e8b585191cafe9420e31de58d786afffe93d532: > > toasterconf: remove SDKMACHINE variable (2015-12-10 16:28:21 +0200) > > are available in the git repository at: > > git://git.yoctoproject.org/poky-contrib ed/toaster/checksocket > http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=ed/toaster/checksocket > > Ed Bartosh (2): > toaster: implement checksocket command > toaster: check if address:port is in use > > bitbake/bin/toaster | 5 ++ > .../toastermain/management/commands/checksocket.py | 69 ++++++++++++++++++++++ > 2 files changed, 74 insertions(+) > create mode 100644 bitbake/lib/toaster/toastermain/management/commands/checksocket.py > > -- > Regards, > Ed > > -- > _______________________________________________ > toaster mailing list > toaster@yoctoproject.org > https://lists.yoctoproject.org/listinfo/toaster -- -- Regards, Ed ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-12-11 14:14 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-12-10 18:17 [PATCH 0/2] Fix for #8775 Ed Bartosh 2015-12-10 18:17 ` [PATCH 1/2] toaster: implement checksocket command Ed Bartosh 2015-12-10 18:17 ` [PATCH 2/2] toaster: check if address:port is in use Ed Bartosh 2015-12-11 13:43 ` [PATCH 0/2] Fix for #8775 Ed Bartosh
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.