def form_valid(self, form): """ form_valid is always called on a blank / new form, so this is essentially going to get called on every POST self.request.POST should contain all the variables defined in the service identified by the hidden field 'service_id' :param form: blank form data from request :return: render of a success template after service is provisioned """ service_name = self.request.POST.get('service_id', '') customer_name = self.request.POST.get('customer_name', '') if service_name == '': # FIXME - add an ERROR page and message here print('No Service ID found!') return super().form_valid(form) service = snippet_utils.load_snippet_with_name(service_name) jinja_context = dict() jinja_context['customer_name'] = customer_name jinja_context['service_tier'] = service_name for v in service['variables']: if self.request.POST.get(v['name']): jinja_context[v['name']] = self.request.POST.get(v['name']) else: # FIXME - add an ERROR page and message here print('Required Variable not found on request!') return super().form_valid(form) # we now have a jinja context that contains all our variables and the user supplied inputs # FIXME - add pan.xapi stuff here to handle this stuff! print(jinja_context) # check if we need to ensure a baseline exists before hand if 'extends' in service and service['extends'] is not None: # prego (it's in there) baseline = service['extends'] baseline_service = snippet_utils.load_snippet_with_name(baseline) if baseline_service is not None: # check the panorama config to see if it's there or not if not pan_utils.validate_snippet_present( baseline_service, jinja_context): # no prego (it's not in there) print('Pushing configuration dependency: %s' % baseline_service['name']) # make it prego pan_utils.push_service(baseline_service, jinja_context) if not pan_utils.validate_snippet_present(service, jinja_context): print('Pushing new service: %s' % service['name']) pan_utils.push_service(service, jinja_context) else: print('This service was already configured on the server') return super().form_valid(form)
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) service = snippet_utils.load_snippet_with_name(self.snippet) form = self.generate_dynamic_form(service) context['form'] = form context['header'] = self.header return context
def get_redirect_url(self, *args, **kwargs): hostname = self.kwargs['hostname'] minion = self.kwargs['minion'] service = snippet_utils.load_snippet_with_name('delete_single_vm') jinja_context = dict() for v in service['variables']: if self.request.POST.get(v['name']): jinja_context[v['name']] = self.request.POST.get(v['name']) salt_util = salt_utils.SaltUtil() res = salt_util.deploy_service(service, jinja_context) print(res) print('deleting hostname %s' % hostname) return '/mssp/vms'
def form_valid(self, form): print('Here we go deploying') jinja_context = dict() service = snippet_utils.load_snippet_with_name('provision_firewall') for v in service['variables']: if self.request.POST.get(v['name']): jinja_context[v['name']] = self.request.POST.get(v['name']) salt_util = salt_utils.SaltUtil() res = salt_util.deploy_service(service, jinja_context) print(res) context = dict() context['results'] = res return render(self.request, 'mssp/results.html', context=context)
def form_valid(self, form): # This method is called when valid form data has been POSTed. # It should return an HttpResponse. service_name = form.cleaned_data['service_tier'] customer_name = form.cleaned_data['customer_name'] service_term = form.cleaned_data['service_term'] service = snippet_utils.load_snippet_with_name(service_name) print(service) dynamic_form = self.generate_dynamic_form(service) context = self.get_context_data() context['customer_name'] = customer_name context['service_term'] = service_term context['service'] = service context['form'] = dynamic_form return render(self.request, 'mssp/configure_service.html', context=context)
def form_valid(self, form): print('Here we go deploying') jinja_context = dict() service = snippet_utils.load_snippet_with_name(self.snippet) for v in service['variables']: if self.request.POST.get(v['name']): jinja_context[v['name']] = self.request.POST.get(v['name']) minion = self.request.POST.get('minion') salt_util = salt_utils.SaltUtil() res = salt_util.deploy_service(service, jinja_context) context = dict() try: response_obj = json.loads(res) # {"return": [{"compute-01.c.vistoq-demo.internal": {"shoaf1": "shutdown", "stuart1": "shutdown"}}]} fm = response_obj['return'][0] vms = list() if minion in fm: minion_dict = response_obj['return'][0][minion] for m in minion_dict: vm_detail = dict() vm_detail['hostname'] = m vm_detail['status'] = minion_dict[m] vms.append(vm_detail) context['vms'] = vms return render(self.request, 'mssp/deployed_vms.html', context=context) else: context['results'] = response_obj['return'][0] return render(self.request, 'mssp/results.html', context=context) except ValueError as ve: print('Could not parse json') print(ve) context['results'] = {'Error': 'Could not get deployed VMs list!'} return render(self.request, 'mssp/results.html', context=context)