def unit_tests_example_unit_tests_example_page_form(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if not form.validate_on_submit(): g.user.logger.info('Form data was not valid.') return render_template( 'unit_tests_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) print(form.configuration.data) print(form.email.data) print(form.password.data) print(form.mac_address.data) print(form.ip_address.data) print(form.url.data) print(form.file.data) print(form.boolean_checked.data) print(form.boolean_unchecked.data) print(form.date_time.data) print(form.submit.data) # Put form processing logic here g.user.logger.info('SUCCESS') flash('success', 'succeed') return redirect( url_for( 'unit_tests_exampleunit_tests_example_unit_tests_example_page'))
def update_alias_record_update_alias_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations() if form.validate_on_submit(): try: # Retrieve form attributes and declare variables configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form["view"]) # Retrieve alias record alias_record = view.get_alias_record(request.form["alias_record"] + "." + request.form["zone"]) # Update the alias record's name and linkedRecordName alias_record.set_name(form.alias_name.data) alias_record.set_property( "linkedRecordName", request.form["linked_record"] + "." + request.form["linked_record_zone"], ) alias_record.update() # Put form processing code here g.user.logger.info( "Success - Alias Record Modified - Object ID: " + str(alias_record.get_id())) flash( "Success - Alias Record Modified - Object ID: " + str(alias_record.get_id()), "succeed", ) return redirect( url_for( "update_alias_recordupdate_alias_record_update_alias_record_page" )) except Exception as e: flash(str(e)) # Log error and render workflow page g.user.logger.warning(f"EXCEPTION THROWN: {e}") return render_template( "update_alias_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) else: g.user.logger.info("Form data was not valid.") return render_template( "update_alias_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def bulk_engine_example_bulk_engine_example_page_form(): form = GenericFormTemplate() form.configuration.choices = util.get_configurations(default_val=True) data = json.loads(form.data_box.data) name = g.user.get_api().get_entity_by_id( form.configuration.data).get_name() view = form.view.data globals = { "configuration": name, "view": view, "on_fail": form.on_fail.data } r = load(data, **globals) response = "" for type, result in r.items(): response += "<h2>%s</2>" % type response += "<pre>%s</pre>" % str(result).replace(',', ',\n') form.results.plain_html = response return render_template( 'bulk_engine_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def update_host_record_example_update_host_record_example_page(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) return render_template('update_host_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def update_text_record_update_text_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes text_record = g.user.get_api().get_entity_by_id( request.form["txt_list"]) # Set text record attributes text_record.set_name(form.name.data) text_record.set_property("txt", form.text.data) text_record.update() # Put form processing code here g.user.logger.info("Success - Text Record Modified - Object ID: " + str(text_record.get_id())) flash( "Success - Text Record Modified - Object ID: " + str(text_record.get_id()), "succeed", ) return redirect( url_for( "update_text_recordupdate_text_record_update_text_record_page" )) except Exception as e: flash(str(e)) # Log error and render workflow page g.user.logger.warning(f"EXCEPTION THROWN: {e}") form.txt_filter.data = "" form.name.data = "" form.text.data = "" return render_template( "update_text_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) else: g.user.logger.info("Form data was not valid.") form.txt_filter.data = "" form.name.data = "" form.text.data = "" return render_template( "update_text_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def add_dhcp_ip4_address_add_dhcp_ip4_address_page_form(): """ Processes the final form after the user has input all the required data. :return: """ form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form.get('view', '')) hostinfo = "%s.%s,%s,true,false" % (form.hostname.data, request.form.get( 'zone', ''), view.get_id()) properties = 'name=' + form.description.data # Assign DHCP reserved IP4 object ip4_object = configuration.assign_ip4_address( util.safe_str(request.form.get('ip4_address', '')), util.safe_str(form.mac_address.data), hostinfo, IPAssignmentActionValues.MAKE_DHCP_RESERVED, properties) # Put form processing code here g.user.logger.info( 'Success-DHCP Reserved IP4 Address ' + util.safe_str(request.form.get('ip4_address', '')) + ' Assigned with Object ID: ' + util.safe_str(ip4_object.get_id())) flash( 'Success - DHCP Reserved IP4 Address ' + util.safe_str(request.form.get('ip4_address', '')) + ' Assigned with Object ID: ' + util.safe_str(ip4_object.get_id()), 'succeed') return redirect( url_for( 'add_dhcp_ip4_addressadd_dhcp_ip4_address_add_dhcp_ip4_address_page' )) except APIException as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('add_dhcp_ip4_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('add_dhcp_ip4_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def bulk_engine_example_bulk_engine_example_page(): form = GenericFormTemplate() form.configuration.choices = util.get_configurations(default_val=True) return render_template( 'bulk_engine_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def delete_host_record_delete_host_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ # pylint: disable=broad-except form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id(form.configuration.data) view = configuration.get_view(request.form['view']) # Retrieve host record host_record = view.get_host_record(request.form['host_record'] + '.' + request.form['parent_zone']) # Retrieve host record attributes for flash message host_record_name = host_record.get_property('absoluteName') host_record_id = util.safe_str(host_record.get_id()) # Delete host record host_record.delete() # Put form processing code here g.user.logger.info('Success - Host (A) Record ' + host_record_name + ' Deleted with Object ID: ' + host_record_id) flash('Success - Host (A) Record ' + host_record_name + ' Deleted with Object ID: ' + host_record_id, 'succeed') # Perform Selective Deployment (RELATED Scope) on host record if checkbox is checked if form.deploy_now.data: entity_id_list = [host_record.get_id()] deploy_token = g.user.get_api().selective_deploy(entity_id_list) return render_template('delete_host_record_page.html', form=form, status_token=deploy_token, text=util.get_text(module_path(), config.language), options=g.user.get_options()) return redirect(url_for('delete_host_recorddelete_host_record_delete_host_record_page')) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('delete_host_record_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('delete_host_record_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def update_text_record_update_text_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ # pylint: disable=broad-except form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes text_record = g.user.get_api().get_entity_by_id( request.form['txt_list']) # Set text record attributes text_record.set_name(form.name.data) text_record.set_property('txt', form.text.data) text_record.update() # Put form processing code here g.user.logger.info('Success - Text Record Modified - Object ID: ' + util.safe_str(text_record.get_id())) flash( 'Success - Text Record Modified - Object ID: ' + util.safe_str(text_record.get_id()), 'succeed') return redirect( url_for( 'update_text_record_exampleupdate_text_record_update_text_record_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) form.txt_filter.data = '' form.name.data = '' form.text.data = '' return render_template('update_text_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') form.txt_filter.data = '' form.name.data = '' form.text.data = '' return render_template('update_text_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def delete_alias_record_delete_alias_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes and declare variables configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form["view"]) # Retrieve alias record alias_record = view.get_alias_record(request.form["alias_record"] + "." + request.form["zone"]) # Retrieve alias_record attributes for flash message alias_name = alias_record.get_name() alias_id = str(alias_record.get_id()) # Delete alias record alias_record.delete() # Put form processing code here g.user.logger.info("Success - Alias Record " + alias_name + " Deleted with Object ID: " + alias_id) flash( "Success - Alias Record " + alias_name + " Deleted with Object ID: " + alias_id, "succeed", ) return redirect( url_for( "delete_alias_recorddelete_alias_record_delete_alias_record_page" )) except Exception as e: flash(str(e)) g.user.logger.warning(f"EXCEPTION THROWN: {e}") return render_template( "delete_alias_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) else: g.user.logger.info("Form data was not valid.") return render_template( "delete_alias_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def add_static_ip4_address_example_add_static_ip4_address_example_page_form(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) selected_view = request.form.get('view', '') selected_hostname = request.form.get('hostname', '') hostinfo = '' if selected_view != '' and selected_hostname != '': view = configuration.get_view(selected_view) hostinfo = util.safe_str( selected_hostname) + '.' + util.safe_str( request.form.get('zone', '')) + ',' + util.safe_str( view.get_id()) + ',' + 'true' + ',' + 'false' properties = 'name=' + form.description.data # Assign ip4 object ip4_object = configuration.assign_ip4_address( request.form.get('ip4_address', ''), form.mac_address.data, hostinfo, 'MAKE_STATIC', properties) # Put form processing code here g.user.logger.info('Success - Static IP4 Address ' + ip4_object.get_property('address') + ' Added with Object ID: ' + util.safe_str(ip4_object.get_id())) flash( 'Success - Static IP4 Address ' + ip4_object.get_property('address') + ' Added with Object ID: ' + util.safe_str(ip4_object.get_id()), 'succeed') return redirect( url_for( 'add_static_ip4_address_exampleadd_static_ip4_address_example_add_static_ip4_address_example_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('add_static_ip4_address_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('add_static_ip4_address_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def update_alias_record_update_alias_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ # pylint: disable=broad-except form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations() if form.validate_on_submit(): try: # Retrieve form attributes and declare variables configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form['view']) # Retrieve alias record alias_record = view.get_alias_record(request.form['alias_record'] + '.' + request.form['zone']) # Update the alias record's name and linkedRecordName alias_record.set_name(form.alias_name.data) alias_record.set_property( 'linkedRecordName', request.form['linked_record'] + '.' + request.form['linked_record_zone']) alias_record.update() # Put form processing code here g.user.logger.info( 'Success - Alias Record Modified - Object ID: ' + util.safe_str(alias_record.get_id())) flash( 'Success - Alias Record Modified - Object ID: ' + util.safe_str(alias_record.get_id()), 'succeed') return redirect( url_for( 'update_alias_recordupdate_alias_record_update_alias_record_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('update_alias_record_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('update_alias_record_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def get_configs(cached=False): cache = False if cached: configs = read_cache("configurations.json", 120) if len(configs) != 0: cache = True if cache == False: configs = util.get_configurations(default_val=True) cache_it(configs, "configurations.json") return configs
def onload(): bam_name = common.get_bam_name() configurations = util.get_configurations() configuration_id = configurations[0][0] servers = common.get_server_list(configuration_id) return jsonify({ 'bam': bam_name, 'configurations': configurations, 'server': servers })
def delete_alias_record_delete_alias_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ # pylint: disable=broad-except form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes and declare variables configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form['view']) # Retrieve alias record alias_record = view.get_alias_record(request.form['alias_record'] + '.' + request.form['zone']) # Retrieve alias_record attributes for flash message alias_name = alias_record.get_name() alias_id = util.safe_str(alias_record.get_id()) # Delete alias record alias_record.delete() # Put form processing code here g.user.logger.info('Success - Alias Record ' + alias_name + ' Deleted with Object ID: ' + alias_id) flash( 'Success - Alias Record ' + alias_name + ' Deleted with Object ID: ' + alias_id, 'succeed') return redirect( url_for( 'delete_alias_recorddelete_alias_record_delete_alias_record_page' )) except Exception as e: flash(util.safe_str(e)) g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('delete_alias_record_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('delete_alias_record_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def add_next_available_dual_stack_host_add_next_available_dual_stack_host_page( ): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) return render_template( 'add_next_available_dual_stack_host_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def delete_ip4_address_delete_ip4_address_page_form(): """ Processes the final form after the user has input all the required data. :return: """ # pylint: disable=broad-except form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) # Retrieve IP4 Object ip4_object = configuration.get_ip4_address( util.safe_str(request.form.get('ip4_address', ''))) # Retrieve alias_record attributes for flash message ip4_address = util.safe_str(ip4_object.get_property('address')) ip4_id = util.safe_str(ip4_object.get_id()) # Delete IP4 Object ip4_object.delete() # Put form processing code here g.user.logger.info('Success - IP4 Object ' + ip4_address + ' Deleted with Object ID: ' + ip4_id) flash( 'Success - IP4 Object ' + ip4_address + ' Deleted with Object ID: ' + ip4_id, 'succeed') return redirect( url_for( 'delete_ip4_addressdelete_ip4_address_delete_ip4_address_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('delete_ip4_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('delete_ip4_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def add_alias_record_add_alias_record_page(): """ Renders the form the user would first see when selecting the workflow. :return: """ form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) return render_template('add_alias_record_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def add_host_record_example_add_host_record_example_page_form(): """ Processes the final form after the user has input all the required data. :return: """ # pylint: disable=broad-except form = GenericFormTemplate() form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): ip4_address_list = [] try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id(form.configuration.data) view = configuration.get_view(request.form['view']) absolute_name = form.hostname.data + '.' + request.form['zone'] ip4_address = request.form['ip4_address'] ip4_address_list.append(ip4_address) # Add host Record host_record = view.add_host_record(absolute_name, ip4_address_list) # Put form processing code here g.user.logger.info('Success - Host (A) Record ' + host_record.get_property('absoluteName') + ' added with Object ID: ' + util.safe_str(host_record.get_id())) flash('Success - Host (A) Record ' + host_record.get_property('absoluteName') + ' added with Object ID: ' + util.safe_str(host_record.get_id()), 'succeed') # Perform Selective Deployment (RELATED Scope) on host record if checkbox is checked if form.deploy_now.data: entity_id_list = [host_record.get_id()] deploy_token = g.user.get_api().selective_deploy(entity_id_list) return render_template('add_host_record_example_page.html', form=form, status_token=deploy_token, text=util.get_text(module_path(), config.language), options=g.user.get_options()) return redirect(url_for('add_host_record_exampleadd_host_record_example_add_host_record_example_page')) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('add_host_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('add_host_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def delete_host_record_example_delete_host_record_example_page_form(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form['view']) # Retrieve host record host_record = view.get_host_record(request.form['host_record'] + '.' + request.form['parent_zone']) # Retrieve host record attributes for flash message host_record_name = host_record.get_property('absoluteName') host_record_id = util.safe_str(host_record.get_id()) # Delete host record host_record.delete() # Put form processing code here g.user.logger.info('Success - Host (A) Record ' + host_record_name + ' Deleted with Object ID: ' + host_record_id) flash( 'Success - Host (A) Record ' + host_record_name + ' Deleted with Object ID: ' + host_record_id, 'succeed') return redirect( url_for( 'delete_host_record_exampledelete_host_record_example_delete_host_record_example_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('delete_host_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('delete_host_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def add_text_record_add_text_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ # pylint: disable=broad-except form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve configuration, view, and absolute name configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form['view']) absolute_name = form.name.data + '.' + request.form.get('zone', '') # Attempt to add the text record text_record = view.add_text_record(absolute_name, form.text.data) g.user.logger.info('Success-Text Record ' + text_record.get_property('absoluteName') + ' Added with Object ID: ' + util.safe_str(text_record.get_id())) flash( 'Success - Text Record ' + text_record.get_property('absoluteName') + ' Added with Object ID: ' + util.safe_str(text_record.get_id()), 'succeed') return redirect( url_for( 'add_text_record_exampleadd_text_record_add_text_record_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('add_text_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('add_text_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def update_ip4_address_update_ip4_address_page_form(): """ Processes the final form after the user has input all the required data. :return: """ form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) # Retrieve the IP4 address object ip4_address = configuration.get_ip4_address( request.form.get('ip4_address', '')) # Update the form name and mac address properties ip4_address.set_name(form.description.data) ip4_address.set_property('macAddress', form.mac_address.data) ip4_address.update() # Put form processing code here g.user.logger.info('Success - IP4 Address Modified - Object ID: ' + util.safe_str(ip4_address.get_id())) flash( 'Success - IP4 Address Modified - Object ID: ' + util.safe_str(ip4_address.get_id()), 'succeed') return redirect( url_for( 'update_ip4_addressupdate_ip4_address_update_ip4_address_page' )) except APIException as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('update_ip4_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('update_ip4_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def create_server_vro_create_server_vro_page_form(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(form.view.data) network = form.ip4_network.data.split('/') network = configuration.get_ip_range_by_ip('IP4Network', network[0]) props = {'excludeDHCPRange': 'True'} hostinfo = util.safe_str(form.hostname.data) + '.' + util.safe_str( form.zone.data) + ',' + util.safe_str( view.get_id()) + ',' + 'True' + ',' + 'False' assigned_ip = network.assign_next_available_ip4_address( form.mac_address.data, hostinfo, 'MAKE_DHCP_RESERVED', properties=props) absoluteName = form.hostname.data + '.' + form.zone.data g.user.logger.info( 'Success - Host (A) Record ' + absoluteName + ' IP Address: ' + util.safe_str(assigned_ip.get_property('address')) + ' State: ' + util.safe_str(assigned_ip.get_property('state')) + ' Mac Address: ' + util.safe_str(assigned_ip.get_property('macAddress'))) flash( 'Success - Host (A) Record ' + absoluteName + ' IP Address: ' + util.safe_str(assigned_ip.get_property('address')) + ' State: ' + util.safe_str(assigned_ip.get_property('state')) + ' Mac Address: ' + util.safe_str(assigned_ip.get_property('macAddress')), 'succeed') return redirect( url_for( 'create_server_vrocreate_server_vro_create_server_vro_page')) else: g.user.logger.info('Form data was not valid.') return render_template( 'create_server_vro_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def cisco_aci_example_cisco_aci_example_page(): """ Renders the form the user would first see when selecting the workflow. :return: """ if get_api().get_version() < '9.1.0': message = 'Warning! Current BAM version {version} is less than 9.1.0 and Cisco ACI Import will not work!' flash(message.format(version=get_api().get_version())) form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) return render_template( 'cisco_aci_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def add_host_record_example_add_host_record_example_page_form(): form = GenericFormTemplate() form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): ip4_address_list = [] try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id(form.configuration.data) view = configuration.get_view(request.form['view']) absolute_name = form.hostname.data + '.' + request.form['zone'] ip4_address = request.form['ip4_address'] ip4_address_list.append(ip4_address) # Add host Record host_record = view.add_host_record(absolute_name, ip4_address_list) # Put form processing code here g.user.logger.info('Success - Host (A) Record ' + host_record.get_property('absoluteName') + ' added with Object ID: ' + util.safe_str(host_record.get_id())) flash('Success - Host (A) Record ' + host_record.get_property('absoluteName') + ' added with Object ID: ' + util.safe_str(host_record.get_id()), 'succeed') return redirect(url_for('add_host_record_exampleadd_host_record_example_add_host_record_example_page')) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('add_host_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('add_host_record_example_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def update_host_record_example_update_host_record_example_page_form(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) ip4_address = [] if form.validate_on_submit(): try: # Retrieve form attributes and declare variables configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form['view']) # Retrieve ip4 addresses removing spaces and put into list ip4_addresses = form.ip4_address.data.replace(' ', '') ip4_addresses = ip4_addresses.split(',') # Retrieve host record host_record = view.get_host_record(request.form['host_record'] + '.' + request.form['parent_zone']) # Retrieve original IP4 Addresses original_ip4 = host_record.get_property('addresses') for ip in ip4_addresses: if util.safe_str(configuration.get_ip4_address( ip).get_type()) == 'None' or ip in original_ip4: ip4_address.append(ip) else: g.user.logger.info('Form data was not valid.') flash('Host record update failed: ' + ip + ' has already been assigned') return render_template( 'update_host_record_example_page.html', form=form, view=request.form.get('view', ''), host_record=request.form.get('host_record', ''), name=form.name.data, ip4_address=form.ip4_address.data, text=util.get_text(module_path(), config.language), options=g.user.get_options()) ip4_address = ','.join(ip4_address) # Update host record's attributes host_record.set_name(form.name.data) host_record.set_property('addresses', ip4_address) # host_record.set_addresses(ip4_addresses) host_record.update() # Put form processing code here g.user.logger.info('Success - Host Record Modified - Object ID: ' + util.safe_str(host_record.get_id())) flash( 'Success - Host Record Modified - Object ID: ' + util.safe_str(host_record.get_id()), 'succeed') return redirect( url_for( 'update_host_record_exampleupdate_host_record_example_update_host_record_example_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('update_host_record_example_page.html', form=form, view=request.form.get('view', ''), host_record=request.form.get( 'host_record', ''), name=form.name.data, ip4_address=form.ip4_address.data, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template('update_host_record_example_page.html', form=form, view=request.form.get('view', ''), host_record=request.form.get('host_record', ''), name=form.name.data, ip4_address=form.ip4_address.data, text=util.get_text(module_path(), config.language), options=g.user.get_options())
def add_static_ip4_address_add_static_ip4_address_page_form(): """ Processes the final form after the user has input all the required data. :return: """ form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) selected_view = request.form.get("view", "") selected_hostname = request.form.get("hostname", "") hostinfo = "" if selected_view != "" and selected_hostname != "": view = configuration.get_view(selected_view) hostinfo = (selected_hostname + "." + str(request.form.get("zone", "")) + "," + str(view.get_id()) + "," + "true" + "," + "false") properties = "name=" + form.description.data # Assign ip4 object ip4_object = configuration.assign_ip4_address( request.form.get("ip4_address", ""), form.mac_address.data, hostinfo, "MAKE_STATIC", properties, ) # Put form processing code here g.user.logger.info("Success - Static IP4 Address " + ip4_object.get_property("address") + " Added with Object ID: " + str(ip4_object.get_id())) flash( "Success - Static IP4 Address " + ip4_object.get_property("address") + " Added with Object ID: " + str(ip4_object.get_id()), "succeed", ) page = "add_static_ip4_addressadd_static_ip4_address_add_static_ip4_address_page" return redirect(url_for(page)) except Exception as e: flash(str(e)) # Log error and render workflow page g.user.logger.warning(f"EXCEPTION THROWN: {e}") return render_template( "add_static_ip4_address_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) else: g.user.logger.info("Form data was not valid.") return render_template( "add_static_ip4_address_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def add_host_record_add_host_record_page_form(): """ Processes the final form after the user has input all the required data. :return: """ form = GenericFormTemplate() form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): ip4_address_list = [] try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form["view"]) absolute_name = form.hostname.data + "." + request.form["zone"] ip4_address = request.form["ip4_address"] ip4_address_list.append(ip4_address) # Add host Record host_record = view.add_host_record(absolute_name, ip4_address_list) # Put form processing code here g.user.logger.info("Success - Host (A) Record " + host_record.get_property("absoluteName") + " added with Object ID: " + str(host_record.get_id())) flash( "Success - Host (A) Record " + host_record.get_property("absoluteName") + " added with Object ID: " + str(host_record.get_id()), "succeed", ) # Perform Selective Deployment (RELATED Scope) on host record if checkbox is checked if form.deploy_now.data: entity_id_list = [host_record.get_id()] deploy_token = g.user.get_api().selective_deploy( entity_id_list) return render_template( "add_host_record_page.html", form=form, status_token=deploy_token, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) return redirect( url_for("add_host_recordadd_host_record_add_host_record_page")) except Exception as e: flash(str(e)) # Log error and render workflow page g.user.logger.warning(f"EXCEPTION THROWN: {e}") return render_template( "add_host_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) else: g.user.logger.info("Form data was not valid.") return render_template( "add_host_record_page.html", form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def add_dual_stack_host_add_dual_stack_host_page_form(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) address_list = [] if form.validate_on_submit(): try: # Retrieve form attributes configuration = g.user.get_api().get_entity_by_id( form.configuration.data) view = configuration.get_view(request.form['view']) absolute_name = form.hostname.data + '.' + request.form['zone'] ip4_address = request.form['ip_address'] ip6_address = request.form['ip6_address'] # Add IP4 and IP6 addresses to address list address_list.append(ip4_address) address_list.append(ip6_address) add_device = request.form.get( 'add_device' ) # Must use 'get' otherwise returns a 400 error on False # Add Host Record host_record = view.add_host_record(absolute_name, address_list) # Optionally Add Device if add_device: device_id = g.user.get_api()._api_client.service.addDevice( configurationId=form.configuration.data, deviceSubtypeId='0', deviceTypeId='0', ip4Addresses=ip4_address, ip6Addresses=ip6_address, name=form.hostname.data) device_name = g.user.get_api().get_entity_by_id( device_id).get_name() g.user.logger.info('Success - Device ' + device_name + ' added with Object ID: ' + util.safe_str(device_id)) flash( 'Success - Device ' + device_name + ' added with Object ID: ' + util.safe_str(device_id), 'succeed') # Put form processing code here g.user.logger.info('Success - Host (A & AAAA) Record ' + host_record.get_property('absoluteName') + ' added with Object ID: ' + util.safe_str(host_record.get_id())) flash( 'Success - Host (A & AAAA) Record ' + host_record.get_property('absoluteName') + ' added with Object ID: ' + util.safe_str(host_record.get_id()), 'succeed') return redirect( url_for( 'add_dual_stack_hostadd_dual_stack_host_add_dual_stack_host_page' )) except Exception as e: flash(util.safe_str(e)) # Log error and render workflow page g.user.logger.warning('%s' % util.safe_str(e), msg_type=g.user.logger.EXCEPTION) return render_template('add_dual_stack_host_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options()) else: g.user.logger.info('Form data was not valid.') return render_template( 'add_dual_stack_host_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )
def add_mac_address_add_mac_address_page_form(): form = GenericFormTemplate() # Remove this line if your workflow does not need to select a configuration form.configuration.choices = util.get_configurations(default_val=True) if form.validate_on_submit(): # Retrieve configuration and view try: configuration = g.user.get_api().get_entity_by_id( form.configuration.data) except PortalException as e: g.user.logger.warning('%s' % e, msg_type=g.user.logger.EXCEPTION) flash('Configuration %s undefined in BAM' % form.configuration.data) return render_template( 'add_mac_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) # Check if mac address pool has been specified if form.mac_pool_boolean.data: try: mac_pool = g.user.get_api( )._api_client.service.getEntityByName(configuration.get_id(), form.mac_pool.data, 'MACPool') except Exception as e: g.user.logger.error('%s' % e, msg_type=g.user.logger.EXCEPTION) flash('Unable to retrieve MAC Pool: %s with error: %s' % (form.mac_pool.data, util.safe_str(e))) return render_template( 'add_mac_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) # Instantiate mac pool object to a Gateway object mac_pool = g.user.get_api().instantiate_entity(mac_pool) else: mac_pool = '' # Add MAC address try: mac_address = configuration.add_mac_address( form.mac_address.data, form.mac_address_name.data, mac_pool) except BAMException as e: g.user.logger.error('%s' % e, msg_type=g.user.logger.EXCEPTION) if 'Duplicate of another item' in util.safe_str(e): flash( 'MAC Address %s is a duplicate of an existing MAC in Address Manager' % form.mac_address.data) else: flash('Unable to add MAC Address with error: %s' % util.safe_str(e)) return render_template( 'add_mac_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), ) # Display success message if form.mac_pool_boolean.data: flash( 'MAC Address: %s has been successfully added with object ID: %s and to MAC Pool: %s' % (form.mac_address.data, mac_address.get_id(), form.mac_pool.data), 'succeed') else: flash( 'MAC Address: %s has been successfully added to BAM with object ID: %s' % (form.mac_address.data, mac_address.get_id()), 'succeed') return redirect( url_for('add_mac_addressadd_mac_address_add_mac_address_page')) else: g.user.logger.info('Form data was not valid.') return render_template( 'add_mac_address_page.html', form=form, text=util.get_text(module_path(), config.language), options=g.user.get_options(), )