in azure-devops/azext_devops/dev/repos/import_request.py [0:0]
def create_import_request(git_source_url, project=None, repository=None,
requires_authorization=False,
user_name=None,
git_service_endpoint_id=None,
organization=None, detect=None):
"""Create a git import request
:param repository: Name or ID of the repository to create the import request in.
:type repository: str
:param git_source_url: Url of the source git repository.
:type git_source_url: str
:param requires_authorization: Flag to tell if source git repository is private.
:type requires_authorization: bool
:param user_name: User name in case source git repository is private.
:type user_name: str
:param git_service_endpoint_id: Service Endpoint for connection to external endpoint.
:type git_service_endpoint_id: str
"""
organization, project, repository = resolve_instance_project_and_repo(
detect=detect,
organization=organization,
project=project,
repo=repository,
repo_required=True)
delete_se_after_import = False
password = None
import random
import string
import os
if requires_authorization and git_service_endpoint_id is None:
delete_se_after_import = True
if GIT_SOURCE_PASSWORD_OR_PAT in os.environ:
password = os.environ[GIT_SOURCE_PASSWORD_OR_PAT]
else:
error_message = 'Please specify target git password / PAT in ' + GIT_SOURCE_PASSWORD_OR_PAT +\
' environment variable in non-interactive mode.'
verify_is_a_tty_or_raise_error(error_message)
password = prompt_pass('Git Password / PAT:', confirm=True)
service_endpoint_authorization = EndpointAuthorization(
parameters={'password': password, 'username': user_name},
scheme='UsernamePassword')
service_endpoint_to_create = ServiceEndpoint(
authorization=service_endpoint_authorization,
name=''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10)),
type='git',
url=git_source_url)
client = get_service_endpoint_client(organization)
se_created = client.create_service_endpoint(service_endpoint_to_create, project)
git_service_endpoint_id = se_created.id
client = get_git_client(organization)
gitImportGitSource = GitImportGitSource(overwrite=False, url=git_source_url)
gitImportRequestParameter = GitImportRequestParameters(
delete_service_endpoint_after_import_is_done=delete_se_after_import,
git_source=gitImportGitSource,
service_endpoint_id=git_service_endpoint_id,
tfvc_source=None)
gitImportRequest = GitImportRequest(parameters=gitImportRequestParameter)
importRequest = client.create_import_request(import_request=gitImportRequest, project=project,
repository_id=repository)
return _wait_for_import_request(client, project, repository, importRequest.import_request_id)