Ë
    daºi’»  ã                   ó^   — d dl Z d dlmZ ddlmZ  e j
                  e«      Z G d„ de«      Zy)é    N)Ú	HTTPErroré   )ÚAtlassianRestAPIc                   ót  — e Zd ZdZ	 	 	 	 	 	 	 dcd„Z	 	 ddd„Z	 	 	 	 	 ded„Zdfd„Zd„ Zd„ Z	dgd	„Z
	 	 	 	 	 dhd
„Zd„ Zdid„Zdjd„Zd„ Zd„ Zd„ Z	 dkd„Z	 	 	 	 ded„Zd„ Z	 	 	 dfd„Zdld„Z	 	 	 	 	 	 	 	 	 	 	 	 	 dmd„Z	 	 	 	 	 	 	 	 dnd„Z	 	 	 	 	 	 	 	 dnd„Z	 	 	 	 	 	 	 	 dnd„Z	 	 	 	 dod„Zdpd„Zd„ Z	 	 	 dqd„Zd„ Z	 	 	 dgd„Z d „ Z!	 	 dgd!„Z"d"„ Z#d#„ Z$e%dgd$„«       Z&	 d%„ Z'd&„ Z(d'„ Z)drd(„Z*did)„Z+d*„ Z,d+„ Z-	 dgd,„Z.dgd-„Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3dsd2„Z4dtd3„Z5dsd4„Z6g d5¢fd6„Z7d7„ Z8dsd8„Z9g d5¢fd9„Z:d:„ Z;dsd;„Z<g d5¢fd<„Z=d=„ Z>dsd>„Z?g d5¢fd?„Z@d@„ ZA	 dA„ ZBdudB„ZCdvdC„ZDdwdD„ZEdE„ ZFdF„ ZGdG„ ZHdwdH„ZIdidI„ZJdxdJ„ZKdK„ ZLdldL„ZMdldM„ZN	 	 	 	 	 	 	 dydN„ZOdO„ ZPdP„ ZQdQ„ ZR	 dR„ ZSdS„ ZTdT„ ZUdU„ ZVdV„ ZWdW„ ZXdX„ ZYdY„ ZZdZ„ Z[d[„ Z\d\„ Z]d]„ Z^d^„ Z_d_„ Z`d`„ Zada„ Zbdb„ Zcy)zÚBamboozPrivate methodsNc	              #   óœ  K  — | j                  |||||«      }	| j                  r!	 |	j                  «        |	j                  «       }		 |	|   }d}||kD  s|d   dk(  ry||   D ]  }|dz  }|–— Œ y# t        $ r&}
t        j                  d|
› �«       |
–— Y d}
~
ŒTd}
~
ww xY w# t        $ r t        j                  d|	› �«       |	–— Y yw xY w­w)a§  
        Generic method to return a generator with the results returned from Bamboo. It is intended to work for
        responses in the form:
        {
            'results':
            {
                'size': 5,
                'start-index': 0,
                'max-result': 5,
                'result': []
            },
            ...
        }
        In this case we would have elements_key='results' element_key='result'.
        The only reason to use this generator is to abstract dealing with response pagination from the client

        :param path: URI for the resource
        :return: generator with the contents of response[elements_key][element_key]
        zBroken response: Nr   Úsizer   )ÚgetÚadvanced_modeÚraise_for_statusÚjsonr   ÚloggingÚerrorÚ	TypeError)ÚselfÚpathÚelements_keyÚelement_keyÚdataÚflagsÚparamsÚheadersÚmax_resultsÚresponseÚeÚresultsr	   Úrs                 úH/var/www/timesheet/venv/lib/python3.12/site-packages/atlassian/bamboo.pyÚ_get_generatorzBamboo._get_generator   sâ   è ø€ ð< —8‘8˜D $¨¨v°wÓ?ˆØ×ÒðØ×)Ñ)Ô+Ø#Ÿ=™=›?�ð	Ø˜|Ñ,ˆGØˆDà�kÒ! W¨V¡_¸Ò%9ØØ˜[Ñ)ò �Ø˜‘	�Ø“ñøô ò Ü—‘Ð 1°!°Ð5Ô6Ø—ûðûô ò 	Ü�M‰MÐ-¨h¨ZÐ8Ô9ØŒNð	üsX   ‚"C¥ A/ ÁB! ÁCÁB! Á.CÁ/	BÁ8BÂCÂBÂCÂ!%C	ÃCÃC	Ã	Cc                 óP  — g }	d|i}
|r||
d<   |r|	j                  d«       |r|	j                  d«       |r||
d<   |
j                  |«       d|v r0d|v r,| j                  | j                  |«      |	|
|d   |d   |¬«      S ||
d	<   | j	                  | j                  |«      |	|
¬
«      S )Númax-resultsÚexpandÚ	favouriteÚcloverEnabledÚlabelr   r   )r   r   r   r   r   ústart-index)r   r   )ÚappendÚupdater   Úresource_urlr
   )r   Úresourcer"   r#   Úclover_enabledr   r%   Ústart_indexÚkwargsr   r   s              r   Úbase_list_callzBamboo.base_list_callA   sÐ   € ð ˆØ Ð-ˆÙØ%ˆF�8ÑÙØ�L‰L˜Ô%ÙØ�L‰L˜Ô)ÙØ#ˆF�7‰OØ�‰�fÔØ˜VÑ#¨¸Ñ(?Ø×&Ñ&Ø×!Ñ! (Ó+ØØØ# NÑ3Ø" =Ñ1Ø'ð 'ó ð ð !,ˆˆ}ÑØ�x‰x˜×)Ñ)¨(Ó3¸5ÈˆxÓPÐPó    c           	      ó2   — | j                  d||||dd¬«      S )zŸ
        Get all Projects
        :param expand:
        :param favourite:
        :param clover_enabled:
        :param max_results:
        :return:
        ÚprojectÚprojects)r"   r#   r+   r   r   r   ©r.   )r   r"   r#   r+   r   s        r   r2   zBamboo.projectse   s1   € ð ×"Ñ"ØØØØ)Ø#Ø#Ø!ð #ó 
ð 	
r/   c                 ó:   — d|› �}| j                  ||||dd¬«      S )z®
        Get a single project by the key
        :param project_key:
        :param expand:
        :param favourite:
        :param clover_enabled:
        :return:
        úproject/r   é   )r*   r"   r#   r+   r,   r   r3   )r   Úproject_keyr"   r#   r+   r*   s         r   r1   zBamboo.project~   s:   € ð ˜k˜]Ð+ˆØ×"Ñ"ØØØØ)ØØð #ó 
ð 	
r/   c                 óN   — d|› d�}| j                  | j                  |«      «      S )zóMethod used to retrieve information for project specified as project key.
        Possible expand parameters: plans, list of plans for project. plans.plan, list of plans with plan details
        (only plans visible - READ permission for user)r5   z
?showEmpty©r
   r)   ©r   r7   r*   s      r   Úget_projectzBamboo.get_project‘   s,   € ð ˜k˜]¨*Ð5ˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c                 óL   — d|› �}| j                  | j                  |«      «      S )zCMarks project for deletion. Project will be deleted by a batch job.r5   ©Údeleter)   r:   s      r   Údelete_projectzBamboo.delete_project˜   s(   € à˜k˜]Ð+ˆØ�{‰{˜4×,Ñ,¨XÓ6Ó7Ð7r/   c           
      ó>   — d|› �}| j                  |ddd||dd¬«      S )z÷
        Get all build plans in a project
        Returns a generator with the plans in a given project.
        :param project_key: project key
        :param start_index:
        :param max_results:
        :return: Generator with plans
        r5   ÚplansFÚplan©r"   r#   r+   r,   r   r   r   r3   )r   r7   r,   r   r*   s        r   Úproject_planszBamboo.project_plans�   s@   € ð ˜k˜]Ð+ˆØ×"Ñ"ØØØØ Ø#Ø#Ø Øð #ó 	
ð 		
r/   c           
      ó4   — | j                  d|||||dd¬«      S )z¾
        Get all build plans
        :param expand:
        :param favourite:
        :param clover_enabled:
        :param start_index:
        :param max_results:
        :return:
        rB   rA   rC   r3   )r   r"   r#   r+   r,   r   s         r   rA   zBamboo.plans²   s4   € ð" ×"Ñ"ØØØØ)Ø#Ø#Ø Øð #ó 	
ð 		
r/   c                 óL   — d|› �}| j                  | j                  |«      «      S )a7  
        Returns information about the directories where artifacts, build logs, and build results will be stored.
        Disabled by default.
        See https://confluence.atlassian.com/display/BAMBOO/Plan+directory+information+REST+API for more information.
        :param plan_key:
        :return:
        zplanDirectoryInfo/r9   ©r   Úplan_keyr*   s      r   Úplan_directory_infozBamboo.plan_directory_infoÎ   s*   € ð (¨ zÐ2ˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c                 óD   — i }|r||d<   d|› �}| j                  ||¬«      S )zq
        Get plan information.
        :param plan_key:
        :param expand: optional
        :return:
        r"   úrest/api/latest/plan/©r   ©r
   )r   rH   r"   r   r*   s        r   Úget_planzBamboo.get_planÙ   s5   € ð ˆÙØ%ˆF�8ÑØ*¨8¨*Ð5ˆØ�x‰x˜¨ˆxÓ0Ð0r/   c                 ó6   — d}| j                  |||||dœ¬«      S )zÑ
        Search plans by name
        :param search_term: str
        :param fuzzy: bool optional
        :param start_index: optional
        :param max_results: optional
        :return: GET request
        zrest/api/latest/search/plans)ÚfuzzyÚ
searchTermr!   r&   rL   rM   )r   Úsearch_termrP   r,   r   r*   s         r   Úsearch_planszBamboo.search_plansæ   s/   € ð 2ˆØ�x‰xØØ"°+ÈkÐjuÑvð ó 
ð 	
r/   c                 ó.   — d|› �}| j                  |«      S )zy
        Marks plan for deletion. Plan will be deleted by a batch job.
        :param plan_key:
        :return:
        rK   ©r>   rG   s      r   Údelete_planzBamboo.delete_planö   s   € ð +¨8¨*Ð5ˆØ�{‰{˜8Ó$Ð$r/   c                 óN   — d|› d�}| j                  | j                  |«      «      S )zd
        Disable plan.
        :param plan_key: str TST-BLD
        :return: DELETE request
        úplan/ú/enabler=   rG   s      r   Údisable_planzBamboo.disable_planÿ   s,   € ð ˜8˜* GÐ,ˆØ�{‰{˜4×,Ñ,¨XÓ6Ó7Ð7r/   c                 óN   — d|› d�}| j                  | j                  |«      «      S )za
        Enable plan.
        :param plan_key: str TST-BLD
        :return: POST request
        rX   rY   ©Úpostr)   rG   s      r   Úenable_planzBamboo.enable_plan  s,   € ð ˜8˜* GÐ,ˆØ�y‰y˜×*Ñ*¨8Ó4Ó5Ð5r/   c              #   óÌ   K  — ||||dœ}d}|d   |k  rO| j                  | j                  d«      |¬«      }|d   }|d   D ]  }|–— Œ |dxx   |d   z  cc<   |d   |k  rŒNy	y	­w)
z¤
        Search Branches
        :param plan_key:
        :param include_default_branch:
        :param max_results:
        :param start:
        :return:
        )ú
max-resultr&   ÚmasterPlanKeyÚincludeMasterBranchr   r&   zsearch/branchesrL   r	   ÚsearchResultsr`   Nr9   )	r   rH   Úinclude_default_branchr   Ústartr   r	   r   r   s	            r   Úsearch_brancheszBamboo.search_branches  s“   è ø€ ð &Ø Ø%Ø#9ñ	
ˆð ˆØ�]Ñ# dÒ*Ø—h‘h˜t×0Ñ0Ð1BÓCÈF�hÓSˆGØ˜6‘?ˆDØ˜_Ñ-ò �Ø“ðà�=Ó! W¨\Ñ%:Ñ:Ó!ð �]Ñ# dÕ*ùs   ‚AA$Á"A$c           	      ó>   — d|› d�}| j                  |||||dd¬«      S )zñ
        Get all plan Branches
        api/1.0/plan/{projectKey}-{buildKey}/branch
        :param plan_key:
        :param expand:
        :param favourite:
        :param clover_enabled:
        :param max_results:
        :return:
        rX   z/branchÚbranchesÚbranch)r   r   r3   )r   rH   r"   r#   r+   r   r*   s          r   Úplan_brancheszBamboo.plan_branches*  s?   € ð$ ˜8˜* GÐ,ˆØ×"Ñ"ØØØØØØ#Ø ð #ó 
ð 	
r/   c                 óR   — d|› d|› �}| j                  | j                  |«      «      S )z{
        Get information about a plan branch
        :param plan_key:
        :param branch_name:
        :return:
        rX   ú/branch/r9   )r   rH   Úbranch_namer*   s       r   Úget_branch_infozBamboo.get_branch_infoG  s0   € ð ˜8˜* H¨[¨MÐ:ˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c                 óŠ   — d|› d|› �}i }|rt        ||rdnd|rdnd¬«      }| j                  | j                  |«      |¬«      S )a,  
        Method for creating branch for a specified plan.
        You can use vcsBranch query param to define which vcsBranch should newly created branch use.
        If not specified it will not override vcsBranch from the main plan.

        :param plan_key: str TST-BLD
        :param branch_name: str new-shiny-branch
        :param vcs_branch: str feature/new-shiny-branch, /refs/heads/new-shiny-branch
        :param enabled: bool
        :param cleanup_enabled: bool - enable/disable automatic cleanup of branch
        :return: PUT request
        rX   rl   ÚtrueÚfalse)Ú	vcsBranchÚenabledÚcleanupEnabledrL   )ÚdictÚputr)   )r   rH   rm   Ú
vcs_branchrs   Úcleanup_enabledr*   r   s           r   Úcreate_branchzBamboo.create_branchQ  sY   € ð( ˜8˜* H¨[¨MÐ:ˆØˆÙÜØ$Ù")™¨wÙ)8™v¸gôˆFð
 �x‰x˜×)Ñ)¨(Ó3¸FˆxÓCÐCr/   c                 ó<   — d|› d�}| j                  |d|ddd¬«      S )z‰
        Get all vcs names for the current plan
        :param plan_key: str TST-BLD
        :param max_results
        :return:
        rX   z/vcsBranchesr   N)r,   r   r+   r"   r#   r3   )r   rH   r   r*   s       r   Úget_vcs_brancheszBamboo.get_vcs_brancheso  s<   € ð ˜8˜* LÐ1ˆØ×"Ñ"ØØØ#ØØØð #ó 
ð 	
r/   c                 óð   — d}|r|r|r|r|d|› d|› d|› d|› �z  }n/|r|r|r|d|› d|› d|› �z  }n|r|r|d|› d|› �z  }n
|r|d|z   z  }i }|r||d<   |r||d<    | j                   |f||||
|dd|	dœ|¤ŽS )a…  
        Get results as generic method
        :param project_key:
        :param plan_key:
        :param job_key:
        :param build_number:
        :param expand:
        :param favourite:
        :param clover_enabled:
        :param issue_key:
        :param label:
        :param start_index:
        :param max_results:
        :param include_all_states:
        :return:
        Úresultú/ú-ÚissueKeyÚincludeAllStatesr   )r"   r#   r+   r,   r   r   r   r%   r3   )r   r7   rH   Újob_keyÚbuild_numberr"   r#   r+   Ú	issue_keyr%   r,   r   Úinclude_all_statesr*   r   s                  r   r   zBamboo.results‚  sæ   € ð> ˆÙ™8©±LØ˜!˜K˜=¨¨(¨°1°W°I¸Q¸|¸nÐMÑM‰HÙ™X©,Ø˜!˜K˜=¨¨(¨°1°\°NÐCÑC‰HÙ™XØ˜!˜K˜=¨¨(¨Ð4Ñ4‰HÙØ˜˜kÑ)Ñ)ˆHàˆÙØ!*ˆF�:ÑÙØ);ˆFÐ%Ñ&Ø"ˆt×"Ñ"Øð
àØØ)Ø#Ø#Ø"Ø Øñ
ð ñ
ð 	
r/   c	           
      ó4   — | j                  ||||||||¬«      S )a  
        Get the latest Results
        :param expand:
        :param favourite:
        :param clover_enabled:
        :param label:
        :param issue_key:
        :param start_index:
        :param max_results:
        :param include_all_states:
        :return:
        ©r"   r#   r+   r%   r„   r,   r   r…   ©r   )	r   r"   r#   r+   r%   r„   r,   r   r…   s	            r   Úlatest_resultszBamboo.latest_results½  s2   € ð. �|‰|ØØØ)ØØØ#Ø#Ø1ð ó 	
ð 		
r/   c
                 ó6   — | j                  |||||||||	¬«	      S )a8  
        Get the latest Project Results
        :param project_key:
        :param expand:
        :param favourite:
        :param clover_enabled:
        :param label:
        :param issue_key:
        :param start_index:
        :param max_results:
        :param include_all_states:
        :return:
        r‡   rˆ   )
r   r7   r"   r#   r+   r%   r„   r,   r   r…   s
             r   Úproject_latest_resultszBamboo.project_latest_resultsß  s5   € ð2 �|‰|ØØØØ)ØØØ#Ø#Ø1ð ó 

ð 
	
r/   c                 ó8   — | j                  |||||||||	|
¬«
      S )aC  
        Get Plan results
        :param project_key:
        :param plan_key:
        :param expand:
        :param favourite:
        :param clover_enabled:
        :param label:
        :param issue_key:
        :param start_index:
        :param max_results:
        :param include_all_states:
        :return:
        r‡   rˆ   )r   r7   rH   r"   r#   r+   r%   r„   r,   r   r…   s              r   Úplan_resultszBamboo.plan_results  s8   € ð6 �|‰|ØØØØØ)ØØØ#Ø#Ø1ð ó 
ð 	
r/   c           	      ó°   — 	 t        |j                  d«      d   «       d|› �}| j                  ||dd|||¬«      S # t        $ r t        d|› d�«      ‚w xY w)au  
        Returns details of a specific build result
        :param expand: expands build result details on request. Possible values are: artifacts, comments, labels,
        Jira Issues, stages. stages expand is available only for top level plans. It allows to drill down to job results
        using stages.stage.results.result. All expand parameters should contain results. Result prefix.
        :param build_key: Should be in the form XX-YY[-ZZ]-99, that is, the last token should be an integer representing
        the build number
        :param include_all_states
        :param start:
        :param max_results:
        r   éÿÿÿÿúresult/F©r#   r+   r,   r   r…   ú	The key "z'" does not correspond to a build result)ÚintÚsplitr.   Ú
ValueError)r   Ú	build_keyr"   r…   re   r   r*   s          r   Úbuild_resultzBamboo.build_result,  s   € ð&	]Ü�	—‘ Ó$ RÑ(Ô)Ø   Ð,ˆHØ×&Ñ&ØØØØ$Ø!Ø'Ø#5ð 'ó ð øô ò 	]Ü˜y¨¨Ð3ZÐ[Ó\Ð\ð	]ús	   ‚9< ¼Ac           	      óx   — 	 d|› d�}| j                  ||dddd|¬«      S # t        $ r t        d|› d�«      ‚w xY w)	aì  
        Returns details of the latest build result
        :param expand: expands build result details on request. Possible values are: artifacts, comments, labels,
        Jira Issues, stages. stages expand is available only for top level plans. It allows to drill down to job results
        using stages.stage.results.result. All expand parameters should contain results. Result prefix.
        :param plan_key: Should be in the form XX-YY[-ZZ]
        :param include_all_states:
        r�   z/latest.jsonFr   r6   r‘   r’   z0" does not correspond to the latest build result)r.   r•   )r   rH   r"   r…   r*   s        r   Úbuild_latest_resultzBamboo.build_latest_resultN  sk   € ð	eØ   
¨,Ð7ˆHØ×&Ñ&ØØØØ$ØØØ#5ð 'ó ð øô ò 	eÜ˜y¨¨
Ð2bÐcÓdÐdð	eús   ‚   9c                 ó’   — d}|j                  d«      }|d   › d|d   › �}|d   }||dœ}| j                  ||| j                  ¬«      S )z{
        Deleting result for specific build
        :param build_key: Take full build key, example: PROJECT-PLAN-8
        z%/build/admin/deletePlanResults.actionr   r   r   é   )ÚbuildKeyÚbuildNumber)r   r   )r”   r]   Úform_token_headers)r   r–   Úcustom_resourcerH   rƒ   r   s         r   Údelete_build_resultzBamboo.delete_build_resulte  s^   € ð
 BˆØ—O‘O CÓ(ˆ	Ø ‘l�^ 1 Y¨q¡\ NÐ3ˆØ  ‘|ˆØ&°|ÑDˆØ�y‰y˜°À×AXÑAXˆyÓYÐYr/   c                 óÜ   — d|› �}i }|rd}||d<   |r||d<   |rdnd|d<   |r)t        |j                  «       «      D ]  \  }}	|	|d|› �<   Œ | j                  | j                  |«      |¬	«      S )
aƒ  
        Fire build execution for specified plan.
        !IMPORTANT! NOTE: for some reason, this method always execute all stages
        :param plan_key: str TST-BLD
        :param stage: str stage-name
        :param execute_all_stages: bool
        :param custom_revision: str revisionName
        :param bamboo_variables: dict {variable=value}
        :return: POST request
        zqueue/FÚstageÚcustomRevisionrp   rq   ÚexecuteAllStageszbamboo.variable.rL   )ÚlistÚitemsr]   r)   )
r   rH   r¢   Úexecute_all_stagesÚcustom_revisionÚbamboo_variablesr*   r   ÚkeyÚvalues
             r   Úexecute_buildzBamboo.execute_buildq  s›   € ð$ ˜H˜:Ð&ˆØˆÙØ!&ÐØ#ˆF�7‰OÙØ'6ˆFÐ#Ñ$Ù/A¡VÀwˆÐ!Ñ"ÙÜ"Ð#3×#9Ñ#9Ó#;Ó<ò 9‘
��UØ38�Ð)¨#¨Ð/Ò0ð9ð �y‰y˜×*Ñ*¨8Ó4¸VˆyÓDÐDr/   c                 óF   — d|› �}| j                  || j                  ¬«      S )z†
        Stop the build which is in progress at the moment.
        :param plan_key: str TST-BLD
        :return: GET request
        z%/build/admin/stopPlan.action?planKey=)r   r   )r]   Úno_check_headersrG   s      r   Ú
stop_buildzBamboo.stop_build‘  s)   € ð ;¸8¸*ÐEˆØ�y‰y˜h°×0EÑ0EˆyÓFÐFr/   c                 óh   — d|› d|› d|› d�}||dœ}| j                  | j                  |«      |¬«      S )zÎ
        Get comments for a specific build
        :param project_key:
        :param plan_key:
        :param build_number:
        :param start_index:
        :param max_results:
        :return:
        r�   r   ú/comment©r&   r!   rL   r9   ©r   r7   rH   rƒ   r,   r   r*   r   s           r   ÚcommentszBamboo.commentsœ  sF   € ð" ˜[˜M¨¨8¨*°A°l°^À8ÐLˆØ!,¸[ÑIˆØ�x‰x˜×)Ñ)¨(Ó3¸FˆxÓCÐCr/   c                 óf   — d|› d|› d|› d�}d|i}| j                  | j                  |«      |¬«      S )z²
        Create a comment for a specific build
        :param project_key:
        :param plan_key:
        :param build_number:
        :param comment:
        :return:
        r�   r   r±   Úcontent©r   r\   )r   r7   rH   rƒ   Úcommentr*   Úcomment_datas          r   Úcreate_commentzBamboo.create_comment±  sJ   € ð ˜[˜M¨¨8¨*°A°l°^À8ÐLˆà�wð
ˆð �y‰y˜×*Ñ*¨8Ó4¸<ˆyÓHÐHr/   c                 óh   — d|› d|› d|› d�}||dœ}| j                  | j                  |«      |¬«      S )zÃ
        Get labels for a build
        :param project_key:
        :param plan_key:
        :param build_number:
        :param start_index:
        :param max_results:
        :return:
        r�   r   ú/labelr²   rL   r9   r³   s           r   ÚlabelszBamboo.labelsÀ  sF   € ð" ˜[˜M¨¨8¨*°A°l°^À6ÐJˆØ!,¸[ÑIˆØ�x‰x˜×)Ñ)¨(Ó3¸FˆxÓCÐCr/   c                 ób   — d|› d|› d|› d�}| j                  | j                  |«      d|i¬«      S )z®
        Create a label for a specific build
        :param project_key:
        :param plan_key:
        :param build_number:
        :param label:
        :return:
        r�   r   r¼   Únamer·   r\   ©r   r7   rH   rƒ   r%   r*   s         r   Úcreate_labelzBamboo.create_labelÕ  s@   € ð ˜[˜M¨¨8¨*°A°l°^À6ÐJˆØ�y‰y˜×*Ñ*¨8Ó4¸FÀE¸?ˆyÓKÐKr/   c                 ó^   — d|› d|› d|› d|› �}| j                  | j                  |«      «      S )z®
        Delete a label for a specific build
        :param project_key:
        :param plan_key:
        :param build_number:
        :param label:
        :return:
        r�   r   z/label/r=   rÀ   s         r   Údelete_labelzBamboo.delete_labelá  s<   € ð ˜[˜M¨¨8¨*°A°l°^À7È5È'ÐRˆØ�{‰{˜4×,Ñ,¨XÓ6Ó7Ð7r/   c              #   ó°   K  — |}|}	 d|› d|› �}| j                  | j                  |«      «      }|€y||d   d   kD  ry||z  }|d   d   D ]  }|–— Œ ŒN­w)z‹Method used to list all projects defined in Bamboo.
        Projects without any plan are not listed.
        :return: GET request
        zproject?start-index=z&max-result=Nr2   r	   r1   r9   )r   re   ÚlimitÚ	start_idxr   r*   r   r1   s           r   Úget_projectszBamboo.get_projectsí  sˆ   è ø€ ð ˆ	ØˆàØ-¨i¨[¸À[ÀMÐRˆHà—‘˜×*Ñ*¨8Ó4Ó5ˆAàˆyØà˜1˜Z™=¨Ñ0Ò0Øà˜Ñ$ˆIà˜Z™=¨Ñ3ò �Ø“ðð ùs   ‚AAc              #   ób   K  — d}| j                  | j                  |«      «      D ]  }|–— Œ y­w)zC
        Returns all deployment projects.
        :return:
        zdeploy/project/allNr9   )r   r*   r1   s      r   Údeployment_projectszBamboo.deployment_projects  s5   è ø€ ð
 (ˆØ—x‘x × 1Ñ 1°(Ó ;Ó<ò 	ˆGØ‹Mñ	ùs   ‚-/c                 óL   — d|› �}| j                  | j                  |«      «      S )z[
        Returns a deployment project.
        :param project_id:
        :return:
        údeploy/project/r9   ©r   Ú
project_idr*   s      r   Údeployment_projectzBamboo.deployment_project  s*   € ð % Z LÐ1ˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c                 óL   — d|› �}| j                  | j                  |«      «      S )z[
        Deletes a deployment project.
        :param project_id:
        :return:
        rË   r=   rÌ   s      r   Údelete_deployment_projectz Bamboo.delete_deployment_project  s*   € ð % Z LÐ1ˆØ�{‰{˜4×,Ñ,¨XÓ6Ó7Ð7r/   c              #   óâ   K  — d|› d�}|ddœ}d}|r||d<   |d   |k  rO| j                  | j                  |«      |¬«      }|d	   }|d
   D ]  }|–— Œ |dxx   |d   z  cc<   |d   |k  rŒNyy­w)z�
        Get deployment environment results
        :param env_id:
        :param expand:
        :param max_results:
        :return:
        zdeploy/environment/z/resultsr   )r`   r&   r   r"   r&   rL   r	   r   r`   Nr9   )	r   Úenv_idr"   r   r*   r   r	   r   r   s	            r   Údeployment_environment_resultsz%Bamboo.deployment_environment_results#  s¢   è ø€ ð )¨¨°Ð9ˆØ +¸AÑ>ˆØˆÙØ%ˆF�8ÑØ�]Ñ# dÒ*Ø—h‘h˜t×0Ñ0°Ó:À6�hÓJˆGØ˜6‘?ˆDØ˜YÑ'ò �Ø“ðà�=Ó! W¨\Ñ%:Ñ:Ó!ð �]Ñ# dÕ*ùs   ‚A*A/Á-A/c                 óT   — |rd|› �nd}| j                  | j                  |«      «      S )z‡
        Returns the current status of each deployment environment
        If no project id is provided, returns all projects.
        zdeploy/dashboard/zdeploy/dashboardr9   rÌ   s      r   Údeployment_dashboardzBamboo.deployment_dashboard7  s1   € ñ
 8BÐ& z lÑ3ÐGYˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c              #   ón   K  — d}d|i}| j                  | j                  |«      |¬«      D ]  }|–— Œ y­w)zy
        Returns deployment projects associated with a build plan.
        :param plan_key: The key of the plan.
        zdeploy/project/forPlanÚplanKeyrL   Nr9   )r   rH   r*   r   rÎ   s        r   Ú get_deployment_projects_for_planz'Bamboo.get_deployment_projects_for_plan?  sE   è ø€ ð
 ,ˆØ˜XÐ&ˆØ"&§(¡(¨4×+<Ñ+<¸XÓ+FÈv (Ó"Vò 	%ÐØ$Ó$ñ	%ùs   ‚35c                 óT   — d}||dœ}| j                  | j                  |«      |¬«      S )ad  
        Triggers a deployment for a release version on the given environment.
        Example: trigger_deployment_for_version_on_environment(version_id='3702785', environment_id='3637249')
        :param version_id: str or int id of the release version.
        :param environment_id: str or int id of the deployment environment.
        :return:
        zqueue/deployment)Ú	versionIdÚenvironmentIdrL   r\   )r   Ú
version_idÚenvironment_idr*   r   s        r   Ú-trigger_deployment_for_version_on_environmentz4Bamboo.trigger_deployment_for_version_on_environmentI  s1   € ð &ˆØ)¸NÑKˆØ�y‰y˜×*Ñ*¨8Ó4¸VˆyÓDÐDr/   c                 ó6   — ||dœ}d}| j                  ||¬«      S )z€
        Provide users in global permissions configuration
        :param start:
        :param limit:
        :return:
        ©rÅ   re   z(rest/api/latest/permissions/global/usersrL   rM   ©r   re   rÅ   r   Úurls        r   Úget_users_in_global_permissionsz&Bamboo.get_users_in_global_permissionsW  s&   € ð !¨5Ñ1ˆØ8ˆØ�x‰x˜ FˆxÓ+Ð+r/   c                 ó6   — ||dœ}d}| j                  ||¬«      S )zá
        Retrieve a paginated list of groups.
        The authenticated user must have restricted administrative permission or higher to use this resource.
        :param start:
        :param limit:
        :return:
        rà   úrest/api/latest/admin/groupsrL   rM   rá   s        r   Ú
get_groupszBamboo.get_groupsb  s&   € ð !¨5Ñ1ˆØ,ˆØ�x‰x˜ FˆxÓ+Ð+r/   c                 ó4   — d}d|i}| j                  ||¬«      S )z¿
        Create a new group.
        The authenticated user must have restricted administrative permission or higher to use this resource.
        :param group_name:
        :return:
        rå   r¿   r·   ©r]   )r   Ú
group_namerâ   r   s       r   Úcreate_groupzBamboo.create_groupn  s&   € ð -ˆØ˜
Ð#ˆØ�y‰y˜ 4ˆyÓ(Ð(r/   c                 ó.   — d|› �}| j                  |«      S )zå
        Deletes the specified group, removing it from the system.
        The authenticated user must have restricted administrative permission or higher to use this resource.
        :param group_name:
        :return:
        úrest/api/latest/admin/groups/rU   )r   ré   râ   s      r   Údelete_groupzBamboo.delete_groupy  s   € ð .¨j¨\Ð:ˆØ�{‰{˜3ÓÐr/   c                 ó4   — d|› d�}| j                  ||¬«      S )a%  
        Add multiple users to a group.
        The list of usernames should be passed as request body.
        The authenticated user must have restricted administrative permission or higher to use this resource.
        :param group_name:
        :param users: list
        :return:
        rì   z
/add-usersr·   rè   ©r   ré   Úusersrâ   s       r   Úadd_users_into_groupzBamboo.add_users_into_groupƒ  s%   € ð .¨j¨\¸ÐDˆØ�y‰y˜ 5ˆyÓ)Ð)r/   c                 ó4   — d|› d�}| j                  ||¬«      S )a*  
        Remove multiple users from a group.
        The list of usernames should be passed as request body.
        The authenticated user must have restricted administrative permission or higher to use this resource.
        :param group_name:
        :param users: list
        :return:
        rì   z/remove-usersr·   rU   rï   s       r   Úremove_users_from_groupzBamboo.remove_users_from_group�  s%   € ð .¨j¨\¸ÐGˆØ�{‰{˜3 Uˆ{Ó+Ð+r/   c                 óJ   — ||dœ}|rd|i}d|› d�}| j                  ||¬«      S )a5  
        Retrieves a list of users that are members of a specified group.
        The authenticated user must have restricted administrative permission or higher to use this resource.
        :param filter_users:
        :param group_name:
        :param start:
        :param limit:
        :return:
        rà   Úfilterrì   z/more-membersrL   rM   ©r   ré   Úfilter_usersre   rÅ   r   râ   s          r   Úget_users_from_groupzBamboo.get_users_from_group›  s<   € ð !¨5Ñ1ˆÙØ Ð-ˆFØ-¨j¨\¸ÐGˆØ�x‰x˜ FˆxÓ+Ð+r/   c                 óJ   — ||dœ}|rd|i}d|› d�}| j                  ||¬«      S )a9  
        Retrieves a list of users that are not members of a specified group.
        The authenticated user must have restricted administrative permission or higher to use this resource.
        :param filter_users:
        :param group_name:
        :param start:
        :param limit:
        :return:
        rà   rõ   rì   z/more-non-membersrL   rM   rö   s          r   Úget_users_not_in_groupzBamboo.get_users_not_in_group«  s=   € ð !¨5Ñ1ˆÙØ Ð-ˆFà-¨j¨\Ð9JÐKˆØ�x‰x˜ FˆxÓ+Ð+r/   c                 óh   — ||dœ}|rd|i}d|› d�}| j                  | j                  |«      |¬«      S )aN  
        Retrieve a list of users with their explicit permissions to given resource.
        The list can be filtered by some attributes.
        This resource is paged and returns a single page of results.
        :param deployment_id:
        :param filter_name:
        :param start:
        :param limit:
        :return:
        rà   r¿   úpermissions/deployment/ú/usersrL   r9   ©r   Údeployment_idÚfilter_namere   rÅ   r   r*   s          r   Úget_deployment_userszBamboo.get_deployment_users¼  sG   € ð !¨5Ñ1ˆÙØ˜kÐ*ˆFØ,¨]¨O¸6ÐBˆØ�x‰x˜×)Ñ)¨(Ó3¸FˆxÓCÐCr/   )ÚREADÚWRITEÚBUILDc                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )z«
        Revokes deployment project permissions from a given user.
        :param deployment_id:
        :param user:
        :param permissions:
        :return:
        rü   ú/users/r·   r=   ©r   rÿ   ÚuserÚpermissionsr*   s        r   Úrevoke_user_from_deploymentz"Bamboo.revoke_user_from_deploymentÍ  s4   € ð -¨]¨O¸7À4À&ÐIˆØ�{‰{˜4×,Ñ,¨XÓ6¸[ˆ{ÓIÐIr/   c                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )z¨
        Grants deployment project permissions to a given user.
        :param deployment_id:
        :param user:
        :param permissions:
        :return:
        rü   r  r·   ©rv   r)   r  s        r   Úgrant_user_to_deploymentzBamboo.grant_user_to_deploymentØ  s4   € ð -¨]¨O¸7À4À&ÐIˆØ�x‰x˜×)Ñ)¨(Ó3¸+ˆxÓFÐFr/   c                 óh   — ||dœ}|rd|i}d|› d�}| j                  | j                  |«      |¬«      S )aC  
        Retrieve a list of groups with their deployment project permissions.
        The list can be filtered by some attributes.
        This resource is paged returns a single page of results.
        :param deployment_id:
        :param filter_name:
        :param start:
        :param limit:
        :return:
        rà   r¿   rü   ú/groupsrL   r9   rþ   s          r   Úget_deployment_groupszBamboo.get_deployment_groupsã  sG   € ð !¨5Ñ1ˆÙØ˜kÐ*ˆFØ,¨]¨O¸7ÐCˆØ�x‰x˜×)Ñ)¨(Ó3¸FˆxÓCÐCr/   c                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )z­
        Revokes deployment project permissions from a given group.
        :param deployment_id:
        :param group:
        :param permissions:
        :return:
        rü   ú/groups/r·   r=   ©r   rÿ   Úgroupr	  r*   s        r   Úrevoke_group_from_deploymentz#Bamboo.revoke_group_from_deploymentô  s4   € ð -¨]¨O¸8ÀEÀ7ÐKˆØ�{‰{˜4×,Ñ,¨XÓ6¸[ˆ{ÓIÐIr/   c                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )zª
        Grants deployment project permissions to a given group.
        :param deployment_id:
        :param group:
        :param permissions:
        :return:
        rü   r  r·   r  r  s        r   Úgrant_group_to_deploymentz Bamboo.grant_group_to_deploymentÿ  s4   € ð -¨]¨O¸8ÀEÀ7ÐKˆØ�x‰x˜×)Ñ)¨(Ó3¸+ˆxÓFÐFr/   c                 óh   — ||dœ}|rd|i}d|› d�}| j                  | j                  |«      |¬«      S )aO  
        Retrieve a list of users with their explicit permissions to given resource.
        The list can be filtered by some attributes.
        This resource is paged and returns a single page of results.
        :param environment_id:
        :param filter_name:
        :param start:
        :param limit:
        :return:
        rà   r¿   úpermissions/environment/rý   rL   r9   ©r   rÝ   r   re   rÅ   r   r*   s          r   Úget_environment_userszBamboo.get_environment_users
  sH   € ð !¨5Ñ1ˆÙØ˜kÐ*ˆFØ-¨nÐ-=¸VÐDˆØ�x‰x˜×)Ñ)¨(Ó3¸FˆxÓCÐCr/   c                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )z°
        Revokes deployment environment permissions from a given user.
        :param environment_id:
        :param user:
        :param permissions:
        :return:
        r  r  r·   r=   ©r   rÝ   r  r	  r*   s        r   Úrevoke_user_from_environmentz#Bamboo.revoke_user_from_environment  s5   € ð .¨nÐ-=¸WÀTÀFÐKˆØ�{‰{˜4×,Ñ,¨XÓ6¸[ˆ{ÓIÐIr/   c                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )z­
        Grants deployment environment permissions to a given user.
        :param environment_id:
        :param user:
        :param permissions:
        :return:
        r  r  r·   r  r  s        r   Úgrant_user_to_environmentz Bamboo.grant_user_to_environment&  s5   € ð .¨nÐ-=¸WÀTÀFÐKˆØ�x‰x˜×)Ñ)¨(Ó3¸+ˆxÓFÐFr/   c                 óh   — ||dœ}|rd|i}d|› d�}| j                  | j                  |«      |¬«      S )aH  
        Retrieve a list of groups with their deployment environment permissions.
        The list can be filtered by some attributes.
        This resource is paged returns a single page of results.
        :param environment_id:
        :param filter_name:
        :param start:
        :param limit:
        :return:
        rà   r¿   r  r  rL   r9   r  s          r   Úget_environment_groupszBamboo.get_environment_groups1  sH   € ð !¨5Ñ1ˆÙØ˜kÐ*ˆFØ-¨nÐ-=¸WÐEˆØ�x‰x˜×)Ñ)¨(Ó3¸FˆxÓCÐCr/   c                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )z²
        Revokes deployment environment permissions from a given group.
        :param environment_id:
        :param group:
        :param permissions:
        :return:
        r  r  r·   r=   ©r   rÝ   r  r	  r*   s        r   Úrevoke_group_from_environmentz$Bamboo.revoke_group_from_environmentB  s5   € ð .¨nÐ-=¸XÀeÀWÐMˆØ�{‰{˜4×,Ñ,¨XÓ6¸[ˆ{ÓIÐIr/   c                 óV   — d|› d|› �}| j                  | j                  |«      |¬«      S )z¯
        Grants deployment environment permissions to a given group.
        :param environment_id:
        :param group:
        :param permissions:
        :return:
        r  r  r·   r  r$  s        r   Úgrant_group_to_environmentz!Bamboo.grant_group_to_environmentM  s5   € ð .¨nÐ-=¸XÀeÀWÐMˆØ�x‰x˜×)Ñ)¨(Ó3¸+ˆxÓFÐFr/   c                 óB   — | j                  | j                  d«      «      S )NÚinfor9   ©r   s    r   Úserver_infozBamboo.server_infoZ  s   € Ø�x‰x˜×)Ñ)¨&Ó1Ó2Ð2r/   c                 ó0   — d|i}| j                  d|¬«      S )zÐ
        Lists all the builds waiting in the build queue, adds or removes a build from the build queue.
        May be used also to resume build on manual stage or rerun failed jobs.
        :return:
        r"   zrest/api/latest/queuerL   rM   ©r   r"   r   s      r   Úget_build_queuezBamboo.get_build_queue]  s"   € ð ˜FÐ#ˆØ�x‰xÐ/¸ˆxÓ?Ð?r/   c                 ó0   — d|i}| j                  d|¬«      S )zs
        Provide list of deployment results scheduled for execution and waiting in queue.
        :return:
        r"   z rest/api/latest/queue/deploymentrL   rM   r-  s      r   Úget_deployment_queuezBamboo.get_deployment_queuef  s"   € ð
 ˜FÐ#ˆØ�x‰xÐ:À6ˆxÓJÐJr/   c                 óJ   — | j                  | j                  d«      d|i¬«      S )zŠ
        Provides a list of all agents.

        :param online:  filter only online agents (default False = all)
        :return:
        ÚagentÚonlinerL   r9   ©r   r3  s     r   Úagent_statuszBamboo.agent_statusn  s'   € ð �x‰x˜×)Ñ)¨'Ó2¸HÀfÐ;MˆxÓNÐNr/   c                 óT   — | j                  | j                  d|› d�«      «      }|d   S )z‚
        Get agent online status.

        :param agent_id:  Bamboo agent ID (integer number)
        :return: True/False
        úagent/z/statusr3  r9   )r   Úagent_idr   s      r   Úagent_is_onlinezBamboo.agent_is_onlinew  s1   € ð —8‘8˜D×-Ñ-°°x°jÀÐ.HÓIÓJˆØ˜Ñ!Ð!r/   c                 óL   — | j                  | j                  d|› d�«      «       y)zp
        Enable agent

        :param agent_id:  Bamboo agent ID (integer number)
        :return: None
        r7  rY   Nr  ©r   r8  s     r   Úagent_enablezBamboo.agent_enable�  s$   € ð 	�‰�×"Ñ" V¨H¨:°WÐ#=Ó>Õ?r/   c                 óL   — | j                  | j                  d|› d�«      «       y)zq
        Disable agent

        :param agent_id:  Bamboo agent ID (integer number)
        :return: None
        r7  z/disableNr  r;  s     r   Úagent_disablezBamboo.agent_disableŠ  s$   € ð 	�‰�×"Ñ" V¨H¨:°XÐ#>Ó?Õ@r/   c                 óJ   — | j                  | j                  d«      d|i¬«      S )zÄ
        Provides a list of all agent authentication statuses.

        :param online: list only online agents (default False = all)
        :return: list of agent-describing dictionaries
        zagent/remoter3  rL   r9   r4  s     r   Úagent_remotezBamboo.agent_remote“  s'   € ð �x‰x˜×)Ñ)¨.Ó9À8ÈVÐBTˆxÓUÐUr/   c                 ó\   — d}|rd|i}| j                  | j                  d|› �«      |¬«      S )zï
        Provides details of an agent with given id.

        :param agent_id:  Bamboo agent ID (integer number)
        :param expand:    Expand fields (None, capabilities, executableEnvironments, executableJobs)
        :return:
        Nr"   r7  rL   r9   )r   r8  r"   r   s       r   Úagent_detailszBamboo.agent_detailsœ  s;   € ð ˆÙØ Ð'ˆFØ�x‰x˜×)Ñ)¨F°8°*Ð*=Ó>ÀvˆxÓNÐNr/   c                 óR   — | j                  | j                  d|› d�«      d|i¬«      S )zÂ
        List agent's capabilities.

        :param agent_id:        Bamboo agent ID (integer number)
        :param include_shared:  Include shared capabilities
        :return: agents
        r7  z/capabilityÚincludeSharedrL   r9   )r   r8  Úinclude_shareds      r   Úagent_capabilitieszBamboo.agent_capabilities©  s9   € ð �x‰xØ×Ñ  x j°Ð<Ó=Ø# ^Ð4ð ó 
ð 	
r/   c                 ó$   — | j                  d«      S )Nz+build/admin/ajax/getDashboardSummary.actionrM   r*  s    r   ÚactivityzBamboo.activity¶  s   € Ø�x‰xÐEÓFÐFr/   c                 ó.   — d|› �}| j                  |«      S )zË
        Get list of all plans where user has admin permission and which override global expiry settings.
        If global expiry is not enabled it returns empty response.
        :param limit:
        z/rest/api/latest/admin/expiry/custom/plan?limit=rM   )r   rÅ   râ   s      r   Úget_custom_expiryzBamboo.get_custom_expiry¹  s   € ð @À¸wÐGˆØ�x‰x˜‹}Ðr/   c                 óR   — d|i}| j                  | j                  d«      dd|¬«      S )Nr!   zchart/reportsÚreportsÚreport)r   r   r   )r   r)   )r   r   r   s      r   rL  zBamboo.reportsÂ  s;   € Ø Ð-ˆØ×"Ñ"Ø×Ñ˜oÓ.Ø"Ø Øð	 #ó 
ð 	
r/   c                 óž   — ||||	|
dœ}|r||d<   |dk(  r
||d<   ||d<   |r||d<   |r||d<   | j                  | j                  d«      |¬	«      S )
a:  
        Get chart data
        :param report_key:
        :param build_keys:
        :param group_by_period:
        :param date_filter:
        :param date_from:
        :param date_to:
        :param width:
        :param height:
        :param start_index:
        :param max_results:
        :return:
        )Ú	reportKeyÚ	buildKeysÚgroupByPeriodr&   r!   Ú
dateFilterÚRANGEÚdateFromÚdateToÚwidthÚheightÚchartrL   r9   )r   Ú
report_keyÚ
build_keysÚgroup_by_periodÚdate_filterÚ	date_fromÚdate_torV  rW  r,   r   r   s               r   rX  zBamboo.chartË  s|   € ð8 $Ø#Ø,Ø&Ø&ñ
ˆñ Ø#.ˆF�<Ñ Ø˜gÒ%Ø%.��zÑ"Ø#*��xÑ ÙØ#ˆF�7‰OÙØ%ˆF�8ÑØ�x‰x˜×)Ñ)¨'Ó2¸6ˆxÓBÐBr/   c                 óB   — | j                  | j                  d«      «      S )zó
        Returns status of the current indexing operation.
        reindexInProgress - reindex is currently performed in background reindexPending - reindex is required
        (i.e. it failed before or some upgrade task asked for it)
        Úreindexr9   r*  s    r   r`  zBamboo.reindexø  s   € ð �x‰x˜×)Ñ)¨)Ó4Ó5Ð5r/   c                 óB   — | j                  | j                  d«      «      S )za
        Kicks off a reindex. Requires system admin permissions to perform this reindex.
        r`  r\   r*  s    r   Ústop_reindexzBamboo.stop_reindex   s   € ð �y‰y˜×*Ñ*¨9Ó5Ó6Ð6r/   c                 óN   — | j                  d«      }|s| j                  d«      }|S )z§
        Get health status
        https://confluence.atlassian.com/jirakb/how-to-retrieve-health-check-results-using-rest-api-867195158.html
        :return:
        zrest/troubleshooting/1.0/check/z"rest/supportHealthCheck/1.0/check/rM   ©r   r   s     r   Úhealth_checkzBamboo.health_check  s*   € ð —8‘8Ð=Ó>ˆÙà—x‘xÐ DÓEˆHØˆr/   c                 óN   — d|› d�}| j                  | j                  |«      «      S )z\
        Get logs from an EC2 instance
        :param instance_id:
        :return:
        z/elasticInstances/instance/z/logsr9   )r   Úinstance_idr*   s      r   Úget_elastic_instance_logsz Bamboo.get_elastic_instance_logs  s,   € ð 1°°¸UÐCˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c                 óF   — d}| j                  | j                  |«      «      S )zI
        Get list of all elastic configurations
        :return:
        ÚelasticConfigurationr9   )r   r*   s     r   Úget_elastic_configurationsz!Bamboo.get_elastic_configurations  s#   € ð
 *ˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c                 óJ   — d}| j                  | j                  |«      |¬«      S )zW
        Create an elastic configuration
        :param json:
        :return:
        rj  )r   r\   )r   r   r*   s      r   Úcreate_elastic_configurationz#Bamboo.create_elastic_configuration&  s'   € ð *ˆØ�y‰y˜×*Ñ*¨8Ó4¸4ˆyÓ@Ð@r/   c                 óL   — d|› �}| j                  | j                  |«      «      S )zo
        Get information of an elastic configuration
        :param configuration_id:
        :return:
        úelasticConfiguration/r9   ©r   Úconfiguration_idr*   s      r   Úget_elastic_configurationz Bamboo.get_elastic_configuration/  s,   € ð +Ð+;Ð*<Ð=ˆØ�x‰x˜×)Ñ)¨(Ó3Ó4Ð4r/   c                 óP   — d|› �}| j                  | j                  |«      |¬«      S )zx
        Update an elastic configuration
        :param configuration_id:
        :param data:
        :return:
        ro  r·   r  )r   rq  r   r*   s       r   Úupdate_elastic_configurationz#Bamboo.update_elastic_configuration9  s0   € ð +Ð+;Ð*<Ð=ˆØ�x‰x˜×)Ñ)¨(Ó3¸$ˆxÓ?Ð?r/   c                 óL   — d|› �}| j                  | j                  |«      «      S )zc
        Delete an elastic configuration
        :param configuration_id:
        :return:
        ro  r=   rp  s      r   Údelete_elastic_configurationz#Bamboo.delete_elastic_configurationD  s,   € ð +Ð+;Ð*<Ð=ˆØ�{‰{˜4×,Ñ,¨XÓ6Ó7Ð7r/   c                 ó(   — | j                  d«      }|S )zC
        Get elastic bamboo configuration
        :return:
        ú rest/admin/latest/elastic/configrM   rd  s     r   Úget_elastic_bamboozBamboo.get_elastic_bambooN  s   € ð
 —8‘8Ð>Ó?ˆØˆr/   c                 ó,   — | j                  d|¬«      }|S )zC
        Set elastic bamboo configuration
        :return:
        rx  r·   ©rv   )r   r   r   s      r   Úset_elastic_bamboozBamboo.set_elastic_bambooV  s   € ð
 —8‘8Ð>ÀT�8ÓJˆØˆr/   c                 óB   — d}| j                  || j                  d¬«      S )zR
        Provide plugins info
        :return a json of installed plugins
        úrest/plugins/1.0/T©r   Útrailing©r
   r®   ©r   râ   s     r   Úget_plugins_infozBamboo.get_plugins_info^  s$   € ð
 "ˆØ�x‰x˜ T×%:Ñ%:ÀTˆxÓJÐJr/   c                 óJ   — d|› d�}| j                  || j                  d¬«      S )zQ
        Provide plugin info
        :return a json of installed plugins
        r~  ú-keyTr  r�  ©r   Ú
plugin_keyrâ   s      r   Úget_plugin_infozBamboo.get_plugin_infof  s-   € ð
 " * ¨TÐ2ˆØ�x‰x˜ T×%:Ñ%:ÀTˆxÓJÐJr/   c                 óJ   — d|› d�}| j                  || j                  d¬«      S )zb
        Provide plugin license information
        :return a json specific License query
        r~  z-key/licenseTr  r�  r†  s      r   Úget_plugin_license_infozBamboo.get_plugin_license_infon  s-   € ð
 " * ¨\Ð:ˆØ�x‰x˜ T×%:Ñ%:ÀTˆxÓJÐJr/   c                 ó¼   — dt        |d«      i}| j                  dd| j                  d¬«      j                  d   }d|› �}| j	                  ||| j                  ¬	«      S )
zƒ
        Provide plugin path for upload into Jira e.g. useful for auto deploy
        :param plugin_path:
        :return:
        ÚpluginÚrbÚGETr~  T)Úmethodr   r   r€  z	upm-tokenzrest/plugins/1.0/?token=)Úfilesr   )ÚopenÚrequestr®   r   r]   )r   Úplugin_pathr�  Ú	upm_tokenrâ   s        r   Úupload_pluginzBamboo.upload_pluginv  sq   € ð œ4 ¨TÓ2Ð3ˆØ—L‘LØØ$Ø×)Ñ)Øð	 !ó 
÷
 ‰'�+ñˆ	ð )¨¨Ð4ˆØ�y‰y˜ E°4×3HÑ3HˆyÓIÐIr/   c                 óH   — dddœ}d|› d�}ddi}| j                  |||¬«      S )	zN
        Disable a plugin
        :param plugin_key:
        :return:
        úno-checkú application/vnd.atl.plugins+json©zX-Atlassian-TokenzContent-Typer~  r…  ÚstatusÚdisabled©r   r   r{  ©r   r‡  Úapp_headersrâ   r   s        r   Údisable_pluginzBamboo.disable_plugin†  s@   € ð ",Ø>ñ
ˆð " * ¨TÐ2ˆØ˜*Ð%ˆØ�x‰x˜ $°ˆxÓ<Ð<r/   c                 óH   — dddœ}d|› d�}ddi}| j                  |||¬«      S )	zM
        Enable a plugin
        :param plugin_key:
        :return:
        r—  r˜  r™  r~  r…  rš  rs   rœ  r{  r�  s        r   Úenable_pluginzBamboo.enable_plugin”  s@   € ð ",Ø>ñ
ˆð " * ¨TÐ2ˆØ˜)Ð$ˆØ�x‰x˜ $°ˆxÓ<Ð<r/   c                 ó0   — d|› d�}| j                  |«      S )zK
        Delete plugin
        :param plugin_key:
        :return:
        r~  r…  rU   r†  s      r   Údelete_pluginzBamboo.delete_plugin¢  s!   € ð " * ¨TÐ2ˆØ�{‰{˜3ÓÐr/   c                 óB   — d}| j                  d|| j                  ¬«      S )z>
        Check plugin manager status
        :return:
        zrest/plugins/latest/safe-moderŽ  )r�  r   r   )r’  Úsafe_mode_headersr‚  s     r   Úcheck_plugin_manager_statusz"Bamboo.check_plugin_manager_status«  s$   € ð
 .ˆØ�|‰| 5¨s¸D×<RÑ<Rˆ|ÓSÐSr/   c                 óH   — dddœ}d|› d�}d|i}| j                  |||¬«      S )zs
        Update license for plugin
        :param plugin_key:
        :param raw_license:
        :return:
        r—  r˜  r™  z/plugins/1.0/z/licenseÚ
rawLicenserœ  r{  )r   r‡  Úraw_licenserž  râ   r   s         r   Úupdate_plugin_licensezBamboo.update_plugin_license³  s@   € ð ",Ø>ñ
ˆð ˜j˜\¨Ð2ˆØ˜kÐ*ˆØ�x‰x˜ $°ˆxÓ<Ð<r/   )r   r}   NNNNN)Nr   )NFFr6   )NFF)r   r6   )NFFr   r6   )N)Tr   r6   )Tr6   r   )r6   )NNNNNFFNNr   r6   F)NFFNNr   r6   F)NFr   r6   )NF)NTN)Nr6   )Nr   r6   )Ú r   r6   )ÚqueuedBuilds)ÚqueuedDeployments)F)T)NNNNNé	   r6   )dÚ__name__Ú
__module__Ú__qualname__Ú__doc__r   r.   r2   r1   r;   r?   rD   rA   rI   rN   rS   rV   rZ   r^   rf   rj   rn   ry   r{   r   r‰   r‹   r�   r—   r™   r    r¬   r¯   r´   rº   r½   rÁ   rÃ   ÚpropertyrÇ   rÉ   rÎ   rÐ   rÓ   rÕ   rØ   rÞ   rã   ræ   rê   rí   rñ   ró   rø   rú   r  r
  r  r  r  r  r  r  r   r"  r%  r'  r+  r.  r0  r5  r9  r<  r>  r@  rB  rF  rH  rJ  rL  rX  r`  rb  re  rh  rk  rm  rr  rt  rv  ry  r|  rƒ  rˆ  rŠ  r•  rŸ  r¡  r£  r¦  rª  © r/   r   r   r      so  „ Ùð
 ØØØØØØó1ðt Øó QðD ð ØØØó
ó2
ò&5ò8ó

ð. ØØØØó
ò8	5ó1ó
ò %ò8ò6ð ó;ð4 ØØØó
ò:5ð ØØóDó<
ð" ð ØØØØØØØØØØØ ó9
ðz ØØØØØØØ ó 
ðJ ØØØØØØØ ó#
ðR ØØØØØØØ ó&
ðV Ø ØØó ]óDeò.
Zð ØØóEò@Gð ð ØóDò*Ið( ØóDò*
Lò
8ð òó ðð0 òò5ò8ó;ó(5ò%ò
Eð ó	,ó
,ò	)ò ò
*ò
,ó,ó ,ó"Dò" Lfó 	Jò	GóDò" Nhó 	Jò	GóDò" Nhó 	Jò	GóDò" Pjó 	Jò	Gð ò3ó@óKóOò"ò@òAóVóOó
òGóó
ð ØØØØØØó+CòZ6ò7òð ò5ò5òAò5ò	@ò8òòòKòKòKòJò =ò=ò òTó=r/   r   )	r   Úrequests.exceptionsr   Úrest_clientr   Ú	getLoggerr¯  Úlogr   r´  r/   r   ú<module>r¹     s/   ðã å )å )à€g×Ñ˜Ó!€ôu=Ðõ u=r/   