]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Add lock.update_inventory()
authorZack Cerza <zack.cerza@inktank.com>
Mon, 8 Sep 2014 19:12:52 +0000 (13:12 -0600)
committerZack Cerza <zack.cerza@inktank.com>
Thu, 11 Sep 2014 21:12:52 +0000 (15:12 -0600)
Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
teuthology/lock.py

index 16272e337e106aaa25db2f2ac35644660428765d..1d7fa3bed50d93a5e8d7e13bd2f0c3686f67a47b 100644 (file)
@@ -377,6 +377,33 @@ def update_lock(name, description=None, status=None, ssh_pub_key=None):
     return True
 
 
+def update_inventory(node_dict):
+    """
+    Like update_lock(), but takes a dict and doesn't try to do anything smart
+    by itself
+    """
+    name = node_dict.get('name')
+    if not name:
+        raise ValueError("must specify name")
+    if not config.lock_server:
+        return
+    uri = os.path.join(config.lock_server, 'nodes', name, '')
+    log.info("Updating %s on lock server", name)
+    response = requests.put(
+        uri,
+        json.dumps(node_dict))
+    if response.status_code == 404:
+        log.info("Creating new node %s on lock server", name)
+        uri = os.path.join(config.lock_server, 'nodes', '')
+        response = requests.post(
+            uri,
+            json.dumps(node_dict))
+    if not response.ok:
+        log.error("Node update/creation failed for %s: %s",
+                  name, response.text)
+    return response.ok
+
+
 def ssh_keyscan(hostnames):
     """
     Fetch the SSH public key of one or more hosts