Commit aa2237b4 by Szeberényi Imre

Merge branch 'webhook-iac' into 'master'

variable delete method, bugfix

See merge request !20
parents c7ef78f0 a2f4cde8
...@@ -79,6 +79,8 @@ class InstanceSerializer(serializers.ModelSerializer): ...@@ -79,6 +79,8 @@ class InstanceSerializer(serializers.ModelSerializer):
ipv6addr = serializers.SerializerMethodField('get_ipv6') ipv6addr = serializers.SerializerMethodField('get_ipv6')
vlans = serializers.SerializerMethodField('get_vlans') vlans = serializers.SerializerMethodField('get_vlans')
macaddr = serializers.SerializerMethodField('get_mac') macaddr = serializers.SerializerMethodField('get_mac')
sshportipv4 = serializers.SerializerMethodField('get_sshportipv4')
hostipv4 = serializers.SerializerMethodField('get_hostipv4')
#interfaces = serializers.SerializerMethodField('get_interfaces') #interfaces = serializers.SerializerMethodField('get_interfaces')
def get_ipv4(self, i): def get_ipv4(self, i):
...@@ -96,12 +98,18 @@ class InstanceSerializer(serializers.ModelSerializer): ...@@ -96,12 +98,18 @@ class InstanceSerializer(serializers.ModelSerializer):
def get_interfaces(self, i): def get_interfaces(self, i):
return i.interface_set.all() return i.interface_set.all()
def get_sshportipv4(self, i):
return i.get_connect_port(use_ipv6=False)
def get_hostipv4(self, i):
return i.get_connect_host(use_ipv6=False)
class Meta: class Meta:
model = Instance model = Instance
fields = ['id', 'name', 'description', 'status', 'owner', 'access_method', 'boot_menu', 'pw', 'is_base', 'macaddr', fields = ['id', 'name', 'description', 'status', 'owner', 'access_method', 'boot_menu', 'pw', 'is_base', 'macaddr',
'lease', 'raw_data', 'cloud_init', 'ci_meta_data', 'ci_user_data', 'ci_network_config', 'system', 'req_traits', 'interface_set', 'lease', 'raw_data', 'cloud_init', 'ci_meta_data', 'ci_user_data', 'ci_network_config', 'system', 'req_traits', 'interface_set',
'has_agent', 'num_cores', 'ram_size', 'max_ram_size', 'arch', 'priority', 'disks', 'node', 'ipv4addr', 'ipv6addr', 'vlans', 'has_agent', 'num_cores', 'ram_size', 'max_ram_size', 'arch', 'priority', 'disks', 'node', 'ipv4addr', 'ipv6addr', 'vlans',
'hookurl'] 'hookurl', 'sshportipv4', 'hostipv4']
extra_kwargs = { extra_kwargs = {
'disks': {'required': False, 'allow_empty': True,}, 'disks': {'required': False, 'allow_empty': True,},
'req_traits': {'required': False, 'allow_empty': True,}, 'req_traits': {'required': False, 'allow_empty': True,},
...@@ -111,6 +119,8 @@ class InstanceSerializer(serializers.ModelSerializer): ...@@ -111,6 +119,8 @@ class InstanceSerializer(serializers.ModelSerializer):
'ci_user_data': {'required': False, }, 'ci_user_data': {'required': False, },
'ci_meta_data': {'required': False, }, 'ci_meta_data': {'required': False, },
'raw_data': {'required': False, }, 'raw_data': {'required': False, },
'sshportipv4': {'required': False, },
'hostipv4': {'required': False, },
} }
......
...@@ -127,7 +127,7 @@ class VariableREST(APIView): ...@@ -127,7 +127,7 @@ class VariableREST(APIView):
def post(self, request, format=None): def post(self, request, format=None):
data = JSONParser().parse(request) data = JSONParser().parse(request)
serializer = VariableSerializer(data=data) serializer = VariableSerializer(data=data, context={'request': request})
if serializer.is_valid(): if serializer.is_valid():
serializer.save() serializer.save()
return JsonResponse(serializer.data, status=201) return JsonResponse(serializer.data, status=201)
...@@ -143,6 +143,11 @@ class GetVariableREST(APIView): ...@@ -143,6 +143,11 @@ class GetVariableREST(APIView):
serializer = VariableSerializer(act, many=False, context={'request': request}) serializer = VariableSerializer(act, many=False, context={'request': request})
return JsonResponse(serializer.data, safe=False) return JsonResponse(serializer.data, safe=False)
def delete(self, request, pk, format=None):
var = Variable.objects.get(pk=pk)
var.delete()
return JsonResponse({}, status=204)
class RedirectToLoginMixin(AccessMixin): class RedirectToLoginMixin(AccessMixin):
redirect_exception_classes = (PermissionDenied, ) redirect_exception_classes = (PermissionDenied, )
......
...@@ -111,8 +111,8 @@ network: ...@@ -111,8 +111,8 @@ network:
match: match:
macaddress: {{ net.mac }} macaddress: {{ net.mac }}
addresses: addresses:
- {{ net.ipv4 }}/24 - {{ net.ipv4 }}/{{ net.mask4 }}
gateway4: ipv4 gateway4: {{ net.gateway4 }}
nameservers: nameservers:
addresses: addresses:
- 8.8.8.8 - 8.8.8.8
...@@ -317,6 +317,8 @@ class NetTemplate: ...@@ -317,6 +317,8 @@ class NetTemplate:
self.ipv4 = str(net.host.ipv4) self.ipv4 = str(net.host.ipv4)
self.ipv6 = str(net.host.ipv6) self.ipv6 = str(net.host.ipv6)
self.name = str(net.vlan.name) self.name = str(net.vlan.name)
self.gateway4 = str(net.vlan.network4).split("/")[0]
self.mask4 = str(net.vlan.network4).split("/")[1]
self.mac = str(net.host.mac) self.mac = str(net.host.mac)
def __init__(self, instance): def __init__(self, instance):
...@@ -324,6 +326,10 @@ class NetTemplate: ...@@ -324,6 +326,10 @@ class NetTemplate:
self.ipv4 = str(instance.ipv4) self.ipv4 = str(instance.ipv4)
self.ipv6 = str(instance.ipv6) self.ipv6 = str(instance.ipv6)
self.mac = str(instance.mac) self.mac = str(instance.mac)
if instance.primary_host:
addr = str(instance.primary_host.vlan.network4).split("/")
self.gateway4 = addr[0]
self.mask4 = addr[1]
class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin, class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin,
...@@ -604,7 +610,7 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin, ...@@ -604,7 +610,7 @@ class Instance(AclBase, VirtualMachineDescModel, StatusModel, OperatedMixin,
common_fields = ['name', 'description', 'num_cores', 'ram_size', common_fields = ['name', 'description', 'num_cores', 'ram_size',
'max_ram_size', 'arch', 'priority', 'boot_menu', 'max_ram_size', 'arch', 'priority', 'boot_menu',
'raw_data', 'lease', 'access_method', 'system', 'raw_data', 'lease', 'access_method', 'system',
'cloud_init', 'ci_meta_data', 'ci_user_data', 'has_agent'] 'cloud_init', 'ci_meta_data', 'ci_user_data', 'ci_network_config', 'has_agent']
params = dict(template=template, owner=owner, pw=pwgen()) params = dict(template=template, owner=owner, pw=pwgen())
params.update([(f, getattr(template, f)) for f in common_fields]) params.update([(f, getattr(template, f)) for f in common_fields])
params.update(kwargs) # override defaults w/ user supplied values params.update(kwargs) # override defaults w/ user supplied values
......
...@@ -889,6 +889,7 @@ class SaveAsTemplateOperation(InstanceOperation): ...@@ -889,6 +889,7 @@ class SaveAsTemplateOperation(InstanceOperation):
'cloud_init': self.instance.cloud_init, 'cloud_init': self.instance.cloud_init,
'ci_meta_data': self.instance.ci_meta_data, 'ci_meta_data': self.instance.ci_meta_data,
'ci_user_data': self.instance.ci_user_data, 'ci_user_data': self.instance.ci_user_data,
'ci_network_config': self.instance.ci_network_config,
} }
params.update(kwargs) params.update(kwargs)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment