X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwcm%2Ftest%2Fstart_cm_system.py;fp=rwcm%2Ftest%2Fstart_cm_system.py;h=1975a0aa097446e0750bf1e86c072333536b2ffe;hb=6f07e6f33f751ab4ffe624f6037f887b243bece2;hp=0000000000000000000000000000000000000000;hpb=72a563886272088feb7cb52e4aafbe6d2c580ff9;p=osm%2FSO.git diff --git a/rwcm/test/start_cm_system.py b/rwcm/test/start_cm_system.py new file mode 100755 index 00000000..1975a0aa --- /dev/null +++ b/rwcm/test/start_cm_system.py @@ -0,0 +1,131 @@ +#!/usr/bin/env python + +# +# Copyright 2016 RIFT.IO Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT 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 logging +import os +import sys + +import rift.vcs +import rift.vcs.demo +import rift.vcs.vms + +from rift.vcs.ext import ClassProperty + +logger = logging.getLogger(__name__) + + +class ConfigManagerTasklet(rift.vcs.core.Tasklet): + """ + This class represents SO tasklet. + """ + + def __init__(self, name='rwcmtasklet', uid=None): + """ + Creates a PingTasklet object. + + Arguments: + name - the name of the tasklet + uid - a unique identifier + """ + super(ConfigManagerTasklet, self).__init__(name=name, uid=uid) + + plugin_directory = ClassProperty('./usr/lib/rift/plugins/rwconmantasklet') + plugin_name = ClassProperty('rwconmantasklet') + + +# Construct the system. This system consists of 1 cluster in 1 +# colony. The master cluster houses CLI and management VMs +sysinfo = rift.vcs.SystemInfo( + colonies=[ + rift.vcs.Colony( + clusters=[ + rift.vcs.Cluster( + name='master', + virtual_machines=[ + rift.vcs.VirtualMachine( + name='vm-so', + ip='127.0.0.1', + tasklets=[ + rift.vcs.uAgentTasklet(), + ], + procs=[ + rift.vcs.CliTasklet(), + rift.vcs.DtsRouterTasklet(), + rift.vcs.MsgBrokerTasklet(), + rift.vcs.RestconfTasklet(), + ConfigManagerTasklet() + ], + ), + ] + ) + ] + ) + ] + ) + + +# Define the generic portmap. +port_map = {} + + +# Define a mapping from the placeholder logical names to the real +# port names for each of the different modes supported by this demo. +port_names = { + 'ethsim': { + }, + 'pci': { + } +} + + +# Define the connectivity between logical port names. +port_groups = {} + +def main(argv=sys.argv[1:]): + logging.basicConfig(format='%(asctime)-15s %(levelname)s %(message)s') + + # Create a parser which includes all generic demo arguments + parser = rift.vcs.demo.DemoArgParser() + + args = parser.parse_args(argv) + + #load demo info and create Demo object + demo = rift.vcs.demo.Demo(sysinfo=sysinfo, + port_map=port_map, + port_names=port_names, + port_groups=port_groups) + + # Create the prepared system from the demo + system = rift.vcs.demo.prepared_system_from_demo_and_args(demo, args, netconf_trace_override=True) + + # Start the prepared system + system.start() + + +if __name__ == "__main__": + try: + main() + except rift.vcs.demo.ReservationError: + print("ERROR: unable to retrieve a list of IP addresses from the reservation system") + sys.exit(1) + except rift.vcs.demo.MissingModeError: + print("ERROR: you need to provide a mode to run the script") + sys.exit(1) + finally: + os.system("stty sane")