예제 #1
0
 def import_rules_file(self, rules_file):
     if not os.path.isfile(rules_file):
         found_file = mmutils.find_file_across_common_paths(rules_file)
         if found_file == '':
             return 'Unable to find rules file:' + rules_file
         rules_file = found_file
     with open(rules_file, 'r') as f:
         file_content = f.read()
     return self.import_content(file_content)
예제 #2
0
def run(RouterTagList, BgpImportParamsTagName, CreatedRoutesTagName):
    plLogger = PLLogger.GetLogger('methodology')
    plLogger.LogInfo(" Run BgpImportRoutesCommand")
    this_cmd = get_this_cmd()

    if not BgpImportParamsTagName:
        return "Invalid BgpImportParamsTagName passed in"

    router_obj_list = tag_utils.get_tagged_objects_from_string_names(RouterTagList)
    # Turn into handles
    router_list = []
    for router_obj in router_obj_list:
        if router_obj.IsTypeOf('EmulatedDevice'):
            router_list.append(router_obj)
        elif routerObj.IsTypeOf('RouterConfig'):
            router_list.append(router_obj.GetParent().GetObjectHandle())

    if not router_list:
        this_cmd.Set('Status', "RouterTagList does not point to any routers")
        return False

    param_obj_list = \
        tag_utils.get_tagged_objects_from_string_names([BgpImportParamsTagName])

    route_list = []
    for param_obj in param_obj_list:
        # Remove any existing parameter list relations
        exist_list = param_obj.GetObjects('Scriptable',
                                          RelationType('SelectedRouterRelation'))
        for exist in exist_list:
            param_obj.RemoveObject(exist,
                                   RelationType('SelectedRouterRelation'))
        for router in router_list:
            param_obj.AddObject(router,
                                RelationType('SelectedRouterRelation'))
        router_hdl_list = [r.GetObjectHandle() for r in router_list]
        # Create the BgpImportRouteTableCommand
        with AutoCommand('BgpImportRouteTableCommand') as cmd:
            cmd.Set("ImportParams", param_obj.GetObjectHandle())
            # Ensure BLL command gets an absolute path
            abs_path = \
                mm_utils.find_file_across_common_paths(param_obj.Get("FileName"),
                                                       search_templates=True)
            if len(abs_path):
                param_obj.Set("FileName", abs_path)
            cmd.SetCollection("RouterList", router_hdl_list)
            cmd.Set("DeleteRoutes", "NO")
            cmd.Execute()
            cmd_state = cmd.Get('State')
            cmd_status = cmd.Get('Status')
            if cmd_state != 'COMPLETED':
                this_cmd.Set('Status', cmd_status)
                return False

            route_list = param_obj.GetObjects('BgpRouteConfig',
                                              RelationType('WizardGenerated'))
            if not route_list:
                this_cmd.Set('Status', 'Failed to generate any '
                             'route objects for {}'.format(param_obj.Get('Name')))
                return False
            tag_wizgenerated_as_created(param_obj, CreatedRoutesTagName)

    return True