def sync_owner_transact(self, vm): owner = self.context.__owner__ parent = self.context.__parent__ uuid = self.context.__name__ # PUSH if owner is set and is modified, PULL only when OMS owner is not set if owner is not None: if vm.get('owner') != owner: log.msg('Attempting to push owner (%s) of %s to agent' % (owner, self.context), system='sync') submitter = IVirtualizationContainerSubmitter(parent) d = submitter.submit(ISetOwner, uuid, owner) d.addCallback(lambda r: log.msg('Owner pushing for %s successful' % self.context, system='sync')) d.addErrback(log.err, system='sync') elif vm.get('owner'): compute = TmpObj(self.context) newowner = getUtility(IAuthentication).getPrincipal(vm['owner']) if newowner is not None: log.msg('Modifying ownership of "%s" from %s to %s.' % (compute, owner, newowner), system='sync') compute.__owner__ = newowner with SuppressEvents(self.context): compute.apply() else: log.msg('User not found: "%s" while restoring owner for %s. ' 'Leaving as-is' % (vm['owner'], compute), system='sync')
def sync_owner_transact(self, vm): owner = self.context.__owner__ parent = self.context.__parent__ uuid = self.context.__name__ # PUSH if owner is set and is modified, PULL only when OMS owner is not set if owner is not None: if vm.get('owner') != owner: log.msg('Attempting to push owner (%s) of %s to agent' % (owner, self.context), system='sync') submitter = IVirtualizationContainerSubmitter(parent) d = submitter.submit(ISetOwner, uuid, owner) d.addCallback(lambda r: log.msg( 'Owner pushing for %s successful' % self.context, system='sync')) d.addErrback(log.err, system='sync') elif vm.get('owner'): compute = TmpObj(self.context) newowner = getUtility(IAuthentication).getPrincipal(vm['owner']) if newowner is not None: log.msg('Modifying ownership of "%s" from %s to %s.' % (compute, owner, newowner), system='sync') compute.__owner__ = newowner with SuppressEvents(self.context): compute.apply() else: log.msg('User not found: "%s" while restoring owner for %s. ' 'Leaving as-is' % (vm['owner'], compute), system='sync')
def sync_owner_transact(self, vm): owner = self.context.__owner__ parent = self.context.__parent__ uuid = self.context.__name__ if vm.get('owner'): if owner != vm['owner']: compute = TmpObj(self.context) newowner = getUtility(IAuthentication).getPrincipal(vm['owner']) if newowner is not None: compute.__owner__ = newowner compute.apply() else: log.msg('User not found: "%s" while restoring owner for %s. ' 'Leaving as-is' % (vm['owner'], compute), system='sync') elif owner is not None: log.msg('Attempting to push owner (%s) of %s to agent' % (owner, self.context), system='sync') submitter = IVirtualizationContainerSubmitter(parent) d = submitter.submit(ISetOwner, uuid, owner) d.addCallback(lambda r: log.msg('Owner pushing for %s successful' % self.context, system='sync')) d.addErrback(log.err, system='sync')
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 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 pull_owner(): compute = TmpObj(self.context) newowner = getUtility(IAuthentication).getPrincipal(vm['owner']) compute.__owner__ = newowner compute.apply()