replace all occurrences of {Ss}liver{s,} with {Ii}nstance{s,}
diff --git a/xos/core/admin.py b/xos/core/admin.py
index efd1058..afaf057 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -403,7 +403,7 @@
return Tag.select_by_user(request.user)
class NetworkLookerUpper:
- """ This is a callable that looks up a network name in a sliver and returns
+ """ This is a callable that looks up a network name in a instance and returns
the ip address for that network.
"""
@@ -416,7 +416,7 @@
def __call__(self, obj):
if obj is not None:
- for nbs in obj.networksliver_set.all():
+ for nbs in obj.networkinstance_set.all():
if (nbs.network.name == self.network_name):
return nbs.ip
return ""
@@ -429,53 +429,53 @@
""" We want to make sure we alwars return the same NetworkLookerUpper
because sometimes django will cause them to be instantiated multiple
times (and we don't want different ones in form.fields vs
- SliverInline.readonly_fields).
+ InstanceInline.readonly_fields).
"""
if network_name not in NetworkLookerUpper.byNetworkName:
NetworkLookerUpper.byNetworkName[network_name] = NetworkLookerUpper(network_name)
return NetworkLookerUpper.byNetworkName[network_name]
-class SliverInline(XOSTabularInline):
- model = Sliver
+class InstanceInline(XOSTabularInline):
+ model = Instance
fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'deployment', 'flavor', 'image', 'node']
extra = 0
readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name']
- suit_classes = 'suit-tab suit-tab-slivers'
+ suit_classes = 'suit-tab suit-tab-instances'
def queryset(self, request):
- return Sliver.select_by_user(request.user)
+ return Instance.select_by_user(request.user)
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['widget'] = forms.Select(attrs={'onChange': "sliver_deployment_changed(this);"})
+ kwargs['widget'] = forms.Select(attrs={'onChange': "instance_deployment_changed(this);"})
if db_field.name == 'flavor':
- kwargs['widget'] = forms.Select(attrs={'onChange': "sliver_flavor_changed(this);"})
+ kwargs['widget'] = forms.Select(attrs={'onChange': "instance_flavor_changed(this);"})
- field = super(SliverInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
+ field = super(InstanceInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
return field
-class CordSliverInline(XOSTabularInline):
- model = Sliver
+class CordInstanceInline(XOSTabularInline):
+ model = Instance
fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'flavor', 'image', 'node']
extra = 0
readonly_fields = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name']
- suit_classes = 'suit-tab suit-tab-slivers'
+ suit_classes = 'suit-tab suit-tab-instances'
def queryset(self, request):
- return Sliver.select_by_user(request.user)
+ return Instance.select_by_user(request.user)
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['widget'] = forms.Select(attrs={'onChange': "sliver_deployment_changed(this);"})
+ kwargs['widget'] = forms.Select(attrs={'onChange': "instance_deployment_changed(this);"})
if db_field.name == 'flavor':
- kwargs['widget'] = forms.Select(attrs={'onChange': "sliver_flavor_changed(this);"})
+ kwargs['widget'] = forms.Select(attrs={'onChange': "instance_flavor_changed(this);"})
- field = super(CordSliverInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
+ field = super(CordInstanceInline, self).formfield_for_foreignkey(db_field, request, **kwargs)
return field
@@ -965,7 +965,7 @@
# hide MyInline in the add view
if obj is None:
continue
- if isinstance(inline, SliverInline):
+ if isinstance(inline, InstanceInline):
inline.model.caller = request.user
yield inline.get_formset(request, obj)
@@ -1066,12 +1066,12 @@
class SliceAdmin(XOSBaseAdmin):
form = SliceForm
- fieldList = ['backend_status_text', 'site', 'name', 'serviceClass', 'enabled','description', 'service', 'slice_url', 'max_slivers']
+ fieldList = ['backend_status_text', 'site', 'name', 'serviceClass', 'enabled','description', 'service', 'slice_url', 'max_instances']
fieldsets = [('Slice Details', {'fields': fieldList, 'classes':['suit-tab suit-tab-general']}),]
readonly_fields = ('backend_status_text', )
- list_display = ('backend_status_icon', 'name', 'site','serviceClass', 'slice_url', 'max_slivers')
+ list_display = ('backend_status_icon', 'name', 'site','serviceClass', 'slice_url', 'max_instances')
list_display_links = ('backend_status_icon', 'name', )
- normal_inlines = [SlicePrivilegeInline, SliverInline, TagInline, ReservationInline, SliceNetworkInline]
+ normal_inlines = [SlicePrivilegeInline, InstanceInline, TagInline, ReservationInline, SliceNetworkInline]
inlines = normal_inlines
admin_inlines = [ControllerSliceInline]
@@ -1082,7 +1082,7 @@
tabs =[('general', 'Slice Details'),
('slicenetworks','Networks'),
('sliceprivileges','Privileges'),
- ('slivers','Slivers'),
+ ('instances','Instances'),
#('reservations','Reservations'),
('tags','Tags'),
]
@@ -1148,7 +1148,7 @@
# hide MyInline in the add view
if obj is None:
continue
- if isinstance(inline, SliverInline):
+ if isinstance(inline, InstanceInline):
inline.model.caller = request.user
yield inline.get_formset(request, obj)
@@ -1159,7 +1159,7 @@
# XXX this approach is better than clobbering self.inlines, so
# try to make this work post-demo.
if (obj is not None) and (obj.name == "mysite_vcpe"):
- cord_vcpe_inlines = [ SlicePrivilegeInline, CordSliverInline, TagInline, ReservationInline,SliceNetworkInline]
+ cord_vcpe_inlines = [ SlicePrivilegeInline, CordInstanceInline, TagInline, ReservationInline,SliceNetworkInline]
inlines=[]
for inline_class in cord_vcpe_inlines:
@@ -1216,9 +1216,9 @@
]
readonly_fields = ('backend_status_text', )
- suit_form_tabs =(('general','Image Details'),('slivers','Slivers'),('imagedeployments','Deployments'), ('controllerimages', 'Controllers'))
+ suit_form_tabs =(('general','Image Details'),('instances','Instances'),('imagedeployments','Deployments'), ('controllerimages', 'Controllers'))
- inlines = [SliverInline, ControllerImagesInline]
+ inlines = [InstanceInline, ControllerImagesInline]
user_readonly_fields = ['name', 'disk_format', 'container_format']
@@ -1238,22 +1238,22 @@
list_display_links = ('backend_status_icon', 'name', )
list_filter = ('site_deployment',)
- inlines = [TagInline,SliverInline]
+ inlines = [TagInline,InstanceInline]
fieldsets = [('Node Details', {'fields': ['backend_status_text', 'name','site_deployment'], 'classes':['suit-tab suit-tab-details']})]
readonly_fields = ('backend_status_text', )
user_readonly_fields = ['name','site_deployment']
- user_readonly_inlines = [TagInline,SliverInline]
+ user_readonly_inlines = [TagInline,InstanceInline]
- suit_form_tabs =(('details','Node Details'),('slivers','Slivers'))
+ suit_form_tabs =(('details','Node Details'),('instances','Instances'))
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)
-class SliverForm(forms.ModelForm):
+class InstanceForm(forms.ModelForm):
class Meta:
- model = Sliver
+ model = Instance
ip = forms.CharField(widget=PlainTextWidget)
instance_name = forms.CharField(widget=PlainTextWidget)
widgets = {
@@ -1272,16 +1272,16 @@
user_readonly_fields = ['service', 'name', 'value', 'content_type', 'content_object',]
user_readonly_inlines = []
-class SliverAdmin(XOSBaseAdmin):
- form = SliverForm
+class InstanceAdmin(XOSBaseAdmin):
+ form = InstanceForm
fieldsets = [
- ('Sliver Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'node', 'all_ips_string', 'instance_id', 'instance_name', 'flavor', 'image', 'ssh_command'], 'classes': ['suit-tab suit-tab-general'], })
+ ('Instance Details', {'fields': ['backend_status_text', 'slice', 'deployment', 'node', 'all_ips_string', 'instance_id', 'instance_name', 'flavor', 'image', 'ssh_command'], 'classes': ['suit-tab suit-tab-general'], })
]
readonly_fields = ('backend_status_text', 'ssh_command', 'all_ips_string')
list_display = ['backend_status_icon', 'all_ips_string', 'instance_id', 'instance_name', 'slice', 'flavor', 'image', 'node', 'deployment']
list_display_links = ('backend_status_icon', 'all_ips_string', 'instance_id', )
- suit_form_tabs =(('general', 'Sliver Details'),)
+ suit_form_tabs =(('general', 'Instance Details'),)
inlines = [TagInline]
@@ -1298,12 +1298,12 @@
if db_field.name == 'slice':
kwargs['queryset'] = Slice.select_by_user(request.user)
- return super(SliverAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
+ return super(InstanceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
def queryset(self, request):
- # admins can see all slivers. Users can only see slivers of
+ # admins can see all instances. Users can only see instances of
# the slices they belong to.
- return Sliver.select_by_user(request.user)
+ return Instance.select_by_user(request.user)
def get_formsets(self, request, obj=None):
@@ -1317,7 +1317,7 @@
# hide MyInline in the add view
if obj is None:
continue
- if isinstance(inline, SliverInline):
+ if isinstance(inline, InstanceInline):
inline.model.caller = request.user
yield inline.get_formset(request, obj)
@@ -1538,8 +1538,8 @@
field.initial = field.queryset.all()[0]
else:
field.queryset = field.queryset.none()
- elif db_field.name == 'sliver':
- # restrict slivers to those that belong to the slice
+ elif db_field.name == 'instance':
+ # restrict instances to those that belong to the slice
if request._slice is not None:
field.queryset = field.queryset.filter(slice = request._slice)
else:
@@ -1690,15 +1690,15 @@
fields = ['backend_status_icon', 'parameter', 'value']
readonly_fields = ('backend_status_icon', )
-class NetworkSliversInline(XOSTabularInline):
- fields = ['backend_status_icon', 'network', 'sliver', 'ip', 'reserve']
+class NetworkInstancesInline(XOSTabularInline):
+ fields = ['backend_status_icon', 'network', 'instance', 'ip', 'reserve']
readonly_fields = ("backend_status_icon", "ip", )
- model = NetworkSliver
- selflink_fieldname = "sliver"
+ model = NetworkInstance
+ selflink_fieldname = "instance"
extra = 0
- verbose_name_plural = "Slivers"
- verbose_name = "Sliver"
- suit_classes = 'suit-tab suit-tab-networkslivers'
+ verbose_name_plural = "Instances"
+ verbose_name = "Instance"
+ suit_classes = 'suit-tab suit-tab-networkinstances'
class NetworkSlicesInline(XOSTabularInline):
model = NetworkSlice
@@ -1732,7 +1732,7 @@
list_display_links = ('backend_status_icon', 'name', )
readonly_fields = ("subnet", )
- inlines = [NetworkParameterInline, NetworkSliversInline, NetworkSlicesInline, RouterInline]
+ inlines = [NetworkParameterInline, NetworkInstancesInline, NetworkSlicesInline, RouterInline]
admin_inlines = [ControllerNetworkInline]
form=NetworkForm
@@ -1752,7 +1752,7 @@
tabs=[('general','Network Details'),
('sdn', 'SDN Configuration'),
('netparams', 'Parameters'),
- ('networkslivers','Slivers'),
+ ('networkinstances','Instances'),
('networkslices','Slices'),
('routers','Routers'),
]
@@ -1977,7 +1977,7 @@
admin.site.register(Node, NodeAdmin)
#admin.site.register(SlicePrivilege, SlicePrivilegeAdmin)
#admin.site.register(SitePrivilege, SitePrivilegeAdmin)
- admin.site.register(Sliver, SliverAdmin)
+ admin.site.register(Instance, InstanceAdmin)
admin.site.register(Image, ImageAdmin)
admin.site.register(DashboardView, DashboardViewAdmin)
admin.site.register(Flavor, FlavorAdmin)
diff --git a/xos/core/api/slivers.py b/xos/core/api/slivers.py
index 2ce24c7..92e928c 100644
--- a/xos/core/api/slivers.py
+++ b/xos/core/api/slivers.py
@@ -1,26 +1,26 @@
from types import StringTypes
from django.contrib.auth import authenticate
from openstack.manager import OpenStackManager
-from core.models import Sliver, Slice
+from core.models import Instance, Slice
from core.api.images import _get_images
from core.api.slices import _get_slices
from core.api.deployment_networks import _get_deployment_networks
from core.api.nodes import _get_nodes
-def _get_slivers(filter):
+def _get_instances(filter):
if isinstance(filter, StringTypes) and filter.isdigit():
filter = int(filter)
if isinstance(filter, int):
- slivers = Sliver.objects.filter(id=filter)
+ instances = Instance.objects.filter(id=filter)
elif isinstance(filter, StringTypes):
- slivers = Sliver.objects.filter(name=filter)
+ instances = Instance.objects.filter(name=filter)
elif isinstance(filter, dict):
- slivers = Sliver.objects.filter(**filter)
+ instances = Instance.objects.filter(**filter)
else:
- slivers = []
- return slivers
+ instances = []
+ return instances
-def add_sliver(auth, fields):
+def add_instance(auth, fields):
user = authenticate(username=auth.get('username'),
password=auth.get('password'))
@@ -33,33 +33,33 @@
if deployment_networks: fields['deploymentNetwork'] = deployment_networks[0]
if nodes: fields['node'] = nodes[0]
- sliver = Sliver(**fields)
- auth['tenant'] = sliver.slice.name
- sliver.os_manager = OpenStackManager(auth=auth, caller = user)
- sliver.save()
- return sliver
+ instance = Instance(**fields)
+ auth['tenant'] = instance.slice.name
+ instance.os_manager = OpenStackManager(auth=auth, caller = user)
+ instance.save()
+ return instance
-def update_sliver(auth, sliver, **fields):
+def update_instance(auth, instance, **fields):
return
-def delete_sliver(auth, filter={}):
+def delete_instance(auth, filter={}):
user = authenticate(username=auth.get('username'),
password=auth.get('password'))
- slivers = _get_slivers(filter)
- for sliver in slivers:
- auth['tenant'] = sliver.slice.name
+ instances = _get_instances(filter)
+ for instance in instances:
+ auth['tenant'] = instance.slice.name
slice.os_manager = OpenStackManager(auth=auth, caller = user)
- sliver.delete()
+ instance.delete()
return 1
-def get_slivers(auth, filter={}):
+def get_instances(auth, filter={}):
user = authenticate(username=auth.get('username'),
password=auth.get('password'))
if 'slice' in filter:
slices = _get_slices(filter.get('slice'))
if slices: filter['slice'] = slices[0]
- slivers = _get_slivers(filter)
- return slivers
+ instances = _get_instances(filter)
+ return instances
diff --git a/xos/core/api_root.py b/xos/core/api_root.py
index 4ac267a..c3d69f1 100644
--- a/xos/core/api_root.py
+++ b/xos/core/api_root.py
@@ -15,7 +15,7 @@
'serviceresources': reverse('serviceresource-list', request=request, format=format),
'sites': reverse('site-list', request=request, format=format),
'slices': reverse('slice-list', request=request, format=format),
- 'slivers': reverse('sliver-list', request=request, format=format),
+ 'instances': reverse('instance-list', request=request, format=format),
'tags': reverse('tag-list', request=request, format=format),
'users': reverse('user-list', request=request, format=format),
})
diff --git a/xos/core/dashboard/sites.py b/xos/core/dashboard/sites.py
index b77a096..de100af 100644
--- a/xos/core/dashboard/sites.py
+++ b/xos/core/dashboard/sites.py
@@ -14,7 +14,7 @@
from django.conf.urls import patterns, url
from views import DashboardCustomize, DashboardDynamicView, SimulatorView, LoggedInView, \
DashboardUserSiteView, \
- TenantViewData, TenantCreateSlice, TenantAddUser,TenantAddOrRemoveSliverView, TenantPickSitesView, TenantDeleteSliceView, \
+ TenantViewData, TenantCreateSlice, TenantAddUser,TenantAddOrRemoveInstanceView, TenantPickSitesView, TenantDeleteSliceView, \
TenantUpdateSlice, DashboardSliceInteractions, RequestAccessView
from views import view_urls
@@ -46,8 +46,8 @@
name="welcome"),
url(r'^simulator/', self.admin_view(SimulatorView.as_view()),
name="simulator"),
- url(r'^tenantaddorremsliver/$', self.admin_view(TenantAddOrRemoveSliverView.as_view()),
- name="tenantaddorremsliver"),
+ url(r'^tenantaddorreminstance/$', self.admin_view(TenantAddOrRemoveInstanceView.as_view()),
+ name="tenantaddorreminstance"),
url(r'^tenantview/$', self.admin_view(TenantViewData.as_view()),
name="tenantview"),
url(r'^createnewslice/$', self.admin_view(TenantCreateSlice.as_view()),
diff --git a/xos/core/dashboard/views/__init__.py b/xos/core/dashboard/views/__init__.py
index bbe403b..8c693c8 100644
--- a/xos/core/dashboard/views/__init__.py
+++ b/xos/core/dashboard/views/__init__.py
@@ -1,7 +1,7 @@
#from home import DashboardWelcomeView, DashboardDynamicView
-#from tenant import TenantCreateSlice, TenantUpdateSlice, TenantDeleteSliceView, TenantAddOrRemoveSliverView, TenantPickSitesView, TenantViewData
+#from tenant import TenantCreateSlice, TenantUpdateSlice, TenantDeleteSliceView, TenantAddOrRemoveInstanceView, TenantPickSitesView, TenantViewData
#from simulator import SimulatorView
-#from cdn import DashboardSummaryAjaxView, DashboardAddOrRemoveSliverView, DashboardAjaxView
+#from cdn import DashboardSummaryAjaxView, DashboardAddOrRemoveInstanceView, DashboardAjaxView
#from analytics import DashboardAnalyticsAjaxView
#from customize import DashboardCustomize
#from interactions import DashboardSliceInteractions
diff --git a/xos/core/dashboard/views/download_ssh_commands.py b/xos/core/dashboard/views/download_ssh_commands.py
index 96d1393..92bcac4 100644
--- a/xos/core/dashboard/views/download_ssh_commands.py
+++ b/xos/core/dashboard/views/download_ssh_commands.py
@@ -9,8 +9,8 @@
def get(self, request, sliceid=None, **kwargs):
#slice = Slices.objects.get(id=sliceid);
- #for sliver in slice.slivers.all():
- # if (sliver.instance_id && sliver.instance_name):
+ #for instance in slice.instances.all():
+ # if (instance.instance_id && instance.instance_name):
slice = SlicePlus.objects.get(id=sliceid)
diff --git a/xos/core/dashboard/views/interactions.py b/xos/core/dashboard/views/interactions.py
index 89bc766..f74d01e 100644
--- a/xos/core/dashboard/views/interactions.py
+++ b/xos/core/dashboard/views/interactions.py
@@ -28,11 +28,11 @@
elif name=="sites":
result["title"] = "Slice interactions by site ownership"
result["objectName"] = "sites"
- elif name=="sliver_sites":
- result["title"] = "Slice interactions by sliver sites"
+ elif name=="instance_sites":
+ result["title"] = "Slice interactions by instance sites"
result["objectName"] = "sites"
- elif name=="sliver_nodes":
- result["title"] = "Slice interactions by sliver nodes"
+ elif name=="instance_nodes":
+ result["title"] = "Slice interactions by instance nodes"
result["objectName"] = "nodes"
return HttpResponse(json.dumps(result), content_type='application/javascript')
@@ -83,12 +83,12 @@
ids.append(sp.network.id)
elif name=="sites":
ids = [slice.site.id]
- elif name=="sliver_sites":
- for sp in slice.slivers.all():
+ elif name=="instance_sites":
+ for sp in slice.instances.all():
if sp.node.site.id not in ids:
ids.append(sp.node.site.id)
- elif name=="sliver_nodes":
- for sp in slice.slivers.all():
+ elif name=="instance_nodes":
+ for sp in slice.instances.all():
if sp.node.id not in ids:
ids.append(sp.node.id)
return ids
diff --git a/xos/core/dashboard/views/shell.py b/xos/core/dashboard/views/shell.py
index e852b16..c49133b 100644
--- a/xos/core/dashboard/views/shell.py
+++ b/xos/core/dashboard/views/shell.py
@@ -20,20 +20,20 @@
d2[k] = v
return d2
-def sliver_to_dict(sliver):
- d = model_to_dict(sliver)
- d["slice_id"] = sliver.slice.id
- d["node_id"] = sliver.node.id
+def instance_to_dict(instance):
+ d = model_to_dict(instance)
+ d["slice_id"] = instance.slice.id
+ d["node_id"] = instance.node.id
return d
def slice_to_dict(slice):
d = model_to_dict(slice)
- d["slivers"] = [sliver_to_dict(x) for x in slice.slivers]
+ d["instances"] = [instance_to_dict(x) for x in slice.instances]
return d
def node_to_dict(node):
d = model_to_dict(node)
- d["slivers"] = []
+ d["instances"] = []
class OpenCloudData:
@@ -43,7 +43,7 @@
def loadAll(self):
self.allNodes = list(Node.objects.all())
self.allSlices = list(Slice.objects.all())
- self.allSlivers = list(Sliver.objects.all())
+ self.allInstances = list(Instance.objects.all())
self.allSites = list(Site.objects.all())
self.site_id = {}
@@ -56,29 +56,29 @@
self.node_id = {}
for node in self.allNodes:
d = model_to_dict(node)
- d["sliver_ids"] = []
+ d["instance_ids"] = []
self.node_id[node.id] = ensure_serializable(d)
self.site_id[node.site_id]["node_ids"].append(node.id)
self.slice_id = {}
for slice in self.allSlices:
d = model_to_dict(slice)
- d["sliver_ids"] = []
+ d["instance_ids"] = []
self.slice_id[slice.id] = ensure_serializable(d)
self.site_id[slice.site_id]["slice_ids"].append(site.id)
print self.slice_id.keys()
- self.sliver_id = {}
- for sliver in self.allSlivers:
- self.sliver_id[sliver.id] = model_to_dict(sliver)
+ self.instance_id = {}
+ for instance in self.allInstances:
+ self.instance_id[instance.id] = model_to_dict(instance)
- self.slice_id[sliver.slice_id]["sliver_ids"].append(sliver.id)
- self.node_id[sliver.node_id]["sliver_ids"].append(sliver.id)
+ self.slice_id[instance.slice_id]["instance_ids"].append(instance.id)
+ self.node_id[instance.node_id]["instance_ids"].append(instance.id)
def get_opencloud_data(self):
return {"slices": self.slice_id.values(),
- "slivers": self.sliver_id.values(),
+ "instances": self.instance_id.values(),
"nodes": self.node_id.values(),
"sites": self.site_id.values()}
diff --git a/xos/core/dashboard/views/tenant.py b/xos/core/dashboard/views/tenant.py
index 951efc2..6fbc4d6 100644
--- a/xos/core/dashboard/views/tenant.py
+++ b/xos/core/dashboard/views/tenant.py
@@ -201,21 +201,21 @@
preferredImage = entry.image_preference
#sliceDataSet = entry.mount_data_sets
sliceNetwork = {}
- numSliver = 0
+ numInstance = 0
sliceImage=""
sliceSite = {}
sliceNode = {}
sliceInstance= {}
#createPrivateVolume(user,sliceName)
available_sites = getAvailableSites()
- for sliver in slice.slivers.all():
- if sliver.node.site.name in available_sites:
- sliceSite[sliver.node.site.name] = sliceSite.get(sliver.node.site.name,0) + 1
- sliceImage = sliver.image.name
- sliceNode[str(sliver)] = sliver.node.name
- numSliver = sum(sliceSite.values())
+ for instance in slice.instances.all():
+ if instance.node.site.name in available_sites:
+ sliceSite[instance.node.site.name] = sliceSite.get(instance.node.site.name,0) + 1
+ sliceImage = instance.image.name
+ sliceNode[str(instance)] = instance.node.name
+ numInstance = sum(sliceSite.values())
numSites = len(sliceSite)
- userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver,'instanceNodePair':sliceNode})
+ userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfInstances':numInstance,'instanceNodePair':sliceNode})
return userSliceInfo
def getTenantSitesInfo():
@@ -344,14 +344,14 @@
sliceToDel.delete()
return HttpResponse(json.dumps("Slice deleted"), content_type='application/javascript')
-class TenantAddOrRemoveSliverView(View):
- """ Add or remove slivers from a Slice
+class TenantAddOrRemoveInstanceView(View):
+ """ Add or remove instances from a Slice
Arguments:
siteName - name of site. If not specified, XOS will pick the
best site.,
actionToDo - [add | rem]
- count - number of slivers to add or remove
+ count - number of instances to add or remove
sliceName - name of slice
noAct - if set, no changes will be made to db, but result will still
show which sites would have been modified.
@@ -384,9 +384,9 @@
if (siteList is None):
siteList = tenant_pick_sites(user, user_ip, slice, count)
- sitesChanged = slice_increase_slivers(request.user, user_ip, siteList, slice, image, count, noAct)
+ sitesChanged = slice_increase_instances(request.user, user_ip, siteList, slice, image, count, noAct)
elif (actionToDo == "rem"):
- sitesChanged = slice_decrease_slivers(request.user, siteList, slice, count, noAct)
+ sitesChanged = slice_decrease_instances(request.user, siteList, slice, count, noAct)
else:
return HttpResponseServerError("Unknown actionToDo %s" % actionToDo)
@@ -411,16 +411,16 @@
def siteSortKey(site, slice=None, count=None, lat=None, lon=None):
# try to pick a site we're already using
- has_slivers_here=False
+ has_instances_here=False
if slice:
- for sliver in slice.slivers.all():
- if sliver.node.site.name == site.name:
- has_slivers_here=True
+ for instance in slice.instances.all():
+ if instance.node.site.name == site.name:
+ has_instances_here=True
# Haversine method
d = haversine(site.location.latitude, site.location.longitude, lat, lon)
- return (-has_slivers_here, d)
+ return (-has_instances_here, d)
def tenant_pick_sites(user, user_ip=None, slice=None, count=None):
""" Returns list of sites, sorted from most favorable to least favorable """
diff --git a/xos/core/dashboard/views/view_common.py b/xos/core/dashboard/views/view_common.py
index 37da7cf..0ef422e 100644
--- a/xos/core/dashboard/views/view_common.py
+++ b/xos/core/dashboard/views/view_common.py
@@ -66,67 +66,67 @@
continue
slice = slice[0]
slicename = slice.name
- sliverList=Sliver.objects.all()
+ instanceList=Instance.objects.all()
sites_used = {}
- for sliver in slice.slivers.all():
- #sites_used['deploymentSites'] = sliver.node.deployment.name
- # sites_used[sliver.image.name] = sliver.image.name
- sites_used[sliver.node.site_deployment.site] = 1 #sliver.numberCores
+ for instance in slice.instances.all():
+ #sites_used['deploymentSites'] = instance.node.deployment.name
+ # sites_used[instance.image.name] = instance.image.name
+ sites_used[instance.node.site_deployment.site] = 1 #instance.numberCores
sliceid = Slice.objects.get(id=entry.slice.id).id
try:
- sliverList = Sliver.objects.filter(slice=entry.slice.id)
+ instanceList = Instance.objects.filter(slice=entry.slice.id)
siteList = {}
- for x in sliverList:
+ for x in instanceList:
if x.node.site_deployment.site not in siteList:
siteList[x.node.site_deployment.site] = 1
- slivercount = len(sliverList)
+ instancecount = len(instanceList)
sitecount = len(siteList)
except:
traceback.print_exc()
- slivercount = 0
+ instancecount = 0
sitecount = 0
userSliceInfo.append({'slicename': slicename, 'sliceid':sliceid,
'sitesUsed':sites_used,
'role': SliceRole.objects.get(id=entry.role.id).role,
- 'slivercount': slivercount,
+ 'instancecount': instancecount,
'sitecount':sitecount})
return userSliceInfo
-def slice_increase_slivers(user, user_ip, siteList, slice, image, count, noAct=False):
+def slice_increase_instances(user, user_ip, siteList, slice, image, count, noAct=False):
sitesChanged = {}
- # let's compute how many slivers are in use in each node of each site
+ # let's compute how many instances are in use in each node of each site
for site in siteList:
site.nodeList = list(site.nodes.all())
for node in site.nodeList:
- node.sliverCount = 0
- for sliver in node.slivers.all():
- if sliver.slice.id == slice.id:
- node.sliverCount = node.sliverCount + 1
+ node.instanceCount = 0
+ for instance in node.instances.all():
+ if instance.slice.id == slice.id:
+ node.instanceCount = node.instanceCount + 1
- # Allocate slivers to nodes
- # for now, assume we want to allocate all slivers from the same site
+ # Allocate instances to nodes
+ # for now, assume we want to allocate all instances from the same site
nodes = siteList[0].nodeList
while (count>0):
- # Sort the node list by number of slivers per node, then pick the
- # node with the least number of slivers.
- nodes = sorted(nodes, key=attrgetter("sliverCount"))
+ # Sort the node list by number of instances per node, then pick the
+ # node with the least number of instances.
+ nodes = sorted(nodes, key=attrgetter("instanceCount"))
node = nodes[0]
- print "adding sliver at node", node.name, "of site", node.site.name
+ print "adding instance at node", node.name, "of site", node.site.name
if not noAct:
- sliver = Sliver(name=node.name,
+ instance = Instance(name=node.name,
slice=slice,
node=node,
image = image,
creator = User.objects.get(email=user),
deploymentNetwork=node.deployment)
- sliver.save()
+ instance.save()
- node.sliverCount = node.sliverCount + 1
+ node.instanceCount = node.instanceCount + 1
count = count - 1
@@ -134,20 +134,20 @@
return sitesChanged
-def slice_decrease_slivers(user, siteList, slice, count, noAct=False):
+def slice_decrease_instances(user, siteList, slice, count, noAct=False):
sitesChanged = {}
if siteList:
siteNames = [site.name for site in siteList]
else:
siteNames = None
- for sliver in list(slice.slivers.all()):
+ for instance in list(slice.instances.all()):
if count>0:
- if(not siteNames) or (sliver.node.site.name in siteNames):
- sliver.delete()
- print "deleting sliver",sliver.name,"at node",sliver.node.name
+ if(not siteNames) or (instance.node.site.name in siteNames):
+ instance.delete()
+ print "deleting instance",instance.name,"at node",instance.node.name
count=count-1
- sitesChanged[sliver.node.site.name] = sitesChanged.get(sliver.node.site.name,0) - 1
+ sitesChanged[instance.node.site.name] = sitesChanged.get(instance.node.site.name,0) - 1
return sitesChanged
diff --git a/xos/core/migrations/0001_initial.py b/xos/core/migrations/0001_initial.py
index fe34224..db7dad0 100644
--- a/xos/core/migrations/0001_initial.py
+++ b/xos/core/migrations/0001_initial.py
@@ -3,7 +3,7 @@
from django.db import models, migrations
import timezones.fields
-import core.models.sliver
+import core.models.instance
import core.models.network
import geoposition.fields
import encrypted_fields.fields
@@ -528,7 +528,7 @@
bases=(models.Model,),
),
migrations.CreateModel(
- name='NetworkSliver',
+ name='NetworkInstance',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('created', models.DateTimeField(default=django.utils.timezone.now, auto_now_add=True)),
@@ -537,9 +537,9 @@
('policed', models.DateTimeField(default=None, null=True, blank=True)),
('backend_status', models.CharField(default=b'Provisioning in progress', max_length=140)),
('deleted', models.BooleanField(default=False)),
- ('ip', models.GenericIPAddressField(help_text=b'Sliver ip address', null=True, blank=True)),
+ ('ip', models.GenericIPAddressField(help_text=b'Instance ip address', null=True, blank=True)),
('port_id', models.CharField(help_text=b'Quantum port id', max_length=256, null=True, blank=True)),
- ('network', models.ForeignKey(related_name=b'networkslivers', to='core.Network')),
+ ('network', models.ForeignKey(related_name=b'networkinstances', to='core.Network')),
],
options={
'abstract': False,
@@ -952,7 +952,7 @@
('omf_friendly', models.BooleanField(default=False)),
('description', models.TextField(help_text=b'High level description of the slice and expected activities', max_length=1024, blank=True)),
('slice_url', models.URLField(max_length=512, blank=True)),
- ('max_slivers', models.IntegerField(default=10)),
+ ('max_instances', models.IntegerField(default=10)),
('network', models.CharField(default=b'Private Only', max_length=256, null=True, blank=True)),
('mount_data_sets', models.CharField(default=b'GenBank', max_length=256, null=True, blank=True)),
('creator', models.ForeignKey(related_name=b'slices', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
@@ -1040,7 +1040,7 @@
bases=(models.Model,),
),
migrations.CreateModel(
- name='Sliver',
+ name='Instance',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('created', models.DateTimeField(default=django.utils.timezone.now, auto_now_add=True)),
@@ -1051,17 +1051,17 @@
('deleted', models.BooleanField(default=False)),
('instance_id', models.CharField(help_text=b'Nova instance id', max_length=200, null=True, blank=True)),
('instance_uuid', models.CharField(help_text=b'Nova instance uuid', max_length=200, null=True, blank=True)),
- ('name', models.CharField(help_text=b'Sliver name', max_length=200)),
+ ('name', models.CharField(help_text=b'Instance name', max_length=200)),
('instance_name', models.CharField(help_text=b'OpenStack generated name', max_length=200, null=True, blank=True)),
- ('ip', models.GenericIPAddressField(help_text=b'Sliver ip address', null=True, blank=True)),
- ('numberCores', models.IntegerField(default=0, help_text=b'Number of cores for sliver', verbose_name=b'Number of Cores')),
+ ('ip', models.GenericIPAddressField(help_text=b'Instance ip address', null=True, blank=True)),
+ ('numberCores', models.IntegerField(default=0, help_text=b'Number of cores for instance', verbose_name=b'Number of Cores')),
('userData', models.TextField(help_text=b'user_data passed to instance during creation', null=True, blank=True)),
- ('creator', models.ForeignKey(related_name=b'slivers', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
- ('deployment', models.ForeignKey(related_name=b'sliver_deployment', verbose_name=b'deployment', to='core.Deployment')),
- ('flavor', models.ForeignKey(default=core.models.sliver.get_default_flavor, to='core.Flavor', help_text=b'Flavor of this instance')),
- ('image', models.ForeignKey(related_name=b'slivers', to='core.Image')),
- ('node', models.ForeignKey(related_name=b'slivers', to='core.Node')),
- ('slice', models.ForeignKey(related_name=b'slivers', to='core.Slice')),
+ ('creator', models.ForeignKey(related_name=b'instances', blank=True, to=settings.AUTH_USER_MODEL, null=True)),
+ ('deployment', models.ForeignKey(related_name=b'instance_deployment', verbose_name=b'deployment', to='core.Deployment')),
+ ('flavor', models.ForeignKey(default=core.models.instance.get_default_flavor, to='core.Flavor', help_text=b'Flavor of this instance')),
+ ('image', models.ForeignKey(related_name=b'instances', to='core.Image')),
+ ('node', models.ForeignKey(related_name=b'instances', to='core.Node')),
+ ('slice', models.ForeignKey(related_name=b'instances', to='core.Slice')),
],
options={
'abstract': False,
@@ -1207,8 +1207,8 @@
),
migrations.AddField(
model_name='reservedresource',
- name='sliver',
- field=models.ForeignKey(related_name=b'reservedresources', to='core.Sliver'),
+ name='instance',
+ field=models.ForeignKey(related_name=b'reservedresources', to='core.Instance'),
preserve_default=True,
),
migrations.AddField(
@@ -1242,9 +1242,9 @@
preserve_default=True,
),
migrations.AddField(
- model_name='networksliver',
- name='sliver',
- field=models.ForeignKey(related_name=b'networkslivers', to='core.Sliver'),
+ model_name='networkinstance',
+ name='instance',
+ field=models.ForeignKey(related_name=b'networkinstances', to='core.Instance'),
preserve_default=True,
),
migrations.AddField(
@@ -1279,8 +1279,8 @@
),
migrations.AddField(
model_name='network',
- name='slivers',
- field=models.ManyToManyField(related_name=b'networks', through='core.NetworkSliver', to='core.Sliver', blank=True),
+ name='instances',
+ field=models.ManyToManyField(related_name=b'networks', through='core.NetworkInstance', to='core.Instance', blank=True),
preserve_default=True,
),
migrations.AddField(
diff --git a/xos/core/migrations/0011_sliver_instance_uuid.py b/xos/core/migrations/0011_sliver_instance_uuid.py
index dd8d05c..3320158 100644
--- a/xos/core/migrations/0011_sliver_instance_uuid.py
+++ b/xos/core/migrations/0011_sliver_instance_uuid.py
@@ -12,7 +12,7 @@
operations = [
migrations.AddField(
- model_name='sliver',
+ model_name='instance',
name='instance_uuid',
field=models.CharField(help_text=b'Nova instance uuid', max_length=200, null=True, blank=True),
preserve_default=True,
diff --git a/xos/core/models/__init__.py b/xos/core/models/__init__.py
index 6ade26b..77f503a 100644
--- a/xos/core/models/__init__.py
+++ b/xos/core/models/__init__.py
@@ -23,10 +23,10 @@
from .site import SitePrivilege
from .node import Node
from .slicetag import SliceTag
-from .sliver import Sliver
+from .instance import Instance
from .reservation import ReservedResource
from .reservation import Reservation
-from .network import Network, NetworkParameterType, NetworkParameter, NetworkSliver, NetworkTemplate, Router, NetworkSlice, ControllerNetwork
+from .network import Network, NetworkParameterType, NetworkParameter, NetworkInstance, NetworkTemplate, Router, NetworkSlice, ControllerNetwork
from .billing import Account, Invoice, Charge, UsableObject, Payment
from .program import Program
diff --git a/xos/core/models/billing.py b/xos/core/models/billing.py
index 765e42f..6e517b4 100644
--- a/xos/core/models/billing.py
+++ b/xos/core/models/billing.py
@@ -2,7 +2,7 @@
import os
import socket
from django.db import models
-from core.models import PlCoreBase, Site, Slice, Sliver, Deployment
+from core.models import PlCoreBase, Site, Slice, Instance, Deployment
from core.models.plcorebase import StrippedCharField
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
diff --git a/xos/core/models/network.py b/xos/core/models/network.py
index 57049e9..edaffe2 100644
--- a/xos/core/models/network.py
+++ b/xos/core/models/network.py
@@ -2,7 +2,7 @@
import socket
import sys
from django.db import models
-from core.models import PlCoreBase, Site, Slice, Sliver, Controller
+from core.models import PlCoreBase, Site, Slice, Instance, Controller
from core.models import ControllerLinkManager,ControllerLinkDeletionManager
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
@@ -108,7 +108,7 @@
permit_all_slices = models.BooleanField(default=False)
permitted_slices = models.ManyToManyField(Slice, blank=True, related_name="availableNetworks")
slices = models.ManyToManyField(Slice, blank=True, related_name="networks", through="NetworkSlice")
- slivers = models.ManyToManyField(Sliver, blank=True, related_name="networks", through="NetworkSliver")
+ instances = models.ManyToManyField(Instance, blank=True, related_name="networks", through="NetworkInstance")
topology_parameters = models.TextField(null=True, blank=True)
controller_url = models.CharField(null=True, blank=True, max_length=1024)
@@ -182,9 +182,9 @@
def save(self, *args, **kwds):
slice = self.slice
if (slice not in self.network.permitted_slices.all()) and (slice != self.network.owner) and (not self.network.permit_all_slices):
- # to add a sliver to the network, then one of the following must be true:
- # 1) sliver's slice is in network's permittedSlices list,
- # 2) sliver's slice is network's owner, or
+ # to add a instance to the network, then one of the following must be true:
+ # 1) instance's slice is in network's permittedSlices list,
+ # 2) instance's slice is network's owner, or
# 3) network's permitAllSlices is true
raise ValueError("Slice %s is not allowed to connect to network %s" % (str(slice), str(self.network)))
@@ -204,44 +204,44 @@
qs = NetworkSlice.objects.filter(id__in=slice_ids)
return qs
-class NetworkSliver(PlCoreBase):
- network = models.ForeignKey(Network,related_name='networkslivers')
- sliver = models.ForeignKey(Sliver, null=True, blank=True, related_name='networkslivers')
- ip = models.GenericIPAddressField(help_text="Sliver ip address", blank=True, null=True)
+class NetworkInstance(PlCoreBase):
+ network = models.ForeignKey(Network,related_name='networkinstances')
+ instance = models.ForeignKey(Instance, null=True, blank=True, related_name='networkinstances')
+ ip = models.GenericIPAddressField(help_text="Instance ip address", blank=True, null=True)
port_id = models.CharField(null=True, blank=True, max_length=256, help_text="Quantum port id")
reserve = models.BooleanField(default=False, help_text="Reserve this port for future use")
class Meta:
- unique_together = ('network', 'sliver')
+ unique_together = ('network', 'instance')
def save(self, *args, **kwds):
- if self.sliver:
- slice = self.sliver.slice
+ if self.instance:
+ slice = self.instance.slice
if (slice not in self.network.permitted_slices.all()) and (slice != self.network.owner) and (not self.network.permit_all_slices):
- # to add a sliver to the network, then one of the following must be true:
- # 1) sliver's slice is in network's permittedSlices list,
- # 2) sliver's slice is network's owner, or
+ # to add a instance to the network, then one of the following must be true:
+ # 1) instance's slice is in network's permittedSlices list,
+ # 2) instance's slice is network's owner, or
# 3) network's permitAllSlices is true
raise ValueError("Slice %s is not allowed to connect to network %s" % (str(slice), str(self.network)))
- if (not self.sliver) and (not self.reserve):
- raise ValueError("If NetworkSliver.sliver is false, then NetworkSliver.reserved must be set to True")
+ if (not self.instance) and (not self.reserve):
+ raise ValueError("If NetworkInstance.instance is false, then NetworkInstance.reserved must be set to True")
if (not self.ip) and (NO_OBSERVER):
from util.network_subnet_allocator import find_unused_address
self.ip = find_unused_address(self.network.subnet,
- [x.ip for x in self.network.networksliver_set.all()])
- super(NetworkSliver, self).save(*args, **kwds)
+ [x.ip for x in self.network.networkinstance_set.all()])
+ super(NetworkInstance, self).save(*args, **kwds)
def __unicode__(self):
- if self.sliver:
- return u'%s-%s' % (self.network.name, self.sliver.instance_name)
+ if self.instance:
+ return u'%s-%s' % (self.network.name, self.instance.instance_name)
else:
return u'%s-reserved-%s' % (self.network.name, self.id)
def can_update(self, user):
- if self.sliver:
- return user.can_update_slice(self.sliver.slice)
+ if self.instance:
+ return user.can_update_slice(self.instance.slice)
if self.network:
return user.can_update_slice(self.network.owner)
return False
@@ -249,10 +249,10 @@
@staticmethod
def select_by_user(user):
if user.is_admin:
- qs = NetworkSliver.objects.all()
+ qs = NetworkInstance.objects.all()
else:
- sliver_ids = [s.id for s in NetworkSliver.select_by_user(user)]
- qs = NetworkSliver.objects.filter(id__in=sliver_ids)
+ instance_ids = [s.id for s in NetworkInstance.select_by_user(user)]
+ qs = NetworkInstance.objects.filter(id__in=instance_ids)
return qs
class Router(PlCoreBase):
diff --git a/xos/core/models/reservation.py b/xos/core/models/reservation.py
index 1a838a2..ecf207c 100644
--- a/xos/core/models/reservation.py
+++ b/xos/core/models/reservation.py
@@ -2,7 +2,7 @@
import datetime
from django.db import models
from core.models import PlCoreBase
-from core.models import Sliver
+from core.models import Instance
from core.models import Slice
from core.models import ServiceResource
@@ -32,7 +32,7 @@
return qs
class ReservedResource(PlCoreBase):
- sliver = models.ForeignKey(Sliver, related_name="reservedresources")
+ instance = models.ForeignKey(Instance, related_name="reservedresources")
resource = models.ForeignKey(ServiceResource, related_name="reservedresources")
quantity = models.IntegerField(default=1)
reservationSet = models.ForeignKey(Reservation, related_name="reservedresources")
@@ -40,18 +40,18 @@
class Meta(PlCoreBase.Meta):
verbose_name_plural = "Reserved Resources"
- def __unicode__(self): return u'%d %s on %s' % (self.quantity, self.resource, self.sliver)
+ def __unicode__(self): return u'%d %s on %s' % (self.quantity, self.resource, self.instance)
def can_update(self, user):
- return user.can_update(self.sliver.slice)
+ return user.can_update(self.instance.slice)
@staticmethod
def select_by_user(user):
if user.is_admin:
qs = ReservedResource.objects.all()
else:
- sliver_ids = [s.id for s in Sliver.select_by_user(user)]
- qs = ReservedResource.objects.filter(id__in=sliver_ids)
+ instance_ids = [s.id for s in Instance.select_by_user(user)]
+ qs = ReservedResource.objects.filter(id__in=instance_ids)
return qs
diff --git a/xos/core/models/service.py b/xos/core/models/service.py
index 0940176..6eed241 100644
--- a/xos/core/models/service.py
+++ b/xos/core/models/service.py
@@ -88,25 +88,25 @@
Get a list of nodes that can be used to scale up a slice.
slice - slice to scale up
- max_per_node - maximum numbers of slivers that 'slice' can have on a single node
+ max_per_node - maximum numbers of instances that 'slice' can have on a single node
exclusive_slices - list of slices that must have no nodes in common with 'slice'.
"""
- from core.models import Node, Sliver # late import to get around order-of-imports constraint in __init__.py
+ from core.models import Node, Instance # late import to get around order-of-imports constraint in __init__.py
nodes = list(Node.objects.all())
- conflicting_slivers = Sliver.objects.filter(slice__in = exclusive_slices)
- conflicting_nodes = Node.objects.filter(slivers__in = conflicting_slivers)
+ conflicting_instances = Instance.objects.filter(slice__in = exclusive_slices)
+ conflicting_nodes = Node.objects.filter(instances__in = conflicting_instances)
nodes = [x for x in nodes if x not in conflicting_nodes]
- # If max_per_node is set, then limit the number of slivers this slice
+ # If max_per_node is set, then limit the number of instances this slice
# can have on a single node.
if max_per_node:
acceptable_nodes = []
for node in nodes:
- existing_count = node.slivers.filter(slice=slice).count()
+ existing_count = node.instances.filter(slice=slice).count()
if existing_count < max_per_node:
acceptable_nodes.append(node)
nodes = acceptable_nodes
@@ -117,22 +117,22 @@
# Pick the best node to scale up a slice.
nodes = self.get_scalable_nodes(slice, max_per_node, exclusive_slices)
- nodes = sorted(nodes, key=lambda node: node.slivers.all().count())
+ nodes = sorted(nodes, key=lambda node: node.instances.all().count())
if not nodes:
return None
return nodes[0]
def adjust_scale(self, slice_hint, scale, max_per_node=None, exclusive_slices=[]):
- from core.models import Sliver # late import to get around order-of-imports constraint in __init__.py
+ from core.models import Instance # late import to get around order-of-imports constraint in __init__.py
slices = [x for x in self.slices.all() if slice_hint in x.name]
for slice in slices:
- while slice.slivers.all().count() > scale:
- s = slice.slivers.all()[0]
- # print "drop sliver", s
+ while slice.instances.all().count() > scale:
+ s = slice.instances.all()[0]
+ # print "drop instance", s
s.delete()
- while slice.slivers.all().count() < scale:
+ while slice.instances.all().count() < scale:
node = self.pick_node(slice, max_per_node, exclusive_slices)
if not node:
# no more available nodes
@@ -146,7 +146,7 @@
if not flavor:
raise XOSConfigurationError("No default_flavor for slice %s" % slice.name)
- s = Sliver(slice=slice,
+ s = Instance(slice=slice,
node=node,
creator=slice.creator,
image=image,
@@ -154,7 +154,7 @@
deployment=node.site_deployment.deployment)
s.save()
- # print "add sliver", s
+ # print "add instance", s
class ServiceAttribute(PlCoreBase):
name = models.SlugField(help_text="Attribute Name", max_length=128)
diff --git a/xos/core/models/slice.py b/xos/core/models/slice.py
index 76f5041..18d3cb6 100644
--- a/xos/core/models/slice.py
+++ b/xos/core/models/slice.py
@@ -25,7 +25,7 @@
description=models.TextField(blank=True,help_text="High level description of the slice and expected activities", max_length=1024)
slice_url = models.URLField(blank=True, max_length=512)
site = models.ForeignKey(Site, related_name='slices', help_text="The Site this Slice belongs to")
- max_slivers = models.IntegerField(default=10)
+ max_instances = models.IntegerField(default=10)
service = models.ForeignKey(Service, related_name='slices', null=True, blank=True)
network = StrippedCharField(default="Private Only",null=True, blank=True, max_length=256)
tags = generic.GenericRelation(Tag)
@@ -192,4 +192,4 @@
return monitor.get_meter('network.outgoing.bytes',filter,None)
def get_node_stats(self):
- return len(self.slice.slivers)
+ return len(self.slice.instances)
diff --git a/xos/core/models/sliver.py b/xos/core/models/sliver.py
index 7df125e..a248c60 100644
--- a/xos/core/models/sliver.py
+++ b/xos/core/models/sliver.py
@@ -21,7 +21,7 @@
config = Config()
def get_default_flavor(controller = None):
- # Find a default flavor that can be used for a sliver. This is particularly
+ # 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
@@ -39,9 +39,9 @@
return flavors[0]
-class SliverDeletionManager(PlCoreBaseDeletionManager):
+class InstanceDeletionManager(PlCoreBaseDeletionManager):
def get_queryset(self):
- parent=super(SliverDeletionManager, self)
+ parent=super(InstanceDeletionManager, self)
try:
backend_type = config.observer_backend_type
except AttributeError:
@@ -58,9 +58,9 @@
return self.get_queryset()
-class SliverManager(PlCoreBaseManager):
+class InstanceManager(PlCoreBaseManager):
def get_queryset(self):
- parent=super(SliverManager, self)
+ parent=super(InstanceManager, self)
try:
backend_type = config.observer_backend_type
@@ -79,21 +79,21 @@
return self.get_queryset()
# Create your models here.
-class Sliver(PlCoreBase):
- objects = SliverManager()
- deleted_objects = SliverDeletionManager()
+class Instance(PlCoreBase):
+ objects = InstanceManager()
+ deleted_objects = InstanceDeletionManager()
instance_id = StrippedCharField(null=True, blank=True, max_length=200, help_text="Nova instance id")
instance_uuid = StrippedCharField(null=True, blank=True, max_length=200, help_text="Nova instance uuid")
- name = StrippedCharField(max_length=200, help_text="Sliver name")
+ name = StrippedCharField(max_length=200, help_text="Instance name")
instance_name = StrippedCharField(blank=True, null=True, max_length=200, help_text="OpenStack generated name")
- ip = models.GenericIPAddressField(help_text="Sliver ip address", blank=True, null=True)
- image = models.ForeignKey(Image, related_name='slivers')
- #key = models.ForeignKey(Key, related_name='slivers')
- creator = models.ForeignKey(User, related_name='slivers', blank=True, null=True)
- slice = models.ForeignKey(Slice, related_name='slivers')
- deployment = models.ForeignKey(Deployment, verbose_name='deployment', related_name='sliver_deployment')
- node = models.ForeignKey(Node, related_name='slivers')
- numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for sliver", default=0)
+ ip = models.GenericIPAddressField(help_text="Instance ip address", blank=True, null=True)
+ image = models.ForeignKey(Image, related_name='instances')
+ #key = models.ForeignKey(Key, related_name='instances')
+ creator = models.ForeignKey(User, related_name='instances', blank=True, null=True)
+ slice = models.ForeignKey(Slice, related_name='instances')
+ deployment = models.ForeignKey(Deployment, verbose_name='deployment', related_name='instance_deployment')
+ node = models.ForeignKey(Node, related_name='instances')
+ numberCores = models.IntegerField(verbose_name="Number of Cores", help_text="Number of cores for instance", default=0)
flavor = models.ForeignKey(Flavor, help_text="Flavor of this instance", default=get_default_flavor)
tags = generic.GenericRelation(Tag)
userData = models.TextField(blank=True, null=True, help_text="user_data passed to instance during creation")
@@ -101,16 +101,16 @@
def __unicode__(self):
if self.name and Slice.objects.filter(id=self.slice_id) and (self.name != self.slice.name):
# NOTE: The weird check on self.slice_id was due to a problem when
- # deleting the slice before the sliver.
+ # deleting the slice before the instance.
return u'%s' % self.name
elif self.instance_name:
return u'%s' % (self.instance_name)
elif self.id:
return u'uninstantiated-%s' % str(self.id)
elif self.slice:
- return u'unsaved-sliver on %s' % self.slice.name
+ return u'unsaved-instance on %s' % self.slice.name
else:
- return u'unsaved-sliver'
+ return u'unsaved-instance'
def save(self, *args, **kwds):
if not self.name:
@@ -118,27 +118,27 @@
if not self.creator and hasattr(self, 'caller'):
self.creator = self.caller
if not self.creator:
- raise ValidationError('sliver has no creator')
+ raise ValidationError('instance has no creator')
if (self.slice.creator != self.creator):
# Check to make sure there's a slice_privilege for the user. If there
# isn't, then keystone will throw an exception inside the observer.
slice_privs = SlicePrivilege.objects.filter(slice=self.slice, user=self.creator)
if not slice_privs:
- raise ValidationError('sliver creator has no privileges on slice')
+ raise ValidationError('instance creator has no privileges on slice')
# XXX smbaker - disabled for now, was causing fault in tenant view create slice
# if not self.controllerNetwork.test_acl(slice=self.slice):
# raise exceptions.ValidationError("Deployment %s's ACL does not allow any of this slice %s's users" % (self.controllerNetwork.name, self.slice.name))
- super(Sliver, self).save(*args, **kwds)
+ super(Instance, self).save(*args, **kwds)
def can_update(self, user):
return user.can_update_slice(self.slice)
def all_ips(self):
ips={}
- for ns in self.networkslivers.all():
+ for ns in self.networkinstances.all():
if ns.ip:
ips[ns.network.name] = ns.ip
return ips
@@ -153,7 +153,7 @@
all_ips_string.short_description = "addresses"
def get_public_ip(self):
- for ns in self.networkslivers.all():
+ for ns in self.networkinstances.all():
if (ns.ip) and (ns.network.template.visibility=="public") and (ns.network.template.translation=="none"):
return ns.ip
return None
@@ -161,18 +161,18 @@
@staticmethod
def select_by_user(user):
if user.is_admin:
- qs = Sliver.objects.all()
+ qs = Instance.objects.all()
else:
slices = Slice.select_by_user(user)
- qs = Sliver.objects.filter(slice__in=slices)
+ qs = Instance.objects.filter(slice__in=slices)
return qs
def get_cpu_stats(self):
- filter = 'instance_id=%s'%self.sliver_id
+ filter = 'instance_id=%s'%self.instance_id
return monitor.get_meter('cpu',filter,None)
def get_bw_stats(self):
- filter = 'instance_id=%s'%self.sliver_id
+ filter = 'instance_id=%s'%self.instance_id
return monitor.get_meter('network.outgoing.bytes',filter,None)
def get_node_stats(self):
@@ -206,4 +206,4 @@
except:
instance.controller = None
-models.signals.post_init.connect(controller_setter, Sliver)
+models.signals.post_init.connect(controller_setter, Instance)
diff --git a/xos/core/models/user.py b/xos/core/models/user.py
index fc195d2..37b3ca2 100644
--- a/xos/core/models/user.py
+++ b/xos/core/models/user.py
@@ -339,8 +339,8 @@
def get_readable_objects(self, filter=None):
""" Returns a list of objects that the user is allowed to read. """
- from core.models import Deployment, Network, Site, Slice, SliceTag, Sliver, Tag, User
- models = [Deployment, Network, Site, Slice, SliceTag, Sliver, Tag, User]
+ from core.models import Deployment, Network, Site, Slice, SliceTag, Instance, Tag, User
+ models = [Deployment, Network, Site, Slice, SliceTag, Instance, Tag, User]
readable_objects = []
for model in models:
readable_objects.extend(model.select_by_user(self))
@@ -364,7 +364,7 @@
deployment_priv_objs = [Image, NetworkTemplate, Flavor]
site_priv_objs = [Node, Slice, User]
- slice_priv_objs = [Sliver, Network]
+ slice_priv_objs = [Instance, Network]
# maps the set of objects a paticular role has write access
write_map = {
diff --git a/xos/core/serializers.py b/xos/core/serializers.py
index 3fb726d..d84f111 100644
--- a/xos/core/serializers.py
+++ b/xos/core/serializers.py
@@ -109,7 +109,7 @@
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
site = serializers.HyperlinkedRelatedField(view_name='site-detail')
- slivers = serializers.HyperlinkedRelatedField(view_name='sliver-detail')
+ instances = serializers.HyperlinkedRelatedField(view_name='instance-detail')
class Meta:
model = Slice
fields = ('id',
@@ -128,7 +128,7 @@
'network',
'mountDataSets',
'site',
- 'slivers',
+ 'instances',
'updated',
'created')
@@ -185,7 +185,7 @@
'site',
'role')
-class SliverSerializer(serializers.HyperlinkedModelSerializer):
+class InstanceSerializer(serializers.HyperlinkedModelSerializer):
# HyperlinkedModelSerializer doesn't include the id by default
id = serializers.Field()
image = serializers.HyperlinkedRelatedField(view_name='image-detail')
@@ -196,7 +196,7 @@
#slice = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
- model = Sliver
+ model = Instance
fields = ('id',
'url',
'instance_id',
@@ -261,7 +261,7 @@
SitePrivilege: SitePrivilegeSerializer,
Slice: SliceSerializer,
SlicePrivilege: SlicePrivilegeSerializer,
- Sliver: SliverSerializer,
+ Instance: InstanceSerializer,
Tag: TagSerializer,
User: UserSerializer,
None: None,
diff --git a/xos/core/tests.py b/xos/core/tests.py
index a02497e..e3d7faa 100644
--- a/xos/core/tests.py
+++ b/xos/core/tests.py
@@ -7,7 +7,7 @@
from datetime import datetime
FIXTURES_FILE = 'core/fixtures/initial_data.json'
-MODELS = ['Deployment','Image','Node','Reservation','Slice','Sliver','User']
+MODELS = ['Deployment','Image','Node','Reservation','Slice','Instance','User']
def is_dynamic_type(x):
t = type(x)
diff --git a/xos/core/views/hpc_config.py b/xos/core/views/hpc_config.py
index af183bf..c83c01b 100644
--- a/xos/core/views/hpc_config.py
+++ b/xos/core/views/hpc_config.py
@@ -58,11 +58,11 @@
if not cmiSlice:
return HttpResponseServerError("Error: no CMI slice")
- if len(cmiSlice.slivers.all())==0:
- return HttpResponseServerError("Error: CMI slice has no slivers")
+ if len(cmiSlice.instances.all())==0:
+ return HttpResponseServerError("Error: CMI slice has no instances")
# for now, assuming using NAT
- cmi_hostname = cmiSlice.slivers.all()[0].node.name
+ cmi_hostname = cmiSlice.instances.all()[0].node.name
if not hpcSlice:
return HttpResponseServerError("Error: no HPC slice")
diff --git a/xos/core/views/legacyapi.py b/xos/core/views/legacyapi.py
index 3c9f50a..040b8df 100644
--- a/xos/core/views/legacyapi.py
+++ b/xos/core/views/legacyapi.py
@@ -6,7 +6,7 @@
import traceback
import xmlrpclib
-from core.models import Slice, Sliver, ServiceClass, Reservation, Tag, Network, User, Node, Image, Deployment, Site, NetworkTemplate, NetworkSlice
+from core.models import Slice, Instance, ServiceClass, Reservation, Tag, Network, User, Node, Image, Deployment, Site, NetworkTemplate, NetworkSlice
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
@@ -52,8 +52,8 @@
continue
node_ids=[]
- for ps_sliver in ps_slice.slivers.all():
- node_ids.append(ps_id_to_pl_id(ps_sliver.node.id))
+ for ps_instance in ps_slice.instances.all():
+ node_ids.append(ps_id_to_pl_id(ps_instance.node.id))
slice = {"instantiation": "plc-instantiated",
"description": "XOS slice",
@@ -81,8 +81,8 @@
nodes = []
for ps_node in ps_nodes:
slice_ids=[]
- for ps_sliver in ps_node.slivers.all():
- slice_ids.append(pl_slice_id(ps_sliver.slice, slice_remap))
+ for ps_instance in ps_node.instances.all():
+ slice_ids.append(pl_slice_id(ps_instance.slice, slice_remap))
node = {"node_id": ps_id_to_pl_id(ps_node.id),
"site_id": ps_id_to_pl_id(ps_node.site_id),
@@ -125,7 +125,7 @@
"node_ids": node_ids,
"pcu_ids": [],
"max_slices": 100,
- "max_slivers": 1000,
+ "max_instances": 1000,
"is_public": False,
"peer_site_id": None,
"abbrebiated_name": ps_site.abbreviated_name,
@@ -150,53 +150,53 @@
interfaces = []
ps_slices = Slice.objects.filter(name=slicename)
for ps_slice in ps_slices:
- for ps_sliver in ps_slice.slivers.all():
- node_id = ps_id_to_pl_id(ps_sliver.node_id)
+ for ps_instance in ps_slice.instances.all():
+ node_id = ps_id_to_pl_id(ps_instance.node_id)
if node_id in node_ids:
- ps_node = ps_sliver.node
+ ps_node = ps_instance.node
ip = socket.gethostbyname(ps_node.name.strip())
# If the slice has a network that's labeled for hpc_client, then
# return that network.
found_labeled_network = False
- for networkSliver in ps_sliver.networkslivers.all():
- if (not networkSliver.ip):
+ for networkInstance in ps_instance.networkinstances.all():
+ if (not networkInstance.ip):
continue
- if (networkSliver.network.owner != ps_slice):
+ if (networkInstance.network.owner != ps_slice):
continue
- if networkSliver.network.labels and ("hpc_client" in networkSliver.network.labels):
- ip=networkSliver.ip
+ if networkInstance.network.labels and ("hpc_client" in networkInstance.network.labels):
+ ip=networkInstance.ip
found_labeled_network = True
if not found_labeled_network:
# search for a dedicated public IP address
- for networkSliver in ps_sliver.networkslivers.all():
- if (not networkSliver.ip):
+ for networkInstance in ps_instance.networkinstances.all():
+ if (not networkInstance.ip):
continue
- template = networkSliver.network.template
+ template = networkInstance.network.template
if (template.visibility=="public") and (template.translation=="none"):
- ip=networkSliver.ip
+ ip=networkInstance.ip
if return_nat:
ip = None
- for networkSliver in ps_sliver.networkslivers.all():
- if (not networkSliver.ip):
+ for networkInstance in ps_instance.networkinstances.all():
+ if (not networkInstance.ip):
continue
- template = networkSliver.network.template
+ template = networkInstance.network.template
if (template.visibility=="private") and (template.translation=="NAT"):
- ip=networkSliver.ip
+ ip=networkInstance.ip
if not ip:
continue
if return_private:
ip = None
- for networkSliver in ps_sliver.networkslivers.all():
- if (not networkSliver.ip):
+ for networkInstance in ps_instance.networkinstances.all():
+ if (not networkInstance.ip):
continue
- template = networkSliver.network.template
+ template = networkInstance.network.template
if (template.visibility=="private") and (template.translation=="none"):
- ip=networkSliver.ip
+ ip=networkInstance.ip
if not ip:
continue
@@ -226,7 +226,7 @@
else:
node_id = 0
- node_sliver_tags = GetTags(slicename, node_id)
+ node_instance_tags = GetTags(slicename, node_id)
slices = GetSlices({"name": slicename}, slice_remap=slice_remap)
perhost = {}
@@ -266,12 +266,12 @@
hostprivmap[nodemap[interface['node_id']]] = interface['ip']
for nid in node_ids:
- sliver_tags = GetTags(slicename,nid)
- perhost[nodemap[nid]] = sliver_tags
+ instance_tags = GetTags(slicename,nid)
+ perhost[nodemap[nid]] = instance_tags
- slivers = GetSlices(slice_remap=slice_remap)
+ instances = GetSlices(slice_remap=slice_remap)
if node_id != 0:
- slivers = [slice for slice in slivers if (node_id in slice.node_ids)]
+ instances = [slice for slice in instances if (node_id in slice.node_ids)]
sites = GetSites(slice_remap=slice_remap)
for site in sites:
@@ -280,12 +280,12 @@
timestamp = int(time.time())
return {'version': 3,
'timestamp': timestamp,
- 'configuration': node_sliver_tags,
+ 'configuration': node_instance_tags,
'allconfigurations':perhost,
'hostipmap':hostipmap,
'hostnatmap':hostnatmap,
'hostprivmap':hostprivmap,
- 'slivers': slivers,
+ 'instances': instances,
'interfaces': allinterfaces,
'sites': sites,
'nodes': nodes}
diff --git a/xos/core/views/slivers.py b/xos/core/views/slivers.py
index bb310da..e424538 100644
--- a/xos/core/views/slivers.py
+++ b/xos/core/views/slivers.py
@@ -1,13 +1,13 @@
-from core.serializers import SliverSerializer
+from core.serializers import InstanceSerializer
from rest_framework import generics
-from core.models import Sliver
+from core.models import Instance
-class SliverList(generics.ListCreateAPIView):
- queryset = Sliver.objects.all()
- serializer_class = SliverSerializer
+class InstanceList(generics.ListCreateAPIView):
+ queryset = Instance.objects.all()
+ serializer_class = InstanceSerializer
-class SliverDetail(generics.RetrieveUpdateDestroyAPIView):
- queryset = Sliver.objects.all()
- serializer_class = SliverSerializer
+class InstanceDetail(generics.RetrieveUpdateDestroyAPIView):
+ queryset = Instance.objects.all()
+ serializer_class = InstanceSerializer
diff --git a/xos/core/xoslib/methods/cordsubscriber.py b/xos/core/xoslib/methods/cordsubscriber.py
index e504c71..ea8da80 100644
--- a/xos/core/xoslib/methods/cordsubscriber.py
+++ b/xos/core/xoslib/methods/cordsubscriber.py
@@ -30,7 +30,7 @@
service_specific_id = ReadOnlyField()
vlan_id = ReadOnlyField()
vcpe_id = ReadOnlyField()
- sliver = ReadOnlyField()
+ instance = ReadOnlyField()
image = ReadOnlyField()
vbng_id = ReadOnlyField()
firewall_enable = serializers.BooleanField()
@@ -39,7 +39,7 @@
url_filter_rules = serializers.CharField()
url_filter_level = serializers.CharField(required=False)
cdn_enable = serializers.BooleanField()
- sliver_name = ReadOnlyField()
+ instance_name = ReadOnlyField()
image_name = ReadOnlyField()
routeable_subnet = serializers.CharField(required=False)
ssh_command = ReadOnlyField()
@@ -60,7 +60,7 @@
model = CordSubscriber
fields = ('humanReadableName', 'id',
'service_specific_id', 'vlan_id',
- 'vcpe_id', 'sliver', 'sliver_name', 'image', 'image_name',
+ 'vcpe_id', 'instance', 'instance_name', 'image', 'image_name',
'firewall_enable', 'firewall_rules',
'url_filter_enable', 'url_filter_rules', 'url_filter_level',
'bbs_account',
diff --git a/xos/core/xoslib/methods/hpcview.py b/xos/core/xoslib/methods/hpcview.py
index 0645405..f14b398 100644
--- a/xos/core/xoslib/methods/hpcview.py
+++ b/xos/core/xoslib/methods/hpcview.py
@@ -24,16 +24,16 @@
except:
return service.service.all()
-def lookup_tag(service, sliver, name, default=None):
- sliver_type = ContentType.objects.get_for_model(sliver)
- t = Tag.objects.filter(service=service, name=name, content_type__pk=sliver_type.id, object_id=sliver.id)
+def lookup_tag(service, instance, name, default=None):
+ instance_type = ContentType.objects.get_for_model(instance)
+ t = Tag.objects.filter(service=service, name=name, content_type__pk=instance_type.id, object_id=instance.id)
if t:
return t[0].value
else:
return default
-def lookup_time(service, sliver, name):
- v = lookup_tag(service, sliver, name)
+def lookup_time(service, instance, name):
+ v = lookup_tag(service, instance, name)
if v:
return str(time.time() - float(v))
else:
@@ -69,22 +69,22 @@
return config_run
# from hpc_watcher.py
-def get_public_ip(service, sliver):
+def get_public_ip(service, instance):
network_name = None
- if "hpc" in sliver.slice.name:
+ if "hpc" in instance.slice.name:
network_name = getattr(service, "watcher_hpc_network", None)
- elif "demux" in sliver.slice.name:
+ elif "demux" in instance.slice.name:
network_name = getattr(service, "watcher_dnsdemux_network", None)
- elif "redir" in sliver.slice.name:
+ elif "redir" in instance.slice.name:
network_name = getattr(service, "watcher_dnsredir_network", None)
if network_name and network_name.lower()=="nat":
return None
if (network_name is None) or (network_name=="") or (network_name.lower()=="public"):
- return sliver.get_public_ip()
+ return instance.get_public_ip()
- for ns in sliver.networkslivers.all():
+ for ns in instance.networkinstances.all():
if (ns.ip) and (ns.network.name==network_name):
return ns.ip
@@ -143,50 +143,50 @@
nameservers[nameserver] = {"name": nameserver, "ip": "exception", "hit": False}
dnsdemux=[]
- for sliver in dnsdemux_slice.slivers.all():
+ for instance in dnsdemux_slice.instances.all():
ip=None
try:
- ip = get_public_ip(dnsdemux_service, sliver)
+ ip = get_public_ip(dnsdemux_service, instance)
except Exception, e:
ip = "Exception: " + str(e)
if not ip:
try:
- ip = socket.gethostbyname(sliver.node.name)
+ ip = socket.gethostbyname(instance.node.name)
except:
- ip = "??? " + sliver.node.name
+ ip = "??? " + instance.node.name
- sliver_nameservers = []
+ instance_nameservers = []
for ns in nameservers.values():
if ns["ip"]==ip:
- sliver_nameservers.append(ns["name"])
+ instance_nameservers.append(ns["name"])
ns["hit"]=True
- # now find the dnsredir sliver that is also on this node
- watcherd_dnsredir = "no-redir-sliver"
- for dnsredir_sliver in dnsredir_slice.slivers.all():
- if dnsredir_sliver.node == sliver.node:
- watcherd_dnsredir = lookup_tag(dnsredir_service, dnsredir_sliver, "watcher.watcher.msg")
+ # now find the dnsredir instance that is also on this node
+ watcherd_dnsredir = "no-redir-instance"
+ for dnsredir_instance in dnsredir_slice.instances.all():
+ if dnsredir_instance.node == instance.node:
+ watcherd_dnsredir = lookup_tag(dnsredir_service, dnsredir_instance, "watcher.watcher.msg")
- watcherd_dnsdemux = lookup_tag(dnsdemux_service, sliver, "watcher.watcher.msg")
+ watcherd_dnsdemux = lookup_tag(dnsdemux_service, instance, "watcher.watcher.msg")
- dnsdemux.append( {"name": sliver.node.name,
- "watcher.DNS.msg": lookup_tag(dnsdemux_service, sliver, "watcher.DNS.msg"),
- "watcher.DNS.time": lookup_time(dnsdemux_service, sliver, "watcher.DNS.time"),
+ dnsdemux.append( {"name": instance.node.name,
+ "watcher.DNS.msg": lookup_tag(dnsdemux_service, instance, "watcher.DNS.msg"),
+ "watcher.DNS.time": lookup_time(dnsdemux_service, instance, "watcher.DNS.time"),
"ip": ip,
- "nameservers": sliver_nameservers,
+ "nameservers": instance_nameservers,
"dnsdemux_config_age": compute_config_run(watcherd_dnsdemux),
"dnsredir_config_age": compute_config_run(watcherd_dnsredir) })
hpc=[]
- for sliver in hpc_slice.slivers.all():
- watcherd_hpc = lookup_tag(hpc_service, sliver, "watcher.watcher.msg")
+ for instance in hpc_slice.instances.all():
+ watcherd_hpc = lookup_tag(hpc_service, instance, "watcher.watcher.msg")
- hpc.append( {"name": sliver.node.name,
- "watcher.HPC-hb.msg": lookup_tag(hpc_service, sliver, "watcher.HPC-hb.msg"),
- "watcher.HPC-hb.time": lookup_time(hpc_service, sliver, "watcher.HPC-hb.time"),
- "watcher.HPC-fetch.msg": lookup_tag(hpc_service, sliver, "watcher.HPC-fetch.msg"),
- "watcher.HPC-fetch.time": lookup_time(hpc_service, sliver, "watcher.HPC-fetch.time"),
- "watcher.HPC-fetch.urls": json_default(lookup_tag(hpc_service, sliver, "watcher.HPC-fetch-urls.msg"), []),
+ hpc.append( {"name": instance.node.name,
+ "watcher.HPC-hb.msg": lookup_tag(hpc_service, instance, "watcher.HPC-hb.msg"),
+ "watcher.HPC-hb.time": lookup_time(hpc_service, instance, "watcher.HPC-hb.time"),
+ "watcher.HPC-fetch.msg": lookup_tag(hpc_service, instance, "watcher.HPC-fetch.msg"),
+ "watcher.HPC-fetch.time": lookup_time(hpc_service, instance, "watcher.HPC-fetch.time"),
+ "watcher.HPC-fetch.urls": json_default(lookup_tag(hpc_service, instance, "watcher.HPC-fetch-urls.msg"), []),
"config_age": compute_config_run(watcherd_hpc),
})
diff --git a/xos/core/xoslib/methods/sliceplus.py b/xos/core/xoslib/methods/sliceplus.py
index 12f7c1a..c339789 100644
--- a/xos/core/xoslib/methods/sliceplus.py
+++ b/xos/core/xoslib/methods/sliceplus.py
@@ -66,7 +66,7 @@
class Meta:
model = SlicePlus
- fields = ('humanReadableName', 'id','created','updated','enacted','name','enabled','omf_friendly','description','slice_url','site','max_slivers','service','network','mount_data_sets',
+ fields = ('humanReadableName', 'id','created','updated','enacted','name','enabled','omf_friendly','description','slice_url','site','max_instances','service','network','mount_data_sets',
'default_image', 'default_flavor',
'serviceClass','creator','networks','sliceInfo','network_ports','backendIcon','backendHtml','site_allocation','site_ready','users',"user_names","current_user_can_see")
diff --git a/xos/core/xoslib/methods/sshkeys.py b/xos/core/xoslib/methods/sshkeys.py
index a714212..8413e65 100644
--- a/xos/core/xoslib/methods/sshkeys.py
+++ b/xos/core/xoslib/methods/sshkeys.py
@@ -16,16 +16,16 @@
def get(self, request, format=None):
instances=[]
- for sliver in self.get_queryset().all():
- if sliver.instance_id:
- instances.append( {"id": sliver.instance_id,
- "public_keys": sliver.get_public_keys(),
- "node_name": sliver.node.name } )
+ for instance in self.get_queryset().all():
+ if instance.instance_id:
+ instances.append( {"id": instance.instance_id,
+ "public_keys": instance.get_public_keys(),
+ "node_name": instance.node.name } )
return Response(instances)
def get_queryset(self):
- queryset = queryset=Sliver.objects.all()
+ queryset = queryset=Instance.objects.all()
node_name = self.request.QUERY_PARAMS.get('node_name', None)
if node_name is not None:
@@ -38,15 +38,15 @@
method_name = "sshkeys"
def get(self, request, format=None, pk=0):
- slivers = self.get_queryset().filter(instance_id=pk)
- if not slivers:
- raise XOSNotFound("didn't find sliver for instance %s" % pk)
- return Response( [ {"id": slivers[0].instance_id,
- "public_keys": slivers[0].get_public_keys(),
- "node_name": slivers[0].node.name } ])
+ instances = self.get_queryset().filter(instance_id=pk)
+ if not instances:
+ raise XOSNotFound("didn't find instance for instance %s" % pk)
+ return Response( [ {"id": instances[0].instance_id,
+ "public_keys": instances[0].get_public_keys(),
+ "node_name": instances[0].node.name } ])
def get_queryset(self):
- queryset = queryset=Sliver.objects.all()
+ queryset = queryset=Instance.objects.all()
node_name = self.request.QUERY_PARAMS.get('node_name', None)
if node_name is not None:
diff --git a/xos/core/xoslib/methods/volttenant.py b/xos/core/xoslib/methods/volttenant.py
index ba0e909..e5998da 100644
--- a/xos/core/xoslib/methods/volttenant.py
+++ b/xos/core/xoslib/methods/volttenant.py
@@ -44,10 +44,10 @@
vcpe = obj.vcpe
if not vcpe:
return None
- sliver = vcpe.sliver
- if not sliver:
+ instance = vcpe.instance
+ if not instance:
return None
- return sliver.node.name
+ return instance.node.name
class VOLTTenantList(XOSListCreateAPIView):
serializer_class = VOLTTenantIdSerializer
diff --git a/xos/core/xoslib/objects/cordsubscriber.py b/xos/core/xoslib/objects/cordsubscriber.py
index 63dfec2..318d54c 100644
--- a/xos/core/xoslib/objects/cordsubscriber.py
+++ b/xos/core/xoslib/objects/cordsubscriber.py
@@ -1,4 +1,4 @@
-from core.models import Slice, SlicePrivilege, SliceRole, Sliver, Site, Node, User
+from core.models import Slice, SlicePrivilege, SliceRole, Instance, Site, Node, User
from cord.models import VOLTTenant, CordSubscriberRoot
from plus import PlusObjectMixin
from operator import itemgetter, attrgetter
@@ -40,8 +40,8 @@
("cdn_enable", "vcpe.cdn_enable"),
("image", "vcpe.image.id"),
("image_name", "vcpe.image.name"),
- ("sliver", "vcpe.sliver.id"),
- ("sliver_name", "vcpe.sliver.name"),
+ ("instance", "vcpe.instance.id"),
+ ("instance_name", "vcpe.instance.name"),
("routeable_subnet", "vcpe.vbng.routeable_subnet"),
("vcpe_id", "vcpe.id"),
("vbng_id", "vcpe.vbng.id"),
@@ -119,8 +119,8 @@
("ssh_command", "volt.vcpe.ssh_command"),
("image", "volt.vcpe.image.id"),
("image_name", "volt.vcpe.image.name"),
- ("sliver", "volt.vcpe.sliver.id"),
- ("sliver_name", "volt.vcpe.sliver.name"),
+ ("instance", "volt.vcpe.instance.id"),
+ ("instance_name", "volt.vcpe.instance.name"),
("routeable_subnet", "volt.vcpe.vbng.routeable_subnet"),
("vcpe_id", "volt.vcpe.id"),
("vbng_id", "volt.vcpe.vbng.id"),
diff --git a/xos/core/xoslib/objects/sliceplus.py b/xos/core/xoslib/objects/sliceplus.py
index 47c93d7..9d2868f 100644
--- a/xos/core/xoslib/objects/sliceplus.py
+++ b/xos/core/xoslib/objects/sliceplus.py
@@ -1,4 +1,4 @@
-from core.models import Slice, SlicePrivilege, SliceRole, Sliver, Site, Node, User
+from core.models import Slice, SlicePrivilege, SliceRole, Instance, Site, Node, User
from plus import PlusObjectMixin
from operator import itemgetter, attrgetter
from rest_framework.exceptions import APIException
@@ -22,16 +22,16 @@
used_sites = {}
ready_sites = {}
used_deployments = {}
- sliverCount = 0
+ instanceCount = 0
sshCommands = []
- for sliver in self.slivers.all():
- site = sliver.node.site_deployment.site
- deployment = sliver.node.site_deployment.deployment
+ for instance in self.instances.all():
+ site = instance.node.site_deployment.site
+ deployment = instance.node.site_deployment.deployment
used_sites[site.name] = used_sites.get(site.name, 0) + 1
used_deployments[deployment.name] = used_deployments.get(deployment.name, 0) + 1
- sliverCount = sliverCount + 1
+ instanceCount = instanceCount + 1
- sshCommand = sliver.get_ssh_command()
+ sshCommand = instance.get_ssh_command()
if sshCommand:
sshCommands.append(sshCommand)
@@ -57,7 +57,7 @@
self._sliceInfo= {"sitesUsed": used_sites,
"sitesReady": ready_sites,
"deploymentsUsed": used_deployments,
- "sliverCount": sliverCount,
+ "instanceCount": instanceCount,
"siteCount": len(used_sites.keys()),
"users": users,
"roles": [],
@@ -127,10 +127,10 @@
nodeList = []
for node in Node.objects.all():
if (node.site_deployment.site.id in siteIDList):
- node.sliverCount = 0
- for sliver in node.slivers.all():
- if sliver.slice.id == self.id:
- node.sliverCount = node.sliverCount + 1
+ node.instanceCount = 0
+ for instance in node.instances.all():
+ if instance.slice.id == self.id:
+ node.instanceCount = node.instanceCount + 1
nodeList.append(node)
return nodeList
@@ -170,58 +170,58 @@
print "save_site_allocation, reset=",reset
if (not self._site_allocation):
- # Must be a sliver that was just created, and has not site_allocation
+ # Must be a instance that was just created, and has not site_allocation
# field.
return
- all_slice_slivers = self.slivers.all()
+ all_slice_instances = self.instances.all()
for site_name in self._site_allocation.keys():
desired_allocation = self._site_allocation[site_name]
- # make a list of the slivers for this site
- slivers = []
- for sliver in all_slice_slivers:
- if sliver.node.site_deployment.site.name == site_name:
- slivers.append(sliver)
+ # make a list of the instances for this site
+ instances = []
+ for instance in all_slice_instances:
+ if instance.node.site_deployment.site.name == site_name:
+ instances.append(instance)
- # delete extra slivers
- while (reset and len(slivers)>0) or (len(slivers) > desired_allocation):
- sliver = slivers.pop()
+ # delete extra instances
+ while (reset and len(instances)>0) or (len(instances) > desired_allocation):
+ instance = instances.pop()
if (not noAct):
- print "deleting sliver", sliver
- sliver.delete()
+ print "deleting instance", instance
+ instance.delete()
else:
- print "would delete sliver", sliver
+ print "would delete instance", instance
- # add more slivers
- if (len(slivers) < desired_allocation):
+ # add more instances
+ if (len(instances) < desired_allocation):
site = Site.objects.get(name = site_name)
nodes = self.get_node_allocation([site])
if (not nodes):
raise APIException(detail="no nodes in site %s" % site_name)
- while (len(slivers) < desired_allocation):
+ while (len(instances) < desired_allocation):
# pick the least allocated node
- nodes = sorted(nodes, key=attrgetter("sliverCount"))
+ nodes = sorted(nodes, key=attrgetter("instanceCount"))
node = nodes[0]
- sliver = Sliver(name=node.name,
+ instance = Instance(name=node.name,
slice=self,
node=node,
image = self.default_image,
flavor = self.default_flavor,
creator = self.creator,
deployment = node.site_deployment.deployment)
- sliver.caller = self.caller
- slivers.append(sliver)
+ instance.caller = self.caller
+ instances.append(instance)
if (not noAct):
- print "added sliver", sliver
- sliver.save()
+ print "added instance", instance
+ instance.save()
else:
- print "would add sliver", sliver
+ print "would add instance", instance
- node.sliverCount = node.sliverCount + 1
+ node.instanceCount = node.instanceCount + 1
def save_users(self, noAct = False):
new_users = self._update_users