parameters: (ctx, config)
docstring: Deploy tox from pip. It's a dependency for both Keystone and Tempest.
docstring_summary: Deploy tox from pip. It's a dependency for both Keystone and Tempest.
docstring_tokens: Deploy tox from pip . It s a dependency for both Keystone and Tempest .
function: def task(ctx, config):
      """
      Deploy tox from pip. It's a dependency for both Keystone and Tempest.
      """
      assert config is None or isinstance(config, list) \
          or isinstance(config, dict), \
          "task tox only supports a list or dictionary for configuration"
      all_clients = ['client.{id}'.format(id=id_)
                     for id_ in teuthology.all_roles_of_type(ctx.cluster, 'client')]
      if config is None:
          config = all_clients
      if isinstance(config, list):
          config = dict.fromkeys(config)
  
      log.info('Deploying tox from pip...')
      for (client, _) in config.items():
          # yup, we have to deploy tox first. The packaged one, available
          # on Sepia's Ubuntu machines, is outdated for Keystone/Tempest.
          tvdir = get_toxvenv_dir(ctx)
          ctx.cluster.only(client).run(args=['python3', '-m', 'venv', tvdir])
          ctx.cluster.only(client).run(args=[
              'source', '{tvdir}/bin/activate'.format(tvdir=tvdir),
              run.Raw('&&'),
              'pip', 'install', 'tox==3.15.0'
          ])
  
      # export the path Keystone and Tempest
      ctx.tox = argparse.Namespace()
      ctx.tox.venv_path = get_toxvenv_dir(ctx)
  
      try:
          yield
      finally:
          for (client, _) in config.items():
              ctx.cluster.only(client).run(
                  args=[ 'rm', '-rf', get_toxvenv_dir(ctx) ])
function_tokens: def task ( ctx , config ) : assert config is None or isinstance ( config , list ) or isinstance ( config , dict ) , "task tox only supports a list or dictionary for configuration" all_clients = [ 'client.{id}' . format ( id = id_ ) for id_ in teuthology . all_roles_of_type ( ctx . cluster , 'client' ) ] if config is None : config = all_clients if isinstance ( config , list ) : config = dict . fromkeys ( config ) log . info ( 'Deploying tox from pip...' ) for ( client , _ ) in config . items ( ) : # yup, we have to deploy tox first. The packaged one, available # on Sepia's Ubuntu machines, is outdated for Keystone/Tempest. tvdir = get_toxvenv_dir ( ctx ) ctx . cluster . only ( client ) . run ( args = [ 'python3' , '-m' , 'venv' , tvdir ] ) ctx . cluster . only ( client ) . run ( args = [ 'source' , '{tvdir}/bin/activate' . format ( tvdir = tvdir ) , run . Raw ( '&&' ) , 'pip' , 'install' , 'tox==3.15.0' ] ) # export the path Keystone and Tempest ctx . tox = argparse . Namespace ( ) ctx . tox . venv_path = get_toxvenv_dir ( ctx ) try : yield finally : for ( client , _ ) in config . items ( ) : ctx . cluster . only ( client ) . run ( args = [ 'rm' , '-rf' , get_toxvenv_dir ( ctx ) ] )