Exemple #1
0
def system_show(request, id):
    system = get_object_or_404(models.System, pk=id)
    if system.notes:
        system.notes = system.notes.replace("\n", "<br />")
    show_nics_in_key_value = False
    is_release = False
    try:
        request = factory.get(
            '/api/v2/keyvalue/3/',
            {'key_type': 'adapters_by_system', 'system': system.hostname}
        )
        h = KeyValueHandler()
        adapters = h.read(request, key_value_id='3')
    except:
        adapters = []
    if system.allocation is 'release':
        is_release = True
    if (system.serial and
            system.server_model and
            system.server_model.part_number and
            system.server_model.vendor == "HP"):

        system.warranty_link = "http://www11.itrc.hp.com/service/ewarranty/warrantyResults.do?productNumber=%s&serialNumber1=%s&country=US" % (system.server_model.part_number, system.serial)  # noqa
    if show_nics_in_key_value:
        key_values = system.keyvalue_set.all()
    else:
        key_values = system.keyvalue_set.exclude(key__istartswith='nic.')

    sregs = StaticReg.objects.filter(system=system)
    groups = Group.objects.all()
    sreg_form = StaticRegAutoForm(prefix='sreg', initial={
        'system': system,
        'fqdn': system.hostname
    })
    blank_hw_form = HWAdapterForm(prefix='add-hw')  # noqa Used for ui dialog for creation
    HWAdapterFormset = formset_factory(HWAdapterForm)
    hw_formset = HWAdapterFormset(prefix='hwadapters')

    object_search_str = "(/^{0}$".format(system)
    for sreg in filter(lambda sreg: not sreg.decommissioned, sregs):
        object_search_str += " OR /^{0}$".format(sreg.fqdn)
        object_search_str += " OR /^{0}$".format(sreg.ip_str)
    object_search_str += " ) AND !type=:sreg AND !type=:sys"

    return render(request, 'systems/system_show.html', {
        'system': system,
        'object_search_str': object_search_str,
        'sregs': sregs,
        'sreg_form': sreg_form,
        'hw_formset': hw_formset,
        'blank_hw_form': blank_hw_form,
        'groups': groups,
        'ip_to_range': ip_to_range,
        'adapters': adapters,
        'key_values': key_values,
        'is_release': is_release,
        'extra_externaldata': system.externaldata_set.filter(policy=P_EXTRA),
        'external_config': external_config,
        'read_only': getattr(request, 'read_only', False),
    })
Exemple #2
0
    def __init__(self, rack_name):
        self.systems = []
        self.rack_name = rack_name
        self.kv = Truth.objects.select_related('truth_key_value').get(name=self.rack_name)
        self.system_list = KeyValue.objects.select_related('system').filter(value__contains="truth:%s" % (self.rack_name))
        self.ethernet_patch_panel_24 = self._get_ethernet_patch_panels(self.kv, 'ethernet', 24)
        self.ethernet_patch_panel_48 = self._get_ethernet_patch_panels(self.kv, 'ethernet', 48)
        import pdb
        h = KeyValueHandler()
        for s in self.system_list:
            request = factory.get('/api/v2/keyvalue/?keystore=%s' % (s.system.hostname), follow=True)
            tree = h.read(request)
            system_ru = self._get_system_ru(tree)
            system_image = self._get_system_image(tree)
            system_slot = self._get_system_slot(tree)
            self.systems.append({
                "system_name":s.system.hostname,
                "system_id":s.system.id,
                "system_ru":system_ru,
                "system_image":system_image,
                'system_slot':system_slot,
                'operating_system':str(s.system.operating_system), 
                'server_model': str(s.system.server_model),
                'oob_ip': str(s.system.oob_ip),
                })
            self.systems = sorted(self.systems, key=lambda k: k['system_slot']) 
        try:
            self.ru = self.kv.keyvalue_set.get(key='rack_ru').value
        except:
            self.ru = 42

        try:
            self.width = self.kv.keyvalue_set.get(key='rack_width').value
        except:
            self.width = 30
Exemple #3
0
    def read(self, request, dhcp_scope=None, dhcp_action=None):
        if dhcp_scope and dhcp_action == 'get_scopes':
            tasks = []
            for task in ScheduledTask.objects.get_all_dhcp():
                tasks.append(task.task)
            #ScheduledTask.objects.delete_all_dhcp()
            return tasks
        if dhcp_scope and dhcp_action == 'get_scopes_with_names':
            truths = Truth.objects.select_related().filter(keyvalue__key='is_dhcp_scope',keyvalue__value='True').order_by('name')

            truth_list = []
            for t in truths:
                truth_list.append({'name':t.name.strip(),'description':t.description.strip()})
            return truth_list
        if dhcp_scope and dhcp_action == 'view_hosts':
            scope_options = []
            h = KeyValueHandler()
            request = factory.get('/api/v2/keyvalue/?key_type=system_by_scope&scope=%s' %
                    dhcp_scope, follow=True)
            hosts = h.read(request)
            adapter_list = []
            for host in hosts:
                if 'hostname' in host:
                    the_url = '/api/v2/keyvalue/?key_type=adapters_by_system_and_scope&dhcp_scope=%s&system=%s' % (dhcp_scope, host['hostname'])
                    try:
                        request = factory.get('/api/v2/keyvalue/?key_type=adapters_by_system_and_scope&dhcp_scope=%s&system=%s'
                                                % (dhcp_scope, host['hostname']))
                        adapter_list.append(h.read(request))
                    except:
                        pass
            d = DHCPInterface(scope_options, adapter_list)
            return d.get_hosts()
Exemple #4
0
def get_expanded_key_value_store(request, system_id):
    try:
        system = models.System.objects.get(id=system_id)
        request = factory.get('/api/v2/keyvalue/3/',
                {'key_type':'adapters_by_system','system':system.hostname})
        h = KeyValueHandler()
        request = factory.get('/api/keyvalue/?keystore=%s' % (system.hostname), follow=True)
        resp = json.dumps(h.read(request, key_value_id='3'))
        return_obj = resp.replace(",",",<br />")
    except:
        return_obj = 'This failed'
    return HttpResponse(return_obj)
def showall(request):
    dhcp_scopes = models.DHCP.objects.all()
    h = KeyValueHandler()
    request = factory.get('/en-US/api/keyvalue/?key=is_dhcp_scope', follow=True)
    obj = h.read(request)
    dhcp_scopes = []
    for key in obj.iterkeys():
        dhcp_scopes.append(key.split(":")[1])

    return jinja_render_to_response('dhcp/index.html', {
            'dhcp_scopes': dhcp_scopes,
           })
def showall(request):
    dhcp_scopes = models.DHCP.objects.all()
    h = KeyValueHandler()
    request = factory.get('/en-US/api/keyvalue/?key=is_dhcp_scope',
                          follow=True)
    obj = h.read(request)
    dhcp_scopes = []
    for key in obj.iterkeys():
        dhcp_scopes.append(key.split(":")[1])

    return jinja_render_to_response('dhcp/index.html', {
        'dhcp_scopes': dhcp_scopes,
    })
def get_expanded_key_value_store(request, system_id):
    try:
        system = models.System.objects.get(id=system_id)
        request = factory.get('/api/v2/keyvalue/3/', {
            'key_type': 'adapters_by_system',
            'system': system.hostname
        })
        h = KeyValueHandler()
        request = factory.get('/api/keyvalue/?keystore=%s' % (system.hostname),
                              follow=True)
        resp = json.dumps(h.read(request, key_value_id='3'))
        return_obj = resp.replace(",", ",<br />")
    except:
        return_obj = 'This failed'
    return HttpResponse(return_obj)
def system_show(request, id):
    system = get_object_or_404(models.System, pk=id)
    if system.notes:
        system.notes = system.notes.replace("\n", "<br />")
    show_nics_in_key_value = False
    is_release = False
    try:
        request = factory.get('/api/v2/keyvalue/3/',
                {'key_type':'adapters_by_system','system':system.hostname})
        h = KeyValueHandler()
        adapters = h.read(request, key_value_id='3')
    except:
        adapters = []
    if system.allocation is 'release':
        is_release = True
    if (system.serial and
            system.server_model and
            system.server_model.part_number and
            system.server_model.vendor == "HP"):

        system.warranty_link = "http://www11.itrc.hp.com/service/ewarranty/warrantyResults.do?productNumber=%s&serialNumber1=%s&country=US" % (system.server_model.part_number, system.serial)
    if show_nics_in_key_value:
        key_values = system.keyvalue_set.all()
    else:
        key_values = system.keyvalue_set.exclude(key__istartswith='nic.')

    intrs = StaticInterface.objects.filter(system = system)

    return render_to_response('systems/system_show.html', {
            'system': system,
            'interfaces': intrs,
            'adapters': adapters,
            'key_values': key_values,
            'is_release': is_release,
            'read_only': getattr(request, 'read_only', False),
           },
           RequestContext(request))
def system_show(request, id):
    system = get_object_or_404(models.System, pk=id)
    if system.notes:
        system.notes = system.notes.replace("\n", "<br />")
    show_nics_in_key_value = False
    is_release = False
    try:
        request = factory.get('/api/v2/keyvalue/3/', {
            'key_type': 'adapters_by_system',
            'system': system.hostname
        })
        h = KeyValueHandler()
        adapters = h.read(request, key_value_id='3')
    except:
        adapters = []
    if system.allocation is 'release':
        is_release = True
    if (system.serial and system.server_model
            and system.server_model.part_number
            and system.server_model.vendor == "HP"):

        system.warranty_link = "http://www11.itrc.hp.com/service/ewarranty/warrantyResults.do?productNumber=%s&serialNumber1=%s&country=US" % (
            system.server_model.part_number, system.serial)  # noqa
    if show_nics_in_key_value:
        key_values = system.keyvalue_set.all()
    else:
        key_values = system.keyvalue_set.exclude(key__istartswith='nic.')

    sregs = StaticReg.objects.filter(system=system)
    groups = Group.objects.all()
    sreg_form = StaticRegAutoForm(prefix='sreg',
                                  initial={
                                      'system': system,
                                      'fqdn': system.hostname
                                  })
    blank_hw_form = HWAdapterForm(
        prefix='add-hw')  # noqa Used for ui dialog for creation
    HWAdapterFormset = formset_factory(HWAdapterForm)
    hw_formset = HWAdapterFormset(prefix='hwadapters')

    object_search_str = "(/^{0}$".format(system)
    for sreg in filter(lambda sreg: not sreg.decommissioned, sregs):
        object_search_str += " OR /^{0}$".format(sreg.fqdn)
        object_search_str += " OR /^{0}$".format(sreg.ip_str)
    object_search_str += " ) AND !type=:sreg AND !type=:sys"

    return render(
        request, 'systems/system_show.html', {
            'system': system,
            'object_search_str': object_search_str,
            'sregs': sregs,
            'sreg_form': sreg_form,
            'hw_formset': hw_formset,
            'blank_hw_form': blank_hw_form,
            'groups': groups,
            'ip_to_range': ip_to_range,
            'adapters': adapters,
            'key_values': key_values,
            'is_release': is_release,
            'extra_externaldata':
            system.externaldata_set.filter(policy=P_EXTRA),
            'external_config': external_config,
            'read_only': getattr(request, 'read_only', False),
        })
def edit(request, dhcp_scope):
    h = KeyValueHandler()
    trequest = factory.get('/api/keyvalue/?keystore=%s' % dhcp_scope, follow=True)
    instance = h.read(trequest)
    initial = {}
    initial['scope_name'] = dhcp_scope
    ##A bunch of try/catch blocks to create key/value pairs if one does not exist
    try:
        initial['scope_start'] = instance['dhcp.scope.start']
    except:
        trequest = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.scope.start', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['scope_start'] = ''
    try:
        initial['scope_end'] = instance['dhcp.scope.end']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.scope.end', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['scope_end'] = ''
    try:
        initial['scope_netmask'] = instance['dhcp.scope.netmask']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.scope.netmask', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['scope_netmask'] = ''
    try:
        initial['pool_start'] = instance['dhcp.pool.start']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.start', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['pool_start'] = ''
    try:
        initial['pool_end'] = instance['dhcp.pool.end']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.end', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['pool_end'] = ''
    try:
        initial['ntp_server1'] = instance['dhcp.option.ntp_server.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.ntp_server.0', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['ntp_server1'] = ''
    try:
        initial['ntp_server2'] = instance['dhcp.option.ntp_server.1']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.ntp_server.1', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['ntp_server2'] = ''
    try:
        initial['router'] = instance['dhcp.option.router.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.router.0', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['router'] = ''
    try:
        initial['domain_name'] = instance['dhcp.option.domain_name.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.option.domain_name.0', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['domain_name'] = ''
    try:
        initial['dns_server1'] = instance['dhcp.dns_server.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.dns_server.0', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['dns_server1'] = ''
    try:
        initial['dns_server2'] = instance['dhcp.dns_server.1']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.dns_server.1', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['dns_server2'] = ''
    try:
        initial['allow_booting'] = instance['dhcp.pool.allow_booting.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.allow_booting.0', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['allow_booting'] = ''
    try:
        initial['allow_bootp'] = instance['dhcp.pool.allow_bootp.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {'key':'dhcp.pool.allow_bootp.0', 'value':'', 'truth_name':dhcp_scope}, follow=True)
        h.create(trequest)
        initial['allow_bootp'] = ''

    if request.method == 'POST':
        form = forms.EditDHCPScopeForm(request.POST)
        if form.is_valid():
            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.scope.start', 'value':form.cleaned_data['scope_start']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.scope.end', 'value':form.cleaned_data['scope_end']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.scope.netmask', 'value':form.cleaned_data['scope_netmask']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.start', 'value':form.cleaned_data['pool_start']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.end', 'value':form.cleaned_data['pool_end']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.ntp_server.0', 'value':form.cleaned_data['ntp_server1']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.ntp_server.1', 'value':form.cleaned_data['ntp_server2']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.dns_server.0', 'value':form.cleaned_data['dns_server1']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.dns_server.1', 'value':form.cleaned_data['dns_server2']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.domain_name.0', 'value':form.cleaned_data['domain_name']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.option.router.0', 'value':form.cleaned_data['router']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.allow_booting.0', 'value':form.cleaned_data['allow_booting']}, follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {'truth_id': dhcp_scope, 'key':'dhcp.pool.allow_bootp.0', 'value':form.cleaned_data['allow_bootp']}, follow=True)
            h.update(trequest, dhcp_scope)

    else:
        form = forms.EditDHCPScopeForm(initial=initial)

    return jinja_render_to_response('dhcp/edit.html', {
            "form": form,
            'dhcp_scope': dhcp_scope
           })
def edit(request, dhcp_scope):
    h = KeyValueHandler()
    trequest = factory.get('/api/keyvalue/?keystore=%s' % dhcp_scope,
                           follow=True)
    instance = h.read(trequest)
    initial = {}
    initial['scope_name'] = dhcp_scope
    ##A bunch of try/catch blocks to create key/value pairs if one does not exist
    try:
        initial['scope_start'] = instance['dhcp.scope.start']
    except:
        trequest = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.scope.start',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['scope_start'] = ''
    try:
        initial['scope_end'] = instance['dhcp.scope.end']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.scope.end',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['scope_end'] = ''
    try:
        initial['scope_netmask'] = instance['dhcp.scope.netmask']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.scope.netmask',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['scope_netmask'] = ''
    try:
        initial['pool_start'] = instance['dhcp.pool.start']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.pool.start',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['pool_start'] = ''
    try:
        initial['pool_end'] = instance['dhcp.pool.end']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.pool.end',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['pool_end'] = ''
    try:
        initial['ntp_server1'] = instance['dhcp.option.ntp_server.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.option.ntp_server.0',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['ntp_server1'] = ''
    try:
        initial['ntp_server2'] = instance['dhcp.option.ntp_server.1']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.option.ntp_server.1',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['ntp_server2'] = ''
    try:
        initial['router'] = instance['dhcp.option.router.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.option.router.0',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['router'] = ''
    try:
        initial['domain_name'] = instance['dhcp.option.domain_name.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.option.domain_name.0',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['domain_name'] = ''
    try:
        initial['dns_server1'] = instance['dhcp.dns_server.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.dns_server.0',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['dns_server1'] = ''
    try:
        initial['dns_server2'] = instance['dhcp.dns_server.1']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.dns_server.1',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['dns_server2'] = ''
    try:
        initial['allow_booting'] = instance['dhcp.pool.allow_booting.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.pool.allow_booting.0',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['allow_booting'] = ''
    try:
        initial['allow_bootp'] = instance['dhcp.pool.allow_bootp.0']
    except:
        treqeust = factory.post('/en-US/api/keyvalue/%s/' % dhcp_scope, {
            'key': 'dhcp.pool.allow_bootp.0',
            'value': '',
            'truth_name': dhcp_scope
        },
                                follow=True)
        h.create(trequest)
        initial['allow_bootp'] = ''

    if request.method == 'POST':
        form = forms.EditDHCPScopeForm(request.POST)
        if form.is_valid():
            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.scope.start',
                    'value': form.cleaned_data['scope_start']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope,
                                    {
                                        'truth_id': dhcp_scope,
                                        'key': 'dhcp.scope.end',
                                        'value': form.cleaned_data['scope_end']
                                    },
                                    follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.scope.netmask',
                    'value': form.cleaned_data['scope_netmask']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.pool.start',
                    'value': form.cleaned_data['pool_start']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope,
                                    {
                                        'truth_id': dhcp_scope,
                                        'key': 'dhcp.pool.end',
                                        'value': form.cleaned_data['pool_end']
                                    },
                                    follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.option.ntp_server.0',
                    'value': form.cleaned_data['ntp_server1']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.option.ntp_server.1',
                    'value': form.cleaned_data['ntp_server2']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.dns_server.0',
                    'value': form.cleaned_data['dns_server1']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.dns_server.1',
                    'value': form.cleaned_data['dns_server2']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.option.domain_name.0',
                    'value': form.cleaned_data['domain_name']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post('/en-US/api/v2/keyvalue/%s/' % dhcp_scope,
                                    {
                                        'truth_id': dhcp_scope,
                                        'key': 'dhcp.option.router.0',
                                        'value': form.cleaned_data['router']
                                    },
                                    follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.pool.allow_booting.0',
                    'value': form.cleaned_data['allow_booting']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

            trequest = factory.post(
                '/en-US/api/v2/keyvalue/%s/' % dhcp_scope, {
                    'truth_id': dhcp_scope,
                    'key': 'dhcp.pool.allow_bootp.0',
                    'value': form.cleaned_data['allow_bootp']
                },
                follow=True)
            h.update(trequest, dhcp_scope)

    else:
        form = forms.EditDHCPScopeForm(initial=initial)

    return jinja_render_to_response('dhcp/edit.html', {
        "form": form,
        'dhcp_scope': dhcp_scope
    })