CORD-1244 clean up attics
Change-Id: I6e54dfd6958b8934b676ff47bfbe24f6addb6bb5
diff --git a/xos/core/admin.py b/xos/core/admin.py
index 428aceb..bac92de 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -301,34 +301,34 @@
class SafeDeleteQuerysetWrapper(object):
def __init__(self, wrapped_queryset):
self.wrapped_queryset = wrapped_queryset
-
- def _safe_delete(self):
- for obj in list(self.wrapped_queryset):
- obj.delete()
-
- def __getattr__(self, attr):
- if attr == 'delete':
- return self._safe_delete
- else:
- return getattr(self.wrapped_queryset, attr)
-
- def __iter__(self):
- for obj in list(self.wrapped_queryset):
- yield obj
-
- def __getitem__(self, index):
- return self.wrapped_queryset[index]
-
- def __len__(self):
- return len(self.wrapped_queryset)
-
- def get_actions(self, request):
- actions = super(XOSAdminMixin, self).get_actions(request)
- actions['delete_selected'] = (XOSAdminMixin.action_safe_bulk_delete, 'delete_selected', ugettext_lazy("Delete selected %(verbose_name_plural)s"))
- return actions
-
- def action_safe_bulk_delete(self, request, queryset):
- wrapped_queryset = XOSAdminMixin.SafeDeleteQuerysetWrapper(queryset)
+
+ def _safe_delete(self):
+ for obj in list(self.wrapped_queryset):
+ obj.delete()
+
+ def __getattr__(self, attr):
+ if attr == 'delete':
+ return self._safe_delete
+ else:
+ return getattr(self.wrapped_queryset, attr)
+
+ def __iter__(self):
+ for obj in list(self.wrapped_queryset):
+ yield obj
+
+ def __getitem__(self, index):
+ return self.wrapped_queryset[index]
+
+ def __len__(self):
+ return len(self.wrapped_queryset)
+
+ def get_actions(self, request):
+ actions = super(XOSAdminMixin, self).get_actions(request)
+ actions['delete_selected'] = (XOSAdminMixin.action_safe_bulk_delete, 'delete_selected', ugettext_lazy("Delete selected %(verbose_name_plural)s"))
+ return actions
+
+ def action_safe_bulk_delete(self, request, queryset):
+ wrapped_queryset = XOSAdminMixin.SafeDeleteQuerysetWrapper(queryset)
return delete_selected(self, request, wrapped_queryset)
@@ -494,8 +494,8 @@
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field.name == 'deployment':
- kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
- sitedeployments__nodes__isnull=False).distinct()
+# kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
+# sitedeployments__nodes__isnull=False).distinct()
kwargs['widget'] = forms.Select(
attrs={'onChange': "instance_deployment_changed(this);"})
if db_field.name == 'flavor':
@@ -523,8 +523,8 @@
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field.name == 'deployment':
- kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
- sitedeployments__nodes__isnull=False).distinct()
+# kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
+# sitedeployments__nodes__isnull=False).distinct()
kwargs['widget'] = forms.Select(
attrs={'onChange': "instance_deployment_changed(this);"})
if db_field.name == 'flavor':
@@ -1460,10 +1460,6 @@
class Meta:
model = Node
- widgets = {
- 'site': LinkedSelect,
- 'deployment': LinkedSelect
- }
fields = '__all__'
def __init__(self, *args, **kwargs):
@@ -1508,16 +1504,6 @@
suit_form_tabs = (('details', 'Node Details'), ('instances',
'Instances'), ('labels', 'Labels'))
- def formfield_for_foreignkey(self, db_field, request, **kwargs):
- if db_field.name == 'site':
- kwargs['queryset'] = Site.select_by_user(
- request.user).filter(hosts_nodes=True)
-
- field = super(NodeAdmin, self).formfield_for_foreignkey(
- db_field, request, **kwargs)
-
- return field
-
class InstanceForm(forms.ModelForm):
@@ -1639,8 +1625,8 @@
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field.name == 'deployment':
- kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
- sitedeployments__nodes__isnull=False).distinct()
+# kwargs['queryset'] = Deployment.select_by_acl(request.user).filter(
+# sitedeployments__nodes__isnull=False).distinct()
kwargs['widget'] = forms.Select(
attrs={'onChange': "instance_deployment_changed(this);"})
if db_field.name == 'flavor':
diff --git a/xos/core/models/attic/controller_model.py b/xos/core/models/attic/controller_model.py
index 78a6896..1e07807 100644
--- a/xos/core/models/attic/controller_model.py
+++ b/xos/core/models/attic/controller_model.py
@@ -1,14 +1,3 @@
-def __init__(self, *args, **kwargs):
- super(Controller, self).__init__(*args, **kwargs)
- self.no_sync=True
-
-@property
-def auth_url_v3(self):
- if self.auth_url and self.auth_url[-1] == '/':
- return '{}/v3/'.format('/'.join(self.auth_url.split('/')[:-2]))
- else:
- return '{}/v3/'.format('/'.join(self.auth_url.split('/')[:-1]))
-
@staticmethod
def select_by_user(user):
diff --git a/xos/core/models/attic/deployment_model.py b/xos/core/models/attic/deployment_model.py
index 78f6e4e..d9da903 100644
--- a/xos/core/models/attic/deployment_model.py
+++ b/xos/core/models/attic/deployment_model.py
@@ -1,7 +1,3 @@
-def __init__(self, *args, **kwargs):
- super(Deployment, self).__init__(*args, **kwargs)
- self.no_sync=True
-
def get_acl(self):
return AccessControlList(self.accessControl)
diff --git a/xos/core/models/attic/diag_model.py b/xos/core/models/attic/diag_model.py
deleted file mode 100644
index bf6bd68..0000000
--- a/xos/core/models/attic/diag_model.py
+++ /dev/null
@@ -1,7 +0,0 @@
-@property
-def enacted(self):
- return None
-
-@enacted.setter
-def enacted(self, value):
- pass # Ignore sets, Diag objects are always pending.
diff --git a/xos/core/models/attic/flavor_model.py b/xos/core/models/attic/flavor_model.py
deleted file mode 100644
index 56e0e52..0000000
--- a/xos/core/models/attic/flavor_model.py
+++ /dev/null
@@ -1,8 +0,0 @@
-class Meta:
- app_label = "core"
- ordering = ('order', 'name')
-
-def __init__(self, *args, **kwargs):
- super(Flavor, self).__init__(*args, **kwargs)
- self.no_sync=True
-
diff --git a/xos/core/models/attic/header.py b/xos/core/models/attic/header.py
index 300f57f..122b6a0 100644
--- a/xos/core/models/attic/header.py
+++ b/xos/core/models/attic/header.py
@@ -21,10 +21,6 @@
config = Config()
-# If true, then IP addresses will be allocated by the model. If false, then
-# we will assume the observer handles it.
-NO_OBSERVER=False
-
def ParseNatList(ports):
""" Support a list of ports in the format "protocol:port, protocol:port, ..."
examples:
@@ -76,24 +72,3 @@
except Exception,e:
raise ValidationError(str(e))
-
-
-def get_default_flavor(controller = None):
- # Find a default flavor that can be used for a instance. This is particularly
- # useful in evolution. It's also intended this helper function can be used
- # for admin.py when users
-
- if controller:
- flavors = controller.flavors.all()
- else:
- from core.models.flavor import Flavor
- flavors = Flavor.objects.all()
-
- if not flavors:
- return None
-
- for flavor in flavors:
- if flavor.default:
- return flavor
-
- return flavors[0]
diff --git a/xos/core/models/attic/instance_bottom.py b/xos/core/models/attic/instance_bottom.py
deleted file mode 100644
index 7b87eab..0000000
--- a/xos/core/models/attic/instance_bottom.py
+++ /dev/null
@@ -1,7 +0,0 @@
-def controller_setter(instance, **kwargs):
- try:
- instance.controller = instance.node.site_deployment.controller
- except:
- instance.controller = None
-
-models.signals.post_init.connect(controller_setter, Instance)
diff --git a/xos/core/models/attic/network_model.py b/xos/core/models/attic/network_model.py
index 20180a2..c58639a 100644
--- a/xos/core/models/attic/network_model.py
+++ b/xos/core/models/attic/network_model.py
@@ -1,13 +1,6 @@
-def save(self, *args, **kwds):
- super(Network, self).save(*args, **kwds)
-
def can_update(self, user):
return user.can_update_slice(self.owner)
-@property
-def nat_list(self):
- return ParseNatList(self.ports)
-
@staticmethod
def select_by_user(user):
if user.is_admin:
@@ -18,11 +11,4 @@
qs = Network.objects.filter(owner__in=slices)
return qs
-def get_parameters(self):
- # returns parameters from the template, updated by self.
- p={}
- if self.template:
- p = self.template.get_parameters()
- p.update(ParameterMixin.get_parameters(self))
- return p
diff --git a/xos/core/models/attic/network_top.py b/xos/core/models/attic/network_top.py
deleted file mode 100644
index 47ae705..0000000
--- a/xos/core/models/attic/network_top.py
+++ /dev/null
@@ -1,34 +0,0 @@
-
-from core.models.networkparameter import NetworkParameter
-
-class ParameterMixin(object):
- # helper classes for dealing with NetworkParameter
-
- def get_parameters(self):
- parameter_dict = {}
-
- instance_type = ContentType.objects.get_for_model(self)
- for param in NetworkParameter.objects.filter(content_type__pk=instance_type.id, object_id=self.id):
- parameter_dict[param.parameter.name] = param.value
-
- return parameter_dict
-
- def set_parameter(self, name, value):
- instance_type = ContentType.objects.get_for_model(self)
- existing_params = NetworkParameter.objects.filter(parameter__name=name, content_type__pk=instance_type.id, object_id=self.id)
- if existing_params:
- p=existing_params[0]
- p.value = value
- p.save()
- else:
- from core.models.networkparametertype import NetworkParameterType
- pt = NetworkParameterType.objects.get(name=name)
- p = NetworkParameter(parameter=pt, content_type=instance_type, object_id=self.id, value=value)
- p.save()
-
- def unset_parameter(self, name):
- instance_type = ContentType.objects.get_for_model(self)
- existing_params = NetworkParameter.objects.filter(parameter__name=name, content_type__pk=instance_type.id, object_id=self.id)
- for p in existing_params:
- p.delete()
-
diff --git a/xos/core/models/attic/node_model.py b/xos/core/models/attic/node_model.py
index 98c5ed4..763f480 100644
--- a/xos/core/models/attic/node_model.py
+++ b/xos/core/models/attic/node_model.py
@@ -1,12 +1,3 @@
-def __init__(self, *args, **kwargs):
- super(Node, self).__init__(*args, **kwargs)
- self.no_sync=True
-
def can_update(self, user):
- return user.can_update_site(self.site, allow=['tech'])
+ return user.can_update_site(self.site_deployment.site, allow=['tech'])
-def save(self, *args, **kwds):
- if self.site is None and self.site_deployment is not None:
- self.site = self.site_deployment.site
-
- super(Node, self).save(*args, **kwds)
diff --git a/xos/core/models/attic/port_model.py b/xos/core/models/attic/port_model.py
index 507e923..00f59ad 100644
--- a/xos/core/models/attic/port_model.py
+++ b/xos/core/models/attic/port_model.py
@@ -32,11 +32,3 @@
qs = Port.objects.filter(Q(instance__in=instance_ids) | Q(network__in=network_ids))
return qs
-def get_parameters(self):
- # returns parameters from the network, updated by self.
- p={}
- if self.network:
- p = self.network.get_parameters()
- p.update(ParameterMixin.get_parameters(self))
- return p
-
diff --git a/xos/core/models/attic/port_top.py b/xos/core/models/attic/port_top.py
deleted file mode 100644
index 5fa8ca9..0000000
--- a/xos/core/models/attic/port_top.py
+++ /dev/null
@@ -1,34 +0,0 @@
-
-from core.models.networkparameter import NetworkParameter
-from core.models.networkparametertype import NetworkParameterType
-
-class ParameterMixin(object):
- # helper classes for dealing with NetworkParameter
-
- def get_parameters(self):
- parameter_dict = {}
-
- instance_type = self.get_content_type_key()
- for param in NetworkParameter.objects.filter(content_type=instance_type, object_id=self.id):
- parameter_dict[param.parameter.name] = param.value
-
- return parameter_dict
-
- def set_parameter(self, name, value):
- instance_type = self.get_content_type_key()
- existing_params = NetworkParameter.objects.filter(parameter__name=name, content_type=instance_type, object_id=self.id)
- if existing_params:
- p=existing_params[0]
- p.value = value
- p.save()
- else:
- pt = NetworkParameterType.objects.get(name=name)
- p = NetworkParameter(parameter=pt, content_type=instance_type, object_id=self.id, value=value)
- p.save()
-
- def unset_parameter(self, name):
- instance_type = self.get_content_type_key()
- existing_params = NetworkParameter.objects.filter(parameter__name=name, content_type=instance_type, object_id=self.id)
- for p in existing_params:
- p.delete()
-
diff --git a/xos/core/models/attic/service_model.py b/xos/core/models/attic/service_model.py
index 5959f86..d7175b6 100644
--- a/xos/core/models/attic/service_model.py
+++ b/xos/core/models/attic/service_model.py
@@ -6,18 +6,6 @@
super(Service, self).__init__(*args, **kwargs)
@classmethod
-def get_service_objects(cls):
- return cls.objects.filter(kind=cls.KIND)
-
-@classmethod
-def get_deleted_service_objects(cls):
- return cls.deleted_objects.filter(kind=cls.KIND)
-
-@classmethod
-def get_service_objects_by_user(cls, user):
- return cls.select_by_user(user).filter(kind=cls.KIND)
-
-@classmethod
def select_by_user(cls, user):
if user.is_admin:
return cls.objects.all()
diff --git a/xos/core/models/attic/serviceprivilege_model.py b/xos/core/models/attic/serviceprivilege_model.py
index a5bb038..294fd90 100644
--- a/xos/core/models/attic/serviceprivilege_model.py
+++ b/xos/core/models/attic/serviceprivilege_model.py
@@ -1,21 +1,6 @@
class Meta:
unique_together = ('user', 'service', 'role')
-def can_update(self, user):
- if not self.service.enabled:
- raise PermissionDenied, "Cannot modify permission(s) of a disabled service"
- return self.service.can_update(user)
-
-def save(self, *args, **kwds):
- if not self.service.enabled:
- raise PermissionDenied, "Cannot modify permission(s) of a disabled service"
- super(ServicePrivilege, self).save(*args, **kwds)
-
-def delete(self, *args, **kwds):
- if not self.service.enabled:
- raise PermissionDenied, "Cannot modify permission(s) of a disabled service"
- super(ServicePrivilege, self).delete(*args, **kwds)
-
@classmethod
def select_by_user(cls, user):
if user.is_admin:
diff --git a/xos/core/models/attic/siteprivilege_model.py b/xos/core/models/attic/siteprivilege_model.py
index 6130d6a..0a05b5f 100644
--- a/xos/core/models/attic/siteprivilege_model.py
+++ b/xos/core/models/attic/siteprivilege_model.py
@@ -10,7 +10,3 @@
qs = SitePrivilege.objects.filter(id__in=sp_ids)
return qs
-def save(self, *args, **kwds):
- if not self.user.is_active:
- raise PermissionDenied, "Cannot modify role(s) of a disabled user"
- super(SitePrivilege, self).save(*args, **kwds)
diff --git a/xos/core/models/attic/slice_model.py b/xos/core/models/attic/slice_model.py
index 503a3f9..e296429 100644
--- a/xos/core/models/attic/slice_model.py
+++ b/xos/core/models/attic/slice_model.py
@@ -61,19 +61,4 @@
qs = Slice.objects.filter(id__in=slice_ids)
return qs
-"""
-def delete(self, *args, **kwds):
- # delete networks associated with this slice
- from core.models.network import Network
- nets = Network.objects.filter(slices=self)
- nets.delete()
- # delete slice controllers
- slice_controllers = ControllerSlice.objects.filter(slice=self)
- slice_controllers.delete()
- # delete slice privilege
- slice_privileges = SlicePrivilege.objects.filter(slice=self)
- slice_privileges.delete()
- # continue with normal delete
- super(Slice, self).delete(*args, **kwds)
-"""
diff --git a/xos/core/models/attic/sliceprivilege_model.py b/xos/core/models/attic/sliceprivilege_model.py
index 3dd30e4..8516454 100644
--- a/xos/core/models/attic/sliceprivilege_model.py
+++ b/xos/core/models/attic/sliceprivilege_model.py
@@ -1,9 +1,6 @@
class Meta:
unique_together = ('user', 'slice', 'role')
-def save(self, *args, **kwds):
- super(SlicePrivilege, self).save(*args, **kwds)
-
def can_update(self, user):
return user.can_update_slice(self.slice)
diff --git a/xos/core/models/attic/tag_model.py b/xos/core/models/attic/tag_model.py
index f67ee60..364baa2 100644
--- a/xos/core/models/attic/tag_model.py
+++ b/xos/core/models/attic/tag_model.py
@@ -1,10 +1,6 @@
def can_update(self, user):
return user.can_update_root()
-@classmethod
-def select_by_content_object(cls, obj):
- return cls.objects.filter(content_type=obj.get_content_type_key(), object_id=obj.id)
-
@staticmethod
def select_by_user(user):
return Tag.objects.all()
diff --git a/xos/core/models/attic/tenant_model.py b/xos/core/models/attic/tenant_model.py
index 168c7ad..e283c5a 100644
--- a/xos/core/models/attic/tenant_model.py
+++ b/xos/core/models/attic/tenant_model.py
@@ -5,18 +5,6 @@
self._meta.get_field("kind").default = self.KIND
super(Tenant, self).__init__(*args, **kwargs)
-@classmethod
-def get_tenant_objects(cls):
- return cls.objects.filter(kind=cls.KIND)
-
-@classmethod
-def get_tenant_objects_by_user(cls, user):
- return cls.select_by_user(user).filter(kind=cls.KIND)
-
-@classmethod
-def get_deleted_tenant_objects(cls):
- return cls.deleted_objects.filter(kind=cls.KIND)
-
@property
def tenantattribute_dict(self):
attrs = {}
@@ -32,7 +20,7 @@
raise XOSMissingField("subscriber_specific_id is None, and it's a required field", fields={
"service_specific_id": "cannot be none"})
- conflicts = self.get_tenant_objects().filter(
+ conflicts = self.__class__.objects.filter(
service_specific_id=self.service_specific_id)
if conflicts:
raise XOSDuplicateKey("service_specific_id %s already exists" % self.service_specific_id, fields={
diff --git a/xos/core/models/attic/tenantprivilege_model.py b/xos/core/models/attic/tenantprivilege_model.py
index 1c416f2..0b59d81 100644
--- a/xos/core/models/attic/tenantprivilege_model.py
+++ b/xos/core/models/attic/tenantprivilege_model.py
@@ -1,8 +1,3 @@
-def save(self, *args, **kwds):
- if not self.user.is_active:
- raise PermissionDenied, "Cannot modify role(s) of a disabled user"
- super(TenantPrivilege, self).save(*args, **kwds)
-
def can_update(self, user):
return user.can_update_tenant_privilege(self)
diff --git a/xos/core/models/attic/tenantroot_model.py b/xos/core/models/attic/tenantroot_model.py
index 20e3480..bb09b1e 100644
--- a/xos/core/models/attic/tenantroot_model.py
+++ b/xos/core/models/attic/tenantroot_model.py
@@ -19,14 +19,6 @@
return sorted(st, key=attrgetter('id'))[0]
@classmethod
-def get_tenant_objects(cls):
- return cls.objects.filter(kind=cls.KIND)
-
-@classmethod
-def get_tenant_objects_by_user(cls, user):
- return cls.select_by_user(user).filter(kind=cls.KIND)
-
-@classmethod
def select_by_user(cls, user):
if user.is_admin:
return cls.objects.all()
@@ -44,7 +36,7 @@
"service_specific_id": "cannot be none"})
if self.service_specific_id:
- conflicts = self.get_tenant_objects().filter(
+ conflicts = self.__class__.objects.filter(
service_specific_id=self.service_specific_id)
if self.pk:
conflicts = conflicts.exclude(pk=self.pk)
diff --git a/xos/core/models/attic/tenantrootprivilege_model.py b/xos/core/models/attic/tenantrootprivilege_model.py
index c2d054e..8dee9a1 100644
--- a/xos/core/models/attic/tenantrootprivilege_model.py
+++ b/xos/core/models/attic/tenantrootprivilege_model.py
@@ -1,11 +1,6 @@
class Meta:
unique_together = ('user', 'tenant_root', 'role')
-def save(self, *args, **kwds):
- if not self.user.is_active:
- raise PermissionDenied, "Cannot modify role(s) of a disabled user"
- super(TenantRootPrivilege, self).save(*args, **kwds)
-
def can_update(self, user):
return user.can_update_tenant_root_privilege(self)
diff --git a/xos/core/models/attic/tenantwithcontainer_model.py b/xos/core/models/attic/tenantwithcontainer_model.py
index 7b11323..5e87c04 100644
--- a/xos/core/models/attic/tenantwithcontainer_model.py
+++ b/xos/core/models/attic/tenantwithcontainer_model.py
@@ -61,7 +61,7 @@
# not permit any new attributes to be defined. Find if any better solutions
def count_of_tenants_of_an_instance(self, instance):
tenant_count = 0
- for tenant in self.get_tenant_objects().all():
+ for tenant in self.__class__.objects.all():
if tenant.get_attribute("instance_id", None) == instance.id:
tenant_count += 1
return tenant_count
diff --git a/xos/core/models/attic/xosguiextension_model.py b/xos/core/models/attic/xosguiextension_model.py
deleted file mode 100644
index dbbad60..0000000
--- a/xos/core/models/attic/xosguiextension_model.py
+++ /dev/null
@@ -1,4 +0,0 @@
-"""Persist GUI Extension"""
-class Meta:
- app_label = "core"
-
diff --git a/xos/core/models/flavor.xproto b/xos/core/models/flavor.xproto
index 08714d0..b76f419 100644
--- a/xos/core/models/flavor.xproto
+++ b/xos/core/models/flavor.xproto
@@ -4,7 +4,5 @@
required string name = 1 [max_length = 32, content_type = "stripped", blank = False, help_text = "name of this flavor, as displayed to users", null = False, db_index = False];
optional string description = 2 [db_index = False, max_length = 1024, null = True, content_type = "stripped", blank = True];
required string flavor = 3 [max_length = 32, content_type = "stripped", blank = False, help_text = "flavor string used to configure deployments", null = False, db_index = False];
- required int32 order = 4 [help_text = "used to order flavors when displayed in a list", default = 0, null = False, db_index = False, blank = False];
- required bool default = 5 [help_text = "make this a default flavor to use when creating new instances", default = False, null = False, db_index = False, blank = True];
required manytomany deployments->Deployment/DashboardView_deployments:flavors = 6 [db_index = False, null = False, blank = True];
}
diff --git a/xos/core/models/instance.xproto b/xos/core/models/instance.xproto
index b34291e..dbbd4cd 100644
--- a/xos/core/models/instance.xproto
+++ b/xos/core/models/instance.xproto
@@ -12,7 +12,7 @@
required manytoone deployment->Deployment:instance_deployment = 9 [db_index = True, null = False, blank = False];
required manytoone node->Node:instances = 10 [db_index = True, null = False, blank = False];
required int32 numberCores = 11 [help_text = "Number of cores for instance", default = 0, null = False, db_index = False, blank = False];
- required manytoone flavor->Flavor:instance = 12 [help_text = "Flavor of this instance", default = "get_default_flavor()", null = False, db_index = True, blank = False];
+ required manytoone flavor->Flavor:instance = 12 [help_text = "Flavor of this instance", null = False, db_index = True, blank = False];
optional string userData = 13 [help_text = "user_data passed to instance during creation", null = True, db_index = False, blank = True];
required string isolation = 14 [default = "vm", choices = "(('vm', 'Virtual Machine'), ('container', 'Container'), ('container_vm', 'Container In VM'))", max_length = 30, blank = False, null = False, db_index = False];
optional string volumes = 15 [help_text = "Comma-separated list of directories to expose to parent context", null = True, db_index = False, blank = True];
diff --git a/xos/core/models/network.xproto b/xos/core/models/network.xproto
index ffd1eb1..a44d378 100644
--- a/xos/core/models/network.xproto
+++ b/xos/core/models/network.xproto
@@ -1,6 +1,4 @@
-
-
-message Network (XOSBase,ParameterMixin){
+message Network (XOSBase){
required string name = 1 [db_index = False, max_length = 32, null = False, blank = False];
required manytoone template->NetworkTemplate:network = 2 [db_index = True, null = False, blank = False];
required string subnet = 3 [db_index = False, max_length = 32, null = False, blank = True];
diff --git a/xos/core/models/networktemplate.xproto b/xos/core/models/networktemplate.xproto
index d9653ab..ab7fe1d 100644
--- a/xos/core/models/networktemplate.xproto
+++ b/xos/core/models/networktemplate.xproto
@@ -1,6 +1,4 @@
-
-
-message NetworkTemplate (XOSBase,ParameterMixin){
+message NetworkTemplate (XOSBase){
required string name = 1 [db_index = False, max_length = 32, null = False, blank = False];
optional string description = 2 [db_index = False, max_length = 1024, null = True, blank = True];
required string visibility = 4 [default = "private", choices = "(('public', 'public'), ('private', 'private'))", max_length = 30, blank = False, null = False, db_index = False];
diff --git a/xos/core/models/node.xproto b/xos/core/models/node.xproto
index 36495d5..f4b12b0 100644
--- a/xos/core/models/node.xproto
+++ b/xos/core/models/node.xproto
@@ -1,5 +1,4 @@
message Node (XOSBase){
required string name = 1 [max_length = 200, content_type = "stripped", blank = False, help_text = "Name of the Node", null = False, db_index = False];
required manytoone site_deployment->SiteDeployment:nodes = 2 [db_index = True, null = False, blank = False];
- optional manytoone site->Site:nodes = 3 [db_index = True, null = True, blank = True];
}
diff --git a/xos/core/models/port.xproto b/xos/core/models/port.xproto
index 115b0db..d7841ab 100644
--- a/xos/core/models/port.xproto
+++ b/xos/core/models/port.xproto
@@ -1,6 +1,4 @@
-
-
-message Port (XOSBase,ParameterMixin){
+message Port (XOSBase){
required manytoone network->Network:links = 1 [db_index = True, null = False, blank = False];
optional manytoone instance->Instance:ports = 2 [db_index = True, null = True, blank = True];
optional string ip = 3 [max_length = 39, content_type = "ip", blank = True, help_text = "Instance ip address", null = True, db_index = False];
diff --git a/xos/tosca/resources/node.py b/xos/tosca/resources/node.py
index 399a3e6..2051dd8 100644
--- a/xos/tosca/resources/node.py
+++ b/xos/tosca/resources/node.py
@@ -12,7 +12,6 @@
siteName = self.get_requirement("tosca.relationships.MemberOfSite", throw_exception=False)
if siteName:
site = self.get_xos_object(Site, login_base=siteName)
- args["site"] = site
deploymentName = self.get_requirement("tosca.relationships.MemberOfDeployment", throw_exception=False)
if deploymentName:
@@ -36,8 +35,6 @@
def create(self):
xos_args = self.get_xos_args()
- if not xos_args.get("site", None):
- raise Exception("Site is a required field of Node")
if not xos_args.get("site_deployment", None):
raise Exception("Deployment is a required field of Node")
@@ -47,7 +44,7 @@
self.postprocess(node)
- self.info("Created Node '%s' on Site '%s' Deployment '%s'" % (str(node), str(node.site), str(node.site_deployment.deployment)))
+ self.info("Created Node '%s' on Site '%s' Deployment '%s'" % (str(node), str(node.site_deployment.site), str(node.site_deployment.deployment)))
def delete(self, obj):
super(XOSNode, self).delete(obj)