@@ -5501,6 +5501,94 @@ def import_project(
55015501 "/projects/import" , post_data = data , files = files , ** kwargs
55025502 )
55035503
5504+ def import_bitbucket_server (
5505+ self ,
5506+ bitbucket_server_url ,
5507+ bitbucket_server_username ,
5508+ personal_access_token ,
5509+ bitbucket_server_project ,
5510+ bitbucket_server_repo ,
5511+ new_name = None ,
5512+ target_namespace = None ,
5513+ ** kwargs
5514+ ):
5515+ """Import a project from BitBucket Server to Gitlab (schedule the import)
5516+
5517+ This method will return when an import operation has been safely queued,
5518+ or an error has occurred. After triggering an import, check the
5519+ `import_status` of the newly created project to detect when the import
5520+ operation has completed.
5521+
5522+ NOTE: this request may take longer than most other API requests.
5523+ So this method will specify a 60 second default timeout if none is specified.
5524+ A timeout can be specified via kwargs to override this functionality.
5525+
5526+ Args:
5527+ bitbucket_server_url (str): Bitbucket Server URL
5528+ bitbucket_server_username (str): Bitbucket Server Username
5529+ personal_access_token (str): Bitbucket Server personal access
5530+ token/password
5531+ bitbucket_server_project (str): Bitbucket Project Key
5532+ bitbucket_server_repo (str): Bitbucket Repository Name
5533+ new_name (str): New repository name (Optional)
5534+ target_namespace (str): Namespace to import repository into.
5535+ Supports subgroups like /namespace/subgroup (Optional)
5536+ **kwargs: Extra options to send to the server (e.g. sudo)
5537+
5538+ Raises:
5539+ GitlabAuthenticationError: If authentication is not correct
5540+ GitlabListError: If the server failed to perform the request
5541+
5542+ Returns:
5543+ dict: A representation of the import status.
5544+
5545+ Example:
5546+ ```
5547+ gl = gitlab.Gitlab_from_config()
5548+ print("Triggering import")
5549+ result = gl.projects.import_bitbucket_server(
5550+ bitbucket_server_url="https://some.server.url",
5551+ bitbucket_server_username="some_bitbucket_user",
5552+ personal_access_token="my_password_or_access_token",
5553+ bitbucket_server_project="my_project",
5554+ bitbucket_server_repo="my_repo",
5555+ new_name="gl_project_name",
5556+ target_namespace="gl_project_path"
5557+ )
5558+ project = gl.projects.get(ret['id'])
5559+ print("Waiting for import to complete")
5560+ while project.import_status == u'started':
5561+ time.sleep(1.0)
5562+ project = gl.projects.get(project.id)
5563+ print("BitBucket import complete")
5564+ ```
5565+ """
5566+ data = {
5567+ "bitbucket_server_url" : bitbucket_server_url ,
5568+ "bitbucket_server_username" : bitbucket_server_username ,
5569+ "personal_access_token" : personal_access_token ,
5570+ "bitbucket_server_project" : bitbucket_server_project ,
5571+ "bitbucket_server_repo" : bitbucket_server_repo ,
5572+ }
5573+ if new_name :
5574+ data ["new_name" ] = new_name
5575+ if target_namespace :
5576+ data ["target_namespace" ] = target_namespace
5577+ if (
5578+ "timeout" not in kwargs
5579+ or self .gitlab .timeout is None
5580+ or self .gitlab .timeout < 60.0
5581+ ):
5582+ # Ensure that this HTTP request has a longer-than-usual default timeout
5583+ # The base gitlab object tends to have a default that is <10 seconds,
5584+ # and this is too short for this API command, typically.
5585+ # On the order of 24 seconds has been measured on a typical gitlab instance.
5586+ kwargs ["timeout" ] = 60.0
5587+ result = self .gitlab .http_post (
5588+ "/import/bitbucket_server" , post_data = data , ** kwargs
5589+ )
5590+ return result
5591+
55045592 def import_github (
55055593 self , personal_access_token , repo_id , target_namespace , new_name = None , ** kwargs
55065594 ):
@@ -5532,16 +5620,16 @@ def import_github(
55325620 Example:
55335621 ```
55345622 gl = gitlab.Gitlab_from_config()
5535- print "Triggering import"
5623+ print( "Triggering import")
55365624 result = gl.projects.import_github(ACCESS_TOKEN,
55375625 123456,
55385626 "my-group/my-subgroup")
55395627 project = gl.projects.get(ret['id'])
5540- print "Waiting for import to complete"
5628+ print( "Waiting for import to complete")
55415629 while project.import_status == u'started':
55425630 time.sleep(1.0)
55435631 project = gl.projects.get(project.id)
5544- print "Github import complete"
5632+ print( "Github import complete")
55455633 ```
55465634 """
55475635 data = {
0 commit comments