-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 8/29/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf / Anil Gunturu
# Creation Date: 11/18/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 05/22/2014
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/18/2013
#!/bin/bash -xe
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
cd $(dirname $0)
cd ..
#!/usr/bin/bash
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
if [ "$1" == "ALL" ]; then
#!/usr/bin/bash
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
if [ "$1" == "ALL" ]; then
set -- -r /usr/rift/scripts/setup/PIP3
#!/usr/bin/bash
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
progs="/bin/pip3 /bin/python3-pip"
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 03/26/2014
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Author(s): Austin Cormier
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Author(s): Austin Cormier
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 2015/11/20
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-cloud-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-cloud
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-config-agent-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-config-agent
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-sdn-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-sdn
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
# Creation Date: 2016/1/12
-# RIFT_IO_STANDARD_CMAKE_COPYRIGHT_HEADER(END)
cmake_minimum_required(VERSION 2.8)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 2014/04/30
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 03/26/2014
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 03/26/2014
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
+++ /dev/null
-RIFT.core, rwmc/mock/node_modules/autobahn, AutobahnJS, MIT, https://github.com/crossbario/autobahn-js
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 2014/12/11
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 2014/12/11
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
# Author(s): Austin Cormier
# Creation Date: 1/11/2015
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
# Creation Date: 2016/1/12
-# RIFT_IO_STANDARD_CMAKE_COPYRIGHT_HEADER(END)
cmake_minimum_required(VERSION 2.8)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 2014/12/11
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 2014/12/11
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 10/15/2014
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-l2-topology-annotation
-{
- namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology";
- prefix "ietf-l2-topology-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import rw-base {
- prefix rwbase;
- }
-
- import ietf-network {
- prefix nd;
- }
-
- import ietf-network-topology {
- prefix nt;
- }
-
- import ietf-l2-topology {
- prefix lt;
- }
-
- tailf:annotate "/nd:network" {
- tailf:callpoint base_show;
- }
-
- tailf:annotate "/nd:network/nd:server-provided" {
- tailf:callpoint base_show;
- }
-
-}
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-l2-topology {
- yang-version 1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology";
- prefix "l2t";
-
- import ietf-network {
- prefix "nw";
- }
-
- import ietf-network-topology {
- prefix "nt";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- organization "TBD";
- contact "I-D Editor: jie.dong@huawei.com";
-
- description
- "This module defines a basic model for
- the layer-2 topology of a network";
-
- revision "2015-06-23" {
- description "Initial revision";
- reference "draft-ietf-i2rs-l2-network-topology-01";
- }
-
- /*
- * Typedefs
- */
-
- typedef vlan {
- type uint16 {
- range "0..4095";
- }
- description "VLAN ID";
- }
-
- typedef trill-nickname {
- type uint16;
- description "TRILL Nickname";
- }
-
- typedef flag-type {
- type identityref {
- base "flag-identity";
- }
- description "Base type for flags";
- }
-
- typedef l2-network-event-type {
- type enumeration {
- enum "add" {
- value 0;
- description "An L2 node or link or termination-point
- has been added";
- }
- enum "remove" {
- value 1;
- description "An L2 node or link or termination-point
- has been removed";
- }
- enum "update" {
- value 2;
- description "An L2 node or link or termination-point
- has been updated";
- }
- }
- description "l2 network event type for notifications";
- } // l2-topology-event-type
-
-
- /*
- * Features
- */
-
- feature VLAN {
- description
- "Indicates that the system supports the
- vlan functions";
- }
-
- feature QinQ {
- description
- "Indicates that the system supports the
- qinq functions";
- }
-
- feature PBB {
- description
- "Indicates that the device supports the
- provider-backbone-bridging functions";
- }
-
- feature VPLS {
- description
- "Indicates that the device supports the
- VPLS functions";
- reference "RFC 4761, RFC 4762";
- }
-
- feature TRILL {
- description
- "Indicates that the device supports the
- TRILL functions";
- reference "RFC 6325";
- }
-
- feature VXLAN {
- description
- "Indicates that the device supports the
- VXLAN functions";
- reference "RFC 7348";
- }
-
- /*
- * Identities
- */
- identity flag-identity {
- description "Base type for flags";
- }
-
- identity encapsulation-type {
- description
- "Base identity from which specific encapsulation
- types are derived.";
- }
-
- identity eth-encapsulation-type {
- base encapsulation-type;
- description
- "Base identity from which specific ethernet
- encapsulation types are derived.";
-
- }
-
- identity ethernet {
- base eth-encapsulation-type;
- description
- "native ethernet encapsulation";
- }
-
- identity vlan {
- base eth-encapsulation-type;
- description
- "vlan encapsulation";
- }
-
- identity qinq {
- base eth-encapsulation-type;
- description
- "qinq encapsulation";
- }
-
- identity pbb {
- base eth-encapsulation-type;
- description
- "pbb encapsulation";
- }
-
- identity trill {
- base eth-encapsulation-type;
- description
- "trill encapsulation";
- }
-
- identity vpls {
- base eth-encapsulation-type;
- description
- "vpls encapsulation";
- }
-
- identity vxlan {
- base eth-encapsulation-type;
- description
- "vxlan encapsulation";
- }
-
- identity frame-relay {
- base encapsulation-type;
- description
- "Frame Relay encapsulation";
- }
-
- identity ppp {
- base encapsulation-type;
- description
- "PPP encapsulation";
- }
-
- identity hdlc {
- base encapsulation-type;
- description
- "HDLC encapsulation";
- }
-
- identity atm {
- base encapsulation-type;
- description
- "Base identity from which specific ATM
- encapsulation types are derived.";
-
- }
-
- identity pwe3 {
- base encapsulation-type;
- description
- "Base identity from which specific pw
- encapsulation types are derived.";
- }
-
-
- /*
- * Groupings
- */
-
-
- grouping l2-network-type {
- description "Identify the topology type to be L2.";
- container l2-network {
- presence "indicates L2 Network";
- description
- "The presence of the container node indicates
- L2 Topology";
- }
- }
-
- grouping l2-network-attributes {
- description "L2 Topology scope attributes";
- container l2-network-attributes {
- description "Containing L2 network attributes";
- leaf name {
- type string;
- description "Name of the L2 network";
- }
-
- leaf-list flag {
- type flag-type;
- description "L2 network flags";
- }
- }
- }
-
- grouping l2-node-attributes {
- description "L2 node attributes";
- container l2-node-attributes {
- description "Containing L2 node attributes";
- leaf name {
- type string;
- description "Node name";
- }
- leaf description {
- type string;
- description "Node description";
- }
- leaf-list management-address {
- type inet:ip-address;
- description "System management address";
- }
- leaf management-vid {
- if-feature VLAN;
- type vlan;
- description "System management VID";
- }
- leaf-list nick-name {
- if-feature TRILL;
- type trill-nickname;
- description "Nickname of the RBridge";
- }
- leaf-list flag {
- type flag-type;
- description "Node operational flags";
- }
- }
- } // grouping l2-node-attributes
-
-
- grouping l2-link-attributes {
- description "L2 link attributes";
- container l2-link-attributes {
- description "Containing L2 link attributes";
- leaf name {
- type string;
- description "Link name";
- }
- leaf-list flag {
- type flag-type;
- description "Link flags";
- }
- leaf rate {
- type decimal64 {
- fraction-digits 2;
- }
- description "Link rate";
-
- }
- leaf delay {
- type uint32;
- description "Link delay in microseconds";
- }
- leaf-list srlg {
- type uint32;
- description
- "List of Shared Risk Link Groups
- this link belongs to.";
- }
- }
- } // grouping l2-link-attributes
-
- grouping l2-termination-point-attributes {
- description "L2 termination point attributes";
- container l2-termination-point-attributes {
- description "Containing L2 TP attributes";
- leaf description {
- type string;
- description "Port description";
- }
-
- leaf maximum-frame-size {
- type uint32;
- description "Maximum frame size";
- }
-
- choice l2-termination-point-type {
- description
- "Indicates termination-point type
- specific attributes";
- case ethernet {
- leaf mac-address {
- type yang:mac-address;
- description "Interface MAC address";
- }
-
- leaf eth-encapsulation {
- type identityref {
- base eth-encapsulation-type;
- }
- description
- "Encapsulation type of this
- ternimation point.";
- }
-
- leaf port-vlan-id {
- if-feature VLAN;
- type vlan;
- description "Port VLAN ID";
- }
-
- list vlan-id-name {
- if-feature VLAN;
- key "vlan-id";
- description "Interface configured VLANs";
- leaf vlan-id {
- type vlan;
- description "VLAN ID";
- }
- leaf vlan-name {
- type string;
- description "VLAN Name";
- }
- }
- } //case ethernet
-
- case legacy {
- leaf encapsulation {
- type identityref {
- base encapsulation-type;
- }
- description
- "Encapsulation type of this termination point.";
- }
- } //case legacy
-
- } //choice termination-point-type
-
- leaf tp-state {
- type enumeration {
- enum in-use {
- value 0;
- description
- "the termination point is in forwarding state";
- }
- enum blocking {
- value 1;
- description
- "the termination point is in blocking state";
- }
- enum down {
- value 2;
- description
- "the termination point is in down state";
- }
- enum others {
- value 3;
- description
- "the termination point is in other state";
- }
- }
- config false;
- description "State of the termination point";
- }
- }
- } // grouping l2-termination-point-attributes
-
-/*** grouping of network/node/link/tp leaf-refs ***/
-
- grouping network-ref {
- description
- "Grouping for an absolute reference to a network topology
- instance.";
- leaf network-ref {
- type leafref {
- path "/nw:network/nw:network-id";
- }
- description
- "An absolute reference to a network topology instance.";
- }
- }
-
- grouping link-ref {
- description
- "Grouping for an absolute reference to a link instance.";
- uses network-ref;
- leaf link-ref {
- type leafref {
- path "/nw:network"
- +"[nw:network-id = current()/../network-ref]"
- +"/nt:link/nt:link-id";
- }
- description
- "An absolute reference to a link instance.";
- }
- }
-
- grouping node-ref {
- description
- "Grouping for an absolute reference to a node instance.";
- uses network-ref;
- leaf node-ref {
- type leafref {
- path "/nw:network"
- +"[nw:network-id = current()/../network-ref]"
- +"/nw:node/nw:node-id";
- }
- description
- "An absolute reference to a node instance.";
- }
- }
-
- grouping tp-ref {
- description
- "Grouping for an absolute reference to a termination point.";
- uses node-ref;
- leaf tp-ref {
- type leafref {
- path "/nw:network"
- +"[nw:network-id = current()/../network-ref]"
- +"/nw:node[nw:node-id = current()/../node-ref]"
- +"/nt:termination-point/nt:tp-id";
- }
- description
- "Grouping for an absolute reference to a TP.";
- }
- }
-
-
- /*
- * Data nodes
- */
- augment "/nw:network/nw:network-types" {
- description
- "Introduce new network type for L2 topology";
- uses l2-network-type;
- }
-
- augment "/nw:network" {
- /* RIFT-Change: when not to be used yet
- when "nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description
- "Configuration parameters for the L2 network
- as a whole";
- uses l2-network-attributes;
- }
-
- augment "/nw:network/nw:node" {
- /* RIFT-Change: when not to be used yet
- when "../nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description
- "Configuration parameters for L2 at the node
- level";
- uses l2-node-attributes;
- }
-
- augment "/nw:network/nt:link" {
- /* RIFT-Change: when not to be used yet
- when "/nw:network/nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description "Augment L2 topology link information";
- uses l2-link-attributes;
- }
-
- augment "/nw:network/nw:node/nt:termination-point" {
- /* RIFT-Change: when not to be used yet
- when "/nw:network/nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description
- "Augment L2 topology termination point configuration";
- uses l2-termination-point-attributes;
- }
-
- /*
- * Notifications
- */
-
- notification l2-node-event {
- description "Notification event for L2 node";
- leaf event-type {
- type l2-network-event-type;
- description "Event type";
- }
- uses node-ref;
- uses l2-network-type;
- uses l2-node-attributes;
- }
-
- notification l2-link-event {
- description "Notification event for L2 link";
- leaf event-type {
- type l2-network-event-type;
- description "Event type";
- }
- uses link-ref;
- uses l2-network-type;
- uses l2-link-attributes;
- }
-
- notification l2-termination-point-event {
- description "Notification event for L2 termination point";
- leaf event-type {
- type l2-network-event-type;
- description "Event type";
- }
- uses tp-ref;
- uses l2-network-type;
- uses l2-termination-point-attributes;
- }
-
-} // module l2-topology
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-network-topology-annotation
-{
- namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
- prefix "ietf-network-topology-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import rw-base {
- prefix rwbase;
- }
-
- import ietf-network {
- prefix nd;
- }
-
- import ietf-network-topology {
- prefix nt;
- }
-
- tailf:annotate "/nd:network" {
- tailf:callpoint base_show;
- }
- tailf:annotate "/nd:network/nd:server-provided" {
- tailf:callpoint base_show;
- }
-}
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-network-topology {
- yang-version 1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
- prefix lnk;
-
- import ietf-inet-types {
- prefix inet;
- }
- import ietf-network {
- prefix nd;
- }
-
- organization "TBD";
- contact
- "WILL-BE-DEFINED-LATER";
- description
- "This module defines a common base model for network topology,
- augmenting the base network model with links to connect nodes,
- as well as termination points to terminate links on nodes.";
-
- revision 2015-06-08 {
- description
- "Initial revision.";
- reference "draft-ietf-i2rs-yang-network-topo-01";
- }
-
- typedef link-id {
- type inet:uri;
- description
- "An identifier for a link in a topology.
- The identifier may be opaque.
- The identifier SHOULD be chosen such that the same link in a
- real network topology will always be identified through the
- same identifier, even if the model is instantiated in
- separate datastores. An implementation MAY choose to capture
- semantics in the identifier, for example to indicate the type
- of link and/or the type of topology that the link is a part
- of.";
- }
-
- typedef tp-id {
- type inet:uri;
- description
- "An identifier for termination points on a node.
- The identifier may be opaque.
- The identifier SHOULD be chosen such that the same TP in a
- real network topology will always be identified through the
- same identifier, even if the model is instantiated in
- separate datastores. An implementation MAY choose to capture
- semantics in the identifier, for example to indicate the type
- of TP and/or the type of node and topology that the TP is a
- part of.";
- }
-
- grouping link-ref {
- description
- "References a link in a specific network.";
- leaf link-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/../"+
- "nd:network-ref]/link/link-id";
- }
- description
- "A type for an absolute reference a link instance.
- (This type should not be used for relative references.
- In such a case, a relative path should be used instead.)";
- }
- uses nd:network-ref;
- }
-
- grouping tp-ref {
- description
- "References a termination point in a specific node.";
- leaf tp-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/../"+
- "nd:network-ref]/nd:node[nd:node-id=current()/../"+
- "nd:node-ref]/termination-point/tp-id";
- }
- description
- "A type for an absolute reference to a termination point.
- (This type should not be used for relative references.
- In such a case, a relative path should be used instead.)";
- }
- uses nd:node-ref;
- }
-
- augment "/nd:network" {
- description
- "Add links to the network model.";
- list link {
- key "link-id";
-
- description
- "A Network Link connects a by Local (Source) node and
- a Remote (Destination) Network Nodes via a set of the
- nodes' termination points.
- As it is possible to have several links between the same
- source and destination nodes, and as a link could
- potentially be re-homed between termination points, to
- ensure that we would always know to distinguish between
- links, every link is identified by a dedicated link
- identifier.
- Note that a link models a point-to-point link, not a
- multipoint link.
- Layering dependencies on links in underlay topologies are
- not represented as the layering information of nodes and of
- termination points is sufficient.";
- container source {
- description
- "This container holds the logical source of a particular
- link.";
- leaf source-node {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:node/nd:node-id";
- }
- mandatory true;
- description
- "Source node identifier, must be in same topology.";
- }
- leaf source-tp {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:node[nd:node-id=current()/../"+
- "source-node]/termination-point/tp-id";
- }
- description
- "Termination point within source node that terminates
- the link.";
- }
- }
- container destination {
- description
- "This container holds the logical destination of a
- particular link.";
- leaf dest-node {
- type leafref {
- // RIFT change
- path "../../../../nd:network/nd:node/nd:node-id";
- }
- mandatory true;
- description
- "Destination node identifier, must be in the same
- network.";
- }
- leaf dest-tp {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:node[nd:node-id=current()/../"+
- "dest-node]/termination-point/tp-id";
- }
- description
- "Termination point within destination node that
- terminates the link.";
- }
- }
- leaf link-id {
- type link-id;
- description
- "The identifier of a link in the topology.
- A link is specific to a topology to which it belongs.";
- }
- list supporting-link {
- key "network-ref link-ref";
- description
- "Identifies the link, or links, that this link
- is dependent on.";
- leaf network-ref {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:supporting-network/nd:network-ref";
- }
- description
- "This leaf identifies in which underlay topology
- supporting link is present.";
- }
- leaf link-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/.."+
- "/network-ref]/link/link-id";
- }
- description
- "This leaf identifies a link which is a part
- of this link's underlay. Reference loops, in which
- a link identifies itself as its underlay, either
- directly or transitively, are not allowed.";
- }
- }
- }
- }
- augment "/nd:network/nd:node" {
- description
- "Augment termination points which terminate links.
- Termination points can ultimately be mapped to interfaces.";
- list termination-point {
- key "tp-id";
- description
- "A termination point can terminate a link.
- Depending on the type of topology, a termination point
- could, for example, refer to a port or an interface.";
- leaf tp-id {
- type tp-id;
- description
- "Termination point identifier.";
- }
- list supporting-termination-point {
- key "network-ref node-ref tp-ref";
- description
- "The leaf list identifies any termination points that
- the termination point is dependent on, or maps onto.
- Those termination points will themselves be contained
- in a supporting node.
- This dependency information can be inferred from
- the dependencies between links. For this reason,
- this item is not separately configurable. Hence no
- corresponding constraint needs to be articulated.
- The corresponding information is simply provided by the
- implementing system.";
- leaf network-ref {
- type leafref {
- // RIFT change:
- path "/nd:network/nd:node/nd:supporting-node/nd:network-ref";
- }
- description
- "This leaf identifies in which topology the
- supporting termination point is present.";
- }
- leaf node-ref {
- type leafref {
- // RIFT change:
- path "/nd:network/nd:node/nd:supporting-node/nd:node-ref";
- }
- description
- "This leaf identifies in which node the supporting
- termination point is present.";
- }
- leaf tp-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/../"+
- "network-ref]/nd:node[nd:node-id=current()/../"+
- "node-ref]/termination-point/tp-id";
- }
- description
- "Reference to the underlay node, must be in a
- different topology";
- }
- }
- }
- }
-}
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-network-annotation
-{
- namespace "urn:ietf:params:xml:ns:yang:ietf-network";
- prefix "ietf-network-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import rw-base {
- prefix rwbase;
- }
-
- import ietf-network {
- prefix nd;
- }
-
- tailf:annotate "/nd:network" {
- tailf:callpoint base_show;
- }
-
- tailf:annotate "/nd:network/nd:server-provided" {
- tailf:callpoint base_show;
- }
-}
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-network {
- yang-version 1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-network";
- prefix nd;
-
- import ietf-inet-types {
- prefix inet;
- }
-
- import rw-pb-ext {
- prefix "rwpb";
- }
-
- organization "TBD";
- contact
- "WILL-BE-DEFINED-LATER";
- description
- "This module defines a common base model for a collection
- of nodes in a network. Node definitions s are further used
- in network topologies and inventories.";
-
- revision 2015-06-08 {
- description
- "Initial revision.";
- reference "draft-ietf-i2rs-yang-network-topo-01";
- }
-
- typedef node-id {
- type inet:uri;
- description
- "Identifier for a node.";
- }
-
- typedef network-id {
- type inet:uri;
- description
- "Identifier for a network.";
- }
-
- grouping network-ref {
- description
- "Contains the information necessary to reference a network,
- for example an underlay network.";
- leaf network-ref {
- type leafref {
- path "/network/network-id";
- }
- description
- "Used to reference a network, for example an underlay
- network.";
- }
- }
-
- grouping node-ref {
- description
- "Contains the information necessary to reference a node.";
- leaf node-ref {
- type leafref {
- path "/network[network-id=current()/../network-ref]"+
- "/node/node-id";
- }
- description
- "Used to reference a node.
- Nodes are identified relative to the network they are
- contained in.";
- }
- uses network-ref;
- }
-
- list network {
- config false;
- key "network-id";
- description
- "Describes a network.
- A network typically contains an inventory of nodes,
- topological information (augmented through
- network-topology model), as well as layering
- information.";
- container network-types {
- description
- "Serves as an augmentation target.
- The network type is indicated through corresponding
- presence containers augmented into this container.";
- }
- leaf network-id {
- type network-id;
- description
- "Identifies a network.";
- }
- leaf server-provided {
- type boolean;
- config false;
- description
- "Indicates whether the information concerning this
- particular network is populated by the server
- (server-provided true, the general case for network
- information discovered from the server),
- or whether it is configured by a client
- (server-provided true, possible e.g. for
- service overlays managed through a controller).";
- }
- list supporting-network {
- key "network-ref";
- description
- "An underlay network, used to represent layered network
- topologies.";
-
- leaf network-ref {
- type leafref {
- path "/network/network-id";
- }
- description
- "References the underlay network.";
- }
- }
- list node {
- key "node-id";
- description
- "The inventory of nodes of this network.";
- leaf node-id {
- type node-id;
- description
- "Identifies a node uniquely within the containing
- network.";
- }
- list supporting-node {
- key "network-ref node-ref";
- description
- "Represents another node, in an underlay network, that
- this node is supported by. Used to represent layering
- structure.";
- leaf network-ref {
- type leafref {
- path "../../../supporting-network/network-ref";
- }
- description
- "References the underlay network that the
- underlay node is part of.";
- }
- leaf node-ref {
- type leafref {
- path "/network/node/node-id";
- }
- description
- "References the underlay node itself.";
- }
- }
- }
- }
-}
-
-
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
*/
module nsd-annotation
-
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
*/
module nsd
-
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
*/
module nsr-annotation
-
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
*/
module nsr
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module odl-network-topology {
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
module pnfd
{
namespace "urn:ietf:params:xml:ns:yang:nfvo:pnfd";
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-nsd-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-nsd
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-nsr-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-nsr
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-topology-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-topology {
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vld-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vld
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vlr-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vlr
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vnfd-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vnfd
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vnfr-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vnfr
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vld-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vld
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vlr-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vlr
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vnfd-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vnfd
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vnffgd
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vnfr-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module vnfr
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Manish Patel
# Creation Date: 10/28/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Manish Patel
# Creation Date: 10/29/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Manish Patel
# Creation Date: 10/28/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Manish Patel
# Creation Date: 10/28/2015
+
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
module rw-conman-annotation
{
namespace "http://riftio.com/ns/riftware-1.0/rw-conman-annotation";
tailf:callpoint base_show;
}
-}
\ No newline at end of file
+}
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**
* @file rw-conman.yang
* @author Manish Patel
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Manish Patel
# Creation Date: 10/28/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Author(s): Austin Cormier
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Author(s): Austin Cormier
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Creation Date: 2015/10/30
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Creation Date: 10/28/2015
#
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
include(rift_plugin)
rift_install_python_plugin(rwsdn-plugin rwsdn-plugin.py)
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
namespace RwSdn {
public interface Topology: GLib.Object {
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
+#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
+#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
include(rift_plugin)
rift_install_python_plugin(rwsdn_sim rwsdn_sim.py)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
#
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rwsdn-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rwsdn
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 10/31/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 10/31/2015
-namespace RwOsMaNfvo {
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+namespace RwOsMaNfvo {
public interface Orchestrator: GLib.Object {
/*
* Init routine
-
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
include(rift_plugin)
rift_install_python_plugin(rwos_ma_nfvo_rest rwos_ma_nfvo_rest.py)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 10/31/2015
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
namespace RwVeVnfmEm {
public interface ElementManager: GLib.Object {
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
include(rift_plugin)
rift_install_python_plugin(rwve_vnfm_em_rest rwve_vnfm_em_rest.py)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 10/31/2015
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
namespace RwVeVnfmVnf {
public interface Vnf: GLib.Object {
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
include(rift_plugin)
rift_install_python_plugin(rwve_vnfm_vnf_rest rwve_vnfm_vnf_rest.py)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tom Seidenberg
# Creation Date: 2014/04/08
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-iwp-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**
* @file rw-iwp.yang
* @author Austin Cormier
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**0
* @file rw-launchpad-log.yang
* @author Rift.IO
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-monitor-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**
* @file rw-monitor.yang
* @author Joshua Downer
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**
* @file rw-nsm.yang
* @author Rajesh Velandy
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-resource-mgr-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
module rw-resource-mgr
{
namespace "http://riftio.com/ns/riftware-1.0/rw-resource-mgr";
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**
* @file rw-vnfm.yang
* @author Rajesh Velandy
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-vns-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**
* @file rw-vns.yang
* @author Austin Cormier
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Paul Laidler
# Creation Date: 09/16/2015
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Varun Prasad
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Varun Prasad
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
vnfd_proxy.delete_config(xpath)
vnfds = vnfd_proxy.get("/vnfd-catalog/vnfd", list_obj=True)
- assert vnfds is None or len(vnfds.vnfd) == 0
\ No newline at end of file
+ assert vnfds is None or len(vnfds.vnfd) == 0
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Creation Date: 10/01/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Author(s): Austin Cormier
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Author(s): Austin Cormier
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
# Author(s): Austin Cormier
# Creation Date: 05/15/2015
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Austin Cormier
# Creation Date: 2015/08/01
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rw-mc-annotation
/*
- *
- * (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
-
/**
* @file rw-mc.yang
* @author Austin Cormier
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Paul Laidler
# Creation Date: 09/16/2015
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Varun Prasad
#!/bin/bash
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
# Author(s): Paul Laidler
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Joshua Downer
# Author(s): Austin Cormier
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 2014/05/22
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 05/22/2013
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
# Author(s): Tim Mortsolf
# Creation Date: 2014/05/22
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
# Author(s): Tim Mortsolf / Anil Gunturu
# Creation Date: 05/22/2014
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
-
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
include(rift_plugin)
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
#
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 11/25/2013
/*
- *
+ * Copyright 2016 RIFT.IO Inc
*
+ * 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.
*/
module rwcal
#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 05/22/2014
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Tim Mortsolf
# Creation Date: 05/22/2013
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Anil Gunturu
# Creation Date: 06/27/2014
-#
-# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# Author(s): Varun Prasad
# Creation Date: 21/01/2016
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
+
#
# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
"architecture": "flux",
"styles-language": "scss",
"component-suffix": "js"
- }
+ },
+ "license": "Apache-2.0"
}
\ No newline at end of file
+[//]: # Copyright 2016 RIFT.IO Inc
+[//]: #
+[//]: # 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.
+
RIFT.io UI
===
Currently this repo only contains one module.
+++ /dev/null
-
-flat-icon-license.pdf - license for the icons used in this project
"dist": "dist",
"mainInput": "ComposerApp",
"mainOutput": "main",
+ "license": "Apache-2.0",
"dependencies": {
"alt": "^0.17.9",
"babel-polyfill": "^6.2.0",
+[//]: # Copyright 2016 RIFT.IO Inc
+[//]: #
+[//]: # 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.
The application enables editing of CONFD YANG instances.
+++ /dev/null
-[
- {
- "id": "GUID-1",
- "name": "RIFT.wareâ„¢ NS Descriptors Catalog",
- "short-name": "rift.ware-nsd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "nsd",
- "meta": {
- "icon-svg": "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%0A%3C!--%20Generator%3A%20Adobe%20Illustrator%2018.0.0%2C%20SVG%20Export%20Plug-In%20.%20SVG%20Version%3A%206.00%20Build%200)%20%20--%3E%0A%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%0A%3Csvg%20version%3D%221.1%22%20id%3D%22connection-icon-1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%0A%09%20viewBox%3D%220%200%2050%2050%22%20style%3D%22enable-background%3Anew%200%200%2050%2050%3B%22%20xml%3Aspace%3D%22preserve%22%3E%0A%09%3Cpath%20d%3D%22M15%2030c-2.8%200-5-2.2-5-5s2.2-5%205-5%205%202.2%205%205-2.2%205-5%205zm0-8c-1.7%200-3%201.3-3%203s1.3%203%203%203%203-1.3%203-3-1.3-3-3-3z%22%2F%3E%3Cpath%20d%3D%22M35%2020c-2.8%200-5-2.2-5-5s2.2-5%205-5%205%202.2%205%205-2.2%205-5%205zm0-8c-1.7%200-3%201.3-3%203s1.3%203%203%203%203-1.3%203-3-1.3-3-3-3z%22%2F%3E%3Cpath%20d%3D%22M35%2040c-2.8%200-5-2.2-5-5s2.2-5%205-5%205%202.2%205%205-2.2%205-5%205zm0-8c-1.7%200-3%201.3-3%203s1.3%203%203%203%203-1.3%203-3-1.3-3-3-3z%22%2F%3E%3Cpath%20d%3D%22M19.007%2025.885l12.88%206.44-.895%201.788-12.88-6.44z%22%2F%3E%3Cpath%20d%3D%22M30.993%2015.885l.894%201.79-12.88%206.438-.894-1.79z%22%2F%3E%3C%2Fsvg%3E"
- },
- "descriptors": [
- {
- "description": "VPNaaS Provider NSD for Corporation X",
- "version": 1,
- "constituent-vnfd": [
- {
- "vnf-configuration": {
- "config-type": "netconf",
- "config-template": "\n <vnf-config xmlns=\"http://riftio.com/ns/riftware-1.0/mano-base\">\n <vnf>\n <name>trafgen</name>\n <instance>0</instance>\n <network-context xmlns=\"http://riftio.com/ns/riftware-1.0/rw-vnf-base-config\">\n <name>trafgen-lb</name>\n <interface>\n <name>N1TenGi-1</name>\n <bind>\n <port>trafgen_vnfd/cp0</port>\n </bind>\n </interface>\n <interface>\n <name>vlan200</name>\n <bind>\n <port>trafgen_vnfd/cp0</port>\n <vlan>200</vlan>\n </bind>\n <ip>\n <address>200.1.1.1/24</address>\n </ip>\n </interface>\n </network-context>\n <port xmlns=\"http://riftio.com/ns/riftware-1.0/rw-vnf-base-config\">\n <name>trafgen_vnfd/cp0</name>\n <open/>\n <application>\n <rx>rw_trafgen</rx>\n <tx>rw_trafgen</tx>\n </application>\n <receive-q-length>2</receive-q-length>\n <vlan><id>200</id><open/></vlan>\n <port-identity>\n <ip-address><rw_connection_point_name trafgen_vnfd/cp0></ip-address>\n <port-mode>direct</port-mode>\n </port-identity>\n <trafgen xmlns=\"http://riftio.com/ns/riftware-1.0/rw-trafgen\">\n <transmit-params>\n <tx-rate>10</tx-rate>\n <transmit-mode>\n <range/>\n </transmit-mode>\n </transmit-params>\n <range-template>\n <destination-mac>\n <dynamic>\n <gateway>200.1.1.2</gateway>\n </dynamic>\n </destination-mac>\n <source-ip>\n <start>200.1.1.1</start>\n <minimum>200.1.1.1</minimum>\n <maximum>200.1.1.1</maximum>\n <increment>1</increment>\n </source-ip>\n <destination-ip>\n <start>50.1.1.1</start>\n <minimum>50.1.1.1</minimum>\n <maximum>50.1.1.1</maximum>\n <increment>1</increment>\n </destination-ip>\n <source-port>\n <start>10000</start>\n <minimum>10000</minimum>\n <maximum>10128</maximum>\n <increment>1</increment>\n </source-port>\n <destination-port>\n <start>5678</start>\n <minimum>5678</minimum>\n <maximum>5678</maximum>\n <increment>1</increment>\n </destination-port>\n <packet-size>\n <start>1024</start>\n <minimum>1024</minimum>\n <maximum>1024</maximum>\n <increment>1</increment>\n </packet-size>\n <vlan>\n <start>200</start>\n <minimum>200</minimum>\n <maximum>200</maximum>\n <increment>1</increment>\n </vlan>\n </range-template>\n </trafgen>\n </port>\n </vnf>\n </vnf-config>\n <logging xmlns=\"http://riftio.com/ns/riftware-1.0/rwlog-mgmt\">\n <sink>\n <name>syslog</name>\n <server-address><rw_mgmt_ip></server-address>\n <port>514</port>\n </sink>\n </logging>\n ",
- "input-params": {
- "config-delay": 180,
- "config-priority": 1
- },
- "netconf": {
- "target": "running",
- "port": 2022
- }
- },
- "vnfd-id-ref": "2544951a-d6b5-11e5-9bb7-001b21b98a89",
- "member-vnf-index": 1
- },
- {
- "vnf-configuration": {
- "input-params": {
- "config-delay": 0,
- "config-priority": 2
- },
- "config-type": "script",
- "config-template": "\n#!/usr/bin/expect -f\nset login \"root\"\nset addr <rw_mgmt_ip>\nset pw \"6windos\"\nspawn ssh -1 $login@$addr\n\nset timeout 60\n\nexpect \"yes/no\" {\n send \"yes\\r\"\n expect \"*?assword:\" { send \"$pw\\r\" }\n } \"*?assword:\" { send \"$pw\\r\" }\n\nexpect \"# \"\nsend \"cli\\r\"\nexpect \"{}\"\nsend \"edit conf running\\r\"\nexpect \"ing}\"\n\n# Setup eth1 config\nsend \"eth1\\r\"\nexpect \"eth1}\"\nsend \"ipaddress dhcpv4\\r\"\nexpect \"dhcpv4}\"\nsend \"dhcp enable\\r\"\nexpect \"dhcpv4}\"\nsend \"exit\\r\"\nexpect \"eth1}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n# Setup eth2 config\nsend \"eth2\\r\"\nexpect \"eth2}\"\nsend \"ipaddress dhcpv4\\r\"\nexpect \"dhcpv4}\"\nsend \"dhcp enable\\r\"\nexpect \"dhcpv4}\"\nsend \"exit\\r\"\nexpect \"eth2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup loopback\nsend \"loopback0\\r\"\nexpect \"back0}\"\nsend \"ipaddress 2.2.2.2/32\\r\"\nexpect \"back0}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup VRF 2\nsend \"vrf2\\r\"\nexpect \"vrf2}\"\nsend \"forwarding ipv4 enable\\r\"\nexpect \"vrf2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Applyconfig\nsend \"addrunning\\r\"\nexpect \"ing}\"\nsend \"exit\\r\"\nexpect \"{}\"\n\n# Get MAC of eth2\nsend \"show interface eth2\\r\"\nexpect -re {ether (\\S+)}\nset macaddr $expect_out(1,string)\nputs $macaddr\n\n# Enter into edit config mode again\nsend \"edit conf running\\r\"\n\n#Setup route for GRE tunnel\nsend \"rtg\\r\"\nexpect \"rtg}\"\nsend \"route 3.3.3.3/32 100.0.108.60\\r\"\nexpect \"rtg}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup VLAN on eth2 and vrf2\nsend \"vlan2\\r\"\nexpect \"vlan2}\"\nsend \"bind eth2 id 200\\r\"\nexpect \"vlan2}\"\nsend \"mac-address $macaddr\\r\"\nexpect \"vlan2}\"\nsend \"ipaddress 200.1.1.2/24\\r\"\nexpect \"vlan2}\"\nsend \"vrf-id 2\\r\"\nexpect \"vlan2}\"\nsend \"interface up\\r\"\nexpect \"vlan2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup GRE on vrf2\nsend \"gre2\\r\"\nexpect \"gre2}\"\nsend \"bind 2.2.2.2 3.3.3.3 \\r\"\nexpect \"gre2}\"\nsend \"endpoints 5.1.1.1 5.1.1.2\\r\"\nexpect \"gre2}\"\nsend \"vrf-id 2\\r\"\nexpect \"gre2}\"\nsend \"checksum-input disable\\r\"\nexpect \"gre2}\"\nsend \"interface up\\r\"\nexpect \"gre2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup routing in VRF2 for VLAN2 traffic\nsend \"rtg\\r\"\nexpect \"rtg}\"\nsend \"route 50.1.1.1/32 5.1.1.2 vrf-id 2\\r\"\nexpect \"rtg}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Applyconfig\nsend \"addrunning\\r\"\nexpect \"ing}\"\nsend \"exit\\r\"\nexpect \"{}\"\n ",
- "script": {
- "script-type": "expect"
- }
- },
- "vnfd-id-ref": "23028096-d6b5-11e5-8e3f-001b21b98a89",
- "member-vnf-index": 2
- },
- {
- "vnf-configuration": {
- "input-params": {
- "config-delay": 0,
- "config-priority": 0
- }
- },
- "vnfd-id-ref": "2407d7a2-d6b5-11e5-95d4-001b21b98a89",
- "member-vnf-index": 3
- },
- {
- "vnfd-id-ref": "23095c22-d6b5-11e5-9e33-001b21b98a89",
- "member-vnf-index": 4
- },
- {
- "vnfd-id-ref": "2329d470-d6b5-11e5-98fb-001b21b98a89",
- "member-vnf-index": 5
- }
- ],
- "short-name": "Vpn_Provider_Site_CorpA_nsd",
- "vld": [
- {
- "description": "Corporate LAN for A,SRIOV based",
- "type": "ELAN",
- "version": 1,
- "provider-network": {
- "physical-network": "physnet3",
- "overlay-type": "FLAT"
- },
- "short-name": "Corp-A Prov-link",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-connection-point-ref": "trafgen_vnfd/cp0",
- "vnfd-id-ref": "2544951a-d6b5-11e5-9bb7-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "turborouter_vnfd/cp0",
- "vnfd-id-ref": "23028096-d6b5-11e5-8e3f-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 3,
- "vnfd-connection-point-ref": "cwims_vnfd/cp0",
- "vnfd-id-ref": "2407d7a2-d6b5-11e5-95d4-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 4,
- "vnfd-connection-point-ref": "Riverbed_SteelHead_vnfd/cp0",
- "vnfd-id-ref": "23095c22-d6b5-11e5-9e33-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 5,
- "vnfd-connection-point-ref": "F5_BigIP_vnfd/cp0",
- "vnfd-id-ref": "2329d470-d6b5-11e5-98fb-001b21b98a89"
- }
- ],
- "name": "Corp-A Prov-link",
- "vendor": "RIFT.io",
- "id": "28b2c8a2-d6b5-11e5-9a50-001b21b98a89"
- },
- {
- "description": "HA link between BigIPs",
- "type": "ELAN",
- "version": 1,
- "short-name": "Corp-A HA-link",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 5,
- "vnfd-connection-point-ref": "F5_BigIP_vnfd/cp1",
- "vnfd-id-ref": "2329d470-d6b5-11e5-98fb-001b21b98a89"
- }
- ],
- "name": "Corp-A HA-link",
- "vendor": "RIFT.io",
- "id": "28b329be-d6b5-11e5-9a50-001b21b98a89"
- },
- {
- "description": "Egress link between BigIPs",
- "type": "ELAN",
- "version": 1,
- "short-name": "Corp-A Egress-link",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 5,
- "vnfd-connection-point-ref": "F5_BigIP_vnfd/cp2",
- "vnfd-id-ref": "2329d470-d6b5-11e5-98fb-001b21b98a89"
- }
- ],
- "name": "Corp-A Egress-link",
- "vendor": "RIFT.io",
- "id": "28b33d32-d6b5-11e5-9a50-001b21b98a89"
- },
- {
- "description": "External network VIRTIO based",
- "type": "ELAN",
- "version": 1,
- "short-name": "multisite",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "turborouter_vnfd/cp1",
- "vnfd-id-ref": "23028096-d6b5-11e5-8e3f-001b21b98a89"
- }
- ],
- "name": "multisite",
- "vendor": "RIFT.io",
- "id": "28b350ce-d6b5-11e5-9a50-001b21b98a89"
- }
- ],
- "name": "Vpn_Provider_Site_CorpA_nsd",
- "vendor": "RIFT.io",
- "id": "28922610-d6b5-11e5-9a50-001b21b98a89",
- "meta": {
- "instance-ref-count": 0
- }
- },
- {
- "description": "VPNaaS Provider NSD for Corporation X",
- "version": 1,
- "constituent-vnfd": [
- {
- "vnf-configuration": {
- "config-type": "netconf",
- "config-template": "\n <vnf-config xmlns=\"http://riftio.com/ns/riftware-1.0/mano-base\">\n <vnf>\n <name>trafgen</name>\n <instance>0</instance>\n <network-context xmlns=\"http://riftio.com/ns/riftware-1.0/rw-vnf-base-config\">\n <name>trafgen-lb</name>\n <interface>\n <name>N1TenGi-1</name>\n <bind>\n <port>trafgen_vnfd/cp0</port>\n </bind>\n </interface>\n <interface>\n <name>vlan200</name>\n <bind>\n <port>trafgen_vnfd/cp0</port>\n <vlan>200</vlan>\n </bind>\n <ip>\n <address>200.1.1.1/24</address>\n </ip>\n </interface>\n </network-context>\n <port xmlns=\"http://riftio.com/ns/riftware-1.0/rw-vnf-base-config\">\n <name>trafgen_vnfd/cp0</name>\n <open/>\n <application>\n <rx>rw_trafgen</rx>\n <tx>rw_trafgen</tx>\n </application>\n <receive-q-length>2</receive-q-length>\n <vlan><id>200</id><open/></vlan>\n <port-identity>\n <ip-address><rw_connection_point_name trafgen_vnfd/cp0></ip-address>\n <port-mode>direct</port-mode>\n </port-identity>\n <trafgen xmlns=\"http://riftio.com/ns/riftware-1.0/rw-trafgen\">\n <transmit-params>\n <tx-rate>10</tx-rate>\n <transmit-mode>\n <range/>\n </transmit-mode>\n </transmit-params>\n <range-template>\n <destination-mac>\n <dynamic>\n <gateway>200.1.1.2</gateway>\n </dynamic>\n </destination-mac>\n <source-ip>\n <start>200.1.1.1</start>\n <minimum>200.1.1.1</minimum>\n <maximum>200.1.1.1</maximum>\n <increment>1</increment>\n </source-ip>\n <destination-ip>\n <start>50.1.1.1</start>\n <minimum>50.1.1.1</minimum>\n <maximum>50.1.1.1</maximum>\n <increment>1</increment>\n </destination-ip>\n <source-port>\n <start>10000</start>\n <minimum>10000</minimum>\n <maximum>10128</maximum>\n <increment>1</increment>\n </source-port>\n <destination-port>\n <start>5678</start>\n <minimum>5678</minimum>\n <maximum>5678</maximum>\n <increment>1</increment>\n </destination-port>\n <packet-size>\n <start>1024</start>\n <minimum>1024</minimum>\n <maximum>1024</maximum>\n <increment>1</increment>\n </packet-size>\n <vlan>\n <start>200</start>\n <minimum>200</minimum>\n <maximum>200</maximum>\n <increment>1</increment>\n </vlan>\n </range-template>\n </trafgen>\n </port>\n </vnf>\n </vnf-config>\n <logging xmlns=\"http://riftio.com/ns/riftware-1.0/rwlog-mgmt\">\n <sink>\n <name>syslog</name>\n <server-address><rw_mgmt_ip></server-address>\n <port>514</port>\n </sink>\n </logging>\n ",
- "input-params": {
- "config-delay": 180,
- "config-priority": 1
- },
- "netconf": {
- "target": "running",
- "port": 2022
- }
- },
- "vnfd-id-ref": "2544951a-d6b5-11e5-9bb7-001b21b98a89",
- "member-vnf-index": 1
- },
- {
- "vnf-configuration": {
- "input-params": {
- "config-delay": 0,
- "config-priority": 2
- },
- "config-type": "script",
- "config-template": "\n#!/usr/bin/expect -f\nset login \"root\"\nset addr <rw_mgmt_ip>\nset pw \"6windos\"\nspawn ssh -1 $login@$addr\n\nset timeout 60\n\nexpect \"yes/no\" {\n send \"yes\\r\"\n expect \"*?assword:\" { send \"$pw\\r\" }\n } \"*?assword:\" { send \"$pw\\r\" }\n\nexpect \"# \"\nsend \"cli\\r\"\nexpect \"{}\"\nsend \"edit conf running\\r\"\nexpect \"ing}\"\n\n# Setup eth1 config\nsend \"eth1\\r\"\nexpect \"eth1}\"\nsend \"ipaddress dhcpv4\\r\"\nexpect \"dhcpv4}\"\nsend \"dhcp enable\\r\"\nexpect \"dhcpv4}\"\nsend \"exit\\r\"\nexpect \"eth1}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n# Setup eth2 config\nsend \"eth2\\r\"\nexpect \"eth2}\"\nsend \"ipaddress dhcpv4\\r\"\nexpect \"dhcpv4}\"\nsend \"dhcp enable\\r\"\nexpect \"dhcpv4}\"\nsend \"exit\\r\"\nexpect \"eth2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup loopback\nsend \"loopback0\\r\"\nexpect \"back0}\"\nsend \"ipaddress 2.2.2.2/32\\r\"\nexpect \"back0}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup VRF 2\nsend \"vrf2\\r\"\nexpect \"vrf2}\"\nsend \"forwarding ipv4 enable\\r\"\nexpect \"vrf2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Applyconfig\nsend \"addrunning\\r\"\nexpect \"ing}\"\nsend \"exit\\r\"\nexpect \"{}\"\n\n# Get MAC of eth2\nsend \"show interface eth2\\r\"\nexpect -re {ether (\\S+)}\nset macaddr $expect_out(1,string)\nputs $macaddr\n\n# Enter into edit config mode again\nsend \"edit conf running\\r\"\n\n#Setup route for GRE tunnel\nsend \"rtg\\r\"\nexpect \"rtg}\"\nsend \"route 3.3.3.3/32 100.0.108.60\\r\"\nexpect \"rtg}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup VLAN on eth2 and vrf2\nsend \"vlan2\\r\"\nexpect \"vlan2}\"\nsend \"bind eth2 id 200\\r\"\nexpect \"vlan2}\"\nsend \"mac-address $macaddr\\r\"\nexpect \"vlan2}\"\nsend \"ipaddress 200.1.1.2/24\\r\"\nexpect \"vlan2}\"\nsend \"vrf-id 2\\r\"\nexpect \"vlan2}\"\nsend \"interface up\\r\"\nexpect \"vlan2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup GRE on vrf2\nsend \"gre2\\r\"\nexpect \"gre2}\"\nsend \"bind 2.2.2.2 3.3.3.3 \\r\"\nexpect \"gre2}\"\nsend \"endpoints 5.1.1.1 5.1.1.2\\r\"\nexpect \"gre2}\"\nsend \"vrf-id 2\\r\"\nexpect \"gre2}\"\nsend \"checksum-input disable\\r\"\nexpect \"gre2}\"\nsend \"interface up\\r\"\nexpect \"gre2}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Setup routing in VRF2 for VLAN2 traffic\nsend \"rtg\\r\"\nexpect \"rtg}\"\nsend \"route 50.1.1.1/32 5.1.1.2 vrf-id 2\\r\"\nexpect \"rtg}\"\nsend \"exit\\r\"\nexpect \"ing}\"\n\n#Applyconfig\nsend \"addrunning\\r\"\nexpect \"ing}\"\nsend \"exit\\r\"\nexpect \"{}\"\n ",
- "script": {
- "script-type": "expect"
- }
- },
- "vnfd-id-ref": "23028096-d6b5-11e5-8e3f-001b21b98a89",
- "member-vnf-index": 2
- },
- {
- "vnf-configuration": {
- "input-params": {
- "config-delay": 0,
- "config-priority": 0
- }
- },
- "vnfd-id-ref": "2407d7a2-d6b5-11e5-95d4-001b21b98a89",
- "member-vnf-index": 3
- }
- ],
- "short-name": "Vpn_Provider_Site_CorpB_nsd",
- "vld": [
- {
- "description": "Corporate LAN for B,SRIOV based",
- "type": "ELAN",
- "version": 1,
- "provider-network": {
- "physical-network": "physnet4",
- "overlay-type": "FLAT"
- },
- "short-name": "Corp-B Prov-link",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-connection-point-ref": "trafgen_vnfd/cp0",
- "vnfd-id-ref": "2544951a-d6b5-11e5-9bb7-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "turborouter_vnfd/cp0",
- "vnfd-id-ref": "23028096-d6b5-11e5-8e3f-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 3,
- "vnfd-connection-point-ref": "cwims_vnfd/cp0",
- "vnfd-id-ref": "2407d7a2-d6b5-11e5-95d4-001b21b98a89"
- }
- ],
- "name": "Corp-B Prov-link",
- "vendor": "RIFT.io",
- "id": "29405438-d6b5-11e5-a599-001b21b98a89"
- },
- {
- "description": "External network VIRTIO based",
- "type": "ELAN",
- "version": 1,
- "short-name": "multisite",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "turborouter_vnfd/cp1",
- "vnfd-id-ref": "23028096-d6b5-11e5-8e3f-001b21b98a89"
- }
- ],
- "name": "multisite",
- "vendor": "RIFT.io",
- "id": "2940a00a-d6b5-11e5-a599-001b21b98a89"
- }
- ],
- "name": "Vpn_Provider_Site_CorpB_nsd",
- "vendor": "RIFT.io",
- "id": "29212fb8-d6b5-11e5-a599-001b21b98a89",
- "meta": {
- "instance-ref-count": 0
- }
- },
- {
- "description": "NS Vrouter-Trafsink",
- "version": 1,
- "constituent-vnfd": [
- {
- "vnf-configuration": {
- "config-type": "netconf",
- "config-template": "\n <vnf-config xmlns=\"http://riftio.com/ns/riftware-1.0/mano-base\">\n <vnf>\n <name>trafsink</name>\n <instance>0</instance>\n <network-context xmlns=\"http://riftio.com/ns/riftware-1.0/rw-vnf-base-config\">\n <name>lb-trafsink</name>\n <interface>\n <name>N3TenGigi-1</name>\n <bind>\n <port>trafsink_vnfd/cp0</port>\n </bind>\n <ip>\n <address>50.1.1.1/24</address>\n </ip>\n </interface>\n </network-context>\n <port xmlns=\"http://riftio.com/ns/riftware-1.0/rw-vnf-base-config\">\n <name>trafsink_vnfd/cp0</name>\n <open/>\n <application>\n <rx>rw_trafgen</rx>\n <tx>rw_trafgen</tx>\n </application>\n <receive-q-length>2</receive-q-length>\n <port-identity>\n <ip-address><rw_connection_point_name trafsink_vnfd/cp0></ip-address>\n <port-mode>direct</port-mode>\n </port-identity>\n <trafgen xmlns=\"http://riftio.com/ns/riftware-1.0/rw-trafgen\">\n <receive-param>\n <receive-echo>\n <on/>\n </receive-echo>\n </receive-param>\n </trafgen>\n </port>\n </vnf>\n </vnf-config>\n <logging xmlns=\"http://riftio.com/ns/riftware-1.0/rwlog-mgmt\">\n <sink>\n <name>syslog</name>\n <server-address><rw_mgmt_ip></server-address>\n <port>514</port>\n </sink>\n </logging>\n\n ",
- "input-params": {
- "config-delay": 180,
- "config-priority": 1
- },
- "netconf": {
- "target": "running",
- "port": 2022
- },
- "config-access": {
- "password": "admin",
- "username": "admin"
- }
- },
- "vnfd-id-ref": "26a08568-d6b5-11e5-a5c6-001b21b98a89",
- "member-vnf-index": 1
- },
- {
- "vnf-configuration": {
- "input-params": {
- "config-delay": 0,
- "config-priority": 2
- },
- "config-type": "script",
- "config-template": "\n#!/usr/bin/expect -f\nset login \"vyatta\"\nset addr <rw_mgmt_ip>\nset pw \"vyatta\"\nspawn ssh $login@$addr\n\nset timeout 60\n\nexpect \"yes/no\" {\n send \"yes\n\"\n expect \"*?assword:\" { send \"$pw\n\" }\n } \"*?assword:\" { send \"$pw\n\" }\n\nexpect \"$ \"\nsend \"configure\n\"\nexpect \"# \"\nsend \"set protocols static interface-route 50.1.1.0/24 next-hop-interface dp0s6\n\"\nexpect \"# \"\nsend \"set protocols static route 2.2.2.2/32 next-hop 100.0.108.5\n\"\nexpect \"# \"\nsend \"set interfaces loopback lo1 address 3.3.3.3/32\n\"\nexpect \"# \"\nsend \"set interfaces tunnel tun0 address 5.1.1.2/24\n\"\nexpect \"# \"\nsend \"set interfaces tunnel tun0 encapsulation gre\n\"\nexpect \"# \"\nsend \"set interfaces tunnel tun0 local-ip 3.3.3.3\n\"\nexpect \"# \"\nsend \"set interfaces tunnel tun0 remote-ip 2.2.2.2\n\"\nexpect \"# \"\nsend \"set protocols static route 200.1.1.1/32 next-hop 5.1.1.1\n\"\nexpect \"# \"\nsend \"commit\n\"\nexpect \"# \"\nsend \"exit \n\"\nexpect \"$ \"\n ",
- "script": {
- "script-type": "expect"
- }
- },
- "vnfd-id-ref": "a6ce0f96-d6cc-11e5-9540-001b21b98a89",
- "member-vnf-index": 2
- }
- ],
- "short-name": "Vpn_Remote_Site_nsd",
- "vld": [
- {
- "description": "Corporate LAN for X,SRIOV based",
- "type": "ELAN",
- "version": 1,
- "provider-network": {
- "physical-network": "physnet3",
- "overlay-type": "FLAT"
- },
- "short-name": "Corp-X Remote Site link",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-connection-point-ref": "trafsink_vnfd/cp0",
- "vnfd-id-ref": "26a08568-d6b5-11e5-a5c6-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "vrouter_vnfd/cp0",
- "vnfd-id-ref": "a6ce0f96-d6cc-11e5-9540-001b21b98a89"
- }
- ],
- "name": "Corp-X Remote Site link",
- "vendor": "RIFT.io",
- "id": "b83bb668-d6cf-11e5-99d1-001b21b98a89"
- },
- {
- "description": "External network VIRTIO based",
- "type": "ELAN",
- "version": 1,
- "short-name": "multisite",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "vrouter_vnfd/cp1",
- "vnfd-id-ref": "a6ce0f96-d6cc-11e5-9540-001b21b98a89"
- }
- ],
- "name": "multisite",
- "vendor": "RIFT.io",
- "id": "b83bff92-d6cf-11e5-99d1-001b21b98a89"
- }
- ],
- "name": "Vpn_Remote_Site_nsd",
- "vendor": "RIFT.io",
- "id": "b81198ec-d6cf-11e5-99d1-001b21b98a89",
- "meta": {
- "instance-ref-count": 0
- }
- },
- {
- "description": "6wind turborouter only",
- "version": 1,
- "constituent-vnfd": [
- {
- "vnf-configuration": {
- "initial-config-primitive": [
- {
- "parameter": [
- {
- "name": "pass",
- "value": "6windos"
- },
- {
- "name": "user",
- "value": "root"
- },
- {
- "name": "vpe-router",
- "value": "<rw_mgmt_ip>"
- }
- ],
- "name": "config",
- "seq": 1
- },
- {
- "parameter": [
- {
- "name": "cidr",
- "value": "10.10.10.2/30"
- },
- {
- "name": "iface-name",
- "value": "eth1"
- }
- ],
- "name": "configure-interface",
- "seq": 2
- }
- ],
- "config-type": "juju",
- "input-params": {
- "config-delay": 0,
- "config-priority": 0
- },
- "juju": {
- "charm": "vpe-router"
- }
- },
- "vnfd-id-ref": "c49db92a-d6d8-11e5-9537-6cb3113b406f",
- "member-vnf-index": 1
- }
- ],
- "short-name": "tr_juju_nsd",
- "vld": [
- {
- "description": "Link from TR to ELAN",
- "type": "ELAN",
- "version": 1,
- "short-name": "Link1",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-connection-point-ref": "turborouter_vnfd/cp0",
- "vnfd-id-ref": "c49db92a-d6d8-11e5-9537-6cb3113b406f"
- }
- ],
- "name": "Link1",
- "vendor": "RIFT.io",
- "id": "c4f9dc50-d6d8-11e5-864f-6cb3113b406f"
- }
- ],
- "config-primitive": [
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corporation Name",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Tunnel Key",
- "default-value": 1,
- "mandatory": "true"
- }
- ],
- "name": "Add Corporation",
- "parameter-group": [
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corp. Gateway",
- "default-value": "10.0.1.1",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Corp. Network",
- "default-value": "10.0.1.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Interface Name",
- "default-value": "eth3",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network",
- "default-value": "10.255.255.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network Area",
- "default-value": 0,
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Vlan ID",
- "default-value": 101,
- "mandatory": "true"
- }
- ],
- "name": "PE1",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corp. Gateway",
- "default-value": "10.0.2.1",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Corp. Network",
- "default-value": "10.0.2.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Interface Name",
- "default-value": "eth3",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network",
- "default-value": "10.255.255.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network Area",
- "default-value": 0,
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Vlan ID",
- "default-value": 102,
- "mandatory": "true"
- }
- ],
- "name": "PE2",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corp. Gateway",
- "default-value": "10.0.4.1",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Corp. Network",
- "default-value": "10.0.4.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Interface Name",
- "default-value": "eth4",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network",
- "default-value": "10.255.255.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network Area",
- "default-value": 0,
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Vlan ID",
- "default-value": 108,
- "mandatory": "true"
- }
- ],
- "name": "PE3",
- "mandatory": "false"
- }
- ],
- "user-defined-script": "/home/rift/.install/usr/bin/add_corporation.py"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corporation Name",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Tunnel Key",
- "default-value": 10,
- "mandatory": "true"
- }
- ],
- "name": "Add SP Test Corporation",
- "parameter-group": [
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corp. Gateway",
- "default-value": "10.0.1.1",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Corp. Network",
- "default-value": "10.0.1.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Interface Name",
- "default-value": "eth3",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network",
- "default-value": "10.255.255.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network Area",
- "default-value": 0,
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Vlan ID",
- "default-value": 3000,
- "mandatory": "true"
- }
- ],
- "name": "PE1",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corp. Gateway",
- "default-value": "10.0.2.1",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Corp. Network",
- "default-value": "10.0.2.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Interface Name",
- "default-value": "eth3",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network",
- "default-value": "10.255.255.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network Area",
- "default-value": 0,
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Vlan ID",
- "default-value": 3000,
- "mandatory": "true"
- }
- ],
- "name": "PE2",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "Corp. Gateway",
- "default-value": "10.0.3.1",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Corp. Network",
- "default-value": "10.0.3.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Interface Name",
- "default-value": "eth3",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network",
- "default-value": "10.255.255.0/24",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "Local Network Area",
- "default-value": 0,
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "name": "Vlan ID",
- "default-value": 3000,
- "mandatory": "true"
- }
- ],
- "name": "PE3",
- "mandatory": "false"
- }
- ],
- "user-defined-script": "/home/rift/.install/usr/bin/add_corporation.py"
- }
- ],
- "name": "tr_juju_nsd",
- "vendor": "6Wind",
- "id": "c4f7fb6a-d6d8-11e5-864f-6cb3113b406f",
- "meta": {
- "instance-ref-count": 0
- }
- },
- {
- "description": "NS Clearewater IMS only",
- "input-parameter-xpath": [
- {
- "label": "net-corp-vlan",
- "default-value": 55,
- "xpath": "/nsd:nsd-catalog/nsd:nsd[nsd:id=c719e6ba-d6d8-11e5-8962-6cb3113b406f]/nsd:vld[nsd:id=c71b347a-d6d8-11e5-8962-6cb3113b406f]/nsd:provider-network/manotypes:segmentation_id"
- }
- ],
- "version": 1,
- "constituent-vnfd": [
- {
- "vnf-configuration": {
- "config-primitive": [
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "base_number"
- },
- {
- "data-type": "string",
- "name": "home_domain"
- },
- {
- "data-type": "integer",
- "name": "number_count"
- },
- {
- "data-type": "string",
- "name": "password"
- }
- ],
- "name": "config"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "number",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "password",
- "mandatory": "true"
- }
- ],
- "name": "create-update-user"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "number",
- "mandatory": "true"
- }
- ],
- "name": "delete-user"
- }
- ],
- "config-type": "juju",
- "initial-config-primitive": [
- {
- "parameter": [
- {
- "name": "proxied_ip",
- "value": "<rw_mgmt_ip>"
- }
- ],
- "name": "config",
- "seq": 1
- }
- ],
- "input-params": {
- "config-delay": 0,
- "config-priority": 1
- },
- "juju": {
- "charm": "clearwater-aio-proxy"
- }
- },
- "vnfd-id-ref": "c663ea54-d6d8-11e5-9f1a-6cb3113b406f",
- "member-vnf-index": 1
- }
- ],
- "short-name": "cwims_juju_nsd",
- "vld": [
- {
- "description": "Link from cwims to ELAN",
- "type": "ELAN",
- "version": 1,
- "provider-network": {
- "physical-network": "physnet1",
- "overlay-type": "VLAN"
- },
- "short-name": "net-corp",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-connection-point-ref": "cwims_vnfd/cp0",
- "vnfd-id-ref": "c663ea54-d6d8-11e5-9f1a-6cb3113b406f"
- }
- ],
- "name": "net-corp",
- "vendor": "RIFT.io",
- "id": "c71b347a-d6d8-11e5-8962-6cb3113b406f"
- }
- ],
- "config-primitive": [
- {
- "name": "Add User",
- "vnf-primitive-group": [
- {
- "vnfd-name": "cwims_vnfd",
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "c663ea54-d6d8-11e5-9f1a-6cb3113b406f",
- "primitive": [
- {
- "index": 1,
- "name": "create-update-user"
- }
- ]
- }
- ]
- },
- {
- "name": "Delete User",
- "vnf-primitive-group": [
- {
- "vnfd-name": "cwims_vnfd",
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "c663ea54-d6d8-11e5-9f1a-6cb3113b406f",
- "primitive": [
- {
- "index": 1,
- "name": "delete-user"
- }
- ]
- }
- ]
- },
- {
- "name": "Update Domain",
- "vnf-primitive-group": [
- {
- "vnfd-name": "cwims_vnfd",
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "c663ea54-d6d8-11e5-9f1a-6cb3113b406f",
- "primitive": [
- {
- "index": 1,
- "name": "config"
- }
- ]
- }
- ]
- }
- ],
- "name": "cwims_juju_nsd",
- "vendor": "RIFT.io",
- "id": "c719e6ba-d6d8-11e5-8962-6cb3113b406f",
- "meta": {
- "instance-ref-count": 0
- }
- }
- ]
- },
- {
- "id": "GUID-2",
- "name": "RIFT.wareâ„¢ VNF Descriptors Catalog",
- "short-name": "rift.ware-vnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "vnfd",
- "meta": {
- "icon-svg": "data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"> <svg version=\"1.1\" id=\"Layer_3\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"100px\" height=\"100px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\"> <g> <path d=\"M58.852,62.447l-4.662-1.033c-0.047-3.138-0.719-6.168-1.996-9.007l3.606-2.92c0.858-0.695,0.99-1.954,0.296-2.813 l-4.521-5.584c-0.334-0.413-0.818-0.675-1.346-0.731c-0.525-0.057-1.056,0.102-1.468,0.435L45.25,43.64v0 c-2.486-1.907-5.277-3.259-8.297-4.019v-4.458c0-1.104-0.896-2-2-2H27.77c-1.104,0-2,0.896-2,2v4.461 c-3.08,0.777-5.922,2.171-8.447,4.144l-3.545-2.82c-0.415-0.33-0.94-0.479-1.472-0.422c-0.527,0.06-1.009,0.327-1.339,0.743 l-4.472,5.623c-0.688,0.864-0.544,2.123,0.32,2.81l3.642,2.896v0c-1.25,2.848-1.895,5.88-1.916,9.011l-4.666,1.078 c-1.076,0.249-1.747,1.322-1.499,2.398l1.616,7.001c0.249,1.077,1.325,1.747,2.399,1.499l4.813-1.111v0 c1.429,2.681,3.344,5.017,5.691,6.943l-2.17,4.55c-0.476,0.997-0.054,2.19,0.943,2.666l6.484,3.094 c0.271,0.129,0.566,0.195,0.861,0.195c0.226,0,0.451-0.038,0.668-0.115c0.5-0.177,0.909-0.545,1.138-1.024l2.198-4.611 c2.923,0.563,5.966,0.554,8.879-0.033l2.236,4.585c0.484,0.994,1.685,1.403,2.675,0.921l6.456-3.148 c0.992-0.484,1.405-1.682,0.921-2.674l-2.206-4.524c2.335-1.946,4.231-4.301,5.639-6.999l4.812,1.067 c1.076,0.237,2.146-0.441,2.385-1.52l1.556-7.014c0.115-0.518,0.02-1.06-0.266-1.508C59.82,62.878,59.369,62.562,58.852,62.447z M40.18,61.761c0,4.859-3.953,8.812-8.813,8.812c-4.858,0-8.811-3.953-8.811-8.812s3.952-8.812,8.811-8.812 C36.227,52.949,40.18,56.902,40.18,61.761z\"/> <path d=\"M64.268,45.324c0.746,0,1.463-0.42,1.806-1.139l1.054-2.208c1.826,0.353,3.736,0.345,5.551-0.021l1.07,2.195 c0.484,0.992,1.682,1.405,2.675,0.921l2.691-1.313c0.477-0.233,0.842-0.646,1.015-1.147c0.172-0.501,0.139-1.051-0.095-1.528 l-1.052-2.155c1.458-1.214,2.645-2.686,3.527-4.377l2.278,0.504c1.075,0.238,2.146-0.442,2.386-1.52l0.647-2.923 c0.238-1.078-0.442-2.146-1.521-2.385l-2.184-0.484c-0.028-1.962-0.449-3.857-1.248-5.632l1.673-1.355 c0.412-0.334,0.675-0.818,0.73-1.345s-0.102-1.056-0.436-1.468l-1.884-2.327c-0.697-0.859-1.957-0.99-2.813-0.295l-1.614,1.307 c-1.554-1.193-3.299-2.038-5.188-2.513v-2.039c0-1.104-0.896-2-2-2h-2.994c-1.104,0-2,0.896-2,2v2.04 c-1.927,0.486-3.703,1.358-5.28,2.592l-1.634-1.298c-0.862-0.687-2.12-0.543-2.81,0.32l-1.864,2.344 c-0.33,0.416-0.481,0.945-0.422,1.472c0.061,0.527,0.327,1.009,0.743,1.339l1.69,1.345c-0.78,1.779-1.184,3.676-1.197,5.636 l-2.189,0.505c-0.517,0.119-0.965,0.439-1.246,0.889c-0.281,0.45-0.372,0.993-0.252,1.51l0.675,2.918 c0.249,1.076,1.323,1.747,2.398,1.498l2.28-0.527c0.892,1.676,2.089,3.137,3.559,4.343l-1.035,2.17 c-0.228,0.479-0.257,1.028-0.08,1.528c0.178,0.5,0.546,0.91,1.024,1.138l2.703,1.289C63.686,45.261,63.979,45.324,64.268,45.324z M64.334,27.961c0-3.039,2.473-5.51,5.512-5.51c3.038,0,5.51,2.472,5.51,5.51c0,3.039-2.472,5.511-5.51,5.511 C66.807,33.472,64.334,31,64.334,27.961z\"/> <path d=\"M96.107,66.441l-2.182-0.484c-0.028-1.961-0.449-3.856-1.25-5.632l1.675-1.355c0.412-0.334,0.675-0.818,0.73-1.346 c0.056-0.527-0.102-1.056-0.436-1.468l-1.885-2.327c-0.695-0.859-1.956-0.99-2.813-0.295l-1.614,1.307 c-1.555-1.193-3.3-2.038-5.188-2.513v-2.039c0-1.104-0.896-2-2-2h-2.994c-1.104,0-2,0.896-2,2v2.041 c-1.929,0.486-3.706,1.358-5.282,2.592l-0.001,0l-1.631-1.298c-0.415-0.331-0.938-0.482-1.472-0.422 c-0.527,0.06-1.009,0.327-1.339,0.742l-1.863,2.343c-0.688,0.865-0.544,2.123,0.32,2.811l1.691,1.345 c-0.782,1.784-1.186,3.68-1.199,5.636l-2.188,0.505c-0.517,0.12-0.965,0.439-1.246,0.889c-0.281,0.45-0.372,0.993-0.252,1.51 l0.675,2.918c0.249,1.076,1.327,1.744,2.397,1.498l2.281-0.526c0.893,1.677,2.09,3.138,3.558,4.343h0.001l-1.035,2.168 c-0.229,0.479-0.258,1.029-0.081,1.529c0.178,0.5,0.546,0.909,1.024,1.138l2.702,1.289c0.278,0.132,0.571,0.195,0.86,0.195 c0.746,0,1.463-0.42,1.806-1.139l1.054-2.208c1.828,0.353,3.739,0.347,5.552-0.021l1.071,2.194 c0.484,0.992,1.682,1.405,2.675,0.921l2.69-1.312c0.477-0.233,0.842-0.645,1.014-1.147c0.173-0.501,0.14-1.051-0.093-1.528 l-1.052-2.155c1.459-1.215,2.645-2.688,3.525-4.377l2.278,0.505c0.52,0.116,1.061,0.02,1.508-0.266 c0.447-0.285,0.763-0.736,0.878-1.254l0.647-2.923C97.866,67.748,97.186,66.681,96.107,66.441z M85.162,66.174 c0,3.039-2.471,5.511-5.508,5.511c-3.039,0-5.512-2.472-5.512-5.511c0-3.039,2.473-5.511,5.512-5.511 C82.691,60.664,85.162,63.136,85.162,66.174z\"/> </g> </svg> "
- },
- "descriptors": [
- {
- "description": "This is a Benu ClientSim VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "clientsim_vnfd/cp0"
- },
- {
- "name": "eth2",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "clientsim_vnfd/cp1"
- }
- ],
- "vm-flavor": {
- "memory-mb": 8192,
- "storage-gb": 80,
- "vcpu-count": 2
- },
- "name": "master",
- "image": "clientsim-benu.qcow2",
- "id": "19550ac8-c51c-11e5-b578-001b21b98a89",
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False }\nssh_pwauth: True\nruncmd:\n - [ systemctl, daemon-reload ]\n - [ systemctl, start, --no-block, ngnix.service ]\n - [ systemctl, start, --no-block, php-fpm.service ]\n"
- }
- ],
- "connection-point": [
- {
- "name": "clientsim_vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "clientsim_vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "19550ac8-c51c-11e5-b578-001b21b98a89",
- "dashboard-params": {
- "port": 8008,
- "path": "/"
- },
- "port": 2022
- },
- "version": 1,
- "short-name": "clientsim_vnfd",
- "name": "clientsim_vnfd",
- "vendor": "RIFT.io",
- "id": "1953f58e-c51c-11e5-b578-001b21b98a89"
- },
- {
- "description": "This is a 6Wind TurboRouter VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "turborouter_vnfd/cp0"
- },
- {
- "name": "eth2",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "vnfd-connection-point-ref": "turborouter_vnfd/cp1"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "storage-gb": 40,
- "vcpu-count": 2
- },
- "name": "iovdu",
- "image": "turbo-router-riftio-4-sriov.img.qcow2",
- "id": "2302e4c8-d6b5-11e5-8e3f-001b21b98a89",
- "cloud-init": "#cloud-config\n"
- }
- ],
- "connection-point": [
- {
- "name": "turborouter_vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "turborouter_vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "2302e4c8-d6b5-11e5-8e3f-001b21b98a89",
- "port": 80
- },
- "version": 1,
- "short-name": "turborouter_vnfd",
- "name": "turborouter_vnfd",
- "vendor": "6Wind",
- "id": "23028096-d6b5-11e5-8e3f-001b21b98a89"
- },
- {
- "description": "This is a Riverbed Steelhead VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "Riverbed_SteelHead_vnfd/cp0"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "storage-gb": 40,
- "vcpu-count": 2
- },
- "name": "iovdu",
- "image": "riverbedimg",
- "id": "2309cf5e-d6b5-11e5-9e33-001b21b98a89",
- "cloud-init": "#cloud-config\n"
- }
- ],
- "connection-point": [
- {
- "name": "Riverbed_SteelHead_vnfd/cp0",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "2309cf5e-d6b5-11e5-9e33-001b21b98a89",
- "dashboard-params": {
- "port": 80,
- "path": "/"
- },
- "port": 80
- },
- "version": 1,
- "short-name": "Riverbed_SteelHead_vnfd",
- "name": "Riverbed_SteelHead_vnfd",
- "vendor": "Riverbed",
- "http-endpoint": [
- {
- "password": "password",
- "polling_interval_secs": 2,
- "path": "rest/info",
- "username": "admin"
- }
- ],
- "id": "23095c22-d6b5-11e5-9e33-001b21b98a89"
- },
- {
- "description": "This is a F5 Big-IP load balancer VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "F5_BigIP_vnfd/cp0"
- },
- {
- "name": "eth2",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "vnfd-connection-point-ref": "F5_BigIP_vnfd/cp1"
- },
- {
- "name": "eth3",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "vnfd-connection-point-ref": "F5_BigIP_vnfd/cp2"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "storage-gb": 40,
- "vcpu-count": 2
- },
- "name": "iovdu",
- "image": "BIGIP-11.6.0.6.146.442.qcow2",
- "id": "232a52ba-d6b5-11e5-98fb-001b21b98a89",
- "cloud-init": "#cloud-config\n"
- }
- ],
- "connection-point": [
- {
- "name": "F5_BigIP_vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "F5_BigIP_vnfd/cp1",
- "type": "VPORT"
- },
- {
- "name": "F5_BigIP_vnfd/cp2",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "232a52ba-d6b5-11e5-98fb-001b21b98a89",
- "dashboard-params": {
- "https": "true",
- "port": 443,
- "path": "/"
- },
- "port": 80
- },
- "version": 1,
- "short-name": "F5_BigIP_vnfd",
- "name": "F5_BigIP_vnfd",
- "vendor": "F5 Networks",
- "http-endpoint": [
- {
- "password": "password",
- "polling_interval_secs": 2,
- "path": "rest/info",
- "username": "admin"
- }
- ],
- "id": "2329d470-d6b5-11e5-98fb-001b21b98a89"
- },
- {
- "description": "This is a Clearwater IMS VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "cwims_vnfd/cp0"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "storage-gb": 40,
- "vcpu-count": 2
- },
- "name": "iovdu",
- "image": "cw-aio.qcow2",
- "id": "2408452a-d6b5-11e5-95d4-001b21b98a89",
- "cloud-init": "#cloud-config\n"
- }
- ],
- "connection-point": [
- {
- "name": "cwims_vnfd/cp0",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "2408452a-d6b5-11e5-95d4-001b21b98a89",
- "dashboard-params": {
- "port": 80,
- "path": "/"
- },
- "port": 80
- },
- "version": 1,
- "short-name": "cwims_vnfd",
- "name": "cwims_vnfd",
- "vendor": "Clearwater",
- "http-endpoint": [
- {
- "password": "vyatta",
- "polling_interval_secs": 2,
- "path": "rest/app/gui/dashboard/sysinfo",
- "username": "vyatta"
- }
- ],
- "id": "2407d7a2-d6b5-11e5-95d4-001b21b98a89"
- },
- {
- "description": "This is a RIFT.ware Trafgen VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "trafgen_vnfd/cp0"
- }
- ],
- "vm-flavor": {
- "memory-mb": 16384,
- "storage-gb": 32,
- "vcpu-count": 4
- },
- "name": "iovdu",
- "image": "rift-root-latest-trafgen-k2.qcow2",
- "id": "2545bca6-d6b5-11e5-9bb7-001b21b98a89",
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False }\nssh_pwauth: True\nruncmd:\n - [ systemctl, daemon-reload ]\n - [ systemctl, enable, trafgen.service ]\n - [ systemctl, start, --no-block, trafgen.service ]\n"
- }
- ],
- "connection-point": [
- {
- "name": "trafgen_vnfd/cp0",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "2545bca6-d6b5-11e5-9bb7-001b21b98a89",
- "port": 2022
- },
- "version": 1,
- "short-name": "trafgen_vnfd",
- "name": "trafgen_vnfd",
- "vendor": "RIFT.io",
- "http-endpoint": [
- {
- "polling_interval_secs": 3,
- "headers": [
- {
- "key": "Accept",
- "value": "json"
- },
- {
- "key": "Content-type",
- "value": "application/vnd.yang.data+json"
- }
- ],
- "port": 8008,
- "password": "fedora",
- "path": "api/operational/vnf-opdata/vnf/trafgen,0/port-state",
- "username": "fedora"
- }
- ],
- "id": "2544951a-d6b5-11e5-9bb7-001b21b98a89",
- "monitoring-param": [
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'trafgen_vnfd/cp0'].counters.'tx-rate-mbps'"
- },
- "description": "Outgoing byte rate of interface",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp0 Tx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 1000
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/trafgen,0/port-state",
- "id": 1,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'trafgen_vnfd/cp0'].counters.'rx-rate-mbps'"
- },
- "description": "Incoming byte rate of interface",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp0 Rx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 1000
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/trafgen,0/port-state",
- "id": 2,
- "json-query-method": "OBJECTPATH"
- }
- ]
- },
- {
- "description": "This is a RIFT.ware Trafsink VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "trafsink_vnfd/cp0"
- }
- ],
- "vm-flavor": {
- "memory-mb": 16384,
- "storage-gb": 32,
- "vcpu-count": 4
- },
- "name": "iovdu",
- "image": "rift-root-latest-trafgen-j.qcow2",
- "id": "26a19e3a-d6b5-11e5-a5c6-001b21b98a89",
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False }\nssh_pwauth: True\nruncmd:\n - [ systemctl, daemon-reload ]\n - [ systemctl, enable, trafsink.service ]\n - [ systemctl, start, --no-block, trafsink.service ]\n"
- }
- ],
- "connection-point": [
- {
- "name": "trafsink_vnfd/cp0",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "26a19e3a-d6b5-11e5-a5c6-001b21b98a89",
- "port": 2022
- },
- "version": 1,
- "short-name": "trafsink_vnfd",
- "name": "trafsink_vnfd",
- "vendor": "RIFT.io",
- "http-endpoint": [
- {
- "polling_interval_secs": 3,
- "headers": [
- {
- "key": "Accept",
- "value": "json"
- },
- {
- "key": "Content-type",
- "value": "application/vnd.yang.data+json"
- }
- ],
- "port": 8008,
- "password": "fedora",
- "path": "api/operational/vnf-opdata/vnf/trafsink,0/port-state",
- "username": "fedora"
- }
- ],
- "id": "26a08568-d6b5-11e5-a5c6-001b21b98a89",
- "monitoring-param": [
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'trafsink_vnfd/cp0'].counters.'tx-rate-mbps'"
- },
- "description": "Outgoing bytes at interface",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp0 Tx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 1000
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/trafsink,0/port-state",
- "id": 1,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'trafsink_vnfd/cp0'].counters.'rx-rate-mbps'"
- },
- "description": "Incoming bytes at interface",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp0 Rx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 1000
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/trafsink,0/port-state",
- "id": 2,
- "json-query-method": "OBJECTPATH"
- }
- ]
- },
- {
- "description": "This is a Benu SSC VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "ssc_vnfd/cp0"
- }
- ],
- "vm-flavor": {
- "memory-mb": 8192,
- "storage-gb": 48,
- "vcpu-count": 2
- },
- "name": "master",
- "image": "ssc-benu.qcow2",
- "id": "2e981d3a-d00c-11e5-ab30-625662870761",
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False }\nssh_pwauth: True\nruncmd:\n - [ service, startssc, start ]\n"
- }
- ],
- "connection-point": [
- {
- "name": "ssc_vnfd/cp0",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "2e981d3a-d00c-11e5-ab30-625662870761",
- "dashboard-params": {
- "port": 80,
- "path": "/"
- },
- "port": 2022
- },
- "version": 1,
- "short-name": "ssc_vnfd",
- "name": "ssc_vnfd",
- "vendor": "RIFT.io",
- "id": "2e9819f2-d00c-11e5-ab30-625662870761"
- },
- {
- "description": "This is a Brocade vRouter VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth0",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "vrouter_vnfd/cp0"
- },
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "vnfd-connection-point-ref": "vrouter_vnfd/cp1"
- }
- ],
- "vm-flavor": {
- "memory-mb": 8192,
- "storage-gb": 40,
- "vcpu-count": 4
- },
- "name": "iovdu",
- "image": "vyatta-7.qcow2",
- "id": "a6cf9a28-d6cc-11e5-9540-001b21b98a89",
- "cloud-init": "#cloud-config\n"
- }
- ],
- "connection-point": [
- {
- "name": "vrouter_vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "vrouter_vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "a6cf9a28-d6cc-11e5-9540-001b21b98a89",
- "dashboard-params": {
- "port": 80,
- "path": "/"
- },
- "port": 80
- },
- "version": 1,
- "short-name": "vrouter_vnfd",
- "name": "vrouter_vnfd",
- "vendor": "Brocade",
- "http-endpoint": [
- {
- "password": "vyatta",
- "polling_interval_secs": 3,
- "port": 80,
- "path": "rest/app/gui/dashboard/interfaces",
- "username": "vyatta"
- },
- {
- "password": "vyatta",
- "polling_interval_secs": 3,
- "port": 80,
- "path": "rest/app/gui/dashboard/sysinfo",
- "username": "vyatta"
- }
- ],
- "id": "a6ce0f96-d6cc-11e5-9540-001b21b98a89",
- "monitoring-param": [
- {
- "json-query-params": {
- "json-path": "$.system.mem_total"
- },
- "description": "Memory usage of vrouter",
- "widget-type": "COUNTER",
- "group-tag": "Group1",
- "units": "KB",
- "value-type": "INT",
- "name": "Total memory",
- "http-endpoint-ref": "rest/app/gui/dashboard/sysinfo",
- "id": 1,
- "json-query-method": "JSONPATH"
- },
- {
- "json-query-params": {
- "json-path": "$.system.mem"
- },
- "description": "Memory utilization of vrouter",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "%",
- "value-type": "DECIMAL",
- "name": "Memory utilization",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 100
- },
- "http-endpoint-ref": "rest/app/gui/dashboard/sysinfo",
- "id": 2,
- "json-query-method": "JSONPATH"
- },
- {
- "json-query-params": {
- "json-path": "$.system.cpu[0].usage"
- },
- "description": "CPU utilization (all) of vrouter",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "%",
- "value-type": "DECIMAL",
- "name": "CPU utilization",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 100
- },
- "http-endpoint-ref": "rest/app/gui/dashboard/sysinfo",
- "id": 3,
- "json-query-method": "JSONPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'dp0s6']['in']"
- },
- "description": "Incoming bytes at interface",
- "widget-type": "COUNTER",
- "group-tag": "Group2",
- "units": "bytes",
- "value-type": "INT",
- "name": "Interface[dp0s6] Rx",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "id": 4,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'dp0s6']['out']"
- },
- "description": "Outgoing bytes at interface",
- "widget-type": "COUNTER",
- "group-tag": "Group2",
- "units": "bytes",
- "value-type": "INT",
- "name": "Interface[dp0s6] Tx",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "id": 5,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'tun0']['in']"
- },
- "description": "Incoming bytes at interface",
- "widget-type": "COUNTER",
- "group-tag": "Group2",
- "units": "bytes",
- "value-type": "INT",
- "name": "Interface[tun0] Rx",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "id": 6,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'tun0']['out']"
- },
- "description": "Outgoing bytes at interface",
- "widget-type": "COUNTER",
- "group-tag": "Group2",
- "units": "bytes",
- "value-type": "INT",
- "name": "Interface[tun0] Tx",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "id": 7,
- "json-query-method": "OBJECTPATH"
- }
- ]
- },
- {
- "description": "This is a Benu VSE-SI VNF",
- "vdu": [
- {
- "count": 1,
- "vm-flavor": {
- "memory-mb": 16384,
- "storage-gb": 64,
- "vcpu-count": 4
- },
- "name": "RW.VM.MASTER",
- "image": "Benu_VSE_Image_02_09.qcow2",
- "id": "c1bb1a92-aa48-4908-89b2-5a78ff324953",
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False }\nssh_pwauth: True\nwrite_files:\n - path: /opt/rift/.vnf_start_conf\n content: |\n VNFNAME=\"vsesi\"\n VDUNAME={{ vdu.name }}\n MASTERIP= \nruncmd: \n - [ systemctl, daemon-reload ]\n - [ systemctl, enable, multivmvnf.service ]\n - [ systemctl, start, --no-block, multivmvnf.service ]\n"
- },
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "vsesi_vnfd/cp0"
- },
- {
- "name": "eth2",
- "virtual-interface": {
- "type": "SR-IOV"
- },
- "vnfd-connection-point-ref": "vsesi_vnfd/cp1"
- }
- ],
- "vm-flavor": {
- "memory-mb": 32768,
- "storage-gb": 128,
- "vcpu-count": 4
- },
- "name": "RW.VM.FASTPATH.LEAD",
- "image": "Benu_VSE_Image_02_09.qcow2",
- "id": "d1bb1a92-aa48-4908-89b2-5a78ff324953",
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False } \nssh_pwauth: True\nwrite_files:\n - path: /opt/rift/.vnf_start_conf\n content: |\n VNFNAME=\"vsesi\"\n VDUNAME={{ vdu.name }}\n MASTERIP= {{ vdu[c1bb1a92-aa48-4908-89b2-5a78ff324953].mgmt.ip }}\nruncmd:\n - [ systemctl, daemon-reload ]\n - [ systemctl, enable, multivmvnf.service ]\n - [ systemctl, start, --no-block, multivmvnf.service ]\n - [ systemctl, enable, benuvnf.service ]\n - [ systemctl, start, --no-block, benuvnf.service ]\n"
- }
- ],
- "connection-point": [
- {
- "name": "vsesi_vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "vsesi_vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "c1bb1a92-aa48-4908-89b2-5a78ff324953",
- "port": 2022
- },
- "version": 1,
- "short-name": "vsesi_vnfd",
- "name": "vsesi_vnfd",
- "vendor": "Benu",
- "http-endpoint": [
- {
- "polling_interval_secs": 3,
- "headers": [
- {
- "key": "Accept",
- "value": "json"
- },
- {
- "key": "Content-type",
- "value": "application/vnd.yang.data+json"
- }
- ],
- "port": 8008,
- "password": "fedora",
- "path": "api/operational/vnf-opdata/vnf/vsesi,0/port-state",
- "username": "fedora"
- }
- ],
- "id": "b1633f8c-ce8c-11e5-a62b-001b21b98a89",
- "monitoring-param": [
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'vsesi/1/1'].counters.'tx-rate-mbps'"
- },
- "description": "Outgoing byte rate of interface",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp0 Tx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 100
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/vsesi,0/port-state",
- "id": 1,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'vsesi/1/1'].counters.'rx-rate-mbps'"
- },
- "description": "Incoming byte rate of interface",
- "widget-type": "GAUGE",
- "group-tag": "Group1",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp0 Rx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 100
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/vsesi,0/port-state",
- "id": 2,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'vsesi/1/2'].counters.'tx-rate-mbps'"
- },
- "description": "Outgoing byte rate of interface",
- "widget-type": "GAUGE",
- "group-tag": "Group2",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp1 Tx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 100
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/vsesi,0/port-state",
- "id": 3,
- "json-query-method": "OBJECTPATH"
- },
- {
- "json-query-params": {
- "object-path": "$..*[@.portname is 'vsesi/1/2'].counters.'rx-rate-mbps'"
- },
- "description": "Incoming byte rate of interface",
- "widget-type": "GAUGE",
- "group-tag": "Group2",
- "units": "mbps",
- "value-type": "INT",
- "name": "Cp1 Rx Rate",
- "numeric-constraints": {
- "min-value": 0,
- "max-value": 100
- },
- "http-endpoint-ref": "api/operational/vnf-opdata/vnf/vsesi,0/port-state",
- "id": 4,
- "json-query-method": "OBJECTPATH"
- }
- ]
- },
- {
- "description": "This is a 6Wind TurboRouter VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "vnfd-connection-point-ref": "turborouter_vnfd/cp0"
- },
- {
- "name": "eth2",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "vnfd-connection-point-ref": "turborouter_vnfd/cp1"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "storage-gb": 40,
- "vcpu-count": 2
- },
- "name": "iovdu",
- "image": "turbo-router-riftio-5.img.qcow2",
- "id": "c49dffe8-d6d8-11e5-9537-6cb3113b406f",
- "cloud-init": "#cloud-config\n"
- }
- ],
- "connection-point": [
- {
- "name": "turborouter_vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "turborouter_vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "c49dffe8-d6d8-11e5-9537-6cb3113b406f",
- "port": 80
- },
- "version": 1,
- "short-name": "turborouter_vnfd",
- "name": "turborouter_vnfd",
- "vendor": "6Wind",
- "id": "c49db92a-d6d8-11e5-9537-6cb3113b406f"
- },
- {
- "description": "This is a Clearwater IMS VNF",
- "vdu": [
- {
- "count": 1,
- "external-interface": [
- {
- "name": "eth1",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "vnfd-connection-point-ref": "cwims_vnfd/cp0"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "storage-gb": 40,
- "vcpu-count": 2
- },
- "name": "iovdu",
- "image": "cw-aio.qcow2",
- "id": "c66438c4-d6d8-11e5-9f1a-6cb3113b406f",
- "cloud-init": "#cloud-config\n"
- }
- ],
- "connection-point": [
- {
- "name": "cwims_vnfd/cp0",
- "type": "VPORT"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "c66438c4-d6d8-11e5-9f1a-6cb3113b406f",
- "dashboard-params": {
- "port": 80,
- "path": "/"
- },
- "port": 80
- },
- "version": 1,
- "short-name": "cwims_vnfd",
- "name": "cwims_vnfd",
- "vendor": "Clearwater",
- "http-endpoint": [
- {
- "password": "vyatta",
- "polling_interval_secs": 2,
- "path": "rest/app/gui/dashboard/sysinfo",
- "username": "vyatta"
- }
- ],
- "id": "c663ea54-d6d8-11e5-9f1a-6cb3113b406f"
- }
- ]
- },
- {
- "id": "GUID-3",
- "name": "RIFT.wareâ„¢ PNF Descriptors Catalog",
- "short-name": "rift.ware-pnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "pnfd",
- "meta": {
- "icon-svg": "data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"> <svg version=\"1.1\" id=\"Layer_4\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"100px\" height=\"100px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\"> <path d=\"M86.334,47.444V35.759H13.666v11.686h3.561v5.111h-3.561v11.686h72.668V52.556h-4.108v-5.111H86.334z M26.628,59.454h-5.051 v-4.941h5.051V59.454z M26.628,52.404h-5.051v-4.941h5.051V52.404z M26.628,45.486h-5.051v-4.941h5.051V45.486z M34.094,59.454 h-5.051v-4.941h5.051V59.454z M34.094,52.404h-5.051v-4.941h5.051V52.404z M34.094,45.486h-5.051v-4.941h5.051V45.486z M41.452,59.454h-5.051v-4.941h5.051V59.454z M41.452,52.404h-5.051v-4.941h5.051V52.404z M41.452,45.486h-5.051v-4.941h5.051 V45.486z M48.733,59.454h-5.051v-4.941h5.051V59.454z M48.733,52.404h-5.051v-4.941h5.051V52.404z M48.733,45.486h-5.051v-4.941 h5.051V45.486z M56.2,59.454h-5.051v-4.941H56.2V59.454z M56.2,52.404h-5.051v-4.941H56.2V52.404z M56.2,45.486h-5.051v-4.941H56.2 V45.486z M63.558,59.454h-5.05v-4.941h5.05V59.454z M63.558,52.404h-5.05v-4.941h5.05V52.404z M63.558,45.486h-5.05v-4.941h5.05 V45.486z M74.858,59.312h-6.521v-3.013h6.521V59.312z M71.572,50.854c-2.875,0-5.204-2.33-5.204-5.203s2.329-5.203,5.204-5.203 s5.204,2.33,5.204,5.203S74.446,50.854,71.572,50.854z M74.858,45.618c0,1.801-1.46,3.261-3.261,3.261 c-1.8,0-3.261-1.46-3.261-3.261s1.46-3.26,3.261-3.26C73.398,42.358,74.858,43.817,74.858,45.618z\"/> </svg>"
- },
- "descriptors": []
- }
-]
\ No newline at end of file
+++ /dev/null
-[
- {
- "id": "GUID-1",
- "name": "RIFT.wareâ„¢ NS Descriptors Catalog",
- "short-name": "rift.ware-nsd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "nsd",
- "descriptors": []
- },
- {
- "id": "GUID-2",
- "name": "RIFT.wareâ„¢ VNF Descriptors Catalog",
- "short-name": "rift.ware-vnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "vnfd",
- "descriptors": [
- {
- "id": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "name": "ping-vnfd",
- "short-name": "ping-vnfd",
- "vendor": "RIFT.io",
- "description": "This is an example RIFT.ware VNF",
- "version": "1.0",
- "internal-vld": [
- {
- "id": "ba1478fe-626b-11e5-998d-6cb3113b406f",
- "name": "fabric",
- "short-name": "fabric",
- "description": "Virtual link for internal fabric",
- "type": "ELAN"
- }
- ],
- "connection-point": [
- {
- "name": "ping-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "ping-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "ba14a504-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "ba153744-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "ba15577e-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "ba153744-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "ba15577e-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "ping-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "ping-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- },
- {
- "id": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "name": "pong-vnfd",
- "short-name": "pong-vnfd",
- "vendor": "RIFT.io",
- "description": "This is an example RIFT.ware VNF",
- "version": "1.0",
- "internal-vld": [
- {
- "id": "ba195068-626b-11e5-998d-6cb3113b406f",
- "name": "fabric",
- "short-name": "fabric",
- "description": "Virtual link for internal fabric",
- "type": "ELAN"
- }
- ],
- "connection-point": [
- {
- "name": "pong-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "pong-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "ba1960ee-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "ba197a98-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "ba198696-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "ba197a98-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "ba198696-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "pong-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "pong-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "id": "GUID-3",
- "name": "RIFT.wareâ„¢ PNF Descriptors Catalog",
- "short-name": "rift.ware-pnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "pnfd",
- "descriptors": []
- }
-]
\ No newline at end of file
{
"name": "RIFT.ware",
+ "license": "Apache-2.0",
"icons": [
{
"src": "\/android-chrome-36x36.png",
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1040.000000pt" height="1040.000000pt" viewBox="0 0 1040.000000 1040.000000"
preserveAspectRatio="xMidYMid meet">
+++ /dev/null
-[
- {
- "id": "GUID-1",
- "name": "RIFT.wareâ„¢ NS Descriptors Catalog",
- "short-name": "rift.ware-nsd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "nsd",
- "descriptors": [
- {
- "id": "9c450720-d670-11e5-a5c7-6cb3113b406f",
- "config-primitive": [
- {
- "vnf-primitive-group": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "b152c2e6-d34c-11e5-8463-6cb3113b406f",
- "primitive": [
- {
- "name": "create-update-user",
- "index": 1
- }
- ],
- "vnfd-name": "cwims_vnfd"
- }
- ],
- "name": "Add User"
- },
- {
- "vnf-primitive-group": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "b152c2e6-d34c-11e5-8463-6cb3113b406f",
- "primitive": [
- {
- "name": "delete-user",
- "index": 1
- }
- ],
- "vnfd-name": "cwims_vnfd"
- }
- ],
- "name": "Delete User"
- },
- {
- "vnf-primitive-group": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "b152c2e6-d34c-11e5-8463-6cb3113b406f",
- "primitive": [
- {
- "name": "config",
- "index": 1
- }
- ],
- "vnfd-name": "cwims_vnfd"
- }
- ],
- "name": "Update Domain"
- }
- ],
- "description": "NS Clearewater IMS only",
- "vendor": "RIFT.io",
- "name": "cwims_juju_nsd",
- "input-parameter-xpath": [
- {
- "label": "net-corp-vlan",
- "default-value": 55,
- "xpath": "/nsd:nsd-catalog/nsd:nsd[nsd:id=9c450720-d670-11e5-a5c7-6cb3113b406f]/nsd:vld[nsd:id=9c4646c6-d670-11e5-a5c7-6cb3113b406f]/nsd:provider-network/manotypes:segmentation_id"
- }
- ],
- "version": 1,
- "short-name": "cwims_juju_nsd",
- "vld": [
- {
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "b152c2e6-d34c-11e5-8463-6cb3113b406f",
- "vnfd-connection-point-ref": "cwims_vnfd/cp0"
- }
- ],
- "id": "9c4646c6-d670-11e5-a5c7-6cb3113b406f",
- "provider-network": {
- "overlay-type": "VLAN",
- "physical-network": "physnet1"
- },
- "description": "Link from cwims to ELAN",
- "vendor": "RIFT.io",
- "name": "net-corp",
- "version": 1,
- "short-name": "net-corp",
- "type": "ELAN"
- }
- ],
- "constituent-vnfd": [
- {
- "vnf-configuration": {
- "config-type": "juju",
- "initial-config-primitive": [
- {
- "parameter": [
- {
- "value": "<rw_mgmt_ip>",
- "name": "proxied_ip"
- }
- ],
- "seq": 1,
- "name": "config"
- }
- ],
- "juju": {
- "charm": "clearwater-aio-proxy"
- },
- "config-primitive": [
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "base_number"
- },
- {
- "data-type": "string",
- "name": "home_domain"
- },
- {
- "data-type": "integer",
- "name": "number_count"
- },
- {
- "data-type": "string",
- "name": "password"
- }
- ],
- "name": "config"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "number",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "name": "password",
- "mandatory": "true"
- }
- ],
- "name": "create-update-user"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "name": "number",
- "mandatory": "true"
- }
- ],
- "name": "delete-user"
- }
- ],
- "input-params": {
- "config-priority": 1,
- "config-delay": 0
- }
- },
- "vnfd-id-ref": "b152c2e6-d34c-11e5-8463-6cb3113b406f",
- "member-vnf-index": 1
- }
- ],
- "meta": "{\"instance-ref-count\": 5}"
- },
- {
- "id": "9d887e58-d50f-11e5-80c8-6cb3113b406f",
- "config-primitive": [
- {
- "user-defined-script": "/home/rift/.install/usr/bin/add_corporation.py",
- "parameter": [
- {
- "data-type": "string",
- "name": "Corporation Name",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 1,
- "name": "Tunnel Key",
- "mandatory": "true"
- }
- ],
- "name": "Add Corporation",
- "parameter-group": [
- {
- "parameter": [
- {
- "data-type": "string",
- "default-value": "10.0.1.1",
- "name": "Corp. Gateway",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.0.1.0/24",
- "name": "Corp. Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "eth3",
- "name": "Interface Name",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.255.255.0/24",
- "name": "Local Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": 0,
- "name": "Local Network Area",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 101,
- "name": "Vlan ID",
- "mandatory": "true"
- }
- ],
- "name": "PE1",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "default-value": "10.0.2.1",
- "name": "Corp. Gateway",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.0.2.0/24",
- "name": "Corp. Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "eth3",
- "name": "Interface Name",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.255.255.0/24",
- "name": "Local Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": 0,
- "name": "Local Network Area",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 102,
- "name": "Vlan ID",
- "mandatory": "true"
- }
- ],
- "name": "PE2",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "default-value": "10.0.4.1",
- "name": "Corp. Gateway",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.0.4.0/24",
- "name": "Corp. Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "eth4",
- "name": "Interface Name",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.255.255.0/24",
- "name": "Local Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": 0,
- "name": "Local Network Area",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 108,
- "name": "Vlan ID",
- "mandatory": "true"
- }
- ],
- "name": "PE3",
- "mandatory": "false"
- }
- ]
- },
- {
- "user-defined-script": "/home/rift/.install/usr/bin/add_corporation.py",
- "parameter": [
- {
- "data-type": "string",
- "name": "Corporation Name",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 10,
- "name": "Tunnel Key",
- "mandatory": "true"
- }
- ],
- "name": "Add SP Test Corporation",
- "parameter-group": [
- {
- "parameter": [
- {
- "data-type": "string",
- "default-value": "10.0.1.1",
- "name": "Corp. Gateway",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.0.1.0/24",
- "name": "Corp. Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "eth3",
- "name": "Interface Name",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.255.255.0/24",
- "name": "Local Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": 0,
- "name": "Local Network Area",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 3000,
- "name": "Vlan ID",
- "mandatory": "true"
- }
- ],
- "name": "PE1",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "default-value": "10.0.2.1",
- "name": "Corp. Gateway",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.0.2.0/24",
- "name": "Corp. Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "eth3",
- "name": "Interface Name",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.255.255.0/24",
- "name": "Local Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": 0,
- "name": "Local Network Area",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 3000,
- "name": "Vlan ID",
- "mandatory": "true"
- }
- ],
- "name": "PE2",
- "mandatory": "false"
- },
- {
- "parameter": [
- {
- "data-type": "string",
- "default-value": "10.0.3.1",
- "name": "Corp. Gateway",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.0.3.0/24",
- "name": "Corp. Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "eth3",
- "name": "Interface Name",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": "10.255.255.0/24",
- "name": "Local Network",
- "mandatory": "true"
- },
- {
- "data-type": "string",
- "default-value": 0,
- "name": "Local Network Area",
- "mandatory": "true"
- },
- {
- "data-type": "integer",
- "default-value": 3000,
- "name": "Vlan ID",
- "mandatory": "true"
- }
- ],
- "name": "PE3",
- "mandatory": "false"
- }
- ]
- }
- ],
- "description": "6wind turborouter only",
- "vendor": "6Wind",
- "name": "tr_juju_nsd",
- "version": 1,
- "short-name": "tr_juju_nsd",
- "vld": [
- {
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "b14795b0-d34c-11e5-8e51-6cb3113b406f",
- "vnfd-connection-point-ref": "turborouter_vnfd/cp0"
- }
- ],
- "id": "9d8a7b4a-d50f-11e5-80c8-6cb3113b406f",
- "description": "Link from TR to ELAN",
- "vendor": "RIFT.io",
- "name": "Link1",
- "version": 1,
- "short-name": "Link1",
- "type": "ELAN"
- }
- ],
- "constituent-vnfd": [
- {
- "vnf-configuration": {
- "config-type": "juju",
- "initial-config-primitive": [
- {
- "parameter": [
- {
- "value": "6windos",
- "name": "pass"
- },
- {
- "value": "root",
- "name": "user"
- },
- {
- "value": "<rw_mgmt_ip>",
- "name": "vpe-router"
- }
- ],
- "seq": 1,
- "name": "config"
- },
- {
- "parameter": [
- {
- "value": "10.10.10.2/30",
- "name": "cidr"
- },
- {
- "value": "eth1",
- "name": "iface-name"
- }
- ],
- "seq": 2,
- "name": "configure-interface"
- }
- ],
- "juju": {
- "charm": "vpe-router"
- },
- "input-params": {
- "config-priority": 0,
- "config-delay": 0
- }
- },
- "vnfd-id-ref": "b14795b0-d34c-11e5-8e51-6cb3113b406f",
- "member-vnf-index": 1
- }
- ],
- "meta": {
- "instance-ref-count": 4
- }
- },
- {
- "id": "b53910e0-d34c-11e5-b34f-6cb3113b406f",
- "description": "NS Vrouter-only",
- "vendor": "RIFT.io",
- "name": "vrouter_nsd",
- "version": 1,
- "short-name": "vrouter_nsd",
- "vld": [
- {
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "b3ebcd0e-d34c-11e5-b72f-6cb3113b406f",
- "vnfd-connection-point-ref": "vrouter_vnfd/cp0"
- }
- ],
- "id": "b5505bb0-d34c-11e5-b34f-6cb3113b406f",
- "description": "Link from Vrouter to ELAN",
- "vendor": "RIFT.io",
- "name": "Link1",
- "version": 1,
- "short-name": "Link1",
- "type": "ELAN"
- },
- {
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "b3ebcd0e-d34c-11e5-b72f-6cb3113b406f",
- "vnfd-connection-point-ref": "vrouter_vnfd/cp1"
- }
- ],
- "id": "b5508324-d34c-11e5-b34f-6cb3113b406f",
- "description": "Link from Vrouter to ELAN",
- "vendor": "RIFT.io",
- "name": "Link2",
- "version": 1,
- "short-name": "Link2",
- "type": "ELAN"
- }
- ],
- "constituent-vnfd": [
- {
- "vnfd-id-ref": "b3ebcd0e-d34c-11e5-b72f-6cb3113b406f",
- "member-vnf-index": 1
- }
- ]
- }
- ]
- },
- {
- "id": "GUID-2",
- "name": "RIFT.wareâ„¢ VNF Descriptors Catalog",
- "short-name": "rift.ware-vnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "vnfd",
- "meta": {
- "icon-svg": "data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"> <svg version=\"1.1\" id=\"Layer_3\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"100px\" height=\"100px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\"> <g> <path d=\"M58.852,62.447l-4.662-1.033c-0.047-3.138-0.719-6.168-1.996-9.007l3.606-2.92c0.858-0.695,0.99-1.954,0.296-2.813 l-4.521-5.584c-0.334-0.413-0.818-0.675-1.346-0.731c-0.525-0.057-1.056,0.102-1.468,0.435L45.25,43.64v0 c-2.486-1.907-5.277-3.259-8.297-4.019v-4.458c0-1.104-0.896-2-2-2H27.77c-1.104,0-2,0.896-2,2v4.461 c-3.08,0.777-5.922,2.171-8.447,4.144l-3.545-2.82c-0.415-0.33-0.94-0.479-1.472-0.422c-0.527,0.06-1.009,0.327-1.339,0.743 l-4.472,5.623c-0.688,0.864-0.544,2.123,0.32,2.81l3.642,2.896v0c-1.25,2.848-1.895,5.88-1.916,9.011l-4.666,1.078 c-1.076,0.249-1.747,1.322-1.499,2.398l1.616,7.001c0.249,1.077,1.325,1.747,2.399,1.499l4.813-1.111v0 c1.429,2.681,3.344,5.017,5.691,6.943l-2.17,4.55c-0.476,0.997-0.054,2.19,0.943,2.666l6.484,3.094 c0.271,0.129,0.566,0.195,0.861,0.195c0.226,0,0.451-0.038,0.668-0.115c0.5-0.177,0.909-0.545,1.138-1.024l2.198-4.611 c2.923,0.563,5.966,0.554,8.879-0.033l2.236,4.585c0.484,0.994,1.685,1.403,2.675,0.921l6.456-3.148 c0.992-0.484,1.405-1.682,0.921-2.674l-2.206-4.524c2.335-1.946,4.231-4.301,5.639-6.999l4.812,1.067 c1.076,0.237,2.146-0.441,2.385-1.52l1.556-7.014c0.115-0.518,0.02-1.06-0.266-1.508C59.82,62.878,59.369,62.562,58.852,62.447z M40.18,61.761c0,4.859-3.953,8.812-8.813,8.812c-4.858,0-8.811-3.953-8.811-8.812s3.952-8.812,8.811-8.812 C36.227,52.949,40.18,56.902,40.18,61.761z\"/> <path d=\"M64.268,45.324c0.746,0,1.463-0.42,1.806-1.139l1.054-2.208c1.826,0.353,3.736,0.345,5.551-0.021l1.07,2.195 c0.484,0.992,1.682,1.405,2.675,0.921l2.691-1.313c0.477-0.233,0.842-0.646,1.015-1.147c0.172-0.501,0.139-1.051-0.095-1.528 l-1.052-2.155c1.458-1.214,2.645-2.686,3.527-4.377l2.278,0.504c1.075,0.238,2.146-0.442,2.386-1.52l0.647-2.923 c0.238-1.078-0.442-2.146-1.521-2.385l-2.184-0.484c-0.028-1.962-0.449-3.857-1.248-5.632l1.673-1.355 c0.412-0.334,0.675-0.818,0.73-1.345s-0.102-1.056-0.436-1.468l-1.884-2.327c-0.697-0.859-1.957-0.99-2.813-0.295l-1.614,1.307 c-1.554-1.193-3.299-2.038-5.188-2.513v-2.039c0-1.104-0.896-2-2-2h-2.994c-1.104,0-2,0.896-2,2v2.04 c-1.927,0.486-3.703,1.358-5.28,2.592l-1.634-1.298c-0.862-0.687-2.12-0.543-2.81,0.32l-1.864,2.344 c-0.33,0.416-0.481,0.945-0.422,1.472c0.061,0.527,0.327,1.009,0.743,1.339l1.69,1.345c-0.78,1.779-1.184,3.676-1.197,5.636 l-2.189,0.505c-0.517,0.119-0.965,0.439-1.246,0.889c-0.281,0.45-0.372,0.993-0.252,1.51l0.675,2.918 c0.249,1.076,1.323,1.747,2.398,1.498l2.28-0.527c0.892,1.676,2.089,3.137,3.559,4.343l-1.035,2.17 c-0.228,0.479-0.257,1.028-0.08,1.528c0.178,0.5,0.546,0.91,1.024,1.138l2.703,1.289C63.686,45.261,63.979,45.324,64.268,45.324z M64.334,27.961c0-3.039,2.473-5.51,5.512-5.51c3.038,0,5.51,2.472,5.51,5.51c0,3.039-2.472,5.511-5.51,5.511 C66.807,33.472,64.334,31,64.334,27.961z\"/> <path d=\"M96.107,66.441l-2.182-0.484c-0.028-1.961-0.449-3.856-1.25-5.632l1.675-1.355c0.412-0.334,0.675-0.818,0.73-1.346 c0.056-0.527-0.102-1.056-0.436-1.468l-1.885-2.327c-0.695-0.859-1.956-0.99-2.813-0.295l-1.614,1.307 c-1.555-1.193-3.3-2.038-5.188-2.513v-2.039c0-1.104-0.896-2-2-2h-2.994c-1.104,0-2,0.896-2,2v2.041 c-1.929,0.486-3.706,1.358-5.282,2.592l-0.001,0l-1.631-1.298c-0.415-0.331-0.938-0.482-1.472-0.422 c-0.527,0.06-1.009,0.327-1.339,0.742l-1.863,2.343c-0.688,0.865-0.544,2.123,0.32,2.811l1.691,1.345 c-0.782,1.784-1.186,3.68-1.199,5.636l-2.188,0.505c-0.517,0.12-0.965,0.439-1.246,0.889c-0.281,0.45-0.372,0.993-0.252,1.51 l0.675,2.918c0.249,1.076,1.327,1.744,2.397,1.498l2.281-0.526c0.893,1.677,2.09,3.138,3.558,4.343h0.001l-1.035,2.168 c-0.229,0.479-0.258,1.029-0.081,1.529c0.178,0.5,0.546,0.909,1.024,1.138l2.702,1.289c0.278,0.132,0.571,0.195,0.86,0.195 c0.746,0,1.463-0.42,1.806-1.139l1.054-2.208c1.828,0.353,3.739,0.347,5.552-0.021l1.071,2.194 c0.484,0.992,1.682,1.405,2.675,0.921l2.69-1.312c0.477-0.233,0.842-0.645,1.014-1.147c0.173-0.501,0.14-1.051-0.093-1.528 l-1.052-2.155c1.459-1.215,2.645-2.688,3.525-4.377l2.278,0.505c0.52,0.116,1.061,0.02,1.508-0.266 c0.447-0.285,0.763-0.736,0.878-1.254l0.647-2.923C97.866,67.748,97.186,66.681,96.107,66.441z M85.162,66.174 c0,3.039-2.471,5.511-5.508,5.511c-3.039,0-5.512-2.472-5.512-5.511c0-3.039,2.473-5.511,5.512-5.511 C82.691,60.664,85.162,63.136,85.162,66.174z\"/> </g> </svg> "
- },
- "descriptors": [
- {
- "id": "b14795b0-d34c-11e5-8e51-6cb3113b406f",
- "description": "This is a 6Wind TurboRouter VNF",
- "vendor": "6Wind",
- "name": "turborouter_vnfd",
- "version": 1,
- "short-name": "turborouter_vnfd",
- "vdu": [
- {
- "id": "b1481ec2-d34c-11e5-8e51-6cb3113b406f",
- "count": 1,
- "name": "iovdu",
- "vm-flavor": {
- "memory-mb": 4096,
- "vcpu-count": 2,
- "storage-gb": 40
- },
- "image": "turbo-router-riftio-5.img.qcow2",
- "external-interface": [
- {
- "vnfd-connection-point-ref": "turborouter_vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth1"
- },
- {
- "vnfd-connection-point-ref": "turborouter_vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth2"
- }
- ],
- "cloud-init": "#cloud-config\n"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "b1481ec2-d34c-11e5-8e51-6cb3113b406f",
- "port": 80
- },
- "connection-point": [
- {
- "type": "VPORT",
- "name": "turborouter_vnfd/cp0"
- },
- {
- "type": "VPORT",
- "name": "turborouter_vnfd/cp1"
- }
- ],
- "monitoring-param": [
- {
- "id": 1,
- "units": "KB",
- "description": "Memory usage of turborouter",
- "name": "Total memory",
- "group-tag": "Group1",
- "widget-type": "COUNTER",
- "http-endpoint-ref": "rest/info",
- "value-type": "INT",
- "json-query-method": "JSONPATH",
- "json-query-params": {
- "json-path": "$.system.mem_total"
- }
- }
- ],
- "http-endpoint": [
- {
- "username": "root",
- "polling_interval_secs": 3,
- "password": "6windos",
- "path": "rest/info",
- "port": 80
- }
- ]
- },
- {
- "id": "b152c2e6-d34c-11e5-8463-6cb3113b406f",
- "description": "This is a Clearwater IMS VNF",
- "vendor": "Clearwater",
- "name": "cwims_vnfd",
- "version": 1,
- "short-name": "cwims_vnfd",
- "vdu": [
- {
- "id": "b1530f76-d34c-11e5-8463-6cb3113b406f",
- "count": 1,
- "name": "iovdu",
- "vm-flavor": {
- "memory-mb": 4096,
- "vcpu-count": 2,
- "storage-gb": 40
- },
- "image": "cw-aio.qcow2",
- "external-interface": [
- {
- "vnfd-connection-point-ref": "cwims_vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth1"
- }
- ],
- "cloud-init": "#cloud-config\n"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "b1530f76-d34c-11e5-8463-6cb3113b406f",
- "dashboard-params": {
- "path": "/",
- "port": 80
- },
- "port": 80
- },
- "connection-point": [
- {
- "type": "VPORT",
- "name": "cwims_vnfd/cp0"
- }
- ],
- "http-endpoint": [
- {
- "username": "vyatta",
- "password": "vyatta",
- "path": "rest/app/gui/dashboard/sysinfo",
- "polling_interval_secs": 2
- }
- ]
- },
- {
- "id": "b3ebcd0e-d34c-11e5-b72f-6cb3113b406f",
- "description": "This is a Brocade vRouter VNF",
- "vendor": "Brocade",
- "name": "vrouter_vnfd",
- "version": 1,
- "short-name": "vrouter_vnfd",
- "vdu": [
- {
- "id": "b3ecbd5e-d34c-11e5-b72f-6cb3113b406f",
- "count": 1,
- "name": "iovdu",
- "vm-flavor": {
- "memory-mb": 8192,
- "vcpu-count": 4,
- "storage-gb": 40
- },
- "image": "vyatta-7.qcow2",
- "external-interface": [
- {
- "vnfd-connection-point-ref": "vrouter_vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth0"
- },
- {
- "vnfd-connection-point-ref": "vrouter_vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth1"
- }
- ],
- "cloud-init": "#cloud-config\n"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "b3ecbd5e-d34c-11e5-b72f-6cb3113b406f",
- "dashboard-params": {
- "path": "/",
- "port": 80
- },
- "port": 80
- },
- "connection-point": [
- {
- "type": "VPORT",
- "name": "vrouter_vnfd/cp0"
- },
- {
- "type": "VPORT",
- "name": "vrouter_vnfd/cp1"
- }
- ],
- "monitoring-param": [
- {
- "id": 1,
- "units": "KB",
- "description": "Memory usage of vrouter",
- "name": "Total memory",
- "group-tag": "Group1",
- "widget-type": "COUNTER",
- "http-endpoint-ref": "rest/app/gui/dashboard/sysinfo",
- "value-type": "INT",
- "json-query-method": "JSONPATH",
- "json-query-params": {
- "json-path": "$.system.mem_total"
- }
- },
- {
- "id": 2,
- "units": "%",
- "description": "Memory utilization of vrouter",
- "name": "Memory utilization",
- "numeric-constraints": {
- "max-value": 100,
- "min-value": 0
- },
- "group-tag": "Group1",
- "widget-type": "GAUGE",
- "http-endpoint-ref": "rest/app/gui/dashboard/sysinfo",
- "value-type": "DECIMAL",
- "json-query-method": "JSONPATH",
- "json-query-params": {
- "json-path": "$.system.mem"
- }
- },
- {
- "id": 3,
- "units": "%",
- "description": "CPU utilization (all) of vrouter",
- "name": "CPU utilization",
- "numeric-constraints": {
- "max-value": 100,
- "min-value": 0
- },
- "group-tag": "Group1",
- "widget-type": "GAUGE",
- "http-endpoint-ref": "rest/app/gui/dashboard/sysinfo",
- "value-type": "DECIMAL",
- "json-query-method": "JSONPATH",
- "json-query-params": {
- "json-path": "$.system.cpu[0].usage"
- }
- },
- {
- "id": 4,
- "units": "bytes",
- "description": "Incoming bytes at interface",
- "name": "Interface[dp0s4] Rx",
- "group-tag": "Group2",
- "widget-type": "COUNTER",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "value-type": "INT",
- "json-query-method": "OBJECTPATH",
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'dp0s4']['in']"
- }
- },
- {
- "id": 5,
- "units": "bytes",
- "description": "Outgoing bytes at interface",
- "name": "Interface[dp0s4] Tx",
- "group-tag": "Group2",
- "widget-type": "COUNTER",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "value-type": "INT",
- "json-query-method": "OBJECTPATH",
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'dp0s4']['out']"
- }
- },
- {
- "id": 6,
- "units": "bytes",
- "description": "Incoming bytes at interface",
- "name": "Interface[dp0s5] Rx",
- "group-tag": "Group3",
- "widget-type": "COUNTER",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "value-type": "INT",
- "json-query-method": "OBJECTPATH",
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'dp0s5']['in']"
- }
- },
- {
- "id": 7,
- "units": "bytes",
- "description": "Outgoing bytes at interface",
- "name": "Interface[dp0s5] Tx",
- "group-tag": "Group3",
- "widget-type": "COUNTER",
- "http-endpoint-ref": "rest/app/gui/dashboard/interfaces",
- "value-type": "INT",
- "json-query-method": "OBJECTPATH",
- "json-query-params": {
- "object-path": "$..interfaces[@.name is 'dp0s5']['out']"
- }
- }
- ],
- "http-endpoint": [
- {
- "username": "vyatta",
- "polling_interval_secs": 3,
- "password": "vyatta",
- "path": "rest/app/gui/dashboard/interfaces",
- "port": 80
- },
- {
- "username": "vyatta",
- "polling_interval_secs": 3,
- "password": "vyatta",
- "path": "rest/app/gui/dashboard/sysinfo",
- "port": 80
- }
- ]
- }
- ]
- },
- {
- "id": "GUID-3",
- "name": "RIFT.wareâ„¢ PNF Descriptors Catalog",
- "short-name": "rift.ware-pnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "pnfd",
- "meta": {
- "icon-svg": "data:image/svg+xml,<?xml version=\"1.0\" encoding=\"utf-8\"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"> <svg version=\"1.1\" id=\"Layer_4\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"100px\" height=\"100px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\"> <path d=\"M86.334,47.444V35.759H13.666v11.686h3.561v5.111h-3.561v11.686h72.668V52.556h-4.108v-5.111H86.334z M26.628,59.454h-5.051 v-4.941h5.051V59.454z M26.628,52.404h-5.051v-4.941h5.051V52.404z M26.628,45.486h-5.051v-4.941h5.051V45.486z M34.094,59.454 h-5.051v-4.941h5.051V59.454z M34.094,52.404h-5.051v-4.941h5.051V52.404z M34.094,45.486h-5.051v-4.941h5.051V45.486z M41.452,59.454h-5.051v-4.941h5.051V59.454z M41.452,52.404h-5.051v-4.941h5.051V52.404z M41.452,45.486h-5.051v-4.941h5.051 V45.486z M48.733,59.454h-5.051v-4.941h5.051V59.454z M48.733,52.404h-5.051v-4.941h5.051V52.404z M48.733,45.486h-5.051v-4.941 h5.051V45.486z M56.2,59.454h-5.051v-4.941H56.2V59.454z M56.2,52.404h-5.051v-4.941H56.2V52.404z M56.2,45.486h-5.051v-4.941H56.2 V45.486z M63.558,59.454h-5.05v-4.941h5.05V59.454z M63.558,52.404h-5.05v-4.941h5.05V52.404z M63.558,45.486h-5.05v-4.941h5.05 V45.486z M74.858,59.312h-6.521v-3.013h6.521V59.312z M71.572,50.854c-2.875,0-5.204-2.33-5.204-5.203s2.329-5.203,5.204-5.203 s5.204,2.33,5.204,5.203S74.446,50.854,71.572,50.854z M74.858,45.618c0,1.801-1.46,3.261-3.261,3.261 c-1.8,0-3.261-1.46-3.261-3.261s1.46-3.26,3.261-3.26C73.398,42.358,74.858,43.817,74.858,45.618z\"/> </svg>"
- },
- "descriptors": []
- }
-]
\ No newline at end of file
+++ /dev/null
-[
- {
- "id": "GUID-1",
- "name": "RIFT.wareâ„¢ NS Descriptors Catalog",
- "short-name": "rift.ware-nsd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "nsd",
- "descriptors": [
- {
- "id": "ba1dfbcc-626b-11e5-998d-6cb3113b406f",
- "name": "ping-pong-nsd",
- "short-name": "ping-pong-nsd",
- "vendor": "RIFT.io",
- "description": "Toy NS",
- "version": "1.0",
- "logo": "data:image/png;base64,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",
- "connection-point": [
- {
- "name": "ping-pong-nsd/cp0"
- },
- {
- "name": "ping-pong-nsd/cp1"
- }
- ],
- "vld": [
- {
- "id": "ba1c03a8-626b-11e5-998d-6cb3113b406f",
- "name": "ping-pong-vld",
- "short-name": "ping-pong-vld",
- "vendor": "RIFT.io",
- "description": "Toy VL",
- "version": "1.0",
- "type": "ELAN",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "ping-vnfd/cp1"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "pong-vnfd/cp1"
- }
- ],
- "provider-network": {
- "name": "physnet1",
- "overlay-type": "VLAN"
- }
- }
- ],
- "constituent-vnfd": [
- {
- "member-vnf-index": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f"
- },
- {
- "member-vnf-index": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f"
- }
- ],
- "vnffgd": [
- {
- "id": "e733efb1-6d52-4d97-839e-90c063239d6a",
- "name": "vnffgd-2",
- "short-name": "FG-1",
- "vendor": "",
- "description": "",
- "version": "",
- "rsp": [
- {
- "id": "d671ee1d-0076-40a4-b83d-ef5abf000322",
- "name": "rsp-1"
- }
- ],
- "classifier": [
- {
- "id": "387b9233-7fc3-4e69-9172-597d630a7345",
- "name": "classifier-2",
- "rsp-id-ref": "d671ee1d-0076-40a4-b83d-ef5abf000322",
- "member-vnf-index-ref": "",
- "vnfd-id-ref": "",
- "vnfd-connection-point-ref": "",
- "match-attributes": [
- {
- "id": "5d8ed8f9-f6b7-4edb-938a-7b14748c3e52",
- "ip-proto": "111",
- "source-ip-address": "222",
- "destination-ip-address": "333",
- "source-port": "444",
- "destination-port": "555"
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "id": "test1-626b-11e5-998d-6cb3113b406f",
- "name": "TEST ping-pong-nsd",
- "short-name": "test-ping-pong-nsd",
- "vendor": "RIFT.io",
- "description": "TEST NS",
- "version": "1.0",
- "meta": "{\"instance-ref-count\": 4}",
- "connection-point": [
- {
- "name": "ping-pong-nsd/cp0"
- },
- {
- "name": "ping-pong-nsd/cp1"
- }
- ],
- "vld": [
- {
- "id": "test1-ba1c03a8-626b-11e5-998d-6cb3113b406f",
- "name": "test1-ping-pong-vld",
- "short-name": "test1-ping-pong-vld",
- "vendor": "RIFT.io",
- "description": "test1 VL",
- "version": "1.0",
- "type": "ELAN",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "ping-vnfd/cp1"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "pong-vnfd/cp1"
- }
- ],
- "provider-network": {
- "name": "physnet1",
- "overlay-type": "VLAN"
- }
- }
- ],
- "constituent-vnfd": [
- {
- "member-vnf-index": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f"
- },
- {
- "member-vnf-index": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f"
- }
- ]
- }
- ]
- },
- {
- "id": "GUID-2",
- "name": "RIFT.wareâ„¢ VNF Descriptors Catalog",
- "short-name": "rift.ware-vnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "vnfd",
- "descriptors": [
- {
- "id": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "name": "ping-vnfd",
- "short-name": "ping-vnfd",
- "vendor": "RIFT.io",
- "description": "This is an example RIFT.ware VNF",
- "version": "1.0",
- "logo": "data:image/png;base64,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",
- "internal-vld": [
- {
- "id": "ba1478fe-626b-11e5-998d-6cb3113b406f",
- "name": "fabric",
- "short-name": "fabric",
- "description": "Virtual link for internal fabric",
- "type": "ELAN"
- }
- ],
- "connection-point": [
- {
- "name": "ping-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "ping-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "ba14a504-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "ba153744-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "ba15577e-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "ba153744-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "ba15577e-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "ping-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "ping-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- },
- {
- "id": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "name": "pong-vnfd",
- "short-name": "pong-vnfd",
- "vendor": "RIFT.io",
- "description": "This is an example RIFT.ware VNF",
- "version": "1.0",
- "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWIAAADzCAYAAAC8ERwoAAAABGdBTUEAALGPC/xhBQAAQABJREFUeAHtXQl8FEXWf9UzuTiVJIDgASwocihyBNZbP+9VvxUIeKwoCoTgsetJArg7q3Ltrux6EYIn3hCCfuuxuquCNwkgKiK6XniAkAPlzDXd9f1rQiCEyUz3THVPz0zV7weZ6Xr16r1/97yuevXqFSNVFAJxjkCPqx9L372z7gjStLZM19uKvzqnNowZbZnB0plGDZzzWq7xWs1gdbrXsy3N4FvbdD1i61f3X1AX5+or8RMAAZYAOigVkgSBLlc+0dbYvWcIZ0ZfIoZ/hH+8Lyc6ijhpEcLwCzH2A9p/QQz/iH3OvOyzozrSujUL8xoi5KmaKQQsIaAMsSW4FLGTCHSbVNxGr9ZP9BM7HQb3DBjJYcR5ihMyMMZqOfEPGbEyxvgHqW3avrnpiauqnehb9ZF8CChDnHz33LUaCxfDzt21JzKdTheGlzOWA8Ob6gqBGRnE2WoY5Vc1TXt165K8lTDWGIyrohCIHgFliKPHUHGIAoHc3CWeFca2czH6vApsLoYvNz0Kdk42/YExWgyHyHNVJVPWONmx6ivxEFCGOPHuaVxo1GVs0QDdHzC+v+OcusaF0K0IiZHxFxi935fWiT2+eWHenlbI1GWFQKsIKEPcKjSqQjYC3S4rzmqoNy6H4b0KI+DBsvnHnB9j2yBDkaalP1BZMn5LzOVRAsQNAsoQx82til9BM0cV94WL9Q44VHOdWmyLKVqM1UPPp70pbN7WxfmfxlQW1XlcIKAMcVzcpvgUsvu4RZl1u3fPggGeEEV4WXwq3yQ1o39rmueuypK8d5suqb8KgZYIKEPcEhH1PWoEfD6uPbCueBLcDzMxMuwUNcMEYICFvaeYlnGbclkkwM20QQVliG0ANZlZdh698ESD6w8g+uGEZMYhqO6MdsAg/2nAgGMfWOE7wx+URl1MSgSUIU7K2y5f6axrHmlP2+v+zjm7BjHA6rkKBTFj6zTGr6tcOuWdUGSqLnkQUD+Y5LnXtmmaPXLBqdjtsAgGuIdtnSQgY4S9Pamlem+reHbi1gRUT6lkAQFliC2ApUgPRKD3Da+k/bJ5491YjLs5aRfjDoTE8je4Kio50y6rXjr5DcuNVYOEQUAZ4oS5lc4qkjW2eDBv0J9Cr8c623MC9saYDlfFHytK8merbdMJeH9NqKQMsQmQFMl+BLAIx7JHF93Kid3tmjwQ+8WL608YHb/Yrn3GuI2Pj/8lrhVRwltGQBliy5AlbwORF2K5Xr0AYWkTkhcFezWHMf6Gad5RlSWTPrK3J8XdTQgoQ+ymu+FiWbJzl7TjRvUSjIjPd7GYCSEa3BO1+DelcunkxxJCIaVEWAQ8YSkUQdIjcHhuUXe/XvMGRsInJz0YzgDgxQvvf9v0uzClZsPLbzrTpeollggoQxxL9OOg7+zchYMaDL4coWl94kDcRhGR6wFT/G349xMSuyNdJduOihqcxKFjCihO8vDGiS6ntuv3m4w9G15+PU7kVWJGiIByTUQIXDI06zJ2/gi9gf0bI+H2rtK30aB+hbC5T5GafZ2msXUej2eDkeqvbn/IUdvDnUMnNp9o242eOtN7IhlRT8a13gbnw3BU0iA3LkAyjd1TtTT/VlfdAyWMVASUIZYKZ+Iw65pblIOR8H8QH9zBDVphdPsJAjZe8miel9u0S/kQkQW1suUScdE7tnw/2DD4CBj5c8H/DNcYZsburS7N/4NsnRU/dyCgDLE77oOrpMgatWAo58Z/INQhMRTMj4fzNWLaS6kpqS9vfu6aH5yWpfcVT3XYXrPrfMwIfkuMX4g8yu2clqF5fxrTHqxYmneDijVujkpifFaGODHuozQtAhs1/PrrGAkfKo2pBUbw6VZwjS3MYHzBjyX5myw0tZVUGOWfa3dciTQak+EvH2BrZyGYA5/iytLJ+coYhwApDquUIY7Dm2aXyIeNfPioBmooxwiws119tMqXURnW0R7oqnVasr5kTH2rdC6oyB49/xS4SW4RkQ2xEAdumjurSqf8KRZ9qz7tQUAZYntwjTuue0d872Mk3N9R4ZGJzKOxWypKJgtXSFyVzLELh5Ffvwt+ZOFPdrBgiZJpI6tL816Q0emRl88/tLaW9TMY748R/2GIK2nfuDbAsT7AxBpBB7hlRITVTrhoduIa/uEzR1pPjX/LmOdzD6V8saXkmkoZ8iQjD2WIk/Gut9D5dN9y77p1G17GD+ucFlW2fcUUeyt+1H88Q8t6pKRkjG5bRw4wzs4tPpkb+j9grIY40F2gC+C3MyXFO/ynxRM3WOmza+6j2Q1GPV4ciBIh3o9x1h8zoMOs8AhB+wsiT77QOFuDUfubKW3brNj0xFXVIehV1V4ElCFWjwJljZpfBCMC36cDRZznxvg9rEPa7KpHrxUjq4Qoge3fRvWNMG53Acu2TigFP/GXHTRt2DcleSJOOmgRuUGyLn1oKGvQL+AssCtyGF64IpbagQIzT/QJjPObCDH812nU6c14f+naBZoyxHYhGyd8s0bPn8ANesgJcWE4viCvdnnV4rwPnegvFn0E/OysYT4M4AVO9A9MX7l+4OSLfD5mNO8ve9SCPsgRfT2cGJfGxOffXJi9nzGK/wkv4ac1SnmyonTiJ0FIkvaSMsRJe+uJuowtGqD7eTlGcBl2w4Cp6iOeNu1+v/XJcbvt7ssN/LNGFd2EWOS58B+n2C4PYzMRYzxDjH47jy4+H6GHN8CJLNwPrv19i7hwGOaH0rTMR34sGVNjO0Yu78C1N8rluMW9eF2ufKKtvmf3avx4+9qqDKOfNU2bVFkyeamt/biQeefcBb/Wdb4EBvFwe8UTi3f0IP4XMc+/srcvudxhjBGuyOfBVTU/kVxVVlFShtgqYglCnzly/iKoMs5OdfAj+1pL0c6tWJz3tZ39uJl3t8uKs+rr9KUYHZ/mZjljLhte2DBG93fQPPNC+bxjLqdNAihDbBOwbmabNXL+5TAMT9spI6aeazxt2AVbn8yvsLOfeODd4+rH0nftrEEKUbooHuSNpYx4eW/Fs3lb9bL8J2Mph9N9K0PsNOIx7u/w3Ic71Rr1n8MoZNsnCvuP5skcWVkyZpd9fcQXZxEi+Oknnz8O18EV8SV5bKTFIuTbHi9dt3Vx/qexkcDZXpUhdhbvmPeGULWHYYSvtUsQ/ICePSpTu2rNwrwGu/qIV76BxbRRCx5ANMOUeNXBYbn9yDw376hO2oxEf56UIXb4yYpld2JrrmGwt+xaTYc74kVs0LhExYqGvsuZo4rEeX/TQ1Op2iYEYKRWeTwpY7eWTPy26Vqi/RXbFlVJAgSGTCpO+XkPvQQjbE8eCeSKSMv0XFT25FWuzhPhhlstTt1o2/9Cho0Vp7tBnjiQoTtmEVe373/Rf3d/9pKlnYRxoFtARId22MQLHIkr5/fVRj5GYf3s0BDuiC/TUj0Xbl6Yt8cO/onIE4nefTgxZFEi6maLTpx31A2jFNE+94ldjLb0EUOmyhDHEHynuj48d0kG/MIFdvQnVrk9xM/b/GxelR38E5lnj0xtIl5iKxJZRxt0u2G5UfW8eKZt4B0zlsoQxwx65zqu5VV5EhO77Bcc5wwha8GlW0unfLP/ovpkFgGxAJWaquXiZfaT2TaKDs41hAHWGFWvi6xxiYKHMsSJcidb0SMwcuA0tZXq6C5zNgdT7BXRMUnu1mImgZ2HVyO1JMJnVTGNAKcTd9exd7tf8ZDNuxZNSxQVIRYkVYkZAtPWdSG95hhiBrYZs16QoyPe9ziOhzXmg2XiaB5xcCdDNi++G6kDRJrBXzAk+AUHEc+iuUPXhZMdxx7djNwD94Sjs1yPxbmBA489eYXvDL/ltqrBQQggN8U8hLfddFCFuhAGAbaRpaaeVPXctZvDELq6WhliJ25P8eoU+oaGE/OfAqN6LAzpMfiLfxyGN5LCdlNWehe67fiQCXQaNxFs+A5DrW6R9NJaG0yld3oYH6RcEq0hZP363t136zHtFi9kVSwhwD5tm85P/f6ZKT9bauYiYmWI7bgZS7iHPi4/AR7UMwP/GJ0C49tGWleMPUFzhl8Vjl/2yAVjDTKeC0dntR5B9pPhkii22k7Rh0YAs5eLMHv5Z2gqVRsMASx6vpeuZZ4dr5nclCEOdlcjueZbn0q1u36DUe4VcCGcFflo10TnzHM2zRn2ejhKTHffxXT3pHB0luoZrT9TyzpebdqwhJppYtyzl3HPLjDdwC5CxrYh0PlHzKZ24Xnejc06daIrfE/B9V8h3VtPDC5cFUYGY/zSgIF9L4lHd5nXrvuYNHynrxxBOl1JNTsvhc6dGvXG42pXYbSJ0oe+GY5957ELjtcbDLlGGJ1qjG5TRjgc+pHXw+3zB2QRPgtGLjVyLtZawsgiJwh7B1b2DZ7iebujwf8bLgNa/9wlqdW0rbfBqS8noy92bA5ljJ8H10rMwsrwArvw03Ub5kL7W6whEHtqNSKO5B40LrJNxEI3jlfnR0fCIvI2bB7NHR72QUNOiWL8KCZF3k+Qloxery6dcnaQGnVJIgLYAn0vniscu2RfwejxcxjfZzXO3zgiSyuXkcshO3dJO65XXYyNKmMg/3kYjqTZp0HrnJmH/reqZEpcuXiUIW79fh5cM738CNL57ZigTcDoIf1gAgeuaJ6Tafaw90L11Cu3uOMOQ98EQyzv7DTEDHu82uCKxZM/DtW3qoseAXHAp1+v+xqx34iYkVkCCeT/jfPj/lGxJO81GGPbpm7iVPDtNTtHYnR/I0aqJ8jUIiwv5DZO5akn/LRswndhaV1CoAyxmRtRsKY3cb/YmYZE6g4cfdOqTGwLZeR0pxbnk7UkxyLdtVike7jl9ai+M1qG0fCoqHioxqYRyBpZ9CcYYp/pBiEIYXBrMXBYhFOf77V66nMItqarcHzTOQY37oVBtvc0mOYSIbyyR6bnFBkj/eZs7fqsNnSEQraw7GgqKHuGeAOmcRypI2NphCEooxfCGWGhDk7rlW4w4Rv+RyioVJ1cBA7JaP93TPG3RcsVRvgNzasNqFqWPzkWRljIX7E0799dtMzj4Yu+Ezo5kxSK0/Dvqow7osXPqfZqRBwM6Xk/ZFDFZpGm8DYnF02CiXLANY/nHJo17D8HXGvxRbglthtGhUy58QNaU1U6ZWiLrtRXmxHIHD1/KsIf50TYTTVenrdUlk5ZFGF7W5p1H7cos273nr9jdHylLR00YwrjVkcp3uOqFk/6b7PLrvyoRsQtb8vU8ouoYtNnMGTTZRqzlt1E8L2GUtu8Fa7ddoNfJFtuTpoaDYcD3oZ6b0a7BxBFUWGVNUbBz6R40o91mxEWemx64qrqqtL8cYxpF9udY0MsFvIG/QGr+MWCXhniJtQL1vaAGwIrrQio59Sj6bJ7/rL3ydc/7LSOcY5YZnkFP5atPTLZYnkcFSezCGx9ctxu0vhss/S4Vzux2eYyGLortpRcU2m2XSzoqkonv9gmnfeHv83m07352WJjUyx0tNKnMsQCrakrryNeJ0bBF1kBz2HasLHDAXkYP12mXBhdLY2XBQ+ZeruFV7t2GQvgV90UTh4Y4Q+ZJ2UwdjxK30kZru9I68WWZBjkMZD9rkh5mGmHOOd5IrTODG2saJLbEE9d3ZGmlpUAfDF9iVkguqmbr9HycHRZufOPQcha13B0Vuo5Z6Wm6H3cCyxfooJVvUzRKyJTCGx8fHwtCGeGIb6/iyfz15UlE74KQ+e6arzoORYS/4gMdLbFTcNF0c3Qq6e4TvlmAiWvIZ5eNpSY/iFiDEY3w8OdH8XOp7ScVWGFM+i0sDQWCLBIV3mG59C3TTWpXYVIDeEW0VfDIOOvKrIQQAJ5hCKyjQfxQ7wsMc8l1cum3Li+ZExYt9VB7V10oXLp5PsRFXS9XSJh4e5mNyeTT05DXFh+I7YlvwdXRLyM3j5G2Jo//EPKTg5PY4niefPbmY0bApw5iWTdL1LByjvJx5Pz+bIEcXhi4RpCBESL6TtbKTYtVJfmvRCeQ3xQIE79QbhhCvHSwSBWbkFMdpc6vm2CXK7yuCXXD+W+L9OwILeEDENsIXVsL3/0t4utM8MDbgmpO5gwIjb3Iy9YdQIWOJvltcB+Kk53UE35K+Rb2cGM7IomNAKna5mLMI3/UhgpLMj9ZeBxfU+Jp51jobXbX1tdmi/C9UwvUO5vGf6TYfDbRY6M8JTOUySPIRb+4M3bXoMBznUe5ih75PzTcBx63/AK9vVL3LmELc3tmef9cP0G6pnY7BKs8HOplq0g38f2nBwdrMsEvSZmJpyx2zSN/wYLclPjMcOY2Vtzpifzj3jprDBLb56OH17Bt11hnt45yuQwxNNWHwZ/8FswwlJ9qA7eprAj4l8qfugPeeRl0+Pss3AZuPbpz43WfcIiz0BNzbskwgNViQqB6qWT/69y6ZR/RcUkDhqLlw7T0i/DjGyLbHGxkWS8bJ4y+CW+IZ6xtg/puvAHHy8DMId56FjA+Jky2oYdEbMG4ziZsmEx29xouHBlPxNx130QHvgeTVs1QKaMilfiIlBZMn4LJ0++bA3hvju5S+5DPWXzjZZfYhtiERnhr0emMu464BtvHKvC4sQ78PsVk6b9nsQWZo9nIHm1I6nTIR1wCkcKzRnRCRs5toW70Qaj3uForNTDE/mBOXp2oTk6HNdk6G/TtNWDTdIrsiRHQCxEwkUheQbAmW7otm+vtnrr5E1lrfZsN/3U1QPJryMvAz/E7q4s8K+A4X0DMr1O3Ps6Dv/8PmRbC2cvIzynp8ylZo+HlYeUramS8/ObPob9KyIqDP1VKixDKs/hrt//H1YfRWA7AkhYdIPRoK/Hs401EFnFEIb4TlncZPBJzBFxwB/pf9UVRpjRRhjfP2PUOwgj3K74dzlGuY+GNcIW7y6mXBJH/Yynt037xpQInIaYomsi4jwbbqJ/0/SPujddUn8VAq0hULE472scC3Nva/WRXMdvpXeXUcXDI2lrV5vEGxEXfogfev1rAKybXaCF54tTlhlhR5r2GM0e+hYMceNgdW74lpFSYETcQ9aIGLFnP+3d0RVanOkfHgXXT/vQREFqOaFd3WvkW3+qGbdLEA7mLmFbIP3li3a0o7YDFms7IJNZCmn+neT17KROHXfSjX0C57CZY6aoYoUAY+l/J6r5vcxRscH1s6FPWax0atkvfr8JVHzr21HtzhVYPLI2SpMGgfD58nk4u+NB8o3YIY1tGEbiKPadO2r3YAYg5X6CybtVy6acEqZb5OgQO+j4S2HpWiVgKymj8xnk6ym28UZWAqemkIgYwT/eD//E58PxDCB+mSG/QChMWAPqd4J+I2g/x+cvyKN9jlNYvqDunT5XhhrIuKQgUf4CbMrIkyUOIjKWI7XrmbL4RcsncUbEgVOUdz4fEyPMaCtGwH+jTulFdNvxu6O9KVbb76o1OoU2ONY4YuRhzi3BaADwjqLwEVS7tQgMxptmUri6L3EdfmmcdIzk3+Q3QozIwwkXSPQP7MShr3xwQAbdaBRlc3UtXjRY6KU3SfO8QScMWU1jmN5Yqf53GgEtRfur7tcn4p7LcadyOlEMYEzN/BxQNnEMce3Ov+MmneUAZvu7YIQjaLSZ1Pmwe+jmI2r2Vzj7iTU0tA1ncixJxNgPpug5P8YUXSgiTldjO/QH8JsvDEpWvDqFNnJMI2F4DfHP3zMoneyLgTMJ+f+A7f+gz5n0YfkOZOl7HW6mpyi93ctmUpLKFimZ+QlfMQ7EfQvP+RkycACftJ27a08EL3NZDWV0GoJHYhjigrJcLAA5m12JMSwGatfR3GHmRo8hbkLUVZrWlppGclEzwySdkYm8FqIjhrwSEl4BnN1H08s+pJnDV+8T31felWoxFf1Gn4w+uu67HqsPnMPVQSPxnI2kmp3b8PJ4DqGGi2jmMHPRJbGSO6H6Zc/iWZBiiAOwGCRcE8oQS3lGxMGe5Ed2KocKYz+hp98j+qHEoR7DdsN0vW1YInsIOsphy9PIj3SbhWXCPXA0bPsNVCOy4sX4jMDWlesEGacgPHIKRsnr8OaaTYNzlijXReuAyahJ11JKa4yGB/EyTJHBD4vSUjdBRSOTHH9LNBJE01Yk8SH/EtwYMVqxvzD2b2Ipx7vJCAeUFiPiWBQmE3d+JKIavob74X3cz8tcbIRbIj0Q8j5Da8o2UGH5eBKuFFVsQeDHkgnbcAIN4vBlFdZXFqdo+cS3Id60DX5h5DKwuzBmENP+SOk559PswZV2d2eVv0FGbDJKBSITrEobip5LGmGH6sO2uj7I6vcofev/Eot842zrJdkZazgyTFJB3omeQyYVu+LFGb+GuLDstxg15Uu6J6HYVODcsLNoTs5dZo6yD8XIrjqNE8KwYlAYtYlBr+7uUsRIE1+EdKtv0R3l/d0tbPxJhy3PqyRK7d1YTb+SyC9iVvFpiEW8sEH3R6y16YbsW7giTqJZI5abbhIDQuxbiE3EBrbtx0Dd+OiS81OpwfgIBvkv9NePY+M6ig+kLEmZmpEh0xBjvVlC5I8lDYITx6chrt3pw6jj8OAqSbrK6BOsip9Ec4Z8JYmjbWywZQGbOSQWw2ysJlc700LBzpGWlPPbqLpmPRYifx2KVNWZQ2DTE1dVI6pHWqSSxjlmMLEv8WeIRTIfEbVgb3mX0tNOo1lDRYSE64tXk2yIiYXYJNEMDsY2N/umPraGgHBXcP42Fa68FX9Za2TqujkEEDApzRCjR3PPujnRIqaKL0MceIj98xE6ZF/8M0P6xwzvueQ74ZeIUXW4IfK2SnVN4Phxk4tm/FuHVY3f7sQza9BfEVnxT+TYELv5VIkYAbY94qYHNeTKEB+ESbgL01ZdDZKTw5FFUb8Bu6YuJN9QuVP9KAQy0zSjrfdnM3SmaRgzFw7oSfUhhrbaNF9FCI8av5Bqdq1VSfKjehjkGWJucvYXlbjhG8fPiFgseHBuX/4yRptw0tB5tmYDC38/IqLAfvlfYBClRU4gVjPLlCAzB3+H3YWXglYt2pkCrIlIxEwjSX7hqpOarqi/5hGAb0eaIYajSI2IzUMPym21eTDE2ZbamCbGVEfznCc7R7Dp7iUQItFmlQQ2e1kw82FXc4a9jnyx0+T1nSScGpPk/4emll+UJBpLUxOHqEpMrKVcE+ZvjO/bdPiFbzXfwCKlxifQrGGfWmzlLnLGK2UJhHSDWdm5j5nP7zB7+F8QB7RUVv9JxCeDyHieCsqvTiKdo1YV26uQ3lRWYfatN1kQMT5cE7WV12A0fJgFvSyQsiKaPSIRjIhUXy3j9db24We0Gw9jvN4C8Iq0EQEPnu1HEW+Mbd2qmEHA/GKyGW5mQzVN8YqYyP2GWOzd53xqxBqGasjYx0gAflMoErfXZf2u+LCsUUVPIKDkdJmy6qSfYImfr/8u7EAcA2MszVdtqf+4JoanktMiLOCdHddqOCQ84ogPldUVjk06H7+f+b2veMrcArWsjlvwcb8h/tZ/JZaaj2whd/RfGduDZO5j4vUUht43vJKWOaqogGr0/2LPvMBIanwqTnG2vgFh9ojPgOm86G9OMnJARjFDXwY3xbBk1N6izkdYpA9BzrE2zfN/rt35WVbu/ItDENpaJfXHK11SETdcUPYF+PaRzpvRNCQjny2drwMMu+YW5fgNWoQHyLbsUYzY1qpl+eb9xE16i+iW6toNmMVI/LE0MbfyN3AMktgVuRERJZUYcWKkzjV8PgSfD8ELA6d7c8TzsiMgq4sGJDhuKyX1RLr7hC+taJtMtJmj5m/DPZQ2Km6OHUbbJVpqyg0Vz07c2vy63Z/dbYgLy05BWsS35YPAvqCMdsfF2ykL/XOXpG7Rq/8EIzIVxsMjH5cDOWpMO7qydLJ1g1BYPhKZyEoP5Gb7t80wsm9hYlBGXqOMumSuNTXbEXlLGnYfhwC8QcSNQeDxP8C2l+3Shu5gHXXpPjyWp76EFi92tTje6JCdO2rkxs23VIfRz3hj31pZmv9oyyq7vrtixbBV5TiNa7UumgqmXR9vRjh71II+W4xqGDeO/LfRKG+hLadTQW3dEM/OWYaE6f9C2/Mt9GadNBD7jdOymWcJtqO/DyNqHRnh2yYSqRX3p1ecWnY8QvLEy+QSXB9oXbCoWwykis33gcvEqDklGIPdu+sH2K4SRtsG8UdwYOkVzJN+RWXJ+C129+neEbEIWaut2IrRiWQnOltCc4ePtRtYmfwzc4vOxMxgqV3TsVZlZWxRdWn+1a3Wh6qYsfpX5Pd/CpnTQ5FZrmOsHm2exaygmGblrIzI+FrpdHrZUJzqjBwRNBrNbJ+FHCgauwLP6jMHXkvub9mjF9xgGIZ4STlTGPveQ96LKkonfmJnhy7yjbVQs77qt9KNsEjwnpI6o0VPrv6aNbooD4bgNceNMFDBUr4YEUdW7h76NRj8LbLGwVqxOvC7l9LZUTgh5WqaPfwD242wEEOcozdnxKWUwvpglHw/ZKgNJp0t1xgvphmrjrGFd5wyhRG2Fs0TrZ6cH2lQw3v4HV4YLatQ7d1riHVdvluC8yXxsgiSm7vEg6iIe7nBF+AGxsSFhNCent2veOjwUA9QyLo0JLnBnsiQNGYqxUGt3pRjYBD/QL4c26eJQUW6e/i3MP43YlDcHy+Al4LSyL7IsXGhAad+qIxt+5DFYpqzhhg943fQDgvj/5c1asHN+wSR/MGdrglxgm+N8SN0lTgVhP/Q4x1Es4bYOsWQcX965RZ33G4Yi/EEnCuDXzQ88IBcUbVsSuTT46nlBdg9Fll0CmPfkKZNx67H56LRwZa2hWUX4v4swEyluy38mzNldC1eQo82v5SMnwOL1Ub1LuCeEiv9cULIQ0dlatetWZjXIFMGd46Iaw0RzyfRCIMbo5fiwQh3GTW/13Zd/8ANRjjwoDE6JaoHLitNnKRSYZkHo/nUudsAVxphoczs4S9hZHw8/r1oWTerDTibq1JnEm3Vfh4QSyMsbhtGxhO/qzJePfLy+VLD59xpiInOtPqshqVngWlyWLJYEgg3gJ/YcshwbCzlaN43Jxa5n1gwuu343TBWc5rzDPmZ0S4c1HopRoDXuT58a/bwavirL8ao/ffQUSwi2lSQDa9mp3kMbZIi1mxZgwMHBZtQErlYztxdy17tcuUTbU2QmyJxnyEW/jBOZ5iS3iyRmOLOHv6OWfJY0B2e+3Cn2lo/FuVs2EUYhUK4GfVRn3Sb3rkIImwOKwajz+ELzsFBrYvD0rqJYHbOfTDE52DaJTErWEsF2QQqWDmk5dVk+o49cBpcA84tloYEl+f49+xaFvVvY28f7jPE01eLFIydQ2JgtZKxp6w2cZJevFlrjPpXYIT7Odlvq30hZAdP/BxvChtYVTrlhKj9Yb6e+PFod7faX6ACYYXp7YfR3UM2hKZzae3snLdgiC+wzxiLLezsDpdq74hYVaX5D6VrKd2ZRjehw9g/J5zOgZsCeV6iTy+Am+uyMrUc59EZ/5AqFUvp49ZDQMUbdWO18SKMcGwX5rCbCA9DCQYdT1eU5r2DkYf1zRGhbppvfSrV7vwvZjtHHUiGrcgavx0Z8OTe8wM7ce7b1HK4cvgr+Cdt2rpfeHFPPMcjb/a6/deS91P26PmnIKJhEl5Qo2EM02OIxP3Vy6Ygoiby4r4RMTPk+ofFGXQuPYlZvEnFGzV2RhipfRi9iJ1pl3TVsrpi9JtXuWzy29KNsHg+ff2FD/XOFo/qZvhXz0gYIyyUm5vzNtwUYvOH3kJXCV8x8mL+6RIYJQSLyqVT3sEze+X+UTL7NEaK3ZA9cn5U+xPcNSL2IflKTTniTrnJwytNwK6xqfAP/8UEpeMkiBO+H0b4esc7bjxW6ekUjf11S8nkzxzr38e9VFuGhEDUG1EsK0hreynNGuhochXHdC0ouwn3dp70/sSmJK/Wj+4eJpJhqdICAWRQG8J1ug4vw98Bf0fD3DCoycOLYWELkUx9dZchLljTm3iD9dwGoVRlmlj8WRWKJBZ1yIE6ESPiiG5apPLiQdmFadxDaeneeZuenijitJ0vU8suR6fH05CcaTSG2TBqdF6loD0Kv2FB+X8wqPifoPXRXGRsAaI18qNhkehts655pD3f0XA7M/hkceKMI/oypns0dkpFyeQPrPbnLkMsguQNLjEuE2fRDcnJdNsPPjv34d7cqP8I/i0b/IhBHwG/xuiejDSa+/0zU+zNXBW0+yS9OKOsJ5Jvwp8r2V8Mfz51yzzMVHa5JIW+SW2xOWqHoc/Ab+0PuOZtum7XX/iOvmaezEGVJWMw6DFf3OUj5uwY86KboGT0ttuMsNi6bOgNTzpmhBmtZ0z7dWXplAJlhE08MzJJxLZoRvIjHUQu3p+qL5IpaqLy+qYkbzvcBbchCigHRvJju/XE6PtXXK/+u9V+XGaIDcmGmL9pFRC76Zcb27DYwkfY3Q98ZDpO45qNRbjBVaWTV9ven+ogOALpOfeiojx4ZRRXORsXReuka4rcwmuPytKGIcf2g3YrD2M8AXkpLL0o3eWaKChDYu8oMn4dhLB2WmAV+6DrsbmQOXbhMGrwv4/e7Z0iiVEwaVcrAxyb+3xQr1NXI6exvgYvYHmLR4ywCTO1G80eXHlQf+pCSASyRxVdg/WZ+YgFTAtJGEUlRt8VnrY0cOuT+RVm2LhsRCz56B9PhmtWlrtNKm7DGvxP4abYaoSxIPdC+/YZQ5URNvP4O0Qj4n4Zf0xqbxzPEa+/RCrPJGEmTt7werB1n7FNdqmMUXFnfQ9/2Cx/9xhi31qcISZzRx0W6lwUGlVfrd+DN/DRZm9MJHR4Cz98hpY1euPj412yDTQSLRK0jSd1FiJWGqRqx3GskyoRIbClJL+cpaTCb0z/jYiBiUZYB7ooa/T8CSZI4UV0S6nTu8oVhbtmNCwO+0Q0U55c/VpyY7Nw2OfEkpIxiRsS1lLlePo+c/B30kfFDDlZJGyvjScYZcpa9dy1myk17QxsYJIbMttMSNyeuWYytbnHEHOjfTP5o//IcECoSwpOXEZgf/T70YOrE8iE8vvqZflYBFTF1QhoKXIXijjPpukfwv+sSqQIBIxxSurpthljzjvtqaOwu+7cY4iJyzXEnH6K9ObIbIf98LlYGDhJJs/mvDTGx8Pn5dwZXs07V5+tISAOJWAk92AC3nCmNSEUdUsEhDFO1zC7YPRdyzoZ35FK9vrOY4t/FYqXewwxl2yIie0MpbgTdSKhD/xEtuWRFRnSEB+8yAldVB+SEGD0pCROjWwMdppUfknK7MeS/E0asUuw2F0jHQLOU40G4+5QfN1jiEmTOyImirkh/n4b/x0Mca9QNyDSOiwyvHzdwMnKHREpgLFqp6U/i0U7rNtKKoz6SeKU9GxErDEiKSbaAQRyKY/JHrWgT2u83WOIGXVoTciIrjMjpobYhwRGcElMjUj2MI3gz/r8kIwOl/t8SACjSnwhMHPQJthhEUsuqfBeVLxaXnyyJKnilU3V0vyn8fuyvDMurL4cyV7JaNUeuMgQ83ZhlbFEEFvXxIOfFo2CIT7GksjmiH9BmNrFXz39ux3myBWV+xBg/5Imk4gn/gHGWBVpCAwY2Pd2zFqk74aEr/jK1k5Fd48hNliqNCQFI7HFN4YFYSu4mfIL8kaMqyydbFu4jXyJFceDEdDeO/haFFca9L5RtFZNWyCwwneG35PCJuGyv0VVdF/hK66v9V8XjIl7DLFsJznCRoIp7MS1QE5UzofK7kvsmsOOuRdl81X8HEZAkxxaqUlOluUwHG7srmLx5I9FxkLZsmHH3dWn+5YftLvWPYaY0x6pSjOKmSEmXb7DX6zm4gw5cVaXKvGOwMwhWzBjq5emBuedpfFSjPYhkKZl/Rm/u2/2XZDwAYv3XT/79IuLW7JyjyGWPSI2+KEtlXXi+94jtkXyc7kFO3S2PJe/US5TxS0mCDSeByjzZBLZEUcxgcVtnf5YMgahbJrIYyy1GIZxUGSGewyxlhgjYmPPrtGYfkj9YeCt/G27DulzpT4NillsEeBc4oYjJvV5iy0w7upduAIRRbFWplQ4KPLsbpcVH3BqiHsMsUFyowA4i4lrAiujo2XeNMGLM+0mlchHNqox5sekPu/KENt4O2EkZ0plz7mnod44wD3hHkNMhty8qsyhc6qa3SFxThaSsJzd7FLUHxGq9mH10sn/FzUjxcBlCDCZK/JyY/BdhlSsxdm6dPIy+PQ/kykHQltHNufnHkPs0UwlUG4ufOjPbGDoevm17JeGC7BlKk0qZ0YLpPJTzNyBACd54ZWc2rhDqcSUAq4J/KzZbMnanRUYuO1l6h5DnJItd0TMeSbNWB0y0YZkYOFC4P8rlSemr542bZ+RylMxcwcCTOKBosyuzH7ugMoNUmRonUoxO5W2WzcwYNvpP7VJN/cYYl/PWmQ/snTyaZMSrf41+LBW6+yo4HS6TLYaZ09tfXLcbpk8FS+3IMA6SpOEsy40vfwIafwUo4MQEBEUWIR//qCKaC4Y/LSm5u4wxL6VHahg5d+IU0aTYFL+GkaOFD4mmGSNXXg0btRhJkhNkzDmLTZNrAjjCwFO4kQaSYUfTrrxGRWU3URLuEcSU8WmBQIexqTOTuEndokhFqcLFKy8BonnvoQRvgV6y32IuIMjYr++D9QW9y+yr4zeryid+ElkjVUrVyMgnnsm96WN3087LBTPozXlq2n6KscGIK7GWbJwp2mZr+PGSVzL4oOzc5cEcuzEbkRcuLIf3uAr8QA9Arzs2RnE2GDnRggyT58OPEFS376Sn0nFLhoE/rz2MDz36dGwaL0tH4TR8QcY4DxIU1fLc3+03mHS1IhjyDDrfVmiwl6mVx8v+DlviJEeEgb4NjLYh+jf3jc3523oozUBRSWCF5QV4oel9qNpqa8F7UhdjH8EaoxetirB8RvjNIVI/xwG+Rxb+0oy5hrJTdhkaDRAQOisIS5Y24Nqyt/BFOov2KYgN8yrtQeC71+ZbI0k2uviJA7wkJYBS+xvryyZ8FW0cqn2LkVAM451RjKOA3mRcnNq2TR1yKgcxL0pnvflcGrkgoCXQJitc4a4cBXObasvhwE+UaYiYXlxti9EJCxthAQ//gwjzLkwxnIKZ2/KYaS4uBIBg5/gmFxidEx8JhWWP09iUVyVqBDY/NyEzxHd9XNUTJo1hqvDQUNcWHYVceNNGKvsZjI49fFkuzvSDR6YXkjrh7E10ngpRu5DgPHBjgvFEeNey1bRHeX9He87gToUmzuwYPeBLJUQOdFT8LJ3RCz8wVPL5pLBH4cRTpUlvCU+wvjPWGPrVBD7bnpYkikMMfdqyhCHwShuq0V4GafjYiI/50dTg7GSppWPiUn/CdMp/1yiKoeJY9XsM8S+9e2otux5TItulyh0ZKx0m/3EjLpHJliwVoy3z0hZF6xGXUsABNaWHQMt5MbLW4FFhLnp/DkqLMuz0kzRNkdA29T8W5SfvQ+uf7yzPYZ46uojqXbne3jzXxylkHKaG2SrnxiHAkozxIz4TyrTmpzb7kouXHPOP9wqAJhdG1SkjHGrAIWswAxYpiGGmazpLt8QCyNMujDCsZl+BYOQ0SnBLku7xuWNiBEG9700uRQj9yHAY+AfDoqCMsZBYTFz0cOkGmKExHWSa4h9q5HsWP833BGHm9HHMRocT0LT1nWxrT9GmbJ4I3RNGWJZYLqRDyNHE1GFhmCfMb42NJ2qbY6AZuibm3+P9rNBRoY8QxzwCeuvwAgLH5gLCiYQjN5DHtF8ymjXlWYN3GqbUJzJ9Pltt01OxTj2CKTnjCZNG4X43tfwbBqxFwjGmNNCKlwp/UCD2OtmjwR6hgdHKMkrTNcyDjpNNCL2vvWp8Ak/jxvqbLazYMKKBM6cniaW+gzNOWFjMBLZ1xALKM0QIz3eHtnyKX4uQsAXSAi/DBItI7HBSaufiOd1PKKKpCaMsqRx4068J2h62UaaOXy1pbaKWAICXIIhFiFqteVP4WE6S4JEEbJgOBWXP42cQU/TnGFrI2QScTOGVXAYUDmFcWWI5SDpfi6NA4Xp5ON/orpVF8MY5+FfrLYkZ5AfeRQK1g53agDj/hsUXMI0rnlqJeb1F71EPyKuLX8QD09ucJFtvCqmdZyeQyR0CaXlvESNIw0bO2ydNQ4D9AKD1glUjUIgFALNR8nT1hxHekMhyMVvSm42wlAyNNZ1Jqp7Ci+G02P5ewovZmwp9FreUaYEzEPbozPEhWU3Y7PGZJlCheXV6FdbTMxzJ80ZKjOwOmzXrRPwHag7tPV68zXwbEvhY75HRekqBGYNEalPL8PpMjPI778dx75chXWXNMdk5HQSZrjIBUM3O9ZnnHWkM38nDAKlFZ1oe+SLdeLNbdAsadKYYcTY8zDA/WnO8MtptluMMATnTN4CG2cSE4abAVXRuBKBu4d+TXNG5FFGSi9sgP0HFvfqHJOT85to2qrzHesvzjoyEG4mU2SslkZoiO/7Mg3Tp6cce1Mz2khMOx8GeKSrDPDeu4Ht57/IuzFcGWJ5YMY/J9/gzTQ35yYoMhxRQM5l5NP1h8m3Vj2LQZ4gjF6lGmJN8/wS2Yh40zYxEg5kDQoip8RLIgSNPUDp7QfSnJxXJTKWy4qTtBExgomUa0Lu3UkMbnOHf0ydu2OTFJvnUNhbN6qtm5kY4MnVghtcqiH2apG4JgrKzoRa4g1td6nAKPhMjIJvIF9/uYeKSpdcpmuCukkXTzFMDARuPqKG5g6/BSPj02GMf7BfKTaZpq0ebH8/8dUDMrAFMqbJkvqw9lYNceNU5XHhFJUlRFA+DOn6MmgIQtFWBK132UXEEUt0TdAR3cctkrZTz2VQKXFkIDB7+DuU3m4QDPLrMti1ykPEF+u6iIqy9/feqgDurEDqymNlSYadtLvWLMxrsOaaqK2fj5tyhCwhgvJh9BR163QK+Ub8GLTenReluSaEerV7aga5U00llWsQ8PXfRj29F8AYP26vTHwE0mZeY28fccddmiFG9MUGob15Q1xYdiGM8GW2QsaYDyvFV9KNfZxbIZagkMaY1EUUDD9OkCCWYpHoCOQNbcDvZTy2TN9pq6oGzSHfeql+UVvltZF5r9zijpgBHyavC/ax4GXOEPu42LDwV3mdB+PEboQ/+M/Balx/jbOPpMpo4CReVRQCZhGYnfMn0thUs+TW6XgW1exyNlTVupCOtNit6fJGw5CYMx6wHeYMcQ2SSHN5h2O2QEzH9CoPixD3t7geN1/bexrfarIERqw4zvdTRSFgAYHZw7EJg71goYU1UkYT4aJI+gGCrmsnWwMuNLVn7yAuvCGeuhrb+eAysKUgPI3YOEyvFtrC3iGm35TkwUfMNsrrjvfIzl2Y9A+9PDyThFOnjuPwHAZGWNI1Dizc8duk8403hpz/Vp7IjBuHpH4i+IU3xEy/HgNo5BmWXrCzj67GSPgZ6ZxjwBCbOqT+ADjXJd7wGACiunQegal9d1IGOx8zzO9s6ZzxMTgJ+nBbeMcB0y5XFnWGf/jXskTFWtA3VY9eu1PwC22IfavbwCXxB1kdH8CHsbtghJ844Fo8f5HuJyZliOP5eYiV7L6cLeh6FEbG8he8OZKE1bAbYqVarPs1drOLYA9D20wLQiIocN/gLTTTGmOiLaNhESc8OOduCzK7npRrcqeEePMe3yX3oZ6uV1wJ6D4E5oxYgw0fN9sk2CREULSziber2RrMuEamgBgRv9fEr3VDLCIliN/aRCjtL2P1lMLG0xgmXBMJUzSWViZbGd1ouFo2T8UvSRCYPawIxvht+doiF0rdbqkGSb6M8jl2yS0eiNHwiTI5ezRt34ac1g1xbflFMMTy/UEcLom7ctbLVMgNvCpLxmNKyD6VKgtnk3vf8IpzKRClCq+YxRQBLFqQV5tkj4uC/x45i1u3HTFV3J7ODd2Qmu6XEavYsmTSPnsRCkzcRNkF0/eMYXNkc3ULP4C77w0nQya4Jzpv/+n7y2XwUjySEIG7h30BQyzfBch5L5wokjRrGEdePv9QhHddKfUJYvQGclbsy2oc3BBP//AodHqO5I795IFLIoYnaUjVJxgzj1xDLLrg3LBnsTSY/Opa4iHQS5sLF8W+kZc0BTm/WhovlzPaXcduwaCovUwx4R9+oTm/4IZYbxCHGQava97a0mftrzQrZ98qoaWmcUKcToe+KZJ4yBQXJzAd12XU/LNk8lS8kggBsQ2aU4F8jfnZ9NeP28rn6y6O3S4rzkLi9t/LlAoz5z0pmdpLzXm2Zmwln0HHdhOl27xFurlasfn8Y8kYHLPN/im7d52zv/mSzCcnG8Ok5jcn5xXov04qBpzSaVvduVJ5upBZfT2/HYMhuVEijL+8eWHeAYcEH2yIC1f3xWi4n1RMGH+E5hz3s1SermXGnpMtmghle2BdsQ0+e9mSKn6uRED4IhlcFLKL1F1msoWLnl/mqOK++O1JHQ0LqTRii1tKd7AhNvSRLYmi/I4wtbS/R8kjbpp30Tq9hp1N8l86nN8lFg3iBgglqLsQSB+GA3dx5JjMwvlvED2BMNfEK8g5DC+jUYxBaapM7cB0yxGZ2kGz5oMNMdElMjvGzV9Kc07YKJWni5mtLxlTz7i2SLaIeDNnYdEgaV5osvFLen6BRXJ2j2QcOlF92SmSebqCXefRC8bDGJ8qWxhMTR4RieBb8j3QEIsTOBgNbkkU5feE9w23xAdvvfnwFe8LTWlZH/F3zq/CAyJ7xhKxOKphvCGQ8TSey4OMQFRaGIm3FV/saDWI5kWFS7DGjOlpmhY0wdmBhrim4RSp0RJiZ4/YbplkpbJ08pd4of3bDrUNgxdn5z7W1Q7eimeCIyDWaRgtl6olZwkVT9w/d0kqdrSWwA52lIpTI7MXNpfkfR+M74GGmBmnBSOK4tqzUbSN66Ya4/faoYBwUXC99unTfcsT0jdnB2aKZzMEGC1r9k3CR34kzVjbRwIjV7DYYlTfgyiJIXYIA2M7szW+BxpizuQaYk/ai611nOjXK5dO+Rd2zqy2Q08Y4zM//eTzIjt4K54JjgBr8wI2eGDmLbH4G2S7MyUKZ55V1qiiiRgJI+2v/AJ35YuVpflrW+O83xA3rn4ObI3Q8nXGPqOZgzZZbpdIDRj92S51YIwnZI2arxJ12wVwovKdNXArVHtPqnqcx70hzsqdfzEWdWwb3HCv965QmO83xHVlR2NDrcQEM7w8VMfJUFe1NP8lvAlt85HjwZnTObdIbpRLMtyYZNeRseWSIbBlKi9ZxlbZdR698EQy6DmMhj2tEkVRARvwVPXiSatCsdhviLkmbzQsemRaq8PwUAIlXB1jt9qmE5JUGzo91TW3KMe2PhTjxEOAyz1NBgFCcTsizspdeJph6K/CL5xhy43GngJPG3ZLON77DTFxuYbY0D4M13ky1GNUvAJ6PmGXrnBRtPEb/M2sUQsusqsPxTfBEPDuPxlCimacDqUZZT2l8HKQSdboogtJGGHJCX2aq4B1osKtT+ZXNL8W7PN+Q8z5r4IRRHRNLAZkZCR0gh8ruKR40m/FAsk2K22s0OJt3paT8QIWG26y0k7RJikCdw//FlPWX6Rq79fialScPbLoam7w57FpI10qDgcwYx9UlkwOGjd8ABm+7DfEjHVvWRnxd05fkq+/1CxkEcvigoZbSq6p1Di73VZR4KbAQzUPC3hFKrTNVqQTgzmjj+UqwuPCTyzihGGEHzSIPwb97QwB9XuYd3LznMOh8N5viInkGWLGkZBaleYIVJTmPYocpO82v2bHZ4yOJ69bt+FlceKsHfwVzwRBgNNnUjWJg8iJw3OLum/Rq9+CEZ4iVfcgzLBA94+K0omfBKkKeqmZIebdglJEcpFTdSTNErmNeDN68YaEi0LuFtNgoHE6x7+HNmRjv3ywanVNIYDn8Ce5KODUDheXzFELfleri0guPsJ2MRl952nTzmeln0ZD7FvZAcmj5flKGNnmD7WinNtot5ROWo8V5r85IhfnnQzDeBSuijcPG/vQsY70qTqJHwSQBUyysK7cdp89akGfzFHzXyNuPIlwT3mDzVbAw0i4hnk9I7c+OQ452M2XRkNc31Zu6Aa3b2HKvGrupOzKsnzY71/mlHRwVZxR72/4FAt5z2TnPtzbqX5VPy5HgHO5i3VE7WneD3LtSBQQHjby4aOyRhY9ZHDjMwwy5R77FlIu7dqqxXmWI8YaDbHhlwugGhG3eqtEmswMjY3CcSlbWyWSXdG4kHeZYTR8ljmq6N7u4xZlyu5C8Ys7BPzSJd6xQ64diUDAzmOLf4VZYHE9a/hS7D4FCzsX5A6QUGM0t6p0ckT5dRoNsdeQDaDyER9wiw788mNJ/iam8VxH/MXNu+Y8BbuHbqzdtfsrxFDe0e3SR49oXq0+JxECTMOBDZJLXZ0tO9PCSSkOTMAAIz9zZFGZ3qB/hVngJDznKeHayazHGtAr1w3MnxYpz8a3haFL3NosRNHkJhWJVDsXt0NSoHeyRxXdDKDuj4GYhyCG8s66hlof/Gdv4n4t8rZp87xVv1YM5FZdykLA0BHEI7kww7HRpxj5cj+/0CDjQhyYcCoMr9STNKwgAyP8RQdNu9znizyZUiNwXKslbLaWVpgh97A9aYK5ixGyMT2QOXL+MEg1LiaSwWWBfs/CvT9L372rLmvk/OV4qF7WNO/LW0smIuhflYRFgHm8xOUPiu3AKzt3STuu/Xw0+fkxWOweAp/vbzDy7bu/LyzDxaowtp28nou/WTxpezQiNBriNP8uwvnD0orBlSE2CWb7Dhl5u3bUDoA/K6Y7k/Aoi1nRedgUcp6hN9yPF8QGfF/FmPY1Hv6vPR7+NTPSvxabU0yqpsjcjAAzDoFBc7zk5i7xLDeq5pvoGG4O1gMi9jX0qu7U9M6IgcytyYoIiV2ISr2ocvGk/7ZGY/b63qlEGnbB1ZltE56OMWWIw6MUoNj4+PjabrnFl9QZxvuYXsnbVGOy/xBkx6LuWM4xU8LD7w9MmGoJrgwDh0A1IPLDD19cAx7GBtQ3cPxlnPlxvQHk+Cyu8QYsSopFoYZ9tFKnXiGkT8IqYF5auSz/cXOq8x7m6ORSvZ1encl3w4drqrjI6raQF8/1TqZpF1SW5L3boiqir3sN8SAY4rKIGARvxLODX1dXgyEgjk/pOmrhuX7mXw6D5W7sRASGGD3zwAga7469GuEvRvUBoy2uBC43XWsiCVzc+0X9kY8Ako+bZmqwXvtululGYQhTjbB3mO3x4PmWH7ARRjK51Yx2aBo7r6Ik7wNZjBujJhpPeJU4JKY+sgRMFj6BzR5e78mYjm1MFp2VnnIRQD6T9RY4Hm2BNjypSPR1mBY2WsrPdHcPNMJpCp+wlzznVJRMlmaERZeNhjjQOY/K2XyA/FwZ4gPwMPmlCr4mzZP+ayyYqVzOJjFTZHsRwNZ57sm0kshH7mCJ02bKGxp2+z6e7ay4vWcig6LXc/bW0jyZ7oMAHPsNMaNv5QGEaY+P7+ctj3HCc6osGb+FOqaehpHxfxJeWaWgNAQQi1ZeWTLGXMZD38dICCX7lGK+0ZQynA4zRecyIqyFfIIwk2HhTtqIVOxmxpJ9FSmTg9vhyKW6NXKnPgd3krBXqh69dmePLO03GD08mbBKKsUkI8DfMM2wpkH+b5PRRlP9czrGFJ2LiPA7fCY10/PrraVTvrFLrL2LdQH2X8rtxDgF/D6XyzN5uK1ZmIdIA34VTt74AVoXYgQjPwA/eeBMcE0RL+H1PG1aSU3vL3PbwN5+Tc2osQEjngyxn2l0G07Z+YdpbCMktGlEDGk4x/RalWgQwJuYVy/Ln+5hdD7CZX6Khpdqm7gI4A29XKwvmNaQ87NN05omZOtMkXLWbCOGqRYxIRK5YJjGzq5aOsV2IywU3G+ImSbRNRHA7tSYIJiAnVaU5r+WmqYdB8P8fwmonlIpSgSQtwcfUAkAAA2ISURBVGSBaRY+DlcnO8s0vVlCrydsxjGxQw4jtMPNsowNHaLhGT2S7knpt/e8SUfE2G+IDeFGwBRHVuH8CJqxRmwKUEUCApufzauqKs3/LR6SPLyt90hgqVgkAAJ4HrYc2cnzgmlV6sp/LX+hDtt87xoS1n+KpIwDTcsZC0LGPtM0flpV6ZQJP5ZMcDSn+n5DPHcowtf4p1L11/VLpfJTzAgPyUItRYyOyfyPT+GWsAhwzh4V6wmmFeTsfNO0ZgkZToWGGy0cOQ4qQJy8+wpmmrUaYzN6ZGqDRDKuWEi43xCL3hnJFYJzZYhtuKsVi/O+hkG+hJHnTBjkj2zoQrGMAwQwM6pKb9dmnjVR+UXW6E1Qc1pjgkqQiAV8NxVsyWeLNK82AAm4Zlp6oUnW4kBDrHlkG+KjadrqmCazkYyXq9hVLctbfv3A/CF4m18rpqiuEk4JYzsC2GZ7y6Ynrgq7m22fIIVlp2ARfcC+79I+sBXhWCECCENmdlI4Oifq8Vup0Zj2YCql9q4uzb9aDGyc6DdUHwcaYpYi1xCLng1/XigBVF10CIgcqHibP4rDCnsj1OYmtUU6OjzjpTVGw29WLJ38hCV5DbrREr0ZYiR/ok4dVoQj7Xrpgv54CXQKR2drvcgRwdgcTxvWo7J08vU/LZvwna39WWB+oCGeOWgTfsim4gEt9DGOCj+M7/3lFpSNFalI6i5Cbc70ZPbGwzYW9xEn1qqSiAggXK2OUjz5lnSbXn4E1oAusdTGDDHHcza1785wpLqfnROOxq56+IDfw79Jh6Z3OAKDlsKtT+ZX2NVXpHybb+ho4vEqPli7yU0tg/0NnA7dcB2qfMGq1TW5CJSUjNHBcYn4lz16/imGwW6E7/9ijEZS5fakuMUKAcx87rScA1fn4jfokS4zI1Nb8eGaGC297xAMYXgRBcaXMC31ycqSCYHQ3KoQ9LGuOni3VmH5aWQYK+QKxqooK70H3Xb8brl8FTczCBye+3CnGqMBo2T+O9CPQI7KA2dCZpgoGlcgAP/mU5VL88fB0ISNUtgncGFZJl7EX+K+H7rvmqwPXu0kmpnzfih23a946PDaGv/3eP4OtjehGlqqQ/wv8dWMtOcNxp6vLs2DIY6fcvCIOG3YO1Rb/hNunMTkHDyLqmumApY/xg80iSPp3pjIImhU1DX30WzdqL0ACyf4J4wyPzJxNE10Tdh/jsrUrrFkhAUknM+yxQgz2kR3D/uAZobGva6uQYyG5RphZJtjnH9EGnsb2x/eTqeUd52O/Q2ttbXa4OAUlt1HBr/BGquw1DXk1Y7B2/OHsJSKwDEEcDrIkThiox9O4ujLDXYSHog+WN/uiR9uB8eEUB2FRQDGd63IyicSQoUlbk5QsHJIYL2A25ANkbG/05zhNzfvLthnnOpSivEqNpJYKxgo6Bj4b4X8GBjC6BN9ibncF+Tx/HfAsX2+WeE7w2+No3upWzHEq04iQ39XvtjsGZo7/Ar5fBVH2QiIkTM3Gnr5Ge/KuNEFE+HOmPKlY2qcghGWFydzpMA4YLsspWBO6EV9CkYmXoy0936mvTRiSy1oxHXQ2Ts9lY2CW/iJY3nSLwukSLUiEkLGqKAcbgM+wkoz07Rez3CaOUwtCpsGrHXC4Ia48QZuxA2UPG3Fz9WjnUuzhply8LcutqpRCCgEwiJQWHYtZrYPh6WLiIB9i0FVr4iaqkYHIRB80UYsBDB64CDqqC/gDW3oj1HBJ/IXDaKWTTFQCCQQAoUr+yHV5b22aaSpXNkysQ1uiEUP6akPwRjvktlZgBen7kR7xMKRKgoBhYAdCMz9vD0ZbBlmtG3tYA+fbR2xjPn28E5Orq0bYt8JvwCSR22BhdNYKlh5jS28FVOFQLIjsG07frfczgTsT9GsgVhEU0UWAq0bYtGDl/0DSTEMWZ0dyIcVkdj7ropCQCEgD4HCMkQx2Ll5Am5LjVtMNCRPvUTlFNoQ3z0c253587YoL3Z6GbSMZpT1tIW/YqoQSDYEGpP6zLVXbf4qzR7xmb19JB/30IZY4MG9f7ZvVIyNHg38ZZWLIvkePKWxZAREvLBB/0So4MGbtKR2pc2Ryk4xCyAQ3hDPHboOcaOP2IjXsWQ0LKfAEd829qJYKwQSFYGCVSdANYSE8kNsVZFRKc3NedvWPpKUeXhDLIDxtL3DlgiKfaDz/lRbq4zxPjzUB4WASQSmlQ8irr+OkbDdIaE15Em9xaRUiswiAuYMsVgh5Wy2Rd7WyDnvB2P8DhbwjrbWUFErBJIUgallx2PDxuvQ3v48v4zNpZmDv0tSpG1X25whFmJkdMZKKfveVok4PxpukJVUsOosW/tRzBUC8Y7A9FU5UAEjYZ5puyqMvqPO3f5iez9J3IF5Q+zrWQtDfL3tWAWmWPq/qLD8Rtv7Uh0oBOINAR+S9xSUTSddfw8+4SxHxNeQhP7mI2oc6StJOwmeayIUGFPLsHedXxuKRFodY69Sesq15Bu8WRpPxUghEK8ITP/wKPLXPwXxT3ZMBcYeQIY12ZkYHRM/XjoyPyJu0iij3R8wMkZ8sQOF8/Oopn4dTVt1qQO9qS4UAu5FoKD8CtIbPoGAThrhz+CSuN29oCSOZNZHxEL3qatPJqa/Bf+UdUMeMXbsDTS9BRmfPo6YhWqoEIg3BO4o70/1/G7MQn/rqOiM1SMSI0f93pxBPTJDLGQrKJsDQyxO3XCuiO3WnC8ib/odFDjo1LmuVU8KAUcRKFzdF2Fpf0SfY50d8OzVkmm30pycexzVOYk7i9wQ+5Dwu7b8NTwkZzqOn3hbEy0m0nBCwLC1jvevOlQI2IXAjLV9yF/3R4xGL0MX8g/7NCM3YyU0O2csdtTikAxVnEAgckMspBN5hfmeMnzq44SwQftgtIK49ghlGP8k34gdQWnURYWAmxEQg5q68vMwqLkaBli4IGJjgAVGjK2CX/g0FSXh7AMTnSEWsooNGCL21/6dPWGQETlSOUboWgllIL7Sl7MlTANVrRCIHQK+9e2obs+ZxI3z8fsZCUE6x06Ypp7ZjzgPLodmDf2p6Yr66wwC0RtiIWdBGdwTwgjanXDEAiiMfQPq97A1+z0kyd6AETO+D99MPrvSelqQTZEmFwJTV3fEOZg9oPTxGCwMxu9EHOg5HL+ZFPcAwXaTh51Ms3I+co9MySOJHEMs8CosH4/tlkgOhOOQ3FoCK8H8O4j3Mwx0A/6Kf378MBr2fW/8vP8a0xqQ1aqRTrQR/ziOzlQl8RHA6ah4NnBYKv4hOzdOEMZno/F74BBVXBN/aS9N42eR/WxvG9YRhrc72rdzN1isAbqNpNnDX3K3nIkrnVyjObX8d8SMx/DgiYdRFYWAQsD1CMClRywXWdVedL2oCSygXEMsgCos+y1GkM9hZJyWwLgp1RQC8Y8AI6Qt0C5BmNqr8a9MfGsg3xALPKatOpsM4wVM4dvENzxKeoVAgiLA2B7S2MXwCYuNUqrEGAF7DLFQqnDVSTDGL2NkjIUKVRQCCgHXICBOZ+fab1SSd9fcESw12FmmrR6MLFGvwRg7kyXKTl0Ub4VAIiDA2A786s/DwtwHiaBOouhgb66IWUM/JOb9NW78mkQBTOmhEIhjBDaQpp2kjLD77qC9hljoO2fIV9QTxpi0v2F1VoV9ue8ZUBIlAwKMPUwZ3qE0a9inyaBuvOlor2uiJRrTys5FrPEihLd1aVmlvisEFAI2ICBcEcQmITICuVlUcSsCzhpigcK0dV1I37MIfuNz3QqKkkshkCAIlFMKu5TuHu5M/vAEAS0WajhviIWWHLvvClfdjL8z8UXFG8fizqs+ExeBQLpY+hv18sygvKFiV6gqLkcgNoa4CZSCtT2I18MYi5R/Lt4a3SSv+qsQcDsCjF4hzTNV+YLdfqMOlC+2hrhJloKVSIKCNzin05suqb8KAYWAFQTYavLw22nWiOVWWiladyDgDkPchEVh2YUwxnPhsujXdEn9VQgoBEIgILIMatp0mjl0sUrkHgInl1e5yxALsJZwD61ddQ2McQH+9XI5fko8hUBsEGDsB3jz7qGMtkXk6y9OrFEljhFwnyFuAjOwoFd2NkbIedgQcjH+qoxuTdiov0mKANJVMnoJI+CHKHXoayq3duI8Bu41xM0x9pV3pRp+DS5NwKJez+ZV6rNCIAkQ+BIJeh4m1mYRzRq4NQn0TToV48MQN90WH9eovhyZ3fh4jJAvwOX2TVXqr0IgsRBgVdiI+hIx7XEc5PlWYummtGmJQHwZ4ubS3/dlGm3adhZ2DeEfH4GqE/BXxSQ3x0h9jh8EAhnRcHAno/eJe16lIUM+oDFMjx8FlKTRIBC/hril1sWrU+hbYxCOssnB6jH+Uj881H2w4JfdklR9VwjEDgHkW2F8MwYQX+P5/BjnKZbjrLiPaNDQDcrwxu6uxLrnxDHErSHpW9mB6lhXrDB3hJ/tEKTlbBM4e4x5vMR1nDem4S/OIQv8xVljTCwK4nhzzvAZf8U5ZMbes8lEXeAzIjtUSQ4EOEaljOOcQubHs4DFsr2fxdmG2t7zDpvOPhT1zc83DJyHiHYe2oPc3L+Q1/sLdeqyWR1VnxyPjtJSIaAQUAgoBBQCCgGFgEJAIaAQMIvA/wNne9RHd0pXfgAAAABJRU5ErkJggg==",
- "internal-vld": [
- {
- "id": "ba195068-626b-11e5-998d-6cb3113b406f",
- "name": "fabric",
- "short-name": "fabric",
- "description": "Virtual link for internal fabric",
- "type": "ELAN",
- "internal-connection-point-ref": [
- "ba197a98-626b-11e5-998d-6cb3113b406f",
- "ba198696-626b-11e5-998d-6cb3113b406f"
- ]
- }
- ],
- "connection-point": [
- {
- "name": "pong-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "pong-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "1-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "ba197a98-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "ba198696-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "ba197a98-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "ba198696-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "pong-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "pong-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- },
- {
- "id": "2-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "21-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "22-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "21-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "22-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "pong-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "pong-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- },
- {
- "id": "c55e8e6d-ed13-465f-809d-838878c70d1d",
- "name": "vnfd-2",
- "short-name": "SF Aware",
- "vendor": "",
- "logo": "",
- "description": "A simple VNF descriptor w/ one VDU",
- "version": "0.1.0",
- "service-function-chain": "SF",
- "service-function-type": "",
- "meta": "{\"containerPositionMap\":{}}",
- "mgmt-interface": {
- "port": "",
- "dashboard-params": {
- "path": "",
- "https": "",
- "port": ""
- }
- },
- "connection-point": [
- {
- "name": "ping-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "ping-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "7ea4bb66-82ff-453c-a0db-96099a797d25",
- "name": "vdu-2",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "009a6284-523b-4630-a050-dcf4937c0658",
- "type": "VPORT"
- },
- {
- "id": "99d5fd31-de1f-457d-ac39-80dfb4c33b2f",
- "type": "VPORT"
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "ping-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "ping-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- },
- {
- "id": "776c0ec7-ce00-465d-a837-667975353183",
- "name": "vnfd-3",
- "short-name": "Classifier",
- "vendor": "",
- "logo": "",
- "description": "A simple VNF descriptor w/ one VDU",
- "version": "0.1.0",
- "service-function-chain": "CLASSIFIER",
- "service-function-type": "",
- "meta": "{\"containerPositionMap\":{}}",
- "mgmt-interface": {
- "port": "",
- "dashboard-params": {
- "path": "",
- "https": "",
- "port": ""
- }
- },
- "connection-point": [
- {
- "name": "ping-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "ping-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "7f9d96e7-37b5-46d2-91b1-8d670db72d0b",
- "name": "vdu-3",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "38ef6b13-f4cc-4153-a662-dc7b804ef202",
- "type": "VPORT"
- },
- {
- "id": "5c07545e-94d0-4551-a704-a8e47ab28fa5",
- "type": "VPORT"
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "ping-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "ping-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "id": "GUID-3",
- "name": "RIFT.wareâ„¢ PNF Descriptors Catalog",
- "short-name": "rift.ware-pnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "pnfd",
- "descriptors": []
- }
-]
\ No newline at end of file
+++ /dev/null
-[
- {
- "id": "GUID-1",
- "name": "RIFT.wareâ„¢ NS Descriptors Catalog",
- "short-name": "rift.ware-nsd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "nsd",
- "descriptors": [
- {
- "description": "Toy NS Ping-Vrouter-Pong",
- "constituent-vnfd": [
- {
- "member-vnf-index": 1,
- "vnfd-id-ref": "7cae6ff6-9263-11e5-b7df-001b21b98a89"
- },
- {
- "member-vnf-index": 2,
- "vnfd-id-ref": "a4dea522-9263-11e5-ad06-001b21b98a89"
- },
- {
- "member-vnf-index": 3,
- "vnfd-id-ref": "7cb0375a-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "version": 1,
- "vld": [
- {
- "description": "Link from ping to vrouter",
- "type": "ELAN",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-connection-point-ref": "ping_vnfd/cp0",
- "vnfd-id-ref": "7cae6ff6-9263-11e5-b7df-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "vrouter_vnfd/cp0",
- "vnfd-id-ref": "a4dea522-9263-11e5-ad06-001b21b98a89"
- }
- ],
- "version": 1,
- "vendor": "RIFT.io",
- "name": "Link1",
- "short-name": "Link1",
- "id": "23afa0c8-92d1-11e5-9a9f-001b21b98a89"
- },
- {
- "description": "Link from vrouter to pong",
- "type": "ELAN",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "vrouter_vnfd/cp1",
- "vnfd-id-ref": "a4dea522-9263-11e5-ad06-001b21b98a89"
- },
- {
- "member-vnf-index-ref": 3,
- "vnfd-connection-point-ref": "pong_vnfd/cp0",
- "vnfd-id-ref": "7cb0375a-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "version": 1,
- "vendor": "RIFT.io",
- "name": "Link2",
- "short-name": "Link2",
- "id": "23afe542-92d1-11e5-9a9f-001b21b98a89"
- }
- ],
- "vendor": "RIFT.io",
- "name": "ping_vrouter_pong_nsd",
- "short-name": "ping_vrouter_pong_nsd",
- "id": "23a28e4c-92d1-11e5-9a9f-001b21b98a89"
- }
- ]
- },
- {
- "id": "GUID-2",
- "name": "RIFT.wareâ„¢ VNF Descriptors Catalog",
- "short-name": "rift.ware-vnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "vnfd",
- "descriptors": [
- {
- "vdu": [
- {
- "image": "Fedora-x86_64-20-20131211.1-sda-ping.qcow2",
- "host-epa": {
- "cpu-socket-count": "PREFER_TWO",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ],
- "cpu-arch": "PREFER_X86_64",
- "cpu-model": "PREFER_SANDYBRIDGE"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "external-interface": [
- {
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth0",
- "vnfd-connection-point-ref": "ping_vnfd/cp0"
- }
- ],
- "count": 2,
- "internal-interface": [
- {
- "vdu-internal-connection-point-ref": "7cafe53e-9263-11e5-b7df-001b21b98a89",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth0"
- }
- ],
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False }\nssh_pwauth: True\nruncmd:\n - [ systemctl, daemon-reload ]\n - [ systemctl, enable, ping.service ]\n - [ systemctl, start, --no-block, ping.service ]\n - [ ifup, eth1 ]\n - [ ifup, eth2 ]\n",
- "internal-connection-point": [
- {
- "type": "VPORT",
- "id": "7cafe53e-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "vcpu-count": 2,
- "storage-gb": 40
- },
- "guest-epa": {
- "mempage-size": "PREFER_LARGE",
- "cpu-thread-pinning-policy": "AVOID",
- "trusted-execution": "true",
- "numa-node-policy": {
- "node": [
- {
- "vcpu": [
- 0,
- 1
- ],
- "memory-mb": 8192,
- "id": 0
- },
- {
- "vcpu": [
- 2,
- 3
- ],
- "memory-mb": 8192,
- "id": 1
- }
- ],
- "node-cnt": 2,
- "mem-policy": "PREFERRED"
- },
- "cpu-pinning-policy": "DEDICATED"
- },
- "name": "iovdu",
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "id": "7caf476e-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "description": "This is an example RIFT.ware VNF",
- "connection-point": [
- {
- "type": "VPORT",
- "name": "ping_vnfd/cp0"
- }
- ],
- "monitoring-param": [
- {
- "units": "packets",
- "description": "no of ping requests",
- "current-value": 0,
- "min-value": 0,
- "path": "api/v1/ping/stats",
- "id": 1,
- "widget-type": "COUNTER",
- "name": "ping-request-tx-count",
- "max-value": 4292967295,
- "group-tag": "Group1"
- },
- {
- "units": "packets",
- "description": "no of ping responses",
- "current-value": 0,
- "min-value": 0,
- "path": "api/v1/ping/stats",
- "id": 2,
- "widget-type": "COUNTER",
- "name": "ping-response-rx-count",
- "max-value": 4292967295,
- "group-tag": "Group1"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "7caf476e-9263-11e5-b7df-001b21b98a89",
- "port": 18888
- },
- "version": 1,
- "internal-vld": [
- {
- "description": "Virtual link for internal fabric",
- "type": "ELAN",
- "internal-connection-point-ref": [
- "7cafe53e-9263-11e5-b7df-001b21b98a89"
- ],
- "name": "fabric",
- "short-name": "fabric",
- "id": "7caead0e-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "vendor": "RIFT.io",
- "name": "ping_vnfd",
- "short-name": "ping_vnfd",
- "id": "7cae6ff6-9263-11e5-b7df-001b21b98a89"
- },
- {
- "vdu": [
- {
- "image": "Fedora-x86_64-20-20131211.1-sda-pong.qcow2",
- "host-epa": {
- "cpu-socket-count": "PREFER_TWO",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ],
- "cpu-arch": "PREFER_X86_64",
- "cpu-model": "PREFER_SANDYBRIDGE"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "external-interface": [
- {
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth0",
- "vnfd-connection-point-ref": "pong_vnfd/cp0"
- }
- ],
- "count": 2,
- "internal-interface": [
- {
- "vdu-internal-connection-point-ref": "7cb0ab18-9263-11e5-b7df-001b21b98a89",
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth0"
- }
- ],
- "cloud-init": "#cloud-config\npassword: fedora\nchpasswd: { expire: False }\nssh_pwauth: True\nruncmd:\n - [ systemctl, daemon-reload ]\n - [ systemctl, enable, pong.service ]\n - [ systemctl, start, --no-block, pong.service ]\n - [ ifup, eth1 ]\n - [ ifup, eth2 ]\n",
- "internal-connection-point": [
- {
- "type": "VPORT",
- "id": "7cb0ab18-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "vcpu-count": 2,
- "storage-gb": 40
- },
- "guest-epa": {
- "mempage-size": "PREFER_LARGE",
- "cpu-thread-pinning-policy": "AVOID",
- "trusted-execution": "true",
- "numa-node-policy": {
- "node": [
- {
- "vcpu": [
- 0,
- 1
- ],
- "memory-mb": 8192,
- "id": 0
- },
- {
- "vcpu": [
- 2,
- 3
- ],
- "memory-mb": 8192,
- "id": 1
- }
- ],
- "node-cnt": 2,
- "mem-policy": "PREFERRED"
- },
- "cpu-pinning-policy": "DEDICATED"
- },
- "name": "iovdu",
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "id": "7cb0832c-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "description": "This is an example RIFT.ware VNF",
- "connection-point": [
- {
- "type": "VPORT",
- "name": "pong_vnfd/cp0"
- }
- ],
- "monitoring-param": [
- {
- "units": "packets",
- "description": "no of ping requests",
- "current-value": 0,
- "min-value": 0,
- "path": "api/v1/pong/stats",
- "id": 1,
- "widget-type": "COUNTER",
- "name": "ping-request-rx-count",
- "max-value": 4292967295,
- "group-tag": "Group1"
- },
- {
- "units": "packets",
- "description": "no of ping responses",
- "current-value": 0,
- "min-value": 0,
- "path": "api/v1/pong/stats",
- "id": 2,
- "widget-type": "COUNTER",
- "name": "ping-response-tx-count",
- "max-value": 4292967295,
- "group-tag": "Group1"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "7cb0832c-9263-11e5-b7df-001b21b98a89",
- "port": 18889
- },
- "version": 1,
- "internal-vld": [
- {
- "description": "Virtual link for internal fabric",
- "type": "ELAN",
- "internal-connection-point-ref": [
- "7cb0ab18-9263-11e5-b7df-001b21b98a89"
- ],
- "name": "fabric",
- "short-name": "fabric",
- "id": "7cb048bc-9263-11e5-b7df-001b21b98a89"
- }
- ],
- "vendor": "RIFT.io",
- "name": "pong_vnfd",
- "short-name": "pong_vnfd",
- "id": "7cb0375a-9263-11e5-b7df-001b21b98a89"
- },
- {
- "vdu": [
- {
- "image": "vyatta_snp.qcow2",
- "host-epa": {
- "cpu-socket-count": "PREFER_TWO",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ],
- "cpu-arch": "PREFER_X86_64",
- "cpu-model": "PREFER_SANDYBRIDGE"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "cloud-init": "#cloud-config\n",
- "external-interface": [
- {
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth0",
- "vnfd-connection-point-ref": "vrouter_vnfd/cp0"
- },
- {
- "virtual-interface": {
- "type": "VIRTIO"
- },
- "name": "eth1",
- "vnfd-connection-point-ref": "vrouter_vnfd/cp1"
- }
- ],
- "vm-flavor": {
- "memory-mb": 4096,
- "vcpu-count": 2,
- "storage-gb": 40
- },
- "guest-epa": {
- "mempage-size": "PREFER_LARGE",
- "cpu-thread-pinning-policy": "AVOID",
- "trusted-execution": "true",
- "numa-node-policy": {
- "node": [
- {
- "vcpu": [
- 0,
- 1
- ],
- "memory-mb": 8192,
- "id": 0
- },
- {
- "vcpu": [
- 2,
- 3
- ],
- "memory-mb": 8192,
- "id": 1
- }
- ],
- "node-cnt": 2,
- "mem-policy": "PREFERRED"
- },
- "cpu-pinning-policy": "DEDICATED"
- },
- "name": "iovdu",
- "count": 2,
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "id": "a4df6142-9263-11e5-ad06-001b21b98a89"
- }
- ],
- "description": "This is a Brocade vRouter VNF",
- "connection-point": [
- {
- "type": "VPORT",
- "name": "vrouter_vnfd/cp0"
- },
- {
- "type": "VPORT",
- "name": "vrouter_vnfd/cp1"
- }
- ],
- "monitoring-param": [
- {
- "units": "packets",
- "description": "no of tx pkts",
- "current-value": 0,
- "min-value": 0,
- "path": "api/v1/ping/stats",
- "id": 1,
- "widget-type": "COUNTER",
- "name": "tx-count",
- "max-value": 4292967295,
- "group-tag": "Group1"
- },
- {
- "units": "packets",
- "description": "no of rx packets",
- "current-value": 0,
- "min-value": 0,
- "path": "api/v1/ping/stats",
- "id": 2,
- "widget-type": "COUNTER",
- "name": "rx-count",
- "max-value": 4292967295,
- "group-tag": "Group1"
- }
- ],
- "mgmt-interface": {
- "vdu-id": "a4df6142-9263-11e5-ad06-001b21b98a89",
- "port": 18888
- },
- "version": 1,
- "vendor": "Brocade",
- "name": "vrouter_vnfd",
- "short-name": "vrouter_vnfd",
- "id": "a4dea522-9263-11e5-ad06-001b21b98a89"
- }
- ]
- },
- {
- "id": "GUID-3",
- "name": "RIFT.wareâ„¢ PNF Descriptors Catalog",
- "short-name": "rift.ware-pnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "pnfd",
- "descriptors": []
- }
-]
\ No newline at end of file
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90.8 78.5"><path class="st0" d="M70.8 58.2c-0.7 0-1.4 0.1-2 0.3L51.5 42.7c0.7-1.1 1.2-2.4 1.2-3.8 0-1.4-0.4-2.7-1.2-3.8l15.1-13.9c1.1 0.9 2.6 1.5 4.2 1.5 3.7 0 6.7-3 6.7-6.6 0-3.7-3-6.6-6.7-6.6 -3.7 0-6.7 3-6.7 6.6 0 1.4 0.4 2.7 1.2 3.8L50.2 33.8c-1.1-0.9-2.6-1.5-4.2-1.5 -1.6 0-3.1 0.6-4.2 1.5L26.7 19.9c0.7-1.1 1.2-2.4 1.2-3.8 0-3.7-3-6.6-6.7-6.6 -3.7 0-6.7 3-6.7 6.6 0 3.3 2.5 6.1 5.7 6.6v35.6c-3.2 0.5-5.7 3.2-5.7 6.6 0 3.7 3 6.6 6.7 6.6 3.1 0 5.8-2.2 6.5-5.1h36.7c0.7 2.9 3.3 5.1 6.5 5.1 3.7 0 6.7-3 6.7-6.6C77.5 61.2 74.5 58.2 70.8 58.2zM64.2 64.5H27.8c-0.1-2.1-1.2-4-2.8-5.1l16.7-15.4c1.1 0.9 2.6 1.5 4.2 1.5 1.6 0 3.1-0.6 4.2-1.5L67 59.4C65.3 60.6 64.3 62.4 64.2 64.5zM25.4 21.3l15.1 13.9c-0.7 1.1-1.2 2.4-1.2 3.8 0 1.4 0.4 2.7 1.2 3.8L23.2 58.5c-0.3-0.1-0.7-0.2-1.1-0.2V22.7C23.4 22.5 24.5 22 25.4 21.3z"/></svg>
\ No newline at end of file
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg xmlns="http://www.w3.org/2000/svg" width="378" height="412" viewBox="0 0 378 412"><title> default</title><desc> default</desc><g id="Page-1" style="fill:none;stroke-width:1;stroke:none"><path stroke="white" d="M188.8 0L0 103 0 311.2 188.8 412 377.7 311.2 377.7 104.1 188.8 0 188.8 0ZM324.6 114.1L188.9 186.5 53.8 112.8 188.8 39.2 324.6 114.1 324.6 114.1ZM34.3 141.3L171.7 216.2 171.7 363.9 34.3 290.7 34.3 141.3 34.3 141.3ZM206 363.9L206 216.3 343.3 143 343.3 290.7 206 363.9 206 363.9ZM274.1 243.9C268.4 244 263.9 248.7 264 254.4 264.1 260.1 268.8 264.6 274.5 264.5 280.2 264.4 284.7 259.7 284.6 254 284.5 248.3 279.8 243.8 274.1 243.9L274.1 243.9ZM93.1 255C93 260.7 97.5 265.4 103.2 265.5 108.9 265.6 113.5 261.1 113.6 255.4 113.8 249.7 109.3 245 103.6 244.9 97.9 244.8 93.2 249.3 93.1 255L93.1 255ZM188.8 98.3C183.2 98.3 178.5 102.9 178.5 108.6 178.5 114.3 183.2 118.9 188.8 118.9 194.5 118.9 199.1 114.3 199.1 108.6 199.1 102.9 194.5 98.3 188.8 98.3L188.8 98.3Z" id="default" fill="white"/></g></svg>
\ No newline at end of file
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg xmlns="http://www.w3.org/2000/svg" width="378" height="412" viewBox="0 0 378 412"><title> default</title><desc> default</desc><g id="Page-1" style="fill:none;stroke-width:1;stroke:none"><path d="M188.8 0L0 103 0 311.2 188.8 412 377.7 311.2 377.7 104.1 188.8 0 188.8 0ZM324.6 114.1L188.9 186.5 53.8 112.8 188.8 39.2 324.6 114.1 324.6 114.1ZM34.3 141.3L171.7 216.2 171.7 363.9 34.3 290.7 34.3 141.3 34.3 141.3ZM206 363.9L206 216.3 343.3 143 343.3 290.7 206 363.9 206 363.9ZM274.1 243.9C268.4 244 263.9 248.7 264 254.4 264.1 260.1 268.8 264.6 274.5 264.5 280.2 264.4 284.7 259.7 284.6 254 284.5 248.3 279.8 243.8 274.1 243.9L274.1 243.9ZM93.1 255C93 260.7 97.5 265.4 103.2 265.5 108.9 265.6 113.5 261.1 113.6 255.4 113.8 249.7 109.3 245 103.6 244.9 97.9 244.8 93.2 249.3 93.1 255L93.1 255ZM188.8 98.3C183.2 98.3 178.5 102.9 178.5 108.6 178.5 114.3 183.2 118.9 188.8 118.9 194.5 118.9 199.1 114.3 199.1 108.6 199.1 102.9 194.5 98.3 188.8 98.3L188.8 98.3Z" id="default" fill="#000"/></g></svg>
\ No newline at end of file
+++ /dev/null
-[
- {
- "id": "GUID-1",
- "name": "RIFT.wareâ„¢ NS Descriptors Catalog",
- "short-name": "rift.ware-nsd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "nsd",
- "descriptors": [
- {
- "id": "ba1dfbcc-626b-11e5-998d-6cb3113b406f",
- "name": "ping-pong-nsd",
- "short-name": "ping-pong-nsd",
- "vendor": "RIFT.io",
- "logo": "rift.png",
- "description": "Toy NS",
- "version": "1.0",
- "connection-point": [
- {
- "name": "ping-pong-nsd/cp0"
- },
- {
- "name": "ping-pong-nsd/cp1"
- }
- ],
- "vld": [
- {
- "id": "ba1c03a8-626b-11e5-998d-6cb3113b406f",
- "name": "ping-pong-vld",
- "short-name": "ping-pong-vld",
- "vendor": "RIFT.io",
- "description": "Toy VL",
- "version": "1.0",
- "type": "ELAN",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "ping-vnfd/cp1"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "pong-vnfd/cp1"
- }
- ],
- "provider-network": {
- "name": "physnet1",
- "overlay-type": "VLAN"
- }
- }
- ],
- "constituent-vnfd": [
- {
- "member-vnf-index": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f"
- },
- {
- "member-vnf-index": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f"
- }
- ],
- "vnffgd": [{
- "id": "1d6382bb-52fa-43b6-9489-d764a0a27da9",
- "name": "vnffgd-5",
- "short-name": "FG-1",
- "vendor": "",
- "description": "",
- "version": "",
- "rsp": [
- {
- "id": "a10b372d-19a1-4d84-a246-82bfceddae12",
- "name": "rsp-6",
- "vnfd-connection-point-ref": [
- {
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "member-vnf-index-ref": 1,
- "vnfd-connection-point-ref": "ping-vnfd/cp1"
- },
- {
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "member-vnf-index-ref": 2,
- "vnfd-connection-point-ref": "pong-vnfd/cp0"
- }
- ]
- }
- ],
- "classifier": [
- {
- "id": "1-a5b8-45b5-8163-f2577555d561",
- "name": "classifier-1",
- "rsp-id-ref": "a10b372d-19a1-4d84-a246-82bfceddae12",
- "match-attributes": [{
- "id": "1",
- "ip-proto": "123.0.0.1",
- "source-ip-address": "10.4.0.1",
- "destination-ip-address": "10.4.0.2",
- "source-port": "1234",
- "destination-port": "4321"
- }]
- },
- {
- "id": "2-a5b8-45b5-8163-f2577555d561",
- "name": "classifier-2",
- "rsp-id-ref": "a10b372d-19a1-4d84-a246-82bfceddae12",
- "match-attributes": [{
- "id": "1",
- "ip-proto": "123.0.0.1",
- "source-ip-address": "10.4.0.1",
- "destination-ip-address": "10.4.0.2",
- "source-port": "1234",
- "destination-port": "4321"
- }]
- },
- {
- "id": "3-a5b8-45b5-8163-f2577555d561",
- "name": "classifier-3",
- "rsp-id-ref": "a10b372d-19a1-4d84-a246-82bfceddae12",
- "match-attributes": [{
- "id": "1",
- "ip-proto": "123.0.0.1",
- "source-ip-address": "10.4.0.1",
- "destination-ip-address": "10.4.0.2",
- "source-port": "1234",
- "destination-port": "4321"
- }]
- },
- {
- "id": "4-a5b8-45b5-8163-f2577555d561",
- "name": "classifier-4",
- "rsp-id-ref": "a10b372d-19a1-4d84-a246-82bfceddae12",
- "match-attributes": [{
- "id": "1",
- "ip-proto": "123.0.0.1",
- "source-ip-address": "10.4.0.1",
- "destination-ip-address": "10.4.0.2",
- "source-port": "1234",
- "destination-port": "4321"
- }]
- }
-
- ]
- }]
- },
- {
- "id": "test1-626b-11e5-998d-6cb3113b406f",
- "name": "TEST ping-pong-nsd",
- "short-name": "test-ping-pong-nsd",
- "vendor": "RIFT.io",
- "description": "TEST NS",
- "version": "1.0",
- "connection-point": [
- {
- "name": "ping-pong-nsd/cp0"
- },
- {
- "name": "ping-pong-nsd/cp1"
- }
- ],
- "vld": [
- {
- "id": "test1-ba1c03a8-626b-11e5-998d-6cb3113b406f",
- "name": "test1-ping-pong-vld",
- "short-name": "test1-ping-pong-vld",
- "vendor": "RIFT.io",
- "description": "test1 VL",
- "version": "1.0",
- "type": "ELAN",
- "vnfd-connection-point-ref": [
- {
- "member-vnf-index-ref": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "ping-vnfd/cp1"
- },
- {
- "member-vnf-index-ref": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "vnfd-connection-point-ref": "pong-vnfd/cp1"
- }
- ],
- "provider-network": {
- "name": "physnet1",
- "overlay-type": "VLAN"
- }
- }
- ],
- "constituent-vnfd": [
- {
- "member-vnf-index": 1,
- "vnfd-id-ref": "ba145e82-626b-11e5-998d-6cb3113b406f"
- },
- {
- "member-vnf-index": 2,
- "vnfd-id-ref": "ba1947da-626b-11e5-998d-6cb3113b406f"
- }
- ]
- }
- ]
- },
- {
- "id": "GUID-2",
- "name": "RIFT.wareâ„¢ VNF Descriptors Catalog",
- "short-name": "rift.ware-vnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "vnfd",
- "descriptors": [
- {
- "id": "ba145e82-626b-11e5-998d-6cb3113b406f",
- "name": "ping-vnfd",
- "short-name": "ping-vnfd",
- "vendor": "RIFT.io",
- "description": "This is an example RIFT.ware VNF",
- "version": "1.0",
- "logo": "data:image/png",
- "internal-vld": [
- {
- "id": "ba1478fe-626b-11e5-998d-6cb3113b406f",
- "name": "fabric",
- "short-name": "fabric",
- "description": "Virtual link for internal fabric",
- "type": "ELAN"
- }
- ],
- "connection-point": [
- {
- "name": "ping-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "ping-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "ba14a504-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "ba153744-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "ba15577e-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "ba153744-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "ba15577e-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "ping-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "ping-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- },
- {
- "id": "ba1947da-626b-11e5-998d-6cb3113b406f",
- "name": "pong-vnfd",
- "short-name": "pong-vnfd",
- "vendor": "RIFT.io",
- "description": "This is an example RIFT.ware VNF",
- "version": "1.0",
- "logo": "",
- "internal-vld": [
- {
- "id": "ba195068-626b-11e5-998d-6cb3113b406f",
- "name": "fabric",
- "short-name": "fabric",
- "description": "Virtual link for internal fabric",
- "type": "ELAN",
- "internal-connection-point-ref": [
- "ba197a98-626b-11e5-998d-6cb3113b406f",
- "ba198696-626b-11e5-998d-6cb3113b406f"
- ]
- }
- ],
- "connection-point": [
- {
- "name": "pong-vnfd/cp0",
- "type": "VPORT"
- },
- {
- "name": "pong-vnfd/cp1",
- "type": "VPORT"
- }
- ],
- "vdu": [
- {
- "id": "1-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "ba197a98-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "ba198696-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "ba197a98-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "ba198696-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "pong-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "pong-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- },
- {
- "id": "2-626b-11e5-998d-6cb3113b406f",
- "name": "iovdu",
- "count": 2,
- "vm-flavor": {
- "vcpu-count": 4,
- "memory-mb": 16384,
- "storage-gb": 16
- },
- "guest-epa": {
- "trusted-execution": true,
- "mempage-size": "PREFER_LARGE",
- "cpu-pinning-policy": "DEDICATED",
- "cpu-thread-pinning-policy": "AVOID",
- "numa-node-policy": {
- "node-cnt": 2,
- "mem-policy": "PREFERRED",
- "node": [
- {
- "id": 0,
- "vcpu": [
- "0",
- "1"
- ],
- "memory-mb": 8192
- },
- {
- "id": 1,
- "vcpu": [
- "2",
- "3"
- ],
- "memory-mb": 8192
- }
- ]
- }
- },
- "vswitch-epa": {
- "ovs-acceleration": "DISABLED",
- "ovs-offload": "DISABLED"
- },
- "hypervisor-epa": {
- "type": "PREFER_KVM"
- },
- "host-epa": {
- "cpu-model": "PREFER_SANDYBRIDGE",
- "cpu-arch": "PREFER_X86_64",
- "cpu-vendor": "PREFER_INTEL",
- "cpu-socket-count": "PREFER_TWO",
- "cpu-feature": [
- "PREFER_AES",
- "PREFER_CAT"
- ]
- },
- "image": "rw_openstack.qcow2",
- "internal-connection-point": [
- {
- "id": "21-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- },
- {
- "id": "22-626b-11e5-998d-6cb3113b406f",
- "type": "VPORT"
- }
- ],
- "internal-interface": [
- {
- "name": "eth0",
- "vdu-internal-connection-point-ref": "21-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vdu-internal-connection-point-ref": "22-626b-11e5-998d-6cb3113b406f",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ],
- "external-interface": [
- {
- "name": "eth0",
- "vnfd-connection-point-ref": "pong-vnfd/cp0",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- },
- {
- "name": "eth1",
- "vnfd-connection-point-ref": "pong-vnfd/cp1",
- "virtual-interface": {
- "type": "VIRTIO"
- }
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "id": "GUID-3",
- "name": "RIFT.wareâ„¢ PNF Descriptors Catalog",
- "short-name": "rift.ware-pnfd-cat",
- "description": "RIFT.wareâ„¢, an open source NFV development and deployment software platform that makes it simple to create, deploy and manage hyper-scale Virtual network functions and applications.",
- "vendor": "RIFT.io",
- "version": "",
- "created-on": "",
- "type": "pnfd",
- "descriptors": []
- }
-]
\ No newline at end of file
{
"name": "file_upload",
"version": "0.0.1",
+ "license": "Apache-2.0",
"dependencies": {
"cors": "^2.7.1",
"express": "~4.10.2",
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
+
#
# (c) Copyright RIFT.io, 2013-2016, All Rights Reserved
#
+[//]: # Copyright 2016 RIFT.IO Inc
+[//]: #
+[//]: # 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.
+
# RIFT.io / Punchcut collaboration area
This repo is setup for the collaboration between RIFT.io and Punchcut
{
"name": "RIFT.ware",
+ "license": "Apache-2.0",
"icons": [
{
"src": "\/android-chrome-36x36.png",
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="1040.000000pt" height="1040.000000pt" viewBox="0 0 1040.000000 1040.000000"
preserveAspectRatio="xMidYMid meet">
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 90.8 78.5"><path class="st0" d="M70.8 58.2c-0.7 0-1.4 0.1-2 0.3L51.5 42.7c0.7-1.1 1.2-2.4 1.2-3.8 0-1.4-0.4-2.7-1.2-3.8l15.1-13.9c1.1 0.9 2.6 1.5 4.2 1.5 3.7 0 6.7-3 6.7-6.6 0-3.7-3-6.6-6.7-6.6 -3.7 0-6.7 3-6.7 6.6 0 1.4 0.4 2.7 1.2 3.8L50.2 33.8c-1.1-0.9-2.6-1.5-4.2-1.5 -1.6 0-3.1 0.6-4.2 1.5L26.7 19.9c0.7-1.1 1.2-2.4 1.2-3.8 0-3.7-3-6.6-6.7-6.6 -3.7 0-6.7 3-6.7 6.6 0 3.3 2.5 6.1 5.7 6.6v35.6c-3.2 0.5-5.7 3.2-5.7 6.6 0 3.7 3 6.6 6.7 6.6 3.1 0 5.8-2.2 6.5-5.1h36.7c0.7 2.9 3.3 5.1 6.5 5.1 3.7 0 6.7-3 6.7-6.6C77.5 61.2 74.5 58.2 70.8 58.2zM64.2 64.5H27.8c-0.1-2.1-1.2-4-2.8-5.1l16.7-15.4c1.1 0.9 2.6 1.5 4.2 1.5 1.6 0 3.1-0.6 4.2-1.5L67 59.4C65.3 60.6 64.3 62.4 64.2 64.5zM25.4 21.3l15.1 13.9c-0.7 1.1-1.2 2.4-1.2 3.8 0 1.4 0.4 2.7 1.2 3.8L23.2 58.5c-0.3-0.1-0.7-0.2-1.1-0.2V22.7C23.4 22.5 24.5 22 25.4 21.3z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 51 51" enable-background="new 0 0 51 51" xml:space="preserve">\r
<polygon id="XMLID_5_" fill-rule="evenodd" clip-rule="evenodd" fill="#333333" points="40.7,7.9 39.3,6.5 23,22.8 6.7,6.5 5.3,7.9 \r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 28 35.3" enable-background="new 0 0 28 35.3" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 90.8 78.5" style="enable-background:new 0 0 90.8 78.5;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 80 80" style="enable-background:new 0 0 80 80;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 80 80" style="enable-background:new 0 0 80 80;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 94 74" style="enable-background:new 0 0 94 74;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 94 74" style="enable-background:new 0 0 94 74;" xml:space="preserve">\r
<style type="text/css">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 92.6 93.7" enable-background="new 0 0 92.6 93.7" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 92.6 93.7" enable-background="new 0 0 92.6 93.7" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 339.3 128.7" enable-background="new 0 0 339.3 128.7" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 339.3 128.7" enable-background="new 0 0 339.3 128.7" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 354.1 137.3" enable-background="new 0 0 354.1 137.3" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 354.1 137.3" enable-background="new 0 0 354.1 137.3" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 98.7 98" enable-background="new 0 0 98.7 98" xml:space="preserve">\r
<path fill-rule="evenodd" clip-rule="evenodd" fill="#333333" d="M45.8,4.5h2v84h-2V4.5z"/>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 43 46.4" enable-background="new 0 0 43 46.4" xml:space="preserve">\r
<g>\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 31.3 31.3" enable-background="new 0 0 31.3 31.3" xml:space="preserve">\r
<g id="XMLID_1_">\r
<?xml version="1.0" encoding="utf-8"?>\r
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<!--\r
+ Copyright 2016 RIFT.IO Inc\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
viewBox="0 0 33.4 32.4" enable-background="new 0 0 33.4 32.4" xml:space="preserve">\r
<g>\r
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="176" height="176" viewBox="0 0 176 176">
<defs>
<style>
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="232" height="212" viewBox="0 0 232 212">
<image xlink:href="data:img/png;base64,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" width="232" height="212"/>
</svg>
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="232" height="212" viewBox="0 0 232 212">
<image xlink:href="data:img/png;base64,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" width="232" height="212"/>
</svg>
+++ /dev/null
-
-/*
- *
- *
- */
-
-/*
-line-chart - v1.1.9 - 21 June 2015
-https://github.com/n3-charts/line-chart
-Copyright (c) 2015 n3-charts
- */
-var directive, m, mod, old_m,
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-
-old_m = angular.module('n3-charts.linechart', ['n3charts.utils']);
-
-m = angular.module('n3-line-chart', ['n3charts.utils']);
-
-directive = function(name, conf) {
- old_m.directive(name, conf);
- return m.directive(name, conf);
-};
-
-directive('linechart', [
- 'n3utils', '$window', '$timeout', function(n3utils, $window, $timeout) {
- var link;
- link = function(scope, element, attrs, ctrl) {
- var dispatch, id, initialHandlers, isUpdatingOptions, promise, updateEvents, window_resize, _u;
- _u = n3utils;
- dispatch = _u.getEventDispatcher();
- id = _u.uuid();
- element[0].style['font-size'] = 0;
- scope.redraw = function() {
- scope.update();
- };
- isUpdatingOptions = false;
- initialHandlers = {
- onSeriesVisibilityChange: function(_arg) {
- var index, newVisibility, series;
- series = _arg.series, index = _arg.index, newVisibility = _arg.newVisibility;
- scope.options.series[index].visible = newVisibility;
- return scope.$apply();
- }
- };
- scope.update = function() {
- var axes, columnWidth, dataPerSeries, dimensions, fn, handlers, isThumbnail, options, svg;
- options = _u.sanitizeOptions(scope.options, attrs.mode);
- handlers = angular.extend(initialHandlers, _u.getTooltipHandlers(options));
- dataPerSeries = _u.getDataPerSeries(scope.data, options);
- dimensions = _u.getDimensions(options, element, attrs);
- isThumbnail = attrs.mode === 'thumbnail';
- _u.clean(element[0]);
- svg = _u.bootstrap(element[0], id, dimensions);
- fn = function(key) {
- return (options.series.filter(function(s) {
- return s.axis === key && s.visible !== false;
- })).length > 0;
- };
- axes = _u.createAxes(svg, dimensions, options.axes).andAddThemIf({
- all: !isThumbnail,
- x: true,
- y: fn('y'),
- y2: fn('y2')
- });
- if (dataPerSeries.length) {
- _u.setScalesDomain(axes, scope.data, options.series, svg, options);
- }
- _u.createContent(svg, id, options, handlers);
- if (dataPerSeries.length) {
- columnWidth = _u.getBestColumnWidth(axes, dimensions, dataPerSeries, options);
- _u.drawArea(svg, axes, dataPerSeries, options, handlers).drawColumns(svg, axes, dataPerSeries, columnWidth, options, handlers, dispatch).drawLines(svg, axes, dataPerSeries, options, handlers);
- if (options.drawDots) {
- _u.drawDots(svg, axes, dataPerSeries, options, handlers, dispatch);
- }
- }
- if (options.drawLegend) {
- _u.drawLegend(svg, options.series, dimensions, handlers, dispatch);
- }
- if (options.tooltip.mode === 'scrubber') {
- return _u.createGlass(svg, dimensions, handlers, axes, dataPerSeries, options, dispatch, columnWidth);
- } else if (options.tooltip.mode !== 'none') {
- return _u.addTooltips(svg, dimensions, options.axes);
- }
- };
- updateEvents = function() {
- if (scope.oldclick) {
- dispatch.on('click', scope.oldclick);
- } else if (scope.click) {
- dispatch.on('click', scope.click);
- } else {
- dispatch.on('click', null);
- }
- if (scope.oldhover) {
- dispatch.on('hover', scope.oldhover);
- } else if (scope.hover) {
- dispatch.on('hover', scope.hover);
- } else {
- dispatch.on('hover', null);
- }
- if (scope.oldfocus) {
- dispatch.on('focus', scope.oldfocus);
- } else if (scope.focus) {
- dispatch.on('focus', scope.focus);
- } else {
- dispatch.on('focus', null);
- }
- if (scope.toggle) {
- return dispatch.on('toggle', scope.toggle);
- } else {
- return dispatch.on('toggle', null);
- }
- };
- promise = void 0;
- window_resize = function() {
- if (promise != null) {
- $timeout.cancel(promise);
- }
- return promise = $timeout(scope.redraw, 1);
- };
- $window.addEventListener('resize', window_resize);
- scope.$watch('data', scope.redraw, true);
- scope.$watch('options', scope.redraw, true);
- scope.$watchCollection('[click, hover, focus, toggle]', updateEvents);
- scope.$watchCollection('[oldclick, oldhover, oldfocus]', updateEvents);
- console.log('data', scope.data)
- window_resize();
- };
- return {
- replace: true,
- restrict: 'E',
- scope: {
- data: '=',
- options: '=',
- oldclick: '=click',
- oldhover: '=hover',
- oldfocus: '=focus',
- click: '=onClick',
- hover: '=onHover',
- focus: '=onFocus',
- toggle: '=onToggle'
- },
- template: '<div></div>',
- link: link
- };
- }
-]);
-
-mod = angular.module('n3charts.utils', []);
-
-mod.factory('n3utils', [
- '$window', '$log', '$rootScope', function($window, $log, $rootScope) {
- return {
- addPatterns: function(svg, series) {
- var pattern;
- pattern = svg.select('defs').selectAll('pattern').data(series.filter(function(s) {
- return s.striped;
- })).enter().append('pattern').attr({
- id: function(s) {
- return s.type + 'Pattern_' + s.index;
- },
- patternUnits: "userSpaceOnUse",
- x: 0,
- y: 0,
- width: 60,
- height: 60
- }).append('g').style({
- 'fill': function(s) {
- return s.color;
- },
- 'fill-opacity': 0.3
- });
- pattern.append('rect').style('fill-opacity', 0.3).attr('width', 60).attr('height', 60);
- pattern.append('path').attr('d', "M 10 0 l10 0 l -20 20 l 0 -10 z");
- pattern.append('path').attr('d', "M40 0 l10 0 l-50 50 l0 -10 z");
- pattern.append('path').attr('d', "M60 10 l0 10 l-40 40 l-10 0 z");
- return pattern.append('path').attr('d', "M60 40 l0 10 l-10 10 l -10 0 z");
- },
- drawArea: function(svg, scales, data, options) {
- var areaSeries, drawers;
- areaSeries = data.filter(function(series) {
- return series.type === 'area';
- });
- this.addPatterns(svg, areaSeries);
- drawers = {
- y: this.createLeftAreaDrawer(scales, options.lineMode, options.tension),
- y2: this.createRightAreaDrawer(scales, options.lineMode, options.tension)
- };
- svg.select('.content').selectAll('.areaGroup').data(areaSeries).enter().append('g').attr('class', function(s) {
- return 'areaGroup ' + 'series_' + s.index;
- }).append('path').attr('class', 'area').style('fill', function(s) {
- if (s.striped !== true) {
- return s.color;
- }
- return "url(#areaPattern_" + s.index + ")";
- }).style('opacity', function(s) {
- if (s.striped) {
- return '1';
- } else {
- return '0.3';
- }
- }).attr('d', function(d) {
- return drawers[d.axis](d.values);
- });
- return this;
- },
- createLeftAreaDrawer: function(scales, mode, tension) {
- return d3.svg.area().x(function(d) {
- return scales.xScale(d.x);
- }).y0(function(d) {
- return scales.yScale(d.y0);
- }).y1(function(d) {
- return scales.yScale(d.y0 + d.y);
- }).interpolate(mode).tension(tension);
- },
- createRightAreaDrawer: function(scales, mode, tension) {
- return d3.svg.area().x(function(d) {
- return scales.xScale(d.x);
- }).y0(function(d) {
- return scales.y2Scale(d.y0);
- }).y1(function(d) {
- return scales.y2Scale(d.y0 + d.y);
- }).interpolate(mode).tension(tension);
- },
- getPseudoColumns: function(data, options) {
- var keys, pseudoColumns;
- data = data.filter(function(s) {
- return s.type === 'column';
- });
- pseudoColumns = {};
- keys = [];
- data.forEach(function(series) {
- var i, inAStack, index;
- inAStack = false;
- options.stacks.forEach(function(stack, index) {
- var _ref;
- if ((series.id != null) && (_ref = series.id, __indexOf.call(stack.series, _ref) >= 0)) {
- pseudoColumns[series.id] = index;
- if (__indexOf.call(keys, index) < 0) {
- keys.push(index);
- }
- return inAStack = true;
- }
- });
- if (inAStack === false) {
- i = pseudoColumns[series.id] = index = keys.length;
- return keys.push(i);
- }
- });
- return {
- pseudoColumns: pseudoColumns,
- keys: keys
- };
- },
- getMinDelta: function(seriesData, key, scale, range) {
- return d3.min(seriesData.map(function(series) {
- return series.values.map(function(d) {
- return scale(d[key]);
- }).filter(function(e) {
- if (range) {
- return e >= range[0] && e <= range[1];
- } else {
- return true;
- }
- }).reduce(function(prev, cur, i, arr) {
- var diff;
- diff = i > 0 ? cur - arr[i - 1] : Number.MAX_VALUE;
- if (diff < prev) {
- return diff;
- } else {
- return prev;
- }
- }, Number.MAX_VALUE);
- }));
- },
- getBestColumnWidth: function(axes, dimensions, seriesData, options) {
- var colData, delta, innerWidth, keys, nSeries, pseudoColumns, _ref;
- if (!(seriesData && seriesData.length !== 0)) {
- return 10;
- }
- if ((seriesData.filter(function(s) {
- return s.type === 'column';
- })).length === 0) {
- return 10;
- }
- _ref = this.getPseudoColumns(seriesData, options), pseudoColumns = _ref.pseudoColumns, keys = _ref.keys;
- innerWidth = dimensions.width - dimensions.left - dimensions.right;
- colData = seriesData.filter(function(d) {
- return pseudoColumns.hasOwnProperty(d.id);
- });
- delta = this.getMinDelta(colData, 'x', axes.xScale, [0, innerWidth]);
- if (delta > innerWidth) {
- delta = 0.25 * innerWidth;
- }
- nSeries = keys.length;
- return parseInt((delta - options.columnsHGap) / nSeries);
- },
- getColumnAxis: function(data, columnWidth, options) {
- var keys, pseudoColumns, x1, _ref;
- _ref = this.getPseudoColumns(data, options), pseudoColumns = _ref.pseudoColumns, keys = _ref.keys;
- x1 = d3.scale.ordinal().domain(keys).rangeBands([0, keys.length * columnWidth], 0);
- return function(s) {
- var index;
- if (pseudoColumns[s.id] == null) {
- return 0;
- }
- index = pseudoColumns[s.id];
- return x1(index) - keys.length * columnWidth / 2;
- };
- },
- drawColumns: function(svg, axes, data, columnWidth, options, handlers, dispatch) {
- var colGroup, x1;
- data = data.filter(function(s) {
- return s.type === 'column';
- });
- x1 = this.getColumnAxis(data, columnWidth, options);
- data.forEach(function(s) {
- return s.xOffset = x1(s) + columnWidth * .5;
- });
- colGroup = svg.select('.content').selectAll('.columnGroup').data(data).enter().append("g").attr('class', function(s) {
- return 'columnGroup series_' + s.index;
- }).attr('transform', function(s) {
- return "translate(" + x1(s) + ",0)";
- });
- colGroup.each(function(series) {
- return d3.select(this).selectAll("rect").data(series.values).enter().append("rect").style({
- 'stroke': series.color,
- 'fill': series.color,
- 'stroke-opacity': function(d) {
- if (d.y === 0) {
- return '0';
- } else {
- return '1';
- }
- },
- 'stroke-width': '1px',
- 'fill-opacity': function(d) {
- if (d.y === 0) {
- return 0;
- } else {
- return 0.7;
- }
- }
- }).attr({
- width: columnWidth,
- x: function(d) {
- return axes.xScale(d.x);
- },
- height: function(d) {
- if (d.y === 0) {
- return axes[d.axis + 'Scale'].range()[0];
- }
- return Math.abs(axes[d.axis + 'Scale'](d.y0 + d.y) - axes[d.axis + 'Scale'](d.y0));
- },
- y: function(d) {
- if (d.y === 0) {
- return 0;
- } else {
- return axes[d.axis + 'Scale'](Math.max(0, d.y0 + d.y));
- }
- }
- }).on({
- 'click': function(d, i) {
- return dispatch.click(d, i);
- }
- }).on('mouseover', function(d, i) {
- dispatch.hover(d, i);
- return typeof handlers.onMouseOver === "function" ? handlers.onMouseOver(svg, {
- series: series,
- x: axes.xScale(d.x),
- y: axes[d.axis + 'Scale'](d.y0 + d.y),
- datum: d
- }, options.axes) : void 0;
- }).on('mouseout', function(d) {
- return typeof handlers.onMouseOut === "function" ? handlers.onMouseOut(svg) : void 0;
- });
- });
- return this;
- },
- drawDots: function(svg, axes, data, options, handlers, dispatch) {
- var dotGroup;
- dotGroup = svg.select('.content').selectAll('.dotGroup').data(data.filter(function(s) {
- var _ref;
- return ((_ref = s.type) === 'line' || _ref === 'area') && s.drawDots;
- })).enter().append('g');
- dotGroup.attr({
- "class": function(s) {
- return "dotGroup series_" + s.index;
- },
- fill: function(s) {
- return s.color;
- }
- }).selectAll('.dot').data(function(d) {
- return d.values;
- }).enter().append('circle').attr({
- 'class': 'dot',
- 'r': function(d) {
- return d.dotSize;
- },
- 'cx': function(d) {
- return axes.xScale(d.x);
- },
- 'cy': function(d) {
- return axes[d.axis + 'Scale'](d.y + d.y0);
- }
- }).style({
- 'stroke': 'white',
- 'stroke-width': '2px'
- }).on({
- 'click': function(d, i) {
- return dispatch.click(d, i);
- }
- }).on({
- 'mouseover': function(d, i) {
- return dispatch.hover(d, i);
- }
- });
- if (options.tooltip.mode !== 'none') {
- dotGroup.on('mouseover', function(series) {
- var d, target;
- target = d3.select(d3.event.target);
- d = target.datum();
- target.attr('r', function(s) {
- return s.dotSize + 2;
- });
- return typeof handlers.onMouseOver === "function" ? handlers.onMouseOver(svg, {
- series: series,
- x: target.attr('cx'),
- y: target.attr('cy'),
- datum: d
- }, options.axes) : void 0;
- }).on('mouseout', function(d) {
- d3.select(d3.event.target).attr('r', function(s) {
- return s.dotSize;
- });
- return typeof handlers.onMouseOut === "function" ? handlers.onMouseOut(svg) : void 0;
- });
- }
- return this;
- },
- getEventDispatcher: function() {
- var events;
- events = ['focus', 'hover', 'click', 'toggle'];
- return d3.dispatch.apply(this, events);
- },
- computeLegendLayout: function(svg, series, dimensions) {
- var cumul, i, j, leftLayout, leftWidths, padding, rightLayout, rightWidths, that, w;
- padding = 10;
- that = this;
- leftWidths = this.getLegendItemsWidths(svg, 'y');
- leftLayout = [0];
- i = 1;
- while (i < leftWidths.length) {
- leftLayout.push(leftWidths[i - 1] + leftLayout[i - 1] + padding);
- i++;
- }
- rightWidths = this.getLegendItemsWidths(svg, 'y2');
- if (!(rightWidths.length > 0)) {
- return [leftLayout];
- }
- w = dimensions.width - dimensions.right - dimensions.left;
- cumul = 0;
- rightLayout = [];
- j = rightWidths.length - 1;
- while (j >= 0) {
- rightLayout.push(w - cumul - rightWidths[j]);
- cumul += rightWidths[j] + padding;
- j--;
- }
- rightLayout.reverse();
- return [leftLayout, rightLayout];
- },
- getLegendItemsWidths: function(svg, axis) {
- var bbox, i, items, that, widths;
- that = this;
- bbox = function(t) {
- return that.getTextBBox(t).width;
- };
- items = svg.selectAll(".legendItem." + axis);
- if (!(items.length > 0)) {
- return [];
- }
- widths = [];
- i = 0;
- while (i < items[0].length) {
- widths.push(bbox(items[0][i]));
- i++;
- }
- return widths;
- },
- drawLegend: function(svg, series, dimensions, handlers, dispatch) {
- var d, groups, legend, that, translateLegends;
- that = this;
- legend = svg.append('g').attr('class', 'legend');
- d = 16;
- svg.select('defs').append('svg:clipPath').attr('id', 'legend-clip').append('circle').attr('r', d / 2);
- groups = legend.selectAll('.legendItem').data(series);
- groups.enter().append('g').on('click', function(s, i) {
- var visibility;
- visibility = !(s.visible !== false);
- dispatch.toggle(s, i, visibility);
- return typeof handlers.onSeriesVisibilityChange === "function" ? handlers.onSeriesVisibilityChange({
- series: s,
- index: i,
- newVisibility: visibility
- }) : void 0;
- });
- groups.attr({
- 'class': function(s, i) {
- return "legendItem series_" + i + " " + s.axis;
- },
- 'opacity': function(s, i) {
- if (s.visible === false) {
- that.toggleSeries(svg, i);
- return '0.2';
- }
- return '1';
- }
- }).each(function(s) {
- var item, _ref;
- item = d3.select(this);
- item.append('circle').attr({
- 'fill': s.color,
- 'stroke': s.color,
- 'stroke-width': '2px',
- 'r': d / 2
- });
- item.append('path').attr({
- 'clip-path': 'url(#legend-clip)',
- 'fill-opacity': (_ref = s.type) === 'area' || _ref === 'column' ? '1' : '0',
- 'fill': 'white',
- 'stroke': 'white',
- 'stroke-width': '2px',
- 'd': that.getLegendItemPath(s, d, d)
- });
- item.append('circle').attr({
- 'fill-opacity': 0,
- 'stroke': s.color,
- 'stroke-width': '2px',
- 'r': d / 2
- });
- return item.append('text').attr({
- 'class': function(d, i) {
- return "legendText series_" + i;
- },
- 'font-family': 'Courier',
- 'font-size': 10,
- 'transform': 'translate(13, 4)',
- 'text-rendering': 'geometric-precision'
- }).text(s.label || s.y);
- });
- translateLegends = function() {
- var left, right, _ref;
- _ref = that.computeLegendLayout(svg, series, dimensions), left = _ref[0], right = _ref[1];
- return groups.attr({
- 'transform': function(s, i) {
- if (s.axis === 'y') {
- return "translate(" + (left.shift()) + "," + (dimensions.height - 40) + ")";
- } else {
- return "translate(" + (right.shift()) + "," + (dimensions.height - 40) + ")";
- }
- }
- });
- };
- translateLegends();
- setTimeout(translateLegends, 0);
- return this;
- },
- getLegendItemPath: function(series, w, h) {
- var base_path, path;
- if (series.type === 'column') {
- path = 'M' + (-w / 3) + ' ' + (-h / 8) + ' l0 ' + h + ' ';
- path += 'M0' + ' ' + (-h / 3) + ' l0 ' + h + ' ';
- path += 'M' + w / 3 + ' ' + (-h / 10) + ' l0 ' + h + ' ';
- return path;
- }
- base_path = 'M-' + w / 2 + ' 0' + h / 3 + ' l' + w / 3 + ' -' + h / 3 + ' l' + w / 3 + ' ' + h / 3 + ' l' + w / 3 + ' -' + 2 * h / 3;
- if (series.type === 'area') {
- base_path + ' l0 ' + h + ' l-' + w + ' 0z';
- }
- return base_path;
- },
- toggleSeries: function(svg, index) {
- var isVisible;
- isVisible = false;
- svg.select('.content').selectAll('.series_' + index).style('display', function(s) {
- if (d3.select(this).style('display') === 'none') {
- isVisible = true;
- return 'initial';
- } else {
- isVisible = false;
- return 'none';
- }
- });
- return isVisible;
- },
- drawLines: function(svg, scales, data, options, handlers) {
- var drawers, interpolateData, lineGroup;
- drawers = {
- y: this.createLeftLineDrawer(scales, options.lineMode, options.tension),
- y2: this.createRightLineDrawer(scales, options.lineMode, options.tension)
- };
- lineGroup = svg.select('.content').selectAll('.lineGroup').data(data.filter(function(s) {
- var _ref;
- return (_ref = s.type) === 'line' || _ref === 'area';
- })).enter().append('g');
- lineGroup.style('stroke', function(s) {
- return s.color;
- }).attr('class', function(s) {
- return "lineGroup series_" + s.index;
- }).append('path').attr({
- "class": 'line',
- d: function(d) {
- return drawers[d.axis](d.values);
- }
- }).style({
- 'fill': 'none',
- 'stroke-width': function(s) {
- return s.thickness;
- },
- 'stroke-dasharray': function(s) {
- if (s.lineMode === 'dashed') {
- return '10,3';
- }
- return void 0;
- }
- });
- if (options.tooltip.interpolate) {
- interpolateData = function(series) {
- var datum, error, i, interpDatum, maxXPos, maxXValue, maxYPos, maxYValue, minXPos, minXValue, minYPos, minYValue, mousePos, target, valuesData, x, xPercentage, xVal, y, yPercentage, yVal, _i, _len;
- target = d3.select(d3.event.target);
- try {
- mousePos = d3.mouse(this);
- } catch (_error) {
- error = _error;
- mousePos = [0, 0];
- }
- valuesData = target.datum().values;
- for (i = _i = 0, _len = valuesData.length; _i < _len; i = ++_i) {
- datum = valuesData[i];
- x = scales.xScale(datum.x);
- y = scales.yScale(datum.y);
- if ((typeof minXPos === "undefined" || minXPos === null) || x < minXPos) {
- minXPos = x;
- minXValue = datum.x;
- }
- if ((typeof maxXPos === "undefined" || maxXPos === null) || x > maxXPos) {
- maxXPos = x;
- maxXValue = datum.x;
- }
- if ((typeof minYPos === "undefined" || minYPos === null) || y < minYPos) {
- minYPos = y;
- }
- if ((typeof maxYPos === "undefined" || maxYPos === null) || y > maxYPos) {
- maxYPos = y;
- }
- if ((typeof minYValue === "undefined" || minYValue === null) || datum.y < minYValue) {
- minYValue = datum.y;
- }
- if ((typeof maxYValue === "undefined" || maxYValue === null) || datum.y > maxYValue) {
- maxYValue = datum.y;
- }
- }
- xPercentage = (mousePos[0] - minXPos) / (maxXPos - minXPos);
- yPercentage = (mousePos[1] - minYPos) / (maxYPos - minYPos);
- xVal = Math.round(xPercentage * (maxXValue - minXValue) + minXValue);
- yVal = Math.round((1 - yPercentage) * (maxYValue - minYValue) + minYValue);
- interpDatum = {
- x: xVal,
- y: yVal
- };
- return typeof handlers.onMouseOver === "function" ? handlers.onMouseOver(svg, {
- series: series,
- x: mousePos[0],
- y: mousePos[1],
- datum: interpDatum
- }, options.axes) : void 0;
- };
- lineGroup.on('mousemove', interpolateData).on('mouseout', function(d) {
- return typeof handlers.onMouseOut === "function" ? handlers.onMouseOut(svg) : void 0;
- });
- }
- return this;
- },
- createLeftLineDrawer: function(scales, mode, tension) {
- return d3.svg.line().x(function(d) {
- return scales.xScale(d.x);
- }).y(function(d) {
- return scales.yScale(d.y + d.y0);
- }).interpolate(mode).tension(tension);
- },
- createRightLineDrawer: function(scales, mode, tension) {
- return d3.svg.line().x(function(d) {
- return scales.xScale(d.x);
- }).y(function(d) {
- return scales.y2Scale(d.y + d.y0);
- }).interpolate(mode).tension(tension);
- },
- getPixelCssProp: function(element, propertyName) {
- var string;
- string = $window.getComputedStyle(element, null).getPropertyValue(propertyName);
- return +string.replace(/px$/, '');
- },
- getDefaultMargins: function() {
- return {
- top: 20,
- right: 50,
- bottom: 60,
- left: 50
- };
- },
- getDefaultThumbnailMargins: function() {
- return {
- top: 1,
- right: 1,
- bottom: 2,
- left: 0
- };
- },
- getElementDimensions: function(element, width, height) {
- var bottom, dim, left, parent, right, top;
- dim = {};
- parent = element;
- top = this.getPixelCssProp(parent, 'padding-top');
- bottom = this.getPixelCssProp(parent, 'padding-bottom');
- left = this.getPixelCssProp(parent, 'padding-left');
- right = this.getPixelCssProp(parent, 'padding-right');
- dim.width = +(width || parent.offsetWidth || 900) - left - right;
- dim.height = +(height || parent.offsetHeight || 500) - top - bottom;
- return dim;
- },
- getDimensions: function(options, element, attrs) {
- var dim;
- dim = this.getElementDimensions(element[0].parentElement, attrs.width, attrs.height);
- dim = angular.extend(options.margin, dim);
- return dim;
- },
- clean: function(element) {
- return d3.select(element).on('keydown', null).on('keyup', null).select('svg').remove();
- },
- uuid: function() {
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
- var r, v;
- r = Math.random() * 16 | 0;
- v = c === 'x' ? r : r & 0x3 | 0x8;
- return v.toString(16);
- });
- },
- bootstrap: function(element, id, dimensions) {
- var defs, height, svg, width;
- d3.select(element).classed('chart', true);
- width = dimensions.width;
- height = dimensions.height;
- svg = d3.select(element).append('svg').attr({
- width: width,
- height: height
- }).append('g').attr('transform', 'translate(' + dimensions.left + ',' + dimensions.top + ')');
- defs = svg.append('defs').attr('class', 'patterns');
- defs.append('clipPath').attr('class', 'content-clip').attr('id', "content-clip-" + id).append('rect').attr({
- 'x': 0,
- 'y': 0,
- 'width': width - dimensions.left - dimensions.right,
- 'height': height - dimensions.top - dimensions.bottom
- });
- return svg;
- },
- createContent: function(svg, id, options) {
- var content;
- content = svg.append('g').attr('class', 'content');
- if (options.hideOverflow) {
- return content.attr('clip-path', "url(#content-clip-" + id + ")");
- }
- },
- createGlass: function(svg, dimensions, handlers, axes, data, options, dispatch, columnWidth) {
- var glass, scrubberGroup, that;
- that = this;
- glass = svg.append('g').attr({
- 'class': 'glass-container',
- 'opacity': 0
- });
- scrubberGroup = glass.selectAll('.scrubberItem').data(data).enter().append('g').attr('class', function(s, i) {
- return "scrubberItem series_" + i;
- });
- scrubberGroup.each(function(s, i) {
- var g, g2, item;
- item = d3.select(this);
- g = item.append('g').attr({
- 'class': "rightTT"
- });
- g.append('path').attr({
- 'class': "scrubberPath series_" + i,
- 'y': '-7px',
- 'fill': s.color
- });
- that.styleTooltip(g.append('text').style('text-anchor', 'start').attr({
- 'class': function(d, i) {
- return "scrubberText series_" + i;
- },
- 'height': '14px',
- 'transform': 'translate(7, 3)',
- 'text-rendering': 'geometric-precision'
- })).text(s.label || s.y);
- g2 = item.append('g').attr({
- 'class': "leftTT"
- });
- g2.append('path').attr({
- 'class': "scrubberPath series_" + i,
- 'y': '-7px',
- 'fill': s.color
- });
- that.styleTooltip(g2.append('text').style('text-anchor', 'end').attr({
- 'class': "scrubberText series_" + i,
- 'height': '14px',
- 'transform': 'translate(-13, 3)',
- 'text-rendering': 'geometric-precision'
- })).text(s.label || s.y);
- return item.append('circle').attr({
- 'class': "scrubberDot series_" + i,
- 'fill': 'white',
- 'stroke': s.color,
- 'stroke-width': '2px',
- 'r': 4
- });
- });
- return glass.append('rect').attr({
- "class": 'glass',
- width: dimensions.width - dimensions.left - dimensions.right,
- height: dimensions.height - dimensions.top - dimensions.bottom
- }).style('fill', 'white').style('fill-opacity', 0.000001).on('mouseover', function() {
- return handlers.onChartHover(svg, d3.select(this), axes, data, options, dispatch, columnWidth);
- });
- },
- getDataPerSeries: function(data, options) {
- var axes, layout, series, straightened;
- series = options.series;
- axes = options.axes;
- if (!(series && series.length && data && data.length)) {
- return [];
- }
- straightened = series.map(function(s, i) {
- var seriesData;
- seriesData = {
- index: i,
- name: s.y,
- values: [],
- color: s.color,
- axis: s.axis || 'y',
- xOffset: 0,
- type: s.type,
- thickness: s.thickness,
- drawDots: s.drawDots !== false
- };
- if (s.dotSize != null) {
- seriesData.dotSize = s.dotSize;
- }
- if (s.striped === true) {
- seriesData.striped = true;
- }
- if (s.lineMode != null) {
- seriesData.lineMode = s.lineMode;
- }
- if (s.id) {
- seriesData.id = s.id;
- }
- data.filter(function(row) {
- return row[s.y] != null;
- }).forEach(function(row) {
- var d;
- d = {
- x: row[options.axes.x.key],
- y: row[s.y],
- y0: 0,
- axis: s.axis || 'y'
- };
- if (s.dotSize != null) {
- d.dotSize = s.dotSize;
- }
- return seriesData.values.push(d);
- });
- return seriesData;
- });
- if ((options.stacks == null) || options.stacks.length === 0) {
- return straightened;
- }
- layout = d3.layout.stack().values(function(s) {
- return s.values;
- });
- options.stacks.forEach(function(stack) {
- var layers;
- if (!(stack.series.length > 0)) {
- return;
- }
- layers = straightened.filter(function(s, i) {
- var _ref;
- return (s.id != null) && (_ref = s.id, __indexOf.call(stack.series, _ref) >= 0);
- });
- return layout(layers);
- });
- return straightened;
- },
- estimateSideTooltipWidth: function(svg, text) {
- var bbox, t;
- t = svg.append('text');
- t.text('' + text);
- this.styleTooltip(t);
- bbox = this.getTextBBox(t[0][0]);
- t.remove();
- return bbox;
- },
- getTextBBox: function(svgTextElement) {
- var error;
- if (svgTextElement !== null) {
- try {
- return svgTextElement.getBBox();
- } catch (_error) {
- error = _error;
- return {
- height: 0,
- width: 0,
- y: 0,
- x: 0
- };
- }
- }
- return {};
- },
- getWidestTickWidth: function(svg, axisKey) {
- var bbox, max, ticks, _ref;
- max = 0;
- bbox = this.getTextBBox;
- ticks = svg.select("." + axisKey + ".axis").selectAll('.tick');
- if ((_ref = ticks[0]) != null) {
- _ref.forEach(function(t) {
- return max = Math.max(max, bbox(t).width);
- });
- }
- return max;
- },
- getWidestOrdinate: function(data, series, options) {
- var widest;
- widest = '';
- data.forEach(function(row) {
- return series.forEach(function(series) {
- var v, _ref;
- v = row[series.y];
- if ((series.axis != null) && ((_ref = options.axes[series.axis]) != null ? _ref.ticksFormatter : void 0)) {
- v = options.axes[series.axis].ticksFormatter(v);
- }
- if (v == null) {
- return;
- }
- if (('' + v).length > ('' + widest).length) {
- return widest = v;
- }
- });
- });
- return widest;
- },
- getDefaultOptions: function() {
- return {
- tooltip: {
- mode: 'scrubber'
- },
- lineMode: 'linear',
- tension: 0.7,
- margin: this.getDefaultMargins(),
- axes: {
- x: {
- type: 'linear',
- key: 'x'
- },
- y: {
- type: 'linear'
- }
- },
- series: [],
- drawLegend: true,
- drawDots: true,
- stacks: [],
- columnsHGap: 5,
- hideOverflow: false
- };
- },
- sanitizeOptions: function(options, mode) {
- var defaultMargin;
- if (options == null) {
- options = {};
- }
- if (mode === 'thumbnail') {
- options.drawLegend = false;
- options.drawDots = false;
- options.tooltip = {
- mode: 'none',
- interpolate: false
- };
- }
- options.series = this.sanitizeSeriesOptions(options.series);
- options.stacks = this.sanitizeSeriesStacks(options.stacks, options.series);
- options.axes = this.sanitizeAxes(options.axes, this.haveSecondYAxis(options.series));
- options.tooltip = this.sanitizeTooltip(options.tooltip);
- options.margin = this.sanitizeMargins(options.margin);
- options.lineMode || (options.lineMode = this.getDefaultOptions().lineMode);
- options.tension = /^\d+(\.\d+)?$/.test(options.tension) ? options.tension : this.getDefaultOptions().tension;
- options.drawLegend = options.drawLegend !== false;
- options.drawDots = options.drawDots !== false;
- if (!angular.isNumber(options.columnsHGap)) {
- options.columnsHGap = 5;
- }
- options.hideOverflow = options.hideOverflow || false;
- defaultMargin = mode === 'thumbnail' ? this.getDefaultThumbnailMargins() : this.getDefaultMargins();
- options.series = angular.extend(this.getDefaultOptions().series, options.series);
- options.axes = angular.extend(this.getDefaultOptions().axes, options.axes);
- options.tooltip = angular.extend(this.getDefaultOptions().tooltip, options.tooltip);
- options.margin = angular.extend(defaultMargin, options.margin);
- return options;
- },
- sanitizeMargins: function(options) {
- var attrs, margin, opt, value;
- attrs = ['top', 'right', 'bottom', 'left'];
- margin = {};
- for (opt in options) {
- value = options[opt];
- if (__indexOf.call(attrs, opt) >= 0) {
- margin[opt] = parseFloat(value);
- }
- }
- return margin;
- },
- sanitizeSeriesStacks: function(stacks, series) {
- var seriesKeys;
- if (stacks == null) {
- return [];
- }
- seriesKeys = {};
- series.forEach(function(s) {
- return seriesKeys[s.id] = s;
- });
- stacks.forEach(function(stack) {
- return stack.series.forEach(function(id) {
- var s;
- s = seriesKeys[id];
- if (s != null) {
- if (s.axis !== stack.axis) {
- return $log.warn("Series " + id + " is not on the same axis as its stack");
- }
- } else {
- if (!s) {
- return $log.warn("Unknown series found in stack : " + id);
- }
- }
- });
- });
- return stacks;
- },
- sanitizeTooltip: function(options) {
- var _ref;
- if (!options) {
- return {
- mode: 'scrubber'
- };
- }
- if ((_ref = options.mode) !== 'none' && _ref !== 'axes' && _ref !== 'scrubber') {
- options.mode = 'scrubber';
- }
- if (options.mode === 'scrubber') {
- delete options.interpolate;
- } else {
- options.interpolate = !!options.interpolate;
- }
- if (options.mode === 'scrubber' && options.interpolate) {
- throw new Error('Interpolation is not supported for scrubber tooltip mode.');
- }
- return options;
- },
- sanitizeSeriesOptions: function(options) {
- var colors, knownIds;
- if (options == null) {
- return [];
- }
- colors = d3.scale.category10();
- knownIds = {};
- options.forEach(function(s, i) {
- if (knownIds[s.id] != null) {
- throw new Error("Twice the same ID (" + s.id + ") ? Really ?");
- }
- if (s.id != null) {
- return knownIds[s.id] = s;
- }
- });
- options.forEach(function(s, i) {
- var cnt, _ref, _ref1, _ref2, _ref3;
- s.axis = ((_ref = s.axis) != null ? _ref.toLowerCase() : void 0) !== 'y2' ? 'y' : 'y2';
- s.color || (s.color = colors(i));
- s.type = (_ref1 = s.type) === 'line' || _ref1 === 'area' || _ref1 === 'column' ? s.type : "line";
- if (s.type === 'column') {
- delete s.thickness;
- delete s.lineMode;
- delete s.drawDots;
- delete s.dotSize;
- } else if (!/^\d+px$/.test(s.thickness)) {
- s.thickness = '1px';
- }
- if ((_ref2 = s.type) === 'line' || _ref2 === 'area') {
- if ((_ref3 = s.lineMode) !== 'dashed') {
- delete s.lineMode;
- }
- if (s.drawDots !== false && (s.dotSize == null)) {
- s.dotSize = 2;
- }
- }
- if (s.id == null) {
- cnt = 0;
- while (knownIds["series_" + cnt] != null) {
- cnt++;
- }
- s.id = "series_" + cnt;
- knownIds[s.id] = s;
- }
- if (s.drawDots === false) {
- return delete s.dotSize;
- }
- });
- return options;
- },
- sanitizeAxes: function(axesOptions, secondAxis) {
- var _base;
- if (axesOptions == null) {
- axesOptions = {};
- }
- axesOptions.x = this.sanitizeAxisOptions(axesOptions.x);
- (_base = axesOptions.x).key || (_base.key = "x");
- axesOptions.y = this.sanitizeAxisOptions(axesOptions.y);
- if (secondAxis) {
- axesOptions.y2 = this.sanitizeAxisOptions(axesOptions.y2);
- }
- return axesOptions;
- },
- sanitizeExtrema: function(options) {
- var max, min;
- min = this.getSanitizedNumber(options.min);
- if (min != null) {
- options.min = min;
- } else {
- delete options.min;
- }
- max = this.getSanitizedNumber(options.max);
- if (max != null) {
- return options.max = max;
- } else {
- return delete options.max;
- }
- },
- getSanitizedNumber: function(value) {
- var number;
- if (value == null) {
- return void 0;
- }
- number = parseFloat(value);
- if (isNaN(number)) {
- $log.warn("Invalid extremum value : " + value + ", deleting it.");
- return void 0;
- }
- return number;
- },
- sanitizeAxisOptions: function(options) {
- if (options == null) {
- return {
- type: 'linear'
- };
- }
- options.type || (options.type = 'linear');
- if (options.ticksRotate != null) {
- options.ticksRotate = this.getSanitizedNumber(options.ticksRotate);
- }
- if (options.labelFunction != null) {
- options.ticksFormatter = options.labelFunction;
- }
- if (options.ticksFormat != null) {
- if (options.type === 'date') {
- options.ticksFormatter = d3.time.format(options.ticksFormat);
- } else {
- options.ticksFormatter = d3.format(options.ticksFormat);
- }
- if (options.tooltipFormatter == null) {
- options.tooltipFormatter = options.ticksFormatter;
- }
- }
- if (options.tooltipFormat != null) {
- if (options.type === 'date') {
- options.tooltipFormatter = d3.time.format(options.tooltipFormat);
- } else {
- options.tooltipFormatter = d3.format(options.tooltipFormat);
- }
- }
- if (options.ticksInterval != null) {
- options.ticksInterval = this.getSanitizedNumber(options.ticksInterval);
- }
- this.sanitizeExtrema(options);
- return options;
- },
- createAxes: function(svg, dimensions, axesOptions) {
- var createY2Axis, height, style, width, x, xAxis, y, y2, y2Axis, yAxis;
- createY2Axis = axesOptions.y2 != null;
- width = dimensions.width;
- height = dimensions.height;
- width = width - dimensions.left - dimensions.right;
- height = height - dimensions.top - dimensions.bottom;
- x = void 0;
- if (axesOptions.x.type === 'date') {
- x = d3.time.scale().rangeRound([0, width]);
- } else {
- x = d3.scale.linear().rangeRound([0, width]);
- }
- xAxis = this.createAxis(x, 'x', axesOptions);
- y = void 0;
- if (axesOptions.y.type === 'log') {
- y = d3.scale.log().clamp(true).rangeRound([height, 0]);
- } else {
- y = d3.scale.linear().rangeRound([height, 0]);
- }
- y.clamp(true);
- yAxis = this.createAxis(y, 'y', axesOptions);
- y2 = void 0;
- if (createY2Axis && axesOptions.y2.type === 'log') {
- y2 = d3.scale.log().clamp(true).rangeRound([height, 0]);
- } else {
- y2 = d3.scale.linear().rangeRound([height, 0]);
- }
- y2.clamp(true);
- y2Axis = this.createAxis(y2, 'y2', axesOptions);
- style = function(group) {
- group.style({
- 'font': '10px Courier',
- 'shape-rendering': 'crispEdges'
- });
- return group.selectAll('path').style({
- 'fill': 'none',
- 'stroke': '#000'
- });
- };
- return {
- xScale: x,
- yScale: y,
- y2Scale: y2,
- xAxis: xAxis,
- yAxis: yAxis,
- y2Axis: y2Axis,
- andAddThemIf: function(conditions) {
- if (!!conditions.all) {
- if (!!conditions.x) {
- svg.append('g').attr('class', 'x axis').attr('transform', 'translate(0,' + height + ')').call(xAxis).call(style);
- }
- if (!!conditions.y) {
- svg.append('g').attr('class', 'y axis').call(yAxis).call(style);
- }
- if (createY2Axis && !!conditions.y2) {
- svg.append('g').attr('class', 'y2 axis').attr('transform', 'translate(' + width + ', 0)').call(y2Axis).call(style);
- }
- }
- return {
- xScale: x,
- yScale: y,
- y2Scale: y2,
- xAxis: xAxis,
- yAxis: yAxis,
- y2Axis: y2Axis
- };
- }
- };
- },
- createAxis: function(scale, key, options) {
- var axis, o, sides;
- sides = {
- x: 'bottom',
- y: 'left',
- y2: 'right'
- };
- o = options[key];
- axis = d3.svg.axis().scale(scale).orient(sides[key]).tickFormat(o != null ? o.ticksFormatter : void 0);
- if (o == null) {
- return axis;
- }
- if (angular.isArray(o.ticks)) {
- axis.tickValues(o.ticks);
- } else if (angular.isNumber(o.ticks)) {
- axis.ticks(o.ticks);
- } else if (angular.isFunction(o.ticks)) {
- axis.ticks(o.ticks, o.ticksInterval);
- }
- return axis;
- },
- setScalesDomain: function(scales, data, series, svg, options) {
- var axis, y2Domain, yDomain;
- this.setXScale(scales.xScale, data, series, options.axes);
- axis = svg.selectAll('.x.axis').call(scales.xAxis);
- if (options.axes.x.ticksRotate != null) {
- axis.selectAll('.tick>text').attr('dy', null).attr('transform', 'translate(0,5) rotate(' + options.axes.x.ticksRotate + ' 0,6)').style('text-anchor', options.axes.x.ticksRotate >= 0 ? 'start' : 'end');
- }
- if ((series.filter(function(s) {
- return s.axis === 'y' && s.visible !== false;
- })).length > 0) {
- yDomain = this.getVerticalDomain(options, data, series, 'y');
- scales.yScale.domain(yDomain).nice();
- axis = svg.selectAll('.y.axis').call(scales.yAxis);
- if (options.axes.y.ticksRotate != null) {
- axis.selectAll('.tick>text').attr('transform', 'rotate(' + options.axes.y.ticksRotate + ' -6,0)').style('text-anchor', 'end');
- }
- }
- if ((series.filter(function(s) {
- return s.axis === 'y2' && s.visible !== false;
- })).length > 0) {
- y2Domain = this.getVerticalDomain(options, data, series, 'y2');
- scales.y2Scale.domain(y2Domain).nice();
- axis = svg.selectAll('.y2.axis').call(scales.y2Axis);
- if (options.axes.y2.ticksRotate != null) {
- return axis.selectAll('.tick>text').attr('transform', 'rotate(' + options.axes.y2.ticksRotate + ' 6,0)').style('text-anchor', 'start');
- }
- }
- },
- getVerticalDomain: function(options, data, series, key) {
- var domain, mySeries, o;
- if (!(o = options.axes[key])) {
- return [];
- }
- if ((o.ticks != null) && angular.isArray(o.ticks)) {
- return [o.ticks[0], o.ticks[o.ticks.length - 1]];
- }
- mySeries = series.filter(function(s) {
- return s.axis === key && s.visible !== false;
- });
- domain = this.yExtent(series.filter(function(s) {
- return s.axis === key && s.visible !== false;
- }), data, options.stacks.filter(function(stack) {
- return stack.axis === key;
- }));
- if (o.type === 'log') {
- domain[0] = domain[0] === 0 ? 0.001 : domain[0];
- }
- if (o.min != null) {
- domain[0] = o.min;
- }
- if (o.max != null) {
- domain[1] = o.max;
- }
- return domain;
- },
- yExtent: function(series, data, stacks) {
- var groups, maxY, minY;
- minY = Number.POSITIVE_INFINITY;
- maxY = Number.NEGATIVE_INFINITY;
- groups = [];
- stacks.forEach(function(stack) {
- return groups.push(stack.series.map(function(id) {
- return (series.filter(function(s) {
- return s.id === id;
- }))[0];
- }));
- });
- series.forEach(function(series, i) {
- var isInStack;
- isInStack = false;
- stacks.forEach(function(stack) {
- var _ref;
- if (_ref = series.id, __indexOf.call(stack.series, _ref) >= 0) {
- return isInStack = true;
- }
- });
- if (!isInStack) {
- return groups.push([series]);
- }
- });
- groups.forEach(function(group) {
- group = group.filter(Boolean);
- minY = Math.min(minY, d3.min(data, function(d) {
- return group.reduce((function(a, s) {
- return Math.min(a, d[s.y]);
- }), Number.POSITIVE_INFINITY);
- }));
- return maxY = Math.max(maxY, d3.max(data, function(d) {
- return group.reduce((function(a, s) {
- return a + d[s.y];
- }), 0);
- }));
- });
- if (minY === maxY) {
- if (minY > 0) {
- return [0, minY * 2];
- } else {
- return [minY * 2, 0];
- }
- }
- return [minY, maxY];
- },
- setXScale: function(xScale, data, series, axesOptions) {
- var domain, o;
- domain = this.xExtent(data, axesOptions.x.key);
- if (series.filter(function(s) {
- return s.type === 'column';
- }).length) {
- this.adjustXDomainForColumns(domain, data, axesOptions.x.key);
- }
- o = axesOptions.x;
- if (o.min != null) {
- domain[0] = o.min;
- }
- if (o.max != null) {
- domain[1] = o.max;
- }
- return xScale.domain(domain);
- },
- xExtent: function(data, key) {
- var from, to, _ref;
- _ref = d3.extent(data, function(d) {
- return d[key];
- }), from = _ref[0], to = _ref[1];
- if (from === to) {
- if (from > 0) {
- return [0, from * 2];
- } else {
- return [from * 2, 0];
- }
- }
- return [from, to];
- },
- adjustXDomainForColumns: function(domain, data, field) {
- var step;
- step = this.getAverageStep(data, field);
- if (angular.isDate(domain[0])) {
- domain[0] = new Date(domain[0].getTime() - step);
- return domain[1] = new Date(domain[1].getTime() + step);
- } else {
- domain[0] = domain[0] - step;
- return domain[1] = domain[1] + step;
- }
- },
- getAverageStep: function(data, field) {
- var i, n, sum;
- if (!(data.length > 1)) {
- return 0;
- }
- sum = 0;
- n = data.length - 1;
- i = 0;
- while (i < n) {
- sum += data[i + 1][field] - data[i][field];
- i++;
- }
- return sum / n;
- },
- haveSecondYAxis: function(series) {
- return !series.every(function(s) {
- return s.axis !== 'y2';
- });
- },
- showScrubber: function(svg, glass, axes, data, options, dispatch, columnWidth) {
- var that;
- that = this;
- glass.on('mousemove', function() {
- svg.selectAll('.glass-container').attr('opacity', 1);
- return that.updateScrubber(svg, d3.mouse(this), axes, data, options, dispatch, columnWidth);
- });
- return glass.on('mouseout', function() {
- glass.on('mousemove', null);
- return svg.selectAll('.glass-container').attr('opacity', 0);
- });
- },
- getClosestPoint: function(values, xValue) {
- var d, d0, d1, i, xBisector;
- xBisector = d3.bisector(function(d) {
- return d.x;
- }).left;
- i = xBisector(values, xValue);
- if (i === 0) {
- return values[0];
- }
- if (i > values.length - 1) {
- return values[values.length - 1];
- }
- d0 = values[i - 1];
- d1 = values[i];
- d = xValue - d0.x > d1.x - xValue ? d1 : d0;
- return d;
- },
- updateScrubber: function(svg, _arg, axes, data, options, dispatch, columnWidth) {
- var ease, positions, that, tickLength, x, y;
- x = _arg[0], y = _arg[1];
- ease = function(element) {
- return element.transition().duration(50);
- };
- that = this;
- positions = [];
- data.forEach(function(series, index) {
- var color, item, lText, left, rText, right, side, sizes, text, v, xInvert, xPos, yInvert;
- item = svg.select(".scrubberItem.series_" + index);
- if (options.series[index].visible === false) {
- item.attr('opacity', 0);
- return;
- }
- item.attr('opacity', 1);
- xInvert = axes.xScale.invert(x);
- yInvert = axes.yScale.invert(y);
- v = that.getClosestPoint(series.values, xInvert);
- dispatch.focus(v, series.values.indexOf(v), [xInvert, yInvert]);
- text = v.x + ' : ' + v.y;
- if (options.tooltip.formatter) {
- text = options.tooltip.formatter(v.x, v.y, options.series[index]);
- }
- right = item.select('.rightTT');
- rText = right.select('text');
- rText.text(text);
- left = item.select('.leftTT');
- lText = left.select('text');
- lText.text(text);
- sizes = {
- right: that.getTextBBox(rText[0][0]).width + 5,
- left: that.getTextBBox(lText[0][0]).width + 5
- };
- side = series.axis === 'y2' ? 'right' : 'left';
- xPos = axes.xScale(v.x);
- if (side === 'left') {
- if (xPos + that.getTextBBox(lText[0][0]).x - 10 < 0) {
- side = 'right';
- }
- } else if (side === 'right') {
- if (xPos + sizes.right > that.getTextBBox(svg.select('.glass')[0][0]).width) {
- side = 'left';
- }
- }
- if (side === 'left') {
- ease(right).attr('opacity', 0);
- ease(left).attr('opacity', 1);
- } else {
- ease(right).attr('opacity', 1);
- ease(left).attr('opacity', 0);
- }
- positions[index] = {
- index: index,
- x: xPos,
- y: axes[v.axis + 'Scale'](v.y + v.y0),
- side: side,
- sizes: sizes
- };
- color = angular.isFunction(series.color) ? series.color(v, series.values.indexOf(v)) : series.color;
- item.selectAll('circle').attr('stroke', color);
- return item.selectAll('path').attr('fill', color);
- });
- positions = this.preventOverlapping(positions);
- tickLength = Math.max(15, 100 / columnWidth);
- return data.forEach(function(series, index) {
- var item, p, tt, xOffset;
- if (options.series[index].visible === false) {
- return;
- }
- p = positions[index];
- item = svg.select(".scrubberItem.series_" + index);
- tt = item.select("." + p.side + "TT");
- xOffset = (p.side === 'left' ? series.xOffset : -series.xOffset);
- tt.select('text').attr('transform', function() {
- if (p.side === 'left') {
- return "translate(" + (-3 - tickLength - xOffset) + ", " + (p.labelOffset + 3) + ")";
- } else {
- return "translate(" + (4 + tickLength + xOffset) + ", " + (p.labelOffset + 3) + ")";
- }
- });
- tt.select('path').attr('d', that.getScrubberPath(p.sizes[p.side] + 1, p.labelOffset, p.side, tickLength + xOffset));
- return ease(item).attr({
- 'transform': "translate(" + (positions[index].x + series.xOffset) + ", " + positions[index].y + ")"
- });
- });
- },
- getScrubberPath: function(w, yOffset, side, padding) {
- var h, p, xdir, ydir;
- h = 18;
- p = padding;
- w = w;
- xdir = side === 'left' ? 1 : -1;
- ydir = 1;
- if (yOffset !== 0) {
- ydir = Math.abs(yOffset) / yOffset;
- }
- yOffset || (yOffset = 0);
- return ["m0 0", "l" + xdir + " 0", "l0 " + (yOffset + ydir), "l" + (-xdir * (p + 1)) + " 0", "l0 " + (-h / 2 - ydir), "l" + (-xdir * w) + " 0", "l0 " + h, "l" + (xdir * w) + " 0", "l0 " + (-h / 2 - ydir), "l" + (xdir * (p - 1)) + " 0", "l0 " + (-yOffset + ydir), "l1 0", "z"].join('');
- },
- preventOverlapping: function(positions) {
- var abscissas, getNeighbours, h, offset;
- h = 18;
- abscissas = {};
- positions.forEach(function(p) {
- var _name;
- abscissas[_name = p.x] || (abscissas[_name] = {
- left: [],
- right: []
- });
- return abscissas[p.x][p.side].push(p);
- });
- getNeighbours = function(side) {
- var foundNeighbour, neighbourhood, neighbours, neighboursForX, p, sides, x, y, _ref;
- neighbours = [];
- for (x in abscissas) {
- sides = abscissas[x];
- if (sides[side].length === 0) {
- continue;
- }
- neighboursForX = {};
- while (sides[side].length > 0) {
- p = sides[side].pop();
- foundNeighbour = false;
- for (y in neighboursForX) {
- neighbourhood = neighboursForX[y];
- if ((+y - h <= (_ref = p.y) && _ref <= +y + h)) {
- neighbourhood.push(p);
- foundNeighbour = true;
- }
- }
- if (!foundNeighbour) {
- neighboursForX[p.y] = [p];
- }
- }
- neighbours.push(neighboursForX);
- }
- return neighbours;
- };
- offset = function(neighboursForAbscissas) {
- var abs, n, neighbours, start, step, xNeighbours, y;
- step = 20;
- for (abs in neighboursForAbscissas) {
- xNeighbours = neighboursForAbscissas[abs];
- for (y in xNeighbours) {
- neighbours = xNeighbours[y];
- n = neighbours.length;
- if (n === 1) {
- neighbours[0].labelOffset = 0;
- continue;
- }
- neighbours = neighbours.sort(function(a, b) {
- return a.y - b.y;
- });
- if (n % 2 === 0) {
- start = -(step / 2) * (n / 2);
- } else {
- start = -(n - 1) / 2 * step;
- }
- neighbours.forEach(function(neighbour, i) {
- return neighbour.labelOffset = start + step * i;
- });
- }
- }
- };
- offset(getNeighbours('left'));
- offset(getNeighbours('right'));
- return positions;
- },
- getTooltipHandlers: function(options) {
- if (options.tooltip.mode === 'scrubber') {
- return {
- onChartHover: angular.bind(this, this.showScrubber)
- };
- } else {
- return {
- onMouseOver: angular.bind(this, this.onMouseOver),
- onMouseOut: angular.bind(this, this.onMouseOut)
- };
- }
- },
- styleTooltip: function(d3TextElement) {
- return d3TextElement.attr({
- 'font-family': 'monospace',
- 'font-size': 10,
- 'fill': 'white',
- 'text-rendering': 'geometric-precision'
- });
- },
- addTooltips: function(svg, dimensions, axesOptions) {
- var h, height, p, w, width, xTooltip, y2Tooltip, yTooltip;
- width = dimensions.width;
- height = dimensions.height;
- width = width - dimensions.left - dimensions.right;
- height = height - dimensions.top - dimensions.bottom;
- w = 24;
- h = 18;
- p = 5;
- xTooltip = svg.append('g').attr({
- 'id': 'xTooltip',
- 'class': 'xTooltip',
- 'opacity': 0
- });
- xTooltip.append('path').attr('transform', "translate(0," + (height + 1) + ")");
- this.styleTooltip(xTooltip.append('text').style('text-anchor', 'middle').attr({
- 'width': w,
- 'height': h,
- 'transform': 'translate(0,' + (height + 19) + ')'
- }));
- yTooltip = svg.append('g').attr({
- id: 'yTooltip',
- "class": 'yTooltip',
- opacity: 0
- });
- yTooltip.append('path');
- this.styleTooltip(yTooltip.append('text').attr({
- 'width': h,
- 'height': w
- }));
- if (axesOptions.y2 != null) {
- y2Tooltip = svg.append('g').attr({
- 'id': 'y2Tooltip',
- 'class': 'y2Tooltip',
- 'opacity': 0,
- 'transform': 'translate(' + width + ',0)'
- });
- y2Tooltip.append('path');
- return this.styleTooltip(y2Tooltip.append('text').attr({
- 'width': h,
- 'height': w
- }));
- }
- },
- onMouseOver: function(svg, event, axesOptions) {
- this.updateXTooltip(svg, event, axesOptions.x);
- if (event.series.axis === 'y2') {
- return this.updateY2Tooltip(svg, event, axesOptions.y2);
- } else {
- return this.updateYTooltip(svg, event, axesOptions.y);
- }
- },
- onMouseOut: function(svg) {
- return this.hideTooltips(svg);
- },
- updateXTooltip: function(svg, _arg, xAxisOptions) {
- var color, datum, label, series, textX, x, xTooltip, _f;
- x = _arg.x, datum = _arg.datum, series = _arg.series;
- xTooltip = svg.select("#xTooltip");
- xTooltip.transition().attr({
- 'opacity': 1.0,
- 'transform': "translate(" + x + ",0)"
- });
- _f = xAxisOptions.tooltipFormatter;
- textX = _f ? _f(datum.x) : datum.x;
- label = xTooltip.select('text');
- label.text(textX);
- color = angular.isFunction(series.color) ? series.color(datum, series.values.indexOf(datum)) : series.color;
- return xTooltip.select('path').style('fill', color).attr('d', this.getXTooltipPath(label[0][0]));
- },
- getXTooltipPath: function(textElement) {
- var h, p, w;
- w = Math.max(this.getTextBBox(textElement).width, 15);
- h = 18;
- p = 5;
- return 'm-' + w / 2 + ' ' + p + ' ' + 'l0 ' + h + ' ' + 'l' + w + ' 0 ' + 'l0 ' + '' + (-h) + 'l' + (-w / 2 + p) + ' 0 ' + 'l' + (-p) + ' -' + h / 4 + ' ' + 'l' + (-p) + ' ' + h / 4 + ' ' + 'l' + (-w / 2 + p) + ' 0z';
- },
- updateYTooltip: function(svg, _arg, yAxisOptions) {
- var color, datum, label, series, textY, w, y, yTooltip, _f;
- y = _arg.y, datum = _arg.datum, series = _arg.series;
- yTooltip = svg.select("#yTooltip");
- yTooltip.transition().attr({
- 'opacity': 1.0,
- 'transform': "translate(0, " + y + ")"
- });
- _f = yAxisOptions.tooltipFormatter;
- textY = _f ? _f(datum.y) : datum.y;
- label = yTooltip.select('text');
- label.text(textY);
- w = this.getTextBBox(label[0][0]).width + 5;
- label.attr({
- 'transform': 'translate(' + (-w - 2) + ',3)',
- 'width': w
- });
- color = angular.isFunction(series.color) ? series.color(datum, series.values.indexOf(datum)) : series.color;
- return yTooltip.select('path').style('fill', color).attr('d', this.getYTooltipPath(w));
- },
- updateY2Tooltip: function(svg, _arg, yAxisOptions) {
- var color, datum, label, series, textY, w, y, y2Tooltip, _f;
- y = _arg.y, datum = _arg.datum, series = _arg.series;
- y2Tooltip = svg.select("#y2Tooltip");
- y2Tooltip.transition().attr('opacity', 1.0);
- _f = yAxisOptions.tooltipFormatter;
- textY = _f ? _f(datum.y) : datum.y;
- label = y2Tooltip.select('text');
- label.text(textY);
- w = this.getTextBBox(label[0][0]).width + 5;
- label.attr({
- 'transform': 'translate(7, ' + (parseFloat(y) + 3) + ')',
- 'w': w
- });
- color = angular.isFunction(series.color) ? series.color(datum, series.values.indexOf(datum)) : series.color;
- return y2Tooltip.select('path').style('fill', color).attr({
- 'd': this.getY2TooltipPath(w),
- 'transform': 'translate(0, ' + y + ')'
- });
- },
- getYTooltipPath: function(w) {
- var h, p;
- h = 18;
- p = 5;
- return 'm0 0' + 'l' + (-p) + ' ' + (-p) + ' ' + 'l0 ' + (-h / 2 + p) + ' ' + 'l' + (-w) + ' 0 ' + 'l0 ' + h + ' ' + 'l' + w + ' 0 ' + 'l0 ' + (-h / 2 + p) + 'l' + (-p) + ' ' + p + 'z';
- },
- getY2TooltipPath: function(w) {
- var h, p;
- h = 18;
- p = 5;
- return 'm0 0' + 'l' + p + ' ' + p + ' ' + 'l0 ' + (h / 2 - p) + ' ' + 'l' + w + ' 0 ' + 'l0 ' + (-h) + ' ' + 'l' + (-w) + ' 0 ' + 'l0 ' + (h / 2 - p) + ' ' + 'l' + (-p) + ' ' + p + 'z';
- },
- hideTooltips: function(svg) {
- svg.select("#xTooltip").transition().attr('opacity', 0);
- svg.select("#yTooltip").transition().attr('opacity', 0);
- return svg.select("#y2Tooltip").transition().attr('opacity', 0);
- }
- };
- }
-]);
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+<!--
+ Copyright 2016 RIFT.IO Inc
+
+ 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.
+-->
<header class="header-app">
<h1>
Launchpad: {{ lp.managementDomainName }}</h1>
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
import React from 'react';
export default class LaunchpadBreadcrumbs extends React.Component {
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
import React from 'react';
import LoadingIndicator from '../../components/loading-indicator/loadingIndicator.jsx';
import DashboardCard from '../../components/dashboard_card/dashboard_card.jsx';
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
import React from 'react';
import './accountSidebar.scss';
import DashboardCard from '../../components/dashboard_card/dashboard_card.jsx';
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
import React from 'react/addons';
import AppHeader from '../../components/header/header.jsx';
var poolStore = require('./poolStore.js')
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
+
/*
*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
+/*
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * 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.
+ */
/*
*
#!/bin/bash
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
#
-
# Define the root and workspace paths by the location of this script, which must
# be at the top level of the repository.
export RIFT_WORKSPACE=$(basename $RIFT_ROOT)
#!/bin/bash
-
-#
#
-
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
#
# These functions can be used to create an informative prompt for your shell. If
# you are over-riding the PROMPT_COMMAND in your .bashrc file, one approach you
#!/bin/bash
-
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
#
if __name__ == "__main__":
- main()
\ No newline at end of file
+ main()
#!/bin/bash
-
+#
+#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
#
# 12-24-2014 -- JLM
# removing the naming system. We will be only be using one set of flags from here on out
#
+# Copyright 2016 RIFT.IO Inc
+#
+# 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.
+#
# RIFT.ware 4.1
#
[RIFT.ware-4.1]