From 04b52e3d980846288da476e40ef1cae26ae2d1f0 Mon Sep 17 00:00:00 2001 From: Stuart Mackie Date: Thu, 21 Jan 2016 12:36:48 -0500 Subject: Add python helper scripts Change-Id: I83b378941082d8f9aeae88f6cf9e586d8eb7458d Signed-off-by: Stuart Mackie --- Testcases/config_shell.py | 379 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 379 insertions(+) create mode 100644 Testcases/config_shell.py (limited to 'Testcases/config_shell.py') diff --git a/Testcases/config_shell.py b/Testcases/config_shell.py new file mode 100644 index 0000000..2fe5ad1 --- /dev/null +++ b/Testcases/config_shell.py @@ -0,0 +1,379 @@ + +from config_obj import * +import argparse + +class ConfigShell(): + + def __init__(self): + self.parser_init() + + def env(self, *args, **kwargs): + for arg in args: + value = os.environ.get(arg, None) + if value: + return value + return kwargs.get('default', '') + + def do_help(self, args): + if args.obj_parser: + args.obj_parser.print_help() + else: + self.parser.print_help() + + def parser_init(self): + parser = argparse.ArgumentParser() + parser.add_argument('--username', help = 'User name') + parser.add_argument('--password', help = 'Password') + parser.add_argument('--tenant', help = 'Tenant name') + parser.add_argument('--region', help = 'Region name') + parser.add_argument('--api-server', help = 'API server address') + + parser.add_argument('cmd', choices = ['add', 'show', 'delete', 'help'], + metavar = '', help = '[ add | show | delete | help ]') + + subparsers = parser.add_subparsers(metavar = '') + self.sub_cmd_dict = {} + + sub_parser = subparsers.add_parser('vdns', help = 'Virtual DNS') + sub_parser.set_defaults(obj_class = ConfigVirtualDns, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of virtual DNS') + sub_parser.add_argument('--domain-name', metavar = '', + help = 'The name of DNS domain') + sub_parser.add_argument('--record-order', + choices = ['fixed', 'random', 'round-robin'], + default = 'random', metavar = '', + help = 'The order of DNS records ' \ + '[ random | fixed | round-robin ]') + sub_parser.add_argument('--next-dns', metavar = '', + help = 'The name of next virtual DNS service or ' \ + 'the IP address of DNS server reachable by fabric.') + + sub_parser = subparsers.add_parser('ipam', help = 'Network IPAM') + sub_parser.set_defaults(obj_class = ConfigIpam, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of IPAM') + sub_parser.add_argument('--dns-type', + choices = ['none', 'default', 'tenant', 'virtual'], + metavar = '', + help = 'The type of DNS service ' \ + '[ none | default | virtual | tenant ]') + sub_parser.add_argument('--virtual-dns', metavar = '', + help = 'The name of virtual DNS service') + sub_parser.add_argument('--tenant-dns', metavar = '
', + action = 'append', + help = 'The address of tenant DNS') + sub_parser.add_argument('--domain-name', metavar = '', + help = 'The name of DNS domain') + sub_parser.add_argument('--ntp-server', metavar = '
', + help = 'The address of NTP server') + + sub_parser = subparsers.add_parser('policy', help = 'Network Policy') + sub_parser.set_defaults(obj_class = ConfigPolicy, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of policy') + sub_parser.add_argument('--rule', action = 'append', + metavar = '', + help = 'Policy rule ' \ + 'direction=[ "<>" | ">" ],' \ + 'protocol=[ any | tcp | udp | icmp ],' \ + 'src-net=[ | any ],' \ + 'dst-net=[ | any ],' \ + 'src-port=[ : | any ],' \ + 'dst-port=[ : | any ],' \ + 'action=[ pass | deny | drop | reject | alert | ' \ + 'log | service ],' \ + 'service=,' \ + 'index=') + + sub_parser = subparsers.add_parser('security-group', + help = 'Security Group') + sub_parser.set_defaults(obj_class = ConfigSecurityGroup, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of security group') + sub_parser.add_argument('--rule', metavar = '', + help = 'Rule index') + sub_parser.add_argument('--direction', + choices = ['ingress', 'egress'], + metavar = '', + help = 'Direction [ ingress | egress ]') + sub_parser.add_argument('--protocol', + choices = ['any', 'tcp', 'udp', 'icmp'], + metavar = '', + help = 'Protocol [ any | tcp | udp | icmp ]') + sub_parser.add_argument('--address', action = 'append', + metavar = '/', help = 'Remote IP address') + sub_parser.add_argument('--port', action = 'append', type = str, + metavar = ':', help = 'The range of remote port') + + sub_parser = subparsers.add_parser('network', + help = 'Virtual Network') + sub_parser.set_defaults(obj_class = ConfigNetwork, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of virtual network') + sub_parser.add_argument('--ipam', metavar = '', + help = 'The name of IPAM') + sub_parser.add_argument('--subnet', metavar = '/', + help = 'Subnet prefix and length') + sub_parser.add_argument('--gateway', metavar = '
', + help = 'The gateway address of subnet') + sub_parser.add_argument('--policy', metavar = '', + help = 'The name of network policy') + sub_parser.add_argument('--route-target', metavar = ':', + help = 'Route target') + sub_parser.add_argument('--route-table', metavar = '', + help = 'The name of route table') + sub_parser.add_argument('--l2', action = 'store_true', + help = 'Layer 2 network, layer 2&3 by default') + sub_parser.add_argument('--shared', action = 'store_true', + help = 'Enable sharing with other tenants') + sub_parser.add_argument('--external', action = 'store_true', + help = 'Enable external access') + + sub_parser = subparsers.add_parser('floating-ip-pool', + help = 'Floating IP Pool') + sub_parser.set_defaults(obj_class = ConfigFloatingIpPool, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of floating IP pool') + sub_parser.add_argument('--network', metavar = '', + help = 'The name of virtual network holding floating IP pool') + #sub_parser.add_argument('--floating-ip', action = 'store_true', + # help = 'Floating IP') + + sub_parser = subparsers.add_parser('vm', + help = 'Virtual Machine') + sub_parser.set_defaults(obj_class = ConfigVirtualMachine, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of virtual machine') + sub_parser.add_argument('--image', metavar = '', + help = 'The name of image') + sub_parser.add_argument('--flavor', metavar = '', + help = 'The name of flavor') + sub_parser.add_argument('--network', action = 'append', + metavar = '', + help = 'The name of network') + sub_parser.add_argument('--user-data', metavar = '', + help = 'Full file name containing user data') + sub_parser.add_argument('--node', metavar = '', + help = 'The name of compute node') + sub_parser.add_argument('--wait', action = 'store_true', + help = 'Wait till VM is active') + + sub_parser = subparsers.add_parser('interface-route-table', + help = 'Interface Route Table') + sub_parser.set_defaults(obj_class = ConfigInterfaceRouteTable, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of interface route table') + sub_parser.add_argument('--route', action = 'append', + metavar = '/', help = 'Route') + + sub_parser = subparsers.add_parser('route-table', + help = 'Network Route Table') + sub_parser.set_defaults(obj_class = ConfigRouteTable, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of route table') + sub_parser.add_argument('--route', action = 'append', + metavar = '/:', + help = 'The route and next-hop') + + sub_parser = subparsers.add_parser('vm-interface', + help = 'Virtual Machine Interface') + sub_parser.set_defaults(obj_class = ConfigVmInterface, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = ':', + help = 'The name of virtual machine interface') + sub_parser.add_argument('--interface-route-table', metavar = '', + help = 'The name of interface route table') + sub_parser.add_argument('--security-group', metavar = '', + help = 'The name of security group') + sub_parser.add_argument('--address', + metavar = '
', + help = 'IP address') + sub_parser.add_argument('--floating-ip', + metavar = '
', + help = 'Floating IP address [ any |
]') + sub_parser.add_argument('--floating-ip-pool', + metavar = '', + help = 'The floating IP pool to allocate a floating IP from ' \ + '::') + + sub_parser = subparsers.add_parser('image', + help = 'Virtual Machine Image') + self.sub_cmd_dict['image'] = sub_parser + sub_parser.set_defaults(obj_class = ConfigImage) + sub_parser.add_argument('name', nargs = '?', default = None) + + sub_parser = subparsers.add_parser('flavor', + help = 'Virtual Machine Flavor') + self.sub_cmd_dict['flavor'] = sub_parser + sub_parser.set_defaults(obj_class = ConfigFlavor) + sub_parser.add_argument('name', nargs = '?', default = None) + + sub_parser = subparsers.add_parser('service-template', + help = 'Service Template') + sub_parser.set_defaults(obj_class = ConfigServiceTemplate, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of service template') + sub_parser.add_argument('--mode', + choices = ['transparent', 'in-network', 'in-network-nat'], + metavar = '', + help = 'Service mode ' \ + '[ transparent | in-network | in-network-nat ]') + sub_parser.add_argument('--type', + choices = ['firewall', 'analyzer'], + metavar = '', + help = 'Service type [ firewall | analyzer ]') + sub_parser.add_argument('--image', metavar = '', + help = 'The name of image') + sub_parser.add_argument('--flavor', metavar = '', + help = 'The name of flavor') + sub_parser.add_argument('--scale', action = 'store_true', + help = 'Enable service scaling') + sub_parser.add_argument('--interface', + choices = ['management', 'left', 'right', 'other'], + metavar = '', + action = 'append', + help = 'Service interface ' \ + '[ management | left | right | other ]') + + sub_parser = subparsers.add_parser('service-instance', + help = 'Service Instance') + sub_parser.set_defaults(obj_class = ConfigServiceInstance, + obj_parser = sub_parser) + sub_parser.add_argument('name', nargs = '?', default = None, + metavar = '', help = 'The name of service instance') + sub_parser.add_argument('--template', + metavar = '