Ejemplo n.º 1
0
    def post(self, id, name):
        """
        Restore snapshot
        """
        current_identity = import_user()
        instance = Instance.query.get(id)
        lxdserver = Server.query.filter_by(name=instance.location).first()

        if instance.name and (id in current_identity.instances
                              or current_identity.admin):
            try:
                app.logger.info('User: %s restoring snapshot on container %s',
                                current_identity.username, instance.name)
                resx = lgw.lxd_api_get(
                    lxdserver,
                    'instances/' + instance.name + '/snapshots/' + name)
                if resx:
                    try:
                        res = lgw.lxd_api_put(lxdserver,
                                              'instances/' + instance.name,
                                              {'restore': name})
                        return {}, 204
                    except:
                        api.abort(code=500, message='Error restoring snapshot')
            except:
                api.abort(code=404, message='Snapshot doesn\'t exists')

        api.abort(code=404, message='Instance doesn\'t exists')
Ejemplo n.º 2
0
    def put(self, id, name, d=None):
        """
        Update snapshot
        """
        if d:
            data = d
        else:
            data = request.get_json()['data']

        current_identity = import_user()
        instance = Instance.query.get(id)
        lxdserver = Server.query.filter_by(name=instance.location).first()

        if instance.name and (id in current_identity.instances
                              or current_identity.admin):
            try:
                app.logger.info('User: %s updating snapshot on container %s',
                                current_identity.username, instance.name)

                res = lgw.lxd_api_get(
                    lxdserver,
                    'instances/' + instance.name + '/snapshots/' + name)
                r = res.json()['metadata']
                if r['expires_at']:
                    try:
                        res = lgw.lxd_api_put(
                            'instances/' + instance.name + '/snapshots/' +
                            name, {'expires_at': data['expires_at']})
                        return {}, 204
                    except:
                        api.abort(code=500, message='Error deleting snapshot')
            except:
                api.abort(code=404, message='Snapshot doesn\'t exists')

        api.abort(code=404, message='Instance doesn\'t exists')
Ejemplo n.º 3
0
    def put(self, id, d=None):
        """
        :return
        """
        if d:
            data = d
        else:
            data = request.get_json()['data']
        #print(data)
        current_identity = import_user()
        try:
            # c = Instance.query.filter_by(name=name).first()  # USE FOR QUERY BY NAME
            c = Instance.query.filter_by(id=id).first()
            lxdserver = Server.query.filter_by(name=c.location).first()
            if c and (c.id in current_identity.instances
                      or current_identity.admin):
                app.logger.info('User: %s updating container %s state to %s',
                                current_identity.username, c.name,
                                data['action'])

                res = lgw.lxd_api_put(lxdserver,
                                      'instances/' + c.name + '/state', data)

                # Delete redis cache
                redis_store.delete('server:' + lxdserver.name + ':instance:' +
                                   c.name + ':info')
                redis_store.delete('server:' + lxdserver.name + ':instance:' +
                                   c.name + ':state')
                #print(res.json())
                return {'data': res.json()}
            else:
                api.abort(code=403, message='Unauthorized access')
        except:
            api.abort(code=404, message='Instance doesn\'t exists')
Ejemplo n.º 4
0
    def put(self, server, alias, d=None):
        """
        Update image
        """
        if d:
            data = d
        else:
            data = request.get_json()['data']

        lxdserver = Server.query.filter_by(name=server).first()
        app.logger.info('User: %s updating image alias %s',
                        import_user().username, alias)
        res = lgw.lxd_api_put(lxdserver, 'images/aliases/' + alias, data=data)
        return res.json()['metadata']
Ejemplo n.º 5
0
    def put(self, url, server, name, d=None):
        """
        Update 'universal'
        """
        if d:
            data = d
        else:
            data = request.get_json()['data']

        lxdserver = Server.query.filter_by(name=server).first()
        app.logger.info('User: %s updating something on %s',
                        import_user().username, url)
        res = lgw.lxd_api_put(lxdserver, url + '/' + name, data=data)
        return res.json()['metadata']
Ejemplo n.º 6
0
    def post(self, id):
        """
        Restart container
        :param id:
        :return data
        """
        data = {'action': 'restart', 'timeout': 30}

        current_identity = import_user()
        try:
            # c = Container.query.filter_by(name=name).first()  # USE FOR QUERY BY NAME
            c = Container.query.filter_by(id=id).first()
            if c and (c.id in current_identity.containers
                      or current_identity.admin):
                res = lgw.lxd_api_put('containers/' + c.name + '/state', data)
                return res.json()
            else:
                api.abort(code=403, message='Unauthorized access')
        except:
            api.abort(code=404, message='Container doesn\'t exists')