Initial Makefile for descriptor packages
authorAustin Cormier <Austin.Cormier@riftio.com>
Mon, 23 May 2016 23:12:00 +0000 (19:12 -0400)
committerAustin Cormier <Austin.Cormier@riftio.com>
Mon, 23 May 2016 23:12:00 +0000 (19:12 -0400)
26 files changed:
.gitignore [new file with mode: 0644]
Makefile [new file with mode: 0644]
src/gen_nsd_pkg.sh [new file with mode: 0755]
src/gen_vnfd_pkg.sh [new file with mode: 0755]
src/generate_descriptor_pkg.sh [new file with mode: 0755]
src/nsd/ims_allin1_corpa/IMS-corpA__nsd.yaml [new file with mode: 0644]
src/nsd/ims_allin1_corpa/icons/osm_2x.png [new file with mode: 0644]
src/nsd/ims_allin1_corpa/vnf_config/IMS-ALLIN1_2p__1.yaml [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/IMS-ALLIN1__vnfd.yaml [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/README.md [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions.yaml [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/create-update-user [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/create-user [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/delete-user [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/config.yaml [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/copyright [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/config-changed [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/install [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/start [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/stop [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/upgrade-charm [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/icon.svg [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/lib/reconfigure-aio [new file with mode: 0755]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/metadata.yaml [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/revision [new file with mode: 0644]
src/vnfd/ims_allin1_2p_vnf/icons/metaswitch_2x.png [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..1b2211d
--- /dev/null
@@ -0,0 +1 @@
+build*
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..0a01862
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,44 @@
+BUILD_DIR = build
+
+NSDS := gw_corpa_ns ims_allin1_corpa mwc16_gen_ns mwc16_pe_ns
+NSD_SRC_DIR := src/nsd
+NSD_BUILD_DIR := $(BUILD_DIR)/nsd
+
+NSD_SRC_DIRS := $(addprefix $(NSD_SRC_DIR)/, $(NSDS))
+NSD_BUILD_DIRS := $(addprefix $(NSD_BUILD_DIR)/, $(NSDS))
+NSD_PKGS := $(addsuffix .tar.gz, $(NSDS))
+NSD_BUILD_PKGS := $(addprefix $(NSD_BUILD_DIR)_pkgs/, $(NSD_PKGS))
+
+VNFDS := 6wind_vnf gw_corpa_pe1_vnf gw_corpa_pe2_vnf ims_allin1_2p_vnf tidgen_mwc16_vnf
+VNFD_SRC_DIR := src/vnfd
+VNFD_BUILD_DIR := $(BUILD_DIR)/vnfd
+
+VNFD_SRC_DIRS := $(addprefix $(VNFD_SRC_DIR)/, $(VNFDS))
+VNFD_BUILD_DIRS := $(addprefix $(VNFD_BUILD_DIR)/, $(VNFDS))
+VNFD_PKGS := $(addsuffix .tar.gz, $(VNFDS))
+VNFD_BUILD_PKGS := $(addprefix $(VNFD_BUILD_DIR)_pkgs/, $(VNFD_PKGS))
+
+all: $(VNFD_BUILD_PKGS) ${NSD_BUILD_PKGS}
+       echo $@
+
+clean:
+       -@ $(RM) -rf $(BUILD_DIR)
+
+$(VNFD_BUILD_DIR)/%: $(VNFD_SRC_DIR)/%
+       mkdir -p $(VNFD_BUILD_DIR)
+       cp -rf $< $(VNFD_BUILD_DIR)
+
+       src/gen_vnfd_pkg.sh $< $@
+       src/generate_descriptor_pkg.sh $(BUILD_DIR)/vnfd_pkgs $@
+
+$(NSD_BUILD_DIR)/%: $(NSD_SRC_DIR)/%
+       mkdir -p $(NSD_BUILD_DIR)
+       cp -rf $< $(NSD_BUILD_DIR)
+
+       src/gen_nsd_pkg.sh $< $@
+
+$(BUILD_DIR)/nsd_pkgs/%.tar.gz: $(NSD_BUILD_DIR)/%
+       src/generate_descriptor_pkg.sh $(BUILD_DIR)/nsd_pkgs $<
+
+$(BUILD_DIR)/vnfd_pkgs/%.tar.gz: $(VNFD_BUILD_DIR)/%
+       src/generate_descriptor_pkg.sh $(BUILD_DIR)/vnfd_pkgs $<
diff --git a/src/gen_nsd_pkg.sh b/src/gen_nsd_pkg.sh
new file mode 100755 (executable)
index 0000000..ea5e6a7
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# Generates a NSD descriptor package from a source directory
+# Usage:
+# gen_nsd_pkg.sh <pkg_src_dir> <pkg_dest_dir>
+
+set -o nounset
+
+if [ $# -ne 2 ]; then
+       echo "Error: Must provide 2 parameters" >@2
+       exit 1
+fi
+
+pkg_src_dir="$1"
+pkg_dest_dir="$2"
+
+if [ ! -e ${pkg_src_dir} ]; then
+    echo "Error: ${pkg_src_dir} does not exist"
+    exit 1
+fi
+
+if [ ! -e ${pkg_dest_dir} ]; then
+    echo "Error: ${pkg_src_dir} does not exist"
+    exit 1
+fi
+
+echo "Generating package in directory: ${pkg_dest_dir}"
+
+# Create any missing directories/files so each package has
+# a complete hierachy
+nsd_dirs=( ns_config vnf_config icons scripts )
+nsd_files=( README )
+
+nsd_dir="${pkg_src_dir}"
+echo $(pwd)
+
+mkdir -p "${pkg_dest_dir}"
+cp -rf ${nsd_dir}/* "${pkg_dest_dir}"
+for sub_dir in ${nsd_dirs[@]}; do
+    dir_path=${pkg_dest_dir}/${sub_dir}
+    mkdir -p ${dir_path}
+done
+
+for file in ${nsd_files[@]}; do
+    file_path=${pkg_dest_dir}/${file}
+    touch ${file_path}
+done
diff --git a/src/gen_vnfd_pkg.sh b/src/gen_vnfd_pkg.sh
new file mode 100755 (executable)
index 0000000..478d5c5
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# Generates a NSD descriptor package from a source directory
+# Usage:
+# gen_vnfd_pkg.sh <pkg_src_dir> <pkg_dest_dir>
+
+set -o nounset
+
+if [ $# -ne 2 ]; then
+       echo "Error: Must provide 2 parameters" >@2
+       exit 1
+fi
+
+pkg_src_dir="$1"
+pkg_dest_dir="$2"
+
+if [ ! -e ${pkg_src_dir} ]; then
+    echo "Error: ${pkg_src_dir} does not exist"
+    exit 1
+fi
+
+if [ ! -e ${pkg_dest_dir} ]; then
+    echo "Error: ${pkg_src_dir} does not exist"
+    exit 1
+fi
+
+echo "Generating package in directory: ${pkg_dest_dir}"
+
+# Create any missing directories/files so each package has
+# a complete hierachy
+vnfd_dirs=( charms icons scripts images )
+vnfd_files=( README )
+
+vnfd_dir="${pkg_src_dir}"
+echo $(pwd)
+
+mkdir -p "${pkg_dest_dir}"
+cp -rf ${vnfd_dir}/* "${pkg_dest_dir}"
+for sub_dir in ${vnfd_dirs[@]}; do
+    dir_path=${pkg_dest_dir}/${sub_dir}
+    mkdir -p ${dir_path}
+done
+
+for file in ${vnfd_files[@]}; do
+    file_path=${pkg_dest_dir}/${file}
+    touch ${file_path}
+done
diff --git a/src/generate_descriptor_pkg.sh b/src/generate_descriptor_pkg.sh
new file mode 100755 (executable)
index 0000000..82ecda1
--- /dev/null
@@ -0,0 +1,27 @@
+#! /usr/bin/bash
+# STANDARD_RIFT_IO_COPYRIGHT
+# Author(s): Anil Gunturu
+# Creation Date: 2015/10/09
+#
+# This shell script is used to create a descriptor package
+# The main functions of this script include:
+# - Generate checksums.txt file
+# - Generate a tar.gz file
+
+# Usage: generate_descriptor_pkg.sh <package-directory> <dest_package_dir>
+
+mkdir -p $1
+mkdir -p $2
+
+dest_dir=$(cd $1 && pwd)
+pkg_dir=$(cd $2 && pwd)
+
+echo $(pwd)
+cd ${pkg_dir}
+rm -rf checksums.txt
+find * -type f |
+    while read file; do
+        md5sum $file >> checksums.txt
+    done
+cd ..
+tar -zcvf ${dest_dir}/$(basename $pkg_dir).tar.gz $(basename $pkg_dir)
diff --git a/src/nsd/ims_allin1_corpa/IMS-corpA__nsd.yaml b/src/nsd/ims_allin1_corpa/IMS-corpA__nsd.yaml
new file mode 100644 (file)
index 0000000..27a1197
--- /dev/null
@@ -0,0 +1,57 @@
+nsd:nsd-catalog:
+    nsd:
+    -   id: IMS-corpA
+        name: IMS-corpA
+        short-name: IMS-corpA
+        description: All in one Clearwater IMS for corporation A in MWC16
+        logo: osm_2x.png
+        constituent-vnfd:
+        -   member-vnf-index: '1'
+            vnfd-id-ref: IMS-ALLIN1_2p
+        vld:
+        -   id: data
+            name: data
+            type: ELAN
+            provider-network:
+                overlay-type: VLAN
+                physical-network: net-corp
+                segmentation_id: '108'
+            vnfd-connection-point-ref:
+            -   member-vnf-index-ref: '1'
+                vnfd-connection-point-ref: eth0
+                vnfd-id-ref: IMS-ALLIN1_2p
+        -   id: management
+            name: management
+            type: ELAN
+            provider-network:
+                overlay-type: VLAN
+                physical-network: net-mgmtOS
+            vnfd-connection-point-ref:
+            -   member-vnf-index-ref: '1'
+                vnfd-connection-point-ref: eth1
+                vnfd-id-ref: IMS-ALLIN1_2p
+        config-primitive:
+        -   name: Update Domain
+            vnf-primitive-group:
+            -   member-vnf-index-ref: '1'
+                vnfd-id-ref: IMS-ALLIN1_2p
+                vnfd-name: cwims_vnfd
+                primitive:
+                -   index: '1'
+                    name: config
+        -   name: Add User
+            vnf-primitive-group:
+            -   member-vnf-index-ref: '1'
+                vnfd-id-ref: IMS-ALLIN1_2p
+                vnfd-name: cwims_vnfd
+                primitive:
+                -   index: '1'
+                    name: create-update-user
+        -   name: Delete User
+            vnf-primitive-group:
+            -   member-vnf-index-ref: '1'
+                vnfd-id-ref: IMS-ALLIN1_2p
+                vnfd-name: cwims_vnfd
+                primitive:
+                -   index: '1'
+                    name: delete-user
diff --git a/src/nsd/ims_allin1_corpa/icons/osm_2x.png b/src/nsd/ims_allin1_corpa/icons/osm_2x.png
new file mode 100644 (file)
index 0000000..62012d2
Binary files /dev/null and b/src/nsd/ims_allin1_corpa/icons/osm_2x.png differ
diff --git a/src/nsd/ims_allin1_corpa/vnf_config/IMS-ALLIN1_2p__1.yaml b/src/nsd/ims_allin1_corpa/vnf_config/IMS-ALLIN1_2p__1.yaml
new file mode 100644 (file)
index 0000000..33c5ef9
--- /dev/null
@@ -0,0 +1,4 @@
+initial_config_primitive:
+- name: config
+  parameter:
+    proxied_ip: <rw_mgmt_ip>
diff --git a/src/vnfd/ims_allin1_2p_vnf/IMS-ALLIN1__vnfd.yaml b/src/vnfd/ims_allin1_2p_vnf/IMS-ALLIN1__vnfd.yaml
new file mode 100644 (file)
index 0000000..b36941a
--- /dev/null
@@ -0,0 +1,85 @@
+vnfd:vnfd-catalog:
+    vnfd:
+    -   id: IMS-ALLIN1_2p
+        name: IMS-ALLIN1_2p
+        short-name: IMS-ALLIN1_2p
+        description: IMS-ALLIN1_2p
+        logo: metaswitch_2x.png
+        mgmt-interface:
+            vdu-id: IMS-ALLIN1_2p-VM
+            vnf-configuration:
+                config-attributes:
+                    config-delay: '0'
+                    config-priority: '1'
+                config-primitive:
+                -   name: config
+                    parameter:
+                    -   name: home_domain
+                        data-type: STRING
+                        mandatory: 'true'
+                        default-value: ims.com
+                    -   name: password
+                        data-type: string
+                        mandatory: 'true'
+                        name: password
+                        default-value: cw-aio
+                -   name: create-update-user
+                    parameter:
+                    -   name: number
+                        data-type: STRING
+                        mandatory: 'true'
+                    -   name: password
+                        data-type: STRING
+                        mandatory: 'true'
+                -   name: delete-user
+                    parameter:
+                    -   name: number
+                        data-type: STRING
+                        mandatory: 'true'
+                initial-config-primitive:
+                -   name: config
+                    parameter:
+                    -   name: proxied_ip
+                        value: <rw_mgmt_ip>
+                    seq: '1'
+                juju:
+                    charm: clearwater-aio-proxy
+        connection-point:
+        -   name: eth0
+            type: VPORT
+        -   name: eth1
+            type: VPORT
+        vdu:
+        -   id: IMS-ALLIN1_2p-VM
+            name: IMS-ALLIN1_2p-VM
+            description: IMS-ALLIN1_2p-VM
+            image: /mnt/powervault/virtualization/vnfs/demos/mwc2016/allin1.qcow2
+            vm-flavor:
+                memory-mb: '4096'
+                storage-gb: '10'
+                vcpu-count: '2'
+            mgmt-vpci: 0000:00:0a.0
+            external-interface:
+            -   name: eth0
+                virtual-interface:
+                    bandwidth: '0'
+                    type: VIRTIO
+                    vpci: 0000:00:0a.0
+                vnfd-connection-point-ref: eth0
+            -   name: eth1
+                virtual-interface:
+                    bandwidth: '0'
+                    type: OM-MGMT
+                    vpci: 0000:00:0b.0
+                vnfd-connection-point-ref: eth1
+            guest-epa:
+                cpu-pinning-policy: DEDICATED
+                cpu-thread-pinning-policy: PREFER
+                mempage-size: LARGE
+                numa-node-policy:
+                    mem-policy: STRICT
+                    node:
+                    -   id: '0'
+                        paired-threads:
+                            num-paired-threads: '1'
+                    node-cnt: '1'
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/README.md b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/README.md
new file mode 100644 (file)
index 0000000..c67a763
--- /dev/null
@@ -0,0 +1,53 @@
+# Overview
+
+This is a [Juju charm](https://jujucharms.com/about), which allows configuration of the [Project Clearwater](http://projectclearwater.org) IMS core's [all-in-one](http://clearwater.readthedocs.org/en/stable/All_in_one_Images/index.html) node.
+
+This is a proxy charm, meaning that you must spin up the all-in-one VM first, and then point this charm at it to manage it.
+
+Since the all-in-one node does not support scaling up, neither does this charm.
+
+# Deployment
+
+## Initial deployment
+
+The all-in-one VM image should be downloaded from [http://repo.cw-ngv.com/juju-clearwater-2/cw-aio.ova](http://repo.cw-ngv.com/juju-clearwater-2/cw-aio.ova) and deployed onto your virtualization platform.  (You could alternatively try the latest all-in-one VM image from [http://vm-images.cw-ngv.com/](http://vm-images.cw-ngv.com/), but this may not have been tested with this charm - the juju-clearwater-2 version above is known to work.)
+
+The proxy charm should then be deployed, pointing at the all-in-one VM.
+
+# Using the All-in-One Node
+
+Once installed, the all-in-one node will listen for SIP traffic on port 5060 (both TCP and UDP).  You can use a standard SIP client (e.g. Blink, Boghe or X-Lite) to register against the all-in-one VM's public IP and make calls.
+
+Our ["Making your first call" documentation](http://clearwater.readthedocs.org/en/latest/Making_your_first_call/index.html) has more information on this process.
+
+# Configuration
+
+-  `proxied_ip`: The IP address of the All-in-One node to manage
+-  `password`: The login password of the All-in-One node to manage (default is
+ very likely correct)
+-  `home_domain`: The home domain for this service
+-  `base_number`: The first number to be allocated in the number range
+-  `number_count`: The count of numbers to allocate
+
+# Actions
+
+This proxy charm exposes two actions.
+
+-  `create-update-user`: Creates a user, or updates if they already exist
+    -  `number`: The number to provision
+    -  `password`: The number's password
+
+-  `delete-user`: Deletes a user
+    -  `number`: The number to delete
+
+For example, `juju action do clearwater-aio-proxy/0 create-update-user number=\"1234567890\" password=secret` creates a user.  (Note that the escaped double-quotes are required to avoid juju parsing the number as an integer rather than a string.)
+
+Note that the numbers specified in `create-update-user` and `delete-user` actions need not be in the number range specified in the configuration above.
+
+# Contact and Upstream Project Information
+
+Project Clearwater is an open-source IMS core, developed by [Metaswitch Networks](http://www.metaswitch.com) and released under the [GNU GPLv3](http://www.projectclearwater.org/download/license/). You can find more information about it on [our website](http://www.projectclearwater.org/) or [our documentation site](https://clearwater.readthedocs.org).
+
+Clearwater source code and issue list can be found at https://github.com/Metaswitch/.
+
+If you have problems when using Project Clearwater, read [our troubleshooting documentation](http://clearwater.readthedocs.org/en/latest/Troubleshooting_and_Recovery/index.html) for help, or see [our support page](http://clearwater.readthedocs.org/en/latest/Support/index.html) to find out how to ask mailing list questions or raise issues.
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions.yaml b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions.yaml
new file mode 100644 (file)
index 0000000..424ae89
--- /dev/null
@@ -0,0 +1,19 @@
+create-update-user:
+  description: Create a user, or update a user if they already exist.
+  params:
+    number:
+      description: The number to provision
+      type: string
+    password:
+      description: The number's password
+      type: string
+  required: [number, password]
+  additionalProperties: false
+delete-user:
+  description: Delete a user.  If the user does not exist, this is still considered success.
+  params:
+    number:
+      description: The number to provision
+      type: string
+  required: [number]
+  additionalProperties: false
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/create-update-user b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/create-update-user
new file mode 100755 (executable)
index 0000000..1f388fe
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -e
+
+# Get the configuration and action parameters.
+proxied_ip=$(config-get proxied_ip)
+login_password=$(config-get password)
+home_domain=$(config-get home_domain)
+number=$(action-get number)
+password=$(action-get password)
+
+if [ -z "$proxied_ip" ] || [ -z "$login_password" ] || [ -z "$home_domain" ] ; then
+  echo Proxy not yet configured!
+  exit 1
+fi
+
+# If the user doesn't exist, try to create them.  Otherwise, try to update them.
+if ! sshpass -p$login_password ssh -o StrictHostKeyChecking=no ubuntu@$proxied_ip "echo $login_password | sudo -S /usr/share/clearwater/bin/display_user $number $home_domain" ; then
+  echo "Subscriber doesn't exist - creating"
+  sshpass -p$login_password ssh -o StrictHostKeyChecking=no ubuntu@$proxied_ip "echo $login_password | sudo -S /usr/share/clearwater/bin/create_user $number $home_domain $password"
+else
+  echo "Subscriber exists - updating"
+  sshpass -p$login_password ssh -o StrictHostKeyChecking=no ubuntu@$proxied_ip "echo $login_password | sudo -S /usr/share/clearwater/bin/update_user $number $home_domain --password $password"
+fi
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/create-user b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/create-user
new file mode 100755 (executable)
index 0000000..feeb646
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+set -e
+
+# Get the configuration and action parameters.
+proxied_ip=$(config-get proxied_ip)
+login_password=$(config-get password)
+home_domain=$(config-get home_domain)
+number=$(action-get number)
+password=$(action-get password)
+
+if [ -z "$proxied_ip" ] || [ -z "$login_password" ] || [ -z "$home_domain" ] ; then
+  echo Proxy not yet configured!
+  exit 1
+fi
+
+# Create the user.
+sshpass -p$login_password ssh -o StrictHostKeyChecking=no ubuntu@$proxied_ip "echo $login_password | sudo -S /usr/share/clearwater/bin/create_user $number $home_domain $password"
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/delete-user b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/actions/delete-user
new file mode 100755 (executable)
index 0000000..7ecf519
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -e
+
+# Get the configuration and action parameters.
+proxied_ip=$(config-get proxied_ip)
+login_password=$(config-get password)
+home_domain=$(config-get home_domain)
+number=$(action-get number)
+
+if [ -z "$proxied_ip" ] || [ -z "$login_password" ] || [ -z "$home_domain" ] ; then
+  echo Proxy not yet configured!
+  exit 1
+fi
+
+# Delete the user.
+sshpass -p$login_password ssh -o StrictHostKeyChecking=no ubuntu@$proxied_ip "echo $login_password | sudo -S /usr/share/clearwater/bin/delete_user -y $number $home_domain"
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/config.yaml b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/config.yaml
new file mode 100644 (file)
index 0000000..3be783f
--- /dev/null
@@ -0,0 +1,20 @@
+options:
+  proxied_ip:
+    description: The IP address of the All-in-One node to manage
+    type: string
+  password:
+    default: cw-aio
+    description: The login password of the All-in-One node to manage (default is very likely correct)
+    type: string
+  home_domain:
+    default: example.com
+    description: The home domain for this service
+    type: string
+  base_number:
+    default: "1230000000"
+    description: The first number to be allocated in the number range
+    type: string
+  number_count:
+    default: 1000
+    description: The count of numbers to allocate
+    type: int
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/copyright b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/copyright
new file mode 100644 (file)
index 0000000..39f1ec8
--- /dev/null
@@ -0,0 +1,31 @@
+Project Clearwater - IMS in the Cloud
+Copyright (C) 2016  Metaswitch Networks Ltd
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation, either version 3 of the License, or (at your
+option) any later version, along with the "Special Exception" for use of
+the program along with SSL, set forth below. This program is distributed
+in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE.  See the GNU General Public License for more
+details. You should have received a copy of the GNU General Public
+License along with this program.  If not, see
+<http://www.gnu.org/licenses/>.
+
+The author can be reached by email at clearwater@metaswitch.com or by
+post at Metaswitch Networks Ltd, 100 Church St, Enfield EN2 6BQ, UK
+
+Special Exception
+Metaswitch Networks Ltd  grants you permission to copy, modify,
+propagate, and distribute a work formed by combining OpenSSL with The
+Software, or a work derivative of such a combination, even if such
+copying, modification, propagation, or distribution would otherwise
+violate the terms of the GPL. You must comply with the GPL in all
+respects for all of the code used other than OpenSSL.
+"OpenSSL" means OpenSSL toolkit software distributed by the OpenSSL
+Project and licensed under the OpenSSL Licenses, or a work based on such
+software and licensed under the OpenSSL Licenses.
+"OpenSSL Licenses" means the OpenSSL License and Original SSLeay License
+under which the OpenSSL Project distributes the OpenSSL toolkit software,
+as those licenses appear in the file LICENSE-OPENSSL.
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/config-changed b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/config-changed
new file mode 100755 (executable)
index 0000000..4382edd
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -e
+
+# Get the configuration.
+proxied_ip=$(config-get proxied_ip)
+login_password=$(config-get password)
+home_domain=$(config-get home_domain)
+base_number=$(config-get base_number)
+number_count=$(config-get number_count)
+
+# If the node is configured, provision it and its numbers.
+if [ -n "$proxied_ip" ] && [ -n "$home_domain" ]  && [ -n "$login_password" ] ; then
+  # Copy the reconfigure-aio script on, and run it.
+  status-set maintenance "configuring"
+  sshpass -p$login_password scp -o StrictHostKeyChecking=no $CHARM_DIR/lib/reconfigure-aio ubuntu@$proxied_ip:/tmp/reconfigure-aio.$$
+  sshpass -p$login_password ssh -o StrictHostKeyChecking=no ubuntu@$proxied_ip "echo $login_password | sudo -S bash -c 'bash /tmp/reconfigure-aio.$$ $home_domain $base_number $number_count ; rm -f /tmp/reconfigure-aio.$$'"
+  status-set active "configured"
+else
+  status-set blocked "waiting for configuration"
+fi
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/install b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/install
new file mode 100755 (executable)
index 0000000..4378d03
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+set -e
+
+status-set maintenance "installing"
+
+# Install sshpass as we'll need it shortly
+apt-get update
+apt-get -q -y --force-yes install sshpass
+
+status-set maintenance "installed"
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/start b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/start
new file mode 100755 (executable)
index 0000000..8824f74
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+# Here put anything that is needed to start the service.
+# Note that currently this is run directly after install
+# i.e. 'service apache2 start'
+set -e
+
+# Nothing to do
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/stop b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/stop
new file mode 100755 (executable)
index 0000000..f6ecbe3
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/bash
+# This will be run when the service is being torn down, allowing you to disable
+# it in various ways..
+# For example, if your web app uses a text file to signal to the load balancer
+# that it is live... you could remove it and sleep for a bit to allow the load
+# balancer to stop sending traffic.
+# rm /srv/webroot/server-live.txt && sleep 30
+set -e
+
+# Nothing to do
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/upgrade-charm b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/hooks/upgrade-charm
new file mode 100755 (executable)
index 0000000..fdb1f86
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+# This hook is executed each time a charm is upgraded after the new charm
+# contents have been unpacked
+# Best practice suggests you execute the hooks/install to ensure all updates are processed -
+# hooks/config_change is triggered automatically
+set -e
+
+$CHARM_DIR/hooks/install
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/icon.svg b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/icon.svg
new file mode 100644 (file)
index 0000000..f9ac92c
--- /dev/null
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="96"
+   height="96"
+   id="svg6517"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   sodipodi:docname="icon.svg">
+  <defs
+     id="defs6519">
+    <linearGradient
+       id="Background">
+      <stop
+         id="stop4178"
+         offset="0"
+         style="stop-color:#b8b8b8;stop-opacity:1" />
+      <stop
+         id="stop4180"
+         offset="1"
+         style="stop-color:#c9c9c9;stop-opacity:1" />
+    </linearGradient>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Inner Shadow"
+       id="filter1121">
+      <feFlood
+         flood-opacity="0.59999999999999998"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood1123" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="out"
+         result="composite1"
+         id="feComposite1125" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur1127" />
+      <feOffset
+         dx="0"
+         dy="2"
+         result="offset"
+         id="feOffset1129" />
+      <feComposite
+         in="offset"
+         in2="SourceGraphic"
+         operator="atop"
+         result="composite2"
+         id="feComposite1131" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter950">
+      <feFlood
+         flood-opacity="0.25"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood952" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite954" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur956" />
+      <feOffset
+         dx="0"
+         dy="1"
+         result="offset"
+         id="feOffset958" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite960" />
+    </filter>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath873">
+      <g
+         transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
+         id="g875"
+         inkscape:label="Layer 1"
+         style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
+        <path
+           style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
+           d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
+           id="path877"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="sssssssss" />
+      </g>
+    </clipPath>
+    <filter
+       inkscape:collect="always"
+       id="filter891"
+       inkscape:label="Badge Shadow">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.71999962"
+         id="feGaussianBlur893" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.3995495"
+     inkscape:cx="18.514671"
+     inkscape:cy="49.018169"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1331"
+     inkscape:window-height="674"
+     inkscape:window-x="19"
+     inkscape:window-y="1"
+     inkscape:window-maximized="0"
+     showborder="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:showpageshadow="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid821" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="16,48"
+       id="guide823" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="64,80"
+       id="guide825" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="80,40"
+       id="guide827" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="64,16"
+       id="guide829" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata6522">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="BACKGROUND"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(268,-635.29076)"
+     style="display:inline">
+    <path
+       style="fill:#e6e6e6;fill-opacity:1;stroke:none;display:inline;filter:url(#filter1121)"
+       d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
+       id="path6455"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sssssssss" />
+    <image
+       y="633.29077"
+       x="-270"
+       id="image3169"
+       xlink:href="data:image/png;base64,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
+AABJRU5ErkJggg==
+"
+       height="96"
+       width="96"
+       style="stroke:#000000;stroke-opacity:0.18666669" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="PLACE YOUR PICTOGRAM HERE"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="BADGE"
+     style="display:none"
+     sodipodi:insensitive="true">
+    <g
+       style="display:inline"
+       transform="translate(-340.00001,-581)"
+       id="g4394"
+       clip-path="none">
+      <g
+         id="g855">
+        <g
+           inkscape:groupmode="maskhelper"
+           id="g870"
+           clip-path="url(#clipPath873)"
+           style="opacity:0.6;filter:url(#filter891)">
+          <path
+             transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-237.54282)"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             sodipodi:ry="12"
+             sodipodi:rx="12"
+             sodipodi:cy="552.36218"
+             sodipodi:cx="252"
+             id="path844"
+             style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             sodipodi:type="arc" />
+        </g>
+        <g
+           id="g862">
+          <path
+             sodipodi:type="arc"
+             style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             id="path4398"
+             sodipodi:cx="252"
+             sodipodi:cy="552.36218"
+             sodipodi:rx="12"
+             sodipodi:ry="12"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-238.54282)" />
+          <path
+             transform="matrix(1.25,0,0,1.25,33,-100.45273)"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             sodipodi:ry="12"
+             sodipodi:rx="12"
+             sodipodi:cy="552.36218"
+             sodipodi:cx="252"
+             id="path4400"
+             style="color:#000000;fill:#dd4814;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             sodipodi:type="arc" />
+          <path
+             sodipodi:type="star"
+             style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             id="path4459"
+             sodipodi:sides="5"
+             sodipodi:cx="666.19574"
+             sodipodi:cy="589.50385"
+             sodipodi:r1="7.2431178"
+             sodipodi:r2="4.3458705"
+             sodipodi:arg1="1.0471976"
+             sodipodi:arg2="1.6755161"
+             inkscape:flatsided="false"
+             inkscape:rounded="0.1"
+             inkscape:randomized="0"
+             d="m 669.8173,595.77657 c -0.39132,0.22593 -3.62645,-1.90343 -4.07583,-1.95066 -0.44938,-0.0472 -4.05653,1.36297 -4.39232,1.06062 -0.3358,-0.30235 0.68963,-4.03715 0.59569,-4.47913 -0.0939,-0.44198 -2.5498,-3.43681 -2.36602,-3.8496 0.18379,-0.41279 4.05267,-0.59166 4.44398,-0.81759 0.39132,-0.22593 2.48067,-3.48704 2.93005,-3.4398 0.44938,0.0472 1.81505,3.67147 2.15084,3.97382 0.3358,0.30236 4.08294,1.2817 4.17689,1.72369 0.0939,0.44198 -2.9309,2.86076 -3.11469,3.27355 -0.18379,0.41279 0.0427,4.27917 -0.34859,4.5051 z"
+             transform="matrix(1.511423,-0.16366377,0.16366377,1.511423,-755.37346,-191.93651)" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/lib/reconfigure-aio b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/lib/reconfigure-aio
new file mode 100755 (executable)
index 0000000..a7cad90
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+# Reconfigures an all-in-one image to use a new home domain and number range.
+# Usage: reconfigure-aio <home-domain> [<base-number> <number-count>]
+
+# Get command-line arguments.
+home_domain=$1
+base_number=$2
+number_count=$3
+
+if [ -z "$home_domain" ] ; then
+  echo "Usage: reconfigure-aio <home-domain> [<base-number> <number-count>]"
+fi
+
+# Remove all old numbers from the database, unless they're currently assigned.
+# We do this even if the home domain hasn't changed, because the number range might have done (and
+# it's hard to tell if that's happened, and cheap/low-impact to just do the reprovisioning).
+old_home_domain=$(. /etc/clearwater/config ; echo $home_domain)
+echo "DELETE FROM ellis.numbers WHERE number LIKE '%@$old_home_domain' AND owner_id IS NULL ;" | mysql
+
+# Update /etc/clearwater/shared_config, if the home domain has changed.
+if [ "$home_domain" != "$old_home_domain" ] ; then
+  function escape { echo $1 | sed -e 's/\//\\\//g' ; }
+  sed -e 's/^home_domain=.*$/home_domain='$(escape $home_domain)'/g' \
+      </etc/clearwater/shared_config >/tmp/shared_config.$$
+  mv /tmp/shared_config.$$ /etc/clearwater/shared_config
+  
+  # Restart clearwater-infrastructure to propagate changes to other configuration files.
+  service clearwater-infrastructure restart
+fi
+
+# Create new numbers in the new domain, if we've been asked to.
+if [ -n "$base_number" ] && [ -n "$number_count" ] ; then
+  /usr/share/clearwater/ellis/env/bin/python /usr/share/clearwater/ellis/src/metaswitch/ellis/tools/create_numbers.py --start $base_number --count $number_count
+fi
+
+# Restart all the components, if the home domain has changed.
+if [ "$home_domain" != "$old_home_domain" ] ; then
+  # Work around https://github.com/Metaswitch/sprout/issues/1296.
+  service bono stop
+
+  # Restart all the processes.
+  for X in /usr/share/clearwater/infrastructure/scripts/restart/* ; do $X ; done
+
+  # Kick monit to wake up and sleep for 10 seconds to make sure it has an accurate view of the system.
+  monit
+  sleep 10
+
+  # Now wait until all the processes are back up and running (or at least "Uptime failed", which
+  # means the process is running, just hasn't been running for very long).
+  while monit summary | grep _process | egrep -v "(Running|Uptime failed)" ; do
+    echo Some processes still not running - waiting...
+    sleep 2
+  done
+  echo All processes running - configuration complete!
+fi
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/metadata.yaml b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/metadata.yaml
new file mode 100644 (file)
index 0000000..4f1ad13
--- /dev/null
@@ -0,0 +1,10 @@
+name: clearwater-aio-proxy
+summary: All-in-One proxy charm for Project Clearwater
+maintainer: Project Clearwater Maintainers <maintainers@projectclearwater.org>
+description: All-in-One proxy charm for Project Clearwater
+tags:
+  - misc
+subordinate: false
+provides:
+  ue:
+    interface: 3GPP-Gm
diff --git a/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/revision b/src/vnfd/ims_allin1_2p_vnf/charms/clearwater-aio-proxy/revision
new file mode 100644 (file)
index 0000000..d00491f
--- /dev/null
@@ -0,0 +1 @@
+1
diff --git a/src/vnfd/ims_allin1_2p_vnf/icons/metaswitch_2x.png b/src/vnfd/ims_allin1_2p_vnf/icons/metaswitch_2x.png
new file mode 100644 (file)
index 0000000..a899bc8
Binary files /dev/null and b/src/vnfd/ims_allin1_2p_vnf/icons/metaswitch_2x.png differ