def sync_vm(self, vm): compute = TmpObj(self.context) compute.state = unicode(vm['state']) # Ensure IDeployed marker is set, unless not in another state if not IDeployed.providedBy(compute): noLongerProvides(self.context, IUndeployed) noLongerProvides(self.context, IDeploying) alsoProvides(self.context, IDeployed) if 'ctid' in vm: compute.ctid = vm['ctid'] if vm['ctid'] != '-' else -1 for idx, console in enumerate(vm['consoles']): if console['type'] == 'pty' and not self.context.consoles['tty%s' % idx]: self.context.consoles.add(TtyConsole('tty%s' % idx, console['pty'])) if console['type'] == 'openvz' and not self.context.consoles['tty%s' % idx]: self.context.consoles.add(OpenVzConsole('tty%s' % idx, console['cid'])) if console['type'] == 'vnc' and not self.context.consoles['vnc']: self.context.consoles.add(VncConsole( self.context.__parent__.__parent__.hostname, int(console['port']))) # XXX TODO: handle removal of consoles when they are no longer reported from upstream # networks for interface in vm['interfaces']: if not self.context.interfaces[interface['name']]: iface = NetworkInterface(interface['name'], None, interface['mac'], 'active') if 'ipv4_address' in interface: iface.ipv4_address = interface['ipv4_address'] self.context.interfaces.add(iface) # XXX TODO: handle removal of interfaces when they are no longer reported from upstream # XXX hack, openvz specific compute.cpu_info = self.context.__parent__.__parent__.cpu_info compute.memory = vm['memory'] diskspace = dict((unicode(k), v) for k, v in vm['diskspace'].items()) diskspace[u'total'] = sum([0.0] + vm['diskspace'].values()) # round diskspace values for i in diskspace: diskspace[i] = round(diskspace[i], 2) compute.diskspace = diskspace if compute.state == 'active': compute.uptime = get_f(vm, 'uptime') else: compute.uptime = None compute.num_cores = vm['vcpu'] compute.swap_size = vm.get('swap') or compute.swap_size compute.kernel = vm.get('kernel') or compute.kernel with SuppressEvents(self.context): compute.apply()
def update_templates(container, templates): if not container['templates']: container.add(Templates()) template_container = container['templates'] for template in templates: name = template['template_name'] if not template_container['by-name'][name]: template_container.add( Template(unicode(name), get_u(template, 'domain_type'))) t = template_container['by-name'][name].target t.cores = (get_i(template, 'vcpu_min'), get_i(template, 'vcpu'), max(-1, get_i(template, 'vcpu_max'))) t.memory = (get_f(template, 'memory_min'), get_f(template, 'memory'), max(-1.0, get_f(template, 'memory_max'))) t.swap = (get_f(template, 'swap_min'), get_f(template, 'swap'), max(-1.0, get_f(template, 'swap_max'))) t.disk = (get_f(template, 'disk_min'), get_f(template, 'disk'), max(-1.0, get_f(template, 'disk_max'))) t.nameserver = get_u(template, 'nameserver') t.username = get_u(template, 'username') t.password = get_u(template, 'passwd') t.cpu_limit = (get_i(template, 'vcpulimit_min'), get_i(template, 'vcpulimit')) t.ip = get_u(template, 'ip_address') # delete templates no more offered upstream template_names = template_container['by-name'].listnames() vanished_template_names = set(template_names).difference( template['template_name'] for template in templates) for template in vanished_template_names: template_container.remove( follow_symlinks(template_container['by-name'][template]))
def update_templates(container, templates): if not container['templates']: container.add(Templates()) template_container = container['templates'] for template in templates: name = template['template_name'] if not template_container['by-name'][name]: template_container.add(Template(unicode(name), get_u(template, 'domain_type'))) t = template_container['by-name'][name].target t.cores = (get_i(template, 'vcpu_min'), get_i(template, 'vcpu'), max(-1, get_i(template, 'vcpu_max'))) t.memory = (get_f(template, 'memory_min'), get_f(template, 'memory'), max(-1.0, get_f(template, 'memory_max'))) t.swap = (get_f(template, 'swap_min'), get_f(template, 'swap'), max(-1.0, get_f(template, 'swap_max'))) t.disk = (get_f(template, 'disk_min'), get_f(template, 'disk'), max(-1.0, get_f(template, 'disk_max'))) t.nameserver = get_u(template, 'nameserver') t.username = get_u(template, 'username') t.password = get_u(template, 'passwd') t.cpu_limit = (get_i(template, 'vcpulimit_min'), get_i(template, 'vcpulimit')) t.ip = get_u(template, 'ip_address') # delete templates no more offered upstream template_names = template_container['by-name'].listnames() vanished_template_names = set(template_names).difference( template['template_name'] for template in templates) for template in vanished_template_names: template_container.remove(follow_symlinks(template_container['by-name'][template]))
def sync_vm(self, vm): compute = TmpObj(self.context) compute.state = unicode(vm['state']) # Ensure IDeployed marker is set, unless not in another state if not IDeployed.providedBy(compute): noLongerProvides(self.context, IUndeployed) noLongerProvides(self.context, IDeploying) alsoProvides(self.context, IDeployed) if 'ctid' in vm: compute.ctid = vm['ctid'] if vm['ctid'] != '-' else -1 for idx, console in enumerate(vm['consoles']): if console['type'] == 'pty' and not self.context.consoles['tty%s' % idx]: self.context.consoles.add( TtyConsole('tty%s' % idx, console['pty'])) if console['type'] == 'openvz' and not self.context.consoles[ 'tty%s' % idx]: self.context.consoles.add( OpenVzConsole('tty%s' % idx, console['cid'])) if console['type'] == 'vnc' and not self.context.consoles['vnc']: self.context.consoles.add( VncConsole(self.context.__parent__.__parent__.hostname, int(console['port']))) # XXX TODO: handle removal of consoles when they are no longer reported from upstream # networks for interface in vm['interfaces']: if not self.context.interfaces[interface['name']]: iface = NetworkInterface(interface['name'], None, interface['mac'], 'active') if 'ipv4_address' in interface: iface.ipv4_address = interface['ipv4_address'] self.context.interfaces.add(iface) # XXX TODO: handle removal of interfaces when they are no longer reported from upstream # XXX hack, openvz specific compute.cpu_info = self.context.__parent__.__parent__.cpu_info compute.memory = vm['memory'] diskspace = dict((unicode(k), v) for k, v in vm['diskspace'].items()) diskspace[u'total'] = sum([0.0] + vm['diskspace'].values()) # round diskspace values for i in diskspace: diskspace[i] = round(diskspace[i], 2) compute.diskspace = diskspace if compute.state == 'active': compute.uptime = get_f(vm, 'uptime') else: compute.uptime = None compute.num_cores = vm['vcpu'] compute.swap_size = vm.get('swap') or compute.swap_size compute.kernel = vm.get('kernel') or compute.kernel with SuppressEvents(self.context): compute.apply()