blob: 60ba82a4f0cb2f57c6f7b75f85091140a41f09c0 [file] [log] [blame]
Jeremy Mordkoff6f07e6f2016-09-07 18:56:51 -04001#!/usr/bin/env python3
2"""
3#
4# Copyright 2016 RIFT.IO Inc
5#
6# Licensed under the Apache License, Version 2.0 (the "License");
7# you may not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18
19@file test_failover.py
20@brief System test of stopping launchpad on master and
21validating configuration on standby
22"""
23import os
24import sys
25import time
26import argparse
27import subprocess
28
29import gi
30from gi.repository import RwVnfdYang
31from gi.repository import RwVnfrYang
32
33import rift.auto.proxy
34from rift.auto.session import NetconfSession
35
36def yield_vnfd_vnfr_pairs(proxy, nsr=None):
37 """
38 Yields tuples of vnfd & vnfr entries.
39
40 Args:
41 proxy (callable): Launchpad proxy
42 nsr (optional): If specified, only the vnfr & vnfd records of the NSR
43 are returned
44
45 Yields:
46 Tuple: VNFD and its corresponding VNFR entry
47 """
48 def get_vnfd(vnfd_id):
49 xpath = "/vnfd-catalog/vnfd[id='{}']".format(vnfd_id)
50 return proxy(RwVnfdYang).get(xpath)
51
52 vnfr = "/vnfr-catalog/vnfr"
53 print ("START")
54 vnfrs = proxy(RwVnfrYang).get(vnfr, list_obj=True)
55 print ("STOP")
56 for vnfr in vnfrs.vnfr:
57
58 if nsr:
59 const_vnfr_ids = [const_vnfr.vnfr_id for const_vnfr in nsr.constituent_vnfr_ref]
60 if vnfr.id not in const_vnfr_ids:
61 continue
62
Ananda Baitharu2d3f1022016-11-24 05:23:39 -050063 vnfd = get_vnfd(vnfr.vnfd.id)
Jeremy Mordkoff6f07e6f2016-09-07 18:56:51 -040064 yield vnfd, vnfr
65
66def check_configuration_on_standby(standby_ip):
67 print ("Start- check_configuration_on_standby")
68 mgmt_session = NetconfSession(standby_ip)
69 mgmt_session.connect()
70 print ("Connected to proxy")
71
72 vnf_tuple = list(yield_vnfd_vnfr_pairs(mgmt_session.proxy))
73 assert len(vnf_tuple) == 2
74
75if __name__ == "__main__":
76 parser = argparse.ArgumentParser(description='Test launchpad failover')
77 parser.add_argument("--master-ip", action="store", dest="master_ip")
78 parser.add_argument("--standby-ip", action="store", dest="standby_ip")
79
80 args = parser.parse_args()
81
82 # 60 seconds should be more than enough time for Agent to be able
83 # to make confd as the new Master
84 time.sleep(60)
85 print ("Try fetching configuration from the old standby or the new Master\n")
86 check_configuration_on_standby(args.standby_ip)