Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/env python
- import re
- import sys
- from novaclient import client
- from tabulate import tabulate
- VERSION = "2.0"
- USERNAME = ""
- PASSWORD = ""
- PROJECT_ID = ""
- AUTH_URL = ""
- def create_regex(string):
- regex = string.replace('.', '\.')
- regex = regex.replace('*', '.*')
- regex = "^" + regex + "$"
- return regex
- def get_server_list():
- nova = client.Client(VERSION, USERNAME, PASSWORD, PROJECT_ID, AUTH_URL)
- search_opts = {
- 'all_tenants': 1,
- 'detailed': 1
- }
- servers = nova.servers.list(search_opts=search_opts)
- return servers
- def match_result(servers, regex):
- temp = []
- for server in servers:
- name = floating_ip = fixed_ip = ""
- name = server.name
- network_interfaces = next (iter (server.addresses.values()))
- for network_interface in network_interfaces:
- _type = network_interface.get('OS-EXT-IPS:type')
- if _type == "fixed":
- fixed_ip = network_interface.get('addr')
- if _type == "floating":
- floating_ip = network_interface.get('addr')
- if re.match(regex, name) or re.match(regex, fixed_ip) or re.match(regex, floating_ip):
- server_tuple = (name, fixed_ip, floating_ip)
- temp.append(server_tuple)
- return temp
- def main(argv):
- regex = create_regex(argv[1])
- servers = get_server_list()
- matched_servers = match_result(servers, regex)
- header = ('Server Name', 'Fixed IP', 'Floating IP')
- results = tabulate(matched_servers, header, tablefmt="simple")
- print(results)
- if __name__ == "__main__":
- if len(sys.argv) < 2:
- sys.exit("Provide some argument")
- main(sys.argv)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement