diff --git a/src/config/utils/provision_bgp.py b/src/config/utils/provision_bgp.py index 4d4a0f94f72..12c40138153 100644 --- a/src/config/utils/provision_bgp.py +++ b/src/config/utils/provision_bgp.py @@ -41,7 +41,7 @@ def _get_rt_inst_obj(self): return rt_inst_obj # end _get_rt_inst_obj - def add_bgp_router(self, router_type, router_name, router_ip, router_asn): + def add_bgp_router(self, router_type, router_name, router_ip, router_asn, md5=None): if router_type == 'contrail': bgp_addr_fams = AddressFamilies(['route-target', 'inet-vpn', 'e-vpn', 'erm-vpn', 'inet6-vpn']) @@ -70,6 +70,14 @@ def add_bgp_router(self, router_type, router_name, router_ip, router_asn): try: fq_name = bgp_router_obj.get_fq_name() existing_obj = vnc_lib.bgp_router_read(fq_name=fq_name) + if md5: + bgp_params = existing_obj.get_bgp_router_parameters() + # set md5 + print "Setting md5 on the existing uuid" + md5 = {'key_items': [ { 'key': md5 ,"key_id":0 } ], "key_type":"md5"} + bgp_params.set_auth_data(md5) + existing_obj.set_bgp_router_parameters(bgp_params) + vnc_lib.bgp_router_update(existing_obj) print ("BGP Router " + pformat(fq_name) + " already exists with uuid " + existing_obj.uuid) return @@ -93,7 +101,11 @@ def add_bgp_router(self, router_type, router_name, router_ip, router_asn): continue cur_obj.add_bgp_router(other_obj, bgp_peering_attrs) - + if md5: + md5 = {'key_items': [ { 'key': md5 ,"key_id":0 } ], "key_type":"md5"} + rparams = cur_obj.bgp_router_parameters + rparams.set_auth_data(md5) + cur_obj.set_bgp_router_parameters(rparams) vnc_lib.bgp_router_update(cur_obj) # end add_bgp_router diff --git a/src/config/utils/provision_control.py b/src/config/utils/provision_control.py index 05de6c49d90..e81166a1b5c 100755 --- a/src/config/utils/provision_control.py +++ b/src/config/utils/provision_control.py @@ -2,7 +2,6 @@ # # Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. # - import sys import argparse import ConfigParser @@ -37,10 +36,9 @@ def __init__(self, args_str=None): self._args.admin_user, self._args.admin_password, self._args.admin_tenant_name, self._args.api_server_ip, self._args.api_server_port) - if self._args.oper == 'add': bp_obj.add_bgp_router('contrail', self._args.host_name, - self._args.host_ip, self._args.router_asn) + self._args.host_ip, self._args.router_asn, self._args.md5) elif self._args.oper == 'del': bp_obj.del_bgp_router(self._args.host_name) else: @@ -58,6 +56,7 @@ def _parse_args(self, args_str): --api_server_ip 127.0.0.1 --api_server_port 8082 --oper + --md5 |None(optional) ''' # Source any specified config/ini file @@ -76,7 +75,8 @@ def _parse_args(self, args_str): 'oper': None, 'admin_user': None, 'admin_password': None, - 'admin_tenant_name': None + 'admin_tenant_name': None, + 'md5' : None } if args.conf_file: @@ -101,6 +101,8 @@ def _parse_args(self, args_str): parser.add_argument("--host_ip", help="IP address of control-node") parser.add_argument( "--router_asn", help="AS Number the control-node is in", required=True) + parser.add_argument( + "--md5", help="Md5 config for the node") parser.add_argument( "--ibgp_auto_mesh", help="Create iBGP mesh automatically", dest='ibgp_auto_mesh', action='store_true') parser.add_argument(