CHARM_SRC_DIR := $(CHARM_DIR)/layers
CHARM_DOCKER_TAG := charm-tools
CHARM_BUILD_DIR := $(CHARM_DIR)/builds
-DOCKER_BUILD ?= $(shell which docker)
+DOCKER_BUILD ?=
Q=@
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+nsd:nsd-catalog:
+ nsd:
+ - id: cirros_noportsecurity_2vnf_nsd
+ name: cirros_noportsecurity_2vnf_ns
+ short-name: cirros_noportsecurity_2vnf_ns
+ description: Generated by OSM pacakage generator
+ vendor: OSM
+ version: '1.0'
+
+ # Place the logo as png in icons directory and provide the name here
+ logo: osm_2x.png
+
+ # Specify the VNFDs that are part of this NSD
+ constituent-vnfd:
+ # The member-vnf-index needs to be unique, starting from 1
+ # vnfd-id-ref is the id of the VNFD
+ # Multiple constituent VNFDs can be specified
+ - member-vnf-index: 1
+ vnfd-id-ref: cirros_noportsecurity_vnfd
+ - member-vnf-index: 2
+ vnfd-id-ref: cirros_noportsecurity_vnfd
+
+
+ vld:
+ # Networks for the VNFs
+ - id: cirros_2vnf_nsd_vld1
+ name: cirros_2vnf_nsd_vld1
+ short-name: cirros_2vnf_nsd_vld1
+ type: ELAN
+ # vim-network-name: <update>
+ # provider-network:
+ # overlay-type: VLAN
+ # segmentation_id: <update>
+ vnfd-connection-point-ref:
+ # Specify the constituent VNFs
+ # member-vnf-index-ref - entry from constituent vnf
+ # vnfd-id-ref - VNFD id
+ # vnfd-connection-point-ref - connection point name in the VNFD
+ - nsd:member-vnf-index-ref: 1
+ nsd:vnfd-id-ref: cirros_noportsecurity_vnfd
+ nsd:vnfd-connection-point-ref: eth0
+ - nsd:member-vnf-index-ref: 2
+ nsd:vnfd-id-ref: cirros_noportsecurity_vnfd
+ nsd:vnfd-connection-point-ref: eth0
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+nsd:nsd-catalog:
+ nsd:
+ - id: cirros_set_vim_network_ns
+ name: cirros_set_vim_network_ns
+ short-name: cirros_set_vim_network_ns
+ description: Generated by OSM pacakage generator
+ vendor: OSM
+ version: '1.0'
+
+ # Place the logo as png in icons directory and provide the name here
+ logo: osm_2x.png
+
+ # Specify the VNFDs that are part of this NSD
+ constituent-vnfd:
+ # The member-vnf-index needs to be unique, starting from 1
+ # vnfd-id-ref is the id of the VNFD
+ # Multiple constituent VNFDs can be specified
+ - member-vnf-index: 1
+ vnfd-id-ref: cirros_vnfd
+ scaling-group-descriptor:
+ - name: "scaling_cirros"
+ vnfd-member:
+ - count: 1
+ member-vnf-index-ref: 1
+ min-instance-count: 0
+ max-instance-count: 10
+ scaling-policy:
+ - scaling-type: "manual"
+ cooldown-time: 10
+ threshold-time: 10
+ name: manual_scale
+ vld:
+ # Networks for the VNFs
+ - id: cirros_nsd_vld1
+ name: cirros_nsd_vld1
+ type: ELAN
+ # vim-network-name: <update>
+ # provider-network:
+ # overlay-type: VLAN
+ # segmentation_id: <update>
+ vim-network-name: mgmt
+ vnfd-connection-point-ref:
+ # Specify the constituent VNFs
+ # member-vnf-index-ref - entry from constituent vnf
+ # vnfd-id-ref - VNFD id
+ # vnfd-connection-point-ref - connection point name in the VNFD
+ - nsd:member-vnf-index-ref: 1
+ nsd:vnfd-id-ref: cirros_vnfd
+ # NOTE: Validate the entry below
+ nsd:vnfd-connection-point-ref: eth0
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+#cloud-config
+
+password: c0mpl3xp4ssw0rd
+chpasswd: { expire: False }
+ssh_pwauth: True
+
+write_files:
+- content: |
+ # My new helloworld file
+ sudo apt update
+ sudo apt install dnsmasq -y
+ sudo bash -c 'cat << EOF > /etc/dnsmasq.conf
+ strict-order
+ interface=eth0
+ no-dhcp-interface=eth0
+ EOF'
+ owner: root:root
+ permissions: '0774'
+ path: /tmp/configure_dns
+
+runcmd:
+ - /tmp/configure_dns
+
--- /dev/null
+vnfd:vnfd-catalog:
+ vnfd:vnfd:
+ - rw-vnfd:meta: '{"containerPositionMap":{"dns_forwarder":{"top":30,"left":260,"right":510,"bottom":85,"width":250,"height":55},"dns_forwarder/dns_forwarder-VM":{"top":130,"left":260,"right":510,"bottom":185,"width":250,"height":55}}}'
+ vnfd:connection-point:
+ - vnfd:name: eth0
+ vnfd:type: VPORT
+ vnfd:description: Simple VNF example with a DNS forwarder
+ vnfd:id: dns_forwarder
+ vnfd:logo: dns.jpg
+ vnfd:mgmt-interface:
+ vnfd:vdu-id: dns_forwarder-VM
+ vnfd:name: dns_forwarder
+ vnfd:service-function-chain: UNAWARE
+ vnfd:short-name: dns_forwarder
+ vnfd:vdu:
+ - vnfd:count: '1'
+ vnfd:description: dns_forwarder-VM
+ vnfd:interface:
+ - vnfd:name: eth0
+ vnfd:virtual-interface:
+ vnfd:bandwidth: '0'
+ vnfd:type: OM-MGMT
+ vnfd:vpci: 0000:00:0a.0
+ vnfd:external-connection-point-ref: eth0
+ vnfd:guest-epa:
+ vnfd:cpu-pinning-policy: ANY
+ vnfd:id: dns_forwarder-VM
+ vnfd:image: ubuntu/images/hvm-ssd/ubuntu-zesty-17.04-amd64-server-20170619.1
+ vnfd:cloud-init-file: cloud_init.cfg
+ vnfd:name: dns_forwarder-VM
+ vnfd:supplemental-boot-data:
+ vnfd:boot-data-drive: 'false'
+ vnfd:vm-flavor:
+ vnfd:memory-mb: '1024'
+ vnfd:storage-gb: '1'
+ vnfd:vcpu-count: '1'
+ vnfd:vendor: OSM
+ vnfd:version: '1.0'
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+#cloud-config
+
+# Add public key to the default user's authorized_keys file
+ssh_authorized_keys:
+- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXYVPzII6lwC/hb1PHsgJcf11mYKI1pEeHzcjQ8X8P7YwOj2ihikhy6IRtm38HzP7udMWjQolPUbIzNBmldt8fy6EFkZEpf7R3QziDbqw3FH6wIbQnLpCZWa9OCGRyPyPdBY//K0Ya5b/IBfG4t+KoIVwkJuSG+oYRGhCYhnAwRZ/IUwxhtbNVsS26wN+jGsaUKIWCEBbS5ccFeb9k3eovIFkELNDJVWVJsh2tyGrUd+HQ1+xQGtBUcnipJV75lwL2Z2rprnMIIuVc+A1tTNWArHccLSyfxf2kANy5jGCkwNAH1ETp3r8A5BgoFYd7NSLxK3ob3XycXvYvt/XMrUDP test4
+
+write_files:
+- content: |
+ # My new helloworld file
+
+ owner: root:root
+ permissions: '0644'
+ path: /root/helloworld.txt
+
--- /dev/null
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA12FT8yCOpcAv4W9Tx7ICXH9dZmCiNaRHh83I0PF/D+2MDo9o
+oYpIcuiEbZt/B8z+7nTFo0KJT1GyMzQZpXbfH8uhBZGRKX+0d0M4g26sNxR+sCG0
+Jy6QmVmvTghkcj8j3QWP/ytGGuW/yAXxuLfiqCFcJCbkhvqGERoQmIZwMEWfyFMM
+YbWzVbEtusDfoxrGlCiFghAW0uXHBXm/ZN3qLyBZBCzQyVVlSbIdrchq1Hfh0Nfs
+UBrQVHJ4qSVe+ZcC9mdq6a5zCCLlXPgNbUzVgKx3HC0sn8X9pADcuYxgpMDQB9RE
+6d6/AOQYKBWHezUi8St6G918nF72L7f1zK1AzwIDAQABAoIBAG7mNYS9odWk1MKe
+QSRU+zRHfH8niL5YHWDGy/0SLBu2c+RXYUe0XUOViAKsC0en/SgpRk6fBvapmTkW
+PZJeV9sWTY4Bex5EHFdAbIv4Y4Jk8iqc4BdAucHMVSC334iYDE5U++Umkg1teUd0
+EBfNz05FBx2yTP9XZcrOgfcXWhLwBNmd99+gV6cQB6NF0ZFVm6TLuA7gH3joyipi
+Kfhod7uonFRVXSg6vipXs3+oH6BkpgYxQ5EC9U21q7YS4/H5nyBJDQymf88Lvm0l
+IkZasKC8RKkHJupROyUUrORW0n6ZV5P3jPCtsav/n6QIQStqCniR1SluONHlI/Sm
+qy71VpECgYEA7APuEsSSR/AQtxMp057+jqx6VE+UjIyrtkLBFzHl6GxU4SRz9fIS
+LxvI8fTv3AMpJTIQcf78l8CNBs0lpxOxOhuoFQcwqZsMb/Hg5wdS6r0t6ggKMMhO
+ig0xITzGEW5cVMQ2t3mE1sHP92NT8BTx0eD8nG9b4hxDFujrNOoTMicCgYEA6Z4X
+sIm5LcFRPe/mNhasLxYuh+d5sat20Om2YtNXDA349qQ9e4mC33mKLR1/EVA5dDud
+yvjwOvwvefLEuC/1W8d8AxUaYUMQHtoPB4qG//D/cIGhm3YtvUuaJoXEP0kd47mq
+Pr6Nu/W5b7jO/rCIBOZN6T+h2dxClCLApZ9vrRkCgYEA2+VperkFZdspZ7mGHfKk
+UEApFcazrCQglIcrqrXF9MCCcOZq2Hr7MEMd/TluBbo4Kryzj9K4e5dejjizXTC+
+zloYR8dUMqIQe3iMSBSNz8IFNmjZPcxTSNKztLkP/guqIRxTsqyY9RLM9jzoZubM
+y/RoyEQFAu28IGtRQhLZYb8CgYBF6e8TARRvEgSbMZlGpKBg8xV3zJlJx5OmT9sq
+Vi8dx2yze1F/EBcfhAMLH2Gwr76R/2lonfle3avjpfijWo7mKZv+XClp5CUF5qJK
+0nU2UUxQwiq4GLT1ipOWZb/mZJ5SUXUWk/Zcwtv9CGTCKdh7BuVYIZfxWA6AwKnA
+pydHuQKBgQCMKBFNH0W5bXp+40xmm5CYuvR2hNrDlgjL0g4X4RBYEBcg6yCCq1fo
+gv0OBqNe1L72LWhI6oI2qlKPveN1fdh0jsAvPpQpce/16Y0f7xsl5N3upp+yHHNk
+xruDOG7npSCyHKfcQjDtaHOPKYiQ/3CuXp7OJOvjbNZFf0GJZA9XQA==
+-----END RSA PRIVATE KEY-----
--- /dev/null
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXYVPzII6lwC/hb1PHsgJcf11mYKI1pEeHzcjQ8X8P7YwOj2ihikhy6IRtm38HzP7udMWjQolPUbIzNBmldt8fy6EFkZEpf7R3QziDbqw3FH6wIbQnLpCZWa9OCGRyPyPdBY//K0Ya5b/IBfG4t+KoIVwkJuSG+oYRGhCYhnAwRZ/IUwxhtbNVsS26wN+jGsaUKIWCEBbS5ccFeb9k3eovIFkELNDJVWVJsh2tyGrUd+HQ1+xQGtBUcnipJV75lwL2Z2rprnMIIuVc+A1tTNWArHccLSyfxf2kANy5jGCkwNAH1ETp3r8A5BgoFYd7NSLxK3ob3XycXvYvt/XMrUDP test4
--- /dev/null
+vnfd:vnfd-catalog:
+ vnfd:
+ - id: ubuntu_1iface_cloudinit_newfile_vnfd
+ name: ubuntu_1iface_cloudinit_newfile_vnf
+ short-name: ubuntu_1iface_cloudinit_newfile_vnf
+ description: Generated by OSM pacakage generator
+ vendor: OSM
+ version: '1.0'
+
+ # Place the logo as png in icons directory and provide the name here
+ logo: ubuntu-logo14.png
+
+ # Management interface
+ mgmt-interface:
+ vdu-id: ubuntu_1iface_cloudinit_newfile_vnfd-VM
+
+ # Atleast one VDU need to be specified
+ vdu:
+ - id: ubuntu_1iface_cloudinit_newfile_vnfd-VM
+ name: ubuntu_1iface_cloudinit_newfile_vnfd-VM
+ description: ubuntu_1iface_cloudinit_newfile_vnfd-VM
+ count: 1
+
+ # Flavour of the VM to be instantiated for the VDU
+ vm-flavor:
+ vcpu-count: 1
+ memory-mb: 1024
+ storage-gb: 10
+
+ # Image including the full path
+ image: 'ubuntu1604'
+
+ # User-data injection
+ cloud-init-file: cloud_init.cfg
+
+ interface:
+ # Specify the external interfaces
+ # There can be multiple interfaces defined
+ - name: eth0
+ virtual-interface:
+ type: OM-MGMT
+ bandwidth: '0'
+ vpci: 0000:00:0a.0
+ external-connection-point-ref: eth0
+
+ connection-point:
+ - name: eth0
+ type: VPORT
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+nsd:nsd-catalog:
+ nsd:
+ - id: ubuntu_epa_virtio_ns
+ name: ubuntu_epa_virtio_ns
+ short-name: ubuntu_epa_virtio_ns
+ description: One VNF based on Ubuntu 16.04 with EPA and virtio connected to mgmt
+ vendor: OSM
+ version: '1.0'
+ logo: tef.png
+
+ constituent-vnfd:
+ - member-vnf-index: 1
+ vnfd-id-ref: ubuntu_epa_virtio_vnf
+
+ vld:
+ - id: mgmt
+ name: mgmt
+ short-name: mgmt
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: 1
+ vnfd-id-ref: ubuntu_epa_virtio_vnf
+ vnfd-connection-point-ref: eth0
+
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+vnfd:vnfd-catalog:
+ vnfd:
+ - id: cirros_noportsecurity_vnfd
+ name: cirros_noportsecurity_vnf
+ short-name: cirros_noportsecurity_vnf
+ description: Simple VNF example with a cirros
+ vendor: OSM
+ version: '1.0'
+
+ # Place the logo as png in icons directory and provide the name here
+ logo: cirros-64.png
+
+ # Management interface
+ mgmt-interface:
+ vdu-id: cirros_vnfd-VM
+
+ # Atleast one VDU need to be specified
+ vdu:
+ - id: cirros_vnfd-VM
+ name: cirros_vnfd-VM
+ description: cirros_vnfd-VM
+ count: 1
+
+ # Flavour of the VM to be instantiated for the VDU
+ # flavor below can fit into m1.micro
+ vm-flavor:
+ vcpu-count: 1
+ memory-mb: 256
+ storage-gb: 2
+
+ # Image/checksum or image including the full path
+ image: 'CirrOS 0.3.4 64-bit'
+ #checksum:
+
+ interface:
+ # Specify the external interfaces
+ # There can be multiple interfaces defined
+ - name: eth0
+ virtual-interface:
+ type: OM-MGMT
+ bandwidth: '0'
+ vpci: 0000:00:0a.0
+ external-connection-point-ref: eth0
+
+ connection-point:
+ - name: eth0
+ type: VPORT
+ port-security-enabled: "false"
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+nsd:nsd-catalog:
+ nsd:nsd:
+ - nsd:constituent-vnfd:
+ - nsd:member-vnf-index: '1'
+ nsd:start-by-default: 'true'
+ nsd:vnfd-id-ref: dns_forwarder
+ nsd:id: dns_forwarder_ns
+ nsd:logo: dns.jpg
+ nsd:name: dns_forwarder_ns
+ nsd:vld:
+ - nsd:id: management
+ nsd:mgmt-network: 'true'
+ nsd:name: management
+ nsd:vim-network-name: subnet-8a91b2c0
+ nsd:vnfd-connection-point-ref:
+ - nsd:member-vnf-index-ref: '1'
+ nsd:vnfd-connection-point-ref: eth0
+ nsd:vnfd-id-ref: dns_forwarder
+ rw-nsd:meta: '{"containerPositionMap":{"1":{"top":210.5,"left":248,"right":498,"bottom":265.5,"width":250,"height":55},"ada27681-7f3e-4768-8be8-41973f849066":{"top":30,"left":135,"right":385,"bottom":85,"width":250,"height":55},"vld-1":{"top":60,"left":495,"right":745,"bottom":98,"width":250,"height":38},"management":{"top":90,"left":480,"right":730,"bottom":128,"width":250,"height":38}}}'
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+nsd:nsd-catalog:
+ nsd:nsd:
+ - nsd:constituent-vnfd:
+ - nsd:member-vnf-index: '1'
+ nsd:start-by-default: 'true'
+ nsd:vnfd-id-ref: ubuntu_1iface_cloudinit_newfile_vnfd
+ nsd:id: ubuntu_cloudinit
+ nsd:name: ubuntu_cloudinit
+ nsd:short-name: ubuntu_cloudinit
+ nsd:vld:
+ - nsd:id: mgmt
+ nsd:mgmt-network: 'false'
+ nsd:name: mgmt
+ nsd:short-name: mgmt
+ nsd:vnfd-connection-point-ref:
+ - nsd:member-vnf-index-ref: '1'
+ nsd:vnfd-connection-point-ref: eth0
+ nsd:vnfd-id-ref: ubuntu_1iface_cloudinit_newfile_vnfd
--- /dev/null
+#
+# Copyright 2017 Sandvine
+#
+# 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.
+#
+DESCRIPTORS_TOPDIR ?= ../..
+include $(DESCRIPTORS_TOPDIR)/mk/pkg.mk
+
+all: $(BUILD_DIR)/$(PKG_NAME)
--- /dev/null
+vnfd:vnfd-catalog:
+ vnfd:
+ - id: ubuntu_epa_virtio_vnf
+ name: ubuntu_epa_virtio_vnf
+ short-name: ubuntu_epa_virtio
+ description: VNF based on Ubuntu 16.04 LTS with EPA, 1 virtio interface and user osm
+ vendor: OSM
+ version: '1.0'
+
+ # Place the logo as png in icons directory and provide the name here
+ logo: ubuntu-logo14.png
+
+ # Management interface
+ mgmt-interface:
+ vdu-id: ubuntu_epa_virtio_vnf-VM
+
+ # Atleast one VDU need to be specified
+ vdu:
+ - id: ubuntu_epa_virtio_vnf-VM
+ name: ubuntu_epa_virtio_vnf-VM
+ description: ubuntu_epa_virtio_vnf-VM
+ count: 1
+
+ # Flavour of the VM to be instantiated for the VDU
+ vm-flavor:
+ memory-mb: 2048
+ storage-gb: 10
+
+ # Image including the full path
+ image: 'ubuntu1604'
+
+ interface:
+ # Specify the external interfaces
+ # There can be multiple interfaces defined
+ - name: eth0
+ virtual-interface:
+ type: OM-MGMT
+ bandwidth: '0'
+ vpci: 0000:00:0a.0
+ external-connection-point-ref: eth0
+ host-epa:
+ om-cpu-model-string: "Intel(R) Xeon(R) CPU E5-4620 0 @ 2.20GHz"
+ om-cpu-feature:
+ - feature: "64b"
+ - feature: "iommu"
+ - feature: "lps"
+ - feature: "tlbps"
+ - feature: "hwsv"
+ - feature: "dioc"
+ - feature: "ht"
+ guest-epa:
+ numa-node-policy:
+ node:
+ - id: 0
+ paired-threads:
+ num-paired-threads: 1
+ mem-policy: "STRICT"
+ node-cnt: 1
+ mempage-size: "LARGE"
+ cpu-pinning-policy: "DEDICATED"
+ cpu-thread-pinning-policy: "PREFER"
+ hypervisor-epa:
+ version: "10002|12001|2.6.32-358.el6.x86_64"
+ type: "REQUIRE_KVM"
+
+ connection-point:
+ - name: eth0
+ type: VPORT
sudo $OSM_DEVOPS/installers/nat_osm
}
+function FATAL(){
+ echo "FATAL error: Cannot install OSM due to \"$1\""
+ exit 1
+}
+
#Update RO, SO and UI:
function update(){
echo -e "\nUpdating components"
echo
}
-function so_is_up(){
+function so_is_up() {
SO_IP=$1
time=0
step=5
timelength=300
while [ $time -le $timelength ]
do
- curl -k https://$SO_IP:8008/api/operational/vcs/info \
- --header 'accept: application/vnd.yang.data+json' \
- --header 'authorization: Basic YWRtaW46YWRtaW4=' \
- --header 'cache-control: no-cache' \
- --header 'content-type: application/vnd.yang.data+json' &> /dev/null
- RET=$?
- if [ "$RET" == 0 ]; then
- break
+ if [[ `curl -k -X GET https://$SO_IP:8008/api/operational/vcs/info \
+ -H 'accept: application/vnd.yang.data+json' \
+ -H 'authorization: Basic YWRtaW46YWRtaW4=' \
+ -H 'cache-control: no-cache' 2> /dev/null | jq '.[].components.component_info[] | select(.component_name=="RW.Restconf")' 2>/dev/null | grep "RUNNING" | wc -l` -eq 1 ]]
+ then
+ echo "RW.Restconf running....SO is up"
+ return 0
fi
+
sleep $step
echo -n "."
time=$((time+step))
done
- if [ "$RET" != 0 ]; then
- FATAL "OSM Failed to startup"
- fi
- echo
+
+ FATAL "OSM Failed to startup"
}
#Configure VCA, SO and RO with the initial configuration:
trap 'rm -rf "$TEMPDIR"' EXIT
fi
-echo -e "Checking required packages: git"
-dpkg -l git &>/dev/null || ! echo -e " git not installed.\nInstalling git requires root privileges" || sudo apt-get install -y git
+need_packages="git jq"
+for package in $need_packages; do
+ echo -e "Checking required packages: $package"
+ dpkg -l $package &>/dev/null \
+ || ! echo -e " $package not installed.\nInstalling $package requires root privileges" \
+ || sudo apt-get install -y $package \
+ || FATAL "failed to install $package"
+done
+
if [ -z "$TEST_INSTALLER" ]; then
echo -e "\nCloning devops repo temporarily"
git clone https://osm.etsi.org/gerrit/osm/devops.git $TEMPDIR
fi
echo -e "\nGuessing the current stable release"
-LATEST_STABLE_DEVOPS=`git -C $TEMPDIR tag -l v[0-9].* | tail -n1`
+LATEST_STABLE_DEVOPS=`git -C $TEMPDIR tag -l v[0-9].* | sort -V | tail -n1`
[ -z "$COMMIT_ID" ] && [ -z "$LATEST_STABLE_DEVOPS" ] && echo "Could not find the current latest stable release" && exit 0
echo "Latest tag in devops repo: $LATEST_STABLE_DEVOPS"
[ -z "$COMMIT_ID" ] && [ -n "$LATEST_STABLE_DEVOPS" ] && COMMIT_ID="tags/$LATEST_STABLE_DEVOPS"
###############################################################################
# Set up repo and version
PLATFORM_REPOSITORY=OSM3
-PLATFORM_VERSION=5.2.0.1.71454
+PLATFORM_VERSION=5.2.0.2.72254
while getopts ":P:V:h" o; do
case "${o}" in
###############################################################################
# Set up repo and version
PLATFORM_REPOSITORY=OSM3
-PLATFORM_VERSION=5.2.0.1.71454
+PLATFORM_VERSION=5.2.0.2.72254
while getopts ":P:V:h" o; do
case "${o}" in
OSM_load_config
OSM_git_checkout "$@"
+trap 'WARNING "INTERRUPT"; exit 1' INT
INFO "starting build"
make clean || FATAL "Make clean failed"
-make -j16 || FATAL "Make failed"
-sudo make install || FATAL "Make install Failed"
+./BUILD.sh
-INFO "build done"
-exit 0
+RC=$?
+
+INFO "done, RC=$RC"
+exit $RC
CHARM_SRC_DIRS := $(addprefix $(CHARM_SRC_DIR)/, $(CHARMS))
CHARM_BUILD_DIRS := $(addprefix $(CHARM_BUILD_DIR)/, $(CHARMS))
CHARM_DOCKER_TAG := charm-tools
+DOCKER_BUILD ?=
all: $(CHARM_BUILD_DIRS)
clean:
-@ $(RM) -rf $(CHARM_BUILD_DIR)
+
+ifdef DOCKER_BUILD
$(CHARM_BUILD_DIR)/%: $(CHARM_SRC_DIR)/%
docker build -t $(CHARM_DOCKER_TAG) .
docker run -u $$(id -u):$$(id -g) -v$$(pwd):$$(pwd) -w$$(pwd) $(CHARM_DOCKER_TAG) charm-build -o $(BUILD_DIR) $<
+else
+$(CHARM_BUILD_DIR)/%: $(CHARM_SRC_DIR)/%
+ charm-build -o $(BUILD_DIR) $<
+endif
$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/%.tar.gz:
$(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/pong_vnf
-$(DESCRIPTOR_DIR)/vnfd/ping_pong_ns/build/%.tar.gz:
+$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/%.tar.gz:
$(MAKE) -C $(DESCRIPTOR_DIR)/nsd/ping_pong_ns
-ping_pong: check_OSM_HOSTNAME check_openstack_env
+ping_pong: check_OSM_HOSTNAME check_openstack_env \
+ $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz \
+ $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz \
+ $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz
$(Q)$(MAKE) \
- TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \
+ TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz,$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \
TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
JUNITXML=pytest-$@.xml \
PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='vnf-init-phase')
# make sure ns is running
- assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=120)
+ assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=240)
if ns_scale:
# for each descriptor, scale it
assert not osm.get_api().ns.scale(ns_name, scale['name'], 1)
# ensure ns is scaling-out
- assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='scaling-out',wait_time=120)
+ assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='scaling-out',wait_time=240)
# wait for ns to be in running-state
- assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=120)
+ assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=240)
+
+ time.sleep(10)
assert not osm.get_api().ns.delete(ns_name)