Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save codedevloperjagadeesh/1f3d30b0e4ea2b672c1df4dfbc23eed3 to your computer and use it in GitHub Desktop.
Save codedevloperjagadeesh/1f3d30b0e4ea2b672c1df4dfbc23eed3 to your computer and use it in GitHub Desktop.

Revisions

  1. @andymotta andymotta created this gist Apr 10, 2019.
    88 changes: 88 additions & 0 deletions update_confluence.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,88 @@
    #!/usr/bin/env python

    '''
    Update/create a page containing a table w/ Confluence REST API
    '''

    import requests
    import json

    # Get api credentials from local config file
    from configparser import ConfigParser
    credentials = ConfigParser()
    credentials.read('../.credentials')
    user = credentials.get('confluence','user')
    password = credentials.get('confluence','password')
    auth = (user, password) # login and API token/password

    # Requisite JSON headers for API
    headers = {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    }

    natip="10.10.0.2"
    environment="dev"

    table = {
    "Environment URL" : "https://" + environment + ".myorg.org",
    "Jumpbox SSH" : "ssh -p 2222 user@" + natip,
    "Jumpbox VNC" : "vnc://user@" + natip + ":5901"
    }

    with open('confluence_table.html', 'w') as f1:
    html = """<html> <h3>This page is generated via bootstrap automation</h3><table border="0">"""
    for x in table:
    html += "<tr>"
    html += "<td>"+x+"</td>"
    if str(table[x]).startswith(('http','vnc')):
    html += "<td><a href=\""+str(table[x])+"\">"+str(table[x])+"</a></td>"
    else:
    html += "<td>"+str(table[x])+"</td>"
    html += "</tr>"
    html += "</table></html>"
    f1.write(''.join(html))

    params = {'spaceKey': 'SPACE', 'title': environment}
    result = requests.get("https://confluence.myorg.org/rest/api/content/", headers=headers, auth=auth, params=params)
    json_output = json.loads(result.text)
    if json_output['results']:
    pid = json_output['results'][0]['id']
    print "Updating: https://confluence.myorg.org/display/SPACE/" + environment

    else:
    data = {
    'title': environment,
    'type': 'page',
    'space': {'key': 'SPACE'},
    'ancestors': [{'id': '00000000'}] # ID of the parent page
    }
    result = requests.post("https://confluence.myorg.org/rest/api/content/", headers=headers, auth=auth, json=data)
    json_output = json.loads(result.text)
    pid = json_output['id']
    print "Creating: https://confluence.myorg.org/display/SPACE/" + environment

    result = requests.get("https://confluence.myorg.org/rest/api/content/"+pid, headers=headers, auth=auth)
    json_output = json.loads(result.text)
    version = json_output['version']['number']

    data = {
    'type': 'page',
    'title': environment,
    'body': {
    'storage': {
    'value': html,
    'representation': 'storage',
    }
    },
    'version': {
    'number': version + 1,
    }
    }

    result = requests.put("https://confluence.myorg.org/rest/api/content/"+pid, headers=headers, auth=auth, json=data)

    # Mac-ish
    import subprocess
    subprocess.call(["/usr/bin/open", "confluence_table.html"])
    subprocess.call(["/usr/bin/open", "https://confluence.myorg.org/display/SPACE/"+environment])