Example #1
0
    def add_buildout(self, data, host, checksum):
        packages = []

        for package_info in data.packages:
            package = Package.get_by_nameversion(package_info['name'],
                                                 package_info['version'])
            if not package:
                equation = package_info.get('equation', None)
                version = Version.get_by_version(package_info['version']) or\
                    Version.add(package_info['version'], equation)
                requirements = self.get_requirements(
                    package_info['requirements'], data.versionmap)
                package = Package.add(package_info['name'], version,
                                      requirements)

            packages.append(package)

        buildout = Buildout(data.name,
                            host,
                            checksum,
                            started=data.started,
                            finished=data.finished,
                            packages=packages,
                            config=data.config)

        DBSession.add(buildout)
        self.remove_old_buildouts(data.name)
        return buildout
Example #2
0
 def create_test_buildout(self):
     from whiskers.models import Buildout, Host
     with transaction.manager:
         host = Host(u'localhost', '127.0.0.1')
         self.session.add(host)
         buildout = Buildout(name=u"Example", host=host, checksum=1)
         self.session.add(buildout)
Example #3
0
    def post(self):
        """Add a new buildout to database."""
        try:
            data = self.request.json_body['data']
            checksum = zlib.adler32(self.request.body)
            checksum_buildout = Buildout.get_by_checksum(checksum)
            if checksum_buildout:
                logging.info("Checksum matched")
                logging.info("Updating datetime..")
                checksum_buildout.datetime = datetime.now()
                DBSession.flush()
                raise Exception("No changes with existing data.")
            logging.info("New checksum")
            jsondata = JsonDataWrapper(data)
        except KeyError:
            return Response(u"No data. Nothing added.")
        except AttributeError as e:
            return Response(u"Not a valid request. Error was: {error}".format(
                error=str(e)))
        except Exception as e:
            return Response(
                u"Adding information failed. Error was: {error}".format(
                    error=str(e)))

        host = Host.get_by_name(jsondata.hostname)

        if not host:
            host = Host.add(jsondata.hostname, jsondata.ipv4)

        self.add_buildout(jsondata, host, checksum)

        return Response(u'Added buildout information to Whiskers.')
Example #4
0
    def post(self):
        """Add a new buildout to database."""
        try:
            data = self.request.params['data']
            incoming = data.encode('utf-8')
            checksum = zlib.adler32(incoming)
            checksum_buildout = Buildout.get_by_checksum(checksum)
            if checksum_buildout:
                logging.info("Checksum matched")
                logging.info("Updating datetime..")
                checksum_buildout.datetime = datetime.now()
                DBSession.flush()
                raise Exception("No changes with existing data.")
            logging.info("New checksum")
            jsondata = JsonDataWrapper(data)
        except KeyError:
            return Response('No data. Nothing added.')
        except Exception as e:
            return Response(str(e))

        host = Host.get_by_name(jsondata.hostname)

        if not host:
            host = Host.add(jsondata.hostname, jsondata.ipv4)

        self.add_buildout(jsondata, host, checksum)

        return Response('Added buildout information to Whiskers.')
    def post(self):
        """Add a new buildout to database."""
        try:
            data = self.request.json_body['data']
            checksum = zlib.adler32(self.request.body)
            checksum_buildout = Buildout.get_by_checksum(checksum)
            if checksum_buildout:
                logging.info("Checksum matched")
                logging.info("Updating datetime..")
                checksum_buildout.datetime = datetime.now()
                DBSession.flush()
                raise Exception("No changes with existing data.")
            logging.info("New checksum")
            jsondata = JsonDataWrapper(data)
        except KeyError:
            return Response(u"No data. Nothing added.")
        except AttributeError as e:
            return Response(u"Not a valid request. Error was: {error}".format(
                error=str(e)))
        except Exception as e:
            return Response(u"Adding information failed. Error was: {error}".
                            format(error=str(e)))

        host = Host.get_by_name(jsondata.hostname)

        if not host:
            host = Host.add(jsondata.hostname, jsondata.ipv4)

        self.add_buildout(jsondata, host, checksum)

        return Response(u'Added buildout information to Whiskers.')
Example #6
0
    def remove_old_buildouts(self, name):
        """Remove old buildouts."""
        buildouts_to_keep = Settings.get_buildouts_to_keep()
        buildouts = Buildout.get_by_name(name)

        if buildouts.count() > buildouts_to_keep and buildouts_to_keep > 0:
            for buildout in buildouts[buildouts_to_keep:]:
                DBSession.delete(buildout)
Example #7
0
    def remove_old_buildouts(self, name):
        """Remove old buildouts."""
        buildouts_to_keep = Settings.get_buildouts_to_keep()
        buildouts = Buildout.get_by_name(name)

        if buildouts.count() > buildouts_to_keep and buildouts_to_keep > 0:
            for buildout in buildouts[buildouts_to_keep:]:
                DBSession.delete(buildout)
Example #8
0
def add_buildout_view(request):
    try:
        data = json.loads(request.params['data'])
    except KeyError:
        return Response('No data. Nothing added.')

    session = DBSession()
    buildoutname = data['buildoutname']
    packages = data['packages']
    prepared_packages = prepare_packages(session, packages)
    buildout = session.query(Buildout).filter_by(name=buildoutname)

    if not buildout.count():
        buildout = Buildout(name=buildoutname, packages=prepared_packages)
    else:
        buildout = buildout[0]
        buildout.packages = prepared_packages
    session.merge(buildout)
    transaction.commit()
    return Response('OK')
Example #9
0
 def _createDummyContent(self, session):
     from whiskers.models import Buildout, Package, Version, Host
     host = Host('localhost', '127.0.0.1')
     version = Version('1.0')
     package = Package('req-package-1', version)
     packages = [Package('package1', version),
                 Package('package2', Version('2.0'),
                         requires=[package])]
     buildout = Buildout('buildout', host, 12345, packages=packages)
     session.add(buildout)
     session.flush()
     transaction.commit()
Example #10
0
    def create_buildout(self):
        from whiskers.models import (
            Buildout,
            Host,
            Package,
            Version,
        )

        host = Host(u'localhost', '127.0.0.1')
        self.session.add(host)
        version = Version('1.0')
        package = Package(u'example.package', version=version)
        buildout = Buildout(name=u"Example", host=host, checksum=1,
                            packages=[package])
        self.session.add(buildout)
Example #11
0
 def get(self):
     buildout_id = self.request.matchdict.get('buildout_id')
     buildout = Buildout.get_by_id(buildout_id)
     return buildout.get_as_dict()
 def get(self):
     buildout_id = self.request.matchdict.get('buildout_id')
     buildout = Buildout.get_by_id(buildout_id)
     return buildout.get_as_dict()