示例#1
0
def build_project(project, zip, url, alias, replace, create):
  """Build project."""
  if zip:
    project.build(zip, overwrite=replace)
    stdout.write(
      'Project successfully built and saved as %r (size: %s).\n'
      % (zip, human_readable(getsize(zip)))
    )
  else:
    with temppath() as zip:
      project.build(zip)
      session = Session(url, alias)
      while True:
        try:
          res = session.upload_project(project.name, zip)
        except AzkabanError as err:
          if create:
            session.create_project(project.name, project.name)
          else:
            raise err
        else:
          break
      stdout.write(
        'Project %s successfully built and uploaded '
        '(id: %s, size: %s, version: %s).\n'
        'Details at %s/manager?project=%s\n'
        % (
          project,
          res['projectId'],
          human_readable(getsize(zip)),
          res['version'],
          session.url,
          project,
        )
      )
示例#2
0
def build_project(project, _zip, _url, _alias, _replace, _create, _option):
  """Build project."""
  if _option:
    project.properties = flatten(project.properties)
    # to make sure we properly override nested options, we flatten first
    project.properties.update(_parse_option(_option))
  if _zip:
    if osp.isdir(_zip):
      _zip = osp.join(_zip, '%s.zip' % (project.versioned_name, ))
    project.build(_zip, overwrite=_replace)
    sys.stdout.write(
      'Project %s successfully built and saved as %r (size: %s).\n'
      % (project, _zip, human_readable(osp.getsize(_zip)))
    )
  else:
    with temppath() as _zip:
      project.build(_zip)
      archive_name = '%s.zip' % (project.versioned_name, )
      session = _get_session(_url, _alias)
      res = _upload_zip(session, project.name, _zip, _create, archive_name)
      sys.stdout.write(
        'Project %s successfully built and uploaded '
        '(id: %s, size: %s, upload: %s).\n'
        'Details at %s/manager?project=%s\n'
        % (
          project,
          res['projectId'],
          human_readable(osp.getsize(_zip)),
          res['version'],
          session.url,
          project,
        )
      )
示例#3
0
def build_project(project, _zip, _url, _alias, _replace, _create, _option):
  """Build project."""
  if _option:
    project.properties = flatten(project.properties)
    # to make sure we properly override nested options, we flatten first
    project.properties.update(_parse_option(_option))
  if _zip:
    if osp.isdir(_zip):
      _zip = osp.join(_zip, '%s.zip' % (project.versioned_name, ))
    project.build(_zip, overwrite=_replace)
    sys.stdout.write(
      'Project %s successfully built and saved as %r (size: %s).\n'
      % (project, _zip, human_readable(osp.getsize(_zip)))
    )
  else:
    with temppath() as _zip:
      project.build(_zip)
      archive_name = '%s.zip' % (project.versioned_name, )
      session = _get_session(_url, _alias)
      res = _upload_zip(session, project.name, _zip, _create, archive_name)
      sys.stdout.write(
        'Project %s successfully built and uploaded '
        '(id: %s, size: %s, upload: %s).\n'
        'Details at %s/manager?project=%s\n'
        % (
          project,
          res['projectId'],
          human_readable(osp.getsize(_zip)),
          res['version'],
          session.url,
          project,
        )
      )
示例#4
0
文件: __main__.py 项目: dfdx/azkaban
def upload_project(project_name, _zip, _url, _alias, _create):
  """Upload project."""
  session = Session(_url, _alias)
  while True:
    try:
      res = session.upload_project(
        name=project_name,
        path=_zip,
        callback=_upload_callback
      )
    except AzkabanError as err:
      if _create:
        session.create_project(project_name, project_name)
      else:
        raise err
    else:
      break
  sys.stdout.write(
    'Project %s successfully uploaded (id: %s, size: %s, version: %s).\n'
    'Details at %s/manager?project=%s\n'
    % (
      project_name,
      res['projectId'],
      human_readable(osp.getsize(_zip)),
      res['version'],
      session.url,
      project_name,
    )
  )
示例#5
0
def upload_project(project_name, _zip, _url, _alias, _create):
  """Upload project."""
  session = Session(_url, _alias)
  while True:
    try:
      res = session.upload_project(
        name=project_name,
        path=_zip,
        callback=_upload_callback
      )
    except AzkabanError as err:
      if _create:
        session.create_project(project_name, project_name)
      else:
        raise err
    else:
      break
  sys.stdout.write(
    'Project %s successfully uploaded (id: %s, size: %s, version: %s).\n'
    'Details at %s/manager?project=%s\n'
    % (
      project_name,
      res['projectId'],
      human_readable(osp.getsize(_zip)),
      res['version'],
      session.url,
      project_name,
    )
  )
示例#6
0
def upload_project(project_name, zip, url, alias, create):
  """Upload project."""
  session = Session(url, alias)
  while True:
    try:
      res = session.upload_project(project_name, zip)
    except AzkabanError as err:
      if create:
        session.create_project(project_name, project_name)
      else:
        raise err
    else:
      break
  stdout.write(
    'Project %s successfully uploaded (id: %s, size: %s, version: %s).\n'
    'Details at %s/manager?project=%s\n'
    % (
      project_name,
      res['projectId'],
      human_readable(getsize(zip)),
      res['version'],
      session.url,
      project_name,
    )
  )
示例#7
0
文件: __main__.py 项目: dfdx/azkaban
def build_project(project, _zip, _url, _alias, _replace, _create, _option):
  """Build project."""
  if _option:
    project.properties = flatten(project.properties)
    # to make sure we properly override nested options, we flatten first
    project.properties.update(_parse_option(_option))
  if _zip:
    if osp.isdir(_zip):
      _zip = osp.join(_zip, '%s.zip' % (project.versioned_name, ))
    project.build(_zip, overwrite=_replace)
    sys.stdout.write(
      'Project %s successfully built and saved as %r (size: %s).\n'
      % (project, _zip, human_readable(osp.getsize(_zip)))
    )
  else:
    with temppath() as _zip:
      project.build(_zip)
      archive_name = '%s.zip' % (project.versioned_name, )
      session = Session(_url, _alias)
      while True:
        try:
          res = session.upload_project(
            name=project.name,
            path=_zip,
            archive_name=archive_name,
            callback=_upload_callback
          )
        except AzkabanError as err:
          if _create and str(err).endswith("doesn't exist."):
            session.create_project(project.name, project.name)
          else:
            raise err
        else:
          break
      sys.stdout.write(
        'Project %s successfully built and uploaded '
        '(id: %s, size: %s, upload: %s).\n'
        'Details at %s/manager?project=%s\n'
        % (
          project,
          res['projectId'],
          human_readable(osp.getsize(_zip)),
          res['version'],
          session.url,
          project,
        )
      )
示例#8
0
def build_project(project, _zip, _url, _alias, _replace, _create, _option):
  """Build project."""
  if _option:
    project.properties = flatten(project.properties)
    # to make sure we properly override nested options, we flatten first
    project.properties.update(_parse_option(_option))
  if _zip:
    if osp.isdir(_zip):
      _zip = osp.join(_zip, '%s.zip' % (project.versioned_name, ))
    project.build(_zip, overwrite=_replace)
    sys.stdout.write(
      'Project %s successfully built and saved as %r (size: %s).\n'
      % (project, _zip, human_readable(osp.getsize(_zip)))
    )
  else:
    with temppath() as _zip:
      project.build(_zip)
      archive_name = '%s.zip' % (project.versioned_name, )
      session = Session(_url, _alias)
      while True:
        try:
          res = session.upload_project(
            name=project.name,
            path=_zip,
            archive_name=archive_name,
            callback=_upload_callback
          )
        except AzkabanError as err:
          if _create and str(err).endswith("doesn't exist."):
            session.create_project(project.name, project.name)
          else:
            raise err
        else:
          break
      sys.stdout.write(
        'Project %s successfully built and uploaded '
        '(id: %s, size: %s, upload: %s).\n'
        'Details at %s/manager?project=%s\n'
        % (
          project,
          res['projectId'],
          human_readable(osp.getsize(_zip)),
          res['version'],
          session.url,
          project,
        )
      )
示例#9
0
def upload_project(project_name, _zip, _url, _alias, _create):
    """Upload project."""
    session = _get_session(_url, _alias)
    res = _upload_zip(session, project_name, _zip, _create)
    sys.stdout.write(
        'Project %s successfully uploaded (id: %s, size: %s, version: %s).\n'
        'Details at %s/manager?project=%s\n' % (
            project_name,
            res['projectId'],
            human_readable(osp.getsize(_zip)),
            res['version'],
            session.url,
            project_name,
        ))
示例#10
0
def upload_project(project_name, _zip, _url, _alias, _create):
  """Upload project."""
  session = _get_session(_url, _alias)
  res = _upload_zip(session, project_name, _zip, _create)
  sys.stdout.write(
    'Project %s successfully uploaded (id: %s, size: %s, version: %s).\n'
    'Details at %s/manager?project=%s\n'
    % (
      project_name,
      res['projectId'],
      human_readable(osp.getsize(_zip)),
      res['version'],
      session.url,
      project_name,
    )
  )
示例#11
0
def main(project=None):
  """Command line argument parser.

  :param project: `EmptyProject` or `Project` instance

  """
  args = docopt(__doc__, version=__version__)
  name = args['--project']
  try:
    if args['run']:
      flow = args['FLOW']
      jobs = args['JOB']
      if not project:
        if name:
          project = EmptyProject(name)
        else:
          project = Project.load_from_script(args['--script'])
      session = project.get_session(url=args['--url'], alias=args['--alias'])
      res = project.run(
        flow=flow,
        url=session['url'],
        session_id=session['session_id'],
        jobs=jobs,
        block=args['--block'],
      )
      exec_id = res['execid']
      job_names = ', jobs: %s' % (', '.join(jobs), ) if jobs else ''
      stdout.write(
        'Flow %s successfully submitted (execution id: %s%s).\n'
        'Details at %s/executor?execid=%s\n'
        % (flow, exec_id, job_names, session['url'], exec_id)
      )
    elif args['create']:
      name = raw_input('Project name: ').strip()
      project = EmptyProject(name)
      session = project.get_session(url=args['--url'], alias=args['--alias'])
      description = raw_input('Project description [%s]: ' % (name, )) or name
      project.create(
        description=description,
        url=session['url'],
        session_id=session['session_id'],
      )
      stdout.write(
        'Project %s successfully created.\n'
        'Details at %s/manager?project=%s\n'
        % (project.name, session['url'], project.name)
      )
    elif args['delete']:
      name = raw_input('Project name: ')
      project = project or EmptyProject(name)
      session = project.get_session(url=args['--url'], alias=args['--alias'])
      project.delete(
        url=session['url'],
        session_id=session['session_id'],
      )
      stdout.write(
        'Project %s successfully deleted.\n'
        % (name, )
      )
    elif args['build']:
      project = project or Project.load_from_script(args['--script'], name)
      size = project.build(
        args['--zip'] or '%s.zip' % (project.name, ),
        overwrite=args['--overwrite'],
      )
      stdout.write(
        'Project successfully built (size: %s).\n'
        % (human_readable(size), )
      )
    elif args['upload']:
      path = args['--zip']
      if not project:
        if path:
          project = EmptyProject(name)
        else:
          project = Project.load_from_script(args['--script'], name)
      session = project.get_session(url=args['--url'], alias=args['--alias'])
      with temppath() as tpath:
        if path:
          size = getsize(path)
        else:
          path = tpath
          size = project.build(path)
        try:
          res = project.upload(
            path,
            url=session['url'],
            session_id=session['session_id'],
          )
        except AzkabanError as err:
          if args['--create']:
            project.create(
              description=project.name,
              url=session['url'],
              session_id=session['session_id'],
            )
            res = project.upload(
              path,
              url=session['url'],
              session_id=session['session_id'],
            )
          else:
            raise err
      stdout.write(
        'Project %s successfully uploaded (id: %s, size: %s, version: %s).\n'
        'Details at %s/manager?project=%s\n'
        % (
          project.name,
          res['projectId'],
          human_readable(size),
          res['version'],
          session['url'],
          project.name
        )
      )
    elif args['view']:
      project = project or Project.load_from_script(args['--script'], name)
      job_name = args['JOB'][0]
      if job_name in project.jobs:
        pretty_print(project.jobs[job_name])
      else:
        raise AzkabanError('missing job %r' % (job_name, ))
    elif args['list']:
      project = project or Project.load_from_script(args['--script'], name)
      if args['--files']:
        for path in project._files:
          stdout.write('%s\n' % (relpath(path), ))
      else:
        for name in project.jobs:
          stdout.write('%s\n' % (name, ))
  except AzkabanError as err:
    stderr.write('%s\n' % (err, ))
    exit(1)