235 |
235 |
path: 'images',
|
236 |
236 |
|
237 |
237 |
get_size: function() {
|
238 |
|
return parseInt(this.get('metadata') ? this.get('metadata').values.size : -1)
|
|
238 |
return parseInt(this.get('metadata') ? this.get('metadata').size : -1)
|
239 |
239 |
},
|
240 |
240 |
|
241 |
241 |
get_description: function(escape) {
|
... | ... | |
245 |
245 |
},
|
246 |
246 |
|
247 |
247 |
get_meta: function(key) {
|
248 |
|
if (this.get('metadata') && this.get('metadata').values) {
|
249 |
|
if (!this.get('metadata').values[key]) { return null }
|
250 |
|
return _.escape(this.get('metadata').values[key]);
|
|
248 |
if (this.get('metadata') && this.get('metadata')) {
|
|
249 |
if (!this.get('metadata')[key]) { return null }
|
|
250 |
return _.escape(this.get('metadata')[key]);
|
251 |
251 |
} else {
|
252 |
252 |
return null;
|
253 |
253 |
}
|
254 |
254 |
},
|
255 |
255 |
|
256 |
256 |
get_meta_keys: function() {
|
257 |
|
if (this.get('metadata') && this.get('metadata').values) {
|
258 |
|
return _.keys(this.get('metadata').values);
|
|
257 |
if (this.get('metadata') && this.get('metadata')) {
|
|
258 |
return _.keys(this.get('metadata'));
|
259 |
259 |
} else {
|
260 |
260 |
return [];
|
261 |
261 |
}
|
... | ... | |
312 |
312 |
},
|
313 |
313 |
|
314 |
314 |
get_sort_order: function() {
|
315 |
|
return parseInt(this.get('metadata') ? this.get('metadata').values.sortorder : -1)
|
|
315 |
return parseInt(this.get('metadata') ? this.get('metadata').sortorder : -1)
|
316 |
316 |
},
|
317 |
317 |
|
318 |
318 |
get_vm: function() {
|
... | ... | |
1230 |
1230 |
// get image object
|
1231 |
1231 |
get_image: function(callback) {
|
1232 |
1232 |
if (callback == undefined) { callback = function(){} }
|
1233 |
|
var image = storage.images.get(this.get('imageRef'));
|
|
1233 |
var image = storage.images.get(this.get('image'));
|
1234 |
1234 |
if (!image) {
|
1235 |
|
storage.images.update_unknown_id(this.get('imageRef'), callback);
|
|
1235 |
storage.images.update_unknown_id(this.get('image'), callback);
|
1236 |
1236 |
return;
|
1237 |
1237 |
}
|
1238 |
1238 |
callback(image);
|
... | ... | |
1241 |
1241 |
|
1242 |
1242 |
// get flavor object
|
1243 |
1243 |
get_flavor: function() {
|
1244 |
|
var flv = storage.flavors.get(this.get('flavorRef'));
|
|
1244 |
var flv = storage.flavors.get(this.get('flavor'));
|
1245 |
1245 |
if (!flv) {
|
1246 |
|
storage.flavors.update_unknown_id(this.get('flavorRef'));
|
1247 |
|
flv = storage.flavors.get(this.get('flavorRef'));
|
|
1246 |
storage.flavors.update_unknown_id(this.get('flavor'));
|
|
1247 |
flv = storage.flavors.get(this.get('flavor'));
|
1248 |
1248 |
}
|
1249 |
1249 |
return flv;
|
1250 |
1250 |
},
|
1251 |
1251 |
|
1252 |
1252 |
get_meta: function(key, deflt) {
|
1253 |
|
if (this.get('metadata') && this.get('metadata').values) {
|
1254 |
|
if (!this.get('metadata').values[key]) { return deflt }
|
1255 |
|
return _.escape(this.get('metadata').values[key]);
|
|
1253 |
if (this.get('metadata') && this.get('metadata')) {
|
|
1254 |
if (!this.get('metadata')[key]) { return deflt }
|
|
1255 |
return _.escape(this.get('metadata')[key]);
|
1256 |
1256 |
} else {
|
1257 |
1257 |
return deflt;
|
1258 |
1258 |
}
|
1259 |
1259 |
},
|
1260 |
1260 |
|
1261 |
1261 |
get_meta_keys: function() {
|
1262 |
|
if (this.get('metadata') && this.get('metadata').values) {
|
1263 |
|
return _.keys(this.get('metadata').values);
|
|
1262 |
if (this.get('metadata') && this.get('metadata')) {
|
|
1263 |
return _.keys(this.get('metadata'));
|
1264 |
1264 |
} else {
|
1265 |
1265 |
return [];
|
1266 |
1266 |
}
|
... | ... | |
1613 |
1613 |
defaults: {'nics':[],'linked_to':[]},
|
1614 |
1614 |
|
1615 |
1615 |
parse: function (resp, xhr) {
|
|
1616 |
console.log(resp);
|
1616 |
1617 |
// FIXME: depricated global var
|
1617 |
1618 |
if (!resp) { return []};
|
1618 |
|
var data = _.filter(_.map(resp.networks.values, _.bind(this.parse_net_api_data, this)),
|
|
1619 |
var data = _.filter(_.map(resp.networks, _.bind(this.parse_net_api_data, this)),
|
1619 |
1620 |
function(e){ return e });
|
1620 |
1621 |
return data;
|
1621 |
1622 |
},
|
... | ... | |
1646 |
1647 |
// e.g. {'vm_id':12231, 'index':1}
|
1647 |
1648 |
// net.get('linked_to') contains a list of vms the network is
|
1648 |
1649 |
// connected to e.g. [1001, 1002]
|
1649 |
|
if (data.attachments && data.attachments.values) {
|
|
1650 |
if (data.attachments && data.attachments) {
|
1650 |
1651 |
data['nics'] = {};
|
1651 |
1652 |
data['linked_to'] = [];
|
1652 |
|
_.each(data.attachments.values, function(nic_id){
|
|
1653 |
_.each(data.attachments, function(nic_id){
|
1653 |
1654 |
|
1654 |
1655 |
var vm_id = NIC_REGEX.exec(nic_id)[1];
|
1655 |
1656 |
var nic_index = parseInt(NIC_REGEX.exec(nic_id)[2]);
|
... | ... | |
1767 |
1768 |
},
|
1768 |
1769 |
|
1769 |
1770 |
parse: function (resp, xhr) {
|
1770 |
|
var parsed = _.map(resp.images.values, _.bind(this.parse_meta, this));
|
|
1771 |
var parsed = _.map(resp.images, _.bind(this.parse_meta, this));
|
1771 |
1772 |
parsed = this.fill_owners(parsed);
|
1772 |
1773 |
return parsed;
|
1773 |
1774 |
},
|
... | ... | |
1812 |
1813 |
},
|
1813 |
1814 |
|
1814 |
1815 |
get_meta_key: function(img, key) {
|
1815 |
|
if (img.metadata && img.metadata.values && img.metadata.values[key]) {
|
1816 |
|
return _.escape(img.metadata.values[key]);
|
|
1816 |
if (img.metadata && img.metadata && img.metadata[key]) {
|
|
1817 |
return _.escape(img.metadata[key]);
|
1817 |
1818 |
}
|
1818 |
1819 |
return undefined;
|
1819 |
1820 |
},
|
... | ... | |
1892 |
1893 |
},
|
1893 |
1894 |
|
1894 |
1895 |
parse: function (resp, xhr) {
|
1895 |
|
return _.map(resp.flavors.values, function(o) { o.disk_template = o['SNF:disk_template']; return o});
|
|
1896 |
return _.map(resp.flavors, function(o) { o.disk_template = o['SNF:disk_template']; return o});
|
1896 |
1897 |
},
|
1897 |
1898 |
|
1898 |
1899 |
comparator: function(flv) {
|
... | ... | |
1998 |
1999 |
parse: function (resp, xhr) {
|
1999 |
2000 |
var data = resp;
|
2000 |
2001 |
if (!resp) { return [] };
|
2001 |
|
data = _.filter(_.map(resp.servers.values, _.bind(this.parse_vm_api_data, this)), function(v){return v});
|
|
2002 |
data = _.filter(_.map(resp.servers, _.bind(this.parse_vm_api_data, this)), function(v){return v});
|
2002 |
2003 |
return data;
|
2003 |
2004 |
},
|
2004 |
2005 |
|
... | ... | |
2012 |
2013 |
|
2013 |
2014 |
// OS attribute
|
2014 |
2015 |
if (this.has_meta(data)) {
|
2015 |
|
data['OS'] = data.metadata.values.OS || snf.config.unknown_os;
|
|
2016 |
data['OS'] = data.metadata.OS || snf.config.unknown_os;
|
2016 |
2017 |
}
|
2017 |
2018 |
|
2018 |
2019 |
if (!data.diagnostics) {
|
... | ... | |
2024 |
2025 |
data['nics'] = {};
|
2025 |
2026 |
data['linked_to'] = [];
|
2026 |
2027 |
|
2027 |
|
if (data['attachments'] && data['attachments'].values) {
|
2028 |
|
var nics = data['attachments'].values;
|
|
2028 |
if (data['attachments'] && data['attachments']) {
|
|
2029 |
var nics = data['attachments'];
|
2029 |
2030 |
_.each(nics, function(nic) {
|
2030 |
2031 |
var net_id = nic.network_id;
|
2031 |
2032 |
var index = parseInt(NIC_REGEX.exec(nic.id)[2]);
|
... | ... | |
2041 |
2042 |
// is in json response, reset it to force
|
2042 |
2043 |
// value update
|
2043 |
2044 |
if (!data['metadata']) {
|
2044 |
|
data['metadata'] = {values:{}};
|
|
2045 |
data['metadata'] = {};
|
2045 |
2046 |
}
|
2046 |
2047 |
|
2047 |
2048 |
return data;
|
... | ... | |
2102 |
2103 |
},
|
2103 |
2104 |
|
2104 |
2105 |
has_meta: function(vm_data) {
|
2105 |
|
return vm_data.metadata && vm_data.metadata.values
|
|
2106 |
return vm_data.metadata && vm_data.metadata
|
2106 |
2107 |
},
|
2107 |
2108 |
|
2108 |
2109 |
has_addresses: function(vm_data) {
|
2109 |
|
return vm_data.metadata && vm_data.metadata.values
|
|
2110 |
return vm_data.metadata && vm_data.metadata
|
2110 |
2111 |
},
|
2111 |
2112 |
|
2112 |
2113 |
create: function (name, image, flavor, meta, extra, callback) {
|
... | ... | |
2126 |
2127 |
}
|
2127 |
2128 |
}
|
2128 |
2129 |
|
2129 |
|
opts = {name: name, imageRef: image.id, flavorRef: flavor.id,
|
|
2130 |
opts = {name: name, image: image.id, flavor: flavor.id,
|
2130 |
2131 |
metadata:meta}
|
2131 |
2132 |
opts = _.extend(opts, extra);
|
2132 |
2133 |
|
... | ... | |
2145 |
2146 |
|
2146 |
2147 |
// fill missing_ids
|
2147 |
2148 |
this.each(function(el) {
|
2148 |
|
var imgid = el.get("imageRef");
|
|
2149 |
var imgid = el.get("image");
|
2149 |
2150 |
var existing = synnefo.storage.images.get(imgid);
|
2150 |
2151 |
if (!existing && missing_ids.indexOf(imgid) == -1) {
|
2151 |
2152 |
missing_ids.push(imgid);
|