setDescription('Mount databox')
            ->addArgument('databox', InputArgument::REQUIRED, 'Database name in Mysql', null)
            ->addArgument('user_id', InputArgument::REQUIRED, 'The Id of user owner (this account became full admin on this databox)', null)
            ->addOption('db-host', null, InputOption::VALUE_OPTIONAL, 'MySQL server host')
            ->addOption('db-port', null, InputOption::VALUE_OPTIONAL, 'MySQL server port')
            ->addOption('db-user', null, InputOption::VALUE_OPTIONAL, 'MySQL server user')
            ->addOption('db-password', null, InputOption::VALUE_OPTIONAL, 'MySQL server password')
        ;
        return $this;
    }
    protected function doExecute(InputInterface $input, OutputInterface $output)
    {
        try {
            /** @var UserRepository $userRepository */
            $userRepository = $this->container['repo.users'];
            $owner = $userRepository->find($input->getArgument('user_id'));
            if (empty($owner)) {
                $output->writeln('User not found ! ');
                return;
            }
            if ($owner->isGuest() || !$this->container->getAclForUser($owner)->is_admin()) {
                $output->writeln('Admin role is required for the owner ! ');
                return;
            }
            $databoxName = $input->getArgument('databox');
            $dialog = $this->getHelperSet()->get('dialog');
            $connectionSettings = new DataboxConnectionSettings(
                $input->getOption('db-host')?:$this->container['conf']->get(['main', 'database', 'host']),
                $input->getOption('db-port')?:$this->container['conf']->get(['main', 'database', 'port']),
                $input->getOption('db-user')?:$this->container['conf']->get(['main', 'database', 'user']),
                $input->getOption('db-password')?:$this->container['conf']->get(['main', 'database', 'password'])
            );
            do {
                $continue = mb_strtolower($dialog->ask($output, ' Do you want really mount this databox? (y/N)', 'N'));
            }
            while ( ! in_array($continue, ['y', 'n']));
            if ($continue !== 'y') {
                $output->writeln('Aborting !');
                return;
            }
            /** @var DataboxService $databoxService */
            $databoxService = $this->container['databox.service'];
            \phrasea::clear_sbas_params($this->container);
            $databox = $databoxService->mountDatabox(
                $databoxName,
                $owner,
                $connectionSettings
            );
            $output->writeln("\n\tData-Box ID ".$databox->get_sbas_id()." mounted successful !\n");
        } catch (\Exception $e) {
            $output->writeln('Mount databox failed :'.$e->getMessage().'');
        }
        return 0;
    }
}