Merge branch 'master' into master
diff --git a/_modules/apiclient/maas_client.py b/_modules/apiclient/maas_client.py
index 530e6b2..6704597 100644
--- a/_modules/apiclient/maas_client.py
+++ b/_modules/apiclient/maas_client.py
@@ -242,4 +242,4 @@
"""Dispatch a DELETE on the resource at `path`."""
url, headers, body = self._formulate_change(path, {})
return self.dispatcher.dispatch_query(
- url, method="DELETE", headers=headers)
+ url, method="DELETE", headers=headers, data=body)
diff --git a/_modules/maas.py b/_modules/maas.py
index e1cbf0f..5ad0a41 100644
--- a/_modules/maas.py
+++ b/_modules/maas.py
@@ -92,8 +92,14 @@
extra[name] = {v['name']: v[key] for v in
json.loads(self._maas.get(url_call).read())}
if self._all_elements_url:
+ all_elements = {}
elements = self._maas.get(self._all_elements_url).read()
- all_elements = {v[self._element_key]: v for v in json.loads(elements)}
+ res_json = json.loads(elements)
+ for element in res_json:
+ if isinstance(element, (str, unicode)):
+ all_elements[element] = {}
+ else:
+ all_elements[element[self._element_key]] = element
else:
all_elements = {}
ret = {
@@ -266,10 +272,10 @@
return data
def update(self, new, old):
- new_macs = set(new['mac_addresses'])
- old_macs = set(v['mac_address'] for v in old[interface_set])
- if new_macs - old_macs:
+ old_macs = set(v['mac_address'].lower() for v in old['interface_set'])
+ if new['mac_addresses'].lower() not in old_macs:
self._update = False
+ LOG.info('Mac changed deleting old device %s', old['system_id'])
self._maas.delete(u'api/2.0/devices/{0}/'.format(old['system_id']))
else:
new[self._update_key] = str(old[self._update_key])
@@ -280,14 +286,14 @@
resp_json = json.loads(response)
system_id = resp_json['system_id']
iface_id = resp_json['interface_set'][0]['id']
- self._link_interface(maas, system_id, iface_id)
+ self._link_interface(system_id, iface_id)
return response
def _link_interface(self, system_id, interface_id):
data = {
'mode': self._interface.get('mode', 'STATIC'),
- 'subnet': self._interface.get('subnet'),
- 'ip_address': self._interface.get('ip_address'),
+ 'subnet': self._interface['subnet'],
+ 'ip_address': self._interface['ip_address'],
}
if 'default_gateway' in self._interface:
data['default_gateway'] = self._interface.get('default_gateway')
@@ -328,11 +334,11 @@
return data
def update(self, new, old):
- new_macs = set(new['mac_addresses'])
- old_macs = set(v['mac_address'] for v in old[interface_set])
- if new_macs - old_macs:
+ old_macs = set(v['mac_address'].lower() for v in old['interface_set'])
+ if new['mac_addresses'].lower() not in old_macs:
self._update = False
- self._maas.delete(u'api/2.0/machiens/{0}/'.format(old['system_id']))
+ LOG.info('Mac changed deleting old machine %s', old['system_id'])
+ self._maas.delete(u'api/2.0/machines/{0}/'.format(old['system_id']))
else:
new[self._update_key] = str(old[self._update_key])
return new
@@ -356,11 +362,11 @@
**data)
def send(self, data):
- response = super(Device, self).send(data)
+ response = super(Machine, self).send(data)
resp_json = json.loads(response)
system_id = resp_json['system_id']
iface_id = resp_json['interface_set'][0]['id']
- self._link_interface(maas, system_id, iface_id)
+ self._link_interface(system_id, iface_id)
return response
@@ -395,8 +401,8 @@
super(CommissioningScripts, self).__init__()
self._all_elements_url = u'api/2.0/commissioning-scripts/'
self._create_url = u'api/2.0/commissioning-scripts/'
- self._update_url = u'api/2.0/commissioning-scripts/{0}/'
self._config_path = 'region.commissioning_scripts'
+ self._update_url = u'api/2.0/commissioning-scripts/{0}'
self._update_key = 'name'
def fill_data(self, name, file_path):
@@ -419,7 +425,7 @@
def fill_data(self, name, value):
data = {
'name': name,
- 'value': value,
+ 'value': str(value),
}
return data