Skip to content

Instantly share code, notes, and snippets.

@elmariofredo
Last active November 1, 2016 17:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elmariofredo/ec3b6007b88179f7be5183bf3e5f8119 to your computer and use it in GitHub Desktop.
Save elmariofredo/ec3b6007b88179f7be5183bf3e5f8119 to your computer and use it in GitHub Desktop.
TeamCity disable/enable all agents from commandline
#!/usr/bin/env python
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
import argparse
parser = argparse.ArgumentParser( description='Enable/Disable TeamCity agents.' )
parser.add_argument( 'enable', default='true', help='enable with true, disable with false' )
parser.add_argument( '--user', dest='user', required=True, help='TeamCity user name' )
parser.add_argument( '--password', dest='password', required=True, help='TeamCity password' )
parser.add_argument( '--url', dest='url', required=True, help='TeamCity url e.g. https://teamcity.cz.infra/app/rest/10.0' )
args = parser.parse_args()
user = args.user
password = args.password
tcServerURL = args.url
enable = args.enable
def agentEnable( id, enable='true' ):
print '[START] Agent ID: %d enable => %s' % ( id, enable )
response = requests.put('%s/agents/id:%d/enabled'%(tcServerURL,id), auth=(user, password), data=enable, verify=False)
print '[END] Agent ID: %d response: enable = %s' % ( id, response.text )
def allAgentsEnable( enable='true' ):
agents = requests.get('%s/agentPools/id:0/agents'%(tcServerURL), auth=(user, password), verify=False, headers={'Accept': 'application/json'}).json()['agent']
for agent in agents:
agentEnable( agent['id'], enable )
allAgentsEnable( enable )
#!/usr/bin/env python
import time
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
import argparse
parser = argparse.ArgumentParser( description='Check TeamCity builds.' )
parser.add_argument( '--user', dest='user', required=True, help='TeamCity user name' )
parser.add_argument( '--password', dest='password', required=True, help='TeamCity password' )
parser.add_argument( '--url', dest='url', required=True, help='TeamCity url e.g. https://teamcity.cz.infra/app/rest/10.0' )
args = parser.parse_args()
user = args.user
password = args.password
tcServerURL = args.url
def buildsRunning():
response = requests.get('%s/builds?locator=running:true'%(tcServerURL), auth=(user, password), verify=False, headers={'Accept': 'application/json'}).json()
return True if response['count'] > 0 else False
while buildsRunning():
print 'Checking builds'
time.sleep(5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment