fold Container object into Instance
diff --git a/xos/openstack_observer/steps/sync_container.py b/xos/openstack_observer/steps/sync_container.py
index 0f5dcc4..ae598b8 100644
--- a/xos/openstack_observer/steps/sync_container.py
+++ b/xos/openstack_observer/steps/sync_container.py
@@ -8,7 +8,7 @@
from xos.config import Config
from observer.syncstep import SyncStep
from observer.ansible import run_template_ssh
-from core.models import Service, Slice, Container
+from core.models import Service, Slice, Instance
from services.onos.models import ONOSService, ONOSApp
from util.logger import Logger, logging
@@ -19,34 +19,28 @@
logger = Logger(level=logging.INFO)
class SyncContainer(SyncStep):
- provides=[Container]
- observes=Container
+ provides=[Instance]
+ observes=Instance
requested_interval=0
template_name = "sync_container.yaml"
def __init__(self, *args, **kwargs):
super(SyncContainer, self).__init__(*args, **kwargs)
-# def fetch_pending(self, deleted):
-# if (not deleted):
-# objs = ONOSService.get_service_objects().filter(Q(enacted__lt=F('updated')) | Q(enacted=None),Q(lazy_blocked=False))
-# else:
-# objs = ONOSService.get_deleted_service_objects()
-#
-# return objs
+ def fetch_pending(self, deletion=False):
+ objs = super(SyncContainer, self).fetch_pending(deletion)
+ objs = [x for x in objs if x.isolation=="container"]
+ return objs
def get_node(self,o):
return o.node
def get_node_key(self, node):
return "/root/setup/node_key"
- #return "/opt/xos/node-key"
def get_instance_port(self, container_port):
- print container_port
- print container_port.network
for p in container_port.network.links.all():
- if (p.instance) and (p.instance.node == container_port.container.node) and (p.mac):
+ if (p.instance) and (p.instance.kind=="vm") and (p.instance.node == container_port.container.node) and (p.mac):
return p
return None
@@ -81,10 +75,10 @@
fields["baremetal_ssh"] = True
fields["instance_name"] = "rootcontext"
fields["container_name"] = "%s-%s" % (o.slice.name, str(o.id))
- fields["docker_image"] = o.docker_image
+ fields["docker_image"] = o.image.name
fields["username"] = "root"
fields["ports"] = self.get_ports(o)
- fields["volumes"] = [x.strip() for x in o.volumes.split(",")]
+ fields["volumes"] = [] # XXX [x.strip() for x in o.volumes.split(",")]
return fields
def sync_fields(self, o, fields):
diff --git a/xos/openstack_observer/steps/sync_instances.py b/xos/openstack_observer/steps/sync_instances.py
index 1209448..1130c24 100644
--- a/xos/openstack_observer/steps/sync_instances.py
+++ b/xos/openstack_observer/steps/sync_instances.py
@@ -22,6 +22,11 @@
observes=Instance
playbook='sync_instances.yaml'
+ def fetch_pending(self, deletion=False):
+ objs = super(SyncInstances, self).fetch_pending(deletion)
+ objs = [x for x in objs if x.isolation=="vm"]
+ return objs
+
def get_userdata(self, instance, pubkeys):
userdata = '#cloud-config\n\nopencloud:\n slicename: "%s"\n hostname: "%s"\n restapi_hostname: "%s"\n restapi_port: "%s"\n' % (instance.slice.name, instance.node.name, RESTAPI_HOSTNAME, str(RESTAPI_PORT))
userdata += 'ssh_authorized_keys:\n'
diff --git a/xos/openstack_observer/steps/sync_ports.py b/xos/openstack_observer/steps/sync_ports.py
index 7b20d29..178fa86 100644
--- a/xos/openstack_observer/steps/sync_ports.py
+++ b/xos/openstack_observer/steps/sync_ports.py
@@ -144,14 +144,11 @@
# For ports that were created by the user, find that ones
# that don't have neutron ports, and create them.
- for port in Port.objects.filter(Q(port_id__isnull=True), Q(instance__isnull=False) | Q(container__isnull=False)):
+ for port in Port.objects.filter(Q(port_id__isnull=True), Q(instance__isnull=False) ):
logger.info("XXX working on port %s" % port)
- if port.instance:
- controller = port.instance.node.site_deployment.controller
- slice = port.instance.slice
- else:
- controller = port.container.node.site_deployment.controller
- slice = port.container.slice
+ controller = port.instance.node.site_deployment.controller
+ slice = port.instance.slice
+
if controller:
cn=port.network.controllernetworks.filter(controller=controller)
if not cn:
diff --git a/xos/openstack_observer/templates/start-container.sh.j2 b/xos/openstack_observer/templates/start-container.sh.j2
index dc3b7cb..86491eb 100644
--- a/xos/openstack_observer/templates/start-container.sh.j2
+++ b/xos/openstack_observer/templates/start-container.sh.j2
@@ -6,11 +6,13 @@
CONTAINER={{ container_name }}
IMAGE={{ docker_image }}
+{% if volumes %}
{% for volume in volumes %}
DEST_DIR=/var/container_volumes/$CONTAINER/{{ volume }}
mkdir -p $DEST_DIR
VOLUME_ARGS="$VOLUME_ARGS -v $DEST_DIR:{{ volume }}"
{% endfor %}
+{% endif %}
docker inspect $CONTAINER > /dev/null 2>&1
if [ "$?" == 1 ]