Esempio n. 1
0
    def render(self):
        existing_controllers = juju.get_controllers()['controllers']
        clouds = juju.get_compatible_clouds()
        cloud_types = juju.get_cloud_types_by_name()

        app.jaas_ok = set(clouds) & JAAS_CLOUDS
        jaas_controller = {
            n
            for n, c in existing_controllers.items()
            if JAAS_ENDPOINT in c['api-endpoints']
        }
        if jaas_controller:
            app.jaas_controller = jaas_controller.pop()

        filtered_controllers = {
            n: d
            for n, d in existing_controllers.items()
            if cloud_types.get(d['cloud']) in clouds
        }

        if not app.jaas_ok and len(filtered_controllers) == 0:
            return controllers.use('clouds').render()

        track_screen("Controller Picker")
        excerpt = app.config.get(
            'description', "Please select an existing controller,"
            " or choose to bootstrap a new one.")
        view = ControllerListView(app, filtered_controllers, self.finish)

        app.ui.set_header(title="Choose a Controller or Create new",
                          excerpt=excerpt)
        app.ui.set_body(view)
Esempio n. 2
0
    def finish(self, controller):
        if controller is None:
            app.current_controller = "conjure-up-{}-{}".format(
                app.current_cloud, utils.gen_hash())
            return controllers.use('bootstrap').render()

        if controller == 'jaas':
            if not app.jaas_controller or not juju.has_jaas_auth():
                # jaas is either not registered or not logged in
                return controllers.use('jaaslogin').render()
            # jaas already registered
            app.current_controller = app.jaas_controller
            app.is_jaas = True
        else:
            app.current_controller = controller

        if app.current_controller not in juju.get_controllers()['controllers']:
            return controllers.use('bootstrap').render()

        events.Bootstrapped.set()

        app.loop.create_task(
            juju.add_model(app.current_model, app.current_controller,
                           app.current_cloud))
        return controllers.use('deploy').render()
Esempio n. 3
0
 def timeout(self):
     self.authenticating.clear()
     controllers = juju.get_controllers()
     if app.jaas_controller in controllers['controllers']:
         # registration seems to have worked; maybe we should remove and
         # try again to be safe, but hopefully it's safe to just move on
         return self.finish()
     self.__remove_alarm()
     self.render(error='Timed out connecting to JaaS.  Please try again.')
Esempio n. 4
0
    def check_jaas(self):
        existing_controllers = juju.get_controllers()['controllers']

        app.jaas_ok = app.current_cloud_type in JAAS_CLOUDS
        jaas_controller = {
            n
            for n, c in existing_controllers.items()
            if JAAS_ENDPOINT in c['api-endpoints']
        }
        if jaas_controller:
            app.jaas_controller = jaas_controller.pop()
Esempio n. 5
0
    def render(self):
        models_map = {}
        existing_controllers = juju.get_controllers()['controllers']
        for cname, d in existing_controllers.items():
            models_map[cname] = juju.get_models(cname)

        track_screen("Destroy Controller")
        excerpt = ("Press [ENTER] on the highlighted item to destroy")
        view = DestroyView(app, models=models_map, cb=self.finish)

        app.ui.set_header(title="Choose a deployment to teardown",
                          excerpt=excerpt)
        app.ui.set_body(view)
Esempio n. 6
0
def get_controller_in_cloud(cloud):
    """ Returns a controller that is bootstrapped on the named cloud

    Arguments:
    cloud: cloud to check for

    Returns:
    available controller or None if nothing available
    """
    controllers = juju.get_controllers()['controllers'].items()
    for controller_name, controller in controllers:
        if cloud == controller['cloud']:
            return controller_name
    return None
Esempio n. 7
0
    def render(self, going_back=False):
        existing_controllers = juju.get_controllers()['controllers']
        self.check_jaas()

        filtered_controllers = {
            n: d
            for n, d in existing_controllers.items()
            if d['cloud'] == app.provider.cloud
        }

        if not app.jaas_ok and len(filtered_controllers) == 0:
            return self.finish(None)
        view = ControllerListView(app, filtered_controllers, self.finish,
                                  self.back)
        view.show()
Esempio n. 8
0
    def render(self):
        existing_controllers = juju.get_controllers()['controllers']
        self.check_jaas()

        filtered_controllers = {
            n: d
            for n, d in existing_controllers.items()
            if d['cloud'] == app.provider.cloud
        }

        if not app.jaas_ok and len(filtered_controllers) == 0:
            return self.finish(None)

        track_screen("Controller Picker")
        excerpt = app.config.get(
            'description', "Please select an existing controller,"
            " or choose to bootstrap a new one.")
        view = ControllerListView(app, filtered_controllers, self.finish)

        app.ui.set_header(title="Controller", excerpt=excerpt)
        app.ui.set_body(view)
Esempio n. 9
0
 def is_existing_controller(self):
     controllers = juju.get_controllers()['controllers']
     return app.current_controller in controllers
Esempio n. 10
0
 def is_existing_controller(self):
     controllers = juju.get_controllers()['controllers']
     return app.provider.controller in controllers