- Notifications
You must be signed in to change notification settings - Fork0
Ansible Semaphore Python API Lib
License
NotificationsYou must be signed in to change notification settings
nchekwa/ansible-semaphore-api
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Ansible Semaphore Python API Lib
pip install semaphore-api
-or- manual installation:
SEMAPHORE_API_VERSION=$(curl -s https://api.github.com/repos/nchekwa/ansible-semaphore-api/releases/latest| jq -r'.name'| sed's/^v//')echo$SEMAPHORE_API_VERSIONcurl -LJOs https://github.com/nchekwa/ansible-semaphore-api/raw/main/dist/semaphore_api-$SEMAPHORE_API_VERSION-py3-none-any.whlpip install semaphore_api-$SEMAPHORE_API_VERSION-py3-none-any.whl
fromsemaphore_api.configurationimportConfigurationfromsemaphore_api.api.authentication_apiimportAuthenticationApifromsemaphore_api.api_clientimportApiClientfromsemaphore_api.api.projects_apiimportProjectsApifromsemaphore_api.models.loginimportLoginfromsemaphore_api.models.api_tokenimportAPITokenfromsemaphore_api.api_responseimportApiResponsefromsemaphore_api.api.user_apiimportUserApihost="127.0.0.1"port="3000"protocol="http"username="admin"password="admin"configuration=Configuration(host=f"{protocol}://{host}:{port}/api",)api_client=ApiClient(configuration)api_instance=AuthenticationApi(api_client)login_body=Login(auth=username,password=password)# Parse login-reponselogin:ApiResponse=api_instance.auth_login_post_with_http_info(login_body)print(f"login ->{type(login)} ->{login}")# Get Cookie from login-reponseapi_cookie=login.headers['Set-Cookie']print(f"api_cookie ->{type(api_cookie)} ->{api_cookie}")# Set Cookie to API Clientapi_client.cookie=api_cookie# Example 1: Get projects based on Cookieprojects_get=ProjectsApi(api_client).projects_get()print(f"projects_get ->{type(projects_get)} ->{projects_get}")# Example 2: Create Tokenuser_tokens_post:APIToken=UserApi(api_client).user_tokens_post()print(f"user_tokens_post ->{type(user_tokens_post)} ->{user_tokens_post}")# Example 3: Delete Tokenuser_tokens_api_token_id_delete:APIToken=UserApi(api_client).user_tokens_api_token_id_delete(api_token_id=user_tokens_post.id)print(f"user_tokens_api_token_id_delete ->{type(user_tokens_api_token_id_delete)} ->{user_tokens_api_token_id_delete}")# Example 4: Get List of all tokensuser_tokens_get=AuthenticationApi(api_client).user_tokens_get()print(f"user_tokens_get ->{type(user_tokens_get)} ->{user_tokens_get}")
Response:
login -> <class 'semaphore_api.api_response.ApiResponse'> -> status_code=204 headers={'Content-Type': 'application/json', 'Set-Cookie': 'semaphore=MTcwMTkyNjcwN3xGRmtnNEVNRnJFUEg5cThLTGlnUVFkZEJnZHY4Y3BlQno0TGNmbzNhTEVXMGZHdi1aWkQ0TmgwRmZkNTlyV09TYkU3WlhmZV9CRXpCczBpc1pwZkd2dGc9fIe8S1uDxjr2z5DjtAY2TDGwTeS4M44usYYhH7iSRpj5; Path=/', 'Date': 'Thu, 07 Dec 2023 05:25:07 GMT'} data=None raw_data=b''api_cookie -> <class 'str'> -> semaphore=MTcwMTkyNjcwN3xGRmtnNEVNRnJFUEg5cThLTGlnUVFkZEJnZHY4Y3BlQno0TGNmbzNhTEVXMGZHdi1aWkQ0TmgwRmZkNTlyV09TYkU3WlhmZV9CRXpCczBpc1pwZkd2dGc9fIe8S1uDxjr2z5DjtAY2TDGwTeS4M44usYYhH7iSRpj5; Path=/projects_get -> <class 'list'> -> [Project(id=1, name='Junier', created='2023-11-27T22:36:46.900379365Z', alert=False, alert_chat=None, max_parallel_tasks=0), Project(id=2, name='Cisco', created='2023-11-27T22:36:53.049960469Z', alert=False, alert_chat=None, max_parallel_tasks=0), Project(id=8, name='New Project A', created='2023-12-07T04:54:57.198626268Z', alert=False, alert_chat=None, max_parallel_tasks=0)]user_tokens_post -> <class 'semaphore_api.models.api_token.APIToken'> -> id='kffsrc7wunuiqswfheu1xhlvrkjhes6d4koyjtvjgt8=' created='0001-01-01T00:00:00Z' expired=False user_id=1user_tokens_api_token_id_delete -> <class 'NoneType'> -> Noneuser_tokens_get -> <class 'list'> -> [APIToken(id='4tb0h2egdfxccppk5yiyikw38iglq86loe_t6ragmv4=', created='0001-01-01T00:00:00Z', expired=False, user_id=1), APIToken(id='7uxrljogdekxdretrdlhlcqvl3p_6d1rymrqokf5hau=', created='0001-01-01T00:00:00Z', expired=False, user_id=1), APIToken(id='kffsrc7wunuiqswfheu1xhlvrkjhes6d4koyjtvjgt8=', created='0001-01-01T00:00:00Z', expired=True, user_id=1), APIToken(id='ujg3e2irwq5_00gezbzo6qee9ldsqiwnekstfhbv5v4=', created='0001-01-01T00:00:00Z', expired=True, user_id=1), APIToken(id='zkaidtasbkv84q4_4a20wb0j3uhkspvm3tbfwtdm6f4=', created='0001-01-01T00:00:00Z', expired=True, user_id=1)]Please note 'kffsrc7wunuiqswfheu1xhlvrkjhes6d4koyjtvjgt8' - that token will not be removed. It will be marked asexpired=True
importsemaphore_apifromsemaphore_api.api.default_apiimportDefaultApifromsemaphore_api.models.project_requestimportProjectRequestfromsemaphore_api.models.projectimportProjectfromsemaphore_api.api.projects_apiimportProjectsApifromsemaphore_api.api.project_apiimportProjectApifrompprintimportpprintdefget_id_by_name(items_list,search_name):foriteminitems_list:ifitem.name==search_name:returnitem.idreturnNone# Return None if the name is not found in the listapi_key='7uxrljogdekxdretrdlhlcqvl3p_6d1rymrqokf5hau='host="127.0.0.1"port="3000"protocol="http"configuration=semaphore_api.Configuration(host=f"{protocol}://{host}:{port}/api",api_key= {'bearer':api_key},api_key_prefix={'bearer':'Bearer'})api_client=semaphore_api.ApiClient(configuration)# Example 1 - Pingping_get=DefaultApi(api_client).ping_get()print(f"ping_get ->{type(ping_get)} ->{ping_get}")# Example 2 - Ansible Semaphore Infoinfo_get=DefaultApi(api_client).info_get()print(f"info_get ->{type(info_get)} ->{info_get.__dict__} ->{type(info_get.__dict__)}")## Example 3 - Create new projectnew_project=ProjectRequest(name="New Project A")projects_post=ProjectsApi(api_client).projects_post(new_project)print(f"projects_post ->{type(projects_post)} ->{projects_post}")# Example 4 - Get List of the projectprojects_get=ProjectsApi(api_client).projects_get()print(f"projects_get ->{type(projects_get)} ->{projects_get}")# Extract project ID from list (search by name)new_project_id=get_id_by_name(ProjectsApi(api_client).projects_get(),new_project.name)print(f"new_project_id ->{new_project_id}")# Example 5project_delete=ProjectApi(api_client).project_project_id_delete(new_project_id)print(f"project_delete ->{type(project_delete)} ->{project_delete}")projects_get=ProjectsApi(api_client).projects_get()print(f"projects_get ->{type(projects_get)} ->{projects_get}")
Response:
ping_get -> <class 'str'> -> ponginfo_get -> <class 'semaphore_api.models.info_type.InfoType'> -> {'version': 'v2.9.37', 'update_body': None, 'update': None} -> <class 'dict'>projects_post -> <class 'NoneType'> -> Noneprojects_get -> <class 'list'> -> [Project(id=1, name='Junier', created='2023-11-27T22:36:46.900379365Z', alert=False, alert_chat=None, max_parallel_tasks=0), Project(id=2, name='Cisco', created='2023-11-27T22:36:53.049960469Z', alert=False, alert_chat=None, max_parallel_tasks=0), Project(id=6, name='New Project A', created='2023-12-07T04:45:10.520367408Z', alert=False, alert_chat=None, max_parallel_tasks=0), Project(id=7, name='New Project A', created='2023-12-07T04:46:47.026084765Z', alert=False, alert_chat=None, max_parallel_tasks=0)]new_project_id -> 6project_delete -> <class 'NoneType'> -> Noneprojects_get -> <class 'list'> -> [Project(id=1, name='Junier', created='2023-11-27T22:36:46.900379365Z', alert=False, alert_chat=None, max_parallel_tasks=0), Project(id=2, name='Cisco', created='2023-11-27T22:36:53.049960469Z', alert=False, alert_chat=None, max_parallel_tasks=0), Project(id=7, name='New Project A', created='2023-12-07T04:46:47.026084765Z', alert=False, alert_chat=None, max_parallel_tasks=0)]About
Ansible Semaphore Python API Lib
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.