Rename ServicePort.type to ServicePort.protocol

This commit is contained in:
Iva Kaneva 2016-10-01 21:15:05 +03:00
parent 2a3c096af3
commit 4bf59c982e
9 changed files with 24 additions and 23 deletions

View File

@ -1273,7 +1273,7 @@ class ServicePortForm(forms.ModelForm, BootstrapMixin):
class Meta: class Meta:
model = ServicePort model = ServicePort
fields = ['ip_address', 'type', 'port', 'name', 'description'] fields = ['ip_address', 'protocol', 'port', 'name', 'description']
help_texts = { help_texts = {
'port': '0-65535', 'port': '0-65535',
'name': 'Service running on this port', 'name': 'Service running on this port',
@ -1287,6 +1287,7 @@ class ServicePortForm(forms.ModelForm, BootstrapMixin):
super(ServicePortForm, self).__init__(*args, **kwargs) super(ServicePortForm, self).__init__(*args, **kwargs)
self.fields['ip_address'].queryset = IPAddress.objects.filter(interface__device=device) self.fields['ip_address'].queryset = IPAddress.objects.filter(interface__device=device)
# #
# Modules # Modules
# #

View File

@ -181,18 +181,18 @@ class ServicePortSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = ServicePort model = ServicePort
fields = ['id', 'ip_address', 'port', 'type', 'name', 'description'] fields = ['id', 'ip_address', 'port', 'protocol', 'name', 'description']
class ServicePortNestedSerializer(ServicePortSerializer): class ServicePortNestedSerializer(ServicePortSerializer):
ip_address = IPAddressNestedSerializer() ip_address = IPAddressNestedSerializer()
class Meta(ServicePortSerializer.Meta): class Meta(ServicePortSerializer.Meta):
fields = ['id', 'ip_address', 'port', 'type'] fields = ['id', 'ip_address', 'port', 'protocol']
class ServicePortDetailSerializer(ServicePortSerializer): class ServicePortDetailSerializer(ServicePortSerializer):
ip_address = IPAddressNestedSerializer() ip_address = IPAddressNestedSerializer()
class Meta(ServicePortSerializer.Meta): class Meta(ServicePortSerializer.Meta):
fields = ['id', 'ip_address', 'port', 'type', 'name', 'description'] fields = ['id', 'ip_address', 'port', 'protocol', 'name', 'description']

View File

@ -136,14 +136,14 @@ class IPAddressDetailView(CustomFieldModelAPIView, generics.RetrieveAPIView):
# #
# IP addresses # Service Port
# #
class ServicePortListView(generics.ListAPIView): class ServicePortListView(generics.ListAPIView):
""" """
List IP addresses (filterable) List IP addresses (filterable)
""" """
queryset = ServicePort.objects.select_related('ip_address', 'port', 'type', 'name', 'description') queryset = ServicePort.objects.select_related('ip_address', 'port', 'protocol', 'name', 'description')
serializer_class = serializers.ServicePortSerializer serializer_class = serializers.ServicePortSerializer
@ -151,7 +151,7 @@ class ServicePortDetailView(generics.RetrieveAPIView):
""" """
Retrieve a single IP address Retrieve a single IP address
""" """
queryset = ServicePort.objects.select_related('ip_address', 'port', 'type', 'name', 'description') queryset = ServicePort.objects.select_related('ip_address', 'port', 'protocol', 'name', 'description')
serializer_class = serializers.ServicePortSerializer serializer_class = serializers.ServicePortSerializer

View File

@ -451,7 +451,7 @@ class IPAddressFilterForm(BootstrapMixin, CustomFieldFilterForm):
class ServicePortForm(forms.ModelForm, BootstrapMixin): class ServicePortForm(forms.ModelForm, BootstrapMixin):
class Meta: class Meta:
model = ServicePort model = ServicePort
fields = ['ip_address', 'type', 'port', 'name', 'description'] fields = ['ip_address', 'protocol', 'port', 'name', 'description']
help_texts = { help_texts = {
'port': '0-65535', 'port': '0-65535',
'name': 'Service running on this port', 'name': 'Service running on this port',

View File

@ -9,7 +9,7 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('ipam', '0008_prefix_change_order'), ('ipam', '0009_ipaddress_add_status'),
] ]
operations = [ operations = [
@ -19,7 +19,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateField(auto_now_add=True)), ('created', models.DateField(auto_now_add=True)),
('last_updated', models.DateTimeField(auto_now=True)), ('last_updated', models.DateTimeField(auto_now=True)),
('type', models.PositiveSmallIntegerField(choices=[(0, b'TCP'), (1, b'UDP')], default=0)), ('protocol', models.PositiveSmallIntegerField(choices=[(0, b'TCP'), (1, b'UDP')], default=0)),
('port', models.PositiveIntegerField()), ('port', models.PositiveIntegerField()),
('name', models.CharField(max_length=30)), ('name', models.CharField(max_length=30)),
('description', models.TextField(blank=True)), ('description', models.TextField(blank=True)),
@ -33,6 +33,6 @@ class Migration(migrations.Migration):
), ),
migrations.AlterUniqueTogether( migrations.AlterUniqueTogether(
name='serviceport', name='serviceport',
unique_together={('ip_address', 'port', 'type')}, unique_together={('ip_address', 'port', 'protocol')},
), ),
] ]

View File

@ -444,21 +444,21 @@ class IPAddress(CreatedUpdatedModel, CustomFieldModel):
class ServicePort(CreatedUpdatedModel): class ServicePort(CreatedUpdatedModel):
""" """
A ServicePort represents a port on a specific IPAddress on which a service is running. A ServicePort represents a port on a specific IPAddress on which a service is running.
The port can be one of 2 predefined types - TCP or UDP. The port can be one of 2 predefined protocols - TCP or UDP.
A ServicePort is always associated with a specific IPAddress on a Device. A ServicePort is always associated with a specific IPAddress on a Device.
If an user wants to specify a service running on all IP Addresses on a device, If an user wants to specify a service running on all IP Addresses on a device,
this can be done by assigning the port to the '0.0.0.0/32' IPAddress. this can be done by assigning the port to the '0.0.0.0/32' IPAddress.
The combination of IPAddress, Port Number and Port Type is always unique for ServicePort. The combination of IPAddress, Port Number and Port Protocol is always unique for ServicePort.
If a port number + port type combination is assigned to '0.0.0.0/32' IPAddress, If a port number + port protocol combination is assigned to '0.0.0.0/32' IPAddress,
it cannot be assigned to any other IPAddress on the same Device. it cannot be assigned to any other IPAddress on the same Device.
""" """
ip_address = models.ForeignKey('IPAddress', related_name='service_ports', on_delete=models.CASCADE, ip_address = models.ForeignKey('IPAddress', related_name='service_ports', on_delete=models.CASCADE,
blank=False, null=False, verbose_name='ip_address') blank=False, null=False, verbose_name='ip_address')
type = models.PositiveSmallIntegerField(choices=SERVICE_PORT_CHOICES, default=0) protocol = models.PositiveSmallIntegerField(choices=SERVICE_PORT_CHOICES, default=0)
port = models.PositiveIntegerField() port = models.PositiveIntegerField()
name = models.CharField(max_length=30, blank=False, null=False) name = models.CharField(max_length=30, blank=False, null=False)
@ -468,11 +468,11 @@ class ServicePort(CreatedUpdatedModel):
ordering = ['ip_address', 'port'] ordering = ['ip_address', 'port']
verbose_name = 'Service Port' verbose_name = 'Service Port'
verbose_name_plural = 'Service Ports' verbose_name_plural = 'Service Ports'
unique_together = ['ip_address', 'port', 'type'] unique_together = ['ip_address', 'port', 'protocol']
def __unicode__(self): def __unicode__(self):
port_type = dict(SERVICE_PORT_CHOICES).get(self.type) port_protocol = dict(SERVICE_PORT_CHOICES).get(self.protocol)
return u'{}/{}'.format(self.port, port_type) return u'{}/{}'.format(self.port, port_protocol)
def get_absolute_url(self): def get_absolute_url(self):
return reverse('ipam:serviceport', args=[self.pk]) return reverse('ipam:serviceport', args=[self.pk])
@ -487,7 +487,7 @@ class ServicePort(CreatedUpdatedModel):
# if port is already assigned on '0.0.0.0/32' # if port is already assigned on '0.0.0.0/32'
# that means it is assigned on all IPs on the device # that means it is assigned on all IPs on the device
port_assigned_on_all_ips = bool(ServicePort.objects.filter( port_assigned_on_all_ips = bool(ServicePort.objects.filter(
ip_address__address='0.0.0.0/32', port=self.port, type=self.type).exclude(pk=self.id)) ip_address__address='0.0.0.0/32', port=self.port, protocol=self.protocol).exclude(pk=self.id))
if port_assigned_on_all_ips: if port_assigned_on_all_ips:
raise ValidationError('Port already assigned on address 0.0.0.0/24') raise ValidationError('Port already assigned on address 0.0.0.0/24')

View File

@ -662,7 +662,7 @@ class ServicePortEditView(PermissionRequiredMixin, ObjectEditView):
permission_required = 'ipam.change_ipaddress' permission_required = 'ipam.change_ipaddress'
model = ServicePort model = ServicePort
form_class = forms.ServicePortForm form_class = forms.ServicePortForm
fields_initial = ['ip_address', 'port' 'type', 'name', 'description'] fields_initial = ['ip_address', 'port' 'protocol', 'name', 'description']
template_name = 'ipam/serviceport_edit.html' template_name = 'ipam/serviceport_edit.html'
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):

View File

@ -24,13 +24,13 @@
{% render_form form %} {% render_form form %}
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="col-md-9 col-md-offset-3"> <div class="col-md-9 col-md-offset-3">
<button type="submit" name="_create" class="btn btn-primary">Create</button> <button type="submit" name="_create" class="btn btn-primary">Create</button>
<button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button> <button type="submit" name="_addanother" class="btn btn-primary">Create and Add More</button>
<a href="{{ cancel_url }}" class="btn btn-default">Cancel</a> <a href="{{ cancel_url }}" class="btn btn-default">Cancel</a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</form> </form>

View File

@ -8,7 +8,7 @@
<div class="panel-body"> <div class="panel-body">
{% render_field form.ip_address %} {% render_field form.ip_address %}
{% render_field form.port %} {% render_field form.port %}
{% render_field form.type %} {% render_field form.protocol %}
{% render_field form.name %} {% render_field form.name %}
{% if obj %} {% if obj %}
<div class="form-group"> <div class="form-group">