def restart_apps(apps, wait, cors_origin, krb_realm, dry_run):
        """Restart system apps."""
        ctx = cell_admin.CellCtx(cors=cors_origin, krb_realm=krb_realm)
        cell_apps = cell_admin.get_apps(ctx)

        if not apps:
            apps = list(cell_apps)

        instance_api = instance.API(plugins=['aws-proid-env'])

        for appname in apps:
            fullname = cell_apps[appname]['fullname']
            app = cell_admin.render_template(appname, ctx)

            count = cell_apps[appname].get('monitors')
            if count is None:
                continue

            cli.echo_green('Restarting app %s:', fullname)
            cli.out(yaml.dump(app, explicit_start=True))

            if dry_run:
                continue

            for idx in range(0, count):
                instance_ids = instance_api.create(fullname, app, 1)
                for inst_id in instance_ids:
                    cli.echo_green(inst_id)
                if idx <= count - 1 and wait:
                    time.sleep(wait)
Beispiel #2
0
    def run(self):
        """Invokes Treadmill instance create api."""
        if self.instance is not None:
            return True

        try:
            api = instance.API()
            return self._write_instance_file(
                api.create(self.name, self.manifest)[0])
        except (IOError, exc.TreadmillError) as ex:
            _LOGGER.error(ex)
            return False
Beispiel #3
0
    def stop(self, exit_code):
        """Calls Treadmill instance stop api."""
        if self.instance is None:
            return

        if exit_code != 0:
            if exit_code != 11 and not self.settings['stop']:
                return

            try:
                api = instance.API()
                api.delete(self.instance)
            except exc.TreadmillError as ex:
                _LOGGER.error(ex)
                return

        self._remove_instance_file()
Beispiel #4
0
    def restart_apps(ctx, wait, apps):
        """Restart cell API."""
        instance_api = instance.API(plugins=['aws-proid-env'])
        monitors = _monitors(ctx)
        for name, count in six.iteritems(monitors):
            _, appname, _ = name.split('.')
            if apps and appname not in apps:
                continue

            _, app = _render_app(appname, ctx)
            print(name)
            print(yaml.dump(app))
            for idx in range(0, count):
                instance_ids = instance_api.create(name, app, 1)
                for inst_id in instance_ids:
                    print(inst_id)
                if idx <= count - 1 and wait:
                    time.sleep(wait)
Beispiel #5
0
    def test_instance_create(self):
        """Test input validation for instance.create."""
        api = instance.API()

        good = {}
        _ok(api.create, 'foo.bla', good)
        _ok(api.create, '*****@*****.**', good)

        _ok(api.create, 'foo.bla', _patch(good, '/memory', '100M'))
        _fail(api.update, 'foo.bla', _patch(good, '/memory', '100M'))

        good = {'priority': 0}
        _ok(api.update, 'foo.bla#123456', good)
        _fail(api.update, 'foo.bla#123456', _patch(good, '/priority', -1))
        _fail(api.update, 'foo.bla#123456', _patch(good, '/memory', '100M'))

        # Features
        good = {'features': ['foo']}
        _ok(api.create, 'foo.bla', good)
        _ok(api.create, 'foo.bla', _patch(good, '/features/0', 'foo_bar'))
        _ok(api.create, 'foo.bla', _patch(good, '/features/0', 'foo-bar'))
        _fail(api.create, 'foo.bla', _patch(good, '/features/0', 'foo:'))
 def setUp(self):
     self.instance = instance.API()