def _state_overridden(self, want, have): """ The command generator when state is overridden :rtype: A list :returns: the commands necessary to migrate the current configuration to the desired configuration """ commands = [] for each in have: for interface in want: if each["name"] == interface["name"]: break else: # We didn't find a matching desired state, which means we can # pretend we recieved an empty desired state. interface = dict(name=each["name"]) commands.extend(self._clear_config(interface, each)) continue have_dict = filter_dict_having_none_value(interface, each) commands.extend(self._clear_config(dict(), have_dict)) commands.extend(self._set_config(interface, each)) # Remove the duplicate interface call commands = remove_duplicate_interface(commands) return commands
def _state_overridden(self, want, have, module): """ The command generator when state is overridden :param want: the desired configuration as a dictionary :param obj_in_have: the current configuration as a dictionary :rtype: A list :returns: the commands necessary to migrate the current configuration to the desired configuration """ commands = [] for each in have: for interface in want: if self.is_in_ports(interface["name"], each["name"]): break else: # We didn't find a matching desired state, which means we can # pretend we received an empty desired state. interface = dict(name=each["name"]) kwargs = {"want": interface, "have": each} commands.extend(self._clear_config(**kwargs)) continue have_dict = filter_dict_having_none_value(interface, each) commands.extend(self._clear_config(interface, have_dict)) commands.extend(self._set_config(interface, each, module)) # Remove the duplicate interface call commands = remove_duplicate_interface(commands) return commands
def _state_overridden(self, want, have, module): """ The command generator when state is overridden :rtype: A list :returns: the commands necessary to migrate the current configuration to the desired configuration """ commands = [] tmp_remove_cmds = dict() exists_dict = dict() for interface in want: for each_interface in interface.get("members"): exists = False for each in have: if each.get("members"): for every in each.get("members"): match = False if every["member"] == each_interface["member"]: exists_dict[each_interface["member"]] = True match = True break else: tmp_remove_cmds[ every["member"]] = self._clear_config( interface, each) continue if match: # have_dict = filter_dict_having_none_value(interface, each) if each.get("name") != interface.get("name"): commands.extend( self._clear_config(dict(), each)) commands.extend( self._set_config(interface, each, module)) elif each.get("name") == each_interface["member"]: exists_dict[each_interface["member"]] = True have_dict = filter_dict_having_none_value( interface, each) commands.extend(self._clear_config(dict(), have_dict)) commands.extend( self._set_config(interface, each, module)) break for port, cmd in tmp_remove_cmds.items(): try: status = exists_dict[port] if not status: commands.extend(cmd) except Exception: commands.extend(cmd) # Remove the duplicate interface call commands = remove_duplicate_interface(commands) return commands
def _state_replaced(self, want, have): """ The command generator when state is replaced :rtype: A list :returns: the commands necessary to migrate the current configuration to the desired configuration """ commands = [] for interface in want: for each in have: if each["name"] == interface["name"]: break else: continue have_dict = filter_dict_having_none_value(interface, each) commands.extend(self._clear_config(dict(), have_dict)) commands.extend(self._set_config(interface, each)) # Remove the duplicate interface call commands = remove_duplicate_interface(commands) return commands
def _state_replaced(self, want, have, module): """ The command generator when state is replaced :rtype: A list :returns: the commands necessary to migrate the current configuration to the desired configuration """ commands = [] for interface in want: for each_interface in interface.get("members"): for each in have: if each.get("members"): for every in each.get("members"): match = False if every["member"] == each_interface["member"]: match = True break else: continue if match: # have_dict = filter_dict_having_none_value( # interface, each) if each.get("name") != interface.get("name"): commands.extend( self._clear_config(dict(), each)) commands.extend( self._set_config(interface, each, module)) elif each.get("name") == each_interface["member"]: have_dict = filter_dict_having_none_value( interface, each) commands.extend(self._clear_config(dict(), have_dict)) commands.extend( self._set_config(interface, each, module)) break # Remove the duplicate interface call commands = remove_duplicate_interface(commands) return commands