Revision 89b14f05

b/lib/backend.py
1227 1227

  
1228 1228

  
1229 1229
def WriteSsconfFiles(values):
1230
  ssconf.WriteSsconfFiles(values)
1230
  """Update all ssconf files.
1231

  
1232
  Wrapper around the SimpleStore.WriteFiles.
1233

  
1234
  """
1235
  ssconf.SimpleStore().WriteFiles(values)
1231 1236

  
1232 1237

  
1233 1238
def _ErrnoOrStr(err):
b/lib/ssconf.py
171 171
                                      " '%s'" % str(err))
172 172
    return data
173 173

  
174
  def WriteFiles(self, values):
175
    """Writes ssconf files used by external scripts.
176

  
177
    @type values: dict
178
    @param values: Dictionary of (name, value)
179

  
180
    """
181
    ssconf_lock = utils.FileLock(constants.SSCONF_LOCK_FILE)
182

  
183
    # Get lock while writing files
184
    ssconf_lock.Exclusive(blocking=True, timeout=SSCONF_LOCK_TIMEOUT)
185
    try:
186
      for name, value in values.iteritems():
187
        if not value.endswith("\n"):
188
          value += "\n"
189
        utils.WriteFile(self.KeyToFilename(name), data=value)
190
    finally:
191
      ssconf_lock.Unlock()
192

  
174 193
  def GetFileList(self):
175 194
    """Return the list of all config files.
176 195

  
......
218 237
    return nl
219 238

  
220 239

  
221
def _SsconfPath(name):
222
  if not RE_VALID_SSCONF_NAME.match(name):
223
    raise errors.ParameterError("Invalid ssconf name: %s" % name)
224
  return "%s/ssconf_%s" % (constants.DATA_DIR, name)
225

  
226

  
227
def WriteSsconfFiles(values):
228
  """Writes legacy ssconf files to be used by external scripts.
229

  
230
  @type values: dict
231
  @param values: Dictionary of (name, value)
232

  
233
  """
234
  ssconf_lock = utils.FileLock(constants.SSCONF_LOCK_FILE)
235

  
236
  # Get lock while writing files
237
  ssconf_lock.Exclusive(blocking=True, timeout=SSCONF_LOCK_TIMEOUT)
238
  try:
239
    for name, value in values.iteritems():
240
      if not value.endswith("\n"):
241
        value += "\n"
242
      utils.WriteFile(_SsconfPath(name),
243
                      data=value)
244
  finally:
245
    ssconf_lock.Unlock()
246

  
247

  
248 240
def GetMasterAndMyself(ss=None):
249 241
  """Get the master node and my own hostname.
250 242

  

Also available in: Unified diff