Merge from master
[osm/SO.git] / rwlaunchpad / test / launchpad.py
index 5b40b90..b73c500 100755 (executable)
@@ -370,6 +370,34 @@ class ConfigManagerTasklet(rift.vcs.core.Tasklet):
     plugin_directory = ClassProperty('./usr/lib/rift/plugins/rwconmantasklet')
     plugin_name = ClassProperty('rwconmantasklet')
 
+
+class ProjectMgrManoTasklet(rift.vcs.core.Tasklet):
+    """
+    This class represents a Resource Manager tasklet.
+    """
+
+    def __init__(self, name='Project-Manager-Mano', uid=None,
+                 config_ready=True,
+                 recovery_action=core.RecoveryType.FAILCRITICAL.value,
+                 data_storetype=core.DataStore.NOSTORE.value,
+                 ):
+        """
+        Creates a ProjectMgrManoTasklet object.
+
+        Arguments:
+            name  - the name of the tasklet
+            uid   - a unique identifier
+        """
+        super(ProjectMgrManoTasklet, self).__init__(name=name, uid=uid,
+                                                    config_ready=config_ready,
+                                                    recovery_action=recovery_action,
+                                                    data_storetype=data_storetype,
+        )
+
+    plugin_directory = ClassProperty('./usr/lib/rift/plugins/rwprojectmano')
+    plugin_name = ClassProperty('rwprojectmano')
+
+
 class PackageManagerTasklet(rift.vcs.core.Tasklet):
     """
     This class represents a Resource Manager tasklet.
@@ -422,10 +450,12 @@ class Demo(rift.vcs.demo.Demo):
             GlanceServer(),
             rift.vcs.DtsRouterTasklet(),
             rift.vcs.MsgBrokerTasklet(),
-            #rift.vcs.RestPortForwardTasklet(),
             rift.vcs.RestconfTasklet(),
             rift.vcs.RiftCli(),
             rift.vcs.uAgentTasklet(),
+            rift.vcs.IdentityManagerTasklet(),
+            rift.vcs.ProjectManagerTasklet(),
+            ProjectMgrManoTasklet(),
             rift.vcs.Launchpad(),
             ]
 
@@ -454,6 +484,7 @@ class Demo(rift.vcs.demo.Demo):
               AutoscalerTasklet(recovery_action=core.RecoveryType.RESTART.value, data_storetype=datastore),
               PackageManagerTasklet(recovery_action=core.RecoveryType.RESTART.value, data_storetype=datastore),
               StagingManagerTasklet(recovery_action=core.RecoveryType.RESTART.value, data_storetype=datastore),
+              ProjectMgrManoTasklet(recovery_action=core.RecoveryType.RESTART.value, data_storetype=datastore),
             ]
 
         if not mgmt_ip_list or len(mgmt_ip_list) == 0:
@@ -481,6 +512,16 @@ class Demo(rift.vcs.demo.Demo):
             stby_lp_vm.add_tasklet(rift.vcs.uAgentTasklet(), mode_active=False)
             colony.append(stby_lp_vm)
 
+        if ha_mode == "LSS":
+            stby_lp_vm_2 = rift.vcs.VirtualMachine(
+                  name='launchpad-vm-3',
+                  ip=mgmt_ip_list[2],
+                  procs=standby_procs,
+                  start=False,
+                )
+            stby_lp_vm_2.add_tasklet(rift.vcs.uAgentTasklet(), mode_active=False)
+            colony.append(stby_lp_vm_2)
+
         sysinfo = rift.vcs.SystemInfo(
                     mode='ethsim',
                     zookeeper=rift.vcs.manifest.RaZookeeper(master_ip=mgmt_ip_list[0]),
@@ -568,14 +609,24 @@ def main(argv=sys.argv[1:]):
     #load demo info and create Demo object
     demo = Demo(args.no_ui, ha_mode, mgmt_ip_list, args.test_name)
 
-    # Create the prepared system from the demo
-    system = rift.vcs.demo.prepared_system_from_demo_and_args(demo, args,
-              northbound_listing=["cli_launchpad_schema_listing.txt"],
-              netconf_trace_override=True)
-
+    system = rift.vcs.demo.prepared_system_from_demo_and_args(
+        demo, args,
+        northbound_listing=["platform_schema_listing.txt",
+                            "platform_mgmt_schema_listing.txt",
+                            "cli_launchpad_schema_listing.txt"],
+        netconf_trace_override=True)
+
+    # Search for externally accessible IP address with netifaces
+    gateways = netifaces.gateways()
+    # Check for default route facing interface and then get its ip address
+    if 'default' in gateways:
+        interface = gateways['default'][netifaces.AF_INET][1]
+        confd_ip = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr']
+    else:
+        # no default gateway.  Revert to 127.0.0.1
+        confd_ip = "127.0.0.1"
     # TODO: This need to be changed when launchpad starts running on multiple VMs
-    # confd_ip = socket.gethostbyname(socket.gethostname())
-    rift.vcs.logger.configure_sink(config_file=None, confd_ip="127.0.0.1")
+    rift.vcs.logger.configure_sink(config_file=None, confd_ip=confd_ip)
 
     # Start the prepared system
     system.start()
@@ -583,6 +634,7 @@ def main(argv=sys.argv[1:]):
 
 if __name__ == "__main__":
     resource.setrlimit(resource.RLIMIT_CORE, (resource.RLIM_INFINITY, resource.RLIM_INFINITY) )
+    os.system('/usr/rift/bin/UpdateHostsFile')
     try:
         main()
     except rift.vcs.demo.ReservationError: