def setup_code(non_interactive, **kwargs): """Setup a new code.""" from aiida.common.exceptions import ValidationError from aiida.orm.utils.builders.code import CodeBuilder if not non_interactive: try: pre, post = ensure_scripts(kwargs.pop('prepend_text', ''), kwargs.pop('append_text', ''), kwargs) except InputValidationError as exception: raise click.BadParameter( 'invalid prepend and or append text: {}'.format(exception)) kwargs['prepend_text'] = pre kwargs['append_text'] = post if kwargs.pop('on_computer'): kwargs['code_type'] = CodeBuilder.CodeType.ON_COMPUTER else: kwargs['code_type'] = CodeBuilder.CodeType.STORE_AND_UPLOAD code_builder = CodeBuilder(**kwargs) code = code_builder.new() try: code.store() code.reveal() except ValidationError as exception: echo.echo_critical('Unable to store the Code: {}'.format(exception)) echo.echo_success('Code<{}> {} created'.format(code.pk, code.full_label))
def setup_code(non_interactive, **kwargs): """Add a Code.""" from aiida.common.exceptions import ValidationError if not non_interactive: pre, post = ensure_scripts(kwargs.pop('prepend_text', ''), kwargs.pop('append_text', ''), kwargs) kwargs['prepend_text'] = pre kwargs['append_text'] = post if kwargs.pop('on_computer'): kwargs['code_type'] = CodeBuilder.CodeType.ON_COMPUTER else: kwargs['code_type'] = CodeBuilder.CodeType.STORE_AND_UPLOAD code_builder = CodeBuilder(**kwargs) code = code_builder.new() try: code.store() code.reveal() # newly setup code shall not be hidden except ValidationError as err: echo.echo_critical( 'unable to store the code: {}. Exiting...'.format(err)) echo.echo_success('code "{}" stored in DB.'.format(code.label)) echo.echo_info('pk: {}, uuid: {}'.format(code.pk, code.uuid))
def computer_duplicate(ctx, computer, non_interactive, **kwargs): """Duplicate a computer allowing to change some parameters.""" from aiida import orm from aiida.orm.utils.builders.computer import ComputerBuilder if kwargs['label'] in get_computer_names(): echo.echo_critical('A computer called {} already exists'.format( kwargs['label'])) if not non_interactive: try: pre, post = ensure_scripts(kwargs.pop('prepend_text', ''), kwargs.pop('append_text', ''), kwargs) except InputValidationError as exception: raise click.BadParameter( 'invalid prepend and or append text: {}'.format(exception)) kwargs['prepend_text'] = pre kwargs['append_text'] = post kwargs['transport'] = kwargs['transport'].name kwargs['scheduler'] = kwargs['scheduler'].name computer_builder = ctx.computer_builder for key, value in kwargs.items(): if value is not None: setattr(computer_builder, key, value) try: computer = computer_builder.new() except (ComputerBuilder.ComputerValidationError, ValidationError) as e: echo.echo_critical('{}: {}'.format(type(e).__name__, e)) else: echo.echo_success('stored computer {}<{}>'.format( computer.name, computer.pk)) try: computer.store() except ValidationError as err: echo.echo_critical( 'unable to store the computer: {}. Exiting...'.format(err)) else: echo.echo_success('Computer<{}> {} created'.format( computer.pk, computer.name)) is_configured = computer.is_user_configured(orm.User.objects.get_default()) if not is_configured: echo.echo_info( 'Note: before the computer can be used, it has to be configured with the command:' ) echo.echo_info(' verdi computer configure {} {}'.format( computer.get_transport_type(), computer.name))
def computer_setup(ctx, non_interactive, **kwargs): """Create a new computer.""" from aiida.orm.utils.builders.computer import ComputerBuilder if kwargs['label'] in get_computer_names(): echo.echo_critical( 'A computer called {c} already exists. ' 'Use "verdi computer duplicate {c}" to set up a new ' 'computer starting from the settings of {c}.'.format( c=kwargs['label'])) if not non_interactive: try: pre, post = ensure_scripts(kwargs.pop('prepend_text', ''), kwargs.pop('append_text', ''), kwargs) except InputValidationError as exception: raise click.BadParameter( 'invalid prepend and or append text: {}'.format(exception)) kwargs['prepend_text'] = pre kwargs['append_text'] = post kwargs['transport'] = kwargs['transport'].name kwargs['scheduler'] = kwargs['scheduler'].name computer_builder = ComputerBuilder(**kwargs) try: computer = computer_builder.new() except (ComputerBuilder.ComputerValidationError, ValidationError) as e: echo.echo_critical('{}: {}'.format(type(e).__name__, e)) try: computer.store() except ValidationError as err: echo.echo_critical( 'unable to store the computer: {}. Exiting...'.format(err)) else: echo.echo_success('Computer<{}> {} created'.format( computer.pk, computer.name)) echo.echo_info( 'Note: before the computer can be used, it has to be configured with the command:' ) echo.echo_info(' verdi computer configure {} {}'.format( computer.get_transport_type(), computer.name))
def setup_computer(non_interactive, **kwargs): """Add a Computer.""" if kwargs['label'] in get_computer_names(): echo.echo_critical('A computer called {} already exists.\n' 'Use "verdi computer update" to update it, and be ' 'careful if you really want to modify a database ' 'entry!'.format(kwargs['label'])) if not non_interactive: pre, post = ensure_scripts(kwargs.pop('prepend_text', ''), kwargs.pop('append_text', ''), kwargs) kwargs['prepend_text'] = pre kwargs['append_text'] = post kwargs['transport'] = kwargs['transport'].name kwargs['scheduler'] = kwargs['scheduler'].name computer_builder = ComputerBuilder(**kwargs) try: computer = computer_builder.new() except (ComputerBuilder.ComputerValidationError, ValidationError) as e: echo.echo_critical('{}: {}'.format(type(e).__name__, e)) try: computer.store() except ValidationError as err: echo.echo_critical( 'unable to store the computer: {}. Exiting...'.format(err)) echo.echo_success('computer "{}" stored in DB.'.format(computer.name)) echo.echo_info('pk: {}, uuid: {}'.format(computer.pk, computer.uuid)) echo.echo_info( "Note: before using it with AiiDA, configure it using the command") echo.echo_info(" verdi computer configure {} {}".format( computer.get_transport_type(), computer.name)) echo.echo_info( "(Note: machine_dependent transport parameters cannot be set via ") echo.echo_info("the command-line interface at the moment)")
def code_duplicate(ctx, code, non_interactive, **kwargs): """Duplicate a code allowing to change some parameters.""" from aiida.common.exceptions import ValidationError from aiida.orm.utils.builders.code import CodeBuilder if not non_interactive: try: pre, post = ensure_scripts(kwargs.pop('prepend_text', ''), kwargs.pop('append_text', ''), kwargs) except InputValidationError as exception: raise click.BadParameter( 'invalid prepend and or append text: {}'.format(exception)) kwargs['prepend_text'] = pre kwargs['append_text'] = post if kwargs.pop('on_computer'): kwargs['code_type'] = CodeBuilder.CodeType.ON_COMPUTER else: kwargs['code_type'] = CodeBuilder.CodeType.STORE_AND_UPLOAD if kwargs.pop('hide_original'): code.hide() code_builder = ctx.code_builder for key, value in kwargs.items(): if value is not None: setattr(code_builder, key, value) new_code = code_builder.new() try: new_code.store() new_code.reveal() except ValidationError as exception: echo.echo_critical('Unable to store the Code: {}'.format(exception)) echo.echo_success('Code<{}> {} created'.format(new_code.pk, new_code.full_label))