def api_post_link_runbook_schedule(subid, groupid, automationid, rubbookid, schid): # example for the body #[{"name":"ResourceGroupName","value":"\"testvms\""},{"name":"VMName","value":"\"*\""}] obj = request.data.decode('utf8').replace("'", '"') print(obj) runbook_parameter = (setting.RUNBOOK_PARAMETER_ENDPOINT % (subid, groupid, automationid, rubbookid)) schedule_parameter = (setting.SCHEDULE_PARAMETER_ENDPOINT % (subid, groupid, automationid, schid)) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "text/plain" } endpoint_delete = (setting.RUNBOOK_SCHEDULE_DELETE_ENDPOINT % (runbook_parameter.replace("/", "%2F"), schedule_parameter.replace("/", "%2F"))) endpoint_post = (setting.RUNBOOK_SCHEDULE_ENDPOINT % (runbook_parameter.replace( "/", "%2F"), schedule_parameter.replace("/", "%2F"))) # We should revisit the code here to make it better # run delete first to remove the link print(endpoint_delete) json_output = requests.post(endpoint_delete, headers=headers).status_code #now post headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } json_output = requests.post(endpoint_post, data=obj, headers=headers).status_code return str(json_output)
def api_get_link_runbook_schedules(subid, groupid, automationid, rubbookid): runbook_parameter = (setting.RUNBOOK_PARAMETER_ENDPOINT % (subid, groupid, automationid, rubbookid)) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } endpoint = (setting.RUNBOOK_SCHEDULES_LIST_ENDPOINT % (runbook_parameter.replace("/", "%2F"))) print(endpoint) print(autentication.get_token()) json_output = requests.get(endpoint, headers=headers).json() return str(json_output)
def api_delete_schedules(subid, groupid, automationid, schid): endpoint = (setting.SCHEDULE_ENDPOINT % (subid, groupid, automationid, schid)) headers = {"Authorization": 'Bearer ' + autentication.get_token()} json_output = requests.delete(endpoint, headers=headers).json() return str(json_output)
def api_subscriptions(): endpoint = setting.SUBSCRIPTIONS_ENDPOINT headers = {"Authorization": 'Bearer ' + autentication.get_token()} json_output = requests.get(endpoint, headers=headers).json() # get all the subscription return str(json_output)
def api_get_automation(subid, groupid, automationid): print(setting.AUTOMATION_ENDPOINT) #endpoint = (autentication.kv_get_secret("automation-endpoint") % (subid,groupid,automationid)) endpoint = (setting.AUTOMATION_ENDPOINT % (subid, groupid, automationid)) headers = {"Authorization": 'Bearer ' + autentication.get_token()} json_output = requests.get(endpoint, headers=headers).json() return str(json_output)
def api_resourcegroupRole(subid, groupid, roleid): endpoint = (setting.RESOURCEGROUP_ENDPOINT % (subid, groupid, roleid)) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } json_output = requests.get(endpoint, headers=headers).json() return (json_output)
def api_put_newjob(subid,groupid,automationid,jobid): obj = request.data.decode('utf8').replace("'", '"') print (obj) endpoint = (setting.JOB_ENDPOINT % (subid,groupid,automationid,jobid)) print(endpoint) headers = {"Authorization": 'Bearer ' + autentication.get_token(),"Content-type": "application/json"} json_output = requests.put(endpoint,data=obj,headers=headers).json() return str(json_output)
def check_group_member(groupId, principalId): endpoint = "https://graph.microsoft.com/v1.0/groups/" + groupId + "/members" print(endpoint) headers = {"Authorization": 'Bearer ' + autentication.get_token()} userlist = requests.get(endpoint, headers=headers).json() if (principalId in userlist): return True else: return False
def api_resourcegroup_vmlist_status(subid, groupid): endpoint = (setting.RESOURCEGROUP_VMS_ENDPOINT % (subid, groupid)) #print(headers) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } json_output = requests.get(endpoint, headers=headers).json() vms = json.dumps(json_output) #vms = str(json_output).replace("'","\"").replace("True","\"True\"").replace("False","\"False\"") vms_json = json.loads(vms) vms_data = objectpath.Tree(vms_json['value']) namelist = tuple(vms_data.execute('$.name')) print("========= vm list name =================") print(namelist) print("============vm status end point =======") print(setting.RESOURCEGROUP_VM_STATUS_ENDPOINT) vmstatus = [] for vm in namelist: print("processing vm" + vm) endpoint = (setting.RESOURCEGROUP_VM_STATUS_ENDPOINT % (subid, groupid, vm)) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } json_output = requests.get(endpoint, headers=headers).json() detail = json.dumps(json_output) #detail = str(json_output).replace("'","\"").replace("True","\"True\"").replace("False","\"False\"") print(detail) vm_json = json.loads(detail) print(json) namelist = vm_json["properties"]["instanceView"]["statuses"][1]["code"] print(namelist) #namelist = tuple(status.execute('$.instanceView.statuses.code')) if "PowerState/running" in namelist: vmstatus.append({'vm_name': vm, 'status': 'running'}) else: vmstatus.append({'vm_name': vm, 'status': 'stopped'}) result = json.dumps(vmstatus) return result
def api_post_control_job(subid,groupid,automationid,jobid,controlid): control_list = ['stop', 'resume', 'suspend'] ops = str(controlid).lower() if any( ops in s for s in control_list): endpoint = (setting.JOB_CONTROL_ENDPOINT % (subid,groupid,automationid,jobid,ops)) print(endpoint) headers = {"Authorization": 'Bearer ' + autentication.get_token(),"Content-type": "application/json"} output = str(requests.post(endpoint,headers=headers)) return (output) else: return str("Stop, Resume and Suspended are the only valid operations")
def api_put_schedule(subid, groupid, automationid, schid): obj = request.data.decode('utf8').replace("'", '"') print("Reciving the following body") print(obj) print("") endpoint = (setting.SCHEDULE_ENDPOINT % (subid, groupid, automationid, schid)) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } json_output = requests.put(endpoint, data=obj, headers=headers).json() print(json_output) return str(json_output)
def api_resourcegroup_vmlist(subid, groupid): endpoint = (setting.RESOURCEGROUP_VMS_ENDPOINT % (subid, groupid)) #print(headers) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } json_output = requests.get(endpoint, headers=headers).json() vms = json.dumps(json_output) #vms = str(json_output).replace("'","\"").replace("True","\"True\"").replace("False","\"False\"") vms_json = json.loads(vms) vms_data = objectpath.Tree(vms_json['value']) namelist = tuple(vms_data.execute('$.name')) print(namelist) return str(namelist)
def api_resourcegroup_vm_manage(subid, groupid, vmid, action): if (action == "start"): endpoint = (setting.RESOURCEGROUP_VM_START_ENDPOINT % (subid, groupid, vmid)) if (action == "stop"): endpoint = (setting.RESOURCEGROUP_VM_STOP_ENDPOINT % (subid, groupid, vmid)) if (action == "restart"): endpoint = (setting.RESOURCEGROUP_VM_RESTART_ENDPOINT % (subid, groupid, vmid)) headers = { "Authorization": 'Bearer ' + autentication.get_token(), "Content-type": "application/json" } print(endpoint) json_output = requests.post(endpoint, headers=headers).status_code return str(json_output)
def api_user_group(subscriptionId, principalId): userlist = [] user_membership = get_user_membership(principalId) endpoint = setting.ROLE_ASSIGMENT_ENDPOINT % (subscriptionId, principalId) print(endpoint) headers = {"Authorization": 'Bearer ' + autentication.get_token()} rolename = setting.ROLE_ASSIGMENT_NAME respond = requests.get(endpoint, headers=headers) status = respond.status_code print(status) if (status == 200): json_output = requests.get(endpoint, headers=headers).json() roles = json.loads(str(json_output).replace("'", "\"")) if rolename in str(json_output): roles_data = objectpath.Tree(roles['value']) proplist = tuple(roles_data.execute('$.properties')) for p in proplist: add_group = False role = p['roleDefinitionId'] if (rolename in role) & (principalId == p['principalId']): add_group = True else: #add_group=check_group_member(p['principalId'],principalId) if (p['principalId'] in user_membership): add_group = True if (add_group): rg = p['scope'].split('/').pop() if (rg != subscriptionId): userlist.append(rg) print(userlist) return json.dumps(userlist) else: return "{}" else: return "{}"
def api_get_jobscheduledetail(subid,groupid,automationid,jobid): endpoint = (setting.JOB_SCHEDULE_ENDPOINT % (subid,groupid,automationid,jobid)) headers = {"Authorization": 'Bearer ' + autentication.get_token()} json_output = requests.get(endpoint,headers=headers).json() return str(json_output)
def api_get_runbook_content(subid, groupid, automationid, runbookid): endpoint = (setting.RUNBOOK_CONTENT_ENDPOINT % (subid, groupid, automationid, runbookid)) headers = {"Authorization": 'Bearer ' + autentication.get_token()} json_output = requests.get(endpoint, headers=headers).json() return str(json_output)
def api_resourcegroupInfo(subid, groupid): endpoint = (setting.RESOURCEGROUP_ENDPOINT % (subid, groupid)) headers = {"Authorization": 'Bearer ' + autentication.get_token()} json_output = requests.get(endpoint, headers=headers).json() return str(json_output)