Revision cd195419 lib/ssconf.py

b/lib/ssconf.py
59 59
    self._last_size = None
60 60

  
61 61
    self._config_data = None
62
    self._instances_ips = None
63 62
    self._inst_ips_by_link = None
64
    self._ip_to_instance = None
63
    self._ip_to_inst_by_link = None
65 64
    self._mc_primary_ips = None
66 65
    self._nodes_primary_ips = None
67 66

  
......
106 105
      raise errors.ConfigurationError("Cannot load config file %s: %s" %
107 106
                                      (self._file_name, err))
108 107

  
109
    self._ip_to_instance = {}
108
    self._ip_to_inst_by_link = {}
110 109
    self._instances_ips = []
111 110
    self._inst_ips_by_link = {}
112 111
    c_nparams = self._config_data['cluster']['nicparams'][constants.PP_DEFAULT]
......
114 113
      instance = self._config_data['instances'][iname]
115 114
      for nic in instance['nics']:
116 115
        if 'ip' in nic and nic['ip']:
117
          self._instances_ips.append(nic['ip'])
118
          self._ip_to_instance[nic['ip']] = iname
119 116
          params = objects.FillDict(c_nparams, nic['nicparams'])
120 117
          if not params['link'] in self._inst_ips_by_link:
121 118
            self._inst_ips_by_link[params['link']] = []
119
            self._ip_to_inst_by_link[params['link']] = {}
120
          self._ip_to_inst_by_link[params['link']][nic['ip']] = iname
122 121
          self._inst_ips_by_link[params['link']].append(nic['ip'])
123 122

  
124 123
    self._nodes_primary_ips = []
......
185 184
    offline = self._config_data["nodes"][node]["offline"]
186 185
    return master_candidate, drained, offline
187 186

  
188
  def GetInstanceByIp(self, ip):
189
    if ip not in self._ip_to_instance:
187
  def GetInstanceByLinkIp(self, ip, link):
188
    if not link:
189
      link = self.GetDefaultNicLink()
190
    if not link in self._ip_to_inst_by_link:
190 191
      return None
191
    return self._ip_to_instance[ip]
192
    if not ip in self._ip_to_inst_by_link[link]:
193
      return None
194
    return self._ip_to_inst_by_link[link][ip]
192 195

  
193 196
  def GetNodePrimaryIp(self, node):
194 197
    """Get a node's primary ip
......
223 226
    return self._mc_primary_ips
224 227

  
225 228
  def GetInstancesIps(self, link):
226
    if link is None:
227
      return self._instances_ips
229
    if not link:
230
      link = self.GetDefaultNicLink()
231

  
228 232
    if link in self._inst_ips_by_link:
229 233
      return self._inst_ips_by_link[link]
230 234
    else:

Also available in: Unified diff