示例#1
0
    def _create_resource(self, args, global_args, resource):
        """Create a resource"""
        self._output_formatter(global_args)

        try:
            resource.save(username=env.username, password=env.password)
        except HttpBackendError as e:
            self.out.error(json.loads(e.args[1]))
            sys.exit(1)

        if global_args.raw:
            self.out.info(Serializer.dump(resource))
        else:
            self.out.info("--> %s %s is created!" % (
                args.service.capitalize() if args.service else 'App',
                'for %s' % args.appname if args.service else args.appname))
            self.out.info("--> Details of the %s:\n" % (
                    args.service if args.service else 'app'))
            self._show_resource(args, global_args)
            if not args.service:
                self.out.info("\n--> Don't forget to create a database if you need one!")
                self.out.info("--> You can now deploy the app with: thirty "
                        "deploy %s" % args.appname)
            else:
                self.out.info("\n--> Note: You probably need to deploy the app again")
示例#2
0
    def it_serializes_a_collection_correctly(self):
        """Dump the collection in this weird json format."""
        instances = Instances()
        instances.add(Instance({'id': 1}))

        eq_(json.dumps(self.expected_collection),
                DropinJsonSerializer.dump(instances))
示例#3
0
    def it_populates_a_document_from_a_serialized_string(self):
        """Load a populated document from a json string."""
        obj = App()

        app = DropinJsonSerializer.load(obj, json.dumps(self.fixture))

        eq_(self.fixture, app.render())
        eq_(app, obj)
示例#4
0
    def do_app_worker(self, args, global_args):
        """Update the configuration of a worker."""
        if global_args.raw:
            out = utils.RawOutputFormatter()
        else:
            out = utils.ResourceOutputFormatter()

        env.service = args.service
        env.appname = args.appname

        Worker = utils._get_document("Worker")
        worker = Worker({'name': args.appname})

        try:
            worker.fetch(username=global_args.username, password=global_args.password)
        except HttpBackendError as e:
            out.error(json.loads(e.args[1]))
            sys.exit(1)

        if args.add_var:
            Variable = utils._get_document('EnvironmentVariable')
            for e in args.add_var:
                item = e.split("=")
                variable = Variable({'name': item[0], 'value': item[1]})
                worker.envvars.add(variable)

        if args.del_var:
            new_collection = []
            for e in args.del_var:
                for doc in worker.envvars.collection_set:
                    if e != doc.name:
                        new_collection.append(doc)
            worker.envvars.collection_set = new_collection

        if args.instances:
            worker.instances = args.instances

        try:
            worker.save(username=global_args.username, password=global_args.password)
        except HttpBackendError as e:
            out.error(json.loads(e.args[1]))
            sys.exit(1)

        if global_args.raw:
            out.info(Serializer.dump(worker))
        else:
            out.info("--> %s %s updated!" % (args.service.capitalize(), args.appname))
            out.info("--> New %s configuration:\n" % args.service)
            output = ShowAction()
            output.do_show(args, global_args)
示例#5
0
    def _update_resource(self, args, global_args, resource):
        """Update a resource with an additional resource"""
        self._output_formatter(global_args)

        try:
            resource.save(username=env.username, password=env.password)
        except HttpBackendError as e:
            self.out.error(json.loads(e.args[1]))
            sys.exit(1)

        if global_args.raw:
            self.out.info(Serializer.dump(resource))
        else:
            self.out.info("--> %s %s is created!" % (args.service.capitalize(), args.appname))
            self.out.info("--> Details of the %s:\n" % args.service)
            self._show_resource(args, global_args)
示例#6
0
    def do_app_repository(self, args, global_args):
        """Update the configuration of a repository."""
        if global_args.raw:
            out = utils.RawOutputFormatter()
        else:
            out = utils.ResourceOutputFormatter()

        context = {}

        env.service = args.service
        env.appname = args.appname

        Repository = utils._get_document("Repository")

        repository = Repository({'name': args.appname}, context=context)

        try:
            repository.fetch(username=global_args.username, password=global_args.password)
        except HttpBackendError as e:
            out.error(json.loads(e.args[1]))
            sys.exit(1)

        if args.location:
            repository.location = args.location

        if args.ssh_key:
            with open(args.ssh_key, 'r') as f:
                repository.ssh_key = base64.b64encode(f.read())

        try:
            repository.save(username=global_args.username, password=global_args.password)
        except HttpBackendError as e:
            out.error(json.loads(e.args[1]))
            sys.exit(1)

        if global_args.raw:
            out.info(Serializer.dump(repository))
        else:
            out.info("--> %s %s updated!" % (args.service.capitalize(), repository.name))
            out.info("--> New %s configuration:\n" % args.service)
            output = ShowAction()
            output.do_show(args, global_args)
示例#7
0
    def it_serializes_a_document_correctly(self):
        """Dump the document in this weird json format."""
        app = App(self.fixture)

        eq_(json.dumps(self.expected), DropinJsonSerializer.dump(app))
示例#8
0
    def do_app(self, args, global_args):
        """Update the configuration of an app."""
        if global_args.raw:
            out = utils.RawOutputFormatter()
        else:
            out = utils.ResourceOutputFormatter()

        env.appname = args.appname

        App = utils._get_document("App")
        app = App({'name': args.appname})

        try:
            app.fetch(username=global_args.username, password=global_args.password)
        except HttpBackendError as e:
            out.error(json.loads(e.args[1]))
            sys.exit(1)

        if args.instances:
            app.instances = args.instances

        if args.add_cname:
            Cname = utils._get_document('CnameRecord')
            for c in args.add_cname:
                cname = Cname({'record': c})
                app.cnames.add(cname)

        if args.del_cname:
            for c in args.del_cname:
                app.cnames.delete({'record': c})

        if args.repo_commit:
            app.repo_commit = args.repo_commit

        if args.repository:
            app.repository.name = args.repository

        if args.add_var:
            Variable = utils._get_document('EnvironmentVariable')
            for e in args.add_var:
                item = e.split("=")
                variable = Variable({'name': item[0], 'value': item[1]})
                app.envvars.add(variable)

        if args.del_var:
            new_collection = []
            for e in args.del_var:
                for doc in app.envvars.collection_set:
                    if e != doc.name:
                        new_collection.append(doc)
            app.envvars.collection_set = new_collection

        try:
            app.save(username=global_args.username, password=global_args.password)
        except HttpBackendError as e:
            out.error(json.loads(e.args[1]))
            sys.exit(1)

        if global_args.raw:
            out.info(Serializer.dump(app))
        else:
            out.info("--> App %s updated!" % (args.appname))
            out.info("--> New app configuration:\n")
            output = ShowAction()
            output.do_show(args, global_args)