code: def update_allocated_node_name(self, base_name):
          
  
          if base_name is None:
              return None
          base_name = re.sub(r"[ ]", "", base_name)
          if base_name in self._allocated_node_names:
              base_name = re.sub(r"[0-9]+$", "{0}", base_name)
  
          if '{0}' in base_name or '{id}' in base_name:
              # base name is a template, replace {0} or {id} by an unique identifier
              for number in range(1, 1000000):
                  try:
                      name = base_name.format(number, id=number, name="Node")
                  except KeyError as e:
                      raise aiohttp.web.HTTPConflict(text="{" + e.args[0] + "} is not a valid replacement string in the node name")
                  except (ValueError, IndexError) as e:
                      raise aiohttp.web.HTTPConflict(text="{} is not a valid replacement string in the node name".format(base_name))
                  if name not in self._allocated_node_names:
                      self._allocated_node_names.add(name)
                      return name
          else:
              if base_name not in self._allocated_node_names:
                  self._allocated_node_names.add(base_name)
                  return base_name
              # base name is not unique, let's find a unique name by appending a number
              for number in range(1, 1000000):
                  name = base_name + str(number)
                  if name not in self._allocated_node_names:
                      self._allocated_node_names.add(name)
                      return name
          raise aiohttp.web.HTTPConflict(text="A node name could not be allocated (node limit reached?)")
docs: Updates a node name or generate a new if no node
          name is available.
  
          :param base_name: new node base name