CORD-2965 Kubernetes Synchronizer

Change-Id: Ie5c02b9ad1c65af686598bab0b36350ac1caef64
diff --git a/xos/examples/make_pod.xossh b/xos/examples/make_pod.xossh
new file mode 100644
index 0000000..6394147
--- /dev/null
+++ b/xos/examples/make_pod.xossh
@@ -0,0 +1,31 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file is intended to be pasted into an xossh session
+
+t=TrustDomain(name="demo-trust", owner=KubernetesService.objects.first())
+t.save()
+p=Principal(name="demo-account", trust_domain=t)
+p.save()
+existing_images=Image.objects.filter(name="k8s.gcr.io/pause-amd64")
+if existing_images:
+    img = existing_images[0]
+else:
+    img=Image(name="k8s.gcr.io/pause-amd64", tag="3.0")
+    img.save()
+
+s=Slice(name="mysite_demo1", site=Site.objects.first(), trust_domain=t, principal=p)
+s.save()
+i=KubernetesServiceInstance(name="demo-pod", slice=s, image=img, owner=KubernetesService.objects.first(), xos_managed=True)
+i.save()
diff --git a/xos/examples/make_pod.yaml b/xos/examples/make_pod.yaml
new file mode 100644
index 0000000..2e05f32
--- /dev/null
+++ b/xos/examples/make_pod.yaml
@@ -0,0 +1,96 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Make a pod using Kubernetes Synchronizer
+
+imports:
+  - custom_types/trustdomain.yaml
+  - custom_types/principal.yaml
+  - custom_types/image.yaml
+  - custom_types/site.yaml
+  - custom_types/slice.yaml
+  - custom_types/kubernetesservice.yaml
+  - custom_types/kubernetesserviceinstance.yaml
+
+topology_template:
+  node_templates:
+    service#kubernetes:
+          type: tosca.nodes.KubernetesService
+          properties:
+            name: kubernetes
+            must-exist: true
+
+    mysite:
+      type: tosca.nodes.Site
+      properties:
+        name: placeholder-sitename
+        must-exist: true
+
+    demo_trustdomain:
+      type: tosca.nodes.TrustDomain
+      properties:
+        name: "demo-trust"
+      requirements:
+        - owner:
+            node: service#kubernetes
+            relationship: tosca.relationships.BelongsToOne
+
+    demo_principal:
+      type: tosca.nodes.Principal
+      properties:
+        name: "demo-account"
+      requirements:
+        - trust_domain:
+            node: demo_trustdomain
+            relationship: tosca.relationships.BelongsToOne
+
+    image_pause:
+      type: tosca.nodes.Image
+      properties:
+        name: "k8s.gcr.io/pause-amd64"
+        tag: "3.0"
+
+    mysite_demo1:
+      type: tosca.nodes.Slice
+      properties:
+        name: "mysite_demo1"
+      requirements:
+        - site:
+            node: mysite
+            relationship: tosca.relationships.BelongsToOne
+        - trust_domain:
+            node: demo_trustdomain
+            relationship: tosca.relationships.BelongsToOne
+        - principal:
+            node: demo_principal
+            relationship: tosca.relationships.BelongsToOne
+
+    demo_pod:
+      type: tosca.nodes.KubernetesServiceInstance
+      properties:
+        name: "demo-pod"
+        xos_managed: True
+      requirements:
+        - slice:
+            node: mysite_demo1
+            relationship: tosca.relationships.BelongsToOne
+        - owner:
+            node: service#kubernetes
+            relationship: tosca.relationships.BelongsToOne
+        - image:
+            node: image_pause
+            relationship: tosca.relationships.BelongsToOne
diff --git a/xos/examples/make_service.xossh b/xos/examples/make_service.xossh
new file mode 100644
index 0000000..b7191ef
--- /dev/null
+++ b/xos/examples/make_service.xossh
@@ -0,0 +1,24 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This is intended to be pasted into an xossh session
+
+t=TrustDomain(name="service1-trust", owner=KubernetesService.objects.first())
+t.save()
+service=Service(name="service1")
+service.save()
+slice=Slice(name="mysite_service1_slice1", trust_domain=t, service=service, site=Site.objects.first())
+slice.save()
+port=ServicePort(name="the-web", service=service, internal_port=80, external_port=30080, protocol="TCP")
+port.save()
diff --git a/xos/examples/make_service.yaml b/xos/examples/make_service.yaml
new file mode 100644
index 0000000..69f41e2
--- /dev/null
+++ b/xos/examples/make_service.yaml
@@ -0,0 +1,81 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Make a new Service and a ServicePort for it
+
+imports:
+  - custom_types/trustdomain.yaml
+  - custom_types/site.yaml
+  - custom_types/slice.yaml
+  - custom_types/service.yaml
+  - custom_types/serviceport.yaml
+  - custom_types/kubernetesservice.yaml
+
+topology_template:
+  node_templates:
+    mysite:
+      type: tosca.nodes.Site
+      properties:
+        name: placeholder-sitename
+        must-exist: true
+
+    service#kubernetes:
+          type: tosca.nodes.KubernetesService
+          properties:
+            name: kubernetes
+            must-exist: true
+
+    service#demo:
+          type: tosca.nodes.Service
+          properties:
+            name: demo-service
+
+    demo_trustdomain:
+      type: tosca.nodes.TrustDomain
+      properties:
+        name: "demo-trust"
+      requirements:
+        - owner:
+            node: service#kubernetes
+            relationship: tosca.relationships.BelongsToOne
+
+    mysite_demo1:
+      type: tosca.nodes.Slice
+      properties:
+        name: "mysite_demo1"
+      requirements:
+        - site:
+            node: mysite
+            relationship: tosca.relationships.BelongsToOne
+        - trust_domain:
+            node: demo_trustdomain
+            relationship: tosca.relationships.BelongsToOne
+        - service:
+            node: service#demo
+            relationship: tosca.relationships.BelongsToOne
+
+    demo_service_web_port:
+      type: tosca.nodes.ServicePort
+      properties:
+        name: demo-service-web-port
+        internal_port: 80
+        external_port: 30080
+        protocol: "TCP"
+      requirements:
+        - service:
+            node: service#demo
+            relationship: tosca.relationships.BelongsToOne
\ No newline at end of file