def get_context_data(self, form, **kwargs): context = super(Wizard, self).get_context_data(form=form, **kwargs) mc = api.muranoclient(self.request) app_id = self.kwargs.get('app_id') app = self.storage.extra_data.get('app') # Save extra data to prevent extra API calls if not app: app = mc.packages.get(app_id) self.storage.extra_data['app'] = app environment_id = self.kwargs.get('environment_id') environment_id = utils.ensure_python_obj(environment_id) if environment_id is not None: env_name = mc.environments.get(environment_id).name else: env_name = get_next_quick_environment_name(self.request) context['field_descriptions'] = services.get_app_field_descriptions( self.request, app_id, self.steps.index) context.update({ 'type': app.fully_qualified_name, 'service_name': app.name, 'app_id': app_id, 'environment_id': environment_id, 'environment_name': env_name, 'do_redirect': self.get_wizard_flag('do_redirect'), 'drop_wm_form': self.get_wizard_flag('drop_wm_form'), 'prefix': self.prefix, }) return context
def get_context_data(self, form, **kwargs): context = super(Wizard, self).get_context_data(form=form, **kwargs) mc = api.muranoclient(self.request) app_id = self.kwargs.get('app_id') app = self.storage.extra_data.get('app') # Save extra data to prevent extra API calls if not app: app = mc.packages.get(app_id) self.storage.extra_data['app'] = app environment_id = self.kwargs.get('environment_id') environment_id = utils.ensure_python_obj(environment_id) if environment_id is not None: env_name = mc.environments.get(environment_id).name else: env_name = get_next_quick_environment_name(self.request) context['field_descriptions'] = services.get_app_field_descriptions( self.request, app_id, self.steps.index) context.update({'type': app.fully_qualified_name, 'service_name': app.name, 'app_id': app_id, 'environment_id': environment_id, 'environment_name': env_name, 'do_redirect': self.get_wizard_flag('do_redirect'), 'drop_wm_form': self.get_wizard_flag('drop_wm_form'), 'prefix': self.prefix, 'got_picture': app.supplier.has_key('Logo'), }) return context
def done(self, form_list, **kwargs): app_name = self.storage.extra_data['app'].name service = form_list[0].service attributes = service.extract_attributes() attributes = helpers.insert_hidden_ids(attributes) storage = attributes.setdefault('?', {}).setdefault( consts.DASHBOARD_ATTRS_KEY, {}) storage['name'] = app_name do_redirect = self.get_wizard_flag('do_redirect') wm_form_data = service.cleaned_data.get('workflowManagement') if wm_form_data: do_redirect = do_redirect or not wm_form_data.get( 'stay_at_the_catalog', True) fail_url = reverse("horizon:murano:environments:index") environment_id = utils.ensure_python_obj(kwargs.get('environment_id')) quick_environment_id = self.request.session.get('quick_env_id') try: # NOTE (tsufiev): create new quick environment only if we came # here after pressing 'Quick Deploy' button and quick environment # wasn't created yet during addition of some referred App if environment_id is None: if quick_environment_id is None: env = create_quick_environment(self.request) self.request.session['quick_env_id'] = env.id environment_id = env.id else: environment_id = quick_environment_id env_url = reverse('horizon:murano:environments:services', args=(environment_id, )) srv = env_api.service_create(self.request, environment_id, attributes) except exc.HTTPForbidden: msg = _("Sorry, you can't add application right now. " "The environment is deploying.") exceptions.handle(self.request, msg, redirect=fail_url) except Exception: message = _('Adding application to an environment failed.') LOG.exception(message) if quick_environment_id: env_api.environment_delete(self.request, quick_environment_id) fail_url = reverse('horizon:murano:catalog:index') exceptions.handle(self.request, message, redirect=fail_url) else: message = _("The '{0}' application successfully added to " "environment.").format(app_name) LOG.info(message) messages.success(self.request, message) if do_redirect: return http.HttpResponseRedirect(env_url) else: srv_id = getattr(srv, '?')['id'] return self.create_hacked_response( srv_id, attributes['?'].get('name') or attributes.get('name'))
def done(self, form_list, **kwargs): app_name = self.storage.extra_data['app'].name service = form_list[0].service attributes = service.extract_attributes() attributes = helpers.insert_hidden_ids(attributes) storage = attributes.setdefault('?', {}).setdefault( consts.DASHBOARD_ATTRS_KEY, {}) storage['name'] = app_name do_redirect = self.get_wizard_flag('do_redirect') wm_form_data = service.cleaned_data.get('workflowManagement') if wm_form_data: do_redirect = do_redirect or not wm_form_data.get( 'stay_at_the_catalog', True) fail_url = reverse("horizon:murano:environments:index") environment_id = utils.ensure_python_obj(kwargs.get('environment_id')) quick_environment_id = self.request.session.get('quick_env_id') try: # NOTE (tsufiev): create new quick environment only if we came # here after pressing 'Quick Deploy' button and quick environment # wasn't created yet during addition of some referred App if environment_id is None: if quick_environment_id is None: env = create_quick_environment(self.request) self.request.session['quick_env_id'] = env.id environment_id = env.id else: environment_id = quick_environment_id env_url = reverse('horizon:murano:environments:services', args=(environment_id,)) srv = env_api.service_create( self.request, environment_id, attributes) except exc.HTTPForbidden: msg = _("Sorry, you can't add application right now. " "The environment is deploying.") exceptions.handle(self.request, msg, redirect=fail_url) except Exception: message = _('Adding application to an environment failed.') LOG.exception(message) if quick_environment_id: env_api.environment_delete(self.request, quick_environment_id) fail_url = reverse('horizon:murano:catalog:index') exceptions.handle(self.request, message, redirect=fail_url) else: message = _("The '{0}' application successfully added to " "environment.").format(app_name) LOG.info(message) messages.success(self.request, message) if do_redirect: return http.HttpResponseRedirect(env_url) else: srv_id = getattr(srv, '?')['id'] return self.create_hacked_response( srv_id, attributes['?'].get('name') or attributes.get('name'))
def init_usages(self): stored_data = self.storage.extra_data step_usages = stored_data.get('step_usages') if step_usages is None: step_usages = [ collections.defaultdict(dict) for step in self.steps.all ] stored_data['step_usages'] = step_usages environment_id = self.kwargs.get('environment_id') environment_id = utils.ensure_python_obj(environment_id) if environment_id is not None: session_id = env_api.Session.get(self.request, environment_id) client = api.muranoclient(self.request) all_services = client.environments.get( environment_id, session_id).services env_usages = self.aggregate_usages(map( lambda svc: svc['?'].get('resourceUsages', {}), all_services)) else: env_usages = collections.defaultdict(dict) step_usages.insert(0, env_usages) return step_usages
def get_form_initial(self, step): env_id = utils.ensure_python_obj(self.kwargs.get('environment_id')) if env_id is None: env_id = self.request.session.get('quick_env_id') init_dict = {'request': self.request, 'app_id': self.kwargs['app_id'], 'environment_id': env_id} return self.initial_dict.get(step, init_dict)
def get_context_data(self, form, **kwargs): context = super(Wizard, self).get_context_data(form=form, **kwargs) mc = api.muranoclient(self.request) app_id = self.kwargs.get('app_id') app = self.storage.extra_data.get('app') # Save extra data to prevent extra API calls if not app: app = mc.packages.get(app_id) self.storage.extra_data['app'] = app wizard_id = self.request.POST.get('wizard_id') if wizard_id is None: wizard_id = uuid.uuid4() environment_id = self.kwargs.get('environment_id') environment_id = utils.ensure_python_obj(environment_id) if environment_id is not None: env_name = mc.environments.get(environment_id).name else: env_name = get_next_quick_environment_name(self.request) field_descr, extended_descr = services.get_app_field_descriptions( self.request, app_id, self.steps.index) context.update({'type': app.fully_qualified_name, 'service_name': app.name, 'app_id': app_id, 'environment_id': environment_id, 'environment_name': env_name, 'do_redirect': self.get_wizard_flag('do_redirect'), 'drop_wm_form': self.get_wizard_flag('drop_wm_form'), 'prefix': self.prefix, 'wizard_id': wizard_id, 'field_descriptions': field_descr, 'extended_descriptions': extended_descr, }) with helpers.current_region(self.request, form.region): context = self.update_usages(form, context) return context
def init_usages(self): stored_data = self.storage.extra_data step_usages = stored_data.get('step_usages') if step_usages is None: step_usages = [ collections.defaultdict(dict) for step in self.steps.all ] stored_data['step_usages'] = step_usages environment_id = self.kwargs.get('environment_id') environment_id = utils.ensure_python_obj(environment_id) if environment_id is not None: session_id = env_api.Session.get(self.request, environment_id) client = api.muranoclient(self.request) all_services = client.environments.get(environment_id, session_id).services env_usages = self.aggregate_usages( map(lambda svc: svc['?'].get('resourceUsages', {}), all_services)) else: env_usages = collections.defaultdict(dict) step_usages.insert(0, env_usages) return step_usages
def get_wizard_flag(self, key): value = self._get_wizard_param(key) return utils.ensure_python_obj(value)