def aggregations_terms(query=None): """Get page for aggregations.""" if query is None: # Default query query = "state,config.instance_type" # Remove all white spaces from the str query = query.replace(" ", "") data = {"query": query} end_point = "aggregations/terms" url = SOUNDWAVE_API + end_point response = requests.post(url, json=data) if response.status_code == 200 or response.status_code == 304: json_data = json_loads_byteified(response.text) return render_template("aggregations.html", data=json.dumps(json_data), query=query) elif response.status_code == 404 or response.status_code == 400: logger.warn( "Data not found in soundwave elastic search store. API returned 404" ) return render_template("404.html") elif response.status_code == 500: logger.warn( "soundwave api returned 500 status code. Internal Server error") return render_template("500.html")
def get_vm_private_ip(): cmd = """ az vm list-ip-addresses -g %s --output json --query '[].{name:virtualMachine.name, privateIP:virtualMachine.network.privateIpAddresses}' """ % (config["azure_cluster"]["resource_group_name"]) if verbose: print(cmd) output = utils.exec_cmd_local(cmd) return utils.json_loads_byteified(output)
def get_vm_list_by_grp(): cmd = """ az vm list --output json -g %s --query '[].{name:name, vmSize:hardwareProfile.vmSize}' """ % (config["azure_cluster"]["resource_group_name"]) if verbose: print(cmd) output = utils.exec_cmd_local(cmd) return utils.json_loads_byteified(output)
def getServerFiles(): #Create payload message payload = json.dumps({"type": MessageTypes.FETCH}) data = sendMessage(MessageTypes.FETCH, payload) #Decode the recieved data from unicode, then Parse data into JSON format data = utils.json_loads_byteified(data) files = data.get("content") print("List of files in Server:") print(str(files))
def get_instance(instance_id): """Instance information.""" endpoint = SOUNDWAVE_API + "instance/" + instance_id logger.info("Get data for endpoint : " + endpoint) response = requests.get(endpoint) if response.status_code == 200 or response.status_code == 304: json_data = json_loads_byteified(response.text) return render_template("instance.html", data=json.dumps(json_data), id=json_data["id"]) elif response.status_code == 404 or response.status_code == 400: logger.warn( "Data not found in soundwave elastic search store. API returned 404" ) return render_template("404.html") elif response.status_code == 500: logger.warn( "soundwave api returned 500 status code. Internal Server error") return render_template("500.html")
def closeServer(): payload = json.dumps({"type": MessageTypes.EXIT}) data = sendMessage(MessageTypes.EXIT, payload) data = utils.json_loads_byteified(data) msg = data.get("content") print(str(msg))
def startRenderer(): renderSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #So you won't have to wait for address to timeout renderSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) print("Render Socket created!") try: #Bind socket to localhost under defined port renderSocket.bind(('', Ports.RENDERER)) print("Render Socket bind complete") except socket.error as msg: print("Bind failed. Error: " + str(msg)) sys.exit() #Start listening on socket for Controller requests # 2 connections kept waiting if server busy. 3rd connection will be refused renderSocket.listen(2) print("Socket now listening") enabled = True while enabled: # Establish connections # Accept all incoming connections connectionSocket, addr = renderSocket.accept() print("Incoming Source address: " + str(addr)) try: # Receive message from the socket #1024 = max size in bytes to be received at once message = connectionSocket.recv(1024) print("Message: " + str(message)) # Decode the message message = utils.json_loads_byteified(message) type = message.get("type") if type == MessageTypes.REQUEST: # Convert request back to JSON and send to Server data = json.dumps(message) #Create TCP socket clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sendFileRequest(clientSocket, data) # Decode the received file data = clientSocket.recv(2048) clientSocket.close() payload = utils.json_loads_byteified(data) if payload["type"] == MessageTypes.ERROR: print(payload["content"]) else: fileName = payload["fileName"] fileData = payload["content"] print("Displaying file: " + fileName) print(fileData) elif type == MessageTypes.EXIT: enabled = False data = json.dumps({"content": "[RENDERER] shutting down"}) connectionSocket.sendall(data) # Close connectionSocket connectionSocket.close() print("Connection closed!") except IOError as err: # Send response message for invalid file print("IOError: " + str(err)) connectionSocket.close() renderSocket.shutdown(socket.SHUT_RDWR) renderSocket.close() print("Exiting...")
def startServer(): serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #So you won't have to wait for address to timeout serverSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) print("Socket created!") try: #Bind socket to localhost under defined port serverSocket.bind(('', Ports.SERVER)) print("Socket bind complete") except socket.error as msg: print("Bind failed. Error: " + str(msg)) sys.exit() #Start listening on socket # 2 connections kept waiting if server busy. 3rd socket will be refused serverSocket.listen(2) print("Socket now listening") enabled = True while enabled: # Establish connections # Accept all incoming connections connectionSocket, addr = serverSocket.accept() print("Incoming Source address: " + str(addr)) try: # Receive message from the socket #1024 = max size in bits to be received at once message = connectionSocket.recv(1024) print("Message: " + str(message)) # Decode the message message = utils.json_loads_byteified(message) type = message.get("type") if type == MessageTypes.FETCH: files = listFiles() #Convert list to JSON to send across socket data = json.dumps({"content": files}) connectionSocket.sendall(data) elif type == MessageTypes.REQUEST: # Obtain file fileName = message.get("content") sendFile(connectionSocket, fileName) elif type == MessageTypes.EXIT: enabled = False data = json.dumps({"content": "[SERVER] shutting down"}) connectionSocket.sendall(data) # Close connectionSocket connectionSocket.close() print("Connection closed!") except IOError as err: # Send response message for invalid file print("IOError: " + str(err)) payload = {} payload["type"] = MessageTypes.ERROR payload["content"] = "File does not exist: " + fileName connectionSocket.sendall(json.dumps(payload)) connectionSocket.close() serverSocket.shutdown(socket.SHUT_RDWR) serverSocket.close() print("Exiting...")