Ejemplo n.º 1
0
    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')
Ejemplo n.º 2
0
    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')
Ejemplo n.º 3
0
    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')
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
0
 def pull_owner():
     compute = TmpObj(self.context)
     newowner = getUtility(IAuthentication).getPrincipal(vm['owner'])
     compute.__owner__ = newowner
     compute.apply()