1 ##############################################################################
2 # Copyright (c) 2016 Feng Pan (fpan@redhat.com), Dan Radez (dradez@redhat.com)
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
15 from jinja2 import Environment, FileSystemLoader
18 def parse_net_settings(args):
20 Parse OPNFV Apex network_settings.yaml config file
21 and dump bash syntax to set environment variables
25 file to network_settings.yaml file
26 - network_isolation: bool
27 enable or disable network_isolation
29 settings = apex.NetworkSettings(args.file,
30 args.network_isolation)
33 def parse_deploy_settings(args):
34 settings = apex.DeploySettings(args.file)
40 Get and print the IP from a specific interface
44 network interface name
46 4 or 6, respective to ipv4 or ipv6
48 interface = apex.ip_utils.get_interface(args.interface,
54 def build_nic_template(args):
56 Build and print a Triple-O nic template from jinja template
60 path to jinja template to load
61 - enabled_networks: comma delimited list
62 list of networks defined in net_env.py
63 - ext_net_type: string
64 interface or br-ex, defines the external network configuration
65 - address_family: string
66 4 or 6, respective to ipv4 or ipv6
68 dir, template = args.template.rsplit('/', 1)
70 env = Environment(loader=FileSystemLoader(dir))
71 template = env.get_template(template)
72 print(template.render(enabled_networks=args.enabled_networks,
73 external_net_type=args.ext_net_type,
74 external_net_af=args.address_family))
78 parser = argparse.ArgumentParser()
79 parser.add_argument('--debug', action='store_true', default=False,
80 help="Turn on debug messages")
81 parser.add_argument('-l', '--log-file', default='/var/log/apex/apex.log',
82 dest='log_file', help="Log file to log to")
83 subparsers = parser.add_subparsers()
85 net_settings = subparsers.add_parser('parse-net-settings',
86 help='Parse network settings file')
87 net_settings.add_argument('-f', '--file', default='network-settings.yaml',
88 help='path to network settings file')
89 net_settings.add_argument('-i', '--network-isolation', type=bool,
90 default=True, dest='network_isolation',
91 help='network isolation')
92 net_settings.set_defaults(func=parse_net_settings)
94 get_int_ip = subparsers.add_parser('find-ip',
95 help='Find interface ip')
96 get_int_ip.add_argument('-i', '--interface', required=True,
97 help='Interface name')
98 get_int_ip.add_argument('-af', '--address-family', default=4, type=int,
99 choices=[4, 6], dest='address_family',
100 help='IP Address family')
101 get_int_ip.set_defaults(func=find_ip)
103 nic_template = subparsers.add_parser('nic-template',
104 help='Build NIC templates')
105 nic_template.add_argument('-t', '--template', required=True,
107 help='Template file to process')
108 nic_template.add_argument('-n', '--enabled-networks', required=True,
109 dest='enabled_networks',
110 help='enabled network list')
111 nic_template.add_argument('-e', '--ext-net-type', default='interface',
113 choices=['interface', 'br-ex'],
114 help='External network type')
115 nic_template.add_argument('-af', '--address-family', type=int, default=4,
116 dest='address_family', help='IP address family')
117 nic_template.set_defaults(func=build_nic_template)
119 deploy_settings = subparsers.add_parser('parse-deploy-settings',
120 help='Parse deploy settings file')
121 deploy_settings.add_argument('-f', '--file', default='deploy_settings.yaml',
122 help='path to deploy settings file')
123 deploy_settings.set_defaults(func=parse_deploy_settings)
125 args = parser.parse_args(sys.argv[1:])
127 logging.basicConfig(level=logging.DEBUG)
129 apex_log_filename = args.log_file
130 os.makedirs(os.path.dirname(apex_log_filename), exist_ok=True)
131 logging.basicConfig(filename=apex_log_filename,
132 format='%(asctime)s %(levelname)s: %(message)s',
133 datefmt='%m/%d/%Y %I:%M:%S %p',
138 def main(parser, args):
139 if hasattr(args, 'func'):
145 if __name__ == "__main__":
146 parser, args = parse_args()