Example #1
0
    def get(self):

        IP = self.prepare_kwargs.get('IP', None)
        if not IP:
            return

        I = IP.instance

        if not I:
            return self.write(_('No binding instance.'))

        IP.instance_id = None
        self.db.commit()

        msg = _('free ip %(ip)s from instance %(id)s manually.') % {
            'ip': IP.ip,
            'id': I.id
        }
        add_trace(self, ttype='IP', tid=IP.id, do=msg)

        I.update_network()
        self.db.commit()

        url = self.reverse_url('myun:instance:view')
        url += '?id=%s' % I.id
        self.redirect(url)
Example #2
0
    def set_ip(self, I):

        pool_count = self.db.query(NetworkPool.id).count()
        if pool_count < 1:
            logging.warning('Have not find available network pool.')
            return

        # TODO: get the default network pool
        free_ip = None
        for pool in self.db.query(NetworkPool):
            free_ip = pool.get_free_ip()
            if free_ip:
                break

        if not (free_ip and not free_ip.instance_id):
            logging.warning('Have not find available ip.')
            return

        free_ip.instance_id = I.id
        self.db.commit()

        I.update_network()
        self.db.commit()

        msg = _('get ip %(ip)s for instance %(id)s') % {
            'ip': free_ip.ip,
            'id': I.id
        }

        add_trace(self, ttype='IP', tid=free_ip.id, do=msg)
        self.db.commit()
Example #3
0
    def set_ip(self, I):

        pool_count = self.db.query(NetworkPool.id).count()
        if pool_count < 1:
            logging.warning('Have not find available network pool.')
            return

        # TODO: get the default network pool
        free_ip = None
        for pool in self.db.query(NetworkPool):
            free_ip = pool.get_free_ip()
            if free_ip:
                break

        if not ( free_ip and not free_ip.instance_id ):
            logging.warning('Have not find available ip.')
            return

        free_ip.instance_id = I.id
        self.db.commit()

        I.update_network()
        self.db.commit()

        msg = _('get ip %(ip)s for instance %(id)s') % {
            'ip': free_ip.ip, 'id': I.id }

        add_trace(self, ttype='IP', tid=free_ip.id, do=msg)
        self.db.commit()
Example #4
0
    def post(self):

        I = self.I
        form = self.prepare_kwargs['form']

        if form.validate():
            IP = form._free_ip
            if IP and not IP.instance_id:
                IP.instance_id = I.id
                self.db.commit()

                I.update_network()
                self.db.commit()

                msg = _('get ip %(ip)s for instance %(id)s manually.') % {
                    'ip': IP.ip,
                    'id': I.id
                }

                add_trace(self, ttype='IP', tid=IP.id, do=msg)

                url = self.reverse_url('myun:instance:view')
                url += '?id=%s' % I.id
                return self.redirect(url)

        self.render()
Example #5
0
    def post(self):

        I, msg = self.get_instance_byid()
        if not I:
            return self.myfinish(msg)

        if I.is_running:
            return self.myfinish(
                _('Instance %s is running, can not delete it.') % I.id)

        # TODO: delete domain binding
        self.unbinding_domain(I)

        instance_id = I.id

        I.status = DELETED_S
        I.name = '_deleted_%s_' % I.id
        self.db.commit()

        for x in I.ips:
            for y in x.ports:
                y.ip_id = None
                y.ip_port = None
            x.instance_id = None
            x.updated = datetime.datetime.now()

        for x in I.domains:
            self.db.delete(x)

        for x in I.storages:
            self.db.delete(x)

        self.db.commit()

        # delete instance files
        ret = self.run_job(I, JOB_ACTION['DESTROY_INSTANCE'])
        if ret:
            code = 1
        else:
            ret = self.trans(_('Task starts successfully.'))
            code = 0

        # TODO:
        ret += ' %s' % I.id

        add_trace(self,
                  ttype='INSTANCE',
                  tid=instance_id,
                  do=_('delete instance'))

        self.myfinish(data=ret, status=code)
Example #6
0
    def post(self):

        I, msg = self.get_instance_byid()
        if not I:
            return self.myfinish( msg )

        if I.is_running:
            return self.myfinish( _('Instance %s is running, can not delete it.') % I.id )

        # TODO: delete domain binding
        self.unbinding_domain( I )

        instance_id = I.id

        I.status = DELETED_S
        I.name = '_deleted_%s_' % I.id
        self.db.commit()

        for x in I.ips:
            for y in x.ports:
                y.ip_id = None
                y.ip_port = None
            x.instance_id = None
            x.updated = datetime.datetime.now()

        for x in I.domains:
            self.db.delete(x)

        for x in I.storages:
            self.db.delete(x)

        self.db.commit()
        
        # delete instance files
        ret = self.run_job(I, JOB_ACTION['DESTROY_INSTANCE'])
        if ret:
            code = 1
        else:
            ret = self.trans(_('Task starts successfully.'))
            code = 0

        # TODO:
        ret += ' %s' % I.id

        add_trace( self, ttype = 'INSTANCE',
                   tid = instance_id,
                   do = _('delete instance') )

        self.myfinish( data = ret, status = code )
Example #7
0
    def post(self):

        A = self.prepare_kwargs['APPLIANCE']
        E = []
        U = None

        user = self.get_argument('user', 0)
        if user:
            if user.isdigit():
                U = self.db.query(User).get(user)

            if not U:
                U = self.db.query(User).filter_by(username=user).first()

            if U:

                old_owner = A.user.username
                new_owner = U.username

                A.user = U
                self.db.commit()

                # save trace
                do = _('change owner %(old)s to %(new)s') % {
                    'old': old_owner,
                    'new': new_owner
                }

                reason = self.get_argument('reason', None)
                if reason:
                    do += ' : %s' % reason

                add_trace(self, ttype='APPLIANCE', tid=A.id, do=do)

                # TODO: send reason to user
                url = self.reverse_url('admin:appliance:view')
                url += '?id=%s' % A.id
                return self.redirect(url)

            else:
                E.append(_('Can not find user %s') % user)
        else:
            E.append(_('No user input !'))

        self.render(ERROR=E)
Example #8
0
    def post(self):

        A = self.prepare_kwargs['APPLIANCE']
        E = []
        U = None

        user = self.get_argument('user', 0)
        if user:
            if user.isdigit():
                U = self.db.query(User).get(user)

            if not U:
                U = self.db.query(User).filter_by(
                    username = user ).first()

            if U:

                old_owner = A.user.username
                new_owner = U.username

                A.user = U
                self.db.commit()

                # save trace
                do = _('change owner %(old)s to %(new)s') % {
                    'old': old_owner, 'new': new_owner }

                reason = self.get_argument('reason', None)
                if reason:
                    do += ' : %s' % reason

                add_trace(self, ttype='APPLIANCE', tid=A.id, do=do)

                # TODO: send reason to user
                url = self.reverse_url('admin:appliance:view')
                url += '?id=%s' % A.id
                return self.redirect( url )

            else:
                E.append( _('Can not find user %s') % user )
        else:
            E.append( _('No user input !') )

        self.render(ERROR = E)
Example #9
0
    def change_owner(self):

        I = self.instance

        d = { 'title': self.trans(_('Change owner of instance')), 'I': I }
        
        E = []
        U = None
        
        if self.request.method == 'POST':
            user = self.get_argument('user', 0)
            if user:
                if user.isdigit():
                    U = self.db.query(User).get(user)
                if not U:
                    U = self.db.query(User).filter_by(username=user).first()
                if not U:
                    E.append( self.trans(_('Can not find user: %s')) % user )
            else:
                E.append( self.trans(_('No user input !')) )

            reason = self.get_argument('reason', '')

            do = _('change instance owner %(old)s to %(new)s: \
%(reason)') % {
                'old': I.user.username, 'new': U.username,
                'reason': reason }
            add_trace(self, ttype='INSTANCE', tid=I.id, do=do)

            if E:
                d['ERROR'] = E
            else:
                # TODO: send reason to user
                url = self.reverse_url('admin:instance')
                url += '?id=%s' % I.id
                return self.redirect( url )

        self.render( 'admin/instance/change_owner.html', **d)
Example #10
0
    def get(self):

        IP = self.prepare_kwargs.get('IP', None)
        if not IP:
            return

        I = IP.instance

        if not I:
            return self.write( _('No binding instance.') )

        IP.instance_id = None
        self.db.commit()

        msg = _('free ip %(ip)s from instance %(id)s manually.') % {
            'ip': IP.ip, 'id': I.id }
        add_trace(self, ttype='IP', tid=IP.id, do=msg)

        I.update_network()
        self.db.commit()

        url = self.reverse_url('myun:instance:view')
        url += '?id=%s' % I.id
        self.redirect( url )
Example #11
0
    def post(self):

        I = self.I
        form = self.prepare_kwargs['form']

        if form.validate():
            IP = form._free_ip
            if IP and not IP.instance_id:
                IP.instance_id = I.id
                self.db.commit()

                I.update_network()
                self.db.commit()

                msg = _('get ip %(ip)s for instance %(id)s manually.') % {
                    'ip': IP.ip, 'id': I.id }

                add_trace(self, ttype='IP', tid=IP.id, do=msg)

                url = self.reverse_url('myun:instance:view')
                url += '?id=%s' % I.id
                return self.redirect( url )

        self.render()