diff --git a/_modules/maas.py b/_modules/maas.py
index 0a14730..7338e27 100644
--- a/_modules/maas.py
+++ b/_modules/maas.py
@@ -87,7 +87,7 @@
     
     for cluster in object_list:
         if cluster.get('cluster_name') == cluster_name:
-            return {cluster.get('name'): cluster}
+            return {cluster.get('cluster_name'): cluster}
     return {'Error': 'Could not find specified cluster'}
 
 
@@ -111,7 +111,7 @@
     object_list = json.loads(response)    
 
     for cluster in object_list:
-        ret[cluster.get('name')] = cluster
+        ret[cluster.get('cluster_name')] = cluster
     return ret
 
 
@@ -158,3 +158,46 @@
         if cluster.get('url') == cluster_url:
             return maas.deleteprojectcluster(project['id'], cluster['id'])
     return {'Error': 'Could not find cluster'}
+
+
+def cluster_update(cluster_id=None, old_cluster_name=None, new_cluster_name=None, domain=None, status=None, **connection_args):
+    '''
+    Update information in specific MAAS cluster
+
+    CLI Examples:
+
+    .. code-block:: bash
+
+        salt '*' maas.cluster_update cluster_id cluster_name dns_name status 
+    '''
+    maas = _auth(**connection_args)
+    
+    cluster = {}
+
+    if not cluster_id and old_cluster_name:
+        cluster = cluster_get(old_cluster_name)
+        if cluster.get("Error"):
+            return cluster
+        else:
+            cluster_id = cluster_get(old_cluster_name).get(old_cluster_name).get("uuid")
+
+    else:
+        return {'Error': 'No cluster id or name specified'}
+	        
+    if new_cluster_name:
+        cluster["cluster_name"] = new_cluster_name  
+
+    if domain:
+        cluster["name"] = domain
+    
+    if status:
+	cluster["status"] = status
+    
+    LOG.debug("Cluster id: " + cluster_id)
+    LOG.debug("New cluster info: " + str(cluster))
+   
+    response = maas.put(u"nodegroups/" + cluster_id + "/", **cluster)
+    
+    #TODO check response status
+    return {'Status': True}
+
