From 85cd488bef236ec40d04405418795d35414e96d1 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Wed, 30 May 2018 16:17:30 -0700 Subject: [PATCH] StarlingX open source release updates Signed-off-by: Dean Troyer --- CONTRIBUTORS.wrs | 10 + LICENSE | 202 + README.rst | 5 + guest-agent/PKG-INFO | 12 + guest-agent/centos/build_srpm.data | 2 + guest-agent/centos/guest-scale-agent.spec | 137 + guest-agent/guest-scale-agent-2.0/LICENSE | 202 + guest-agent/guest-scale-agent-2.0/Makefile | 110 + .../guest-scale-agent-2.0/Makefile.sdk | 74 + .../guest-scale-agent-2.0/bin/.gitignore | 4 + .../guest-scale-agent-2.0/docs/README.txt | 243 + .../docs/TiS-Guest-Resource-Scaling.doc | Bin 0 -> 337920 bytes .../docs/TiS-Guest-Resource-Scaling.pdf | Bin 0 -> 1062943 bytes .../guest-scale-agent-2.0/guest_scale_agent.c | 515 + .../guest_scale_helper.c | 534 + guest-agent/guest-scale-agent-2.0/misc.h | 81 + .../guest-scale-agent-2.0/obj/.gitignore | 4 + guest-agent/guest-scale-agent-2.0/parser.c | 150 + .../guest-scale-agent-2.0/parser_test.c | 67 + .../scripts/app_scale_helper | 107 + .../scripts/guest-scale-agent.service | 13 + .../scripts/init_offline_cpus | 64 + .../scripts/offline-cpus.service | 12 + .../scripts/offline_cpus | 54 + guest-client/LICENSE | 202 + guest-client/PKG-INFO | 12 + guest-client/centos/build_srpm.data | 3 + guest-client/centos/guest-client.spec | 114 + guest-client/guest-client-3.0.1/LICENSE | 202 + guest-client/guest-client-3.0.1/Makefile | 119 + guest-client/guest-client-3.0.1/README | 72 + guest-client/guest-client-3.0.1/README.build | 291 + guest-client/guest-client-3.0.1/README.usage | 385 + .../TiS-Guest-Heartbeat-Service.doc | Bin 0 -> 393728 bytes .../TiS-Guest-Heartbeat-Service.pdf | Bin 0 -> 1105859 bytes .../guest-client-3.0.1/guest_client/Makefile | 84 + .../guest_client/scripts/guest-client.init | 183 + .../guest_client/scripts/guest-client.service | 57 + .../guest_client/scripts/guest-client.systemd | 171 + .../guest_client/scripts/guest_heartbeat.conf | 116 + .../scripts/sample_event_handling_script | 165 + .../scripts/sample_health_check_script | 42 + .../guest_client/src/Makefile | 94 + .../guest_client/src/guest_channel.c | 351 + .../guest_client/src/guest_channel.h | 95 + .../guest_client/src/guest_child_death.c | 312 + .../guest_client/src/guest_child_death.h | 79 + .../guest_client/src/guest_client.c | 67 + .../guest_client/src/guest_config.c | 163 + .../guest_client/src/guest_config.h | 73 + .../guest_client/src/guest_debug.c | 146 + .../guest_client/src/guest_debug.h | 102 + .../guest_client/src/guest_limits.h | 55 + .../guest_client/src/guest_process.c | 375 + .../guest_client/src/guest_process.h | 50 + .../guest_client/src/guest_script.c | 410 + .../guest_client/src/guest_script.h | 75 + .../guest_client/src/guest_selobj.c | 254 + .../guest_client/src/guest_selobj.h | 83 + .../guest_client/src/guest_signal.c | 129 + .../guest_client/src/guest_signal.h | 63 + .../guest_client/src/guest_stream.c | 203 + .../guest_client/src/guest_stream.h | 104 + .../guest_client/src/guest_time.c | 82 + .../guest_client/src/guest_time.h | 68 + .../guest_client/src/guest_timer.c | 323 + .../guest_client/src/guest_timer.h | 99 + .../guest_client/src/guest_types.c | 47 + .../guest_client/src/guest_types.h | 54 + .../guest_client/src/guest_unix.c | 331 + .../guest_client/src/guest_unix.h | 94 + .../guest_client/src/guest_utils.c | 121 + .../guest_client/src/guest_utils.h | 65 + .../guest_client/src/heartbeat/Makefile | 62 + .../src/heartbeat/guest_heartbeat.c | 318 + .../src/heartbeat/guest_heartbeat.h | 55 + .../src/heartbeat/guest_heartbeat_config.c | 235 + .../src/heartbeat/guest_heartbeat_config.h | 78 + .../guest_heartbeat_disabled_state.c | 118 + .../guest_heartbeat_disabled_state.h | 81 + .../heartbeat/guest_heartbeat_enabled_state.c | 698 ++ .../heartbeat/guest_heartbeat_enabled_state.h | 81 + .../guest_heartbeat_enabling_state.c | 211 + .../guest_heartbeat_enabling_state.h | 81 + .../heartbeat/guest_heartbeat_event_script.c | 204 + .../heartbeat/guest_heartbeat_event_script.h | 73 + .../src/heartbeat/guest_heartbeat_fsm.c | 369 + .../src/heartbeat/guest_heartbeat_fsm.h | 105 + .../heartbeat/guest_heartbeat_health_script.c | 124 + .../heartbeat/guest_heartbeat_health_script.h | 71 + .../heartbeat/guest_heartbeat_initial_state.c | 112 + .../heartbeat/guest_heartbeat_initial_state.h | 81 + .../src/heartbeat/guest_heartbeat_mgmt_api.c | 1400 +++ .../src/heartbeat/guest_heartbeat_mgmt_api.h | 83 + .../src/heartbeat/guest_heartbeat_msg.c | 1209 +++ .../src/heartbeat/guest_heartbeat_msg.h | 150 + .../src/heartbeat/guest_heartbeat_msg_defs.h | 134 + .../src/heartbeat/guest_heartbeat_types.c | 132 + .../src/heartbeat/guest_heartbeat_types.h | 114 + .../guest_client/src/test/Makefile | 77 + .../guest_client/src/test/guest_test.c | 316 + .../guest_client/src/test/guest_test.h | 54 + .../guest_client/src/test/guest_test_cli.c | 189 + .../guest_client/src/test/guest_test_cli.h | 60 + .../guest_client/src/test/guest_test_client.c | 68 + .../src/test/guest_test_process.c | 264 + .../src/test/guest_test_process.h | 50 + .../guest_client_api/Makefile | 123 + .../guest_client_api/guest_api_debug.c | 138 + .../guest_client_api/guest_api_debug.h | 101 + .../guest_client_api/guest_api_stream.c | 185 + .../guest_client_api/guest_api_stream.h | 92 + .../guest_client_api/guest_api_types.c | 46 + .../guest_client_api/guest_api_types.h | 53 + .../guest_client_api/guest_api_unix.c | 204 + .../guest_client_api/guest_api_unix.h | 73 + .../guest_client_api/guest_heartbeat_api.c | 748 ++ .../guest_client_api/guest_heartbeat_api.h | 330 + .../guest_client_api/sample_guest_app.c | 360 + .../include/guest_heartbeat_api_msg_defs.h | 172 + .../packaging/guest-client.pkg | 108 + guest-comm/PKG-INFO | 12 + guest-comm/centos/build_srpm.data | 2 + guest-comm/centos/host-guest-comm.spec | 230 + guest-comm/host-guest-comm-2.0/LICENSE | 202 + guest-comm/host-guest-comm-2.0/Makefile | 107 + guest-comm/host-guest-comm-2.0/Makefile.sdk | 118 + guest-comm/host-guest-comm-2.0/bin/.gitignore | 4 + .../host-guest-comm-2.0/docs/README.txt | 257 + .../docs/TiS-Guest-Server-Group-Messaging.doc | Bin 0 -> 345088 bytes .../docs/TiS-Guest-Server-Group-Messaging.pdf | Bin 0 -> 1083703 bytes guest-comm/host-guest-comm-2.0/guest_agent.c | 503 + .../host-guest-comm-2.0/guest_host_msg.h | 95 + guest-comm/host-guest-comm-2.0/host_agent.c | 461 + .../host-guest-comm-2.0/host_guest_msg.c | 124 + .../host-guest-comm-2.0/host_guest_msg.h | 96 + .../host-guest-comm-2.0/host_guest_msg_type.h | 75 + .../host-guest-comm-2.0/host_instance_mgmt.c | 621 ++ .../host-guest-comm-2.0/host_instance_mgmt.h | 65 + guest-comm/host-guest-comm-2.0/lib/.gitignore | 4 + .../host-guest-comm-2.0/lib_guest_host_msg.c | 239 + .../host-guest-comm-2.0/lib_host_guest_msg.c | 250 + guest-comm/host-guest-comm-2.0/misc.h | 42 + guest-comm/host-guest-comm-2.0/obj/.gitignore | 4 + .../scripts/guest-agent.service | 12 + .../host-guest-comm-2.0/scripts/host_agent | 78 + .../scripts/host_agent.conf | 24 + .../scripts/host_agent.service | 13 + guest-comm/host-guest-comm-2.0/server_group.c | 497 + guest-comm/host-guest-comm-2.0/server_group.h | 119 + .../host-guest-comm-2.0/server_group_app.c | 107 + .../host-guest-comm-2.0/test/guest_app.c | 175 + .../host-guest-comm-2.0/test/host_app.c | 187 + .../test/test_host_guest_msg.c | 374 + mwa-thales.map | 6 + nfv/.gitignore | 6 + nfv/PKG-INFO | 13 + nfv/centos/build_srpm | 91 + nfv/centos/build_srpm.data | 1 + nfv/centos/nfv.spec | 187 + nfv/nfv-client/LICENSE | 202 + nfv/nfv-client/nfv_client/__init__.py | 4 + .../nfv_client/openstack/__init__.py | 4 + .../nfv_client/openstack/objects.py | 77 + .../nfv_client/openstack/openstack.py | 78 + .../nfv_client/openstack/rest_api.py | 102 + .../nfv_client/openstack/sw_update.py | 319 + nfv/nfv-client/nfv_client/shell.py | 342 + .../nfv_client/sw_update/__init__.py | 20 + .../nfv_client/sw_update/_sw_update.py | 292 + nfv/nfv-client/scripts/sw-manager.completion | 190 + nfv/nfv-client/setup.py | 21 + nfv/nfv-common/LICENSE | 202 + nfv/nfv-common/nfv_common/__init__.py | 5 + nfv/nfv-common/nfv_common/alarm/__init__.py | 19 + .../nfv_common/alarm/_alarm_handlers.py | 87 + .../nfv_common/alarm/_alarm_module.py | 48 + .../nfv_common/alarm/_alarm_thread.py | 107 + .../nfv_common/alarm/handlers/__init__.py | 5 + .../nfv_common/alarm/handlers/v1/__init__.py | 8 + .../alarm/handlers/v1/_alarm_handler.py | 58 + .../nfv_common/alarm/objects/__init__.py | 8 + .../nfv_common/alarm/objects/v1/__init__.py | 10 + .../alarm/objects/v1/_alarm_data.py | 66 + .../alarm/objects/v1/_alarm_defs.py | 116 + nfv/nfv-common/nfv_common/catalog/__init__.py | 8 + .../nfv_common/catalog/_catalog_backend.py | 65 + .../nfv_common/catalog/_catalog_module.py | 28 + .../nfv_common/catalog/model/__init__.py | 11 + .../nfv_common/catalog/model/_defs.py | 35 + .../catalog/model/_vnf_descriptor.py | 179 + .../nfv_common/catalog/plugin/__init__.py | 5 + .../nfv_common/catalog/plugin/v1/__init__.py | 5 + .../catalog/plugin/v1/_catalog_plugin.py | 48 + nfv/nfv-common/nfv_common/config.py | 45 + nfv/nfv-common/nfv_common/debug/__init__.py | 12 + .../nfv_common/debug/_debug_config.py | 138 + .../nfv_common/debug/_debug_defs.py | 27 + nfv/nfv-common/nfv_common/debug/_debug_log.py | 338 + .../nfv_common/debug/_debug_module.py | 174 + .../nfv_common/debug/_debug_thread.py | 113 + .../nfv_common/event_log/__init__.py | 16 + .../event_log/_event_log_handlers.py | 73 + .../nfv_common/event_log/_event_log_module.py | 37 + .../nfv_common/event_log/_event_log_thread.py | 67 + .../nfv_common/event_log/handlers/__init__.py | 5 + .../event_log/handlers/v1/__init__.py | 8 + .../handlers/v1/_event_log_handler.py | 48 + .../nfv_common/event_log/objects/__init__.py | 8 + .../event_log/objects/v1/__init__.py | 12 + .../event_log/objects/v1/_event_log_data.py | 54 + .../event_log/objects/v1/_event_log_defs.py | 212 + nfv/nfv-common/nfv_common/exceptions.py | 13 + .../nfv_common/forensic/__init__.py | 25 + .../nfv_common/forensic/_analysis.py | 766 ++ nfv/nfv-common/nfv_common/forensic/_defs.py | 125 + .../nfv_common/forensic/_evidence.py | 63 + .../nfv_common/forensic/_forensic_module.py | 19 + .../nfv_common/forensic/_nfv_vim_parser.py | 115 + .../nfv_common/forensic/_parsers.py | 30 + .../nfv_common/forensic/config/nfv-vim.yaml | 929 ++ nfv/nfv-common/nfv_common/helpers.py | 116 + nfv/nfv-common/nfv_common/histogram.py | 187 + nfv/nfv-common/nfv_common/profiler.py | 63 + .../nfv_common/schedule/__init__.py | 9 + .../nfv_common/schedule/_schedule_module.py | 70 + nfv/nfv-common/nfv_common/selectable.py | 59 + nfv/nfv-common/nfv_common/selobj/__init__.py | 11 + .../nfv_common/selobj/_selobj_module.py | 168 + .../nfv_common/state_machine/__init__.py | 14 + .../nfv_common/state_machine/_state.py | 56 + .../state_machine/_state_exception.py | 47 + .../state_machine/_state_machine.py | 155 + .../nfv_common/state_machine/_state_task.py | 304 + .../state_machine/_state_task_result.py | 63 + .../state_machine/_state_task_work.py | 104 + .../state_machine/_state_task_work_result.py | 25 + .../nfv_common/strategy/__init__.py | 15 + .../nfv_common/strategy/_strategy.py | 526 + .../nfv_common/strategy/_strategy_defs.py | 65 + .../nfv_common/strategy/_strategy_phase.py | 614 ++ .../nfv_common/strategy/_strategy_result.py | 337 + .../nfv_common/strategy/_strategy_stage.py | 594 ++ .../nfv_common/strategy/_strategy_step.py | 237 + nfv/nfv-common/nfv_common/tasks/__init__.py | 11 + nfv/nfv-common/nfv_common/tasks/_task.py | 221 + .../nfv_common/tasks/_task_future.py | 141 + .../nfv_common/tasks/_task_result.py | 64 + .../nfv_common/tasks/_task_scheduler.py | 396 + nfv/nfv-common/nfv_common/tasks/_task_work.py | 113 + .../nfv_common/tasks/_task_worker.py | 96 + .../nfv_common/tasks/_task_worker_pool.py | 87 + nfv/nfv-common/nfv_common/tasks/unit_test.py | 138 + nfv/nfv-common/nfv_common/tcp/__init__.py | 9 + .../nfv_common/tcp/_tcp_connection.py | 268 + nfv/nfv-common/nfv_common/tcp/_tcp_server.py | 118 + nfv/nfv-common/nfv_common/tcp/unit_test.py | 57 + nfv/nfv-common/nfv_common/thread/__init__.py | 9 + nfv/nfv-common/nfv_common/thread/_thread.py | 237 + .../thread/_thread_progress_marker.py | 28 + .../nfv_common/thread/_thread_worker.py | 82 + nfv/nfv-common/nfv_common/timers/__init__.py | 14 + nfv/nfv-common/nfv_common/timers/_timer.py | 73 + .../nfv_common/timers/_timer_module.py | 124 + .../nfv_common/timers/_timer_scheduler.py | 117 + .../nfv_common/timers/_timestamp.py | 41 + nfv/nfv-common/nfv_common/validate.py | 57 + nfv/nfv-common/setup.py | 20 + .../histogram_analysis/Histogram.py | 133 + .../histogram_analysis/plotter.py | 495 + nfv/nfv-docs/Makefile | 26 + nfv/nfv-docs/doc_builder.py | 68 + nfv/nfv-docs/documentation/document.yaml | 20 + .../software_image_management.yaml | 302 + .../virtualised_compute_resource.yaml | 6 + .../virtualised_network_resource.yaml | 295 + .../virtualised_storage_resource.yaml | 6 + nfv/nfv-docs/html_layout/conf.py | 354 + nfv/nfv-docs/html_layout/css/bootstrap.css | 6566 ++++++++++++ nfv/nfv-docs/html_layout/css/dashboard.css | 640 ++ .../html_layout/images/network_model.svg | 842 ++ .../html_layout/images/windriver-favicon.ico | Bin 0 -> 1406 bytes .../html_layout/images/windriver-red-med.png | Bin 0 -> 1835 bytes .../html_layout/javascript/bootstrap.js | 2306 ++++ .../html_layout/javascript/dashboard.js | 45 + .../html_layout/javascript/jquery-v2.1.3.js | 9205 ++++++++++++++++ nfv/nfv-docs/html_layout/templates/index.html | 57 + .../html_layout/templates/page_content.html | 195 + nfv/nfv-plugins/LICENSE | 202 + nfv/nfv-plugins/nfv_plugins/__init__.py | 5 + .../nfv_plugins/alarm_handlers/__init__.py | 5 + .../nfv_plugins/alarm_handlers/config.ini | 7 + .../nfv_plugins/alarm_handlers/config.py | 35 + .../alarm_handlers/file_storage.py | 153 + .../nfv_plugins/alarm_handlers/fm.py | 243 + .../event_log_handlers/__init__.py | 5 + .../nfv_plugins/event_log_handlers/config.ini | 7 + .../nfv_plugins/event_log_handlers/config.py | 35 + .../event_log_handlers/file_storage.py | 97 + .../nfv_plugins/event_log_handlers/fm.py | 388 + .../nfv_plugins/nfvi_plugins/__init__.py | 5 + .../nfv_plugins/nfvi_plugins/config.ini | 105 + .../nfv_plugins/nfvi_plugins/config.py | 39 + .../nfvi_plugins/nfvi_block_storage_api.py | 578 ++ .../nfvi_plugins/nfvi_compute_api.py | 3011 ++++++ .../nfvi_plugins/nfvi_guest_api.py | 875 ++ .../nfvi_plugins/nfvi_identity_api.py | 123 + .../nfvi_plugins/nfvi_image_api.py | 600 ++ .../nfvi_plugins/nfvi_infrastructure_api.py | 2895 ++++++ .../nfvi_plugins/nfvi_network_api.py | 768 ++ .../nfvi_plugins/nfvi_sw_mgmt_api.py | 277 + .../nfvi_plugins/openstack/__init__.py | 5 + .../nfvi_plugins/openstack/ceilometer.py | 141 + .../nfvi_plugins/openstack/cinder.py | 178 + .../nfvi_plugins/openstack/exceptions.py | 143 + .../nfvi_plugins/openstack/glance.py | 233 + .../nfvi_plugins/openstack/guest.py | 322 + .../nfvi_plugins/openstack/heat.py | 110 + .../nfvi_plugins/openstack/keystone.py | 28 + .../nfv_plugins/nfvi_plugins/openstack/mtc.py | 94 + .../nfvi_plugins/openstack/neutron.py | 505 + .../nfvi_plugins/openstack/nova.py | 1660 +++ .../nfvi_plugins/openstack/objects.py | 282 + .../nfvi_plugins/openstack/openstack.py | 120 + .../nfvi_plugins/openstack/openstack_log.py | 42 + .../nfvi_plugins/openstack/patching.py | 53 + .../nfvi_plugins/openstack/rest_api.py | 443 + .../nfvi_plugins/openstack/rpc_listener.py | 144 + .../nfvi_plugins/openstack/sysinv.py | 517 + .../nfv_plugins/nfvi_plugins/unit_test.py | 555 + .../scripts/nfvi_plugins.logrotate | 39 + nfv/nfv-plugins/setup.py | 40 + .../vim_mano_compute_test_cases.txt | 113 + .../vim_mano_heat_test_cases.txt | 143 + .../vim_mano_image_test_cases.txt | 47 + .../vim_mano_network_test_cases.txt | 232 + .../vim_mano_volume_test_cases.txt | 41 + .../vim_orchestration_test_cases.txt | 128 + .../nfv_api_tests/vim_random_tests.script | 391 + .../nfv_api_tests/vm_action_requests.txt | 104 + nfv/nfv-tests/nfv_scenario_tests/README | 24 + nfv/nfv-tests/nfv_scenario_tests/__init__.py | 5 + nfv/nfv-tests/nfv_scenario_tests/config.ini | 76 + nfv/nfv-tests/nfv_scenario_tests/coverage.ini | 33 + .../data/data/default-data-guest.yaml | 40 + .../data/data/default-data.yaml | 38 + .../data/loads/cirros-guest.img | Bin 0 -> 17670144 bytes .../nfv_scenario_tests/data/loads/cirros.img | Bin 0 -> 9761280 bytes .../data/setup/default-setup.template | 326 + .../setup/submission-setup-guest.template | 29 + .../data/setup/submission-setup.template | 42 + .../data/tests/default-tests.template | 149 + .../data/tests/submission-tests.template | 31 + nfv/nfv-tests/nfv_scenario_tests/debug.ini | 39 + nfv/nfv-tests/nfv_scenario_tests/main.py | 727 ++ nfv/nfv-tests/nfv_scenario_tests/setup.py | 17 + .../nfv_scenario_tests/tests/__init__.py | 18 + .../nfv_scenario_tests/tests/_alarms.py | 179 + .../nfv_scenario_tests/tests/_event_logs.py | 239 + .../nfv_scenario_tests/tests/_hosts.py | 112 + .../nfv_scenario_tests/tests/_instances.py | 651 ++ .../nfv_scenario_tests/tests/_test_base.py | 147 + .../nfv_scenario_tests/tests/_test_hosts.py | 356 + .../tests/_test_instances.py | 1068 ++ nfv/nfv-tests/nfv_unit_tests/.gitignore | 1 + nfv/nfv-tests/nfv_unit_tests/README | 10 + nfv/nfv-tests/nfv_unit_tests/__init__.py | 5 + nfv/nfv-tests/nfv_unit_tests/coverage.ini | 15 + nfv/nfv-tests/nfv_unit_tests/pylint.rc | 220 + nfv/nfv-tests/nfv_unit_tests/setup.py | 18 + .../test_data/nfv_vim_db_15.12_patch002 | 1 + .../test_data/nfv_vim_db_16.10_GA | 1 + .../test_data/nfv_vim_db_17.06_GA | 1 + .../tests/test_database_upgrades.py | 33 + .../nfv_unit_tests/tests/test_instance.py | 382 + .../tests/test_instance_director.py | 385 + .../tests/test_sw_patch_strategy.py | 3538 +++++++ .../tests/test_sw_upgrade_strategy.py | 1698 +++ nfv/nfv-tests/nfv_unit_tests/tox.ini | 80 + nfv/nfv-tools/LICENSE | 202 + nfv/nfv-tools/nfv_tools/__init__.py | 4 + nfv/nfv-tools/nfv_tools/forensic.ini | 7 + nfv/nfv-tools/nfv_tools/forensic.py | 77 + nfv/nfv-tools/nfv_tools/notify.py | 90 + nfv/nfv-tools/setup.py | 24 + nfv/nfv-vim/LICENSE | 202 + nfv/nfv-vim/nfv_vim/__init__.py | 5 + nfv/nfv-vim/nfv_vim/alarm/__init__.py | 16 + nfv/nfv-vim/nfv_vim/alarm/_general.py | 132 + nfv/nfv-vim/nfv_vim/alarm/_host.py | 136 + nfv/nfv-vim/nfv_vim/alarm/_instance.py | 592 ++ nfv/nfv-vim/nfv_vim/alarm/_instance_group.py | 146 + nfv/nfv-vim/nfv_vim/alarm/_sw_update.py | 191 + nfv/nfv-vim/nfv_vim/api/__init__.py | 8 + nfv/nfv-vim/nfv_vim/api/_application.py | 52 + nfv/nfv-vim/nfv_vim/api/_config.py | 18 + nfv/nfv-vim/nfv_vim/api/_hooks.py | 82 + nfv/nfv-vim/nfv_vim/api/_link.py | 38 + nfv/nfv-vim/nfv_vim/api/acl/__init__.py | 8 + nfv/nfv-vim/nfv_vim/api/acl/_application.py | 39 + .../nfv_vim/api/controllers/__init__.py | 5 + nfv/nfv-vim/nfv_vim/api/controllers/root.py | 52 + .../nfv_vim/api/controllers/v1/__init__.py | 8 + .../nfv_vim/api/controllers/v1/_controller.py | 79 + .../api/controllers/v1/openstack/__init__.py | 8 + .../controllers/v1/openstack/_controller.py | 51 + .../api/controllers/v1/openstack/_heat_api.py | 81 + .../controllers/v1/orchestration/__init__.py | 8 + .../v1/orchestration/_controller.py | 55 + .../v1/orchestration/sw_update/__init__.py | 9 + .../v1/orchestration/sw_update/_sw_patch.py | 56 + .../sw_update/_sw_update_defs.py | 86 + .../sw_update/_sw_update_strategy.py | 557 + .../v1/orchestration/sw_update/_sw_upgrade.py | 56 + .../v1/virtualised_resources/__init__.py | 8 + .../v1/virtualised_resources/_computes_api.py | 579 ++ .../v1/virtualised_resources/_controller.py | 67 + .../v1/virtualised_resources/_image_api.py | 409 + .../v1/virtualised_resources/_networks_api.py | 185 + .../_networks_middleware.py | 526 + .../virtualised_resources/_networks_model.py | 71 + .../v1/virtualised_resources/_volume_api.py | 296 + nfv/nfv-vim/nfv_vim/api/openstack/__init__.py | 10 + nfv/nfv-vim/nfv_vim/api/openstack/_config.py | 46 + nfv/nfv-vim/nfv_vim/api/openstack/_objects.py | 303 + .../nfv_vim/api/openstack/_openstack.py | 176 + .../nfv_vim/api/openstack/_rest_api.py | 69 + nfv/nfv-vim/nfv_vim/audits/__init__.py | 8 + nfv/nfv-vim/nfv_vim/audits/_audits_module.py | 25 + .../nfv_vim/audits/_vim_alarm_audits.py | 44 + .../nfv_vim/audits/_vim_nfvi_audits.py | 1229 +++ nfv/nfv-vim/nfv_vim/config.ini | 62 + nfv/nfv-vim/nfv_vim/database/__init__.py | 57 + nfv/nfv-vim/nfv_vim/database/_database.py | 141 + .../_database_block_storage_module.py | 148 + .../database/_database_compute_module.py | 536 + .../database/_database_identity_module.py | 57 + .../database/_database_image_module.py | 90 + .../_database_infrastructure_module.py | 187 + .../nfv_vim/database/_database_migrate.py | 44 + .../nfv_vim/database/_database_module.py | 44 + .../database/_database_network_module.py | 140 + .../nfv_vim/database/_database_sw_update.py | 68 + .../nfv_vim/database/_database_upgrades.py | 40 + .../nfv_vim/database/model/__init__.py | 25 + nfv/nfv-vim/nfv_vim/database/model/_base.py | 30 + nfv/nfv-vim/nfv_vim/database/model/_host.py | 33 + .../nfv_vim/database/model/_host_aggregate.py | 23 + .../nfv_vim/database/model/_host_group.py | 23 + .../nfv_vim/database/model/_hypervisor.py | 47 + nfv/nfv-vim/nfv_vim/database/model/_image.py | 32 + .../nfv_vim/database/model/_instance.py | 67 + .../nfv_vim/database/model/_instance_group.py | 24 + .../nfv_vim/database/model/_instance_type.py | 55 + .../nfv_vim/database/model/_network.py | 29 + .../nfv_vim/database/model/_service_host.py | 23 + nfv/nfv-vim/nfv_vim/database/model/_subnet.py | 27 + .../nfv_vim/database/model/_sw_update.py | 26 + nfv/nfv-vim/nfv_vim/database/model/_system.py | 21 + nfv/nfv-vim/nfv_vim/database/model/_tenant.py | 24 + nfv/nfv-vim/nfv_vim/database/model/_types.py | 53 + nfv/nfv-vim/nfv_vim/database/model/_volume.py | 29 + .../database/model/_volume_snapshot.py | 25 + nfv/nfv-vim/nfv_vim/debug.ini | 193 + nfv/nfv-vim/nfv_vim/directors/__init__.py | 14 + .../nfv_vim/directors/_directors_defs.py | 216 + .../nfv_vim/directors/_directors_module.py | 41 + .../nfv_vim/directors/_host_director.py | 722 ++ .../nfv_vim/directors/_image_director.py | 175 + .../nfv_vim/directors/_instance_director.py | 2099 ++++ .../nfv_vim/directors/_network_director.py | 256 + .../nfv_vim/directors/_sw_mgmt_director.py | 280 + .../nfv_vim/directors/_volume_director.py | 162 + nfv/nfv-vim/nfv_vim/dor/__init__.py | 9 + nfv/nfv-vim/nfv_vim/dor/_dor_module.py | 213 + nfv/nfv-vim/nfv_vim/event_log/__init__.py | 14 + nfv/nfv-vim/nfv_vim/event_log/_general.py | 112 + nfv/nfv-vim/nfv_vim/event_log/_host.py | 160 + nfv/nfv-vim/nfv_vim/event_log/_instance.py | 2307 ++++ nfv/nfv-vim/nfv_vim/event_log/_sw_update.py | 446 + nfv/nfv-vim/nfv_vim/events/__init__.py | 8 + nfv/nfv-vim/nfv_vim/events/_events_module.py | 25 + nfv/nfv-vim/nfv_vim/events/_vim_api_events.py | 239 + .../nfv_vim/events/_vim_image_api_events.py | 215 + .../events/_vim_instance_api_events.py | 377 + .../nfv_vim/events/_vim_network_api_events.py | 534 + .../nfv_vim/events/_vim_nfvi_events.py | 500 + .../events/_vim_sw_update_api_events.py | 335 + .../nfv_vim/events/_vim_volume_api_events.py | 191 + nfv/nfv-vim/nfv_vim/host_fsm/__init__.py | 9 + nfv/nfv-vim/nfv_vim/host_fsm/_host_defs.py | 67 + nfv/nfv-vim/nfv_vim/host_fsm/_host_fsm.py | 54 + .../nfv_vim/host_fsm/_host_state_configure.py | 81 + .../nfv_vim/host_fsm/_host_state_deleted.py | 42 + .../nfv_vim/host_fsm/_host_state_deleting.py | 99 + .../host_fsm/_host_state_deleting_failed.py | 82 + .../nfv_vim/host_fsm/_host_state_disabled.py | 81 + .../nfv_vim/host_fsm/_host_state_disabling.py | 102 + .../host_fsm/_host_state_disabling_failed.py | 115 + .../nfv_vim/host_fsm/_host_state_enabled.py | 77 + .../nfv_vim/host_fsm/_host_state_enabling.py | 86 + .../nfv_vim/host_fsm/_host_state_initial.py | 52 + .../nfv_vim/host_fsm/_host_task_work.py | 1373 +++ nfv/nfv-vim/nfv_vim/host_fsm/_host_tasks.py | 481 + nfv/nfv-vim/nfv_vim/instance_fsm/__init__.py | 31 + .../nfv_vim/instance_fsm/_instance_defs.py | 111 + .../nfv_vim/instance_fsm/_instance_fsm.py | 458 + .../_instance_state_cold_migrate.py | 130 + .../_instance_state_cold_migrate_confirm.py | 82 + .../_instance_state_cold_migrate_revert.py | 82 + .../instance_fsm/_instance_state_delete.py | 81 + .../instance_fsm/_instance_state_evacuate.py | 152 + .../instance_fsm/_instance_state_fail.py | 77 + .../_instance_state_guest_services_create.py | 65 + .../_instance_state_guest_services_delete.py | 66 + .../_instance_state_guest_services_disable.py | 66 + .../_instance_state_guest_services_enable.py | 66 + .../_instance_state_guest_services_set.py | 66 + .../instance_fsm/_instance_state_initial.py | 54 + .../_instance_state_live_migrate.py | 186 + .../_instance_state_live_migrate_finish.py | 92 + .../instance_fsm/_instance_state_pause.py | 80 + .../instance_fsm/_instance_state_reboot.py | 80 + .../instance_fsm/_instance_state_rebuild.py | 73 + .../instance_fsm/_instance_state_resize.py | 80 + .../_instance_state_resize_confirm.py | 79 + .../_instance_state_resize_revert.py | 80 + .../instance_fsm/_instance_state_resume.py | 80 + .../instance_fsm/_instance_state_start.py | 88 + .../instance_fsm/_instance_state_stop.py | 117 + .../instance_fsm/_instance_state_suspend.py | 80 + .../instance_fsm/_instance_state_unpause.py | 80 + .../instance_fsm/_instance_task_work.py | 2302 ++++ .../nfv_vim/instance_fsm/_instance_tasks.py | 1182 +++ nfv/nfv-vim/nfv_vim/nfvi/__init__.py | 120 + .../nfvi/_nfvi_block_storage_module.py | 87 + .../nfvi/_nfvi_block_storage_plugin.py | 28 + .../nfv_vim/nfvi/_nfvi_compute_module.py | 400 + .../nfv_vim/nfvi/_nfvi_compute_plugin.py | 28 + nfv/nfv-vim/nfv_vim/nfvi/_nfvi_defs.py | 21 + .../nfv_vim/nfvi/_nfvi_guest_module.py | 131 + .../nfv_vim/nfvi/_nfvi_guest_plugin.py | 28 + .../nfv_vim/nfvi/_nfvi_identity_module.py | 38 + .../nfv_vim/nfvi/_nfvi_identity_plugin.py | 27 + .../nfv_vim/nfvi/_nfvi_image_module.py | 79 + .../nfv_vim/nfvi/_nfvi_image_plugin.py | 28 + .../nfvi/_nfvi_infrastructure_module.py | 378 + .../nfvi/_nfvi_infrastructure_plugin.py | 29 + nfv/nfv-vim/nfv_vim/nfvi/_nfvi_module.py | 86 + .../nfv_vim/nfvi/_nfvi_network_module.py | 128 + .../nfv_vim/nfvi/_nfvi_network_plugin.py | 28 + nfv/nfv-vim/nfv_vim/nfvi/_nfvi_plugin.py | 92 + .../nfv_vim/nfvi/_nfvi_sw_mgmt_module.py | 64 + .../nfv_vim/nfvi/_nfvi_sw_mgmt_plugin.py | 28 + nfv/nfv-vim/nfv_vim/nfvi/api/__init__.py | 8 + nfv/nfv-vim/nfv_vim/nfvi/api/v1/__init__.py | 15 + .../nfvi/api/v1/_nfvi_block_storage_api.py | 98 + .../nfv_vim/nfvi/api/v1/_nfvi_compute_api.py | 298 + .../nfv_vim/nfvi/api/v1/_nfvi_guest_api.py | 129 + .../nfv_vim/nfvi/api/v1/_nfvi_identity_api.py | 62 + .../nfv_vim/nfvi/api/v1/_nfvi_image_api.py | 92 + .../nfvi/api/v1/_nfvi_infrastructure_api.py | 271 + .../nfv_vim/nfvi/api/v1/_nfvi_network_api.py | 129 + .../nfvi/api/v1/_nfvi_scheduler_api.py | 55 + .../nfv_vim/nfvi/api/v1/_nfvi_sw_mgmt_api.py | 83 + nfv/nfv-vim/nfv_vim/nfvi/objects/__init__.py | 8 + .../nfv_vim/nfvi/objects/v1/__init__.py | 39 + nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_alarm.py | 38 + .../nfv_vim/nfvi/objects/v1/_guest_service.py | 68 + nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_host.py | 98 + .../nfvi/objects/v1/_host_aggregate.py | 16 + .../nfv_vim/nfvi/objects/v1/_host_group.py | 33 + .../nfv_vim/nfvi/objects/v1/_host_sw_patch.py | 20 + .../nfv_vim/nfvi/objects/v1/_hypervisor.py | 54 + nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_image.py | 81 + .../nfv_vim/nfvi/objects/v1/_instance.py | 412 + .../nfvi/objects/v1/_instance_group.py | 37 + .../nfv_vim/nfvi/objects/v1/_instance_type.py | 76 + .../nfv_vim/nfvi/objects/v1/_network.py | 70 + .../nfv_vim/nfvi/objects/v1/_object.py | 118 + .../nfv_vim/nfvi/objects/v1/_paging.py | 73 + .../nfv_vim/nfvi/objects/v1/_service_host.py | 15 + .../nfv_vim/nfvi/objects/v1/_subnet.py | 19 + .../nfv_vim/nfvi/objects/v1/_sw_patch.py | 16 + .../nfv_vim/nfvi/objects/v1/_system.py | 15 + .../nfv_vim/nfvi/objects/v1/_tenant.py | 16 + .../nfv_vim/nfvi/objects/v1/_upgrade.py | 48 + .../nfv_vim/nfvi/objects/v1/_volume.py | 56 + .../nfvi/objects/v1/_volume_snapshot.py | 16 + nfv/nfv-vim/nfv_vim/objects/__init__.py | 31 + .../nfv_vim/objects/_guest_services.py | 418 + nfv/nfv-vim/nfv_vim/objects/_host.py | 722 ++ .../nfv_vim/objects/_host_aggregate.py | 72 + nfv/nfv-vim/nfv_vim/objects/_host_group.py | 88 + nfv/nfv-vim/nfv_vim/objects/_hypervisor.py | 162 + nfv/nfv-vim/nfv_vim/objects/_image.py | 269 + nfv/nfv-vim/nfv_vim/objects/_instance.py | 3150 ++++++ .../nfv_vim/objects/_instance_group.py | 172 + nfv/nfv-vim/nfv_vim/objects/_instance_type.py | 80 + nfv/nfv-vim/nfv_vim/objects/_network.py | 49 + nfv/nfv-vim/nfv_vim/objects/_object.py | 118 + nfv/nfv-vim/nfv_vim/objects/_service_host.py | 19 + nfv/nfv-vim/nfv_vim/objects/_subnet.py | 23 + nfv/nfv-vim/nfv_vim/objects/_sw_patch.py | 210 + nfv/nfv-vim/nfv_vim/objects/_sw_update.py | 370 + nfv/nfv-vim/nfv_vim/objects/_sw_upgrade.py | 164 + nfv/nfv-vim/nfv_vim/objects/_system.py | 19 + nfv/nfv-vim/nfv_vim/objects/_tenant.py | 20 + nfv/nfv-vim/nfv_vim/objects/_volume.py | 138 + .../nfv_vim/objects/_volume_snapshot.py | 88 + nfv/nfv-vim/nfv_vim/rpc/__init__.py | 74 + nfv/nfv-vim/nfv_vim/rpc/_rpc_defs.py | 126 + nfv/nfv-vim/nfv_vim/rpc/_rpc_message.py | 252 + nfv/nfv-vim/nfv_vim/rpc/_rpc_message_image.py | 345 + .../nfv_vim/rpc/_rpc_message_instance.py | 742 ++ .../nfv_vim/rpc/_rpc_message_network.py | 289 + .../nfv_vim/rpc/_rpc_message_subnet.py | 317 + .../nfv_vim/rpc/_rpc_message_sw_update.py | 302 + .../nfv_vim/rpc/_rpc_message_volume.py | 272 + nfv/nfv-vim/nfv_vim/strategy/__init__.py | 21 + nfv/nfv-vim/nfv_vim/strategy/_strategy.py | 1601 +++ .../nfv_vim/strategy/_strategy_defs.py | 31 + .../nfv_vim/strategy/_strategy_phases.py | 28 + .../nfv_vim/strategy/_strategy_stages.py | 50 + .../nfv_vim/strategy/_strategy_steps.py | 2069 ++++ nfv/nfv-vim/nfv_vim/tables/__init__.py | 23 + .../nfv_vim/tables/_host_aggregate_table.py | 72 + .../nfv_vim/tables/_host_group_table.py | 84 + nfv/nfv-vim/nfv_vim/tables/_host_table.py | 76 + .../nfv_vim/tables/_hypervisor_table.py | 61 + nfv/nfv-vim/nfv_vim/tables/_image_table.py | 55 + .../nfv_vim/tables/_instance_group_table.py | 84 + nfv/nfv-vim/nfv_vim/tables/_instance_table.py | 66 + .../nfv_vim/tables/_instance_type_table.py | 55 + nfv/nfv-vim/nfv_vim/tables/_network_table.py | 61 + .../nfv_vim/tables/_service_host_table.py | 55 + nfv/nfv-vim/nfv_vim/tables/_subnet_table.py | 75 + nfv/nfv-vim/nfv_vim/tables/_system_table.py | 55 + nfv/nfv-vim/nfv_vim/tables/_table.py | 99 + nfv/nfv-vim/nfv_vim/tables/_tables_module.py | 69 + nfv/nfv-vim/nfv_vim/tables/_tenant_table.py | 55 + .../nfv_vim/tables/_volume_snapshot_table.py | 54 + nfv/nfv-vim/nfv_vim/tables/_volume_table.py | 55 + nfv/nfv-vim/nfv_vim/vim.py | 177 + nfv/nfv-vim/nfv_vim/vim_api.py | 169 + nfv/nfv-vim/nfv_vim/vim_manage.py | 77 + nfv/nfv-vim/nfv_vim/vim_webserver.py | 123 + nfv/nfv-vim/nfv_vim/webserver/__init__.py | 8 + nfv/nfv-vim/nfv_vim/webserver/_webserver.py | 616 ++ .../webserver/css/bootstrap-responsive.css | 1109 ++ .../nfv_vim/webserver/css/bootstrap.css | 6566 ++++++++++++ nfv/nfv-vim/nfv_vim/webserver/css/charts.css | 41 + .../webserver/css/dashboard-sidebar.css | 95 + .../webserver/css/dashboard-topbar.css | 140 + .../nfv_vim/webserver/css/dashboard.css | 400 + .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes nfv/nfv-vim/nfv_vim/webserver/html/index.html | 151 + .../webserver/images/details_close.png | Bin 0 -> 841 bytes .../nfv_vim/webserver/images/details_open.png | Bin 0 -> 881 bytes .../webserver/images/windriver-favicon.ico | Bin 0 -> 1406 bytes .../webserver/images/windriver-helix.jpg | Bin 0 -> 213497 bytes .../webserver/images/windriver-red-med.png | Bin 0 -> 1835 bytes .../nfv_vim/webserver/javascript/bootstrap.js | 2306 ++++ .../nfv_vim/webserver/javascript/charts.js | 256 + .../nfv_vim/webserver/javascript/d3.js | 9244 +++++++++++++++++ .../nfv_vim/webserver/javascript/dashboard.js | 709 ++ .../javascript/handlebars-extensions.js | 85 + .../webserver/javascript/handlebars-v2.0.0.js | 3079 ++++++ .../javascript/jquery-cookie-v1.4.1.js | 117 + .../webserver/javascript/jquery-v2.1.3.js | 9205 ++++++++++++++++ .../templates/drop_down_banner.handlebars | 112 + .../templates/host_aggregates.handlebars | 41 + .../templates/host_groups.handlebars | 41 + .../webserver/templates/hosts.handlebars | 101 + .../templates/hypervisors.handlebars | 59 + .../webserver/templates/images.handlebars | 114 + .../templates/instance_groups.handlebars | 43 + .../templates/instance_types.handlebars | 51 + .../webserver/templates/instances.handlebars | 163 + .../webserver/templates/networks.handlebars | 49 + .../webserver/templates/overview.handlebars | 4 + .../webserver/templates/subnets.handlebars | 48 + .../templates/system_banner.handlebars | 56 + .../templates/volume_snapshots.handlebars | 45 + .../webserver/templates/volumes.handlebars | 53 + nfv/nfv-vim/scripts/vim | 317 + nfv/nfv-vim/scripts/vim-api | 317 + nfv/nfv-vim/scripts/vim-webserver | 317 + nfv/nfv-vim/setup.py | 31 + nova-api-proxy/.gitignore | 6 + nova-api-proxy/LICENSE | 202 + nova-api-proxy/PKG-INFO | 13 + nova-api-proxy/centos/build_srpm.data | 3 + nova-api-proxy/centos/nova-api-proxy.spec | 65 + nova-api-proxy/nova_api_proxy/__init__.py | 6 + .../nova_api_proxy/api-proxy-paste.ini | 17 + nova-api-proxy/nova_api_proxy/api_proxy.py | 96 + .../nova_api_proxy/apps/__init__.py | 5 + .../nova_api_proxy/apps/acceptor.py | 214 + .../nova_api_proxy/apps/dispatcher.py | 89 + nova-api-proxy/nova_api_proxy/apps/proxy.py | 112 + .../nova_api_proxy/common/__init__.py | 6 + .../nova_api_proxy/common/config.py | 75 + .../nova_api_proxy/common/exception.py | 53 + .../nova_api_proxy/common/histogram.py | 159 + nova-api-proxy/nova_api_proxy/common/log.py | 63 + .../nova_api_proxy/common/service.py | 273 + .../nova_api_proxy/common/timestamp.py | 36 + nova-api-proxy/nova_api_proxy/common/utils.py | 21 + .../nova_api_proxy/nova-api-proxy.conf | 14 + .../nova_api_proxy/scripts/api-proxy | 148 + .../nova_api_proxy/scripts/api-proxy.service | 12 + nova-api-proxy/setup.py | 21 + 714 files changed, 172490 insertions(+) create mode 100644 CONTRIBUTORS.wrs create mode 100644 LICENSE create mode 100644 README.rst create mode 100644 guest-agent/PKG-INFO create mode 100644 guest-agent/centos/build_srpm.data create mode 100644 guest-agent/centos/guest-scale-agent.spec create mode 100644 guest-agent/guest-scale-agent-2.0/LICENSE create mode 100644 guest-agent/guest-scale-agent-2.0/Makefile create mode 100644 guest-agent/guest-scale-agent-2.0/Makefile.sdk create mode 100644 guest-agent/guest-scale-agent-2.0/bin/.gitignore create mode 100644 guest-agent/guest-scale-agent-2.0/docs/README.txt create mode 100644 guest-agent/guest-scale-agent-2.0/docs/TiS-Guest-Resource-Scaling.doc create mode 100644 guest-agent/guest-scale-agent-2.0/docs/TiS-Guest-Resource-Scaling.pdf create mode 100644 guest-agent/guest-scale-agent-2.0/guest_scale_agent.c create mode 100644 guest-agent/guest-scale-agent-2.0/guest_scale_helper.c create mode 100644 guest-agent/guest-scale-agent-2.0/misc.h create mode 100644 guest-agent/guest-scale-agent-2.0/obj/.gitignore create mode 100644 guest-agent/guest-scale-agent-2.0/parser.c create mode 100644 guest-agent/guest-scale-agent-2.0/parser_test.c create mode 100755 guest-agent/guest-scale-agent-2.0/scripts/app_scale_helper create mode 100644 guest-agent/guest-scale-agent-2.0/scripts/guest-scale-agent.service create mode 100644 guest-agent/guest-scale-agent-2.0/scripts/init_offline_cpus create mode 100644 guest-agent/guest-scale-agent-2.0/scripts/offline-cpus.service create mode 100644 guest-agent/guest-scale-agent-2.0/scripts/offline_cpus create mode 100644 guest-client/LICENSE create mode 100644 guest-client/PKG-INFO create mode 100644 guest-client/centos/build_srpm.data create mode 100644 guest-client/centos/guest-client.spec create mode 100644 guest-client/guest-client-3.0.1/LICENSE create mode 100755 guest-client/guest-client-3.0.1/Makefile create mode 100755 guest-client/guest-client-3.0.1/README create mode 100755 guest-client/guest-client-3.0.1/README.build create mode 100755 guest-client/guest-client-3.0.1/README.usage create mode 100644 guest-client/guest-client-3.0.1/TiS-Guest-Heartbeat-Service.doc create mode 100644 guest-client/guest-client-3.0.1/TiS-Guest-Heartbeat-Service.pdf create mode 100755 guest-client/guest-client-3.0.1/guest_client/Makefile create mode 100755 guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.init create mode 100755 guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.service create mode 100755 guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.systemd create mode 100755 guest-client/guest-client-3.0.1/guest_client/scripts/guest_heartbeat.conf create mode 100755 guest-client/guest-client-3.0.1/guest_client/scripts/sample_event_handling_script create mode 100755 guest-client/guest-client-3.0.1/guest_client/scripts/sample_health_check_script create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/Makefile create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_channel.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_channel.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_client.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_config.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_config.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_debug.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_debug.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_limits.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_process.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_process.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_script.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_script.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_signal.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_signal.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_stream.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_stream.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_time.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_time.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_timer.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_timer.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_types.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_types.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_unix.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_unix.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_utils.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/guest_utils.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/Makefile create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg_defs.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/Makefile create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.h create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_client.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.c create mode 100755 guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.h create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/Makefile create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.c create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.h create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.c create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.h create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.c create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.h create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.c create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.h create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.c create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.h create mode 100755 guest-client/guest-client-3.0.1/guest_client_api/sample_guest_app.c create mode 100755 guest-client/guest-client-3.0.1/include/guest_heartbeat_api_msg_defs.h create mode 100755 guest-client/guest-client-3.0.1/packaging/guest-client.pkg create mode 100644 guest-comm/PKG-INFO create mode 100644 guest-comm/centos/build_srpm.data create mode 100644 guest-comm/centos/host-guest-comm.spec create mode 100644 guest-comm/host-guest-comm-2.0/LICENSE create mode 100644 guest-comm/host-guest-comm-2.0/Makefile create mode 100644 guest-comm/host-guest-comm-2.0/Makefile.sdk create mode 100644 guest-comm/host-guest-comm-2.0/bin/.gitignore create mode 100644 guest-comm/host-guest-comm-2.0/docs/README.txt create mode 100644 guest-comm/host-guest-comm-2.0/docs/TiS-Guest-Server-Group-Messaging.doc create mode 100644 guest-comm/host-guest-comm-2.0/docs/TiS-Guest-Server-Group-Messaging.pdf create mode 100644 guest-comm/host-guest-comm-2.0/guest_agent.c create mode 100644 guest-comm/host-guest-comm-2.0/guest_host_msg.h create mode 100644 guest-comm/host-guest-comm-2.0/host_agent.c create mode 100644 guest-comm/host-guest-comm-2.0/host_guest_msg.c create mode 100644 guest-comm/host-guest-comm-2.0/host_guest_msg.h create mode 100644 guest-comm/host-guest-comm-2.0/host_guest_msg_type.h create mode 100644 guest-comm/host-guest-comm-2.0/host_instance_mgmt.c create mode 100644 guest-comm/host-guest-comm-2.0/host_instance_mgmt.h create mode 100644 guest-comm/host-guest-comm-2.0/lib/.gitignore create mode 100644 guest-comm/host-guest-comm-2.0/lib_guest_host_msg.c create mode 100644 guest-comm/host-guest-comm-2.0/lib_host_guest_msg.c create mode 100644 guest-comm/host-guest-comm-2.0/misc.h create mode 100644 guest-comm/host-guest-comm-2.0/obj/.gitignore create mode 100644 guest-comm/host-guest-comm-2.0/scripts/guest-agent.service create mode 100644 guest-comm/host-guest-comm-2.0/scripts/host_agent create mode 100644 guest-comm/host-guest-comm-2.0/scripts/host_agent.conf create mode 100644 guest-comm/host-guest-comm-2.0/scripts/host_agent.service create mode 100644 guest-comm/host-guest-comm-2.0/server_group.c create mode 100644 guest-comm/host-guest-comm-2.0/server_group.h create mode 100644 guest-comm/host-guest-comm-2.0/server_group_app.c create mode 100644 guest-comm/host-guest-comm-2.0/test/guest_app.c create mode 100644 guest-comm/host-guest-comm-2.0/test/host_app.c create mode 100644 guest-comm/host-guest-comm-2.0/test/test_host_guest_msg.c create mode 100644 mwa-thales.map create mode 100644 nfv/.gitignore create mode 100644 nfv/PKG-INFO create mode 100755 nfv/centos/build_srpm create mode 100755 nfv/centos/build_srpm.data create mode 100755 nfv/centos/nfv.spec create mode 100755 nfv/nfv-client/LICENSE create mode 100755 nfv/nfv-client/nfv_client/__init__.py create mode 100755 nfv/nfv-client/nfv_client/openstack/__init__.py create mode 100755 nfv/nfv-client/nfv_client/openstack/objects.py create mode 100755 nfv/nfv-client/nfv_client/openstack/openstack.py create mode 100755 nfv/nfv-client/nfv_client/openstack/rest_api.py create mode 100755 nfv/nfv-client/nfv_client/openstack/sw_update.py create mode 100755 nfv/nfv-client/nfv_client/shell.py create mode 100755 nfv/nfv-client/nfv_client/sw_update/__init__.py create mode 100755 nfv/nfv-client/nfv_client/sw_update/_sw_update.py create mode 100755 nfv/nfv-client/scripts/sw-manager.completion create mode 100755 nfv/nfv-client/setup.py create mode 100755 nfv/nfv-common/LICENSE create mode 100755 nfv/nfv-common/nfv_common/__init__.py create mode 100755 nfv/nfv-common/nfv_common/alarm/__init__.py create mode 100755 nfv/nfv-common/nfv_common/alarm/_alarm_handlers.py create mode 100755 nfv/nfv-common/nfv_common/alarm/_alarm_module.py create mode 100755 nfv/nfv-common/nfv_common/alarm/_alarm_thread.py create mode 100755 nfv/nfv-common/nfv_common/alarm/handlers/__init__.py create mode 100755 nfv/nfv-common/nfv_common/alarm/handlers/v1/__init__.py create mode 100755 nfv/nfv-common/nfv_common/alarm/handlers/v1/_alarm_handler.py create mode 100755 nfv/nfv-common/nfv_common/alarm/objects/__init__.py create mode 100755 nfv/nfv-common/nfv_common/alarm/objects/v1/__init__.py create mode 100755 nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_data.py create mode 100755 nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_defs.py create mode 100755 nfv/nfv-common/nfv_common/catalog/__init__.py create mode 100755 nfv/nfv-common/nfv_common/catalog/_catalog_backend.py create mode 100755 nfv/nfv-common/nfv_common/catalog/_catalog_module.py create mode 100755 nfv/nfv-common/nfv_common/catalog/model/__init__.py create mode 100755 nfv/nfv-common/nfv_common/catalog/model/_defs.py create mode 100755 nfv/nfv-common/nfv_common/catalog/model/_vnf_descriptor.py create mode 100755 nfv/nfv-common/nfv_common/catalog/plugin/__init__.py create mode 100755 nfv/nfv-common/nfv_common/catalog/plugin/v1/__init__.py create mode 100755 nfv/nfv-common/nfv_common/catalog/plugin/v1/_catalog_plugin.py create mode 100755 nfv/nfv-common/nfv_common/config.py create mode 100755 nfv/nfv-common/nfv_common/debug/__init__.py create mode 100755 nfv/nfv-common/nfv_common/debug/_debug_config.py create mode 100755 nfv/nfv-common/nfv_common/debug/_debug_defs.py create mode 100755 nfv/nfv-common/nfv_common/debug/_debug_log.py create mode 100755 nfv/nfv-common/nfv_common/debug/_debug_module.py create mode 100755 nfv/nfv-common/nfv_common/debug/_debug_thread.py create mode 100755 nfv/nfv-common/nfv_common/event_log/__init__.py create mode 100755 nfv/nfv-common/nfv_common/event_log/_event_log_handlers.py create mode 100755 nfv/nfv-common/nfv_common/event_log/_event_log_module.py create mode 100755 nfv/nfv-common/nfv_common/event_log/_event_log_thread.py create mode 100755 nfv/nfv-common/nfv_common/event_log/handlers/__init__.py create mode 100755 nfv/nfv-common/nfv_common/event_log/handlers/v1/__init__.py create mode 100755 nfv/nfv-common/nfv_common/event_log/handlers/v1/_event_log_handler.py create mode 100755 nfv/nfv-common/nfv_common/event_log/objects/__init__.py create mode 100755 nfv/nfv-common/nfv_common/event_log/objects/v1/__init__.py create mode 100755 nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_data.py create mode 100755 nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_defs.py create mode 100755 nfv/nfv-common/nfv_common/exceptions.py create mode 100755 nfv/nfv-common/nfv_common/forensic/__init__.py create mode 100755 nfv/nfv-common/nfv_common/forensic/_analysis.py create mode 100755 nfv/nfv-common/nfv_common/forensic/_defs.py create mode 100755 nfv/nfv-common/nfv_common/forensic/_evidence.py create mode 100755 nfv/nfv-common/nfv_common/forensic/_forensic_module.py create mode 100755 nfv/nfv-common/nfv_common/forensic/_nfv_vim_parser.py create mode 100755 nfv/nfv-common/nfv_common/forensic/_parsers.py create mode 100755 nfv/nfv-common/nfv_common/forensic/config/nfv-vim.yaml create mode 100755 nfv/nfv-common/nfv_common/helpers.py create mode 100755 nfv/nfv-common/nfv_common/histogram.py create mode 100755 nfv/nfv-common/nfv_common/profiler.py create mode 100755 nfv/nfv-common/nfv_common/schedule/__init__.py create mode 100755 nfv/nfv-common/nfv_common/schedule/_schedule_module.py create mode 100755 nfv/nfv-common/nfv_common/selectable.py create mode 100755 nfv/nfv-common/nfv_common/selobj/__init__.py create mode 100755 nfv/nfv-common/nfv_common/selobj/_selobj_module.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/__init__.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/_state.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/_state_exception.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/_state_machine.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/_state_task.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/_state_task_result.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/_state_task_work.py create mode 100755 nfv/nfv-common/nfv_common/state_machine/_state_task_work_result.py create mode 100755 nfv/nfv-common/nfv_common/strategy/__init__.py create mode 100755 nfv/nfv-common/nfv_common/strategy/_strategy.py create mode 100755 nfv/nfv-common/nfv_common/strategy/_strategy_defs.py create mode 100755 nfv/nfv-common/nfv_common/strategy/_strategy_phase.py create mode 100755 nfv/nfv-common/nfv_common/strategy/_strategy_result.py create mode 100755 nfv/nfv-common/nfv_common/strategy/_strategy_stage.py create mode 100755 nfv/nfv-common/nfv_common/strategy/_strategy_step.py create mode 100755 nfv/nfv-common/nfv_common/tasks/__init__.py create mode 100755 nfv/nfv-common/nfv_common/tasks/_task.py create mode 100755 nfv/nfv-common/nfv_common/tasks/_task_future.py create mode 100755 nfv/nfv-common/nfv_common/tasks/_task_result.py create mode 100755 nfv/nfv-common/nfv_common/tasks/_task_scheduler.py create mode 100755 nfv/nfv-common/nfv_common/tasks/_task_work.py create mode 100755 nfv/nfv-common/nfv_common/tasks/_task_worker.py create mode 100755 nfv/nfv-common/nfv_common/tasks/_task_worker_pool.py create mode 100755 nfv/nfv-common/nfv_common/tasks/unit_test.py create mode 100755 nfv/nfv-common/nfv_common/tcp/__init__.py create mode 100755 nfv/nfv-common/nfv_common/tcp/_tcp_connection.py create mode 100755 nfv/nfv-common/nfv_common/tcp/_tcp_server.py create mode 100755 nfv/nfv-common/nfv_common/tcp/unit_test.py create mode 100755 nfv/nfv-common/nfv_common/thread/__init__.py create mode 100755 nfv/nfv-common/nfv_common/thread/_thread.py create mode 100755 nfv/nfv-common/nfv_common/thread/_thread_progress_marker.py create mode 100755 nfv/nfv-common/nfv_common/thread/_thread_worker.py create mode 100755 nfv/nfv-common/nfv_common/timers/__init__.py create mode 100755 nfv/nfv-common/nfv_common/timers/_timer.py create mode 100755 nfv/nfv-common/nfv_common/timers/_timer_module.py create mode 100755 nfv/nfv-common/nfv_common/timers/_timer_scheduler.py create mode 100755 nfv/nfv-common/nfv_common/timers/_timestamp.py create mode 100755 nfv/nfv-common/nfv_common/validate.py create mode 100755 nfv/nfv-common/setup.py create mode 100755 nfv/nfv-debug-tools/histogram_analysis/Histogram.py create mode 100755 nfv/nfv-debug-tools/histogram_analysis/plotter.py create mode 100755 nfv/nfv-docs/Makefile create mode 100755 nfv/nfv-docs/doc_builder.py create mode 100755 nfv/nfv-docs/documentation/document.yaml create mode 100755 nfv/nfv-docs/documentation/software_image_management.yaml create mode 100755 nfv/nfv-docs/documentation/virtualised_compute_resource.yaml create mode 100755 nfv/nfv-docs/documentation/virtualised_network_resource.yaml create mode 100755 nfv/nfv-docs/documentation/virtualised_storage_resource.yaml create mode 100644 nfv/nfv-docs/html_layout/conf.py create mode 100755 nfv/nfv-docs/html_layout/css/bootstrap.css create mode 100755 nfv/nfv-docs/html_layout/css/dashboard.css create mode 100755 nfv/nfv-docs/html_layout/images/network_model.svg create mode 100755 nfv/nfv-docs/html_layout/images/windriver-favicon.ico create mode 100755 nfv/nfv-docs/html_layout/images/windriver-red-med.png create mode 100755 nfv/nfv-docs/html_layout/javascript/bootstrap.js create mode 100755 nfv/nfv-docs/html_layout/javascript/dashboard.js create mode 100755 nfv/nfv-docs/html_layout/javascript/jquery-v2.1.3.js create mode 100755 nfv/nfv-docs/html_layout/templates/index.html create mode 100755 nfv/nfv-docs/html_layout/templates/page_content.html create mode 100755 nfv/nfv-plugins/LICENSE create mode 100755 nfv/nfv-plugins/nfv_plugins/__init__.py create mode 100755 nfv/nfv-plugins/nfv_plugins/alarm_handlers/__init__.py create mode 100755 nfv/nfv-plugins/nfv_plugins/alarm_handlers/config.ini create mode 100755 nfv/nfv-plugins/nfv_plugins/alarm_handlers/config.py create mode 100755 nfv/nfv-plugins/nfv_plugins/alarm_handlers/file_storage.py create mode 100755 nfv/nfv-plugins/nfv_plugins/alarm_handlers/fm.py create mode 100755 nfv/nfv-plugins/nfv_plugins/event_log_handlers/__init__.py create mode 100755 nfv/nfv-plugins/nfv_plugins/event_log_handlers/config.ini create mode 100755 nfv/nfv-plugins/nfv_plugins/event_log_handlers/config.py create mode 100755 nfv/nfv-plugins/nfv_plugins/event_log_handlers/file_storage.py create mode 100755 nfv/nfv-plugins/nfv_plugins/event_log_handlers/fm.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/__init__.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/config.ini create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/config.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_block_storage_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_compute_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_guest_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_identity_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_image_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_infrastructure_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_network_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/nfvi_sw_mgmt_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/__init__.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/ceilometer.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/cinder.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/exceptions.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/glance.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/guest.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/heat.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/keystone.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/mtc.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/neutron.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/nova.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/objects.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/openstack.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/openstack_log.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/patching.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/rest_api.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/rpc_listener.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/openstack/sysinv.py create mode 100755 nfv/nfv-plugins/nfv_plugins/nfvi_plugins/unit_test.py create mode 100755 nfv/nfv-plugins/scripts/nfvi_plugins.logrotate create mode 100755 nfv/nfv-plugins/setup.py create mode 100644 nfv/nfv-tests/nfv_api_tests/vim_mano_compute_test_cases.txt create mode 100644 nfv/nfv-tests/nfv_api_tests/vim_mano_heat_test_cases.txt create mode 100644 nfv/nfv-tests/nfv_api_tests/vim_mano_image_test_cases.txt create mode 100644 nfv/nfv-tests/nfv_api_tests/vim_mano_network_test_cases.txt create mode 100644 nfv/nfv-tests/nfv_api_tests/vim_mano_volume_test_cases.txt create mode 100644 nfv/nfv-tests/nfv_api_tests/vim_orchestration_test_cases.txt create mode 100644 nfv/nfv-tests/nfv_api_tests/vim_random_tests.script create mode 100644 nfv/nfv-tests/nfv_api_tests/vm_action_requests.txt create mode 100755 nfv/nfv-tests/nfv_scenario_tests/README create mode 100755 nfv/nfv-tests/nfv_scenario_tests/__init__.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/config.ini create mode 100755 nfv/nfv-tests/nfv_scenario_tests/coverage.ini create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/data/default-data-guest.yaml create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/data/default-data.yaml create mode 100644 nfv/nfv-tests/nfv_scenario_tests/data/loads/cirros-guest.img create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/loads/cirros.img create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/setup/default-setup.template create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/setup/submission-setup-guest.template create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/setup/submission-setup.template create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/tests/default-tests.template create mode 100755 nfv/nfv-tests/nfv_scenario_tests/data/tests/submission-tests.template create mode 100755 nfv/nfv-tests/nfv_scenario_tests/debug.ini create mode 100755 nfv/nfv-tests/nfv_scenario_tests/main.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/setup.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/__init__.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/_alarms.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/_event_logs.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/_hosts.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/_instances.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/_test_base.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/_test_hosts.py create mode 100755 nfv/nfv-tests/nfv_scenario_tests/tests/_test_instances.py create mode 100755 nfv/nfv-tests/nfv_unit_tests/.gitignore create mode 100755 nfv/nfv-tests/nfv_unit_tests/README create mode 100755 nfv/nfv-tests/nfv_unit_tests/__init__.py create mode 100755 nfv/nfv-tests/nfv_unit_tests/coverage.ini create mode 100755 nfv/nfv-tests/nfv_unit_tests/pylint.rc create mode 100755 nfv/nfv-tests/nfv_unit_tests/setup.py create mode 100644 nfv/nfv-tests/nfv_unit_tests/test_data/nfv_vim_db_15.12_patch002 create mode 100644 nfv/nfv-tests/nfv_unit_tests/test_data/nfv_vim_db_16.10_GA create mode 100644 nfv/nfv-tests/nfv_unit_tests/test_data/nfv_vim_db_17.06_GA create mode 100755 nfv/nfv-tests/nfv_unit_tests/tests/test_database_upgrades.py create mode 100755 nfv/nfv-tests/nfv_unit_tests/tests/test_instance.py create mode 100755 nfv/nfv-tests/nfv_unit_tests/tests/test_instance_director.py create mode 100755 nfv/nfv-tests/nfv_unit_tests/tests/test_sw_patch_strategy.py create mode 100755 nfv/nfv-tests/nfv_unit_tests/tests/test_sw_upgrade_strategy.py create mode 100755 nfv/nfv-tests/nfv_unit_tests/tox.ini create mode 100755 nfv/nfv-tools/LICENSE create mode 100755 nfv/nfv-tools/nfv_tools/__init__.py create mode 100755 nfv/nfv-tools/nfv_tools/forensic.ini create mode 100755 nfv/nfv-tools/nfv_tools/forensic.py create mode 100755 nfv/nfv-tools/nfv_tools/notify.py create mode 100755 nfv/nfv-tools/setup.py create mode 100755 nfv/nfv-vim/LICENSE create mode 100755 nfv/nfv-vim/nfv_vim/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/alarm/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/alarm/_general.py create mode 100755 nfv/nfv-vim/nfv_vim/alarm/_host.py create mode 100755 nfv/nfv-vim/nfv_vim/alarm/_instance.py create mode 100755 nfv/nfv-vim/nfv_vim/alarm/_instance_group.py create mode 100755 nfv/nfv-vim/nfv_vim/alarm/_sw_update.py create mode 100755 nfv/nfv-vim/nfv_vim/api/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/_application.py create mode 100755 nfv/nfv-vim/nfv_vim/api/_config.py create mode 100755 nfv/nfv-vim/nfv_vim/api/_hooks.py create mode 100755 nfv/nfv-vim/nfv_vim/api/_link.py create mode 100755 nfv/nfv-vim/nfv_vim/api/acl/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/acl/_application.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/root.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/_controller.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/openstack/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/openstack/_controller.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/openstack/_heat_api.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/orchestration/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/orchestration/_controller.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/orchestration/sw_update/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/orchestration/sw_update/_sw_patch.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/orchestration/sw_update/_sw_update_defs.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/orchestration/sw_update/_sw_update_strategy.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/orchestration/sw_update/_sw_upgrade.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/_computes_api.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/_controller.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/_image_api.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/_networks_api.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/_networks_middleware.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/_networks_model.py create mode 100755 nfv/nfv-vim/nfv_vim/api/controllers/v1/virtualised_resources/_volume_api.py create mode 100755 nfv/nfv-vim/nfv_vim/api/openstack/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/api/openstack/_config.py create mode 100755 nfv/nfv-vim/nfv_vim/api/openstack/_objects.py create mode 100755 nfv/nfv-vim/nfv_vim/api/openstack/_openstack.py create mode 100755 nfv/nfv-vim/nfv_vim/api/openstack/_rest_api.py create mode 100755 nfv/nfv-vim/nfv_vim/audits/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/audits/_audits_module.py create mode 100755 nfv/nfv-vim/nfv_vim/audits/_vim_alarm_audits.py create mode 100755 nfv/nfv-vim/nfv_vim/audits/_vim_nfvi_audits.py create mode 100755 nfv/nfv-vim/nfv_vim/config.ini create mode 100755 nfv/nfv-vim/nfv_vim/database/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_block_storage_module.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_compute_module.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_identity_module.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_image_module.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_infrastructure_module.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_migrate.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_module.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_network_module.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_sw_update.py create mode 100755 nfv/nfv-vim/nfv_vim/database/_database_upgrades.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_base.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_host.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_host_aggregate.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_host_group.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_hypervisor.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_image.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_instance.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_instance_group.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_instance_type.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_network.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_service_host.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_subnet.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_sw_update.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_system.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_tenant.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_types.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_volume.py create mode 100755 nfv/nfv-vim/nfv_vim/database/model/_volume_snapshot.py create mode 100755 nfv/nfv-vim/nfv_vim/debug.ini create mode 100755 nfv/nfv-vim/nfv_vim/directors/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_directors_defs.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_directors_module.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_host_director.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_image_director.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_instance_director.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_network_director.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_sw_mgmt_director.py create mode 100755 nfv/nfv-vim/nfv_vim/directors/_volume_director.py create mode 100755 nfv/nfv-vim/nfv_vim/dor/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/dor/_dor_module.py create mode 100755 nfv/nfv-vim/nfv_vim/event_log/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/event_log/_general.py create mode 100755 nfv/nfv-vim/nfv_vim/event_log/_host.py create mode 100755 nfv/nfv-vim/nfv_vim/event_log/_instance.py create mode 100755 nfv/nfv-vim/nfv_vim/event_log/_sw_update.py create mode 100755 nfv/nfv-vim/nfv_vim/events/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_events_module.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_vim_api_events.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_vim_image_api_events.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_vim_instance_api_events.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_vim_network_api_events.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_vim_nfvi_events.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_vim_sw_update_api_events.py create mode 100755 nfv/nfv-vim/nfv_vim/events/_vim_volume_api_events.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_defs.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_fsm.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_configure.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_deleted.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_deleting.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_deleting_failed.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_disabled.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_disabling.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_disabling_failed.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_enabled.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_enabling.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_state_initial.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_task_work.py create mode 100755 nfv/nfv-vim/nfv_vim/host_fsm/_host_tasks.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_defs.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_fsm.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_cold_migrate.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_cold_migrate_confirm.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_cold_migrate_revert.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_delete.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_evacuate.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_fail.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_guest_services_create.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_guest_services_delete.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_guest_services_disable.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_guest_services_enable.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_guest_services_set.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_initial.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_live_migrate.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_live_migrate_finish.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_pause.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_reboot.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_rebuild.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_resize.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_resize_confirm.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_resize_revert.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_resume.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_start.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_stop.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_suspend.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_state_unpause.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_task_work.py create mode 100755 nfv/nfv-vim/nfv_vim/instance_fsm/_instance_tasks.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_block_storage_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_block_storage_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_compute_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_compute_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_defs.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_guest_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_guest_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_identity_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_identity_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_image_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_image_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_infrastructure_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_infrastructure_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_network_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_network_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_sw_mgmt_module.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/_nfvi_sw_mgmt_plugin.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_block_storage_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_compute_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_guest_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_identity_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_image_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_infrastructure_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_network_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_scheduler_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/api/v1/_nfvi_sw_mgmt_api.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_alarm.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_guest_service.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_host.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_host_aggregate.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_host_group.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_host_sw_patch.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_hypervisor.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_image.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_instance.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_instance_group.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_instance_type.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_network.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_object.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_paging.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_service_host.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_subnet.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_sw_patch.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_system.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_tenant.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_upgrade.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_volume.py create mode 100755 nfv/nfv-vim/nfv_vim/nfvi/objects/v1/_volume_snapshot.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_guest_services.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_host.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_host_aggregate.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_host_group.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_hypervisor.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_image.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_instance.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_instance_group.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_instance_type.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_network.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_object.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_service_host.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_subnet.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_sw_patch.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_sw_update.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_sw_upgrade.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_system.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_tenant.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_volume.py create mode 100755 nfv/nfv-vim/nfv_vim/objects/_volume_snapshot.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_defs.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_message.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_message_image.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_message_instance.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_message_network.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_message_subnet.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_message_sw_update.py create mode 100755 nfv/nfv-vim/nfv_vim/rpc/_rpc_message_volume.py create mode 100755 nfv/nfv-vim/nfv_vim/strategy/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/strategy/_strategy.py create mode 100755 nfv/nfv-vim/nfv_vim/strategy/_strategy_defs.py create mode 100755 nfv/nfv-vim/nfv_vim/strategy/_strategy_phases.py create mode 100755 nfv/nfv-vim/nfv_vim/strategy/_strategy_stages.py create mode 100755 nfv/nfv-vim/nfv_vim/strategy/_strategy_steps.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_host_aggregate_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_host_group_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_host_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_hypervisor_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_image_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_instance_group_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_instance_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_instance_type_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_network_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_service_host_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_subnet_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_system_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_tables_module.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_tenant_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_volume_snapshot_table.py create mode 100755 nfv/nfv-vim/nfv_vim/tables/_volume_table.py create mode 100755 nfv/nfv-vim/nfv_vim/vim.py create mode 100755 nfv/nfv-vim/nfv_vim/vim_api.py create mode 100755 nfv/nfv-vim/nfv_vim/vim_manage.py create mode 100755 nfv/nfv-vim/nfv_vim/vim_webserver.py create mode 100755 nfv/nfv-vim/nfv_vim/webserver/__init__.py create mode 100755 nfv/nfv-vim/nfv_vim/webserver/_webserver.py create mode 100755 nfv/nfv-vim/nfv_vim/webserver/css/bootstrap-responsive.css create mode 100755 nfv/nfv-vim/nfv_vim/webserver/css/bootstrap.css create mode 100755 nfv/nfv-vim/nfv_vim/webserver/css/charts.css create mode 100755 nfv/nfv-vim/nfv_vim/webserver/css/dashboard-sidebar.css create mode 100755 nfv/nfv-vim/nfv_vim/webserver/css/dashboard-topbar.css create mode 100755 nfv/nfv-vim/nfv_vim/webserver/css/dashboard.css create mode 100755 nfv/nfv-vim/nfv_vim/webserver/fonts/glyphicons-halflings-regular.woff create mode 100755 nfv/nfv-vim/nfv_vim/webserver/fonts/glyphicons-halflings-regular.woff2 create mode 100755 nfv/nfv-vim/nfv_vim/webserver/html/index.html create mode 100755 nfv/nfv-vim/nfv_vim/webserver/images/details_close.png create mode 100755 nfv/nfv-vim/nfv_vim/webserver/images/details_open.png create mode 100755 nfv/nfv-vim/nfv_vim/webserver/images/windriver-favicon.ico create mode 100755 nfv/nfv-vim/nfv_vim/webserver/images/windriver-helix.jpg create mode 100755 nfv/nfv-vim/nfv_vim/webserver/images/windriver-red-med.png create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/bootstrap.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/charts.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/d3.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/dashboard.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/handlebars-extensions.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/handlebars-v2.0.0.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/jquery-cookie-v1.4.1.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/javascript/jquery-v2.1.3.js create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/drop_down_banner.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/host_aggregates.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/host_groups.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/hosts.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/hypervisors.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/images.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/instance_groups.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/instance_types.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/instances.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/networks.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/overview.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/subnets.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/system_banner.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/volume_snapshots.handlebars create mode 100755 nfv/nfv-vim/nfv_vim/webserver/templates/volumes.handlebars create mode 100755 nfv/nfv-vim/scripts/vim create mode 100755 nfv/nfv-vim/scripts/vim-api create mode 100755 nfv/nfv-vim/scripts/vim-webserver create mode 100755 nfv/nfv-vim/setup.py create mode 100644 nova-api-proxy/.gitignore create mode 100755 nova-api-proxy/LICENSE create mode 100644 nova-api-proxy/PKG-INFO create mode 100644 nova-api-proxy/centos/build_srpm.data create mode 100644 nova-api-proxy/centos/nova-api-proxy.spec create mode 100644 nova-api-proxy/nova_api_proxy/__init__.py create mode 100644 nova-api-proxy/nova_api_proxy/api-proxy-paste.ini create mode 100644 nova-api-proxy/nova_api_proxy/api_proxy.py create mode 100644 nova-api-proxy/nova_api_proxy/apps/__init__.py create mode 100644 nova-api-proxy/nova_api_proxy/apps/acceptor.py create mode 100644 nova-api-proxy/nova_api_proxy/apps/dispatcher.py create mode 100644 nova-api-proxy/nova_api_proxy/apps/proxy.py create mode 100644 nova-api-proxy/nova_api_proxy/common/__init__.py create mode 100644 nova-api-proxy/nova_api_proxy/common/config.py create mode 100644 nova-api-proxy/nova_api_proxy/common/exception.py create mode 100644 nova-api-proxy/nova_api_proxy/common/histogram.py create mode 100644 nova-api-proxy/nova_api_proxy/common/log.py create mode 100644 nova-api-proxy/nova_api_proxy/common/service.py create mode 100644 nova-api-proxy/nova_api_proxy/common/timestamp.py create mode 100644 nova-api-proxy/nova_api_proxy/common/utils.py create mode 100644 nova-api-proxy/nova_api_proxy/nova-api-proxy.conf create mode 100644 nova-api-proxy/nova_api_proxy/scripts/api-proxy create mode 100644 nova-api-proxy/nova_api_proxy/scripts/api-proxy.service create mode 100644 nova-api-proxy/setup.py diff --git a/CONTRIBUTORS.wrs b/CONTRIBUTORS.wrs new file mode 100644 index 00000000..ad61649f --- /dev/null +++ b/CONTRIBUTORS.wrs @@ -0,0 +1,10 @@ +The following contributors from Wind River have developed the seed code in this +repository. We look forward to community collaboration and contributions for +additional features, enhancements and refactoring. + +Contributors: +============= +Bart Wensley +Tao Liu +Eric Macdonald +Jack Ding diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.rst b/README.rst new file mode 100644 index 00000000..33bbf739 --- /dev/null +++ b/README.rst @@ -0,0 +1,5 @@ +======= +stx-nfv +======= + +StarlingX NFVI Orchestration diff --git a/guest-agent/PKG-INFO b/guest-agent/PKG-INFO new file mode 100644 index 00000000..e9c7c6ea --- /dev/null +++ b/guest-agent/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 1.1 +Name: guest-scale-agent +Version: 2.0 +Summary: Titanium Cloud agent and helper app to scale VMs up/down +Home-page: +Author: Windriver +Author-email: info@windriver.com +License: Apache-2.0 + +Description: Titanium Cloud agent and helper app to scale VMs up/down + +Platform: UNKNOWN diff --git a/guest-agent/centos/build_srpm.data b/guest-agent/centos/build_srpm.data new file mode 100644 index 00000000..55bf2d1c --- /dev/null +++ b/guest-agent/centos/build_srpm.data @@ -0,0 +1,2 @@ +SRC_DIR="guest-scale-agent-2.0" +TIS_PATCH_VER=6 diff --git a/guest-agent/centos/guest-scale-agent.spec b/guest-agent/centos/guest-scale-agent.spec new file mode 100644 index 00000000..a11a9cb6 --- /dev/null +++ b/guest-agent/centos/guest-scale-agent.spec @@ -0,0 +1,137 @@ +Summary: Titanium Cloud agent and helper app to scale VMs up/down +Name: guest-scale-agent +Version: 2.0 +%define patchlevel %{tis_patch_ver} +Release: %{tis_patch_ver}%{?_tis_dist} +License: Apache-2.0 +Group: base +Packager: Wind River +URL: unknown + +%define cgcs_sdk_deploy_dir /opt/deploy/cgcs_sdk +Source0: %{name}-%{version}.tar.gz + +BuildRequires: json-c-devel +BuildRequires: host-guest-comm-dev +BuildRequires: guest-host-comm-dev +BuildRequires: systemd-devel + +Requires: bash + +%description +Titanium Cloud agent and helper app to scale VMs up/down + +%package -n guest-scale-agent-dbg +Summary: Titanium Cloud agent and helper app to scale VMs up/down - Debugging files +Group: devel + +%description -n guest-scale-agent-dbg +Titanium Cloud agent and helper app to scale VMs up/down This package contains ELF +symbols and related sources for debugging purposes. + +%package -n guest-scale-agent-dev +Summary: Titanium Cloud agent and helper app to scale VMs up/down - Development files +Group: devel +Requires: guest-scale-agent = %{version}-%{release} + +%description -n guest-scale-agent-dev +Titanium Cloud agent and helper app to scale VMs up/down This package contains +symbolic links, header files, and related items necessary for software +development. + +%package -n guest-scale-helper +Summary: Titanium Cloud agent and helper app to scale VMs up/down +Group: base +Requires: rtld(GNU_HASH) + +%description -n guest-scale-helper +Titanium Cloud agent and helper app to scale VMs up/down + +%package -n %{name}-cgts-sdk +Summary: SDK files for Titanium Cloud agent and helper app to scale VMs up/down +Group: devel + +%description -n %{name}-cgts-sdk +SDK files for Titanium Cloud agent and helper app to scale VMs up/down +%prep +%setup + + +%build +VER=%{version} +MAJOR=`echo $VER | awk -F . '{print $1}'` +MINOR=`echo $VER | awk -F . '{print $2}'` +PATCH=%{patchlevel} +make all VER=${VER} MAJOR=${MAJOR} MINOR=${MINOR} PATCH=${PATCH} + +%global _buildsubdir %{_builddir}/%{name}-%{version} + +%install +install -d 750 -d %{buildroot}/usr/sbin +install -d 750 -d %{buildroot}%{_sysconfdir}/init.d + +install -m 750 -d %{buildroot}/usr +install -m 750 -d %{buildroot}/usr/src +install -m 750 -d %{buildroot}/usr/src/debug +install -m 750 -d %{buildroot}/usr/src/debug/%{name}-%{version} +install -d 750 -d %{buildroot}/usr/sbin/.debug + +install -m 750 %{_buildsubdir}/scripts/app_scale_helper %{buildroot}/usr/sbin/app_scale_helper +install -m 750 %{_buildsubdir}/scripts/offline_cpus %{buildroot}/usr/sbin/offline_cpus +install -m 750 %{_buildsubdir}/bin/guest_scale_helper %{buildroot}/usr/sbin/guest_scale_helper +install -m 750 %{_buildsubdir}/bin/guest_scale_agent %{buildroot}/usr/sbin/guest_scale_agent +install -m 750 %{_buildsubdir}/scripts/init_offline_cpus %{buildroot}/etc/init.d/offline_cpus +install -m 750 %{_buildsubdir}/bin/guest_scale_agent %{buildroot}/usr/sbin/.debug/guest_scale_agent + +install -d %{buildroot}%{_unitdir} +install -m 750 %{_buildsubdir}/scripts/offline-cpus.service %{buildroot}%{_unitdir}/offline-cpus.service +install -m 750 %{_buildsubdir}/scripts/guest-scale-agent.service %{buildroot}%{_unitdir}/guest-scale-agent.service + +# Deploy to the SDK deployment directory +install -d %{buildroot}%{cgcs_sdk_deploy_dir} +install -m 644 sdk/wrs-guest-scale-%{version}.%{patchlevel}.tgz %{buildroot}%{cgcs_sdk_deploy_dir}/wrs-guest-scale-%{version}.%{patchlevel}.tgz + + +%post +%systemd_post offline-cpus.service +%systemd_post guest-scale-agent.service +/usr/bin/systemctl enable offline-cpus.service >/dev/null 2>&1 +/usr/bin/systemctl enable guest-scale-agent.service >/dev/null 2>&1 + +%preun +%systemd_preun offline-cpus.service +%systemd_preun guest-scale-agent.service + +%postun +%systemd_postun guest-scale-agent.service +%systemd_postun offline-cpus.service + +%files +%defattr(-,root,root,-) + +/usr/sbin/guest_scale_agent +/usr/sbin/offline_cpus +/usr/sbin/app_scale_helper +/etc/init.d/offline_cpus +%{_unitdir}/offline-cpus.service +%{_unitdir}/guest-scale-agent.service + +%files -n guest-scale-agent-dbg +%defattr(-,root,root,-) + +/usr/src/debug/* +/usr/sbin/.debug/guest_scale_agent + +%files -n guest-scale-agent-dev +%defattr(-,root,root,-) + +/usr/sbin/.debug/guest_scale_agent + +%files -n guest-scale-helper +%defattr(-,root,root,-) + +/usr/sbin/guest_scale_helper + +%files -n %{name}-cgts-sdk +%{cgcs_sdk_deploy_dir}/wrs-guest-scale-%{version}.%{patchlevel}.tgz + diff --git a/guest-agent/guest-scale-agent-2.0/LICENSE b/guest-agent/guest-scale-agent-2.0/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/guest-agent/guest-scale-agent-2.0/Makefile b/guest-agent/guest-scale-agent-2.0/Makefile new file mode 100644 index 00000000..0a2cf192 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/Makefile @@ -0,0 +1,110 @@ +# +# BSD LICENSE +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Note: if you change either Makefile or Makefile.sdk you need to manually +# do a "make clean" and then "make". + +EXECS = guest_scale_helper guest_scale_agent + +CFLAGS= -g -Wall +ODIR=obj +BINDIR=bin + +BINEXECS=$(addprefix $(BINDIR)/, $(EXECS)) + +GUEST_SCALE_HELPER_SRCS = guest_scale_helper.c parser.c +GUEST_SCALE_HELPER_OBJ := $(patsubst %,$(ODIR)/%,$(GUEST_SCALE_HELPER_SRCS:.c=.o)) + +GUEST_SCALE_AGENT_SRCS= guest_scale_agent.c parser.c +GUEST_SCALE_AGENT_OBJ := $(patsubst %,$(ODIR)/%,$(GUEST_SCALE_AGENT_SRCS:.c=.o)) + +OBJS = $(GUEST_SCALE_OBJ) $(GUEST_SCALE_AGENT_OBJ) +DEPS = $(OBJS:.o=.d) sdk/sdk.d +-include $(DEPS) + +EXPORT_SDK := wrs-guest-scale-$(MAJOR).$(MINOR).$(PATCH) + +# SYSROOT = $(shell for i in $(LD) ; do echo $$i; done | grep sysroot= | awk -F = '{ print $$2 }'`) +SYSROOT = $(shell echo "$(LD)" | sed -n -e 's/^.*sysroot=//p' | awk '{ print $$1 }') +LIBSERVERGROUP_VER = $(shell find $(SYSROOT) | grep libservergroup.so. | sed -n -e 's/^.*libservergroup\.so\.//p') + +print-%: + @echo $* = $($*) + +printvars: + @$(foreach V,$(sort $(.VARIABLES)), $(if $(filter-out environment% default automatic, $(origin $V)),$(warning $V=$($V) ($(value $V))))) + +.PHONY: printvars + +all: host_all +host_all: $(BINEXECS) sdk/$(EXPORT_SDK).tgz + +# The dependency tracking for the SDK tarball is rather crude. If any +# file changes they're all copied over again. This is quick, so it's +# not worth getting fancy. +sdk/$(EXPORT_SDK).tgz: printvars + @echo "Making SDK" + @mkdir -p sdk/$(EXPORT_SDK) + @mkdir -p sdk/$(EXPORT_SDK)/bin + @mkdir -p sdk/$(EXPORT_SDK)/obj + @mkdir -p sdk/$(EXPORT_SDK)/scripts + @cp scripts/* sdk/$(EXPORT_SDK)/scripts + @echo "MAJOR=$(MAJOR)" > sdk/$(EXPORT_SDK)/Makefile + @echo "MINOR=$(MINOR)" >> sdk/$(EXPORT_SDK)/Makefile + @echo "PATCH=$(PATCH)" >> sdk/$(EXPORT_SDK)/Makefile + @cat Makefile.sdk >> sdk/$(EXPORT_SDK)/Makefile + @cat docs/README.txt | sed 's/1\.0\.0/$(MAJOR).$(MINOR).$(PATCH)/' | sed 's/9.9.9/${LIBSERVERGROUP_VER}/' > sdk/$(EXPORT_SDK)/README.txt + @cp docs/TiS-Guest-Resource-Scaling.pdf sdk/$(EXPORT_SDK)/TiS-Guest-Resource-Scaling.pdf + @cp LICENSE sdk/$(EXPORT_SDK)/LICENSE + @cp $(GUEST_SCALE_AGENT_SRCS) sdk/$(EXPORT_SDK) + @cp misc.h sdk/$(EXPORT_SDK) + @cd sdk && tar czf $(EXPORT_SDK).tgz $(EXPORT_SDK) + @echo -n "sdk/$(EXPORT_SDK).tgz: Makefile.sdk docs/README.txt docs/TiS-Guest-Resource-Scaling.pdf " > sdk/sdk.d + @echo -n "scripts/init_offline_cpus scripts/offline_cpus scripts/offline-cpus.service" >> sdk/sdk.d + @echo -n "scripts/app_scale_helper " >> sdk/sdk.d + @echo -n "$(GUEST_SCALE_AGENT_SRCS) " >> sdk/sdk.d + @echo "misc.h " >> sdk/sdk.d + @echo '*' > sdk/.gitignore + + +$(ODIR)/%.o: %.c + $(CC) -c $(CFLAGS) $(CFLAGS2) -MMD -o $@ $< + +$(BINDIR)/guest_scale_agent: $(GUEST_SCALE_AGENT_OBJ) + $(CC) -o $@ $^ $(LDFLAGS) -lguesthostmsg -ljson-c + +$(BINDIR)/guest_scale_helper: $(GUEST_SCALE_HELPER_OBJ) + $(CC) -o $@ $^ $(LDFLAGS) -lhostguestmsg -ljson-c + +# Add the host clean as a dependency to the SDK stuff +clean: host_clean +host_clean: + rm -rf sdk diff --git a/guest-agent/guest-scale-agent-2.0/Makefile.sdk b/guest-agent/guest-scale-agent-2.0/Makefile.sdk new file mode 100644 index 00000000..369787f9 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/Makefile.sdk @@ -0,0 +1,74 @@ +# +# BSD LICENSE +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +.PHONY: all clean + +EXECS= guest_scale_agent + +CFLAGS= -g -Wall + +ODIR=obj +BINDIR=bin + +GUEST_SCALE_AGENT_SRCS= guest_scale_agent.c parser.c +GUEST_SCALE_AGENT_OBJ := $(patsubst %,$(ODIR)/%,$(GUEST_SCALE_AGENT_SRCS:.c=.o)) + +BINEXECS=$(addprefix $(BINDIR)/, $(EXECS)) + +OBJS = $(GUEST_SCALE_AGENT_OBJ) + +_DEPS = *.h +DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) +DEPS = $(OBJS:.o=.d) +-include $(DEPS) + + +WRS_SERVER_GROUP_DIR ?= $(shell find ../wrs-server-group*[0-9] -maxdepth 0 -type d | sort | tail -n 1) +WRS_SERVER_GROUP_INC2 = $(WRS_SERVER_GROUP_DIR)/include +WRS_SERVER_GROUP_INC ?= $(shell if [ -d $(WRS_SERVER_GROUP_INC2) ]; then echo "$(WRS_SERVER_GROUP_INC2)"; else echo "/usr/include"; fi) +WRS_SERVER_GROUP_LIB2 = $(WRS_SERVER_GROUP_DIR)/lib +WRS_SERVER_GROUP_LIB3 = $(shell if [ -d /usr/lib64 ]; then echo "/usr/lib64"; else echo "/usr/lib"; fi) +WRS_SERVER_GROUP_LIB ?= $(shell if [ -d $(WRS_SERVER_GROUP_LIB2) ]; then echo "$(WRS_SERVER_GROUP_LIB2)"; else echo "$(WRS_SERVER_GROUP_LIB3)"; fi) + +CFLAGS += -I$(WRS_SERVER_GROUP_INC) +LDFLAGS += -L$(WRS_SERVER_GROUP_LIB) + +$(ODIR)/%.o: %.c + $(CC) -c $(CFLAGS) $(CFLAGS2) -MMD -o $@ $< + +all: $(BINEXECS) + +$(BINDIR)/guest_scale_agent: $(GUEST_SCALE_AGENT_OBJ) + $(CC) -o $@ $^ $(LDFLAGS) -lguesthostmsg -ljson-c + +clean: + rm -rf $(ODIR)/* *~ core $(BINDIR)/* diff --git a/guest-agent/guest-scale-agent-2.0/bin/.gitignore b/guest-agent/guest-scale-agent-2.0/bin/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/bin/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/guest-agent/guest-scale-agent-2.0/docs/README.txt b/guest-agent/guest-scale-agent-2.0/docs/README.txt new file mode 100644 index 00000000..4f55ebf1 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/docs/README.txt @@ -0,0 +1,243 @@ +BSD LICENSE + +Copyright(c) 2013-2016, Wind River Systems, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Wind River Systems nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------- + +DESCRIPTION +=========== +Guest Server Scaling is a service to allow a guest to scale the capacity of a +single guest server up and down on demand. + +Current supported scaling operation is CPU scaling. + +The resources can be scaled up/down from the nova CLI or GUI. Scaling can also +be set up via heat to be automatically triggered based on Ceilometer statistics. +(This will not be covered in this document, see the full documentation and the +heat SDK for how to configure heat templates for scaling a single guest server.) + +This package contains an agent and a number of scripts to be included in the +guest image. These will handle the guest side of the coordinated efforts +involved in scaling up/down guest resources. + + +DEPENDENCIES +============ + NOTE that this wrs-guest-scale SDK module has both a compile-time and run-time + dependency on the wrs-server-group SDK module. + + This wrs-guest-scale SDK module requires that the wrs-server-group SDK tarball + has been previously extracted and built, and that the resulting libraries + and headers have been placed in a location that can be found by the normal build + tools, or the WRS_SERVER_GROUP_DIR environment variable has been set. + + The output of BOTH the wrs-guest-scale SDK module and the wrs-server-group SDK + module are required to be installed in a guest image for guest resource scaling. + + +REQUIREMENTS +============ + Compilation: + Linux OS, x86_64 architecture + gcc compiler + development libraries and headers for glibc + development libraries and headers for libguesthostmsg + (built by the wrs-server-group SDK package) + development libraries and headers for json-c + + VM Runtime: + Linux OS, x86_64 architecture; CONFIG_HOTPLUG_CPU=y|m + runtime libraries for glibc + runtime libraries for libguesthostmsg + "guest_agent" binary daemon + (provided by the wrs-server-group SDK package) + runtime libraries for json-c + + The code has been tested with glibc 2.15, gcc 4.6 and json-c 0.12.99 but it + should run on other versions without difficulty. + + +DELIVERABLE +=========== +The Guest Server Scaling service is delivered as source with the required +Makefiles in a compressed tarball called "wrs-guest-scale-#.#.#.tgz", such that +it can be compiled for the applicable guest linux distribution. + + +COMPILE +======= +Pre-requisite: + Ensure that the wrs-server-group SDK tarball has been previously extracted and + built, and that the resulting libraries and headers have been placed in a + location that can be found by the normal build tools, or the WRS_SERVER_GROUP_DIR + environment variable has been set. + +Extract the tarball contents: + + tar xvf wrs-guest-scale-#.#.#.tgz + +To compile: + + # Note: assumes wrs-server-group-#.#.#.tgz has already been extracted and compiled. + + cd wrs-guest-scale-#.#.# + + # If wrs-guest-scale-#.#.#.tgz and wrs-server-group-#.#.#.tgz where extracted in a common directory + make + + # Otherwise supply the path to where wrs-server-group can be found. e.g. + make WRS_SERVER_GROUP_DIR=/usr/src/wrs-server-group-#.#.# + +This will produce: + +1) An executable "bin/guest_scale_agent". This handles the basic vCPU scaling +in the guest, and calls out to a helper script if present to support +application-specific customization. It should be configured to respawn +(via /etc/inittab or some other process monitor) if it dies for any reason. +This executable must be installed into the guest (e.g. in "/usr/sbin") and configured +to run at startup as early as possible. +NOTE + The "guest_agent" executable from the wrs-server-group SDK package MUST ALSO + be installed into the guest (e.g. in "/usr/bin"), configured to run at startup + as early as possible and configured to respawn via /etc/inittab or some other + process monitor (in case it dies for any reason). + +2) A script "script/app_scale_helper". This is an optional script that is +intended to allow for app-specific customization. If present, it must be +installed in "/usr/sbin". If present, it will be called by "guest_scale_agent" +when scaling in either direction. + +3) A script "script/offline_cpus". This must be run later in the init sequence, +after guest_scale_agent has started up but before the application has started +any CPU-affined applications. A helper script "script/init_offline_cpus" has +been provided, and should be installed to "/etc/init.d/offline_cpus. The +"offline_cpus" script will offline vCPUs in the guest to match the status on +the hypervisor. This covers the case where we are booting up with some CPUs +offlined by the hypervisor. + +4) For systemd users, the files "scripts/guest-scale-agent.service" and +"scripts/offline-cpus.service" should be copied to /lib/systemd/system/. + + +Note: +The inclusion of the files into the build system and the guest image and the +configuration of the guest startup scripts is left up to the user to allow for +different build systems and init subsystems in the guest. + + +INSTALL +======= +Installing in a running VM: + + As the root user + 1) Copy "bin/guest_scale_agent" to /usr/sbin in the VM. + + 2) Copy "scripts/app_scale_helper" and "scripts/offline_cpus" to /usr/sbin in the VM. + + 3) Copy "scripts/init_offline_cpus" to "/etc/init.d/offline_cpus". (Note the name change.) + + 4) Copy "scripts/guest-scale-agent.service" and "scripts/offline-cpus.service" to + /lib/systemd/system/. + + 5) Run "systemctl enable guest-scale-agent.service", "systemctl enable offline-cpus.service", + "systemctl start guest-scale-agent.service", "systemctl start offline-cpus.service" + +The VM should now be ready to scale up and down. + + +USAGE +===== +The service is designed to be simple to use. A basic description is given +below, but more details are provided in the source and scripts. + +1) Create a new flavor (or edit an existing flavor) such that the number of +vCPUs in the flavor matches the desired maximum number of vCPUs. To specify the +minimum number of vCPUs, create an "extra spec" metadata entry for the flavor +with a key of "wrs:min_vcpus" and a value that is an integer number between one +and the max number of vCPUs. This can be done from the CLI or the GUI. (In the +GUI select the "Admin" tab, go to the "Flavor" navigation link, click on a +flavor name, select the "Extra Specs" tab, click on "Create", select +"Minimum Number of CPUs" from the pulldown, and enter the desired value.) + +2) Build BOTH the wrs-server-group SDK package and this wrs-guest-scale package, +and install the output of BOTH packages in an image. Lastly, ensure that the +CONFIG_HOTPLUG_CPU kernel config option is set in the image kernel. + +3) Boot the image. It will come up with the full set of vCPUs. + +4) To reduce the number of online vCPUs in the guest server, run +"nova scale cpu down" from the controller (or anywhere else you can run +nova commands). This will pass a message up into the guest, where it will be +handled by "guest_scale_agent". That in turn will call out to +"/usr/sbin/app_scale_helper" (if it exists) which is expected to pick a vCPU to +offline. This script can be modified/replaced as needed for application- +specific purposes. By default, it will select the highest-numbered online vCPU. +If the script isn't present or errors out, then "guest_scale_agent" will itself +select the highest-numbered online vCPU as the one to be offlined. It will then +tell the guest kernel to offline the selected vCPU, and will pass the selected +vCPU back down to the hypervisor, which will adjust vCPU affinity so that the +underlying physical CPU can be freed up for use by other VMs. At this point +displaying the information for the guest server will show it using less than the +maximum number of cpus. + +5) To increase the number of online vCPUs, run "nova scale cpu up". +Assuming the resources are available the hypervisor will allocate a physical CPU +and will associate it with the guest server. "guest_scale_agent" will set the +lowest-numbered offline vCPU to "online", and will pass the vCPU number to +"/usr/sbin/app_scale_helper" (if it exists) for the application to do any +special handling that may be required. + + +The behaviour of a scaled-down server during various nova operations is as +follows: + +live migration: server remains scaled-down +pause/unpause: server remains scaled-down +stop/start: server remains scaled-down +evacuation: server remains scaled-down +rebuild: server remains scaled-down +automatic restart on crash: server remains scaled-down +cold migration: server reverts to max vcpus +resize: server reverts to max vcpus for the new flavor + +If a snapshot is taken of a scaled-down server, a new server booting the +snapshot will start with the number of vCPUs specified by the flavor. + +CAVEATS +======= +It is possible for the scale-up operation to fail if the compute node has +already allocated all of its resources to other guests. If this happens, +the system will not do any automatic migration to try to free up resources. +Manual action will be required to free up resources. + +Any CPUs that are handling userspace DPDK/AVP packet processing should not be +offlined. It may appear to work, but may lead to packet loss. This can be +enforced by setting the wrs:min_vcpus value appropriately high. + +If hyperthreading is used, the flavor must set hw:cpu_thread_policy to +isolate and set cpu_policy to dedicated. diff --git a/guest-agent/guest-scale-agent-2.0/docs/TiS-Guest-Resource-Scaling.doc b/guest-agent/guest-scale-agent-2.0/docs/TiS-Guest-Resource-Scaling.doc new file mode 100644 index 0000000000000000000000000000000000000000..5e0ad4da7637743d0b008c6c7de7dacc80282364 GIT binary patch literal 337920 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%0D@+&@=i=R8j9)idPD-mI+Fj3H+^ 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

uqA;fBrd6AO=&j2#h*buR+mR`Z**5Lkk zl|M<99PEg8QRsANh|Q|2;~#PqWrHt*1tZbu-Zy~FT7Z7X)e}H&srfd{9Kr2gL5h6m zUyNQh?^(&beWSa4u3B_v=-l5q_ZG@{p)F!X`u}DQl)cE|$ss-jO-42c?q`ra!P{$GQ96%=ZR7xF?S-puysBT2AWQGJC>0@Xaw_c|nZOLiamH z@KW_223eXTEfWVRP4#sexD32*y$xkYW6=92Ls$3lqI+yQ%=+bGuF+rDR6OBO7{=UHnGF);r|T%>n%jfI2e6Pq1kVS55|}bH0{g1 z2-1c5x{*o&=m1GGmI6lWWu_r$K+u3V!D5b z*a1M*?w>(`=ZKN$lev@N>BQLDr6bXlEAyM6XwUTULtCL}b2FC4@{6n4df=?{A%K#Q zF=3s_V7xuQzbcp&fqVnDT7Z@nk3zA|8aB9n$$!Rh1Mxh@j^>|aEzQ?sWKXvrlB}Sy zIfAVsu9^4E9sdcBJ$$9|O{XSWxF1`uP!1|uvA*PH!Utmm-LjN~@fv~2x_p~;(0PqS ziAjy7e(d-_3B>XtzT!238Vg^xPiRf%MxL*j<99D7R5qxJN0t6#_1(1`Wye22Dm_; z!%P=lTSHPiBDF!!!`|g6KI<&7tNY0Jj|}WmVt+ZuLgz|DJk4v-_l( zjWg^CdkhWcIuwJ$-TfWo9ruG22n3zWkge2T*I=DKp+># zn@1I5CJ$;ku%&S!I!ganE|VE!r@h_VvB@}whflQ|e@%koP$g%Gi5lXZ3x5A$v)>`{ zAq^j4wi{!%YL-Ea^vPJ=zZWUlfipeYxC6(t)tCN9P!3MUoD;`%tf>E2I49kfV-R1^;5$2 z{E$v*loe5SL z=o!T|d7Z49f$9DVat$RHp?B~D+|g1JLk~@{!L7xa^Ky5~PO*$ofT4wcWhZenBs|a@ z=+ag(3CRqd5)G}i?fAf1`WOv9l!iQzdTFC6l17mq%(~eCkI0Yk^NOwCzT4VGkT__G z=o!Syd=?CScxsW~>j)1uG4AYm10;6B!aR4jMHJA`VjiPpMU2FBdseCPU9rJ4L9v%s z!|wBdkseQ}A&pcTNoxqR2*k5Cno40q7+`Ohc51<+XJll{?R)NQ0co%K>)%Mj(&IQz ze4vQC5PyVrdj@a}3$#hOH5OYh1IzSiAK75XBQp1cTOgd)^15vk>eo{5E!p?bsY~QC z8!(F0@e1@mnWdeiJuW64a$l9C)hrj{%tbaCvo#0S0Gt+w?aHuhSZD;(I zonO6qC$TA4d^pBxid*#;pSGS5=3TYyo%kx4)~PsCIDy{7Gf4;rH@D>f?2*T3@6k6_ z+<4r4e}ne(N1&ric9;Iq(Iu#vZf9xh>WTV3Ek-v{x?2ShtzB?{&0EIrqHUdn=@z2E zqZ!t_;(Og9*^oLHTeOna6||ZJrq{l|&|R-F4vMTLco7-O{zgd+HfZ~npE7Uea4y#@ zWtHP69QH$-oE~)#=C(*^Qq>-a%oaBtnEy^?25FL)w|*A`JA;<-5}tUR zd*H;GUd@dJ$G-5r^lIj9I4!@{UM4s6INxM`HuixTLE`4QSjc*b@Sp)|W2*Vrg?=$N zFPw>Y6j3)1sUIAM0cdD$FV38nXdTYA55r}JT{rs6>6B|7GKY4d=w4;;XT|M_T5A$Q0wE81>0bI-!IzJ zAoqAxk?J=WBT1Oq8Jtm*xJl#Qv~!1$k8Q7pMB8Cgq96KFJQO3#I$LIHZ}DApHu*2G z0Ruhp6Tq-KZ$_zB8kSkP9JvdHbkLKZ<+%JJ%){dGN#!~J1~oAuGWs(1BY8oDKQ#ra>rkZFD9`Uf+U;Fa3Ez2_nlm09Kud^z@? zcG%eAcfmo+O|)~}PvMPu)A3|7gM935X0QqnBu5v-VdSry=@xFfMUi!T_v^1HgnV6A zk)(|8o=v!!(MNHjRxybZ@2=%CsF)R<<2TUmU?Q1I6VkUwt3wge!hRJL1=|%8#eEz> z{fbj7-+$lSL>YWo?hIa4fc4i;+zgnfq2w);qVOtbNR!hi`M9Tb0xsQ>&P|DrGq%Ag z&<|yI9KdTmHi@S7{`C444x(3F0xJa~y}fdhE(AfF6FQ(hA31o8T^lQ&b>#sx+Il1cE7ZQ|qpp4Z4ly{C6LT(pJtI zIhnGyWEHONme-53dIFO{Z#k~YIm%Slzg#$6K_b4Z3lCHzbHd5vr`v4;jlxyDm7`(* z)g&b4iqz6ueL|Ch6&$RIKN7ya@W)r_#@LP9`?!Iu+*2cKh#>cWvaMqo2uu8HICVb$$-Jdy&7xEtNaS&NujKb%>3M0sK> zT7oUH7Y2#F>yH{MXiHXaV6NJsIMICE?QQ;5xwBxDDVDmODHmc3T&uL#);+fOUUxAi z5SD#r(7jJsvR!p%=0J%vriK+?hFRGCTO&c?k)+wNhMWx__>ozLYVWl{1;~y{>sCsZ zkV6Td)mGkcB4*sT(>w$48u?ecAHgkKvuWlpY1HN{*>?69hKTN8mu6jc=}7^rO`6S+ zc)$iY$l!LbJ^y7@kriA2;jBgGN}J?;7&DmY5ezurbcs8JtymreR_)n!XT~9olmF$w z|2wm^5G`?eq2383puEk>+v<~HW8uG@=4)_4$ND2P4LN(jUFIhF{RTQEtq9L|nb|b{ zAVc^1KJH7N^`hei45Q`H6Mh5gUbH0?wQ^3=pYjcFeqYlZq?TYKAArAc6j|6afQ2@2 zr9N!~z-qsZ2^51WNml~6ez8xd#)IrsTGW;ym}q)=n*%Zc+Ke*4T(iCXE{qk??&r^@ ziQNibomJ1&VV^s_{MZP8{e6BEU5%T%XgKf557R7BK@&Ch#kAUrVF4j#FS!vB{p1#Q zL4Nk9GVG=1e^n5pp)CCxZP;qn;YEUIyJBi`A_lr;ps51^;lU57Ajb+SEU?7)rB$uP zKmleJ*yg-&tt)y@w0`TgcFHvOlTV|Ux ze+gov=I_=w4Q{=-e8|6yl{l&JOKgArEC1YC$9}kLZ-kVu<4D()cPd>&iPt8?qC`}i zfoueLz{xk!6d8-N(qcwjll8r?nl>eg8Iqb1fcp3WqtS|7?FHx$_w)yq(bqv@%FW9g zG3T<;vu)JWY>~g^hXjeM6!tMqAv0o*TC@K$Ms3iX)kmrGrD6ciErbcW1YK0T+tnCX z!<(k6kRw@IV!M^bR-GLj@o~Dh0YLVmF6%zaR~d&MfhR1dw<#`b(%rf5$cnHu{*(g& z_YG`8xqV`hJ~F`!Ek~zvPn9(p;>16HOX^&A`R;JptGLsYKkK&zs4*YoF~tmHk+GV{ zNw5vO_cK&+fEWsd1Tl|3?hg81tJ#-~;TiM&yI7^e{)x}s$$$%@v+emw!=G0kOwnXt zTrlsX`nq@N+Vm-cy%RzZggs2h1G*wRaQv1MJl*CsFCR9gtiZHt+~OHM1`75Lx2Mm8 zIH)g8%Q0Ez<2}x!~#<~=tzOHj6(#0fVNK#+r@~iAJnMzLCyS9B?fC}gHG@O0 zR>Q69^Cq~%6;i4^MQFWw&h~V2W};0S*wSyxK@G(wsfIfRY#ZN1$oaJ*l8`^p=X+xw zbav_X02cc$p)=EX5wWe9XCO1q$RnBhoy<~}p7D5q?8Ks%diSqAln>Kgq29Ytv-6kc z70{K0jil-=awKofn+G)v({EUaE}He(O~lP(W+(e2n0VVj`qLwlm!;fqs2#@bbv|;P zxFv!G*0)PTW}be5pu7a)=+7PXpPCL@J+@j1OV)y@=(>`vju4Ap$2K-}M0YSYdAX>y zZgv#NKIO!AYW32QW8^~&n&*BP4~q*w{vm^Q_Oz$Apq1%M9)ycy@&$%xlJ<g`G6NBa(t1S?Yu)e#ey~*s!Ul8MQ@GCrrFGbjN2Z8OKOkmc{L&!(6 zpU;D3!qYL*TNR+mQ_;%7RB-tg6geLf?>=}{JwAmZwt5*tYz68ilL$RkvCb5Da}yEU zuruuk+(eY7=`@KJsa5EIT3KcCfmW1ahZ`Gg_-BtGRt|2NXION>B8N;AR6{1wBI9@t zsdFy1X{VWh_!=YH!ppBX`*bmGr<;!#h&>UOTwe(e!3{jA-B0rvwJ!4eD9 zm?jgIyE!2O;&lu-|MGZ-|MzECEHioDa3kiJB_tLxni*qA3m{{UKuUQ~EB-GK_mh72 z&*GgC^4&o_^60v7Q8eX44Bm5JzLdavU&oBGjMZV85XQFB70fZ?kb>B zL;W8b^!S%V8k@G1pP+<;>DEiK^q>^}rr*J8Yx=Een>ptQcBCCxcB|A6G>GpL;Gov8 z@aI?J+gTXqgDr=84a3yVUG)?Hko)=!GT@wZgiddu(yR)rDAMUq1S3suuS0`EsGB8#|7g!G-jnm6AQ;2~R;TFhY zviD4EUS&IUpwT*(#Of7!JgslYy&vdU)Do}A4ZB+iDag1Zt|7*gPrSu~20VeveCj{E zMM9>X(`=-cnpR1!|KP_V8q3L&_e`cH_C?IY*q=ozqfPAiJX(dnB0?mn7c%yh02@jq zHsVf#Q)evjooywLW)C93LB0lLUAjyUz7b*3Ki5KFW3R3uE%oo_oMQ1hF)aBPv7lH` zYrcTc{dB#=_p_%D9@qGrE@ZV&huf@zia%hQI!EM9S_ENz$ht?6AYwT`W=jSTUJt~m z83xJ@q@0hm*=yTcw3s-pG6WC6Ooqm(oEkQN4fZ9v?ZgH@ULNJJV}BRC1z+udlhmpB znG#yBpo{R$MVF{PWauzgpznf8WOTLKe+^EYt8|&ztwG;evVB=ReyQ7>T(j~VX>U(D z-9BuKc-XZX_%YY?xDrXc-n+fZS18=Q!kHOj$f`@B*k_SGb+ILgLqCWhyeWY_p#9D#3la2B)}irZ!C=gvT@LX zSvQRx+|)`vV;1v}5-ouU?c->Y^k!_j8$+4X!p5PAHTAna#-GX%J@z=yyCE>uixSA6 z3uEc|Ir;Vb*#iptpNyAd_b6h!@*p=0N|?I1khG6di^pMoyC;+?-72|=^?0@qv7~vc zFdhbl00%Ib1P;^%p}^`^08ZTe_OfIlZn1#q}Ow%GSY(#bGQB?yLuu3;yl$1U)?PiKSOQV3-m)9m}*J*pDuI&&XGJnN6K`B0$ zzu!+z>PZEh-z7#F=+pC7;C{zHoxdjKW&A=2jE^dIaqWYR*-j${nr!P_+oHjA20B4s z;=d=G6}-~D?yn>A;R};(+si^8uu9*{JQFW2;&mLD!eb`)%Viu!*sbfuQ3y*f=cf3S zI+bl$mjEabGhTb2QM0mbj!-}E<_Kxt+1(p#jMeM;S)ie=|b#@#5Xnp+@Rw zFU4AA=GiCix3)##tc#njrFqy*Y_kzu=;9~qri0OzwwEeJsn5*uLuc2w!H$Z4tV|Ww zvE|ZcR2@EsX|_qP+?sBChD|WD<(B7bbJ`1x1)~sCzT;I6{^8lo*Io=N(5BO1eS9gN z55&|JF@JC|zJR3?aCh<;V{>{fzs<#J7ri{OjZN$LgxA*p>&+%_T4$#3i(tU%+5Sojj*(S(x)(7SDG;< z!6m9u!VoN$$DCFRv%C`N0r~K4lybO=A}u-CfQTdNDh?;Fm7Z4zyu_iV9FOgAe{EmR z{R|tSBq3n-iR-WCW%v7XFr-s_Yf{noGuy-~tHGCv&wf442ZzMwm__wd&Cey@`hGYw z-EyK^ABAJm3{)v(ll-93k#A+?sezDjm%aISj>(tTw0=Y6$2$|;ZHkmw`TsJyeeD_R z@z+BWoDW7~Dnlp~!?L)f8&bk_uKdMyzj(8-K2AJuGfs7hor-DeGZOKLQ0HH3P+^4s zat8(XSv@!?mh7;%!@1aDT5xU#hxK)Dnge_cWmdmHu)(v=YjtB#29ED8LWgFD2JQzx z*~fiQu`5zo;T+k64a4AfXz!fy{Et&D5NJ>{xY$Ydo*x0xx}mzA+F00%RW|Hy4ct?1 zD@f40&TT0sC7x@sF^ZBk(hDqkZ+NCG#E9n|;iIU-W|WCH{6w|EL$p&)&UBFZ<~`g! zdv>^F!51^0W|T|3K^8o=glB#-cB^^I7-PM|^C7-9g20W~3Iu1{EuvRuf~L=Q5ZXg~ z90?|aMzKXYD8BVxUzWe4w%E)VeU?sr40E&mXfQ?pU~Mrn^*c*LVL7e_*^T;n0(O(mtLrj4p0s* zc3E7X(&mKLh?*lC*{h_eI}~lJ0)lg75sY_oV+jJhNfyFRVNp>|c(1lkb!Q~XncA7% zagSB@#=* zD+?P}s$I7JH+=kDoVG*__=^QS?NsXQu-ELi?> z#cOr1m@f)yUUVs%IOuy63`ZYecBrX-?(H<~?G23o9JYQGg8P~DWyMABZN&^sE7X6e8FTLu+D-=42PA;qbq4zFAU8JaiR@4)7B7b1H+ z0)mZ?Wl*=pQ6{zqAt&p{YMkv82?^YgEy7tBc0OF5-NNO>)rT%`O## z54;H&vZuG#)x4?RZ_m)fb9U#lkLbwjVMn8Qx=gxK6G6S48WnY`l?uDhg-`28MBPvr8c(L_)GK3t%hZg~?qf z@5U$xyj%YrN)(5D2^{O9KM=ty>A2)H*(s@EZ_>tZIE!_g^K{F_YjO{Eq>nH)t;)0# zO;dUpBWXXuj&D+$#&A#2QN=UWE02|~cPMVau>|%Q_4T>(e8bt5F32mRpEYnDG3@oc zD6#MCdRn+&4N)el5e7&~xQ!v5OFcOxlh7cQTMz zckAB49Ex2m*GgxOx;w}3XLO{2I1>M5|ChM?Ia{ikApaY1)OE0fkAh&ctpX?5;U;NL z>~PmNoo1<-1qsaFT$9Iamft<3Ar3XQfgK+8u;0SR(01WQibBaW*5y~J=r~~#EBAay zR&~kTbxv|-$mwP~8l<2sfLv18@mS4_CGLsm+5$`37g4*jbkPJmhmPu&ilNU5TAL{= zo@;lw+2Qz>^MtC0p!3d!373F(3zBEE?N7xOj)$0Wftbzqdot!=flZGdKLu?xY>F!i z4i4o-pvJ-Li@j_9WMqppV5D~4t=_9>vlC#XusI7~!IHxMC=<3v{qpthnR50v{ai_y zZ0&ot+z2Vb&8xq@DA+2o11ZlNDgOrZnM6#^Ip4`aCtJ8d1H68tk=>(0mi?eoZTogJ zNLTK4tb~Re!77?@4}7{MM+#WZ*L>gau*#P^8tcBapj{~C`C$lSYo ztNkWotJkicvc=mcF?ftXo@3+F)$yY-4$T#j!zkS)d(NBa*Ai58x(~kc9Z2j=(Uh+Q z-g1(}gPB1T>BwFm^`lu9CxU^toUZ`0Sx^-|%Q6vDFB#NS@-W$Uq)glRsaQ<|%{hI6 z#uT?Sc$%1AN(5A>3!(=+Y?WND#}s~~&Vf$8yZk%C^$qUPogN_4%EI3gh3dh2+m$pH zG6q-7l?4aSZ`^F>{g*Hex?AmVXWDEk_N-8?9k-q+@RZZgAGQjf<>28C#BLkAU<=N( z!+V^|_B5kf^R-31@k7?|;HRIBe^x-JUEkE(4Enc>(|RL24g_rVWQQqUR&`MS_K7u6 zGd+G}MRXmm{vu8`yQIy_;_(~v^Kcu!|DcA89p7iFH{+dGVq-CF?|Al1H(h-x6&2Ru z9V`cGfZQ#~L46TN^D(|5hhvo#7X^B?U}}@go<2fBU(k;Yp#_Oku5^4309F1QeTp8z z!qJT6g4|&Aomx_7e+%89o7Yw5tzag^ab{2q88~0vmM&_{5o?)@vGtW8BioEdog&W# z7mq%_F*^~^GORbK;{U?n9-OC2fo4^2H}Ku8BCoR=^;tZvTOW1Wbvy_>4YmJU`9I?B*Hy zT(kWglnzVT7m3ZtWKvl{AF4)D}*yehP6s!pl0C&qID(@w3dE@66!doiH_i0 z2Cq1`i~h2AP}U8-kHvB7#u8;zL)pmPC(I7R;~TDGg-|nQr*|!ID^!7$tPSD&Qozr{ zV;>(GzCs2UBx0g0(%}30IAQ;nHRIpEpo>+xCZC-}`}{WIZWCDV-mL&JWRxq~Z7!)h zNwVO&$z~N?R(weSg{K2rUx66!nO^+IpmNlWKrb zGzaJ32v#^5g(OV9lwbI{4Cpgf8+qo?E{n7&({CSr-(Z}CS z#iBmS!3?FYVBeo+ctX+^`0LZ_2+x5WRd0i;c$o+&M4ad;vaTQ5DERZ0?hH?A z9oS%>0#APCy6U!(nHn^%^*Iz0NNgCF^JhbC7%1fE@AF~WKIqBDW;RdX+~qIzTCi9{ zfRKw?Hh=W_EE$Nnm0<5f;_T^7A-(cwNsduUz`T_L4arl1{<)wM3s;{Io5+5?b_c3} z*9@-XYjW5fe|F;D6JO2Eio@NYHJ_53;o78`8hnwZy#3ZQi(RZ_;tb0Po4ly)1@k?X zg~O-Mp6d)V?Gd;`EswPF4{;k3ab<0~)Eo$o6)Adn>io@wpjg>9i+16@BUcTYD!>-r z{>_80yc}`BY+-_vwlNDHpBwH82paRT*z4RI zSk<6Y+qV33IC|Z!mNQ7yiGbX#b=cCFK8f1H8<63ZL`;(wAKm&*H^J2>KE7KnN_`Yt z_a84b(2i@E9-wZRbeo6&!BHqT!VrZs1&fj9^-b*!UvPL zk5Il-KChy+$Dl1YPr$W^M+C{pqHG55ozjL?N2Oo5jY+5@eqi@R-_55>M|{TfBU>UxTIr$ zLw{JK+Z>z1ICIa3v*B09qq%zD=iX^8+-lwCV}A&Oa1+7l-SUG5!@R_}N&2|(hC1ov z(ups|leMgZ9LzyN4I>zRP|Nl9AL_sW>8)4knx%&j#V!~tbDB8JC@{=rC7SC?lPs=c zms~{GTpuqWqKR`8-@ok&kqm{{@f!QBR+Wde2#*HNOi8h@zJ3=@VD7j93DFalf~Zzx*3 zIyAc2nCa3juClJ0Q0Y~|>v^oX5M6w7JbwKGqco*q zc6{L<)@6FXyWFQ0j(YaEYQ&MF$Yy+byR@xP3l@L7U@Zq6cW%z9_x8ea)iXxA27FKd zrXi&EnjOz|6sG|B5Uta8t~aJ`fAjUz{tqlX7Hx$IOn`$+Zan zF#P-h;i5?N4Mc_DlK@_M{=FM{0Qby;DU3gF_!Jb?hoIaSL%(SVcW0?>YyW|v#yBWs zi_k>~Nsmr95D)4uZzw_N-{&Z^vrz6XmnG!64?K3`;r_5ilWra~yJ_krh6|Du+-6X% z0K@QiSvbg+8DJj2-W5hj@bKKD=J&QheN) zb1sU$A-|nQN0NMNk$UYmUTny`v-5nhO~s!uG*{goN}=WT7G(l)eUyntbZ67f(mNYN z?N!&3(Rq4>-0x<#d1u|JCRT*AyK2@AKcZ)vnB5KQ;O~NryUVFIS6nvTs9^pv+@o7k zC-Gjh6`Hwko>5^FFmntoKTF2!GkknF^NA&6FsEMmVnEwLp;GOMJv2Lxw-oK|FYoHD{T1>bI33IJf# zsM*-`DfFAK##P%?SpA_parOXviU5##7&C!Jv6tBxP7U)MEMvvl;lYP0C7)0Yxkmf? zt4*g%0)maIkz3=};Vy+XKAD+kH%p_-o2+fWob|g+zvM*h|&l1Dq=?L@b9m5-3_Z3ZXjwW zkwFA<$aSSD{OC(>k+fRZwj{xW4t0a>m85xYY^{3QMmQ>i=Wjz!$PM7YBGv6B@x_dT zoCA+6oV(4p{vhu_Bp<1s0YzE#ms=Tk>%yFB>j_PYWj`VhzQjLi!;|B8#os{;y35@K zx6v(D05x=iC?m++wLH&|8KZ=ufj%Z^O)yEcQZg9Rj^RNIBu2*l z4&bmB4EMWHuC*dGO+j+v|&-tXo5@cyyP#5{2o8yd$-(B5TE3E3>7YZZlMm#qS5o$WXU|)?d<7x_h zQNc@cw@-GPfr&1@CJZb9uis$6We$MZ*7M&6sgWLBj=~%3Aw`|8t|VYYTx==C8s7pB z+rihkF=fCrfpQV@R(w|24tHJ+Z<*aAfT_3&|#lh%< zjs0KfTTGK0NI33>vBV78lWkO$7}03_%9j*^cilo%9OTxf&oI{86g+Hu`CmZqZixkb z1?y~jO+xLiIJkeTz*a?6eoLP4=vx&Yz%E?-zo9J(O6V-pOmDOtA+*^^YJyPm^%>$Y z^Txjxq;blzi=Ds+g6t{y5m!GNCa{?u6!RgnmS<(>~yW0{@bAQ#K7 zoR;QieR->^VassyViE={Uvgq%)6XUi&dIXl86zYc^kAz2Vog714RhWw-(@PB3SujE z*{!xmFf&KFHsc>Yne#b1LJ-%x}RgLX?vGKA!BCU8jGnfv_5IC~oXGIGB@& z%p{5YS|YV0;lm!YyoCu~I=SNJ;oQi4LSSvx)B{I*y}ni2HV0G7z%M(tp%(z`a^sA1 zYbEq*G$r>P8(x&(PQ(nDdV@&taFH*^q!0J~jnsaLeSdj!P9$?PZSo39A#B5cl~v3f zC_h2D1T@`D-ETd+UBO`7av&sUZB;H@6J?fb71S}r4V($FRzLz&ucl&mw)-)inQi(g z=1~svV3RpF27f5odb+r0+bg!2t_-ZnJIpm_g#tod?sHq7W->&?+{oBQ3J|2eT=2Mk%j~EcEsB)|N%^@#3d7li%n%n`Ar!B`jo>M?E$+hk4Mt zWuAZ;tG!fTMZd~8QeA>YYn%q4A+O8Vj!tj zFL4^xVuc@G@%-^%L#~CV8N#g&8ejO5KB?zvcW_LeCk;eGizatGKl}}nT;NwMAKhQG z*e4|-ywJCbMt#HT+7rpgJtnU051xgUPOk6om|dVEw&jTKA$32U8{L@lceL&Xh2TG}6pi{?g@3XP5nRvJ!BQ5d7LSy9LNacTN`65LsaPsXVzu+wa(BJLohU%1r8HPkyz~ z+;6aYV?gcam+zJH1KSQaNhEi363OPXe)=vxR5Sp&qbKOOg3wd4q;GEOP1>i_RUh^J z`7@jOsN|^V0^`t=QUv6B)7;Rh4}Y_g8hX4*jh?xeewRLfc)xHg1vMpUMik^}y0S$V z-}$HWR*TX~tTtm3zwCCdogsel^!&PgNIwq`OPimz6>W)`8>hq6!x-byEee0z?m4{JQb)1 zHt}VlT(fpyDSZSxq7JBq#jUH3ou)Ip>h){ZkdBqqpEU>X_^O|K^3l{Rc#_SS^3Bg#Z3E?nyAABiY0)a+mB=0=VK=jI~1 zW4=R1PV7R>?p!WOdJWWICTB*xVBJB_lvSCinqJUvUY<=&fBNxfcGr^yngebSllAn3>vA55f=?R#%cF z106j_lgteMQ?`#581wuLrZ=3Q^k$4VXmJyTaQ;i5X$??cj=oq1WyTvXhZ zDIcV>iEqVQg;aw zEv2r>K!lyo#aL~L4IcveJ;;6NL4!_i&USLF)f^#e6$C7u<*p)<=dZ4va0thzF=xCK z27b^y`=aQ3VsP@b7*3obe}Jf>WF>&tcjZcs5A}GyF+N$nzT7c0iC8o!EUsAIP5rAr zI^f2Xg6EXitRCaTa0+qa;Ihtc4w%D@Asw4{K5XP>DWXFo@^O9H>7zo%o*WFmB$UQ{%S{~e0z+M8A5<(s+XOXMD`6T`o(3wJ!%?|q(ZspyJ+ zwy7~SbWe>pW?pHlXucav9(V4Hfr4;Ah#@(tA?f-npk(s5XOA@e@$V=edu563u9d7m z*Y{fM?a(I*V^ekE61`=S=eaVC@y5=cfY=j*3LbYB#FM9I#o!SFM}}#0O?%1Qsiv-r z2Svj_C=p}O*2TWRaygkI0lAqputU}qqfb0mFTJ&RcSd4mTy=B6PX;b;@wIp}PHlA> z(*72S$O6wNe6oP^$A8>R2xm~Shnq2)5aBA=~sq_{ZWulG$`MSMC> z!RNEa@4_dHRzYL3&M)`oobhJ0cSOe<9MH}!kUfyXCW>fB;m!rGhgYjl^?3LR1(p(o z2Zv;cGtkpvs^oc>b?(jHh2zz4u#F+p_mGm$ui5ndQfu2hJa)!(1xm+>2OI8WWGV_8 z^5wD*L&#j2){MX*>8tMuKSoYod@r2Z_HO-`F4JM8mWC4fS^Be}ExC%aybc-Ji5fDp zzu8U`gOZ0=^2@>y&TKVrB%5|UAFTMO^A1D9z*+tqAk4wjM zA%lk>pPZsjhl(T@C93zjQF#hoE$6h*Yf0I0tgQGRqV7_KwG)b zZcy)5d8ykLZa*NSq-8ItytsV1yttrb8E1j6x63GpuZYf|w$Sj^y+fj5oApL{nc$4v zC;Lmf9#mt0P&w7R(OLJuLK>E%)_)iB=@V%RW@sxwRylM-W$PO0RlM ztFGSagSMS#^Bx7TKrz#;cK*fJll!xn(!S>`cOM=4lXPaf4!ge4c&}9+PnvB$N3s7 z#Fj$dbgmFyi94D2#y+6FJOzj&vos8&>nn&(W63(4(%H1yn$S~=Ts3X9!)xYHQYs9e zN-|8Z*EK-5$4LH=XAVE2oF!!%^wX;yFUQw1x_+an;^wD;0Ye;X1F-nG4Eaj|vwy!I zqjIW~s`?T7;W&j!TXlV{Hm$G>CwiJF>BcrLP$yQS`xdPqJLL z?M6vTlez{sWd7dUsti&nwYZEn>==f)zLz*vh6wup-Q^Ck=OnScPNNxdzGf8~dL8*o zCd_2ChxA8ZPWJgFTS#GA7*Tj$%l_@m(g)RZ-d@K|n$wAKuyXvp$Ea5=)B)D$8-wc% z+t=v>FkjEPT|F@6*}L$&>mh^kCjZ{Y_LspE#hLIpQ}EH08Cg`8wrPKB(=qE8s>T8C1Qv88vh^P|!ANFoY~Zu{$0GyS4% zJ{Fr@^=Y8-r9jn@l(S|Q{j}+!dGCFZFI<3f@`@K9X~oOegmT>yM^#D_|F16hI-B4Q6fBI|H!hLEa&p76;|GGCRSdokG53AW$!UE5j>x{=llT&7sFAvC5g>CYQG4C|Y zRc*$6iTgY@n3W@9^1I8zq!>dNy0=e0sE3AX#;%SSmLt|#!-;O@3*6rKbt1qM`OHEA~3&`+zNT9>a` z0DM3+%@6#l%iYUUVied!tWu>Gf3RkNgvJuhUna;EBBJOn2e}#$Ppx` zzcLx^anyVIUWBywu3i8A4R-czZ#nbTI!Py5C|0xiM~w>)O)VL5)EOjv8Clz+8O$Kn z3@rk`9pw8!&(Tqnlbmg{`Rq8n)dF8ly~~5Ie*>;Q?<>i@ly`HCC`C%%UG)g3`8|fk zzi2GnQQsD;>u)t4TKotKzXs^v9`9zbl6QM7zDWxDKwM&C&ox{+JqbXvb5Sl1fI7AJ z2f2X9q=Fm8%;x04SeeNw+)VJ{x7SKcbW=fitYs?ia6R@`54p$`f5XOrSVZ$GWc6I{ z(ZHTC60V!H^}T9-A5|+Rd~5k{APJk@c%e@(m@c``cJ9(z{fLm-pM5yCk9j1;(4$te zF&n{b{`NNQ{{Dg#vxzy)5^{TN>K;bNGuzT0hV)4Nezr#V3i^)Y0`MjIXC`HGEwxBJlL6wu2@M(fxZn&W!jo* z!PX%^I=E!_ZF|#2I-Vh1*N)vTJW9_!Er&`S@7~VjKTdSaw%w#@=Oe?gX0AwKEzRJ} z1=eMCd@eJA>r=05WKZEs-|vx}oy*Out@!Ykx&|bAi|EpZq)G`*u z&9J$}80U=Fm^x)sC0n}>IOj1~&g~(J&3EBHXAZD4Cq-rgJs)VyIiO9y`;tsUI&+w> zzB=NXr76+nklS>mxo}nhKe@2PFnnggmC@8|YyZ4}&dD(0D;@rYJkT+1a3`Gjqg^06 zOV87+W6m>8g$zVSma9Fm+n%{1StGn@Z7hmCPlv*<7mC!y21|1tee)xiMVUepQl$H! z(Hoy0J^7624ta@&58G6K)b*`TZIW**pK8+ob8dLnkT|^*LUTm!TJTOgGeyC!c?-RT zQ3YMvjFkNs)@OU)LMdM*WdrF*(H&UK32XX)&a;pzi)|^-=%7b~H{=i2A5XjlC<|z> zYT=alA>bAegLG?y)S&1+#kj4NPpfSsx8-eNbuwN~SKZ3mhHh6gy)PUWLUk&Q!!{pw z6*@B&4V4#1)YU00Wc@$(-aH=a_5B}Los&w4in2zeWQj=DDN9I_vV?GijBI5$7@cg{ zw~##)vW78an@SPFSckDC`!HE&EMv^?eyR64ozMII?frdxAHT=r_j~*vKmVQ1YwqQ` zulu^L=kvPm`|fKi$tFKcvb;-CpL^w-?V`=R(1R{WW%TC{RVutWsb}Uk(|^TU_10i? z`}e?r`1O6nQWYM|%y03v8&1hh_cE9&U%A?7LXOjgO#>3x$;_kA@r@{Dld_K3_UXCQ zr+Q*n>8?t$hkQU~;Kp$}bLU@~g^VfKKC7(LP10mmefnuFq(yb`#G9m}+U4opcs5P& zVnn^GSKK0VKu>*m%MrD%3r;3SxDSgj-|C`f`x1Ds+IF(D)fWmZ33Q5_Vl3@iy`Z}C zea&mCT)W*GY#zK!xA;??$;6}eTbS@;Fu*gszVg+JLC${5d(UrOAU&3GSGmWaDW#>a zOiB0tW|SJs8}d<){K_Uj3Sq64eqT|LxlT_XB?7~Y;dJV(^`q3XZqB9ly~LFVb$uEf z$-CC8EI+(=j+lOBvL~hADdoj|fy&-JO2&?C1kL$uhtzvBEX`xC)cIp39WG(*F@-#n zNZL#*BP=7z>UG~OHzO%0z1&PUlfFV)=MqWAYh zrqgq^Xy$!N^U2wiFe`MucEm_D{wlZf;4Sxq4*QMvUuv#{Ut}c}lJ4rq%7~ua+B6b4 zach^@tGPHquQ2-(@mm#G^ozmg)Ul6fa$1OirqgKo?bg+s3U;H`nHzN<^iko3;z!FC z=T2;-wA`f@t-QTCaV({<4}%zPfe+6sEKg_EbCpW6Y=<4C!qV#R41U-5;V=0Gl?OpM zIQY!vSlPX%D1*Ym>W-}R6TkwWQXdT>m~^gctBs};OnPP_^4dP9U=yDA-eBsKQt8&- zKGV6#f}|b^=`Va3U018eJdk%ShDfp|9Kst7Mt@^g%aVGw9m%=a%PwzGEZz*RI;uWz7oxOeWLx2(0~qfERUhve}-`!Zzj;(6#|H z^PKycing3v>tBo{2NxTRpAt<)Q9MQ}mNO&;zPafXfo{?bH7yj3x~&_UYHp@yx1ATx z>!?bROsgOImwd(ucE#LKm@PpsVFdz(u3IU<%Q~_(eKwQ){OMuIsN7bc6k>dKx5H7q zan48P0*fQ2FkJ&N@nCE^ijgDhqonP?_T?b!rcN@PTJ`}QG^i0gc8G2NrmJx%duu0| zLd_;UNl5$}ysMeR{li*+RJ&2Dv%~k8z%|M+!>{{U*v`Tn+v)foJkjkX+YN(T+?uZ{nq`H(7Rf&070oclvmwnd*8Od&`>`slHmUtQH8c@QVeb zQg=$iYMZjKJ2F1f@KHs>DTj9hsUplJ~wfh|~O03ze zS*(4t{qK!)ta$>_JYC1)C8~u{fxOu!Dlz?Y$SP)1EP3Uc3h3blWh98ZQ}&c*k!nNC z6R&|E5)#|2s6tAoZyuml`{>$0Jy{wQ4!ApSPCfWkP4tg2B&pvE^J2xbhSqzO@D}r{ zwW2ArfhgZi2YK7y~ZIE*Ho%P_qnixeM_bNuTLT`#uU)r?_Q|yO{DfVmK}J@u1<)U- zNE9{m>n~Q0t(1KSX;_EVxrfxyp_;HXdzgo=6EsN`CTKU_O!8fvmEX%=yR^B;_+qX{ z6y-}bsxxCWw=rX$E;6Z%RP1*$3vkEJ8F$GECl+H^%~hvP|qEoioR3@;k_s;94{on4w9cyckD zkJUw#!aL>E+*!_dvWcWy_rj_J(c(fDU=e*vtTjJsJin@du*e7UPWX*F(1AqX7Uoem znagOg7Zeq0u~!*ZHfhC4=x&IV77^Fn3Veh~-Ij$8tKGNsawDAtp0)CfAA$8%(r7QJ zGCKdV2I`noxRRE-rW@*YM{|d35xO3bIPL-mMZCq%L2cUNd~_SbS0i+fH_rs_y^*WI zHR95ts3O2bidH;(b}TnjPJ|UFY(vVcEMaeiR_1*aZ&6-hP$gC_U#8@@JpMNemD2eI zpD#%9p?qDrq)YmA2Xig1bXjKmvh+>{XX*-UOMeJ%|D9xptM3{$)|rzw{U~vL$ugZX z5i#uex%G#_z_2APq`75@+){wxneJ3tmZ%Y-tz{<*Z)>Xzm)>GXb?;1RkO@`Nt;Dh+ zp9D$eHzmferW|2Z=YQkyO8Lm9YIj(l(3z51ubB1t=WCN$)!zl?+-KzzGr{lUTU&ith_yzMnxo1ptoC&TcNz9u?jlZiq(5!)bOV;nuP8RU1- zY?BV7&=b}xX=^_(vXPr!5Hk_?JOOq6JQHL5qM zPHV3Q2DUk!aSlJ(HEuO+s5@oBxnm`s!}2W62r|H+)?4fPLF=fzx{~5LWUnZ=4xD0u z6BD?;<%mB^#F_b+OBH3CetP#tVqW7m+2d;+E)QBZ<%ANo=ECY{o_SQi{=QYt(YU;`kb4>!L}eNMWcT@1SV@(b54aou``+nuVIB^0=X!lknVB%VxRtsx^n=qqsP+Hd2wAe|pvcF~cn z+nI6+2iOu=X9e?4H^V_YzdvaNf7{g9#cI7efMM!^u>RB;2)%pwuFP-} z54R6GfOKZSo6 zV~>h=~d3aQpG)qv939ij%XXchesqleuBjyJA4A^hWS#9A&TZOvA5d&E0sIAOEAnJ_%(DZN)6N5w3BN7&H5XuAczudfy{t%iDu_7AxLIQ5C{IGj z`cjl%?M2)l4>}ar0)C8_@C5{DFB30-397Sk47HQm>j8AV!tZ<&fXVHmr1Wt3@%z6?}oEE#!4se0KO=c$dT$=BM z(ct^N)uI~46!^u*B1xxhb1c+FbdTrpGBQ|pvNP!>O}=kh>l0f(q{bUSw(_YKLrrg_ z?x@Y9<KYR;t}WM@B>b<1cMH6?hc4h#^Ah$J$GR-wn(WxQh|`8NEq@ldIJ^a~6sD z>WV=^qJs$q8(Vv31P=E4n?5$Ei_p*Lv+Qb+kT!LDRoka1Y&oN~H$>jV5T;FeOIR{j z)woWOR+&@M+-s-k%B455kfMWJj`J@vvGIQUDvE4`NS`E%XJjdR_pN-+w!W`KR3REN zVzQ}s%RD(UhbQVITU4)|L>1sWs&jl4L&@a?P47iRFX#d(z)^1fm?VACn+>+nPdpFr z)ikw}6?qEg(?m5BBU`!EvV@)X9SFG)W|c_jRWRz5;uKTsx)v*PHecK{eJrtnX7>hZ z{xW8${V<}wUQ_YuO2DhWH}Eonmt>C-B|QOQD*Ha`C5dK&x2={^&dM>RxZkYxr;{=* zPmiS@)r6-RD(NaVIuqykpR(ZfzfEgSzb+P}3En(9t+1n9pJhsvV8oYo<1uQCDuAF$ z;Hq+LG6NLn`Wq)JoYOOfzEy?sK&SLCqW)G-1=6Ar2F5y9Y0;O|c1sjA6|=vK4KWKf zW^R)b&fTni*0ZVVOnFDon_6{;mnqrNsJRh6)1EBAarv>BHgM#=ZTf3QmXf<1-hH!%Co4?seHBP)&?c! zWWRf7FB}A5ByR8!n5Ynmv;<>~{aOW}@utU^> zgc#qkc+I6jv7~28Tetk?7l{Cx5V)Xy#_OfE>SVx&XA8r#f)z2L)|%xSd71$m)km5uHNtI?85)I0 zO^Y=uPZDh9nUx3EF12$mt9TygW>9S9?|nm8iT)g}|{ z%ym*kGEFCuebV=11lGDkAAiSHGh(*l4pims@61j!@Nj2Rpnw%GQ>e@=_Jm^$9UW>q zdeY5!3;UZfl`N$_=F~crrfC#&$h-K_!=GrzkE5L!eG^O&@HD6TvKXtl>m$={ZmUVb9yuD?*0r}7KNzf$Uy zHEQyjIzJnh#^2P`wOXHkAqHD)3A6LNEj4si&X;xH4nTb5m~H;vd##L)IanYd+BPer z>IJjE!gLuhmzCNYLmSr!nsWQag~P~iuTB0T*Z$ymsmMF)B!LK_kkT?`@7PZ!jsRL$ z^yy5lELzIzbf@$Q9mOkKUNu1}ZC6oLm1_tqg)`e1PQ_{@62;z~$<$9bByYK%jgtIw2!xlN|E z5r3v>6G>z%@i-f4D4{gHeOrf7v)PRCm47~i;07>&y$0aNFo zYALOiN}v)yYdIdPAFZIu8kt_skZ+8{fe_93`v@oAy2+C{>@?V`)_OO zKNGr;#GyDZ{vLMvx@IsBJPe!O(~85fD@t|U3dZ(5kWAq3ayRfP6DWwRqbYw>&CwA+ z0sY=8?cQA9;6KHk;WdO~iQ8Gv&>$P#D2GuK^XAQpeaf8Akv)T(5Z^rV1prk_|1`+5 zJ*t1c_AYMpLHC#1))L-3Zql(ewx|wfCEu-Q-_vc$VA(&t068hkI8awF>e%xIeUx@W zO|U@Snx(7MKU?yQ*|ypWN)4{Vk^XKCpC;v_0tmyfE6ojg*W%YFGz~QE!$@6ZpkTez zNhLZ-0v1AGh{L!u--pPCx2YBr=}c7KoymAZaWmG8+5D;>9^!v7Q2vAwv)Idy>7<;| ziwcT34r79>m=svuQ`VWCK0`8D)w5w7gJ}Mk32*iGE-m@^7`2IHUiYt1rXzNC2dW#_~`(SLPWJ|rq@u>1hZ@nC0pXK&FY3Erp*u<;iHQuiaqBb5>Jo=#F!Avx2`j(MF z+QYdoSQkfLu7{n$d)4pw;Et&~ZS{Y7rp+Awa7&t*@p{!aXi~jplVgGlvR|z^znLv> zqc(@un3!ZKrehT2lB@4TK8Z&AmU`Dq0f}kqoxl$rNCMGjOuZ<`dvp& zxo)*;o!4(mDZIob+kd>G;*T260c?jo-LjK2rS+?`$;RhH?|AC*#H2 zpEZ1Vw}a$^7d+@oyzRD-&-{aCx)uc#?8}T-xuRUx%RvUT(7Z<)EMgfz+$l~=5xI!- zYK#tpnrct^y6LYP%g&$ z#^^3yRjX4Px0 z@O_b4O*ZLk6}qZ$!#5cfj$V{^3+GMG>OzYOvN-*5i03y4GF1)IHpuT-*pUzV8;li4 z_#yXzwPo}6nPbTi*W zFD=-7#4W=|O+cg}yb9pydha(zUWINW0jU(Mto8NAxO?tyMZ0J8;;$1-;AdkW z5#AL$bh^KIe7?l+zFcY$TK%h@+bi}GqF;!dIA?aXs@!TIqVWEP@}SW1r1o*llN+w~ z()E=sSFheTU9FtLAxhx)TVR-%LKLHVZt5f(;93$?1-Fc^xZtr&bz{rDVmS( zaBs7Ha{)v4CkGerF;_PzA=|clJ*v+PHnjcRoYfG*RlA*Fu`qX1ye5(FGMGL;T0vne z%g}tC$GK1b{aW|Fh#KE1K^fO&!x8OFKGQBLqQBb2-CXYiSlF%?4G}ZoVg|1ej)CG6 z`{P4j)#lj?UCNs`hFd+}=FBZnGAud6*Vj39Y)VCJyq zRc=lUQ7wz4IhPcmqub2kpp}j-URF44oRC90E}P{;B2vhiR`HEbU#i+NBAtf75}r8hyUV9%a*Z+gOecFor?*3B zz5P9n*jd21E_Hx97Elh6g@(xcdy{wvPM_>o8S_^n>~PVwvCrc5T4DzYM_=*8#|5cJ z-)UhDAQ1C;3XRRAO8A-`lceqy_cdo#XG;bl9vSzTNTsD8aHvZV+!B;6M{MW7Gd8SE z^h!o~@dj#?Ger$?g4(^~GCGm>eJe(cI=AvG!%vXbsd^|}A^KxUTzi`4^s~IL3g`9O zTknSv3>DEzr#ywYc_pGK#_Q%LdAXi?jpyf(ef75nWA%g4D&0cdE4Ce8kHoSv&TCn* z&qfqwT;uhc&FE$Tp7QzK9&c~bhR4ASd6qhQZ>jLvK+YOU>w+BCh8x2SY|KN-k11zn z){e>~&&gb4volp)*2vQS%pWFzFXYix)e{qn!Cu%xuj5*?sITOtF1Se59o)VcB1ti9 zU0XpL9WZc9-|&saY1N9D4&cha*${8RXi^l51Q(v?L=7v<=9Zx4Rk6$C7IT*k5i|O( zd!VFm?^25$OlE7j>QmJq;aqUPSWwU{&Otvr_bs^YAczGuK{}S4v3VsfgPs(okO?@2 z*IYB@PmpEvu#6Xla^rnt$1)BIfeig?pPAMPaN)DvdOcU2IVbBNE4q`SG_T5BeSK|k zr_f4I2B@US?D_ym)AL*?#F`$$gQ_QS4Xca?->hPa=;g1-^nww+_Teg@{qtSs^bk+I zAE$bHg~Nk)oGgPzaN0Vx;%-|cDQpwC!Y6{2NCC7R*{bIa0f~*t;lR_R!s*;|5?1=sqsDSDLNqWg9K)r3?)n^~g-KLnh? z2WTcv{JQ=JhNsYjj+{)={5-%ay$0_}UDBVqLWBZ^8r_vbxfP75=uav=vyolgG&sN-U0GRcsrg?vS=eZ#Q-VYC9*$Zyb~ zWU%Zw#3z?kuSXUd#oUgxb)*FsfaS-nGcC9{VJ4QhuSA>yjl31fGeq+!5Mkh&JYQ-J zeUtgh4bN`Kg>qZ9Hu#?u+r%z15NFB(o94iI2Wh<)q$>J8kn^}Ykf>x_WJa5gH~9AX zeX;tl)nl*kZJ!U$95Fg54ipA!9yz!*JLYmet7AU`jzSI}^{tW1wSIXLws6-Is@*u|3>gt7Gr!iZj)M$v&z^e5%Vn-yLp z0vF(DoqCRKHZJK;J1}zUg3lk7K~)`}j24cO8$%uM0Ymg0Q@f1sU}VC4p^i-lpKPDU z9TL#ud0uyq(x;XNoISNIv|_Mwy-_#9y5|X0h4Pfo=}F8ESDA`o?8J$7DT+P3S=|a@(^TDyodmGIuEgYpSJm z>xt6A%UMjj#|P`EOW*sA;7}R8Xjc6yLx&lf{(WrQOPaj}movF$Z<8rCY4ILZ*>fUJ zl-Y*qvNIrqf>ct~GBm3nq1&7m0Bl0m=eYn1A7cbn<@t{HPs%`p&toP9eoWzpu_3qxKS-d+VQb?(>tJYSOW~<4~!8ba4G4 z*f)}vH5$xiDwNWY0%}5mP^}m*XHC1ilGvx4(#suuyrEJn-8q0!Xk}kfDTb6Qx)D}A zp3nfSKqfMSve|LuZtw9*$qx`mt=EwdOdnjoJ*=hV%~e*Ma+C6cp=)di4GMeY0GWv? zyi-HHGkQ87(5yO8Z~LgVhKgBR)B7Jn>&WHTrn00Bg*t6--d|)ps7|?}m<$9)((wfss-2oUF(Qb5a89Nhdt9C^PhCqWsAVP;uto zl5uVqnlBa`d!2(c~KVIFG*Bo?3|Wi#$}&;VaJU2YA~@S7g6_ ztx51X#bO$RPc-)$UPl)VY{#h;?Z`7!dN5-#B8#IrZwcaf&y`uBkz~$cD@ZgwZ83?% zH526_God{OB`z4#ogy{03h0L|(26=nWO6j+b?*F7>K=ITEwN=DY`z6n%xl@i~X z71~9)dvl|kGqIA^Z@#2OF*?$E{CN6at&H~&&6&Vkv~RCRj;xoyYv~@9Bp-iy*7ANX z^B1M{9&T}CJ$bM^8CzxapqjKml%MPoMbbtPUB6u>hCKNQZ79&+BGAJLA}aNc9p5WUc@xt@Q!a z`6LJ``v0a_o~u&lMO%rYEvRW5Da5{DP18*?y)sy6)cth`tg;)QYrkMidP>%u zPOOStHb*X(mpZF;Uf4E=QT*8LHq=%p)%5_?+j#scapHVfke1!bxq@6X&+&dTz~GkD ztPv1yZVMd6m&iHU^+Qs)gn0v%s)DC>Iv5{IKqDx;W%OzU6I;QW9XrfntW0BPMp7_L z+Zh=&kYq)YyGV8YxyL01h?k2j6tbL+G;&O&xUR`59>s63-#0c!vetW`OBjHcyO9dN z=0NSb){v`~;W3rgErwX>M*~Rc+xmSJs-sgIjf*=TAQ^}O>lEotUDvtuF|)+a!*gZd zhDKqIO1RHz0gWp`J0>80NENOlvzKgGPlK`9ou<9KH1gmi|53bL4x6ZqC~W_zH|_A~ zI_@Kl5706#%Vmrn;u{CE%~NL+Z8~kzz3ve|?gI|Ph##d>O$WJPy73tXCz{t~E<`)= zyQ8_NtYqezk0ZHx(A;i|G3BfoPYJ)eyNpcBQ9P9&yf67*!FOQ0P^5 zgBcn20nIB0x%3<9z|ek)?U3A@OhW$2=1Wd8Y_DDoDs{LBB_>4(+`z)?fQ(#evrN$D z#?>7Kyadzq-W{USj%fN4k3)*pS_Jq2rt~$thr%ke#Tzg6$A-Hr=P&l~5E*)PQR%_~ z==y_;DwRjL-9LaNa_^uVDAv-hdn;-kS+Ni!niK&DvS(>PoTU@zwFi+e(+?2i?J7s# zz~}UgCASRyUv-K5rcs#1!*KM2mJ9 z@6GWX%=+N#@GPn`_n$7b|+Wgm4Rj#l1bjlAh*l1!wa#YZE z#IuVv-)y&y+Oo7xR_=S5P}SlLA=VkAGjcD~t9jy7Yk3_7bW+uoO{{&R79$pDeX$!i zUCnOy+%hSFlqCN$=3KXUTcgrwYQ5!yjd)yOM(|X`OJ(n-lVJ$Rf*$rwndWS`;Cmi& zD5Qt)-)Qmf_F8R>3X}=Haj@AeL$2{%u?n2R(;HjPTFhF`aY~g{hNxDQsoEtc;NBZI zn8l}X?Hj?oC=7A#EK-ToZ(ua`@wIA6omdM}_Dit%26mbzA!3<_Y-Qix!~|Qb3ZMdM zl9y;}E2{m-8}nRH_ChbXJ{6a^x_!Q##RhGuK!oaj(IX5eKqN-h5=M1^Wb|vu%s$$F zjZ~3S8h;-#63Bbd=|JYiZHs7Ior(NBV>rb^Q)>Q-fzv&V1M8PrS92Yy;U`vAV}h0)|#fHl#BcY9v;1b z{AFwBye>feGp#rSaoI#54v?sNXHXSUzGZ}!h6p$%OY%wrmdz}5TJcHOn){li+ev7d zrWYATU}P`#&yi3>?uteI#2%)-(Q9%YFJbP^+wv;di zU?xwY0#(#9!*|M8!2wfzS9bwKBYs&z8^!wB}DoXc1o-!wZ-)T*13SLmDh0sX{=blusV*<9DJ!@P+hn z!g@_?ftG-im$MWZj{6Z zXCo;3af9boe<;LQa;Ue22z zU{dEfuJ47cqxh^Ro&zz_rM)7%sv)N^^p_vfwS;tM_)1;$*7PpwYQn?v0->YnoASbm zYTZC#PUBofG5a`R@;ZHX$rJVLJqdZ!Wx9aStTyhlQ1^*iDGYvq0MyeMZ|ZDR)IuG% zqR(Ndzw;bAlyH+KC1!44GJ4Ua+u0v`DqvL!V#yyNvq#jo%O80T1l5eEC_dXy`b26* zytZVE{g@zHW6KpU0ookRuKjcj-+jVs?qg|IX-#&S+diVJz1?9PvMNT;)dp}u z1-X?U8+CDVx4VKbbAYxVZFah-bakk5#ENcip;Dn;TF0ym0qW7bwHTVn^IYor9u40- z`ZAp!PMI)%Fv0wEscVe_nZ)2vr_YYIp7^t1(xk^kR@g8Y%eJjWH)w-2*V(-L_B21L z?zG`*rMbb#4N*2|U-}j*t<_m(gh>eu=CrLyOPz&ul(NIXZ)&Zc_+)uO@zBVZ%hDPn zn-)T=v@AjL`nvmtz<-8ul}Q+=TOK`Qe{=#=L|T502z-P zq8v9H)RkSj_OPh2WD@5R0@`CIXZP@y6DZ=aje)x%cbTuGvWfeb_X!d-O@H5vea9^S zb+VL^;buUV@*r*@uJ^ntG?Qc%m6DAP^}Ff+>?l@g-|`nXCvNi9P{;Y_h}zVOye8BK zcl^oQb?)84r|)T+@3$AXso)Z?&`(@Qa%j$X8mC|?Zr`<8RxKm+sjy`)p#>XBh@L?s z_9-r42tMsA8va9;_4+=GE1M=k6Yk#m#X6jl!M)MG#3&yp&Ye z38R&jM;ZYa_+G5-B$!vDW-dpon{7@nX><1k3AhPdI9m73TRpegTf%G)I+C3i-HNaLYanHGsRi6 zp0Z4;1)>+7%{txHCl5laUJgZ;T1sb&M$hpwKT(C8CodF3UZPzb8!EDtQHJP*#d}Ny zb>`ot_)G*?yJ9oFmJJjiWt;W0^=4*j_L$&fg-~kgK04Xfxhq;oozNG>FCNI12yqL4 zv`H|-<892yX9?0g@oib**z4Z)THk*3yaGRcf##*DQeo<=y)}@pc?cg6JpxiLAZ`-} zvXP2)6a$bfSU-Q+`eqXZC`mMO?D=Vt-V~5%-cN@22#xwo)wI;kH z9K{?HAL z*lic)d#CGVYD1uG_l&&yo%MI69omGK+`jeqS$|qcdV~%1#StOGOW%=6TyREt^6pIS zeY2pL0Q@tR4^&vr$W{i+ID!A7dmV>LBm*9S0cIop`%k;?a*sS^CW4p2Y3RA}zE@{E zHvlH?m2|2@vHUGEW;3@D&xLsq`l)+%@9kC5Fb!!3*P7&|dl6nn{Jp2XmD{c)ynB~R z`${##$^$z>_x#vOj~3_OV;Y{GkQtJ4A6Hp`YMCB67b?*rOFM3oya$}H(8niusV!}O#d7vk^5TkN+D`_sX2v3V+t+Mnx~!9Nr`>CR zv^F%D*KBkcu-BFj1gr4>Z7gdFN6#q@?PKBAj60_^o{m=)z|NCpwPtV+J8jDHFaNz+*Q#7^Ne)3Qmr^{edgmU2 zN6Qdh(x~J#3%;KI=hwHrm)0Mg+@a*I>KPi!2YBAaKt}G5qz?PgBL~t zxwZfqGpLOljGY(poztlNOMlPE1Izf-&)jBfXLoHv+rl#Aofu}hda>O2=uhg+X(A)w(on}LsIBM55dYYu6l}WKxXE+yCqL=b?3=u_Lh*&f(i?GIvf&pdMIOF685aruWg!PsosA&H|V76L@dX z;m^|LJ*&o(0JrNm@6z9Cq{d`-98$Z1ufpJfn*D?{w0->NQ9ZVnp~d$?uquA2QZS z2}F~`o<8;JP8pFxxNO2`(=@Po_x2g&4}-?TR-uM1WlT=Wt}ZTK`F7OMH+1d#Bd+;P zY{laq$7iWzf<}ebf!7SzE9KIp?rqlR{Dj=2z-aRz*MfCfpfUfMJuCnZ| z;Fy$a_?+*9m)LWPK_=fksy1`1H{b$t86>4vsHnZ%-wqR{k2mrFpAZ!c6Fw7 z)3!%xz`RSoM&Be(9W}foVXw{t%ILbZaS_A)GeP&8BNBe=d|f&2?{7J}8uCszakSN2 z=n|8=?~Ji5S)2J_3Ad@rKH}a_wk7NO z%j4uJlPdQsFddy@@w|juvT!VTZcZ()#?%jl)J;lJX^63iv1zo?j>*eFGdP4ilc`^d z@MjROeee(AdTmT5oO%t_l(TmJEA!IG{%C(w-f9Ea zws5L~;+y*C#>+p+_fzXPZi)gKRI(oUYnDL0wLaC3F*+TqlU0)u0G|4=-PvBChdm8^ zkW^7&BMR=8=XK$jrEDlAaAF~iPPU(vX{Uz!yvTQVAMwg3yT9bIFnecL}>3busw*3gBsJ3goTXr}MG-`T@QQnNT&>FD}HD&p_UfX2tb&gG~n z?bI>rPAPo(c;@PV5(6% zga@hHy^rJ|6#+(_lcEp=TxWDLRMYiikZQuHDBr`%oPQY1Z(f4SK&XlEJj8w2k4N5$ z8*Ce8aMFwuyd?3xhuMe-Q`Xq)CB=kVuFSEZ_OdYRi^k59`P(rreX^6n#o`iec5xTQLaPl6!l z#hF4^2I17y{?yvhTP5W(6 z`$LD1#(c2M{}3HFq_m8`LD)sSut*i|!4TjsD^Os*_?SH$4U00YBk2267BH|v`s#?Z zJ-;5LSR*qy3Hpwg+Q}P%t~n?(^g!jdP2$EEde}umX|XSR{H&z=Jj;(&2D1H6lSo?d znU?pTR$61W)&18iIDZa*#D@quHk9E=l%|^kQlBSj`B=_Tt@9qwcHklF7 z#9xmr{WI_O7;hxnFx6+dIk52)k}^1|^mHJ0taDY&A3O5q-+%6^3#WC^HekExPVCtc z@LhvU?zFR}cbg)|+D4*H-3P26%oSAzO)jq!3^5$_Bi2kx>t8yNaoETf*W-ik0q&qe zXxDS5WH=5)^oP1GLEwP;9)C5!z48*=W~FYy*J&}_M!^zQG@a^l{kG%C2DuWW__SqH zCfV#aO)tRZ@&u6E9n}BU^8d6{7obIU$VJ#_Jy4&_QL}U~p&}kw={2suXRkjeT)=lD zOOi*^O4GWivQ0=}hV($Im%VMelYHOvC=8Qnp*OOUz7`(8HW(M&XUq0xWUsx+ua_q+ zVj<19SKlxYoLp}G+A5Aw5V6#_VPX`~${o)_+bp3OYlvtG+g*&$W6I<526A?|VBy=MdhvYpFsRA9-hNKje-dH#1|rS@03wBnHg zukHwi=8j`{`AY8pIrwO?14P;qY#T7qR)6f6gU`aKY?qe|8s`QtTxC+X4wxue@a0T-$rCW>hiR9UMT9 z)IJ-^jyGP*yOvn`-&7#n@5Bq9_s8N{SUU~G!U{JEj^LqF2C(FGp)ZV>5q2}rv3{xj zo+&xj)K<(^YyT?$36zJU{J%^*u!fLrw><$dQ$Gyb36y0mw*Bx2!hVOzvQGqE)0f!o z)m)fj^0vC)s=8KAuKj4eubvVyQ1s6t2lOnVEv>gzf#H8cU9aI+s_n(C#j8^e;gQb{ zHN*E$Dv*agMs>ZYX@(hmy2ZHeGM4=ADHZrhR0?F2+<+~OguKAspS-~D%JNg2b0xeE z*{26p-q>cQ9axvNiiq=_PV-<&UkbMoIa4yJ!#cQ+m^K)Rb>snB)^qtVQ4aDC9H3P3 zFaNNQcnlVadbS$<@#*9dJO{t3AN%F6+fKm4CHC0l*;EG!Eh$zrDh5a;Rs!I>-@J2#6li?ZU%BQ@AHe1Y10qrf7@*Tv=nhm&V4tS zC*&7uT|xr3DHs|>kXiRLEA}qfy#82t={bwLvXySEE-h`P>&o13G ze(v1C76y!hsSBB=aJe{G%UJeoL3O(lW!{22wsW>R$8CM7L~uYqcd8eY-;rZWEknd> z8Joyj%vreMWCdCj{uqq-wUU0-=-MpJ6v`awV*M1?IGkV~ImMpe(D)pU1Br=e0;7tZ z{loPhZfpdj?U*PZtLEDDT4D?9nCZL!W^pGw`*E@Lv4gfwHl#}l9}@J)4ffZR8xrA4 z-uqq>I^CwMtAf_BbA&U*=?H9DMdXF3q6`8KQShzStc$gswF|AJ+>ndF>|3 zG`T6rpp<7+cRFiY}=bng<=-r?)$f@|iwdefq$q(bBm+ z|0nJJ!=mlVZz^W~wO8Jw7xjNb90p2_{}BrQ2lK`G9P!_RunU(+{iHvCsTdBA2>*wI zfdoy&Pyv_t{|ov*3tEFcknBe-p@Ett0Jot4<=#wezt#bEk1;NPO*N{_1l%VOb$QMB2NZQIwtWJdIzWQdm?3pgA-h&}DT&G!p4u4WQQ zwv1A|U>uy4x8|n z-FY+jCe29HTY%Es(DVts0X=yzS+Ty zT=duFrmaWOjwKjfucr(zME2>>qFOw8Jiq*DVMOKB&QLwt^z!qk0eM4TxFJozcKYx% zn~92Z)8Cn?FsxsWKRj7VOU)kVj+a208jzW{zc9a-#CsStTCL`2rzFf5zRG%|z_$a6Sur>op*%*WrZMlEMo#GCa90oA~rWWQ*78OMh~jd3qk9 zN-Cu2@ULRP)ywb_(;9cZ>s?ZIpCYp(^(x5p4m-?%rQ z-M}di!LD8{qq=ZuQM;;xq+0YwV2jp+0v^(QA7Y(nnqR96cLqh>zTxFi&}SMuToN@} zqC6+CB*Id%xwYLTJDZr;4r_gA%WA^@D+@hShD}(!W^L1VgBMxF*!;C{?Ce%FCu`}f zE9qQ&ilfzjIEF`=UtTzu2o7@D8M%RrINr<7Y3**dJ}Y!QtvBUP7K~tF+WXL!xugyOy`$9iejC*pj{VFMe(nbZbVJzg=c0e2>e;(({uif zV`dRGbuIcTrliMR)jAx$FCjlttGgfZFD~S-5Ufir6Bw4wlE0V$i2`h7d;F>OO&mta zI9O976aYzo3&pP#famiH5xdl_70d|fe%l+C-6*blsX8RNfe>@%an%h9$rh@lQzBptzs5k%9jm)wFE zd;`K*X>GX=Q?*{sTdtCdDEf;<`pd!p&otRIc;nkY6G4G9?8uLs`-V>%Hw4Ud7C*FeV zlq>RJ3WcMz4)-H|6_u;u0^RZcvV@mKID3StioOP$UAP@a3{R^M-xjOkK@Jh&srO0Y z=-D`)r?)Gx>G!-9w7C+iUz4ua-JsATvc;(K=;kh=zC`u7rkD5a>;4U9&t_pG9W_8wMrem#1c$cK>;=jVuIsb5rl7Z_R=jnh zsbuc{{iZNQ<(oq-1@!K6R8c3dRyaanMUl0~0DS<|JE*W&ui5SNkoIpq{KS4`F)LFb zh9_v;29OcN)P$wFs@^cUG_#|~x^5o)`;sO?Z$a=}dV&OWY+u*N!Ca3#4m?s``1)6N zOx25UaGRSRA1aXjn=Z3+6e4b}m7ZpN3!2z}>((T1tt`H`;qa}Ef)NZs!oga=uH0%F zIvQ`$F|C2Usys(39Qk0zrT+K=vA5QFvSnc zpA~Pr;OXE}ZQgs>w600olti)B=T6KiC8_;taqIUvkgky@1(mub%@7Qlru(f)GYRnc zYtl>iU%2JfYR4%Uq$L~D@|99fy)r{pqOixh5O1>yYmW^zzTDF^i)nGnL!NdJ);8;p*L-5-f0E4&%2E z)X7vK=&a;Qaz7z7?B_D0JGainVsyEcNzXLUxcnpdSYqtb1#`B1ajnlC2*@)1{wog% zVk7C=0K_S+o9x_ol~qjgYNJ8@;l5r`iJ~!y+TRSL>_Q%B4%gBj$)B$Ht&A6DtXQa@ zSe#f3u4&Zt7S)=wP>j~k-R|48MM#;macrw}_4jGbWpDZ_qT2{ZiPO?sNrSBdnB zuTu)n_K!ryzme^L(5C9pR&~zN*DggkadF4p(ovKa+0$mxwEKTX zPQZpOM>zRdzP4JTf)=|H%X^$ zO*6k41IcR18;tHE|F*4uHsuS-l%*zK-j*-J?t=~}?K3s=WvyR^TsqS1N=;Sayoj01 zY)JqEJZ|sJe@8z5%MjKSUUIwiE=n}6iqvP)AUE|Vs8uU5IS#PIfB&r!yZ~3>5KMZ% zy_|?qNZxMNK{}rf^&{et4!5tU#IA2lhk(`wT^f(u9Nd^uhjAqQdH=QLFA=*h8z4Pd z6!j#8PfGQCnrcg-&!7xVzn@*X#F7afeff8}|4f=}3ZuaBAx>3Jo~>u}%HH+=p)Uxu z!nVg@yLXb_Ag2emvAmoi{%ywgY(^ydvLYZ2%b)WpeygW^8^d(2iYQSAI+&)<0|><% zFnRMPfOkpp5PH4kaH~aX5O-nz_P<51KPkSNc_8{lp@Tnmy-W9vBt!`>LU7QMbReQb zw0R4hf&I3r=$NE{Ixib;zz09Jk$qIFe$ELUwJcV>DeL8%>x1|CMq%v6+a5r zW-p&%{e(2rVaYT_hYPGuCYmd4$}7)->uxK9-Hs#nSxY(b#QnBiYx!S0`Z_7@w*i+A z2zV%*8W!Dm(x@=KonS3;dEVP0H>+>W$3QW;gSj~-bXmmfPB50-3IWw%XOrD#bv1PX ziFqBHl9woNTVCb9LF?32OZ$YNKd#}CondBDcj`Y8+D6#y0U`c9`}rTeY=^Q*mlVg8 zN}1t%X@K@__D#i2v~dWlG{nHG1B(4joo~0c9x^YAzk77f^K?4r z`TqXt)gQ(ExtI5PUDrD?w%fRRF9w+#;%#r%@W}UNYIml+=%*H)hIoS@%JH-Qx{FNk zxsm@@vJS4P7PKtWvsjm_ls4ANpG1Cw>n-i+NQ|X#Ayft7&~W|Hcb?6H%F;Q5qZ79@ z3nI|49MT?|vP@ECjnXB`ga7M?vnm0gDpEMc%5FZ_b3hKaT&BpkPr^1phy!E5NW?Z^Mi^*qTPzmaHlCfr-&KIZ z$ngwaGNF$!q<+a^znm@psde$A3za?t#mzNr$ik3>s307!Iol0(m40!NvRHH*FC$A* za`*d}%fqLw{J>^IcH9MTle6J^U9~V`0qGa#W2DlfrZYU%q}-R#tu!J9P*#)zxmAvMGGs~9CwBcO-Q&h%d2d>C5-UhK^3xeqOJjv$7qQ!NzNYQC^Zmk`?15rF)wEiqhm&}b zhuvpMjy{d!0oXS^J04NQmDyn_YjC)WDk zlZ(h5t4bQ+PkZ?27^|c_!?{5`3JQC@h<Us2pbcZEbUXN181x%P$_ViLM*E&p5I)e;;-Ijw@r8ah4rhImk z8_j~ZBWXzmNMb;zhUKADx4iuKwS;<(ge3eF{8F+VarwD-SJkyt!eNin3rs>{N?N;W zQ^0H0q16T1Jk^*fx?PdBHuEDRlP2JpY0|1=~JZX;DM+k5dIg=yMms^8L=}}i1?`=nC(3k6a*@)P@=GIFhx9)MMUut|jPTxz~_^Fk*P^*_9e@8&aaf3?pI3US6`6iKtmhuPe$CZ;^ z8o7HSYVTU3{KI&=;bmm!vL4N6wgz#OJLsW#nEk|xP0Amy^OZV_GdJqU(sg%^$7ne` zUcPUx17pK-{o-yKGiOVzoeH`*b~^cTk}jcfas=P_oxoi{_W~>s*I$cVqmEy^VTH-zN!otaspC1JC>Ok2nydZo12= zw!5bl(2!mNsz3>Ostc43y^l+YBu?N z5NBVMSe)V`Be`lCVB>%JTyjCmwHUr__DQ#@irW|4NDSkrWTmW5ZRHI{AU&;H!^*C8 zBq_OKx{Nqmg39N=E>5#XOuFIsSNL-aI6c4SM?$~zq7^T^qHIWnPF*0O^4$iCZ97&v zC!|ng9oSyXOtT&n)*Czx%|nT|6qxkSyV|>>fGg~<#T2?JBIC=>R;SP(rV;65lnL3c zZ!dcDsNE+IC-7aX?mFVzQGjdd75N6f#daV+ll^5{cyaIUS*WvFI;Y z76Kl~R5T$!4vh|lTlLJp+ls0u7N@to9IT;tD$HkH8f4gui%2GvB2o(qqR%|OCBSfa zqj}{-Bg8Vpig{Ez2XZLpf)arzqH(SWCcxh_5H zj1JVqEmA{xdrMHT2*_2YO{|?UUB%m!DIa1itho!@NSu!NWzL%u93UlkNrgEMp+8vPLjxM zj+7PPgY4?YLm&C}sM{nFH@cf%`iFhvx+Y-y-RL5R|A(C3DX87#%L(pxcF1Sh5e17$ zc`XO+JqmML^tj1^p3n)raoxePviiWVUOji`C|AyC+<+8?xeX#uZ-d8+n+H|9@7|ROjvbRK=|z4W&WCB77=O99(=b9FDFeoN-Y)flYohay z%RZjnk?44J`Q^Kame4ZM!lT^5HpSOZlO`rsM(Ia;qN*SQ12cRqQTDx<)XF{U!H!=C zu#-(gExO#w9FSA_`;zh+s4``BK-8zuSk?bE!?x-|f;qu=wXEAuJ=KX0ZmLtrdf!)? z{;;3dBu6+{Lam#5p~YIJdxW*8(wU^T!h z#;HzoA&}xk7h-6~W@R`qUzx0yhy{y(7gw3ebeeIBG~SY9=%?XQm@}k#39Yh(|-N`Wc0o3}AKo%HrN}yJ)#4@A&GL8nxz;16AHu-y|R?!}C}9 z+f>G$S>Qc<8w3(fz)0auEY9Ould5}iW%$}iYDA0gIj&?gNckQXOi+LH$N<(Y(9X{P z_`Za&5>!yMn^pF1Rp9~+_O9H>F`(Xf*kLD4Sd+Dx$)n+hy%)O2VvqU>3VFR3$(*Cc z9s*rDyp7G5qtccVIN42Lp0?l;!-i%LD9V*DCzvLb65xLS12YxGII26n8*LqvxC~^D zxK0^9GBR>V<^F83y2AdUu>ifMs^@i1stoVVfkbMHD@o+}t6+w$GeoS!^$R1v`t$>} zm(lZ3GGm-0R52iBE~qLx;lu4U0m1598wT6`?xi;+#h@J>R&R*e`&6|j-4sye0X7t9 z$@zUa5709t%heKg-LGD%P&uI0W|rf(>iG;iCFg*PY)Mo(q7-vf^tq%+tUKL*bwrqx zkoA>TK1znc+fPF7KK!;w%GZd|>7OKW?wBw1@RyMtnRR}UuMZ^aq}^3EbAVt~qF+R+ z*tMJ^6)x+9Hc{F%NE7e>oXJ)D)`SvLiVKMH++k<(Ei;aVgJ~YxY3}p}ecE=d>O&ZsAMM(O(OeUY79rsVVM#}| z05b4ot~iP5K3jjGFokAyLCf0RacAO#FC-su-~}M$Kd>12&X8SvXBwXBdRP3Kjy76a z;cTR^5*F4WNpD4sI_Q>n{OyO1>QWudFtjA7A&~ww>C(2FdG)+s}TX~LU(+nS-ERU-`<VBXAN_e;-CbMqJ~2(u@Th}N@+e<| zFMRanbh2D&>dE~N#c>HK`j}MfCXy1ED*uSYR&y138 z)=+`hgMJIpG~TWYPvmfb{IDOExu%v5FCn`0+U$+nhL`<*fr~h*>*{_|oa>5FyAT8x zEuvLjwL~}QeKF;EvdhvQnn`-xuc?6=1DXUn4G~$%Nk{}hKa`I&Iu&M#Z<8~o}v(VXyNNd%Xwu|7pl#M-w;TSGfO})yKV2g!r4)Hia0q}zG zu#j)_#{9Dw5AMl3aG*}1c_GDUSGU?*1uimTfLi*HjdpD$M7ZM=g?ET)H>u{>cb3J8E|F+N*HAh&)~#+`n~-t-v2;#N%^i);i3gOqy?ZzSBurW>00U z_d->4ak2j7=-9kLFmrHtMNJOq$jUety(dem-d^*m84;XjBUq!r`|rh^Mb)L*(dBpI z%r@=zuY3i41Zy91gi36#$Enjfry_)&k2#O(JXXjkk;c#nCRF@nBcc}w8sHj=D>v%v z7bDY@;0*Jpe!L|py3Cfw;@he?96Sw&>He>c5(=1489L14ESY|14)HY0PWs5&vHfu& zPlvJ%v#+K1-*Qe1!fk&66oDq zdgAjV?Y)O&l6GDAV6W-e+!+`vGMnf8ebGAcvm@&Q^b*l4&XDBky3mf-X+3Z&lu*Aq zyhuA%Ub|UDPE4^bx`Hv1DCbbGV10QqXw#Pe0|w_ayZ?YEwei~MkuaN~hJJD9{q&Lw zFHxgI7UvVdC9p%hdR%}&aF|w>A;GAg`^r&5RpTLtV_#K{zgng-NZE$TYw=Bi7%*!n zL?E`WtwkNFoez}E1tE+U*}6#eh0C(K(A)m~xBSJoNO0kA@Hz#x#S;^6CH2k2#l+DP zcWKjhiBhWp`3_)S3sICZVNvW%6NbfH$-UxhZ?p9zja?pFYln{jQS=K!#o#y!K`9Hk z_eY+3Oe8p8VgLi$xTmn1p{wX{{b0fnUZHoUGZo+rV!cgoW+-p#T8zQ zmeBgVAlx)wrp@t>s1{!lY4RV~lRC{K9EYK+GSOFxHPf-F=+ zT{~)g7aOv4np<7KEBNoh>j_;AJ1+7eG0_%cJ`~@b+1pL(h6IAcKI?HF1`FSw)#8e$ zRoErjy?8Dcjw8kFOnn$s5$!5nz6byPg*z{G$Kh5F+1~Z=#C+#TKOMiW6AtrP^em7a zAA*Al02AuwpdL4=i*vKtOuqifz4>vMB~=ikL06uO=b>>%_2}W(UcbR?8nn)Ho@YPP zJt~p)=OdSKirf|TqHyKmx`(r}@m_~yB{rlCM6nJ{q?D?oW~Z&X^u3M6nWJujh^cD{ z6*tc`+kXM|7i#3Ws~bAAFx)|VVY)&)0UWg(>!?5Iu*(=8539~K;k6HJwY~M^w}hlq z@mZFfZmp88dIjUNOve9cMW4R`Wuh+zaN`_8_yB(I9%O`|05Sp@zi!r>bKPB2Y}0H0 z`wjUDlU9XNJ!xXU9ZZ-v;P>-946NegP;6N_U}k+ZsPYppm(ZY1gYANCh>QD5RF`Ks zQJu!kwdlH1<$)PXBiBv%s|OT-l?ONJw~McV=IL2ZT>2*E=vS!gpgxAy{K^JG%8(NK zB90QJm@rU%MVdsXbm5h?<^UwyD17ssb*>K_tK>y$@N_$g4Z)_lZ z7g85mN)j5EvX5CX4lfwL6F(kBs%9ZuwHwY3T*dx`6kh7V;Rp0*&KaAAZ>HEhzapllQ!_lHp}`fG-d zv~=YdOc^}_)dRY%q9c8j7Lq}by?Gcpq&I0Lj*}JSGdwRy5}kZ45ps;6;S}6376(1LK9Wooct&E0@8Dq0L^_D?k@*aOGmPqbL4i z^^B@8r^@vy5C&)mmK{CB)O;lPhohO&0+vXnB-zSpaO$F~L8ZGu7(c zeYmyY04eSS+KFl3X0>42!*NP6VyfnEc^O#EwR5pZS>tb}2!Z%_N`T~X@jqXqG6?Fn z(YS%88NOn4cYggG(3XXuJ|H$0OqVD=zksoB$=Qig&L@7%Cn}Zw`g6pKkd%`FxHXs; zlLg>wK&|Z362RaO|3vh9RCFcoy;7pYygUG(xwC|cvK#*7eDUemlhJU>tNuE=L)}R- zA8WK^(npfZJ~A6^lqELy7uN*~)z!t7%DP4nl}vvA5ujGS0qW$A9=-&JK?U;n-daXQ zL+|QXXj1LM3*&E6Eju-4?s3IvuKS+PKFX=NI#VJ9;IEK~?%S++A*AvdEr)r1cvU!3 z`R6JX5WsM-w7Jr-f2wX{okhMqwx9eT!tZ8G%UU>&vYp1l6?C|Lk%29@#4VSd6|4G-TWK|STt z!x}MtKB9j|G-KsLr{JGiWsDGIN7nth{O8T3T{f_yC~1N|wNOengn%Ri7;RHF+;e3j zC+3@!kyR!7CSUA(?)R#L6RW`+>f$N^A0(0@ThlXESU@ic`qJ?x$>WA)m4_&LKedQh z8XLInvCy4UU?y1R2B=8#G*P`O7W?0YNo0c1_cx5= z?u{M3s)^WXyqx0hu=KPqx*lD|b{V#1=SlOy--tCfF)c21-yTn#mtDPMZv_~F)t@(OD;gm9+d+PX9zPMRHvBJLKDRBJKDoz{_dA{`o(g;?2l1EmBxgP4N1=nK>oe zTbf0?t4z*duf?I^5H1UkZ@H0x2sjd@91PzL`I=e!$`X@WVd4qKp+>j33T7y5#Y7RE z_HI&$e}F#?93J#tzYE%^{xdDMwO&Uri(g?8A{+lQ6M)iVHx_86$LwsmV(1}K>NYAK zoT;F7pWK26yiZ4kfe24}n^{iIQoCC0jYX0~25CZQkLG3ge3tq@o**u#pwB50h-HuH z*NQ~)6ONoepPcGBD3c2e{nK2{1_ROWcG|ojWZhH}cfX zn{E1|Wek1W(x2OFEc)hzQFu5FZs-t%3v-u=VGUn(d3ODs1pBQKp@cBscE7Z;)|i`tv1!2Owf*g^&J0JNtnA;|&rt;#Xk`5`#` z;uVZ{<=l!|VR0mJ{nMC+GT@s<|GJEC68U_-SGd+Rjbat9ESL3ey)FNIiv9Zw+_zb}fsOHf=JG>6B0RYw1l&3W+`!*>1%a_^yds2nIgUQV;thSNbHTE( z1&IfO!iKa_vqW%o!1%Ut_y4XX5KffD6sEVk`ROi{`)p}wLvGq57qQo}$B`6!UV26} zHQ|#f!Cq}DM2^c&w2uP;ov{EUKJ8>3eErE*sx~Mm{mt3|XamIlbK(xs;TOHvVW;5+ zU{nUN2SuOX5m0qHIqf5LZS~z&G6VIf(E@l9hjXQP*<@u5)bNS`8}jJ=I`&@E0IMSz zQCbvDUlWR8!f*S0(*9t@UTOlG1mwfHd3luUK|U3IKRcO0 zTMYivZ-$K>W^KdkJA7bwyHWu8z|hqpPHwLShjkQOWZ(<#fr|os zOycD+_RaLYT;)rsm>y-B+*|8&6fWu6W9Jg}Ev)H1BkqE;v)d^y`qQ3cV(1~FUo>@g zUMDxQ`-H3eH24YmjXxV4dM!ILY+@(hLE0zXg35wevpSc1xY5!b?rRhxsfJU_FCF|9 zy3%>&+&;2gdkq_{43wJKKrHd14|N|zTmZ>29k{_v{b~$b>Fk>kX3arv@REvwGWz=N zRB5a(RJipf7M=LQf=%QK&342DD9YMCwnFHGZmv5!EjMz8^TT6oOv|kUtWEk4Tbg-f zvwiQ(_sAf!sWpJQHQ>p8r4|*utf-|d(KrAZV(cxMW5k4v&J$vR*L ziZqXirx%L^s^s2x?80Em(CWA0p-uSvoSi}RC-h`tgK7}9n)$uDp)3!!G#JDm((R;- zz231()SOa3v&nsrY;&XN(eFmLTp9NBnFcP=nN&lxd2OeIg|z`nGEbrum|4p-U;k>p ztGEB;-@DEr2|RX~*0n=1fRSb3?%|k)1UWS99Hwv8338oWU5KlIgZ-OFo!ocNxCeUr*z@Rgmu zrPnJ{#I&>E!s+`q<8SZrcIOWc+vKdLOG0Cu-cUPUea7MKA%2bsN0QFuAHPjj8bZVA zqo*I+E#6CXo6Kj~l_vekytNl)I5YmMdVy~KlJFk?xFZM1;k6e^>$;8AJT|iDc|R01 zH|meJJHDZI)>=Wy@{Prr+2$<;%{kU*5ZXyE9T0Bk_sK{qwvAT<8)q?nat|FdiXJX> z>T!kE8?zPOCQq6|cbqInw=DNcSYZzbAHJ9I<9V>rUM%@o!}jXIj|>lS)+{7EF$>w% zF{i!`egB?W5s7y4yO*Y~x;=cj@-;wRukMqPDvuP=nC?^hDKr}70|j9jKGYUihk=(K zXR=9bXj^<5x37(jsK+^c+;a8rXF7+BJvCc%qWzz5e!1xK)9B>1jGJdT zceS=)nc_0B#GdteXIJBW`W*_LsQGiw97{S1tGIi*nu!r7|GB=(g+ zX@Rmw`*6!;L8r-?s>M68;+09{I9}I7L-S^FBB>he-LCU)4w(vD>f3lWO)^Ax3`^F= z_?(hH!T!NMzahqhwqrUA_J)Pin9=shLOiW~)m4TyNztD+Ug@-&wm?BM=sU6ti)-1U zK#MPtYSk~=aBjl*Lc##xvgu7`K`b-N9N#iDe~MH=A@rrrW8ZwyxZ5v3J)VhwKfiUr z_wsLsO-G%ct%O+Y>OR!X7lxwOm=bgmcuR{XMcU%mA0}0L(;mp$Ic9<3?R5coto#c1 z8+5hb@qAa^7~@#~xFiFF%=#-=#503qes)u1QRhZIEmi}LS()1>Q5QGbjjaE?2(t9K{M5N45`(rd@L z{BXG;y1!V%ukP)Mz>&q@H-{q$P^*^X?#oPlefmH{l)0Q4`5?6E~VZy#Cm*^T;l zRm#^t9ZZ}BXub4<`L_6ywS}RLwIN|s%V~AZLN=B;-omD4{-at8L^Jlyy96>^GS{+& z+ANYEZ!8IKj3CmmYaz>x(RPAUWs@iL6;@w|JX3f)1PN&U_7>wZ#OqY&zm1g=U8J#T z`QZ%qM*Do*YQ6i?^W$NK8te@e99K>%4yqt z1P({cgV13Y7G9Z zvORYO8~1*oH-CL7a|J+UIS5(47|iIBt7DstFIhFzC-cgpI-qG zM)di%nRW*v^R(6P-+0un6W*R+kZ*TQGM`saeh1<|-)E}6OM~ntcbl6&sOmRzD2CPB ziD6taOqZOxEINf=+NUc92ufr~Xq10>_#)W#eM^CsgSPvX7vKH&nc5ynn4PrNxlg?p zZIdqK^P~x4{*@Ll`hkZ$p>U3KtLu-K61TKRzyfYvxADJYe;`QdRx%5EYDT#gYt~+0Y~E8MYHvoo?YS;w2p39#87dcR%0-29z$eJT8{vDu))`PWw`KYu292!SCq zg$=VMP=5J$F{#L@o1bT$osq^y%=yc_T@en1^ZtW=^=`GTo5_8FAn=#G5D5u(mnd|& zy}zzR4jM;RkC}KV&icTlVATBpUNCE2FwsreM0x~X*JDgc4H4E?MZdoq>n$B`sO3<9 zUX+~8bRydi)u0mcVvIW==CT2TnRC{{={7(b+%a1ov-VyrCNi6Y-eXMASrQ_v`Ao49 z*t&D(9k?kF{VVkE+6Zlnzv7hn@qV_zImtlo0QQOHOwEMv(VYfsNWn0y~Qe8bA+E2}m_eM9C7Vz|%7nSWH}Ef%&suPwUYkW4yh zddO3{!v&sXjDYlNJh5srhZu|B1%@IS2w8;leO%evB=lxH#;>QwT9|K0yDIc7WAY$7 zEicAA|2{ET-V$_oYF(T}OjkJIA@J zXCtB+p$foyPWyKe83y45l`%+Ao+lThmYrga5?4@>h5U$kI%S&*5Gq1x2D+*iw{y#uJhw>@4L2yl7NC0p@I{<8fW>W zGn1Kv4X)wfOZIb-!-Gdk6pqA2uz{6F3wXG|MK{jh-p?)KtZ=jClzN~`RENp zLEZm(*6F|Y9w>7#hQMsqt*7rh3KK-IVpt)_sg>2Y#oyOfJE}%Y$7*-(^}DO@-Kxe$ zTh`}h5_#JAr(WM)FW$9I3J5&r+qy$}&-K*^;UM}J#jw;QfJrN3ZUx5uE;_Z1dx!%U z`qi>#Jfdl@yqMY8nLp1VW~bvV{M@-KsV!N#M6K33BXIrIr4I`~puQ{1eyW0R zO8)d+EE*3BXB-nOYr%PakEO!PMI73<(i9Y-#!_qxD2hv?uzuu}dP-1Bey@)eEUABW zy;%?1lQ}_@_0bT;y2Ld7juW*1I_!f=zWVG7ouf~^Ji1#Qq!OxipB5ok67cH!Lbr~6b`Ny(2=r?b#QpO!Ojm3ta13U3CX-QCnOmdEx4 zG45oD=GB4cju#Q9IpgBbPv)r-VBU&Hb4Dvd!SWwr1(gAF&4Oyz~WvaG28a zlfk$`zi{+Tx4t;UAPR_qr5|1@i*IU^WT%==2Z+nMA*xyzKf2Ha6DJhFy{wPkp;i5K z$uq3m*uksNK%8Fl@o`tYEVk;%hgqx3dIUK!vxr^Dp$1$04apZDRb^S$KyRyUb5Dyw zNn4!gq}3645bg`STr;rzTj9#9@uc1Sb>!^)oxV0!Nf3db4ziM%cyzsWXtmYCPWy6y z3<~tKGtx-Z0UE*8DdB)CG;Rpg?Sy;8B|Oxg!}?V2{pScXO|>YG`g(4N6xLUI8etoc4at88OM6agnEP&b8gA)1 zrJF;wXzx499qFV)#rT5W*yfqtEq?FY2p^?+O+65Wi+dJEGGd}fvaTdZmDMOn$zc6s zzCA8j@-F)FYRU7pL_x(KSH;>&zHU*sk2LAOEL|m$*OikhD_^_xDe$6S&pB8fKRJg+AbJ=E%qv!M{6XY#9#kyAdl#Cx4 zEl|%>lyv_5-UE=w5g#2u=%?ydm0&%9(|p*|p3PJ(|8G##@qk;RtTF3&9+Y3{-8UIk zs}Sl2OOR+-J&we$p|jDex?iw;1rs8~zt^JdT6Z2M(iWPh4Skh)Ne`5Xx%+HFbY2CE zhqY*J{8jGTytzQG6LTCVQG!f~grPeve`g9;iac{s0iKo*&6cIQgj z{$l&AbUC^t5|cJ)!vH3A7s0ovda}AbMAua z3y)#DXLCfX_G()3Y)-5O(= z8qzXKR{-~4V!fc?-9?*orO9y&Y^vU%5}q@>D6>aKFhh*fu=}WPlC2_%4H@=r{M5G> zEh8D@PiN1mY0;Nx1a9(X*1%$l0v#ft*ZB{Pl}rvThr`V5oeIsp0fSUh11b?{XWbF; zbYsG_qjZ3@T1>0lrU(;JGQR0+&o*g^;=(&Y=(I6*G`maKIKoLgjuJ6(t6)}LK7g>z zneYHzx)x0=(x9^EIkg0Q9NJIsOjBfFvphj0|0vWFVwpfNKIEA{=UfKNJHBH1og?Z*<$H6S$VF$fVqod~h>8hsI&5aq}p=}b~nL?j! zVrbK%lcy#(jo43GcAKg>j$Gv6uNBA?m$WQU@C!IQ?Hriab=+M~P|JaSUIio6fi{J{ zp-%^rr#baV;#uWcjNd|Py{ybGGvAdL3l=rF$-i=aHP{12X?A9ZFhIbz731j9HDXt0 zR)4O+b9}mBm~T!LRj_OwLpAn0Z62N|6Rty$u1e#M0wQ;kofyH+$95q{O{X5X_E<0t z=Mng+Q~60ZVol0xY96cjxQhGafHrkZL`)Bb+NqL|W{mTPCmtuvx|;q?mhZ=>@Q}Yq zxVn`30b_h1H&@h1d)h+Yck8v5hot5P6xB11vc|Hc)aE)IJz=tAOU z;ceXZJ2vgE+VvDFNomP7zz#)8`-@=+l-F1#tN)5aZp!6!z%g>-#S*1RzebYJklWI} z54m@EfOXypNuh6P%#9@Wb+V-Bgu20i4SE@Ff?rZCHSJ5U8tq}B(CCro#<$G{sYl;i z{*T229X*zmApaKbsg?06A}_xs1=ri>oW9mjW_p*HCcOGc48_!Rd(Snrt%@CJ1h88a zU+Yc^K}R{DK8#^C5=tkuv>)e6-tH)U$Mw_p0EWun`&yf)4XO%XDml?~M9QA9@44;+ z;44CI9gW>|nn{gP0)t9VE7>uQSH|OI8O(-mW2$A0yXI85{v>{REk-W68Gr>KEJFem zJ4b(Fv2ISB_3>ZOMFoO5Ur-1+S_e22CvKTjuP4{~*b*Wz! zSW(V(kqA+0<1>Ad7V{+EC&i~uK8_L3F?!f&^ye%&{VN}?0jtAeoq~2VtNiz0UA)bH zai%%Qr!P`)9PHOwJL3p;h6B30Bb^71-kcI)Tk+M$s_BV1w*B?@qK;cp7@z~PD-7A~ zL1;m5k@(Yz{g3;jj42e+Q|t;w)-BQ3Y#zcV!R3UF-;3d|ZHT_NUYtg;=zk36UL+-V z<=Z#-eeKRUUW=?kC-V9Gjwm7yayulV-Sy!$#2z0#_;Z#2V_QrS5#VXfBbZSSdaiR2 zdVbULTc7E)Gw3q9r4NVd0-%g_sw9Tw9ZHQyEJAbWr<<`R)(GZ&kM7d274-t&(cr%x z7q~s3vwG_9VvjqXPxsL~^f7V)-qT|-jC;OKPD~{RnEC)B%}Xa&RYbyMK0K4abvxK| zIxLK4dQF@f=qM3;`H>eC9t`%&WTugxDoeY#2W&VGKM;&LHF1A<(hlF@@8O9A;62Wq zb7T9Cp53hmf?A-@2-2BfjV_>*0s54a`ZjtSOH0w7rL6d0{mxCF4tP9$V{b`yRFr=k6WsPgiKeK= zDpTWc^smUIpxcU^T@Prt|Ce3U008Sn2y{X!(_e%YMU}WGfKL}@cMiKif5K>Z=qvtA zB4J(!r(b3dO*)xgtPg$BT~2OEHtC%VSZAZ>_NeM@b($Y^$q$=tz3`?6&dX#)3h(!%=Lw~JU&xj z6OKOTzGfAu2<31Pj+FqqFrJM$b{bX>D#ZThLGqFF+YSaEOh>!-uH67bL$-9?`+rJ;@PA#>7Q(svwDzR|u|5_DjDO+vo=B2K#1mx>6bygW?0O=p7$p5^ce>f-3 zAcmQfR|`GUU(~0co?HPv%>Dmc3}EVBrUY>1xA{7pzYa9nfk1Un^gm25ix81IeP<`j zeVj&YY~6F>GE-OGgFbQTHP9Ld3d^jDD(hf#e$g5G3nsJ10fq)K`dl_jJ^|HgpyA7^ z{s5c};U~3hu-iZ2RvY($*7_SnT_`Jr4KCJ&yZrY5`wYKlumR?BroUL1o0_yT$A1cf z{~jdlBaa|Hxl@$2My~0PUj3gx9LUqL%6n>Wfr6Rhr!G$PQi z1jwol<30f<`S3#3GEh-g?enNx3!Z#FDJ8v)Ru9w~8RuBX(6P?7^VzH8vdVJ*YpXhL zW026yq?^8+0@s3s`Ul=_{$HmX3(J{nVre(uSb#L*Z%6-AND~2!$R_Ef zUgPHfwMk!01HZTW`|PulPuRb0%}=+0g~|do2^+W9vrPgalpF6wLUscQdygQvI!oCh z7|1cB1oCuhK=oWehB=-Y6Mf}%tbB8#@NrZB4665j*VGAgzTnI#RCwvl&L*K-QsUo9 zUb?+6El_vE^pWHQ{9U2P?(8eT4xjgc1k1$4XJ`&FmRBH=K^9Rq4A6WEeRw-_Eu6Ro6D~R6r5KjB` z%_eP}^6j+rIpk!y;aaE3Mld0qNUvBd8O+(B7C!`BGFHX=mkSQqcE~uJ5t~4o8w}Lg zv!L-}VUvWVG(rzSCAIw>TKZX38NItS+BH=vX5-wOUa^`ihPUgXc63j<9>w0rk$fM? zqosB=eOrt$O{{doQ=s09M6|&a3cVcjz~8mbCIQ+bH~wZi$vXM))-LT>XkM)KLo ztO(|FV@eK0V#>Gn+x?V!1rnG{WOKV4U+2=;!|{(`2sqgz7cz$-W$)v#P2%is&_v6( z`6$s+4O4&b0_VXJ37k44lSa5NYv^IZ+A#*7mf8{jV_Dm8TV3Y|89)Ay{q5_8LmY&P zgiZC4Wa#3cvMlLp71rNA5E+90lwav%b=97g&1Mb`&HD)U&1(N@ZFGenG87x4mQZEl zujoqA*(uLV8@&hB;gk8!f|A{b497BHye8#!9(sJ&`aB^?1Dz5tc; z=|1%%fyy3(>Wr$R4lu#VC$?iOp+w9SgEUovO$&8p*gBMe36IU=B9GQjO^U=?ymm#T z5PQz<4}cxq%zA30K+%@_1vg%c^Y_S>k37uUndco!2V%)cO06uboR>-Kc`cBTd?4!e zb;5g9SmHJZ$$vx+3l@kW)L3eR$nk|YZ<~euWM$(OT!nb*aIkZtm*h;S*w~xJYm{yoN)8UrxV?dz3H?2~b z1`5AiPlA zZ6@I+rwSaK9<(0alJLS*%ORt!r*-=<$kzn%JqMN}h~Iw)W9_O!OlQYF*6gl3VgKW| zsQt~mk0_*xj%YCzT=7RdETx|HGGDucr!tbIihQ+SGp3tIPMhL}f1T40LuyeZ_L2K@ z^>H*wR^2=p?CcSc&>ggxw#9#ws6->(o`l@0-48uwe&2fh(nGZAJpS@P_FI-^$<>G& zD%iPf%Fld7T?uDH)_oK$v*K*+DzhF8eoL%FFMY{ct|*pp@%Qk>&^orUm*e#5WYuf$ z_h_c$<*|FI$mub;YX7G&ro-gO;&PhbwAvjSNRsxqxh#$LZ__I@!(RmyX;qDh6}_c3 z>szbt6c?Y!Ae=tzQ{U?Y7<%O#xy~XPD6{<|GGO_H;&p1VeY2fQ>d6bY!@3aY79bv~ zxW9mEx(a+iFg%EzDl7ibALYOq=CDy^kzK3WbG*0>2+R;3j6tVS4QYLgfI-ryNGW2g zYbSg!R=PyFOKfYZ6w`7BF+fWvFD5lwf2y&9@5zy>`I-9jS{DrNklm#0(}FHpCFPda z%3?sjTSRJdhij1dHECCgOKY{Q+LI$=2i7@44KJ)F?ri!dSML8*If2H-pEy!gT`SPT zB?y|T-givz=p$5WSF<4Y*lCH3HFYV~U^~$Pi23Ldxng#AkSnuH_zw=}e-M)y0F$G0 z%>uKw+2k$FsAI{uz<0~IG4*viZI^axWs@Q^SauxcZN@zw+ZD~YoxIk4#NA;Zd3k9> zKDut@ZOMg0Kxbsl_ub3S3!LFr9xzS0dV+E5B)k}~>J)Oc?BU`nDMcQ@w!$ zt<$MW)10)*@pOBCuC9^ryviqj#gLWL=F(nf$fvsiIe|Fv_76m zR0^}VLiC>L5b7qHvBJx-dF;RUL(HA0NPZ+PP z@lM=Eh?NPwR61ZaR;WX+N?ao;kZqsBND>xninN>TGX+l5aYXJ;o4OYL(I7~Y#2i!? zXFi!0K9;+)yp6AJ=;U@o`y;Bssv0j(o9(E2SCM{wX(eM6b!YmTzu`W5QIF5d9Dk>F zH^?WF^XtQXRsRTzS%-ARD|Yas_a*3)q?>}zH8xjY-mJllVI-VF&~U6X_ydcdiGLEA zl{Wnw)bQJjxpQSFjrZr}*zTD;yp$`M5HX$sWefIz(XRY`xYeZ!Ud3QE#q)P3aI zMO2yzUp&JPy&LfIqcKB?1#8z}+@S?@vnOKO8$8@qoy{Up~2@ZPmo_p&+e27$U=!c2d4{82%b4 z4&vKZ%C?VXDNya)NxI@~`KLR3AvvMji?k4K!py;bJLn5&?arHMp%=}^+|+`Ce=98` z7v)9@Yw36cG#ZUlCPg{&gE$y@py~lsMOgz|{$3CPF@RFEPdum40_Pc>tG5Nz+Sq7! zHWR5wo8=a8^k={<<75f#lQkg;Tqw>d8Brk2a;Hn|whA@HN^iuLa%+!3oLMoqL-c$8 zk=J0_tHceb_8T!9m&Ffsz@srRpPpJepn_y7=t+-BQ09ZsytU2f*!hy{?vDQ!H|;qq z$oC1 zJKXV@DBo$Us_X1ZQGXelhEWc!Q;*(9?=pVB0^yiL0EXUt#yG>Z??8(Fk}Ev=5-1uo`xi?X2>&uhezV6m zt!h=U36BQJEu~k0y zm)jvXcN2Ee4C$jHr8K_}W61pJ{z6(<3s8{$=gk0F`KGqNp8|Sc77a2RXIaDv76X`| zI@sw{d!75cAOa8HUAJ!{7>D)TLWc`8bf6DN6W%>Z655gp9mE4lj*n5Vp3iVPK0XSd zVF4<-K|Zm^Uq~WhszSJ69z#M_u5wL+dB`QHvi2xZt?F>0xnRx2sv{W+^${L|b-5<- z|L0N7Q+DFf*t&P~Fdv)qMMvkQvHqOS^nEP2r|`v7t_GYKA(HE%22M+iXQbHi3oibo zT}XeC=WAEt8EKz|3@r^WGbz34l32^qXA)q(yUo?ks!&np8;(zg-YfL30Q27R_j8e~ ziM@Y7{MNG(vh#)n9rrum>nJWnVdy=jEz%<~ z&I>!D41|4?D{Hb#{)}h-k^cXwlArc50#=R!`&SP0^=0kfQLKcyzXvI!A?jdUSiri~ zS2SwkVL?{T*NklA!z-!_8wF0qKO9Hbf~aloVpU;$P!$ZOxf;g6q-Td5HTq-neC}dR zqAO*jQpOlasuTj;I#Ja?KL5L`p9z4=Xa!CZwijkni8q7;*2JIZ&<=QjY@mL+uE1H& z{S>dD42{#@;`v%ZV1>L*2=RC*b;hgiJ>T!97bjV>oPVj_`FIN5nR)vbvM~qYOrsaL z?5SNHg@nMj1hK|Gd?-*I;p4>d_)V1u{`fS1PB+8a+>hd`4I-qS6EEgEHv}=>XCW|H zNY3|_Y&o&6o5~5bT(MSWey8;f-WWZi3;{IV66WGL0AsqvTo?_>W>%FwdJ}_w8j(TZ z0litxoz{TkfWQ}A5bE%q432(~5P^OU*@*)H@LwvtPn0oh>x*@PGhiqTYKBFunJJC& zmz6EQ&{u_DcmWZ-v&lw2?fr57^)Yr96FMHXEO9%Ak>pGM?)PvsTmd+I!fW*~&=;w+ z7ks%t=Ie_VV=8%4tLz*!EK>-dmN!Y#=0T>(a@l8rt}2q|U>4)q&45 z&&IgmvyoPZm|L}=apgg!CG;6@_CoEdRfYe@*q6sc{eAzd-la%V;$5~%Wv3)UD2YO3 z$-bnFeaPO>&^A#*vSrUQBs*grODb80j6Gv3jBSj4iLw0dYt;Kwz4iY7{`08U+sIZ5)PjX8~wDMiT@ zz`UETv2MOXxMJqz)Lms|Bbzj;gjmGJc1;4>>=f<6d`WW34;GpKc zSYW%c>T>`4DVdM+XnAc5$xVE+s?uF##E@&2XV2{@YMn}t@SNV}>vcq_v1nGvRAL>V zB9j_F?gTR98ZwVf-K_22O?h6ejD~Z zyd2=u-isQ4TvQ88R=>#M`iUNrf4>|OXX8Qg=`IJ2Vu03XB7idY>@!#12dMgS?X!rC zU34`AFP=AxT+SZD$jwGHKI1I;h896u*OCrlmz$KhIG$V^fZA1tHbhydz7g4%u1~VK z^A)bQT5i|F`(gDRp^Dfb_)QGA>PidY-Ev z_NyBmg`*UPeB@TX-j2NNscndSk@6y=>0D}hgMma4j}@txMT0nlGF5C}V>0<`ICQ^> zDr>4UVO1zMz`Y5cxiyV7-uM|nv9*4lz5@&&AL7${ctxv=WzlyQ@)KtVe1nBS+{w?o zCfVbm5-iNGNu1h9?`Ko6pfdegNR0I<5T zON^;^m$TLgQ!B4MJ~O51f;W}n`>`iB+n6qoiDajy#gVI?%`6dN?Zckml4s4I=tNa_ zgdX>2Ff5PLAr@$ttyr<4=5Gf)UVn+%qkmH>OYKy{fgTd89OeX|plS5M{p%BlPRCVOo<)_KB-%2vE6D3b@VcAHi6-ULy$;*I0ayFUR#*@HV-E{7RGF&c6p*g<}p6am_q`+cwET!z_Z1NN9 zF=hlsT3wb^#!az(`TBkEoB`uEJ)<(gNj?q9G|*drjN5}}ua*oKf+WPM#9C&Cm^1j{B2?nMCR77%L~%X1B^dGWqU%C0l_c>4RP zefeW>rmKQ|eqP+_CTuT0K`j;6B z59;mG1;4fyvAg#MYB6LS4XH@0ij8QY{k}gYO?cwTTzmh%O8c4)vLC9J$PZ0q2o5*b z2gDx{Pk?F+8;I`TePQtI3-oTo95}Z!^*-^4VlU_}@)$<*21?hsImQ+)&oz1NUj})t z|71)PYy2uyQ2VS!?#FNl>iJ%j<~p@S>sgTMam4g}kfr71`j15eV8u4ECy?3JUpg2< zQleb7QYF9cKK3V>{>NGK%Y$B6EJRW9Bu>G9I@ADCv(bP{_!CZ~*b@*0p!^bozpd(L zzJuH>QNVP|#smE-sNeFlg{TcPZl z&&P%WB#&68o3=1`w(zHH-1ii&(|AtfS|XAMN+Dz$asKJ({8Orfc<0j=CI5w(JGFcr zKL16H8}{1=9@$fO#kfotW$O;=6%uSO6QWB1_&F zdDSh?lYCq&pej8ng}dNB=dHqT0V#U65OXb%{QAGP(Vq1LGOMWn>1~gL$*E~|#FSP( zT$Ezhk-Y>WWZ?uZ#Nb~NG>Xst`Aqb1Qj55I4ZC|;7WG+@tIl0DzAh}6@ad~+7n*KQo_kH;LmTMquqCibmRvnL{Q8R~)1bhg!Gt7VxiNmR2*=%}Qe^^%5+zD!wO zwyXb`4I5$4eY|jErsp|J%=!nQz@!Dkf5nIVbbrk0TUpLOT4-r8sXO83SJP`f*0^s- zKdUkK*_`9zKVek5X0hG*ZgaE!)jah_&KOGlg;2`C6w5sN@zhbkXi4&p_{r0%MeD zGkRFUaDPOnfL;hZyR_NXj=m`O`a4iC^&EWlL~x6lL_$ZJ$>XW60hCMc4ELxhOPU;^ z53bO46o?aos;J`5e)-^URtylCf5wi0M>v=lpyjnU@2z|W2X9JOb@FIw0a+UA`k zy03g;9n+1O&oV5u*IrD5X3Sn%04%Sx1Z66kNC=!dPVFJ6G#A+`ju8Sd)>x{NS>Ny! zeq+OLFddMp*HIsYnqR+%Prd8-kioP|hoNFRiAToz_6H`V-Kb2D%ie?BTn7bCUtRU$ z6nX7eD%&9XD63IrDwh>S*4>971y|AkwIIjg>S;XvRW$U)x0f9~WZelG?F&m4<} z$gk@yv5lZ27>j;$f!(UUOzfe@ z0CwxU7%uGluSoXxbuY+Xy$6mmc+BA+qvCPdTw54i&70q1BUt=nBHFJk4+Yr; zGwdD<@WfRfDv-wrVCcR-yZhZqO~bE&7En7+9)RkWNFJ(FfVyPBAry!k!o;h#2MpoX zGa&iz(-Hl7aMXV6R50Xl3$6rqJ3yN)0&l8=+Y#v3g(f#dzf3p?-f9 zU!YxC%cr)}T+Rk2r3?pT`Zmcjdt3ty_+mN-y>+?;-lG11Lj1gBRUVAoNhvOx!)(R^;M^t2 z8+t1dfzJ6!#f(11d%b7tJ?Y`RmF8aU>mC59@)4D%6s5_Q-QK_0RLR7Oyq(<@TX8U! zizYibMRrwgch&*p(>uvdrC&y7s~3)gYc-7R2Zjb?Y-NfdhCT%S*YEOLK)R=ijTsCvVNWGp}qfbUeyr zFy=1NacLMKG@W^b7gprQ#8Kg3zfw*R#y~;8%8&kRw5+Cgr=fO39MOoOh=-tt#U3@8 z`PTR%Ne~O!GW2vHP|j;gpkhWKkx>gWHy?lQi%b@6Dy3;jShz+`ASmSr+laJ%=fP2V z$|F$F@6PR&HpV@`Tj$xKWb8Hh1;&cB%3dyA+znw@D^(g-T2N8hg$z0w-U9Wf06VTf zGrZf@nzO6$(87E6RB}H)MnCa3VL348){wDo?%FPQulSrI0)xR zEgwD}gzOBpWSrJCglUVv*>=OAJ?GB(F=|EWV8QiI~d+k7!QU zPSf2cZqvpOp-nZe372@|oR^}NZ03G1XYQJJ}sJa6b<3ED8C z2ujE$cc?y;howVr>B0D(Ep)r!Ik(>zd>>VGOB{Lk>*I;Ui#fq;gbjZ=~M{CHb)-g7LO z5ly$bcar6kb5UCjmF$Zm)^BUsSCkh6-zFFQX-kF z-PiEes$X=CmTJG=rmHR=ys| zHTm#7d2HB=Z1}>~w|>Vr8F4Tkaa~DU0?>C=oATPN*~5Z64|~xJtQ3Rtuo3D0z)-v# zzn$}uqzrFJlS(K#5{RJ z)-L&5@3sm`97;JG+BsP|+wibrErr%uBLc7^)9N4%EL*%;L0l9o9kP#bQ{xjuRl)P@ zhs6UhR_~&adhw&F86^p@^LzX{e2hiD=KmFOnWa;*X!cyUfFOuR1b~Rgn;h_l9g29U zvpy;?bJ}r(6Mts{J6TQ{xfuN69ahez&mS3I$#Xu*zyH^B9sWrCZRsmVKdp$> zSZu+bwTbFD5!BEXbir6a*e;q?3!8Wb=O>SCUS6_bi*Ge~Ep2e(Jjdr^O9j}k*9!ns zXsaB{O9|Sm$j|+pK(iOTqug`7)^1xW1FkkWu7otwynj zyNkh8)4};_y6mKkSuykPS9MDZhD!ExPy>kPDh^uZ)gU_Zb<0vA!EmSsBefF2_qf#! zsjv;Qr@;8tPSiaCuZVWsLqLzmzeD8i%?MJdq`3h;s&b+Z={h^k$|);V0a+qpKf_n+ zPKi)gckjGap${Sm+J~`0Nm}+ZQicEe_UUN{>bErVSdRKAi0W&ssdz7H@&c4q`pH57 z+s1s$1Xggrb;k&(YPn=d{rj=hWz+%{-;e%9ivSGr%lc9(op@7#$Zgp8`#SjdUl(?l za1`3z^K#%lkO-Vg>>G0kSQDcHnQ^!$KRq+(#9W0Kd~fYOK31J@0{WeH)vQjOtW@B? z7Iu>Ws=R`6E6!Ura=}BPO?Y$o009L4{>=eCcsTU`ujIfR4Zi{^(RnlL4wIh-249m_ z0w*uNN3&~4KFD4>s`!NNMA2K-eNH#z?RWmY^~h-Lu_F=e!IYP(!cH_-EY8pFztqYl z=vTv^?R$sj=~IbJ*39Z$pG?o<@%cO7QoP%<(72!NHi`Sd zh*uJ-ndm?w{0f2>6U166YG@>5{h$MT>yq&cy&LCd27MZa4d@X<-5rm?Pg&{6-?roI zDu-)qAH;Eo5cVqfcH^Bez(-zN`47Oh8 z1i!ECu4vE6Wzt_~m$a-uJDacI_4|&No?YyAR^d6>a5S+gUGo*k1MY!Hv)0!dL$&%M3)%mXR1`hmFsAJ$0`;Xo={6d!}RTLWcJ;6CL?`l(;0u zW$78ukz$;`N;gophr5Cqe~~{0AcKdW@M2mX%1i4f&v#FjP0S~j=I9EuYka2TyOTvm z;!Cd@Ia8Dr)3u(O+3KUwdBUb-NneX|YM+tj(v9a9;X}y5t#R#0g?!DZ-vsyYA&6ZH z@iCmtgj!8&G0d5xoh3qNJqX5ehVocB#;~{f=X@;W0zA12v-e;FDeNxVh}*^&{$rcf zSlmB2WxvcI7VsX=3VT2K@~(4d<9kje+>jzy3IRFin9!{hSLhn`yI}f02BhuNuu7pt zxj7Yazj}B)5C2YlT)eQp?Pzhc7`u+7G0E9#&hbqT&$#2e*zhx#p8T$bepyUB_wx+; zBQ{O!L~$WR&(Y4~g|w4ejn1!!9p6o8ksaSX^8dv0U(482_IKhL8-0g7#lwb$#oQSg zFLeD#UzXp+K6H)q-~=m4CpXQH$TDfCsxn4aEJox~Vw{#EhMb_i>3{VbUaiH^wvGWrvK@r^J38IeC4HOcrn581Tl6gZzW6bKL;76^pH^vG zny#mNx1$fD&p^_BI=0UU%6q$?aUlNQ0Q+S*Fu!q5}el8dzy=Shxg6{Hl1FmLml9%<|u>b zDBn?;@@f~|Y;*5_G;-^Np^f+`WNlI7boCTTkIQK4i z;ZmT!$`PT(oc1%`Yj+(cd&_$7Z=*FZu+yTRI?+eQ&zedu-<%RBdA&O{pH6hSjWi>@ z5hp5zK)aM*-84MXo7HU89a^+_;19Gcllv+vZZeHWO1Zu%gyC4SDk|hO`R)!ySVofk z`pFL7*g_;_;Z0S6tLYK$3QteZGGnaU61u>(@9Z^*2=NyRN@lwJBT*L?1ziTwKGIq znLnF^qVOOaP**_2t@4$fO|XeswlR!Y&Jt5T+lb$RMVF_bEuKJTj{T>ODFGBRcCF^cX5jZf7kAJ7Y*40pXE zDKv{P1oB5j)mN=nGJ4?+^DKbARt2l^QAWFEu)5hPOr6Sr{maCFbpO15_KgeHT&_@O z)S*V0?6{$QaaCN&Md4hljMFs+fzMy)3%B0^I4n`nemX4^?mTFZR1W_4ZRq3PLNwyJg9}IlJ+7vBto)?A1ifucDD_(`I+xM0C zR6I{~l{>N+>UXYgwOfPGp8G(at?il>w}VTC<{u9Ah{dO9eS(~ExT#mM+<}^|-Uabl zx8jqD&))QAn>~~abbX$`C;oU|z(SalQTuW3OyW8bh)_SrmDqib| zg5X7GY25Q+`<@O1ooiN!;0_z~pU|z_TzBpDS7lA0B&#H|1vPbQu4U@wyptwlTIz|y z#e@62>ljJzo?U2Py_Ek#pU#=&b+fz3an0p;nob74KwHK?WS5%Fy=*Q&p4qkbvN#&L zcYZe?_WD1|Zb!BpZ}At@%YG#mQ|;MDF>#jUD+w3W@6Rx;C?CUcZ_E~j;a<@t zg3--18g1OJ7Vod90T=+?6R6)zjf9|}&m|805%vngI}q;~B)+jCy9?k^g#fz2giE!} zEdI!Kgv?UMLMl%%s6A()isJSvQjKr;v#;v8A-f;k+5ElXysr+cVd8XI{qnb;6^N2bm5iy3$ApYPYWL44q&pKy- zY?M|tMIDmYXe6W-8mco2d&l72MNM5;_bk&D6Hq>SXa%_Qy7uh zSV?S4x)Q8de~ZJsC(8u%WS=Q&1D?*bw ziboRsO2PBchOSbCbCtDHI;HJm?8A@=Q7Ot$l*2-MrZGufqMv27ef9qsmxQN|+uYR! z{Qz7W7;e#AN^+F_jE9Fusf_2s%S$<~6|c>;i|f;b(AaaarE%uWh-`(z2?1V=23Y+J zWDjZn`Bpa+EU|QMlxO#u<9xq9Si z>FlT3Fk$1d@OsJunQgkL9VsY^t^x1&EWBgwicgv=DfyV*^dn_e^ok_WqaJuyD)XTe zLx!0NuOG`xbN<^x{`!p%O)ef<2n79Cr{3oEO0t&cxnS{>V%#p{EUX>4a&fUvAN6}( zyA)Z9O2!WkM^74iPZj5Obq^2A>V&|f+np;wS;Ij79^u|oOGCLZ1*0q!B$5Bxs}jiH zSg5vmVXZWH)L%3u|2m7|A`?}K%@`<|;zD?Cetn1Xx?g71bky5}DMG|>Xw;<4BVSIp zP!+y!erw40H5hyeD04E?zrZFKA`+96;9__!yQXYrXxosJ&J~UV6OGi{1$6_;F!zkE z5tg0{6SKag{GE_>%lzBLy_3iJYMhtH(#~>=7m@|K>3Uz`Kp#ur{&K$amLZOwF9Q8G ztlwk0zp5AX_wH}}Dn!hG_91NXS;%L|gYp}PEQOY5+WdK_`Li2JyP8|C$bj3Y2bQUa zNt<(aAIt#cAGQSOL6pJF3z)hHu7qrk*i9j(!7ACc~2_yFdf4^N-dyWm*H z61tgCKEjUY;*==~D#9havpOAPm=?9u9o*)Gy=f;4!VYMP;zEuB?L4F8wz#-Rsmgyg z6*gl)Kh8_c`>`t$ancVyADR|?r>J0ipTtsNKWb*oUj81qJ3Tz z^4jI`>{JCCm`nihG0!j)8Z1LUUNC5VyekYh;cLajew7?n-+tNF%-_C!*w+6}yX%fZ zG(lWPpw`&2lm*xm|5p0^!Aq&GaxRd~(i<)5yyACKxl^F!MGfYN==RIUopKayjc?A4 zG_6SifX7IqYet}hkU&3g#195wmoQ?P;>revBE0F*u6{Sa23*TTU+!oEEs*Iw%R`eF zU%RrskM)C&Ddbx6{pJW?>nw5{P^QF_68wZ`lq^)5uueo}?={e>mwClcsxEhi zJ^i2AT%?{UC;CNc^c!g1FG`Hbu$IL<+QU*28k;37@}SBU9I|}#fIqD9Mld4FmCL1U z!Zm9)g-su06;$Cc@i`}PNHQHf)wavjf|6g57;1v6DnA-9_Qf?T30)y)B`oeQznemL zdJ^;$uh53KXh}qgAmgYbXoEmfkKz1Azmb8H-7`s^$$q3hdv?Ap3fW z?*NJwG#ZjPI%~T)H}{RZ*j5MuD=sXb&lvJRF%u_%!5|9c{0fLv8RZ9@byJcv#PGV& zo2q1A%PcUlRd7X9E|0EcTH}B#5^QKJvo;y1>E zO=#Sh8=Wm-cUldDKyb#qqEK8udl*wwB}K7QF|Bn^KsE~yY?e(7k1bKmg^=LVTSZU| zYQ&C#8_A{R>RQ#|L{*6d^CjS5E^CFU#z?i1#>eLxq9huzUmvrrAc|o&FIFjw6kMiZ z;io7W&jQmV+{`k&efiQ*4flultuuPeglx!u-At0~G`s7nI3YJHGgEjH02AiJfH}7A z4!qR0M&iQj?O9k8{lHA!p~f(cKFtt^o|1fRE0rgLu$f#KZUr_cSwoS3>JZ_8J$O7X zJ+b*#?QBTXNP|bZ!G^Q8`5i49v2bxHuQwOw=bfW?F(?cn%vcs@bT%G&9U6F@ff{kxd|SQ;ur?q3dk|)G1LVfBp2cfw z$s9}>MJJE_#|(EI~X4`gN3+np_^n;mML`+^KNq z&3sxr+CA)3N=Ja*T-8;2oYHW`uDra=;yS%SwGBLY7*o~Pm9c;ZXvnZz#>+|rd&V#)s#HglMKA04%%x4k4v16s-9^p2RP&DI`&xxHB`QT_9e;kTz1+}0 zKNgdS59nJO$P`^nQ8Zt527ZcFSy)Z@7caAahc6J0(^ahDYBwTbYYDauAfBv~u5Tw> ztr+dKJPJa=$DZU*>fFlUA%n>BVzOV~tqFA~vg~WL8}A_$BvQG$NpxyPekhdljE(l_ zF~x2d9D9~~_0y8^&)AQY37mQ)`n>eYh(p};0%xz4Y==RO?bmYg83Q5H^6tAr_m4R) zb{XiCu1G_X@Y3ciHdmX@@(&yF^cjPzV^U@yn$7B7vG?CzaS)Ftz68B+$y@3pWmzRK z!gPFA!DJgkXwEghUNLgSiw#BH7kdUis~*j$#-JmWjZAfRMJ^TBHW^DIgh1rY3vw%& zR5YWm-Oxu9%MKHN(}cXZ3D-F_Y#6~TEF)__W)V^*9|`Gvjhf)v!~>q;pG1qp#B=2r zzw)NfCvl+MNW`+%nY#h-MQTEsI2b7p~1BEp^QX;D5Q*UE~7a8K@I9ta!8xpyi7NPbh7|*uBDV zh%YmWi}T+Z>x8EAB5$-jX_L)qLvK(&y2kmP`T`6@z3;;b^-YGq7L^nZ{y_`kAr46VYcRH9TDDc^~bI+hP@nh}Vc=vi0nbNE~4qml5x zV%%4oAx;d&Oi;daV(v1P6KDUG3<(c`h4?--%@<9)v?gN-S91^P1sO< zqb(EAuQJa6mgu`y;RYSnx3+W0z27$_h59d62Y$<9-T#Ow0qfXNH|lxh``I$d5Qff{ zGIT-xlz7|bZ+jgaB8F#4lRn?~pd|kdv_8 z+PDA5+WoN5=h9*ZRwCW&2OK6QDrPL~5g()}D}~`1^fY6R%lZz}fqYJO8(B>dD6onx zf;RA#DAH76Lu~VoWKx$b>OFb7H{?2(a53;$(W`3FZbMNxd)5xFyY?SEl8j2e;yWJG zk;_v`^$q37S4|i1Nx+C@Ce^vv(lmRSLF3}VR~23~JFlP9sX28qfWv8bMES(P+Nnzc zLQc=9vok}pXIel@IDZ!D@MHGGPUsvMT&c6>%W(Bh8;U+PP(L3+N8Z-xF}rY%95`3* zHn2XM+`Go)F!QwE(SE7NOR~+eOM_;o?mtrn-Fm{VHTd~x_1}{18`)_2cm^@kJnBlN zklsJ$LhD0w5x(XYv#C&w&gk~JwHj3)t-yO#iqs5Gt|mxWcI@v>7m8c3u=|!I0VgY! z+3KwK#WVE^$o)n0^=b7}Tb;PMzH!&?@$vW$bU(uBu8PDqBQc}S>F}s@P)r0tf591th^MQa> zVE?>N)%53}#d2Uz!jGu}W;&O*}wefBc zi8asc+D<7SRNsG?H7>eueS5{rt@lnkrB5B$82yS7tl$-tS7&)7&*p2I0dZk(Ou6X~ z(sgVh(vR(8LmRug6!3=K3hW5j98 zNE|GJ;%+1WuHcSm@}BSB!O){jfQ5Yq|$R|)LCUXgi5f! zz>Ar^pp>i}U+6yB+f2K(zBaj@;Lqv3;y4NLh>M>jhuPQHGhq0$J$nGpU-Ph&v}oe51O^37D6b$s2)+E8|d=#5K?n>p*d_iS9<;v(~1V6 z%K0&fM1L&41biz{vUz(v{*$Z_2K}L{%(Ji%F+0>uTYPN4Wb!^3)eI(%5=Rw0O~b2crDmWC?n=gBDOVhZhAMbvEPox1s?0(_*qZVH z<>uhvF#2$%VvSUBufAo~cwrTc)mCRm2aewXP~)cgnoXb}hD%t+^ye|CY;*){gq*$< ziYI}NY*1%+AzlVUh7Q=yO+Kd=z?dTEuR}ai_lP%E|M@p#;5We5{L>VJ^4MNc!)sQI za8Jnc&E!B8T-Hpz3h;I`??wqG2}$EH<5>Cyu~mB|YK>bR5PsS0(s%d&1HiQltm8ld}) z>t( z`JBAr2V-y-ZmVs&94|B|TL`C|Ow8LN7Rnj^`yw&~F^1GzAs$Zkx6tu;7RNB^B7ot& z4J3Gr6utuj-4;*>2vA9WI`i0x$qassp}qw@=A?;?DIkK?{ih;$zLVw^M0w90# z=9gyfjg z>11}M)wnxNrN$$oN}Q|uosFIW=f+I+G;7vr9SU~?#-QihL>p>9QDPUvdpssjbK3{U zjh0M!t#okPyVowXl?dMZIO_Q1AJGT0yiPP-+Ya3%1Hzat4GX`NisjnoTU#4ua%cl1 zDTb%d0G|WD<3(bSydj-g+2j&yU|PvD=8l=ud|8biEeLcR_CzCTMuqgnLtD3R6%DI4 zmaR4VNX(Shdx>*y@A|mj`7F1~$f-gjC055kN7>0%lBOYXQsQ?F7maem*4fR^hjY$y zB4*y7*SbqIWQ?Ndvq$Rx!!{fV36p6HYijzuJgofgsZB8rObEy4URKG}qnVB^RMDU4 z&CGo1cF{T_%|hr@_!hj;a%|#nJ6nC-st{Yhqd61!20%pE0k?aqUx<3N-KSk0l{PbndKFw@?{z!65n47W`RcpT>9iYYfs1wIH`XE4M8I=yP@y zFi-L94ZKvYTEXHoT*iV97q+g+4fHt(w}6Y7ZtQgL9XIO;Yrpmo`(URoByupPhqBc- zuzd3O6WAb(;mc!_aGqdZ&o}IJ&O=~TM7&aQvTH<2nU>l?Vhr+=elNY;9lH-R{=UvV zuhW}0#6yRba5{W061VGMXa=q}x~*Llj8xT7R$Uj?BAH7p9&5Bg2tvCr^Uv->sjQbcp2FTK72}q&>rCsG{vn^*myG~G zx8?H2xfGx$=k>b87C(D2s^p@7#CwnMeo*`0T%kyqXI%tcV6szlt!w=WYXfDAuTMD_ z-*=Glr|(*$fghT8nBqMf;{K6MZP8RIO;5+*q^>}@?ez@2qGy}o#tEpC$2N-!yDu}Q z-3v&=yV2VnA!66O(R`XTAC&sM|G5J}bazH=aS_;*A)O7nI1G2?sN$hZ@iBMjL#RT0 zECcTrr!D~4t9B~kQ^lQbU;0a1edEe$|Dg*~-f?TAanSu<)+8S#D$UuJ%+WL>d3Mz& zU}8_Ny0;hEHMo?kVg{}0D3ny%zO~1xqYNwG!Etx@V!5h%^IZ+-N;oXZi!tS9^>qnn zr7xj0z_xr)>3jG)nTmAqy76z?QEmz;Y(Wo}b=Oz&n;X*(5Omcezm(aobg6h-maHk# z!-c*GG`YT#OxRe%HLHrDH~K1dVXUItpECEf&(QQIPG0zhs{m3)4{>##1?7~E7#_`w)E6m;^pF&y2m3?Ry!KlN+P& z7sN33nsJ>BG69kXN-VQM_j{m$m6k=J8u~#ofT$!G#B;0^r^U)+3CKrkN;hRp#WI0g z2&qb7V0}5)Vb*g0uav#1+E!TBhbur7O_z(G)wjptX8Ze}pC^rYijYwYbD@AI&!c(t ztQN^~cAQ|kjU^>Q2PnhR-z!tB$Ja_XoY)4e|Cn; z4b9Y-s3wzvdA6eO5S-gxmeG7`i&c3uMVN>xzOm&YX_C@=;En{P&Tl2(9XcI1O(x{yq!BYoi-W=Hk+`-osA9WyOq;f6Iw)wAvgTyEI;Pvu zMM4Lzr*=$F7~aLBC#oyp1IW`Y3A|Ak)SjbE*6)%9shnev z3=en6KZTb$0Hckst?|x4Cz{9~G%PhSa|JC&+c6AO>zJX6W4P++{;=MOkYmsRE*4`Y zP#8Id4ZSVRzO?m=Gs#~rZ*Dp>743PlyW73>oYm2?ToWsA(ARE`Mc8O02I)o=IUH`} z^rYgMpl!zcqo|_%%#+}?uz1HjsM>`{iCG|A=F9;}YUfS^2-{?b%w1DP&(g|$t88}C zTrk9GH#aqDluW*Td#_lvd2}{Q2Rd7E(&Wn^<($xlDtPVIq*PYc?5yalk6x%3iUSwn zzPCbmZG#@k8_s$6Uz%L;s}2owz0xVf>J~!eKR~D)Rd7N0VHw)Ow&U5Cy;Pjzg(|L3 zW|}4k3EA&I@@P;X#&{bemiB#b4>Li3KVZgtxs{7Ht25yhbM{zrL32T?@>6qL@S!vG9{ZmdIX?_8j=P>-xcUggm8;` z=qFR2zwiY2AFiDZb}&4oDmT45g>dO_m_mNKmeNgJ$dMUK_axWGAf?qVn3&sC`HZup z^JGqLm!L6nF+9wYz;xKl!{j+y9-DY_O4%`L=aFNkyI2UeZr#?LVnHVQf*5pttT^1j zTKds5d|1DZatA1r(<<#W=(|4bUP0-B;dU(*=bMBZZdFMYxODrBrkJi_2V%I)tuh|q zbRu!Or)}HQo29yg`k*9#PjwbX^*C^i`0|3^b4UvD`#)mwXCX+*_^K%B_+(sE3eeTG zmfH7$N6#kC@zeI+x!6Ep_0ilD1tbp18zw(-?J%9Yxk2Tq;BIzz#>dQrPKXt&ed|bm zS9kaDf(w^Vt$^wmpN({=CBIG`ubm#KZh(avZgn7FYK@Y0CQ1NSt4`SpVc(AAUjpR_ zO-r&=(N6Piy5Va^qX_X_p^4?RGK(wd#y;q73$7M=_P*{b(BkolZ&1>QN(o>!gr|tS zE?e_dWUK_565Aa2k3W9+lYAFh_t88@8I$N$yDz68>tIPmspGBL;*FxaIOCxU`$t3b zfk9zhxHlG{i5LA$SKb-5&o?-DwO|2CO?ffcwWcH;cF71;kdBLapiqY($%bA&lDXJZ z=)i??W0+f_r6&s+7F@H~c5t6yzPcQxd*4fsMj9G1!7BMT&oG%|iT=+;w zZe%HZvR8g4G$6CmYw^bA_!t>|0ZdO*=WwiNX0hsV(F0F9EMEYPD8VlFuWZY%sg3EUQ`*8eXPoD zxS=Ga=pG96Jp9^xwYvV{iDm&{p}NUe<=u~=RRJPd2y(%AdJb8l`yjyFBjZ=_70byp)jbq6URAy znhqW%>)pB70bqhL&YvXFaT*reI++FY`|eg&g@FD=gVC|9AV_3VCUecooq=8WyS6}8 z7Ee?@mzVa;1y@*$f2+Y(+Ts?ZuQK{hH_GicW=R4x)nHn5mZ6O2pLZSB-=hMtXT_gl378n%-*h#xb(%d7q@x=GFmI zWv|(Qm>_z1o8tk(>~b8RK-9p9E(nxZcD!BQP~uMWGy7vEDsL|w0z0=0#1FtDeQn3# zn6RdTcF}yi>&}P@g26|j`)NT5a{{JIPm4LfW~!KYuNF)56c~+956i71I#)whjBt7f z+g1~~R$qgg?<|(&cHLvepok>rHvW>TzjXmI9i51&_Zb^(d_*m9>=|wh|a1{X^x6L-+TO zG6S_o?puSuDI$&mT&|6RtOhQN+90CF*}ctgWF&rB6iI~cCT){ zjPoov3^iK^Zy@Wq&2jM=dN-+5k&irjem6PMHoH%TSGenLA!15F3b^o49a1e=L*yCs zurRddGjS_}JSwEUP~)HmqJ8P~$7WFwg%=A?y`Jw1ppb>QXu|R=*V>fN+NHz9;ThAV zJWn~tw(Gj6Ov4&0H)F-MK7-_a?j^yV6UEg=Cr0O%Oubj^dc!Z>L z@_Jrj#VQ#cC$sSR7WV}A15`nNJ&)}4lV(xTt=$G6XPQ++LMM0z8{3_r^Rs|NFxK$8 zDw78(YklX4G1HG*%KqnxTDK0EmiI{$Lo|BxJFd=n%{Q8!4zGQqQ(8_2hi*H>d;IJJ zJv#Dxk&w`aVBOu3eT{66EsqCafkz(h_v^a2^T<;D+{DEcEN#`OlwN3@#2JNIQ)drlSbKL!ATTX>w2WPW>NV{ zV57%m@k$J=%U*_yjy!&Vpc5ekats@x_`~4Ed}X;vXlO%ThnV-PSLrRt-9N;{L5hA` zRtfD#V@kkF+G|Pb?ZB>v&o9wO$R~ycy{{DY>@7tMIlTc^>un`-EO+gD#e@z`D|&Zf zJHC{()r;qEi(yN>+MTRlb$wwW%*58%q{2gsGaK)&aSyFVqI*yaJ`-{`>@q z>Bx4#m=&eCX33%F*8j;%>{W`FvFr#&%U-InvLR6r+~!m9l)qcB>H)&`jKI8=sCxJn zcpEvLtRm+rkAPf(D$-iRJaS7{^rr=q(vdT@JPkzesfS#5Kqqm}&KUVo$w%@3DNl4p38V{>U`(rI|wAvwJ_}J zww{0+@j{dSL|nLKW@~#;XJvvWeSHx<*&;RNwkvM@#ufMhGBED=FiIhviE7g)db1Pf zsFD3+ZC{4H2YL#~?|Y+RU1c$gG7iGq4ok_1_yU!gPtE~~s&fe2FgZN`VyUQS9{1`) zf5BehjI?O{efO=*+01UY6vW<3%jOw)7Sok})>Tb|!i!gy1h!`ZEc8U(IyUiHC^JT+ z{98h?JuwVFqnG>txO?lkD7Wu_bPyF3C8R+bM7q1AOF%&BkQlmaXjDW{kZzXEr!|q;5e7&FLrCHcMUC_t^Kn>iTxseX525kuTpp#?4w7 zOJb`U*Sr11<+R}g7+3LbQ%Q5Rxw$jioz65#*o8D3L1h52?2>y6aHppI7b0g&mc{Yb zkfty=_em~)CDpGXulwUVGJ8yxT6cq>a@r}_qmg~jJJ0nNFr$d+0Dio;59}nDofx$& zbi1l5?BMJ6wP!>za@EK~jpH}uap5Tn0Tu0PIr=K;`K<+ZjYSGZEaF*^%Uvcz#-vFp zS>HhXte9-cVwsP!EPAdkZqaXewJgw9$O^d=MLOM9O;$H@{KR@1!akhB5)LJ%7)uKc zJbzq8Du9re80gmbBaL2A{an|VzM9R{HSryyc?=F`r!AvJZ>HABU|dJtm3GG zv}Jj9zW*)n;pP{LvkDodEIOAuQyFjinAQOmnCl#~8$}%9vcvnZgk>Zdgks?cKY^_N z+w(NHavLf$-OFQD)r>bvfD58WXm7Qzd+Avyh`k3k6eb#2Q1~`&=sDVJ|Ejy1`&F_{ z@=>Q|O>5#5`pno-7wpz%*H%SEM@9HMTW=@&KxDkY!u8wd^NV5-I~@o+AJjo^g4p9c zwyIa^6xr&_ev>?AsAvQ)bBjOf5cJ4j?0EWmMJ*o42omZ>%%iuh>mQ@W+ zIQ(p^WXlTJsxFS@0*%%TdhiueUQdC?{D~8Aa+Y>~X@_CN*A)(uYL(%}E**ne+LF%A z-e$)uMTP)g>_Qz31aN?4ElB~-^0E`r`@bX7x9HpO`^k`qRzG2#DE7nws3vIGK=FAB zajPvA2>5FgohN&}nl1{)kTerdxr=yg%I)gVu%00sme@rN|GixqE1_#zJWMd!4rP#q z2h-M+QMv}J!|F8>5UlFfs^7ZMQe~qLxHI}OLDt0nx6Hx417R7Fqnx8{&X355vC6vO zFF#@=@ii6G;m(T#gPg|8kszsS{BhZ9_vlc0CDt-?JD;*Vo7jQj(W4O00|Z+mrKzmZ zPS{W_R6hS0y@kn-VT8L%a{%e+XPR^U|S%02QTVJK?k9yIF&^Bb{^W6Lcv3bwQ!h(51ucBDK0JP4Lh1w6aQvzd0!- zv}aBgs|8kBV-?w3YzbPVLUF^2eB)6z^f&A_4Cs+FJR12t_!$c~6MjXkjzYge*XqKC zH8GwyxhjSxOFWZOfU#w!4W_8y3(FG_A8k5#`~LK_Lbn_la74|=(XcS&K)f5YMFI)@ z$|}6Pc#x44UDr8r``!}7%tvdi1e)(m5zqjyUmZXpY!@m{PkVLOp6wcH)`x{NsQ>oe zyE-uFE}20@Ed6%P?7y8TJF5v?<|~IHFGkaUaIo)8zCeYBad=G3{g`*dmOvkHal2o) zN&a|AQ#TKlagZjj-}huG?mFz20)~?{j2WAv6Vk~$BKWO3_CeVorw%`w;-o^B9S{L* zofa|QV}{jvW#OS`h;z%-^nG815tr z7c#kIRtm?mGA$LKKfT;2XaR0WpUk>g>Y4hmZ-)={KH35FGVrh(@|5#+6xvUe{mYH#JOuGjkg zxM1cqK1DjOx0p=7J=idhk@2n#V_W+DX6v%#tfulsO_)Pmc}T6d+Qh=`)?yLBMEk2} z-x2~2hj}QNkc{hh*lA0%+~-^KPiOBpU7PwFxt&~TnjdJQVcP>-~QWK-~yUcEuV1u?2cFq)2_-(-XiwdGJx!`3%$g?4Ixz7?s zY&Sk1w4sJM8tXceqEo%CDqbGgn(7mtv;?Z-YSUZ{l~d*D2zZbHN??k`mPNxOhsKM^ z61>82x_M+UL_+uZ6nSNkT^WBxS#Cc;&t>0`T-O6+cE3SDD}Qt*D$S< z*hyh@{iu@~bM4Tp_PX&V==2ROc^opmUMRectO?db6v4cWu^RCpuY$vw=7H;9Ica0bgD8E zpdYZUiI;l&SZMP7E77_vJq$)t6n8|8Xu6=!D_H5LELm{J{tF$scty3=m41};z>;Pu z*2}B6!9Gd|7|aBzVn8D>k?Erb!u_+)KLoovNDBg)BzCc;a=jF_fqBvyK>a#1r}B@$ zsshStW=(zOoJ(+2Xh3Qk}mVmJ@?CaPb3oItTvDA9**Ze;HTWsSjlM@lH>HpS|lMa>Z zI8#DEMcVM~#N3GgkVCDmv)$~X^s>9gFr1amSxL9D76f#PmNpn(Wz4iC(@)pLXUvQi zAW)tq12wN|(KmDQ7U{R*(&U5H;BYjqNKKfy;N8~zOM`3GBmC@gK*Zs2%Wf;ib3pL# z#OYgLDA=Y6kg$NzJ#Rlr6L6CrhI?ckm~&26PohH;40YlPWgUF-AD6)qm;{sZ+WUbjFu2+81WZPzV^D=?5Vr@CQ%3g#o{!YYwNM%BQ3 zFgcL%`8L(-COLW@|EEdcN4E-v-grzeMafL}EfG|x@>qWeHT$=<0ST{PP3B!6%mym2 zica*?4VWt7#O@)l zs}G8$NU+4UM8Y^~eot*9YMZd26Bk9TH>%EL?X%~sZwP?@v^H3;)&c8V06)S;hVp>$ zYLEUDNRBcqyz`WAkZ0V`dkYB4W@?ZOiSGhOwdez>FY*~+gtB6%IM*Z8wg?7@;aQ)P zjuHuMi{a{(`U$Vo+*IzPN;9i#Gzier&n<$l!@;;}PPLUx36VeadvzXt@VqldLl&CEfmtQpt%S{9w zGJoJRTL5N~F+5XTStkrhOoz4Ib@sE4HH!o26;g|jMG`{%sTCm_n6ZskK#|16MhSe) zhgyvw3we1#o`2cS1#V7{i@s?5p1r9}&e`$YTvo_VCvaA0`Fa}B@v+)n^N&{^)oZ6qR|Wqcs-Sa0AOO%bc_usc;>%H}THv0B;C zB?Q}ii!;N1TK-0$7x>TqqpC3&yx>lnckLKz{JT1)2Wmn>HZf<&r61fyxY_@i7`b#G zM0Q}8V5Ia$lGu*@Y3J*bw$;b?3YbOhfpJwX!zw&SF1OTta}vs=}wLETrhJ0j$@S z;X8CPbdIxJ0VLjS{aJSFEM689-O$xYRyXQM2r|1u5y#^GI{%>dL>89-veZ(|;D`jD*){MO$a@ z7gO4UCZSE|LQiDp8NqOEjDfPEM)+j+Bb7ESVu3wjp^?i*4@;B<|%^7 z5k)X%!`Y1!uD5_52AY-$>`s2#qE(@pc$1&?r%=-beGEs`EetC!*t&W%vfcOq^l}{m zixrW%4mIx60i~w$#|9p;*1R8&W=N|JuynvXg@T+a5X8hW2Z7~3aJ>$HtBkUR$A4f# zwrM;yr&~wM%u`#Xo#Sc1bTrgy7{q%h(P^)Lw3O_8j?=?w`~JLor9C4(j4q>z(B(+e z=bq;9S$o|ah_toUv_qfeR-!#|^)$e)?&p;;XM?+R3(s0fIee&+5AaeZNM!>&f{=>hK1kN*(@5;GD1#s!oOrtS^RLmwNf2AXeW~n zFSr&f|EU@H1E4EPjv>9|j&>SE?k}=^SwuB~%=l=gW;FM+#NTG1z$au-xdsSxa8w65 zQl8Q00GkR4*!oKcYR$z|q-TBqd~zm`1mLCs?CT#0pcTut`+d`!A#`A3)I%Ham;0^< zk{%j@wYLr2u*w|IH)s>V!30PgT2w#zde7Z2*PCb zydFy(CC*tIA-!9V?_KVG+iK!yU6Dtp%GACSIvBcO_;^4MOdoQ$_7@AuLIU!f{^>SN z#%r@ehE&Bf+wD|C&ySz+Cgrd7?;j9pIo{;nl=YTJWXNZ`*452Fyhj6g&nyrSTjC!` zW`#xOzw2@U1QMWzX{^4pu32MWMD3>ZH z^Y*{W-15@}G=7Wyz?moud595GibWZKiU1V+FMkrS$WLF4Jq~aiyp|e&_*N_3 z2Y%SdeDKgp_6lcT_!|zX8;2lJYC0)@++l1PWl_k`<6&jveI$&=67Vg^hxkWWn|pG6 z2HpwUSfn<+#_YZUjxIg)5}*jOQY4wzKAP{4XOsdY_5FkypVi;J&EIpkP~uf5{|Yz} z;7ATq17MFoP}n`?hUX({7WCyv8x;70LsAHzgD_6s)pPBRhiw6r(mR5WjFFD`))g7x zvDvyQYuQ!E%%va%0^vx!;1|H4gX&tF zT?_SFOvi^>SEK>+;1|nSvdy$VMq~o3qwyf${#xcu-nCU#{Ey6QqS_V#+ueE@5J_G8 zcakZ!EZF#W@a>(B0;k^yRA7kTUg;$W=|$##(DN(k+Q5g-F&?G){+XL0EsJ1~$MIKI zp#|1iXZJj=m$6Gve)sPrKhvvtQjeFNdeQ0ytp7x(de5aLwVS5F2OX1qI z^uR#>vs#@(9pG*ZrC~AnlORsLb4U^Lr7gbpP%4Lwm~*G({HNFM3GhK!YA%kMexSJF z=YZAEXUlI#-aeoM1Ox~h-$x3FK8bXeH(3?I61BXep3e*{YBRgZ#rEBh3VY@NCTt(u zArCU+t`|&Gx02tME3?=yeb*`dED7D)ORcUV> z|JhrV0^mXE_+#&?|{fVL-fc#(%U*^HFO)+YIAG=NBr1^UAX-;+K4 zsk3nH$CXp<5@&3k6=)F1lc!o`wR!ywM*710W*7-kQzBvW*VTW2YQW1sAfgpqkPk~h zb1QpCFbR&a*#~EuEyZ~vUEe27n5HA(P3245AXlVa0ZFJo!<%E|E>U2Ng&$sna#l%+Jl`(2lGQITekG<`*XPx@c`&oIU+Io(KfORW z85K9XX1h^K6T5wDFKNAWETj(GbXPALm>Cba>dzKeujSxtT^X1*n#T_n3dCU z*QnU{!qfg>eZ&Bq-vkb^;%xj4PFQ0ICoWOxYG665+T1AVyH4E5!=LofJRg7Gt%KEk zfZ$v4`)#)E-OL;}mHyma7H1`*~lW_Rv4Gdv|Wf3@JbvR8XyT)R+_0VFHi zB1O4qgyC@5E}o{V%ue4@rlfnzNqcx|N8RHnSM9_SM!uJcdTPR9p!9q=CUq z%R?5>6w~Bi`LI79Rb-x?qF>Dd95Ul2c>{Z`IXakNZ@wnk88B+(Rd&-ZBE2AS1FD>X(XQWR>lP(-zK})Wd{f)B z{d+J$rBTamzu(`YeV=Hwi?Wzf#QA-nXz=l}bU6fvAU-bR$~<;Nvd^$gL)uA3a&jMx zp?qcA=O=4|uKZnFb8=gT$(2p->7?=l)os+I%jsIT1^=0l`>A^vb^sdTGvu{(^oVtR zUlyuTW%NaCr2UL=`^ZkWk*{L=7Uzqppjj)Xdv%@H{7;7rL{zxXUHW@b#tHBrQJ9J% z+`_S}PQJ%t%*z+kJKs?(W|5w)u$}Veq(cpNs}aMPXoDKY`4}MM#_Vvp3Oq48B$X!* zw#Wt6Er3$019^(3ggyDsNwO~LDqmj3)q7kR?yzAqv>t+N$o-WI@;xE|QD8qoL*&Mh z9~2zV&3yLpjbPa~V_Tb`*f_eeVLVCJwVj|Uj0Uy{k+Dx1?@bd4$Fu49O$+bP80?9& zP>k<2v0Ra`P|R~)G^dDod8-|xXs4f*Z!VM+ZlK@m+}vdF9hNf7M;pkSa5SGVua%R^ z5fN63q2JrhSJh6#~jF+ zlNu{`U5u-c>dw(;EH~WwLa|HcJ(H>nG?wWU$UfV7gx@DyVBnV5ea-{>d0PKHh0klJ zb-o(e2)CK%QTk9Yn$z--GWG=oZSRLC8|B3Z3a$w44RN2m2st$?q}xfKx3cqBVWWl( zR@@X=WK)Zk#gAP5+BY75dR&^eVz>Rh>9~QA-5ywerrh0M?n8nkcWEART8n&5)wUw+ znLLaK6%0BQ165O^lueQ_?PI_DQ0l|d7_*LFw~%|F59SbacM?eFA`azAJyar%S0RPG zDl1(cCg9=|GbZc-B1wr81g01!enGD21;v=mrEbEa{8O?A}YIVISt#uQ%(v+ye|Bz1Bn(-G=k6 zN!gtHkSCKJVrpHkoYQ?C93D&Z_6Ap6%YVQcbS*r!M)^Ua>n#vof09}mylBSo< zG+b|c>$uCN`upN^xlF>J3c}h^#Ez*b4Skmkh4Qg5k)z-9u+u*0ts5&!NC7Q z6hWSjKNPQ!Q11YD+z=2J(Q^iByhAcCSgNzptrIQa00oS4u(js2@#WnI09g|pfYxBF z%t388=}-stp9hrYo!=Fzxt$Va9dKXsA=uCFMfMiF4)mwEyH}Wk#GaY@>oGh12#9*e zfo%4xX>S324}*+p!={Gbxhe~syQF&y*h3zkM;!w#Bewy^2}@t{s9(O|I{rm@b!zDo z4rujzP3)P+-3P?3Jbr8$%gc1{GL#cJY2*y$!4!Ad zZi&$@8j9y*ftSC8E9>hb806k|fAnZcFHA7B0lQ++ZoqN^jJjn`A8?Az+LCEfL2M3& z^ju<&5hDlj@MKKsBqn(-FyP$!>p>He2$ldsjsJx*qPl!(EI6O73b1+YVr4l<50Cfp z?Vo3mk=owMph;CUn!`fwdmk2X05^WP*a%V@Ib_|Cc0oXdAkNUb(gZrXD*KHBG?^sED|aMW9l451ItE^?WFm!v(as_BOj)%12emmvOnDY5)iwFEeDzzFH-g4w2`p=oSh@O#NmLHR}i5Vt+WA9k-NAH3G%t0_q&NFS$b z1tupkN9A_ThoRu0R?@H&!sv=#(s|R~1pQ%EB0T{;O=LAOG+?@7Cij{i8G7eq0V^Tg zV6TRsd#@m|xbMkrr7i@CGTMY8pAReDeAy3a8!$Jqcx zllR_~8kj+_B|2PKUMY>tk&d;q+77azx_T)J%jc-q2CTcMJKw^CY-P|r8%7~m4}5CX zbAh2DlU8E^G{9=u7}l`~&aoC<_Nz8i01MgJ0l4MBQmiN55QF++)-DRwcB{j;sCC=F zIwUl6A3t2GY+kBt3EV&fGn?rVp;n8GVax@Fohxnww^<^E7GQtf&v;W34K`hIcAY>* zk|3+Jn^nJjZs-(Yw!t+&=&6eBelk5(V5I$+n33^%8e3`dA=jFS%hBJ z7yZ5`*qHRTQiBPP0Alc>&+nwoc4L}SPR6dQm39fE+M9!~u?Q@i*}6;f^R>EfO7!zO zWtUY~CpJEImBHtdRjvh;jklDq=O4PZO0tRNOY}Y=SB1S0@T~yNRa!k*;WOvtCd%E| zd$;r(zIGA1Z3GJgD|Vi6T$kb?`#|`mubl?8!!PxVp-*-GkuENddM<0#OWFGLKC_a0Id;9u8mu69(v0PSVkko>?P z2aJ(Q0P#BBhxO`{7Efcwmz;{)1B~FY;W*8Vh&{kH5l2&r&u>C6^1Ts(AsBh|X$sJ5E&Y7<{d%1{35QSokG4|q<@nTkP4O-j1 zF?2A4a-7XbQlx3@Wx-ksGA;`hWm8gaLSEfd(0z@F1Tvlk&$>3=82RMqmg^_UokEMi zn!lnm$YzMZF~}$B01A>x-jRh+Ew)dH_?#})&+@XM8;=H*QA;gikXtmgi4vV91mcY# zAy~Izvy0Fyp+rjI73D@9*gI-O&hp>&747)W%22RW8EJ}FdLR&|Q6fS$*75QK*uPV) zDP{q|?_Jatr@kSH1B?W)@}oi?#WA$xZJ&x}6M^*-x%^g1oZ8u%4S+%YA|7u@g2jP+ zEb!@l0!~d{^$?^!lsRXRtGSJdbn099tah9m)z>DxyNP`67475zSZ+bb%zvKL6RZgf zL#&dx_a4vf0~tTPA@*IG2B>Q=gc}J4Qof~=rbQ1?u_|@Zqg=27>chm z->b9o0pMiv9kydrpKu_#K=q@m6CPzibnlUllj-|k?2%5i7#@HPNw|%y=eX(YarYA+PX2M9MYzqo@YfGGyo=c%HNuY6ug?LjstJ?qWi z9kU4m?IdmtSjy#LJ)?8BVViX#Bn-PINgB%DRR5mtz$na~u2GexQCsA^90cglsWePk z3y@AljYLD;rv@CWNXFZkQb8JhKti#Y3igdm-bY^o6xpsCIq5immjj_0(WM&Ey?p*@} zp+mW`7eEMIqHzyJAWK2mxy67D8G6>ZWaAS?us1azjpgD(K_PU`^9k9{o*=xbWPSPy z*LQltYS(i(;W2#W%D5p(hAjPxd2+z-hwh+P-l@fA^LGl<8kG~o>aRjLAPD+BH)In8Ie;6m z2MeCAH^98V_@Q*HXH>Lq^3c~oleQ0ekH~mbfYJn)97%$*Q~?>?kd4l)t8Dndct8`{ zqR{@%m^qTlv@DuzVgn2mL6H z9xiJb(%6{@ZGNBCVi<+&KxAw?T9tP=n&`M>M*!ENskkypJdg$8>Sx>|bLj~cy08}S zC`%ZHjdq#}DkrGDtu98g@vy9D|B`?GG1b*zJJyAR(*r8apjez~PHFio6a}yw0z)@h ztj+Rni{4J$OD@gE5WJ0l+aURQ71%X>Ku#91GE!T&5Jq`djS5tTh9a8mGimUyW)!#gl~J8~4(t>fx)UwCYQXPj-w7Spc>Z0#iEQsxbxIa&NZ zG`CKM35A5L#^T~tuV#KKLQiOrx?B=z7o50W$FyUY{*pAg`XWMscde;rZ!HNK{brD4 z^ejfQTHBtN**(9H$okMdSdez$=B8kA&z0tO^Bl#;sP|eOg$W%USjd5;)h`#=+Hkuj z8-S(%5P)xblaY?%UxnY0g{jJ=eLpJtCg*0bA3xdsG2dzyG7okzNI%jJNb6+p|nrQtxg&)89D(#-lIB&tkuFedN z915PA3!L*rn6iR*JYP{*I6X@BypTe+1Cf^o+$Hhy&Gnc6{*MuafEI<27De6+Nj{WV z2!zTFf?|O}gZ!6HPy+*UBi06j7M*tMt_z^bO}xV!LAdz5C`5;V@t8+ZAt)$3qqiU^ z;4a%J1_b4%%IkW_O;DGI%L_>k$cN`BkpFEH{Wt!1O`!Zgn^5{+j=}=v|FsEZkN^Kr z-JgNp=Y4`1eSU=%{rd_#x)$=!?2&`d|4iEsGXx?9G5yOH=>Ls9sxZ25ucEI0kum@6 zm;e3+3vzSE3EV2Vd3Og{11eIu0F@^R!Prp-A8(2yx$9OFF!><2k(*Y?6}W*8(S*oD zltJq(kf#uPh&lMn0#SoNL2pJVGNIyT@B^0NuV3EYQ5uB8qHd*@nu0jaG9LEB*j zBe-?zHat=B{a`*St-u3pJiEO4E68ndAK9+VwYC<3q{)!&Trzzv^Ehi zr4|#V6m}PMw{@_Ex)@Qq+uGPU3%ZL?Uso;&J|l0lQBz(&;$kgAEskuJQcLL>rKG(R zl#+*)i^YVUgM*Tnmz9H?hnJUwnUa&8gOiON{Kw0}!7a$cE6B-5`S+p*tvQ*R393oS z{A~+-6QTY)C>RXJ3gcq6cQR+=5D*YR*1^fi0-j)T_ONp?a%Zt~runA^DX6oFlcj@; zrM(>`vPL6gdsi0`YS7a^L$GyFQuP`C!TXD#Y-&(v zdsinDD0rOapTdB4|L2DOdC=74KhHV1I@w&0)6|3wY6G=}+POG`Ddf2B5$L&~ijyUn zKqDI|dlOgWukunN)UK|Urh>dY(!5*(?7aNEk}@0|QWE04(wtKK{Ctwq;*t{F?0m?^ zkQMybg5VCTDJUx;!zm#k!O17i&LP0TAkAX)XCBfYAWMoZ%cVS8G@GoLm&9rxnwxR`M3lmIRODUIQTg^#ih8}xw)kIBxR&H zK>z=gHT^F{`)BO`uVvXlXG~25T`XN}pnthk+{WeaCmTy7rwG~@*_i{9u$V&4j9hJ8 zs6{oQ#=>k!_Or1BPhNleQ;6-qRCRs(zwqlnPl82&{P>^M2fqAg{X*@)qICkR^9lix zduCyeq?f$|B^N6@gkM5l>E<8tgY^(a2ZBmUC;JdcjT_+4^>1`QT7dJ0&VNz7Z?Eid zXX7^JM$>|ATx~%xuU9X`^gH++yRl3-v$O-_kcwP{6O??|**y-+s9I z4#7c(xPZ4~qToPo;Gm%5pj`cc`~*S|71Ry+SMsCZxr>2z8|CILaQ6oCH}Lx1;>djlXA!z70cc>oV-mT=o!zXYf!0X4}H4MHyUC@H$DNyt4^Pz4Su4nz#n zC+b}6#r~Aq2p2tGs`(KP`}?>5U;ZMUmRh}SCw5-6f_2P6aY#cqo9k|W*1~Wue%`!d zxb~$i_p*Pyaa8{b@3d{Ox9;eFLyfqu>IImvr`5O&m@hnAlk5t7d~W)VZPJ3uHYrtahx9hka^2}3lJepz|PEs`hCUeXS`C3B$lk`U92 zvZ_7(tRCG=T(*_+u*HP;VpIi(XK4FnaNT{c_~qD&fD2MmB^N8|z_MGY4s2ynk(GVy zFDqoJ7j_70O_)4cXk#atzGjD7wq#UL4e57&A96A_O-vXFb^JZ@4Iw3?hOeT2lJ1V63XQ;-F+0RiMY85;(_UMB3k&SQgYOEL;1bGoWqn5{RdvScg z?7{z&ngjsXs3Q=|L=tf-4F7b)W8>X0Y62fXF&q)N4t!j6Yq zUYiu8rtkaG9nmsgQ$pn2VK2!TR@7l{*|61*KhA5|->cK8I4c=FwANjE%y`_PydXJxn+r43U9sL3t z!;hEs7(KojLN1V5Uf|`gbH|YzMTa>1!wkKOP-45*;0iwoF+7h{c>-CNUnNL6sh=I){tm|ypshF89eehb&LoR3O%PrwHJ&4YJ}R^>81-T78)7Khb@5bo1*764 z#SA31*>U>Z^7Z5tzZsiZwZP~0sSI_YQm(a}G>eg}4Arx5;WIP2u@4CsykZ4begs#| z+AI`>Ebzh&p4#2xlL7Eb<6n3Me);HchpN7J9tjei1b%+9q4SAm%qJuNw0x?-WxGMz zs^`1)bScqly`cejmT(z$>-Q7_{rzZH+odK`kf!-0I6C)$QT~x=xa&Tt!W4nGkMm3Y z8oO=E_M=P`T&v!#kLhBx`#S4|2HyplgnE$ml$re{TGWYBn;cKge}W6QQ5VvFmw zb)6}n%e{1})Dr%QWj(c&S3vv5J=xaln?Slps2u$1Ym)fG>g=~4LPsJm>D1hn=o(lL zLLF^v3-f<>3*#r(JGFkxxWi%L3JWW1VGl5R^xjHij#lAdH$oeV-rm?K&5nw9e~Ady zei9M51od}Oa>V4xbBmK=oZne~=f5hJoh)@KlEzxMcM1EHUvVo`^NnLwNXkLtJSsQe zHpllV^CqTDFRVP>^R&2XYw_q)R!7RgjHjQBH+3h4;!o$M3`4!+7b|{bRVKRXMtTOk zOSnUWVPrZGeDo~JL4$<>p9h~ZikNo;MdL}9Dt?gDouHSzO7WsB3y3!8#$kvpG?FL;dkf75(;$N6f0sX z%VipQkx!N{266*JO86&FcwzAT8qG3q7iH?R(ND^^viPPnU|3s-!DauYSnxY@;jS{% zi}elI@L`&tgen&={z7B?sVswODVD)@_j#U3{_a_mBAJjf zwi#G_T;p3tJfT?5Mj;fc&bJikI#tmF-O4XhO@E0yy6hcSgJ31WNo*dpjvU_=xpFeTkq^>#o^NMCD1;Kgn zuR?*!-CFWK9M{_#qwDfYo9gY$HH6Kh?_hlF5cG)2a)0B9(uVY!5`Tb%t?<|{3?s`u2oWD5=!;q z7M7j8{nzDK$G0Zw+vFB&sN|#7iYi6OdG~bc4gB)Ef-smcJE|;^#&c2+ zPJEWj%dDvH;UuyeIMJ8=ypaT^fh^I1fUSZVz&@3}_*qYpDvZz5d?d6x8nJXSDlnHR15s`fQEW z#P0J@R_M?(MxG~(D3l}`G5Cn*EAhhG?(1`(TpP?ID?*1$Tl7_?+k}mEgF;#h+&})j zmlqJ`OmxI8%=gT?Y)t-3y?sOTMMhP}t@|%$rz_z#zK^O#ChQSpuC_9q%dCGMiq7?g##}JGf?DrmXo3US9`KsPSoXATWIkA@5Gn zg)4{!RtV;^#w4<~Dal(2wG~0~Tr7Fpv+&|JMZKeYukK^QWQIqEx%2M}KS-J|FT=cu zptBFX=%MJ*oqhNqxKN;eO;>6vCK`uP%KEu7NyN)2_M|Hap1175J7e3bq0qg)E%uX= zji~X#W4(oK&Jf3Ayw^#)^$Rp%h*0&2ss?`cfe#&AwocEa`h{Heh*{Ik8CLR<4rv=tem>%2m15>xk0zpjtj2c#xoePsvP1+3CiQ8jEN@he@qMLNSRnxMUC^ zd-WE6--5C0&qrF@#`gM@L`z?)2KC0gnhr!|V(53-%C>_lv(EYLB#LS$kA|=Zgcfb# zL5^#CQN2*#o*q89D32yyRBMF!-C&#%oxhjAj&_s8Jf<9cFQ_Fq={*%^)hkR zzo#a*TqVjkTEl&@X34{|sd1JB%if=yBANBr?U^C&7d)cC{Rpocb5tT%IPL9ZcyuP|A~@&s>UssSN8GP)IUDdp>c7%C~g>?*2ohYs4pDobWZ zAg|^6534xJ9dHQvBQo2MSNred2~~MZ?%f`k(G4>(ML6<#Fex&T>PZ#13A5DoPU~nZ z($x(J&Kr+E+*sCYedq+sD=V)ZVGe!iULdM!b<9H7A#(DC2{UVE^uTO>eDd@b{I!`K zyOOJtF1S9c-#fd8#5e2X7%st3gJLcYc;NW`T}D)o-HhVM#`^NOAHB^L6|TPb zh_Q3Z>hn)k;~)r8iT+JagySJJDa>3~MTCOMgk1qkr-mbQY@t*!?5BZ&u;FfbAI5Qb zuL+0I=<&%mX;hIjBb-B@zjuHlUUwQ+#C>v4Bsb-VrwY#2nxbznDnOhx@+P1JYP3$v zsqpR4AeFO3U1xU<7s44_6`!M6q?zvB%=ncKGb0Aq*~qlXjx>)4tK+Gp@KRu&`7ASw z*xlbRnx>P?JEsL+FNPmt<#9xGI1b-#b0p$`m(;&5o|a|u9LlgBaCtBv;H-A|bxwt_ zyka)mUd@lkXmnUteOsO@QP$VKi-b`j4Po?xGez*OowiGii;0UZ1|B22hw57F3JRu} z5kiraIry!;^MXlOiU)kOVL_fUm4?`mdcV3Wfn|2S?+51k^pqgIfo_wnmn*8(6Ei0K zJ2%3*UijCynv9mKQ{KcT;D?U+q-_K(z53ohC$U{yT$!e^WU z*1x$Dw%j*pSU>TumJJa-`baqXdjE;%Z?eTl%c98!`?#L{w-Qr+>OH@LtSiq=R<6a* zrat2~&#AX3FA>e<@y!y39z3G+VQy}yTm3-^qpRGQ;(!Xi+RFpc`n!iWQkq~=JD1rm zVg`0~;C+aDyjAF7>8STguv+|NP`AoorFu$h)yH`29vJlW?jg=yYC5MYng@Qk9#|VH z!^%!{Sz0Drjx~ZAQTMPm+wom95AjDz{SDuQQe0}fpf!I;F|^G;G$;E_Bx)JlAtrn| z4U5|_(A_@^=seuLIH3VT$GGd#xsSbEtE_4RuWWUKG1KRsF<$oecLcblN`(+`&38@nu*?f!Uwm zbFZsh5vhO&G?<%sm=i*BKS}zQR6rp$Aui-aP2#SkUh=p_7G4wgbG)954Q`oSG!FYM zbrslux_^O6bE4IVzn*=jeK~5=w{srYJNeE02pupG8RAe=;hZXa(Y9;WZmWS-jI-5E zB$;AO4CQxT+{wqzDABRmw%C#Lf@$AJR^B~3_LJ3@Z>}Jp-b-JOP>f^JAAFnIXMR&u z=xTl{`2*!b%tKf5JYV|?QepRS{~|f;ysYuVh@MZBn9Whxv29qNaRM#C$ z2qzAaay_vN7LFN2v_*~R4;A3{#`+m2jq;XsmOyd%9xbld#(OBn`wP;#Rd*Lph}cBD zoe7K|Ee+(;-*P4urKdfTcQ(%~-r{l2aD9SFpTo?OrJ^H{(O!jyc(ij-;a=%we1c&* z*#`BWHg=oV{n6iUT<~{*JFyJEG{jo{s(m=iD91 zmyzmB)F=lewrngD!aN(KSr$e&cyBLTzFVBaas9E5Q%jAYc%hI_CrjrV6RDlYVOdJ} zNa%r1{%E=SJwq3zNY@tuBX+d@~NGGwR z@=i|aGp-q5DIhqhR^<6M#76V7L@Rrykd8}8fEA%R7`a!18JZC{_y9{&Fqbhs#1)S{ zUP{V&CB>t_%%`>G)5)Tv^QQ&16h^M^664P$8)+Tu66 zTtA0L#E#yJ+IQjVICWkmWB7IP6#e+v^q?uBcY(&aa!K^<=C%pNyWTKVxHG!wZ|lgJ z5mDyTA+xy?&t^fmae-36)T@p4Frup)+nz3XF2dC)11Qv`2G1i7PW6FP1>#?6jTZ+)2H z2pBpkeuqlg$f8t2RjU1Lt)hB@7*wjq1)JN_kET%XV9p&LufDK^ z$udQMPuHm}VRs0b@{3kekj8}^+>5VBQJ(eOtb%*2)mV_-To%x5+YC(P6xA1$`<=@WhBkk0GxfbCcX%*x9$vjQ zO!|E$Z%SjEf<=Tnh+DcLX&@4}AHRC4}FK z)Ug&H1&OIFE6W{3w7DMHgX79rP4^zC$9&3~`SdoL^Mcp6CHYf;&Eiug>0xXw>KyFs zeWGU6J1SwuLnqSYjb9kI7P~r9dg0K;!mjQWZVDP9qS?73Zf}g*bA~pJPl~NX?oL1n^og|#V-=xs=eN1$~C{;cuQF9ykHe80AILaN_VqY zXqDZ2h%nOE{i14{Z4_vRBa9ft!r6x7*$bn~F^_18jnn6;WU~#L;C=6h_;CZq=Q8<~ zUO+OVe+oQrOa1i`mwDypMM~YN{ho~;=V8I+c*V+k|M}sXD!q%+ewlmMOl7!Ni_(PN z2roX`OY0L0ZCcN7Bb|QErzdyNwX;Q?=$H(XUw-~b!L1HZ_>4|i%4t;i+n>r0v7*>G z90nn<2CqfptGNfM%of~u{dVKqH=h=7J0sUk(k*dhv{rw z+7mfq^)$APy){p3-_>lYLC+Cm8WXo=zx(aFj_?hVxkDHXJEi8K?ADr?D`}fSa(WM? zBP`K9EYh27pPM}0Rai||&vS-?o@kJj%A^K&a)9~ek*3>Lt`9Z3H!ertuJ4dYEdpL+ z?>#scO3q|5T$%Ky6pIVeH7|=&0;9Ddm}>a> z^Kh2l2DMDu!O%vRnH2^XcNk5eA^Ei0?yW*ws=Md4g>%U$G__d}b1bRUjuzJdhkMKU zLW2t$dc%IFzB<)VJpZ{QpK86m&}DV0X-9#}BWiZchtRu%i2L9nYo{rd_ z#ENTa)|6gQ&ZAv+PFz8jta|?kZ4E_gYr~jy7>d;uWU^T4lVjzHd668v$y!x#)^JGE zg^oifU%;reQ>n~OGROnZVIsiDgb3mp{w=Ohh2J&RoqQ4`B`E*OGe?ls=?z6C(ZL)@kD4F9G_|93d$rR0U3e)wIY2(uRr)hsL+m`1MLL{# z;$wzy8IS$)<7#GUyDU;%%F3w1PhW|b@^d_cTsZt&79aNP|Jbc04y&Mr6{N^wiIDVT zo$28jZYH%FC^qo9Ip)Jgc8n2}j%PD_mWvT@>SKmbFXntkK6vMCR9XHFtw_`H!`cPx z7@Y!T_8w4ny)XA|d6ODvHU5*aq@0J4s4I_H>a*&akgD%N>YgXunWvI-@1=7^wflzF zBkLe?4L6a-W+R8==SDpbUCq0MU!*M5_6Ryvt^Hr@y$4tn%hEsGyX2gaEJ<<(i6TjI zj*>Hya~4p{Sy3<`hyfHu5k-QE2{553hyese1Tl+%0WrW=v&+h&%h7YsegEhAp6l%M z+nMRy2@b>a~7FkpX|XHt57drjmQcLm|xj4OxKxMWjv4P(lEKNcOn z#;O>E?)2j>Dk~J#=PY6|O&DzS2SJ zF>SF_}m5bberaRajUHiRXed@c!WQ4(>IU)#1~Jg zKP!&x?9|9uvaq%H;fnRW1A2||AH|D`*Ia3g5u(w%a=iF#-lk6n^3Kg4Kh;&&makiT zwfHmAMb3yk464j^S*ZVnro1ZJ-qyG3(|)RJS9d>^FFfEJ^1^Wu-IJO3SA5l9ksQ_Y zsHb$*INJIUH@L5Kdsk#u{*^3Rww-~)_AN7Oh5J9ZZ~Hp-IN|J>#aS^15l0L<->R+l zS!|WtS2uF)!>a7DhRV+heyi`+yp1$?%#|~a@~OV6?h7gG*?ppYx9ynix|MV9KI-Cq z@Xd2((L;sDBlTl)LZ`ntn|v~=P~-1stIcP-X8um~=(bN>w{Pqo(S#2FNP z3C-^MTvwNzQG7Pg(Mm9|b(fy&8P==&P9|)r+Sp~cH@?HOvYxM1a^T`CZY?VbVRxKmpQ4gp$I`fdo&1JHb>Zd>?OE@H=4=dq zZr&hAFMSDd$reZyvT^T=mrbENzCaLE9p#7aq#*1h-0MRh-|XczD$NWTwrX z(Sn{w)rsF|#*q%^y0c{l$As)(xz;}Qpjr6svo>3kUFs`e{raKP$EhN=w`;8{IlF85 zjnj-J`&94I^KG*cR*&~jy0orgYjgayLyQOI{8XtK{ogT!*tvD4m){Ku=jC6&#Udm< zPB~InryOmVM|How+?8$+*UPm2Bvaym{FwFWlT|00+`G)F`f9iJ%($emF~eId@b@B?W!qbz%(L9OkR;$|#>*mzI z5V;_LiVb=6ONOr}-sly)q9t1w-*Ye3k z^1HeoTU-&Re($-})H%x3e*Vb4fr7NB8%D!7UekQOVpa7K+UjK8i1?Q;Q<9=B!sP3U zc;@K#&C!a_%dp*2`8M(4^;bHA+m;F{HtrPQ=iMVDx+L42cMsFXQ`YV;yl;8)ACQOs z3h9mfRwtqUrwTQPzO2uEa`XA((nV!z`@VJQo@-Hb6bOzqd(G#1S!m$WvHI%3TN?Bo zCT-Lf)Gzu6o8OJt^=)Z^X(mJ=?=f!ed=c7x>tuCmC6?$JiLQPQTfQe?tz7uANh6&4BXPO zs=M=K^Y(Jj!%j+p(*93csqpqe!5#;5S02tQRb7}@f9C+Z$R2V2_nr?QbUaWSxM_YV zS+J~KBj@REZHa^K>&K`VPRF$iW+ZqTWi6{)eMN&ywbE3cEzPrMh6d$qa7>6r8sO)KT24%$obW=*>bfiIyf8{`AhAQIgVc94L6lI zX*t$%Z06u7=S*?gd2GX`sGTwg9Ppdfa3&YjLsu;v=nC_Qr8Rq#W7c}F%A!Z$-daSn z5YZq9U;DQmi%ziwflZ0ej`TZL^7r-rY~uY0n2KoQ1DPoBD|Zz;Kz@xiIM zq3f$Q-g9g$jV$ZGzQRV@HI?aLh?|FV!NFaoF4{X9=88+~yk6+t`%K{E&aK*}+;Q_d z0>Ywf!XgcyBYZaQDbC`oVzZq~{54v)^1Y+D>SW=B1n z{p84UkLYn!dt7II9{Y&n_0(vgmSE4qZ!C$O7BQtdcZB77GY>aunqBJ46{QgiF& z`o-t&-;3zI6kBbny<_)IpY<6Q2O_RE>FI717Osk?K4v+?92IXSG-At5Mqb&Yw7tI`FEmI{!n9X|!O?f$FA)3h&LwTAw|dA5wJT^uo)g7frUW=dpARy0@73 zVUUzWKM#l4Ij5D2c08!DXVW=#$zJhnV?oKOjf%5MmKsSkIk4zoIH&mLO5MyYs_~Dt z2IQ_NuUQ+fE_QlNuGxLh_G1K_iD z*FE##3j?tW2Cw?^Pn@e=^Wwv>|6E9a-~-?d!Bmuil<(_Tk1m z{*uyxhm+yt_Y(;s4iPNqw(YNMC&|9=~t#o8O8XGEMzfobFQRFGXd@`VbR*NeCZCBg6{uLoV=1bP&>jp9-3d)R5N1 zHA4TJk*k7K{YqvHQS8lV27G}7f+ zOiT&=lb00r_>aE+m&;_&U+C)%TFmYY!9Sjg4gRU9OXx7WQ_A$;u{$uS8mtOTfx1Zx zXRta$*cq%26Ltoxv!4#mV08{L{fAcPw$mN-Cxw6V5Sz#UpIX#ETKcCPV(qEFYV)Kg z{joGZ*A_OloDEU|EEg(S1q|3LfLF4 zl+91@PetuYus)Xmy|PJ6Va-IbY{t$|EI&;YOV&dp-uPemfW9m_@^BH#Rw~5gz9^r@lS2>k1WlvN9jcgix3jZ@-%-xj?&}* z!%=#8N01%OP5##4=au6&;_`^9F%2)6^N%aXQBUwQxpEx#Hsb$a<+!DRuyR}}7c5vr z+q0GaR08{HOL`Hp_*tLaVbMAt6%WSiGmW#g?{gs@-pV(CFGd#>a3}U z=$ZZZisFsSudKhS>cEXlW{>;I@M)Edj0~^CMyH&}BYUzhILMf`GH$K8V=PJKJ9m3q{Kna9th85xe(Rc5_fZgKH_{(*=5 zp-b-Dyhz$6ZQsbVgYCwh5|2Fga#izd!L2gUnoJg)H#H(PS}nIo%9huRiU+F7@~WRt zSZK-@8L7|UcKgGt{mN$yVIt^)C3~*W&77y`6Cq)e(PtJOQRXEf&+dRXdQ@1rC%!N0 zZshr~(-Chx+Y&6c<=q)?o5fe*#vyBM>*{yj&QoMf>!b6F7o9t4zR4}}mRa97({)eG zH_|^8~vt#ElIbR4Ufry}Pn5 zH8~{Y^x`p97ndDLx}BVC9GO%dudXXEb9QDp#2vHB>5!GQ&Fb;5iF|EsLwyA?k9a?i z&hk4W!^|L?K9(Njv#XJ3p18fI!V=N6hUM8t%kG$(meZyN<}0YFJ9Bdc$TL`3GVp2I zxH=e~4!H0wcZ;##LI$bAat9jwOPVw4=On#)de57Eorm*|_trMtv~+dO$3s(U&Q&^P zz1dk1pfJba-Er_cZ=;9d^E#P((mM; zf8XVmw@Yn5d{{Iz6l`eNv7WzdgP@7|#=Q40O`W+ja%L{uKPTl#?)|;tm&45GS$zJ` zC%n2fU)>cr?ks4%<8r=8U-%mAI3BAY6L-aX#f|*Na{+H|6qJ3+2Gb^E+) zSzBB`e0l58aPm`+f7<03@tZBjEhH_imfC+hlfJU7?DWIB@h>msvyx|bT@;9jSiMtV zwIQFxe8>6+D;y4Lr>Vp}vCvjby3A}EqvXyw)^j%M^LwSWt)|D1Gwfa@F!u5=>#FRL zmzxY037yn-oM%Q`tD>OzrvByK1DDO(>z7<@QU1Dhe#fk954=w_Nk+X8WDfE0+*y7& z*x!HChgZeh6eB~fJx}6^Jrls>aFK!Gmi2ZsWxs*fnLGHh5)!POoMftZJ|9eb8S_Yq zU$16#{ub`!w;}~wd8&gMMuH8Gi7B^4F${-UAEeGT5}FA+DRC{}us6tfzuM=7l$u2G z%Wot786P_Wl^ZzMFAbt;w5)Ppc%wQ}dVaL8Q9{KknAxbw_>DfN0KFn1b`Odjirt#Ys6$7z^-XgaX0Vem) zq^HhMKI(pkZ|vL1hj!~yyKkX`Jzi9_dA2)U>Jm#m4m}xyX>DujQl+E1Uw6o;7_--u z&@I?L{QTDPH(km7{h!;M278KpuPn6|6c7;b*nA_XQ9Y9P&6f3pI*I;8Ltd3Dn7np< z<6z=FwmACq!s-`KZQGJzy4&glT?>~v)H`^*_*`}D{rgWXbJbHXm9Ydf+`H4_Yj#TL zvs7@_k&&3R_ZIov=MOzCsHJ5)nz%IM{aT)(0?p&4O1V5W>zTjWSV&&uk{0!f)m|io zSFkWRd&016PQr5O=AD`>fr+7;93^>|^`)lN@3~d{EjKs(**!Z>E-JSTKJJSLMf>ff z?uM-OJ*D=vyjFLY;(?aThYP-L=i)8D@ZxQ^VoUQ8@2b_QN~WP9rp-G;-YD*I)=aPb z+(2`9*I4R+_i9^P7M5CC7JP2Nkwdb=S~o9RGSmqvoYV~#y1a_*RK0o6^IKKw=9(!- zk}jYbuk_gs9F-bA=BwX#RJ?nK`asvKSiauc7?uLRU$4|nO^+e+i(!GA*YKzrocb?J@$M}_00Y}^hB*cJAOFz(hbNC`|3 zpP`hLKBr<*Altum_^@v6Fh|XfkQpaNZ*5cjdLp%Z zP9@c2qwULRSPs5>C+3gT-(4yL+6r6h8QJ0p}#QKWmwyl-p?kj9l-V`cDkfj#bT9?hLIDEIN9N z{{GyS!nDzlRs3SyjKW|2gM58&Y*WnMUR<9sWa=?8P^Is>NKA~~U&p2W-HL5KuY;Cr z*pAov<0`fgpWVlJM!~gf0>i^6jgY%` zS^wv;Z(ry(@(0x}PkFuL)*D4#pS+aWPoF)y-uy&==im)3v0}4Pyw}su3&+M*E&rtJ z-fGi$tN6hwLG6gVBcb-40yU-kRqHCE6w2X*?m#2TpkAO3g&*Zp-_UXy6f$lI>=SC-;$fE88~!vS08K4)jNms zLcTRUE>{mu>@1UOxZIzw{=h+0L(!H~gw^jzr4LK5v?iE z|0wI($pryJMN&{Je@(O8JvZg)%fW!eNI{u7`I!&Bsw_Tq#Xc~}N&hhRn69CzvMf}x zrX@|J^j+q4_PKPt;g(~kvS^A*R8<4~W8IzI{5(6;J}QL!on7>3ZlVd5R-?Ff?5=Xb zQu-wqQZMXdUOB9jc=AE3f<5Jt88F&+^FZ|7Cc9$J;Ot{yWeLW^T+(=Py>yZdKg{afX*GtbWndhk~oY%6W zK9V-jtzx4`by<0rysoKue)FR-pG$p5zP>%r@CddNUA6S>2fI6!AzRL6&Fm69D{?`6 zwCsB7KoVb8k6OSL)>SO`KIrIh+cIU^G*?>3$6tDI>WuHEd_fVm6V2Pcu1Os^GImoq zI$m{jUbd;HFGC{Bkw#6nyZ2AnhJ>8aQ+1)C5x99Tcoj=)o?BNBRTqCD&G6dWrSgx` zucT%s*|_n(73;rMe1J7A)PB=>$HO6-1$B9I^t$q^ae5c)1}<#-{5Ac}!@A`c%xR+Z zJ5QZ>x_JEELVMBbHP@P%tt=n&hnCl*Tw$#YGP`)&d0zbBo^}2W?ymj4)v9^&8--Ne z=GTSo>+b8~@2q#bTjrYMn-=}}nz8GX_b-OLYKMykA8k`SW7n8kAK1IzV61iQ!**wd zgoO1s&o4A|uhDxq&=}4tz|Gha8ydD-PECFG{G&-M+IFG5A!`m_&CdQ*9hvd$>F~ff zZSJ^#BW-0PTjy=Hf*T+Fs|tk<*DAa`S(BbzmvYNY;_a==&ZX}YbRNHR;kZ|O=fr~Q z(;?^dz4L7rFqyb8S>9u_*j6Z1o6vuuq2c6*SLvxLhn0O!=N7S!I@4Woc(V10Mfwwq z2d9&BT6Mbb_FvyAsCCsXy1U$~Og(g|wA~Zcv@ahymP(t%Nqqh?ay|6s>(r;~TSrH@ zy7pdO&+Hsjd||k=XjCLBOy)_}mJ-SPx9zXfvPu?4o#S!eGVta4_JTVvH+Bhbo-cK{ zriy#P%EsQ@3&Z#FE0>FwucT*hNUUG_>B!K7Q_?g?p3bQ~Ht1_+_SR&TZhW~|*w?gA zRfpETe4ukxIE?aW%g=m?2Q$N(M$@}+r?h}9W;Z^4r&fHmrFXxr)tV_9(u~D?= z)U)M#_ih^BVdJ>@@hypwSbIJpA(bdTy+BvLGtZOgEDj%`qo&@-S07@X_(AS%?S|;# znQF^D_J+&~jGKEWB67^0amA8ibFPn)r(%Scx;$6catS$iwXD6M+OuJcn3JdC{@e8$ znulGQTaps})*MZ8@1|bYd(k)gTR~J(>F4A!pX0_~B2J|r`dEEauwD0S>s`+DO@}uo z7$$vG+1!0{9jouP(D|ggehn{;JWA+(1a1^Um*ns zLw|+oXv~GM(>?pYa6bs?CDG+2yC%8)cs}_XetrxS21CmhfFIre7w@sH1F>|g0r)_c z7vR1X&;x)?`e5rAm=^#L1*iZF0S*9vKpY?&kOP=597b0Lbf^R5{Tv_)e*Y6X|Lftj zL3ZwdPXO%Y1|Pr;um}LJfsmgCjyl?cfjS0|2uK2eGcts%8XCvLnVB8C#|~Q9^CuSe z^C9l8k~zpw3W=lH^h->vM3J?HD6+SrLJn52upOMe>6iGzWdJ<# zM|c8#f5a>#kJtpRQKXMe^I!)qrqIVpV)Qk!D1?3_??Z|~2*Dm9gcv*_1~qh9{0+qz zu$hMJh-zvKcoAX>1b!q>xS2tI#K2SRa6{pS@5WESnVGQnACwnbW|)W^fC7O+2>70wd!h*Y{(T0v zADG5HT7;t^T`*Ebp#aPokC=e242l$eKVA=K^qnppftD!j{uGW93Gw3*Gl2^SG-i)O z!@w=^9&=?!VLZ;$DZ3u5ZMS&hC4x~-c zK1@!u1WCpcxJv*kEQkYmqDS~1_6uULwG=y0qXQ+xsL>I~XrP%uMI5I=#ue>%?GAxF z!l-agp#l~Yx%v-}tKu{fGl)k@K?mZ-%0xPfgH$9yK4Ik|62da0xpFvTITRO$ecs^$ zQXN9ZI2SUhvLGXnX)uHefjmeA*&0K5Y}z>%UIUJ8L#Cu4Lv?*5wFs1`i?} z@_{RAf`n}dRGn}(WK`*3&#q+9m@uGpAeFrnGA2qzU|Kqp9FgRc4Dt#5&J|I{$A44CF~AKb z-2~t#2xDd2zkWNjyAUa0HIK|eO6GCG8 zqXl+G82tzH7N9H(LwHGo1RsOV#w<$Sq66?x3;7-hF$6%mh#bifd=24b$b8WgbT1I3 z9YV+(tXz=j;qX7w!?X)4Kg6Bti1aw{Khh(`iscW{?h<{9{p2$iI3&fKLKd?s#h9ZB zwJPS#0i6KLVvGk13NL^#C?qQxdT)Z^iop*r9Cmg1w>!TSX1FiWh1G ztYkUjp=N;cPppYqzuT(GnphO}{R;z`VkO{rYG6A=696S150)A1Dn{1O^@@T$Hj$VTSEdz`H=DiJd|D*8H8;^iPd1n z1kJ;82Fn{!&@xgDf=AL|r4-+rANMi0Jyg!q<9I&8BThF634WZ$kR=ko;TVB zt)VS=Z^#ol0zGz+IaZ&Fg1y8nThK%~!D=8`r0_it9IO}!`QQsR8P?Xq@`Kpk;+SYD zaZnTUXD=atWGASzQKU}JDO^wFGkF{s{TK@lXvc9-yAz~v9PbYKj-O~D{haS=kcP>8 z|Gkz`5@IxhZO5PlF!Lj1ZrzFE@Jx_1_CN_X9fBO1Y~vxs3-X|m#Bm05!`@?DB|SLq z5(KS021NuKfHlFaE#RXYLMx9Eghd6}h&Azq2nmS`)AZYnu;d^q#0C0+hcgS90%EK* z-($sEl6a^Q5K=Ii?Q&Dq+J*S5!V(3LT z+j;DhR%~BBXi^|Alh~Lf*v8Qh+eI?bM+r6)JhJ(^U84%S>4?SGW&Mg)g_VZ%vtBH{ zvhm8k%nMiZC3%}VDob6zjM%if7#|enjZ(O;K2oIDmvD9_U3KG*!cwb>VPkp8SAym~ z`yXl9-!FGtvqXSzPQZS)9q&({J0qjDD%*0+PN)4DPvb&uD)l$!B+SeyY5S~=zdk!f zD*IbD>y2c`2Yj#AY}W2;GHLIpsyQa?u0PN}x|3)Bc8d-(t>V63! zQHjb**#GiPEfI|>%&Xq6IJ@jtmSbBZ->ekn{W&Je#aZaF%;GR{!7f4AC;SR6V;%kS zlD8v=^v8~_8-1MjOq6$L8Es>)iNW=-$FP#?;-yV1N=j$Zd!@y#EY9ev_B-Qnt9Z^0 zRl)rhH7Z*<*;e1TKjU=NIQUi*dz+PMmqwuE;?m9We(f`N6!G_H+T8xY>(s90e{|Eq zrtuSvuo$C#{o)FRepBigtvs9XCxLqpD)%{`%{drSc1NVO`sC=nZ;+Iq6B?PmjdvL& za4kRxkQ4@+e=3vx+XlqImw5@8hA=nVGB%2`8$Qn3o0@Z9E2vJ!G_dme(YlYwq)@=< z%AU5}UG4pS%d~Dj;=Ws8&Ela@NXN1^MS z*CWfTiH=zkcXL*hS3eZJS1o^6?5)B>-&2wi`s>W+KfgU9+iUttUWyT~O__O>hbFQI zVLYQm5VM68m{-Nve(hl&+oj2Uo~0!3TFi!rN2!q;r;aM)+q zW|<|}*_VxLJRPu#rz3h*fY%b?ZZyt(#R4z}qkSnC#F|@qutnB9Q>J1~0>ejZq z&I?@XpC#TN-?c8!s(t&m61GNn->0&c{xQv_>v_(sjgw{nMF0G9RQM@3FQ2ulwsZ1& z_^x&fY&vA$>X7?hGoe?Xwqnheg%?5t_gHd;uBfM_OWu&SSXA2DI2V=j5y5hKFPbbW{|J%x zS07HFU1-#Tj=f!Wz-^n_4YS4N-A&=!3_r#frPSU#GTS?I&DgcV=5o8z+fgBv?)zwi zX9^~Ms_u*kO1xh$m~%<%+2Dqo3u^0L_OM*-o&Rj`n|%4*mFu+jtiJWcpS4`L^KIxI zrmH(nys`QuaG^bdKXc{MFqwVUC-~mYQ(Rlk_o#0l8)6A|zeRm0-0E`2Dw%=aG)b9z z%!9i1`}y^rTt6jtgUQmb)us9@n=>=NYVpX+(UFQG1Jf&PMZyN3UVM7o*hgpJX?(LR zx^Q{FtMd78uUoFnEH)@w^ltdpjJs(bm&ZRhN}vDwHGMXFTd35{b;`THetg}uu43-D zZ*}H8gSJb|Lq6qPp0}^y3H_UQeBA18@w22Q;?MCk(%&9ldqXl$yMCuN&9|bpLho&p4FmW;{jY}V#OG4q5}NBHcxSuKsZ+Y-NK=P$z^v zl}v?g$um7 zxZFCkL`PYo_LGrTL%in-;Z{kxAcGt__I-SB;$3MT^~bDyo;pZn$9wt<>#U7+_7$|X z;m=oVFtO{abMTxyV|SA4{4!a=pg=1Y?&MOpD;lG94L4+5Vy-{#Wz@>MHp9>0XwH{t z#rp-vGFdx{>P3< zY0Reg6gxI7S2#L5Qv0>P89qAoRq+GG%S+?QUJEdF^mk`)Dfe^CdB^FXm%mX#R$AJ+)v+sb_Vxmi;rPyv zm*ebKUeTthuzqMB$lDN-Td|zwi*xS%;L+xSa&J{FhL>?40^ZCmJ?2d3BzBi~+h!IP z^{p$AwT86(cmh}RLPtgym*Nwa$17>;2P-UbDM>!omxFo_SDvtz=uG)ITYi7$zSVs5 z>Ny0Cuj#nbvq-pXkGR@C~S$CH{x6#3Zh%H-j%k=mc4`ggJDt6G)>Ca4* z^Ef`zDfFpSZ)QRBo;Rbw}q$MUB~MAA{F6v}zk%<-4+@CAeSNBQuFj=q$}6W+@v>E}Ow!R{qcT(n+z2 zjw+g;Na|CDn(OC^ndMf_?izR^2-UXq4|N-{HA1MQ$*Sjx)`=}+g9`WZk)^5hv9Y&L zvu~DqxVp9c4%PA}vsp9^BpqMBVL7Tmue2)QTz+`n_FYX}L2BKqVPyjJx-YiI@2rnL z`Ff+F6R+Kx`+C90{FiQw)q2Ady4hOBR!Y)IMoD!?0;{xDZeiVBqk^}I2_wj+||WQQ5)O7JRl}GASyN{L|;5TBoVg% zW?`HYpc@pGU>guOu~&V-_f6yzgP`#kkf;%Rn-@dN>UXUO-h5S;7GU%3{}J2)G#-=3XX)UfS@4gs(_D)3z7>w zC%Sz1qfT;BC;8DJxoD7FW|LfIlUy`OF0f&HSX6jSB%}yCiHk0Xjj|v*kgmj)=VH?9 za3Cy5$_nCyvO7+gEeHeqpuj{x?m*vf64-bfhKpptrov#|v*my{0Cia5bQT*z{eVR< zLZ!ul&@F&8i~*g7z;C1w8h~zi0Ce^eG!YVjf#8q22z`O+GR+1ERT#qCC}V_5=OJ{{ z6x0Jc`yZVVD)d0;7y#?RV|{t7uc!e45-^5{5VqbKkU~HT=>hZsKn_O15sW$@7%zeT zA^;l?j0eE7#3%!h1y~Ho1}p_E2do5OX$k^l1KI%BAYB)rdG0ELP_8UO`M|^~U}7hr z0nh;u0)|uo8vus^QLyCTYQSP(a0{Rw@B}~$%nAV(0k#7=0p9@pkN{;sIAAT{D_|BR z$QO_Z*a>I?JOt1}B6k1|13Cfk0Gc2}4?r?tC!i5nZ?jTm)M|5y-*F0u0aqAe-Pl6oN54Z0s1uTmTjT zO8{gWvIf`yYytKFP&ecVZ~{03TmY^BH^6)VM2kECo&axv55O1T2k-|300IF)fMCD^ zKqw##5Dtg{V57KEfM`GrAQlh@z(y?-0ZD*lKnfrgkOoKxWC9iemH?IkRsbH-BJ=_9 z5x`3aW5WPLfHA-XUd<34S)_H4bTU80K5R+0AIi& zKrWyHa2!wxr~=#pd<1YpVdMeu0{8&hfB--iARDj*unbTPC z*UAVth-n%&Q&1Alw6qU~3_L1wBOjT~e}DOld9}qjva2JmT{xFu8_E3&?f>@VHZ8{m z&HVHGhlZU+#!-L<(eL^uEH=;(Br?PfXQDkFN3csDEW3@^;Zq#^panb-Mf8Ihb2tFT zB^#m|RDnxu(xeQ*ona6o@Z*6;jD&Dl7#i#$MsO`8m3@LBs2dWdCK8kZ_unQ6VK9Oi zBT2v&7On{Hafrys9(dTu2X;UX>?_zg5+gGp9K8MnTTEID@&fJxZZ#%+bRPaiQ8BCq ziCK(I1h*V2?6jG1y@haHMz{vQc=!?0L|iqpf$nX`_;@4XAJR7n5fR0OIKE$FTw*1h zv@#_hc*2852LU&d;Jz49!w>tq0j_a6P&=H50cH*~4leY_0AgnUzE&lH4^SjFg5ZBl zFO2t2i4}^&_gFD`W3h5UtY9V(wGkE}X${P&bXS50dwwW`vQW;|z}pnM)62eM22u7F z@{_XXhIs$q$sXf%Dz{T*&-GuGJ$ZV6jFnvW{6EPaD}j_{uLp%=J?L<;G}IlS$3N0F z1{cnW0!CQllohL^mb1oslc3q4iQWKq;@ER6_o%|n8n0$h;-yg zLW_Y5tZO#rf|VQ6fjvnTAUzo$7lj8bP~%OvMEvy6RR1EJ+Fv|V|BGiDfAMVgUp&)< zaeRBI`%NJwHqaihgSLPMv>zzBQu3<~?Kv!^7EqT*LP&M^sRFbKXPv)@Sqr`=`7vfy z3T|o?c+rHG&d(gqhFB@N>QHc11ulQ~s|u~BpIy}`%0mrWw3Pf(icOs&zwlm^0tHo& z;?HzdDe|BSE$W~BV%rq_?5aUA#TwK2CFUw+-PT4HU`HFE+{HmDiWP)XBn53vD67^= z2-T<%kq`CH322BGK*N8J77<_I{B;8Q+R(ltg9@~vF?@nH^N%HP4fE>UMKnb80a2?PFxCF9m z0dRm0@d0!I^8i(V^8gu;sWKn}^eF-0sSol81OY+;{-)5s0GOJCUIJ_ZJ^(*J5+D_@ z9Iz6w4X^`n1hCi=@)YpN3i`T$uK=urgadE@0sz5)5I{H}0UIC$iL_nQA^g{s+fNOwez#~8pU=T12pmG46 z2XFv50o(u{zzhH%KmZ^J5C(_mPBg8eWX13elZ zgw6t7d7w*0dftn5l{|@hMYJE zuu}#*0B8V+tAHH<>;_=O-~d2U4eS{}3V_)%Wpx6DVUT**K$v7K)+2iBJesNic6s2b^4)q-8Zr?jV=^2;KU7qP^ zJ`ds+?aX`rj#9Ylc@1JuZ-yaC&-VM(%v!o(ksPIGS2)I{eV?;BQhLT>U8VfwJZBN5 zX92;Ys#_`^SWtTA5tcuv(9`85rDxfq!5-cfHJ>Rxqj#_MEUa(tp!BRM#Mo!~tP(X! z&kU^GeC57zGEsWQptU`CI(g0xu!yoyEgYj1&dYCS`gCb`5Xj5y_aX$MPLx*f*X2aJIL?!N+kp6f1*Pg<+mnLqWx%+QI3F@Dqsap&=64 zLqjA&3q)w)3p?5$3B?jx#nW>WM^7XaM^7X~1B7UPBvLvpH^d|vG7*UwGW|M9Ianfz z2T3l(B(bv+iLkT&UXmyfB68EiP9)UB{_7-7OXL_Ak;pNwe~_eXULuif-hY@R2YwbYndsIGFe_#S6n>M0hU4TDW02T3@*TA!*;$j!Y_3NiBF0shbQDG!}m(x-Gkbu8q)7mF&TKhk>X{8f3t@Jl+8kv$!O;YNFO-ubJ zHqCs(rkVd!n>K@kDBu|!KjaO$fPXGGQ!Q=7JG!lteIdp3=f zB%)0tR;C1-)`|z+{i#y@Zqq2}E|CPWDkYHELjxqHR;kn2w5ePWD^UW8IC>!QQ)NoY zrcEV5tU?JS44Ht$PgUvngiz2}VnT=&D1ih!E0CC4k^WXfh*c+nL=QWV_^As0bwY?0 zCxOHqt%MLOOaci9ejxEv#rZuUWO_lW>$v`+x-_xk zgs<(1Z8mH|1A&`~)*4yPkVp}8=1;Xb*$VknZDO+c`&|Jt0 zNSDN*(<<5bx`pJQ>`Y|(FMFB4W_sGb<*%8ZwnzD$>1;A?CoYLh|E2PLXPQEAqPV8* zJ(8G)k6gY-O;TG%LMBZete9+U;=#WXp{GZkGhNuJ`avERHxU-UWxBAKa@dR$TT(XT zVbQelPSpB`NG>9fy_^#R%>We?M*Uv*Gq{2tE($g9nasmIU z(>GPK{=;0Fs$%vq%=p*CjTEw*n51b<5rrguH%XIqDI1|>PPx-ZTpi^5XzF*>o0bga zj^8w7@JlC6)pv>nZiuFe(AD_f`LlsFcD@^`?CC;M?(^Z{Eysjuoi-%pt{xuVju1mm z&n?kN5xD){!^61!Zlb1*lXAxn*5LUiw?ysvu|J2sVfhueMDsMY8;5aA$vBa6<-gE- zBa!+C0|Zk^5ZgLabp#vx|32DIs)=Wim7J+0C@TwDdH$~O(~_X9HKfu!O}~077etdZ zRek?8?Hp8u%Wq%25R|6mMiDvAGX6`R@u_&ZH3 zGCd^``P0Pu)5MyrV<`5D#rvap6QjIS$0NuZI^+fN=T`_* z%hJ?=2~tyM`VT%R6v{uH%Kz49ITVEZr>gy9@qX9hO?^4|=d&EF{ZH&Z{P`?rQWpP( z&vO1w_u-FC`%{@>Z}t9+&=Q9u2xGgH2i^XR&=N#MkkDU^&|WYd`NaSnMKd!mK%6F;QSF{XVZO-^Lueao~&{!VM30uiEY zrfcp0?Iiu3S4b4NA$A%5&MPDeM2Jb6?iJGCPSS50C~n{co1j3>5H{(8{2rU!Kz@&X z@K1h^P3|DS$0ia?-diASq6YarHtAvV9wBVf1^GQTd4v2On?yjmXFy{Jn}|WW$IjT~ z1oC@q0tERzHtB)<9-BNd0$`Tc+I>v!db`Fk2A68ozhyM{6ocB4*_W`gE2z^lPjP&Jt8 zh8Q!ip-wLw>=KTLnXkX!k^6c$=N7(KJ&sWB$la47$MB@kFwHpY5Osz8 zx-={Xa$gTT+o{`d4+z$P-2HJF3k@azauSzmGQBnvW&pv&UzP&eWzj-1KT$Qyq08q> zhl+P$}6T<@&ET?iV8^+5?E0! zOH*!cB0H=4mI$IRj1DC!U_1>kFoTJXQ{(Ppxy?b6CQMLgn88)+l?D@Qr~0}oo6bF% zDqqQG+?ZT2U$FQS^>W?^kSD}DUH>z@l;U5`e{u#T?yL=GV@)D+@#|8L??X;TUU!=vc{f~OYkDKh&Wb$hzB$K zQ*lyU}{#=+;NKa1MEZ=&8CnC&4= zk~%CH0OgRRGvx6wnDk1MauB8pL&>1z%SqWsh7vby20k*B^th45QkJBXFp*eNL5@ zww9|$iBhT(Z67F;_yv2%o1`+SiDPq;RVKOF<2j&0rWdIZs+4%RDm$o7$^G7Z2@Oi| z`$qX`VD^QWt51C^Df)8Kd_J3!j^}yK(xj9p`=V{MDaFQ+c1xR*e^wPC9ZFo^b=XAF zJ<1ZNH>q#4oQq&-jfn$RWx}KV3k&B=mIsV7qs0<}og~l4Tgff@lRCVQ_k;eV9$|V< zvgG7pK6}s`P)fl|J39kX-jn;c7Iiitv4*V}g-3g+dksiAPVUo|XS?BKPHYclG@>Ly zti+IPK6&Ud+2ux)DduAxFrt)SpVBIgNvVP*45$n6Yf5>yAjQ#!Qrb8qX>BQS%^d7#OQHh{ zuEZ~}Bi)g6ktp%rj#6qc`A~At(*J5dSr$0CtQ{!D-Jz-DNGZ0>S&fdA${?)<&WV!$ z#lg>=CTr9RS8ZpKgkjlF#sFtZ@))u`=YrKv#1bKr+37M_{*3&MTq)%RX7floOD>%- zkx*As?L_Ww&6!5gJyMm`jihJf{^{K{+$iz-&i1kgDShPrH__kppd=6Z=yFd=b&58} zOHWFU?SyEmk|FG~wY?Bv>DnffWK6y>rC;?7(Z>&{9l%}nZl{Y26`f>Vx zq%h>^a55|QBT1j!J=4kDpAuiPtR4Q8pv0xE#)d?aG{{3AoxLG(QnxF_Qj;n9%AYTrLaE#~%r;Az zTC=X>c21$BWAf@dQz%J1Da0&|RMN=#!nh#i7rA?Z?Ta)@9NKt#rIYBxk}TZy3ny*d z{4|>kN^xuzvdtj1Nni;We#OkmJlm%|H7RM~@Z&mOIiTsc?G4%)p2^gcuR4IwSgM#E3Mb8Bx9@Y;GyejJ9#Hpl|^e zq%fNWiE6VT1`SrirfDLI>yy%URkJXaJ2ED}Y+ZsO?TVhPkKC5d{~B+)x#Db!>qh3+RyBZUlUbTUE) zt?-jYjp4G0$4d_F7n4U@Y~+zzkUaW^Q$RyO3TQN50lkDJyZb~Gk#~?HQZiCP2Tha^ zlfM#bHB&|b(aLD1qY7bDvsX##h$=$^`7Y8xn>@5&;S(JsDXxQN%IFZb!hB+-gN#{q zQBj;OdM2QUZfMUz9FF?vTl`#fZGi#e)iXvF%qHmB95cj0ZH~H>%+aNE3v^u05()TN zqGQQcumGDi>I<}K;!ZeXpA=!C96dts+edbArymF z3&x`yy?B&Qoq+0QBqDj8L{zVvi1K_B(X4<(WUZHk`ZKX0Q{W<`W&4@~_8F555qxs3r=zQ1>^gi(h5@NcEc#>|S zPWl#9JVe(WyHQ+9H)5fAjG|KdQKZ;2#FX$HN#b9i6+$nO8_O#s?C}cOP`xH> z&K9Qo1{rg|MTwq6C?IYKu`L`zLXN|zfc+iPka&kSg}+0CvhPtt*hlm&WCV$$Q6!}E z1s!$zf^aO~P;vA(Bw;j$vNFcd3a@d31>|%fF8+tzfGI@dhIk>u1NehS*ebWsr)5Wm zgtI&LXdGK07iMI*!s_dhfLK^%J%->q(Zk0)P58pj*h-rdD`k^iW8-4xBG}A4Jf4<{ zhMERXMLjNudW_Q01qK2I2#ZAohYPIzj_qTL?Qv@d=Tta5LA=;L)G_dUHqe22DKt1d zj*b>jGcm|USfG;-9{#ei3ujmd9@|Y7+vgM3rBous&O}R%#|}d5CKO^fBJ5;}?S2aD zun{??rU8y=sUQp<^^8+v(jgwZCpb0%&ajxU-BSbLkrpv7HX1AjQ?HONN^J@)cP7hqXE!Z8l(b7Kd#D|OgJ4uT#4r`e342MpAB z8hX$Jkm{FjS0XqGeqmKQ&>-xvg&Y)xe=My*gz#Wn#?{9~5$gisP#D@G(qW=ypaVL@ z+?k$^ImDj?RET@y66sW_)T%V9RH#5Vfl^LO5;jC2@IszrlR1rXhwc9x27bh$v7t)8 znhy=O0{g^oG;f?eaX>cLNE!njP5}zcJ0@5ab{_T$Lk7aYx^?WE;XKt9bHR>yPBciK z^+eY{|Gy`JJv8)mRsUam_W|ET{l;-TfFNQiWvZwcDvAo}E*-XobW&NhDHIijG)ZZ+ zNlKCm6_F*1iVE(5doNtL7dTLH4-^#@x8g#@fr|L~UYb%`kO2N)>i?C4cYnFd-S6(6 zyIk(Mkuxne&77%Um2KXv;efyFOcPo|RYT0M*^{)KI<5+BDYsnf&@y%3ZSBS`rZ)X} z{V{u{oY0)UHQE7U^)Q~&(YnUIywkFYV?)l$)!68~lZ2Zqb!L?&+{Y?jZ`>IE#P#Ee zDxqglyV>4qtDxsO>zS^4j=Z)QdS0=fd96>+rYBx&3vDxo2tB1cn^OqorXspk@Q#(Q zlv3ljJoO`-1=P8zu9icZ8A4By_2@Jm;|>^O_ZXjjW5Qef8ArQL5{FLr>N&@H=B=J< z8bjD(xN9+n_hb0pilN3BrYnYDc#dKIV~l^D`5TKah(lL&LwEcen?Lw2?ZCHQ%ccz- zR?oTO`}L!0;%-^c(KMj{-TFak(?z@yN2&McLPO4nPPi|DR-o6RFVA&g(`4#M&-yOj zhf-_CL6rQ!s%a>t)|(1SMP~wKXUba2Sjs7sI)5~SQsbOU*`3n(KBCmR-iK0KyaK!5 z?{@jkC4RfpWiIe}JoR3;!ye>mPXV*d<>$#y+4N@guW^+Z*(%J|vQmA+sg6BSP+|-i z?%!PDvU}*6>`sqcyAMV;&40?E)TTN|xE+39z*ikKkE*VA zJ6z^UpWjJ8LtyH-WH68T4ZZI3rgM+-SK1ie7oBm>a?jJD*Nxp3U&T(Pw(2Uiy;m7+ zq7jHjAR2*a1fmg$Mj#r2Xau4Wh(;h9foKGx5!hA)wwC`ZuW!5Jg%t}E_KrLELh}EC z>lcx3n%cMMrkq`Qy>e;_8dC>8c^PoE+7D88nTnpv?w?eu7VkozN7`^Z$ zbS&U`sO}BWG=+2i9=xt}d!6QTH>thZ)({A~JS6kVhjpA&rH%`z)G@hGo*dhBoGN_0 zs%6=SiP3xd9~8Lh6-{hRZm}@d8;zq&P$_RvEC0!sNu+QkR_1KGkFs^>ZN}P zoOjUi?s|^iSvcQvJV(S5IR576Xn!L8+9_SU8be=xhIaFwg`;IUYNvA#wLD`lblfd8 z9!<9zO-qWYXJff(Ue!H3P2qkueLAkQwPzM8F3sy3*w{|7**r#CUq*}i4&2H5cmU33 z(`Vkv`gp+3X7%v^A)}pQhvqk}MSc2=D4uF|WO<}E4i{d&T6Q~AUrLMmbZl^E>Pv1> zpFT%BQ=dLN(Iy&!Xau4Wh(;h9foKGx5r{@08iD`k2q>2d?>Ccf8abQNSe?Ju{<+TE z>s-C^WaX&J$(08v$0zeOa(bPYR_?BRL%&X-{9QS|&Z+MOzl+7>3~(fsx>lf-Y<{9gcF?PyyWwI|h{)3;o)` zkvIzDpkGrs2IDaSc2vOuCtRq;MAX2IV{sg6;ei)E)L|0*2q1`h9FNJEf(D#`sW=hS za1y3t24-RwX5(bc!6`Tub8#9@#~GN1GjSHq#(XTmIXD;R;e1?x3vm%H#wEBE3vn4P z#}&8|SK(@0gKKdeuE!0y5jWvx+=5$i8y4Yq+<`lB7w*Pl+=F{@AMVEkcn}ZaVLXCI z@fen1DIUiYcoI)x8J@;7coxg?9G=Guco8q*WxRq{@fu#o3cP_gu@Z0LZM=h3co*;C zeXPa@_z)lAV|;>7@fkkH7g&QY@fE(tH~1E7@g2U$4_JpE@e_W=FIbOX@f&`}2K<4I z(7`8NNZA(cz;9HT+M@$@g>l^uWhd;87<5J~x*!f+(GA_v13l3TdtguOh2Gd3I!?GR z`d~kp(HHU9AG#Li033+^&~-uw;}8tMKvc(lH1b$V3*haVT=28#QzT z$6ySB75OMYA&O9p66pG*QtI1lIJ0$hlTa4{~yrC5l|a5=8PmADF5 z;~HFx>u^18z>T;GH{%xEircUVx8n}niMwz&7ULe=i~Ddt9>9Zm2oK{CJc`G#1WWNa zp1_lM3d`^`p24$Nj_2?^UcifZ2`}Rnyo%TGI#%Efyor@~3vc5ctiro^5AS0&KEQ|g z2p{7Ue2UNTIljOee2K5{HNL^OSc~uQJ$}GC{D`0MGk(E({EFZ3J2v1C;Q~>8@$1sR zwrGc4&>kJID>`B~bi(e4L1)CG3*yif-OwF9&=b9|2lm8X=#9Ox5B5bL><2UYA|Csr z9}d8Q=#PVNFb=^041@&ZIHhG7_v5g3V4D8u0>hYb}NjWMXiSR8>PaTLbkXdHv_m;gJf;D8e@RAVA);Ks2y z4z=*W3m@t*34R0+gkqteV4936Xut`WiW8ytPokWT8JLM#n2nR6_cv_CJl;POXEpYx zei!iioW^!qqs@OT0=oZ2_b-^)^Yv2tjXg%~97NXiVviv_%k3DXgEkm6ON_t9u5{=X zf6G=}JxkZP&Zn0d?L(alO}gsa-qg?bzUai>OL+V$BN=`p+rOKfp+1w@Yqy)K*td2? zGH9!QVohyLRHtk1jiyx(Tj-F&{MXJ2y-`W@{p|S{Qaads*ZoOa4v{v!ng7o8tZ-@q zA|3AQ4O&_n&Ss2N_dsdcmooNhW17?@bRN+A7nL5g1M#odDiRl}w0)~N-@fU|Wc<5O zRVezA&HuD!;~zohbhu;baTTO^=gjmXT8|A$QGfKB)0Jg*|wUzY}d8TfH0V5FUTH zY~EWbbL=v*%H~}oe;xk(?ZzOQj!1`G-PmIp(e{za>O8a7Hr<`KJxwn@e;RMNiDX!< zFNf(vOH;{Fg!hT|N}|7v_%CHU_$poVIkGUCtge8_FJ&`kBh%kX{F}zVd#K7*f5UO# z((?bi;vd6U6@ykI-$DniE6PdL{1fqyWxS&s9Md|W?OW}oOP^ZV*t{-E0xFi-K+dIP!fHNjwA zc4A_{QRDL10|}n+txO3HpC{30+|HDkl9V(k(b2q)Kzv?KS$$QlJ5W<-54!SFl9JOb zNg0;pjEbbBY~z1UV)GtytW|-a-|h$|<}o#%I=i>Q>U8>DfxxB?Wi>vpYg22neafbm zB9Gl&OKaj5W+ji+@h_X4!OX0g5CphWEH^$mAt~PM@;ZD@w|8Q0{OF2eOJ=+|5VU)p z_F5((H{R=uADq{@Q;su`?X(B&fuPUtD&^WUGacNNrG>fiQ`6I}#YtJo`Igjz467wA zxhU0=pO%qfDNZRav|3YA3n-?=hvJ;=Y#nNrgqP{6)(vODK!VRdu`%9-K1aRBuMSrEBjlj zB1la$!y2;X`EA+tf3yA-r4$xgi_^0#`30F-mb8M*G)vZ?q;yMudTMG?{-DgX^t7yh ze*N2#<@I;3if#DTYR9tDrn+VBYGz?=x_?tQZkn?)ENt;o&Ee0Xac*pcP4Cgk_(s(0 Vgz)h literal 0 HcmV?d00001 diff --git a/guest-agent/guest-scale-agent-2.0/docs/TiS-Guest-Resource-Scaling.pdf b/guest-agent/guest-scale-agent-2.0/docs/TiS-Guest-Resource-Scaling.pdf new file mode 100644 index 0000000000000000000000000000000000000000..70092031547f1430ea581e5e07d37dc802880b7a GIT binary patch literal 1062943 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

J?#(VhDDf# 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%0DgSAD!Ma?UY@WFovyMsFn8? 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

tFhGo_Zfv6!~@-?_%eRd!|&Kip$e= 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�e=>-N3w-j=o5&VL%}FdWmOEr(Vdu?2K;7yI@)! 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%0AQmfM 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

0|9@`A%P;Vv}4@&(%PpC^G%9Z7O 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
cLFOu`{GN{B?d^)ZXNtxO`gW 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 & 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%0DhPPjQ^e&PQEUU9K@+kyBZ(K=IInHxT|UN~X# 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

gCZ^!# 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 z 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

sxoA~98 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 Ie^vhf0Sh{urT_o{ literal 0 HcmV?d00001 diff --git a/guest-agent/guest-scale-agent-2.0/guest_scale_agent.c b/guest-agent/guest-scale-agent-2.0/guest_scale_agent.c new file mode 100644 index 00000000..5c2ceb2a --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/guest_scale_agent.c @@ -0,0 +1,515 @@ +/** +* Copyright (c) <2013-2016>, Wind River Systems, Inc. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1) Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* +* 2) Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation and/or +* other materials provided with the distribution. +* +* 3) Neither the name of Wind River Systems nor the names of its contributors may be +* used to endorse or promote products derived from this software without specific +* prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "misc.h" + +gh_info_t *info; + +/* Scaling Request/Response message is encoded in JSON format. + The message sent out to UNIX socket is a null-terminated JSON format string + without embedded newlines. + + Format: + {key:value,key:value,..., key:value} + + Key/value pairs for Scaling Request: + "version": - version of the interface + "timeout_ms": - timeout for app_scale_helper scripts + "resource": “cpu” - indicate the resouce to scale. + Only cpu is currently supported. + "direction“: "up” or “down” + "online_cpu": - vcpu number to online when scale up + "online_cpus": - array of current online cpus + when request was sent. + example: [0,1,2,3,4,5] + + Key/value pairs for Scaling Response: + "version": + "resource": “cpu” + "direction“: "up” or “down” + "online_cpu": - vcpu number to online when scale up + "offline_cpu": - actual offlined vcpu number + "online_cpus": - array of current online cpus + when response was sent. + "result": "success" or "fail" + "err_msg": - error message if result is fail + +*/ + +#define CPU_SCRIPT "/usr/sbin/app_scale_helper" + +// generic function to call out to helper script +// need to add support for timeout in here in case script hangs +int call_helper_script(char *cmd, int timeout_ms) +{ + FILE *fp; + int rc; + + fp = popen(cmd, "w"); + if (fp) { + rc = pclose(fp); + if (rc == -1) { + ERR_LOG("pclose failed: %m"); + return -1; + } else { + if (WIFEXITED(rc)) { + rc = WEXITSTATUS(rc); + if (rc == 127) { + ERR_LOG("problem with shell or helper script, possibly script missing"); + return -1; + } else + return rc; + } else { + return -1; + } + } + } else { + ERR_LOG("popen failed due to fork/pipe/memory"); + return -1; + } +} + + +int online_cpu(unsigned cpu) +{ + int fd; + int rc; + char buf[100]; + char val; + snprintf(buf, sizeof(buf), "/sys/devices/system/cpu/cpu%u/online", cpu); + fd = open(buf, O_RDWR); + if (fd < 0) { + ERR_LOG("can't open cpu online path: %m"); + return -1; + } + rc = read(fd, &val, 1); + if (rc != 1){ + ERR_LOG("can't read cpu online value: %m"); + return -1; + } + if (val == '1') { + ERR_LOG("cpu %d is already online", cpu); + return 0; + } + val = '1'; + rc = write(fd, &val, 1); + if (rc != 1){ + ERR_LOG("can't set cpu %d online", cpu); + return -1; + } + return 0; +} + +int offline_cpu(unsigned cpu) +{ + int fd; + int rc; + char buf[100]; + char val; + snprintf(buf, sizeof(buf), "/sys/devices/system/cpu/cpu%u/online", cpu); + fd = open(buf, O_RDWR); + if (fd < 0) { + ERR_LOG("can't open cpu online path: %m"); + return -1; + } + rc = read(fd, &val, 1); + if (rc != 1){ + ERR_LOG("can't read cpu online value: %m"); + return -1; + } + if (val == '0') { + ERR_LOG("cpu %d is already offline\n", cpu); + return 0; + } + val = '0'; + rc = write(fd, &val, 1); + if (rc != 1){ + ERR_LOG("can't set cpu %d offline", cpu); + return -1; + } + return 0; +} + +// read /sys/devices/system/cpu/online and get the last cpu listed +int get_highest_online_cpu(void) +{ + int fd, rc; + char buf[256]; + char *start; + unsigned int cpu; + fd = open("/sys/devices/system/cpu/online", O_RDONLY); + if (fd < 0) { + ERR_LOG("can't fopen /sys/devices/system/cpu/online: %m"); + return -1; + } + + rc = read(fd, buf, sizeof(buf)); + if (rc < 2) { + ERR_LOG("error parsing /sys/devices/system/cpu/online, too few chars"); + return -1; + } + + // go to the end of the string + start = buf+rc-1; + if(*start != '\n') { + ERR_LOG("error parsing /sys/devices/system/cpu/online, not null-terminated"); + return -1; + } + + // now go backwards until we get to a separator or the beginning of the string + while ((*start != ',') && (*start != '-') && (start != buf)) + start--; + + start++; + rc = sscanf(start, "%u", &cpu); + if (rc != 1) { + ERR_LOG("error parsing /sys/devices/system/cpu/online, bad number"); + return -1; + } + + return cpu; +} + + +char *get_online_cpu_range(void) +{ + FILE *file; + int rc; + char *str = NULL; + file = fopen("/sys/devices/system/cpu/online", "r"); + if (!file) { + ERR_LOG("can't fopen /sys/devices/system/cpu/online: %m"); + return 0; + } + rc = fscanf(file, "%ms", &str); + if (rc != 1) + ERR_LOG("can't read /sys/devices/system/cpu/online: %m"); + fclose(file); + return str; +} + + +void cpu_scale_down(json_object *jobj_request, + json_object *jobj_response) +{ + char cmd[1000]; + int cpu=-1; + int rc; + + //build our command to send to the helper script + rc = snprintf(cmd, sizeof(cmd), "%s --cpu_del\n", CPU_SCRIPT); + if ((rc > sizeof(cmd)) || rc < 0) { + ERR_LOG("error generating command: %m"); + goto pick_cpu; + } + + struct json_object *jobj_timeout_ms; + int timeout_ms; + if (!json_object_object_get_ex(jobj_request, TIMEOUT_MS, &jobj_timeout_ms)) + { + ERR_LOG("failed to parse timeout_ms"); + goto failed; + } + + errno = 0; + timeout_ms = json_object_get_int(jobj_timeout_ms); + if(errno){ + ERR_LOG("Error converting timeout_ms: %s", strerror(errno)); + goto failed; + } + + // call app helper script to select cpu to offline + rc = call_helper_script(cmd, timeout_ms); + if (rc < 0) { + ERR_LOG("call to app helper script failed\n"); + goto pick_cpu; + } else if (rc == 0) { + ERR_LOG("call to app helper script return invalid cpu number 0\n"); + goto pick_cpu; + } else { + INFO_LOG("app helper script chose cpu %d to offline\n", rc); + cpu = rc; + } + +pick_cpu: + // if the app helper script doesn't exist or didn't return + // a cpu to offline, pick one ourselves + if (cpu == -1) { + cpu = get_highest_online_cpu(); + if (cpu <= 0) { + ERR_LOG("unable to find cpu to offline\n"); + goto failed; + } + } + + // try to offline selected cpu + rc = offline_cpu(cpu); + if (rc < 0) { + ERR_LOG("failed to set cpu %d offline\n", cpu); + goto failed; + } + + INFO_LOG("set cpu %d offline", cpu); + + // we have successfully offlined the cpu + json_object_object_add(jobj_response, RESULT, json_object_new_string("success")); + json_object_object_add(jobj_response, OFFLINE_CPU, json_object_new_int(cpu)); + struct online_cpus *current_online_cpus = range_to_array(get_online_cpu_range()); + + // no need to release jobj_array as its ownership is transferred to jobj_response + struct json_object *jobj_array = new_json_obj_from_array(current_online_cpus); + json_object_object_add(jobj_response, ONLINE_CPUS, jobj_array); + return; + +failed: + json_object_object_add(jobj_response, RESULT, json_object_new_string("fail")); + json_object_object_add(jobj_response, ERR_MSG, json_object_new_string(errorbuf)); + return; +} + + +void cpu_scale_up(json_object *jobj_request, + json_object *jobj_response) +{ + char cmd[1000]; + struct json_object *jobj_timeout_ms; + if (!json_object_object_get_ex(jobj_request, TIMEOUT_MS, &jobj_timeout_ms)) { + ERR_LOG("failed to parse timeout_ms"); + goto failed; + } + int timeout_ms = json_object_get_int(jobj_timeout_ms); + + struct json_object *jobj_cpu; + if (!json_object_object_get_ex(jobj_request, ONLINE_CPU, &jobj_cpu)) { + ERR_LOG("failed to parse online_cpu"); + goto failed; + } + int cpu = json_object_get_int(jobj_cpu); + + //online_cpus is optional + struct json_object *jobj_online_cpus; + const char *online_cpus; + if (!json_object_object_get_ex(jobj_request, ONLINE_CPUS, &jobj_online_cpus)) { + ERR_LOG("failed to parse online_cpus"); + goto failed; + } + + json_object_object_get_ex(jobj_request, ONLINE_CPUS, &jobj_online_cpus); + if (!json_object_is_type(jobj_online_cpus, json_type_array)) { + ERR_LOG("failed to parse online_cpus"); + goto failed; + } + online_cpus = json_object_to_json_string_ext(jobj_online_cpus, JSON_C_TO_STRING_PLAIN); + + int rc = online_cpu(cpu); + if (rc < 0) { + printf("failed to set cpu %d online\n", cpu); + goto failed; + } + + INFO_LOG("set cpu %d online", cpu); + + // Now try to call out to the helper script + // If it fails, not the end of the world. + + rc = snprintf(cmd, sizeof(cmd), "%s --cpu_add %d %s\n", + CPU_SCRIPT, cpu, online_cpus); + + if ((rc > 0) && (rc < sizeof(cmd))) { + rc = call_helper_script(cmd, timeout_ms); + if (rc != 0) + ERR_LOG("call to app helper script failed, return code: %d\n", rc); + } else + ERR_LOG("error generating command: %m"); + + json_object_object_add(jobj_response, RESULT, json_object_new_string("success")); + json_object_object_add(jobj_response, ONLINE_CPU, json_object_new_int(cpu)); + struct online_cpus *current_online_cpus = range_to_array(get_online_cpu_range()); + + // no need to release jobj_array as its ownership is transferred to jobj_response + struct json_object *jobj_array = new_json_obj_from_array(current_online_cpus); + json_object_object_add(jobj_response, ONLINE_CPUS, jobj_array); + + return; + +failed: + json_object_object_add(jobj_response, RESULT, json_object_new_string("fail")); + json_object_object_add(jobj_response, ERR_MSG, json_object_new_string(errorbuf)); + return; +} + + +/* Callback message handler. This will be called by the generic guest/host + * messaging library when a valid message arrives from the host. + */ +void msg_handler(const char *source_addr, json_object *jobj_request) +{ + int rc; + + // parse version + struct json_object *jobj_version; + if (!json_object_object_get_ex(jobj_request, VERSION, &jobj_version)) { + ERR_LOG("failed to parse version"); + return; + } + int version = json_object_get_int(jobj_version); + + if (version != CUR_VERSION) { + ERR_LOG("invalid version %d, expecting %d", version, CUR_VERSION); + return; + } + + // parse msg_type + struct json_object *jobj_msg_type; + if (!json_object_object_get_ex(jobj_request, MSG_TYPE, &jobj_msg_type)) { + ERR_LOG("failed to parse msg_type"); + return; + } + const char *msg_type = json_object_get_string(jobj_msg_type); + + if (!strcmp(msg_type, MSG_TYPE_NACK)) { + struct json_object *jobj_log_msg; + if (!json_object_object_get_ex(jobj_request, LOG_MSG, &jobj_log_msg)) { + ERR_LOG("Nack: failed to parse log_msg"); + } + const char *log_msg = json_object_get_string(jobj_log_msg); + ERR_LOG("Nack received, error message from host: %s", log_msg); + return; + } else if (!strcmp(msg_type, MSG_TYPE_SCALE_REQUEST)) { + ; + } else { + ERR_LOG("unknown message type: %s", msg_type); + return; + } + + struct json_object *jobj_response = json_object_new_object(); + if (jobj_response == NULL) { + ERR_LOG("failed to allocate json object for response"); + return; + } + + struct json_object *jobj_resource; + if (!json_object_object_get_ex(jobj_request, RESOURCE, &jobj_resource)) { + ERR_LOG("failed to parse resource"); + goto done; + } + const char *resource = json_object_get_string(jobj_resource); + + struct json_object *jobj_direction; + if (!json_object_object_get_ex(jobj_request, DIRECTION, &jobj_direction)) { + ERR_LOG("failed to parse direction'"); + goto done; + } + const char *direction = json_object_get_string(jobj_direction); + + rc = -1; + if (!strcmp(resource,"cpu")) { + if (!strcmp(direction,"up")) { + cpu_scale_up(jobj_request, jobj_response); + } else if (!strcmp(direction,"down")) { + cpu_scale_down(jobj_request, jobj_response); + } + } + + json_object_object_add(jobj_response, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_response, RESOURCE, jobj_resource); + json_object_object_add(jobj_response, DIRECTION, jobj_direction); + + const char *response = json_object_to_json_string_ext(jobj_response, JSON_C_TO_STRING_PLAIN); + + // Send response back to the sender. + rc = gh_send_msg(info, source_addr, response); + if (rc < 0) { + ERR_LOG("gh_send_msg failed: %s\n", gh_get_error(info)); + return; + } +done: + json_object_put(jobj_response); +} + + +void wait_for_messages(int fd) +{ + int rc; + fd_set rfds, rfds_tmp; + + FD_ZERO(&rfds); + FD_SET(fd, &rfds); + + while(1) { + rfds_tmp = rfds; + rc = select(fd+1, &rfds_tmp, NULL, NULL, NULL); + if (rc > 0) { + if (gh_process_msg(info) < 0) { + ERR_LOG("problem processing messages: %s\n", + gh_get_error(info)); + } + } else if (rc < 0) { + ERR_LOG("select(): %m"); + } + } +} + + +int main() +{ + int fd = gh_init(msg_handler, SCALE_AGENT_ADDR, &info); + if (fd == -1) { + if (!info) + ERR_LOG("Unable to allocate memory for info: %m"); + else + ERR_LOG("Unable to initialize guest/host messaging: %s\n", + gh_get_error(info)); + return -1; + } + INFO_LOG("Running offline_cpus script"); + system("offline_cpus"); + wait_for_messages(fd); + + return 0; +} diff --git a/guest-agent/guest-scale-agent-2.0/guest_scale_helper.c b/guest-agent/guest-scale-agent-2.0/guest_scale_helper.c new file mode 100644 index 00000000..cf7207b6 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/guest_scale_helper.c @@ -0,0 +1,534 @@ +/** +* Copyright (c) <2013-2016>, Wind River Systems, Inc. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1) Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* +* 2) Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation and/or +* other materials provided with the distribution. +* +* 3) Neither the name of Wind River Systems nor the names of its contributors may be +* used to endorse or promote products derived from this software without specific +* prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + + +/* This is intended to run as a helper function, called by nova, to pass data up + * into the guest and receive data back from the guest and return it to nova. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "misc.h" + +hg_info_t *info; + +#define SPARE_ALLOC 128 + +#define INSTANCE_NAME_SIZE 32 +#define NACK_LOG_SIZE 500 + +#define UNIX_ADDR_LEN 16 +#define DEFAULT_TIMEOUT_MS 1000 +#define TIMEOUT_OVERHEAD_MS 500 +#define MIN_SCRIPT_TIMEOUT_MS 500 +int timeout_ms = DEFAULT_TIMEOUT_MS; + +int *request_online_cpus; +int len_request_online_cpus; +int request_cpu; + +void usage() { + printf("guest_scale_helper --instance_name \n"); + printf(" --cpu_del | --cpu_add \n"); + printf(" [--timeout ]\n"); + printf("\n"); + exit(-1); +} + +void handle_cpu_scale_up(json_object *jobj_response, const char *source_instance) +{ + int rc = -1; + char log_msg[NACK_LOG_SIZE]; + + struct json_object *jobj_result; + if (!json_object_object_get_ex(jobj_response, RESULT, &jobj_result)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse result"); + goto failed; + } + const char *result = json_object_get_string(jobj_result); + + if (!strcmp(result, "fail")) { + struct json_object *jobj_err_msg; + const char *err_msg; + + if (!json_object_object_get_ex(jobj_response, ERR_MSG, &jobj_err_msg)) + err_msg=""; + else + err_msg = json_object_get_string(jobj_err_msg); + ERR_LOG("Error: guest helper scaling cpu up failed: %s\n", err_msg); + goto out; + } + + struct json_object *jobj_online_cpu; + if (!json_object_object_get_ex(jobj_response, ONLINE_CPU, &jobj_online_cpu)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse online_cpu"); + goto failed; + } + int online_cpu = json_object_get_int(jobj_online_cpu); + + struct json_object *jobj_online_cpus; + + json_object_object_get_ex(jobj_response, ONLINE_CPUS, &jobj_online_cpus); + if (!json_object_is_type(jobj_online_cpus, json_type_array)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse online_cpus"); + goto failed; + } + + int i, len_response; + len_response = json_object_array_length(jobj_online_cpus); + int *response_online_cpus = malloc(len_response*sizeof(int)); + + for (i=0; i< len_response; i++){ + response_online_cpus[i] = json_object_get_int(json_object_array_get_idx(jobj_online_cpus, i)); + } + + // compare request and response, assuming cpus are in the same order + if ( (len_response - len_request_online_cpus ) <=1 ) { + int req =0; + int rsp = 0; + int found_req = 0; + while (req < len_request_online_cpus){ + + if (response_online_cpus[rsp] == request_online_cpus[req]) { + req++; rsp++; + } else if (response_online_cpus[rsp] == request_cpu) { + rsp++; + found_req = 1; + // protect against infinite loop + if (rsp == len_response) + break; + } else { + ERR_LOG("Error: cpu %d online by guest but not online in nova\n", response_online_cpus[rsp]); + break; + } + } + + if ((!found_req) && (req == len_request_online_cpus)) { + if ((len_response == len_request_online_cpus) || + (response_online_cpus[len_response] != request_cpu)) { + ERR_LOG("Error: cpu %d online by nova but not online in guest\n", response_online_cpus[req]); + } + } + } + else { + ERR_LOG("Error: guest's online cpu range doesn't match nova\n"); + char buf[1024]; + print_array(buf, response_online_cpus, len_response); + ERR_LOG("guest online cpu range: %s\n", buf); + } + + // Yay, everything looks good. + free(response_online_cpus); + free(request_online_cpus); + exit(online_cpu); + rc = online_cpu; +failed: + send_nack(log_msg, source_instance); +out: + free(request_online_cpus); + exit(rc); +} + + +void handle_cpu_scale_down(json_object *jobj_response, const char *source_instance) +{ + int rc = -1; + struct json_object *jobj_result; + char log_msg[NACK_LOG_SIZE]; + + if (!json_object_object_get_ex(jobj_response, RESULT, &jobj_result)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse result"); + goto failed; + } + const char *result = json_object_get_string(jobj_result); + + if (!strcmp(result, "fail")) { + struct json_object *jobj_err_msg; + const char *err_msg; + if (!json_object_object_get_ex(jobj_response, ERR_MSG, &jobj_err_msg)) + err_msg=""; + else + err_msg = json_object_get_string(jobj_err_msg); + ERR_LOG("problem, guest helper scaling cpu down failed: %s\n", err_msg); + goto out; + } + + struct json_object *jobj_offline_cpu; + if (!json_object_object_get_ex(jobj_response, OFFLINE_CPU, &jobj_offline_cpu)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse offline_cpu"); + goto failed; + } + int offline_cpu = json_object_get_int(jobj_offline_cpu); + + struct json_object *jobj_online_cpus; + json_object_object_get_ex(jobj_response, ONLINE_CPUS, &jobj_online_cpus); + if (!json_object_is_type(jobj_online_cpus, json_type_array)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse online_cpus"); + goto failed; + } + + int i, len_response; + len_response = json_object_array_length(jobj_online_cpus); + int *response_online_cpus = malloc(len_response*sizeof(int)); + + for (i=0; i< len_response; i++){ + response_online_cpus[i] = json_object_get_int(json_object_array_get_idx(jobj_online_cpus, i)); + } + + if (response_online_cpus[len_response] > offline_cpu) { + ERR_LOG("Error: cpu %d is still online in guest\n", offline_cpu); + } + + // Yay, everything looks good. + free(response_online_cpus); + free(request_online_cpus); + rc = offline_cpu; + exit(rc); +failed: + send_nack(log_msg, source_instance); +out: + free(request_online_cpus); + exit(rc); +} + +// This should call exit(0) on success or exit(-1) on permanent failure(). +// Returning will continue listening. +// Theoretically this could come from any instance, need to fix that. +void msg_handler(const char *source_addr, const char *source_instance, struct json_object *jobj_response) +{ + // parse version + struct json_object *jobj_version; + char log_msg[NACK_LOG_SIZE]; + + if (!json_object_object_get_ex(jobj_response, VERSION, &jobj_version)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse version"); + goto failed; + } + int version = json_object_get_int(jobj_version); + + if (version != CUR_VERSION) { + snprintf(log_msg, NACK_LOG_SIZE, "invalid version %d, expecting %d", version, CUR_VERSION); + goto failed; + } + + struct json_object *jobj_resource; + if (!json_object_object_get_ex(jobj_response, RESOURCE, &jobj_resource)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse resource"); + goto failed; + } + const char *resource = json_object_get_string(jobj_resource); + + struct json_object *jobj_direction; + if (!json_object_object_get_ex(jobj_response, DIRECTION, &jobj_direction)) { + snprintf(log_msg, NACK_LOG_SIZE, "failed to parse direction"); + goto failed; + } + const char *direction = json_object_get_string(jobj_direction); + + if (!strcmp(resource,"cpu")) { + if (!strcmp(direction,"up")) { + handle_cpu_scale_up(jobj_response, source_instance); + } else if (!strcmp(direction,"down")) { + handle_cpu_scale_down(jobj_response, source_instance); + } + } + + // if handle_cpu_scale_up/down is called, program should exit, + // so this is only called when scale up/down are not properly handled. + sprintf(log_msg, "unknown message, resource %s, direction %s", + resource, direction); + +failed: + send_nack(log_msg, source_instance); +} + +// instance_name will be of the form instance-xxxxxxxx +// We want to make a name of the form scale-xxxxxxxx +void instance_to_addr(const char *instance_name, char *addr) +{ + const char *match = "instance-"; + const char *replace = "scale-"; + char *tmp = strstr(instance_name, match); + if (!tmp) { + ERR_LOG("Instance name %s doesn't match expected pattern\n", + instance_name); + exit(-1); + } + strcpy(addr, replace); + strncpy(addr+strlen(replace), instance_name+strlen(match), + UNIX_ADDR_LEN-strlen(replace)-1); + addr[UNIX_ADDR_LEN-1]='\0'; +} + +void handle_message(const char *request, const char *instance_name) +{ + int rc; + fd_set rfds, rfds_tmp; + int fd; + char addr[UNIX_ADDR_LEN]; + + INFO_LOG("handling scaling request: %s", request); + + // Create a unique address from the instance name. When using a helper app + // this is needed in order to handle simultaneous scale events for different + // servers on the same hypervisor. + instance_to_addr(instance_name, addr); + + fd = hg_init(msg_handler, addr, &info); + if (fd == -1) { + if (!info) + ERR_LOG("Unable to allocate memory for info: %m"); + else + ERR_LOG("Unable to initialize guest/host messaging: %s\n", + hg_get_error(info)); + exit(-1); + } + + rc = hg_send_msg(info, SCALE_AGENT_ADDR, instance_name, request); + if (rc < 0) { + ERR_LOG("hg_send_msg failed: %s\n", hg_get_error(info)); + exit(-1); + } + + FD_ZERO(&rfds); + FD_SET(fd, &rfds); + + while(1) { + rfds_tmp = rfds; + rc = select(fd+1, &rfds_tmp, NULL, NULL, NULL); + if (rc > 0) { + if (hg_process_msg(info) < 0) { + ERR_LOG("problem processing messages: %s\n", + hg_get_error(info)); + } + } else if (rc < 0) { + ERR_LOG("select(): %m"); + } + } +} + +void send_nack(char *log_msg, const char *instance_name) +{ + ERR_LOG("sending Nack with error: %s\n", log_msg); + struct json_object *jobj_msg = json_object_new_object(); + if (jobj_msg == NULL) { + ERR_LOG("failed to allocate json object for nack msg\n"); + return; + } + + json_object_object_add(jobj_msg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_msg, MSG_TYPE, json_object_new_string(MSG_TYPE_NACK)); + json_object_object_add(jobj_msg, LOG_MSG, json_object_new_string(log_msg)); + + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + hg_send_msg(info, SCALE_AGENT_ADDR, instance_name, msg); + + json_object_put(jobj_msg); +} + +void handle_timeout(int sig) +{ + _exit(-2); +} + +void setup_timeout(int timeout_ms) +{ + int rc; + struct itimerval itv; + itv.it_interval.tv_sec = 0; + itv.it_interval.tv_usec = 0; + itv.it_value.tv_sec = 0; + itv.it_value.tv_usec = timeout_ms * 1000; + + // normalize the timer + while(itv.it_value.tv_usec >= 1000000) { + itv.it_value.tv_usec -= 1000000; + itv.it_value.tv_sec += 1; + } + + rc = setitimer(ITIMER_REAL, &itv, NULL); + if (rc < 0) { + ERR_LOG("unable to set timeout"); + exit(-1); + } + + if (signal(SIGALRM, handle_timeout) == SIG_ERR) + ERR_LOG("unable to set timeout handler, continuing anyway: %m"); +} + +struct json_object *create_new_jobj_msg(int timeout_ms, + const char *resource, + const char *direction, + int cpu, + const char *online_cpus) +{ + //validate values + if (timeout_ms < TIMEOUT_OVERHEAD_MS) { + printf("timeout %d too short\n", timeout_ms); + goto invalid_values; + } + + if (strcmp(resource, "cpu")!=0) { + printf("invalid resource %s\n", resource); + goto invalid_values; + } + + struct json_object *jobj_online_cpus; + if (!strcmp(direction, "up")) { + jobj_online_cpus = json_tokener_parse(online_cpus); + if (!json_object_is_type(jobj_online_cpus, json_type_array)) { + printf("invalid online_cpus %s\n", online_cpus); + goto invalid_values; + } + len_request_online_cpus = json_object_array_length(jobj_online_cpus); + request_online_cpus = malloc(len_request_online_cpus*sizeof(int)); + int i; + for (i=0; i< len_request_online_cpus; i++) { + request_online_cpus[i] = json_object_get_int(json_object_array_get_idx(jobj_online_cpus, i)); + } + + } else if (strcmp(direction, "down")!=0) { + printf("invalid direction %s\n", direction); + goto invalid_values; + } + + struct json_object *jobj_msg = json_object_new_object(); + if (jobj_msg == NULL) { + printf("failed to allocate json object for msg\n"); + return NULL; + } + + json_object_object_add(jobj_msg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_msg, MSG_TYPE, json_object_new_string(MSG_TYPE_SCALE_REQUEST)); + json_object_object_add(jobj_msg, TIMEOUT_MS, json_object_new_int(timeout_ms - MIN_SCRIPT_TIMEOUT_MS)); + json_object_object_add(jobj_msg, RESOURCE, json_object_new_string(resource)); + json_object_object_add(jobj_msg, DIRECTION, json_object_new_string(direction)); + + if (!strcmp(direction, "up")) { + json_object_object_add(jobj_msg, ONLINE_CPU, json_object_new_int(cpu)); + json_object_object_add(jobj_msg, ONLINE_CPUS, jobj_online_cpus); + } + + return jobj_msg; + +invalid_values: + usage(); + return NULL; +} + +int main(int argc, char *argv[]) +{ + int i; + char *instance_name; + + // msg values + int cpu; + const char *resource; + const char *direction; + const char *request_online_cpus_str = NULL; + + for(i=1;i INSTANCE_NAME_SIZE) { + printf("instance name is too large\n"); + usage(); + } else + instance_name = argv[i]; + } + else { + printf("instance_name option specified without name\n"); + usage(); + } + } else if (0==strcmp(argv[i], "--cpu_add")) { + i++; + if (i, Wind River Systems, Inc. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1) Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* +* 2) Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation and/or +* other materials provided with the distribution. +* +* 3) Neither the name of Wind River Systems nor the names of its contributors may be +* used to endorse or promote products derived from this software without specific +* prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include + +#define CUR_VERSION 2 + +#define LOG_MSG_SIZE 100 +#define SCALE_AGENT_ADDR "cgcs.scale" +#define ERRORSIZE 400 + +// keys for guest scaling messages +#define VERSION "version" +#define TIMEOUT_MS "timeout_ms" +#define RESOURCE "resource" +#define DIRECTION "direction" +#define ONLINE_CPU "online_cpu" +#define OFFLINE_CPU "offline_cpu" +#define ONLINE_CPUS "online_cpus" +#define RESULT "result" +#define ERR_MSG "err_msg" +#define MSG_TYPE "msg_type" +#define LOG_MSG "log_msg" // for Nack + +// message types for scaling messages +#define MSG_TYPE_SCALE_REQUEST "scale_request" +#define MSG_TYPE_NACK "nack" + +char errorbuf[ERRORSIZE]; + +#define LOG(priority, format, ...) \ + syslog(priority, "%s(%d): " format, __FILE__, __LINE__, ##__VA_ARGS__) + +#define ERR_LOG(format, ...) \ + do { \ + LOG(LOG_DAEMON|LOG_ERR, format, ##__VA_ARGS__); \ + fprintf(stderr, format, ##__VA_ARGS__); \ + snprintf(errorbuf, sizeof(errorbuf)-1, format, ##__VA_ARGS__); \ + } while (0) + +#define INFO_LOG(format, ...) \ + do { \ + LOG(LOG_DAEMON|LOG_INFO, format, ##__VA_ARGS__); \ + } while (0) + + +struct online_cpus { + int numcpus; + char status[]; +}; + +struct online_cpus *range_to_array(const char *range); +struct json_object *new_json_obj_from_array (struct online_cpus *cpuarray); +void print_array(char *buf, int *array, int len); + diff --git a/guest-agent/guest-scale-agent-2.0/obj/.gitignore b/guest-agent/guest-scale-agent-2.0/obj/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/obj/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/guest-agent/guest-scale-agent-2.0/parser.c b/guest-agent/guest-scale-agent-2.0/parser.c new file mode 100644 index 00000000..3eaef1c1 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/parser.c @@ -0,0 +1,150 @@ +/** +* Copyright (c) <2013-2016>, Wind River Systems, Inc. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1) Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* +* 2) Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation and/or +* other materials provided with the distribution. +* +* 3) Neither the name of Wind River Systems nor the names of its contributors may be +* used to endorse or promote products derived from this software without specific +* prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include +#include +#include +#include +#include "misc.h" + + +/* Print a range of numbers in a consistent way. */ +char print_range(int start, int end, char *str) +{ + int len; + if (start == end) + len = sprintf(str, "%d,", start); + else + len = sprintf(str, "%d-%d,", start, end); + return len; +} + +void print_array(char *buf, int *array, int len) { + int i; + for(i = 0; i < len; i++) { + sprintf(buf+strlen(buf),"%d,", array[i]); + } + // remove the last comma + buf[strlen(buf)-1]='\0'; +} + +#define BUFLEN 1024 + +/* Takes as input a string representation of online cpus of the form + * "0,1,3-5", and allocates and returns a struct representing whether + * each given cpu is online. + */ +struct online_cpus *range_to_array(const char *range) +{ + struct online_cpus *cpuarray = (struct online_cpus *) malloc(BUFLEN); + int start, end; + int inrange = 0; + char *token, *tmp; + int done = 0; + tmp = strdup(range); + strcpy(tmp, range); + token = tmp; + + if (*tmp == '\0') { + /* empty string, no online cpus */ + cpuarray->numcpus = 0; + return cpuarray; + } + + while (1) { + tmp++; + if (*tmp == '\0') + done = 1; + if (done || (*tmp == ',')) { + /* expect single value or ending a range */ + if (!token) { + ERR_LOG("format error, missing token, unable to parse range\n"); + goto error; + } + *tmp = '\0'; + end = atoi(token); + token = 0; + if (inrange) { + int i; + for (i=start; i<= end; i++) + cpuarray->status[i] = 1; + inrange = 0; + } else { + cpuarray->status[end] = 1; + } + } else if (*tmp == '-') { + if (inrange) { + ERR_LOG("format error, unable to parse range\n"); + goto error; + } + if (!token) { + ERR_LOG("format error, missing token, unable to parse range\n"); + goto error; + } + *tmp = '\0'; + start = atoi(token); + token = 0; + inrange = 1; + } else { + /* expect a numerical value */ + if ((*tmp < '0') || (*tmp > '9')) { + ERR_LOG("format error, expected a numerical value, unable to parse range\n"); + goto error; + } + + if (!token) + token = tmp; + } + if (done) + break; + } + cpuarray->numcpus = end+1; + return cpuarray; +error: + free(cpuarray); + return 0; +} + + +struct json_object *new_json_obj_from_array (struct online_cpus *cpuarray) +{ + int i; + + struct json_object *jobj_array = json_object_new_array(); + if (jobj_array == NULL) { + return NULL; + } + + for (i=0;inumcpus;i++) { + if (cpuarray->status[i]) { + json_object_array_add(jobj_array, json_object_new_int(i)); + } + } + return jobj_array; +} diff --git a/guest-agent/guest-scale-agent-2.0/parser_test.c b/guest-agent/guest-scale-agent-2.0/parser_test.c new file mode 100644 index 00000000..88cdf1a8 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/parser_test.c @@ -0,0 +1,67 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +#include +#include +#include +#include + +void printstruct(struct online_cpus *cpuarray) +{ + int i; + printf("num cpus: %d\n", cpuarray->numcpus); + for (i=0;inumcpus;i++) + printf("%d: %d\n", i, cpuarray->status[i]); +} + + +struct online_cpus cpus = {15, {1,0,0,0,0,0,1,1,1,0,0,0,1,1,1}}; +int main() +{ + char *str, *str2; + struct online_cpus *newcpus; + printf("initial: \n"); + printstruct(&cpus); + printf("string:\n"); + str = "0,6-8,12-14"; + newcpus = range_to_array(str); + printf("fromstring: \n"); + printstruct(newcpus); + newcpus = range_to_array(""); + printf("empty: \n"); + printstruct(newcpus); + newcpus = range_to_array("0--2"); + newcpus = range_to_array("0-1-2"); + newcpus = range_to_array("0,,2"); + newcpus = range_to_array("0,-2"); + newcpus = range_to_array("1,2-a"); + + return 0; +} diff --git a/guest-agent/guest-scale-agent-2.0/scripts/app_scale_helper b/guest-agent/guest-scale-agent-2.0/scripts/app_scale_helper new file mode 100755 index 00000000..71bd3898 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/scripts/app_scale_helper @@ -0,0 +1,107 @@ +#!/bin/bash +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# This is a basic sample script showing what the script needs to be able to do. +# The script can be edited as needed or replaced by a script or binary that +# works in the same way, or can be deleted entirely if the default behaviour +# of offlining the highest-numbered CPU is satisfactory and you don't care +# about logging scaling events. +# +# We expect to be called in one of the following ways: +# +# "--cpu_add " +# +# This indicates that "cpu" has been set online, and we can now make use of it. +# Do whatever is necessary to start using it, then return 0. +# +# +# "--cpu_del" +# In this case we pick an online cpu to offline, and do whatever we need to in +# order to stop using it, and return the cpu number. Note that CPU 0 must +# always remain online. + +info_log() +{ + logger -p daemon.info -t $0 "$*" + echo $* +} + +err_log() +{ + logger -p daemon.err -t $0 "$*" + echo $* +} + +usage() +{ + err_log "usage: $0 {--cpu_del | --cpu_add }" + exit -1 +} + +cpu_scale_up () +{ + CPU_NUM=$1 + CPU_ONLINE_RANGE=$2 + info_log "cpu add notification, cpu: ${CPU_NUM}" + info_log "cpu_online_range: ${CPU_ONLINE_RANGE}" +} + +cpu_scale_down () +{ + # Make sure host & guest views of offline cpus are consistent + /usr/sbin/offline_cpus + + info_log "cpu del request" + #pick the highest online cpu + CPUS_ONLINE=`cat /sys/devices/system/cpu/online` + CPU_NUM=${CPUS_ONLINE##*[,-]} + + info_log "selected cpu ${CPU_NUM} to offline" + return $CPU_NUM +} + +if [ $# -lt 1 ] +then + usage +elif [ $1 = "--cpu_add" ] +then + if [ $# = 3 ] + then + cpu_scale_up $2 $3 + else + err_log "--cpu_add option called with $# args, expected 3" + usage + fi +elif [ $1 = "--cpu_del" ] +then + cpu_scale_down +else + usage +fi diff --git a/guest-agent/guest-scale-agent-2.0/scripts/guest-scale-agent.service b/guest-agent/guest-scale-agent-2.0/scripts/guest-scale-agent.service new file mode 100644 index 00000000..3a98f564 --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/scripts/guest-scale-agent.service @@ -0,0 +1,13 @@ +[Unit] +Description=Guest Scale Agent +After=cloud-init.service +Wants=guest-agent.service + +[Service] +ExecStart=/usr/sbin/guest_scale_agent +Type=simple +Restart=always +RestartSec=0 + +[Install] +WantedBy=multi-user.target diff --git a/guest-agent/guest-scale-agent-2.0/scripts/init_offline_cpus b/guest-agent/guest-scale-agent-2.0/scripts/init_offline_cpus new file mode 100644 index 00000000..4f2654be --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/scripts/init_offline_cpus @@ -0,0 +1,64 @@ +#!/bin/sh +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +DAEMON=/usr/sbin/offline_cpus +NAME=offline_cpus +DESC="offline cpus marked offline by hypervisor" +ARGS= + +test -f $DAEMON || exit 0 + +case "$1" in + start) + echo -n "running $DESC: $NAME... " + $DAEMON $ARGS + echo "done." + ;; + stop) + echo -n "stopping $DESC: $NAME... " + echo "done." + ;; + status) + echo -n "$NAME is not running" + ;; + restart) + echo "restarting $DESC: $NAME... " + $0 stop + $0 start + echo "done." + ;; + *) + echo "Usage: $0 {start|stop|status|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/guest-agent/guest-scale-agent-2.0/scripts/offline-cpus.service b/guest-agent/guest-scale-agent-2.0/scripts/offline-cpus.service new file mode 100644 index 00000000..3238d4cd --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/scripts/offline-cpus.service @@ -0,0 +1,12 @@ +[Unit] +Description=Titanium Cloud agent and helper app to scale VMs up/down +After=cloud-init.service + +[Service] +Type=simple +RemainAfterExit=yes +ExecStart=/etc/init.d/offline_cpus start +ExecStop=/etc/init.d/offline_cpus stop + +[Install] +WantedBy=multi-user.target diff --git a/guest-agent/guest-scale-agent-2.0/scripts/offline_cpus b/guest-agent/guest-scale-agent-2.0/scripts/offline_cpus new file mode 100644 index 00000000..4d3472fe --- /dev/null +++ b/guest-agent/guest-scale-agent-2.0/scripts/offline_cpus @@ -0,0 +1,54 @@ +#!/bin/bash +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# Query the metadata server for the set of cpus that are supposed to be offline +# It will be in the form "set([])" for the empty set, and "set([1, 2, 3])" for the +# non-empty set. +CPUSET_OFFLINE=`wget -t 3 -T 5 -qO - http://169.254.169.254/latest/meta-data/offline_cpuset` +RC=$? +if [ $RC -ne 0 ] +then + logger -p daemon.err "${0}: unable to obtain "offline_cpuset" value. rc: ${RC}" + exit -1 +fi + +OFFLINE_CPUS=`echo ${CPUSET_OFFLINE}|grep -oE [0-9]+` +for CPU in $OFFLINE_CPUS +do + # Offline this cpu to match the underlying virtual machine. + echo 0 > /sys/devices/system/cpu/cpu${CPU}/online + RC=$? + if [ $RC -ne 0 ] + then + logger -p daemon.err "${0}: unable to offline cpu ${CPU}. rc: ${RC}" + exit -1 + fi +done diff --git a/guest-client/LICENSE b/guest-client/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/guest-client/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/guest-client/PKG-INFO b/guest-client/PKG-INFO new file mode 100644 index 00000000..e738a302 --- /dev/null +++ b/guest-client/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 1.1 +Name: guest-client +Version: 3.0.1 +Summary: Titanium Cloud Platform Guest-Client Heartbeat Package +Home-page: +Author: Windriver +Author-email: info@windriver.com +License: Apache-2.0 + +Description: Guest-Client with heartbeat functionality. + +Platform: UNKNOWN diff --git a/guest-client/centos/build_srpm.data b/guest-client/centos/build_srpm.data new file mode 100644 index 00000000..f3386382 --- /dev/null +++ b/guest-client/centos/build_srpm.data @@ -0,0 +1,3 @@ +SRC_DIR=$CGCS_BASE/mwa-thales/guest-client +COPY_LIST="$SRC_DIR/*" +TIS_PATCH_VER=5 diff --git a/guest-client/centos/guest-client.spec b/guest-client/centos/guest-client.spec new file mode 100644 index 00000000..61e68d86 --- /dev/null +++ b/guest-client/centos/guest-client.spec @@ -0,0 +1,114 @@ +Summary: Guest-Client +Name: guest-client +Version: 3.0.1 +Release: %{tis_patch_ver}%{?_tis_dist} +License: Apache-2.0 +Group: base +Packager: Wind River +URL: unknown + +Source0: %{name}-%{version}.tar.gz +#Source1: guest_heartbeat_msg_defs.h + +%define cgcs_sdk_deploy_dir /opt/deploy/cgcs_sdk + +%bcond_without systemd + +%if %{with systemd} +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +BuildRequires: systemd +%endif + +%package -n guest-client-devel +Summary: Guest-Client - Development files +Group: devel +Provides: guest-client-dev(x86_64) = 3.0.1-r1.0 + +%package -n %{name}-cgts-sdk +Summary: Guest-Client - SDK files +Group: devel +BuildRequires: json-c-devel + +%description +Guest-Client with heartbeat functionality. + +%description -n guest-client-devel +Guest-Client with heartbeat functionality. This package contains symbolic +links, header files, and related items necessary for software development. + +%description -n %{name}-cgts-sdk +Guest-Client SDK files + +%prep +%setup +#%build -C guest-client-3.0.1/guest_client/src/heartbeat +#tar czf %{name}-%{version}.tgz %{name}-%{version} +#find . -name "*.tgz" +#echo `pwd` +# Build for guest-client package +cd guest-client-3.0.1 +make clean +make build sysconfdir=%{_sysconfdir} +make sample +make tar ARCHIVE_NAME=wrs-guest-heartbeat-%{version} +find build +cd .. + +# Install for guest-client package +%install +install -m 750 -d %{buildroot}/usr +install -m 750 -d %{buildroot}%{_includedir} +install -m 750 -d %{buildroot}%{_includedir}/guest-client +install -m 640 -p -D %{name}-%{version}/guest_client/src/heartbeat/guest_heartbeat_msg_defs.h %{buildroot}%{_includedir}/guest-client/guest_heartbeat_msg_defs.h +install -d %{buildroot}%{cgcs_sdk_deploy_dir} +install -m 640 %{name}-%{version}/build/wrs-guest-heartbeat-%{version}.tgz %{buildroot}%{cgcs_sdk_deploy_dir} +%if %{with systemd} +install -m 644 -p -D %{name}-%{version}/guest_client/scripts/guest-client.service %{buildroot}%{_unitdir}/guest-client.service +install -m 744 -p -D %{name}-%{version}/guest_client/scripts/guest-client.systemd %{buildroot}%{_sysconfdir}/guest-client/guest-client.systemd +%endif +install -m 750 -d %{buildroot}%{_sysconfdir}/guest-client/heartbeat +install -m 755 -p -D %{name}-%{version}/guest_client/scripts/guest_heartbeat.conf %{buildroot}%{_sysconfdir}/guest-client/heartbeat/guest_heartbeat.conf +install -m 755 -p -D %{name}-%{version}/guest_client/scripts/sample_event_handling_script %{buildroot}%{_sysconfdir}/guest-client/heartbeat/sample_event_handling_script +install -m 755 -p -D %{name}-%{version}/guest_client/scripts/sample_health_check_script %{buildroot}%{_sysconfdir}/guest-client/heartbeat/sample_health_check_script +install -m 640 -p -D %{name}-%{version}/build/guest-client %{buildroot}/usr/local/bin/guest-client +install -m 640 -p -D %{name}-%{version}/build/libguest_common_api.so.%{version} %{buildroot}/usr/local/lib/libguest_common_api.so.%{version} +install -m 640 -p -D %{name}-%{version}/build/libguest_heartbeat_api.so.%{version} %{buildroot}/usr/local/lib/libguest_heartbeat_api.so.%{version} + +%files +%defattr(755,root,root,-) +%{_sysconfdir}/guest-client/heartbeat/guest_heartbeat.conf +%{_sysconfdir}/guest-client/heartbeat/sample_event_handling_script +%{_sysconfdir}/guest-client/heartbeat/sample_health_check_script +%defattr(644,root,root,-) +/usr/local/lib/libguest_common_api.so.%{version} +/usr/local/lib/libguest_heartbeat_api.so.%{version} +%attr(744,-,-) /usr/local/bin/guest-client +%if %{with systemd} +%{_unitdir}/guest-client.service +%attr(744,-,-) %{_sysconfdir}/guest-client/guest-client.systemd +%endif + +%preun +%if %{with systemd} +/usr/bin/systemctl stop guest-client >/dev/null 2>&1 +%systemd_preun guest-client.service +systemctl reload +%endif + +%post +%if %{with systemd} +%systemd_post guest-client.service +systemctl reload +/usr/bin/systemctl enable guest-client >/dev/null 2>&1 +%endif + +%files -n guest-client-devel + +%defattr(644,root,root,-) + +/usr/include/guest-client/guest_heartbeat_msg_defs.h + +%files -n %{name}-cgts-sdk +%{cgcs_sdk_deploy_dir}/wrs-guest-heartbeat-%{version}.tgz diff --git a/guest-client/guest-client-3.0.1/LICENSE b/guest-client/guest-client-3.0.1/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/guest-client/guest-client-3.0.1/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/guest-client/guest-client-3.0.1/Makefile b/guest-client/guest-client-3.0.1/Makefile new file mode 100755 index 00000000..4dc62d1c --- /dev/null +++ b/guest-client/guest-client-3.0.1/Makefile @@ -0,0 +1,119 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +SHELL = /bin/sh + +## Configuration Directory Variables +prefix := /usr/local +exec_prefix := $(prefix) +sysconfdir := $(prefix)/etc +includedir := $(prefix)/include +libdir := $(exec_prefix)/lib +bindir := $(exec_prefix)/bin + +MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CURRENT_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH))) +PARENT_DIR := $(patsubst %/,%,$(dir $(CURRENT_DIR))) +BUILD_DIR := $(CURRENT_DIR)/build +PACKAGE_DIR := $(BUILD_DIR)/package +PACKAGE_ROOT_DIR := $(PACKAGE_DIR)/rootdir + +ARCHIVE_NAME := wrs-guest-client-3.0.1 +ARCHIVE_PKG_NAME := wrs-guest-client-3.0.1_pkg + +INIT_TYPE := sysv + +.PHONY: all build sample clean distclean tar package install uninstall + +all: build + +build: + mkdir -p --mode 755 $(BUILD_DIR) + @(cd guest_client_api; make --no-print-directory build \ + sysconfdir=$(sysconfdir) BUILD_DIR=$(BUILD_DIR)) + @(cd guest_client; make --no-print-directory build \ + sysconfdir=$(sysconfdir) BUILD_DIR=$(BUILD_DIR)) + +tar: + @(mkdir -p --mode 755 $(BUILD_DIR)) + @(ln -sf $(CURRENT_DIR) $(BUILD_DIR)/$(ARCHIVE_NAME)) + @(cd $(BUILD_DIR); tar -pczf $(ARCHIVE_NAME).tgz \ + $(ARCHIVE_NAME)/Makefile \ + $(ARCHIVE_NAME)/LICENSE \ + $(ARCHIVE_NAME)/README \ + $(ARCHIVE_NAME)/README.build \ + $(ARCHIVE_NAME)/README.usage \ + $(ARCHIVE_NAME)/TiS-Guest-Heartbeat-Service.pdf \ + $(ARCHIVE_NAME)/packaging \ + $(ARCHIVE_NAME)/include \ + $(ARCHIVE_NAME)/guest_client \ + $(ARCHIVE_NAME)/guest_client_api \ + --exclude $(ARCHIVE_NAME)/guest_client/build \ + --exclude $(ARCHIVE_NAME)/guest_client/src/test \ + --exclude $(ARCHIVE_NAME)/guest_client_api/build \ + --directory $(BUILD_DIR)) + +sample: + mkdir -p --mode 755 $(BUILD_DIR) + @(cd guest_client_api; make --no-print-directory sample \ + sysconfdir=$(sysconfdir) BUILD_DIR=$(BUILD_DIR)) + @(cd guest_client; make --no-print-directory sample \ + sysconfdir=$(sysconfdir) BUILD_DIR=$(BUILD_DIR)) + +clean: + @-(cd guest_client_api; make --no-print-directory clean BUILD_DIR=$(BUILD_DIR)) + @-(cd guest_client; make --no-print-directory clean BUILD_DIR=$(BUILD_DIR)) + +distclean: clean + +package: + @(mkdir -p --mode 755 $(PACKAGE_DIR)) + @(mkdir -p --mode 755 $(PACKAGE_ROOT_DIR)) + @(ln -sf $(PACKAGE_DIR) $(BUILD_DIR)/$(ARCHIVE_PKG_NAME)) + @(echo "Packaging guest-client.pkg in $(PACKAGE_DIR)") + @(cp $(CURRENT_DIR)/packaging/guest-client.pkg $(PACKAGE_DIR)/guest-client.pkg) + @(chmod 755 $(PACKAGE_DIR)/guest-client.pkg) + @-(cd guest_client_api; make --no-print-directory package BUILD_DIR=$(BUILD_DIR) \ + PACKAGE_DIR=$(PACKAGE_DIR) prefix=$(prefix) exec_prefix=$(exec_prefix) \ + sysconfdir=$(sysconfdir) includedir=$(includedir) libdir=$(libdir) \ + bindir=$(bindir)) + @-(cd guest_client; make --no-print-directory package BUILD_DIR=$(BUILD_DIR) \ + PACKAGE_DIR=$(PACKAGE_DIR) prefix=$(prefix) exec_prefix=$(exec_prefix) \ + sysconfdir=$(sysconfdir) includedir=$(includedir) libdir=$(libdir) \ + bindir=$(bindir)) + @(cd $(BUILD_DIR); tar -pczf $(ARCHIVE_PKG_NAME).tgz \ + $(ARCHIVE_PKG_NAME)/* --directory $(PACKAGE_DIR)) + +install: package + @(echo "Installing ...") + @(cd $(PACKAGE_DIR); ./guest-client.pkg install $(INIT_TYPE) $(DESTDIR)) + +uninstall: package + @(echo "Uninstalling ...") + @(cd $(PACKAGE_DIR); ./guest-client.pkg uninstall $(INIT_TYPE) $(DESTDIR)) diff --git a/guest-client/guest-client-3.0.1/README b/guest-client/guest-client-3.0.1/README new file mode 100755 index 00000000..178d7f58 --- /dev/null +++ b/guest-client/guest-client-3.0.1/README @@ -0,0 +1,72 @@ +Copyright(c) 2013-2017, Wind River Systems, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Wind River Systems nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------- + +TITANIUM CLOUD - GUEST HEARTBEAT SDK +=========================================== + +DESCRIPTION +=========== + Titanium Cloud Guest-Client provides a heartbeat service to monitor the + health of guest application(s) within a VM running under WindRiver's + Titanium Cloud. Loss of heartbeat will result in a corrective action + being taken against the VM. The heartbeat interval and corrective action + is specified by the VM. + + Titanium Cloud Guest-Client also provides guest application(s) within + a VM running under WindRiver's Titanium Cloud, the ability to receive + notification of and vote to accept or reject actions about to be performed + against the VM. On notifications, the guest application within the VM can + take this opportunity to cleanly shut down or transfer its service to a + peer VM. + + +-------- Virtual Machine ------------------------+ + | | + | VM-Health-Check-Script | + | / | + | / Guest-Application-1 | + Titanium Cloud <----> TiS-Guest-Client <-----> ... | + | \ Guest-Application-8 | + | \ | + | VM-Event-Script | + | | + +-------------------------------------------------+ + + See also: + + README.build - building and installing. + + README.usage - configuring and using the heartbeat, notification + and voting functionality. + + +DELIVERY +======== + Titanium Cloud Guest-Client is delivered as source in a compressed + tarball, wrs-guest-client-v3.0.0.tgz, such that it can be compiled for + the applicable VM Linux distribution. diff --git a/guest-client/guest-client-3.0.1/README.build b/guest-client/guest-client-3.0.1/README.build new file mode 100755 index 00000000..0e6d4522 --- /dev/null +++ b/guest-client/guest-client-3.0.1/README.build @@ -0,0 +1,291 @@ +Copyright(c) 2013-2017, Wind River Systems, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Wind River Systems nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------- + +This file contains instructions for building and installing the Titanium Cloud +Guest-Client. + + +REQUIREMENTS +============ + The Guest-Client uses the SIGIO functionality of the virtio-serial device + to track host connection up, down and port unplug events. This functionality + requires a kernel version equal to or greater than 2.6.37. + + Compilation: + Linux OS ## Same architecture as the VM. + + gnu make + gcc compiler + + development libraries and headers for: + libc ## C library + rt ## Real-Time library + json-c ## JSON-C library + + VM Runtime: + Linux OS + + runtime libraries: + libc ## C library + rt ## Real-Time library + json-c ## JSON-C library + + +COMPILE +======= + Extract the tarball contents ... + + tar -xvf wrs-guest-heartbeat-v3.0.0.tgz + + To compile, simply run ... + + cd wrs-guest-heartbeat-3.0.0 + make + + This will create a build output directory called "build" in the + wrs-guest-heartbeat-3.0.0 directory. The build output directory + contains the following relevant files: + + libguest_common_api.so.3.0.0 + libguest_heartbeat_api.so.3.0.0 + guest-client + + The libguest_common_api library contains all the common code for + the Guest-Client API libraries. + + The libguest_heartbeat_api library contains the heartbeat, voting, + and notification functionality to interact with the Guest-Client. + A guest application wanting to use this functionality needs to link + in the libguest_common_api and libguest_heartbeat_api libraries. + + The guest-client executable is the Guest-Client daemon that heartbeats + guest applications, and orchestrates votes on and notifications of + pending actions against the VM. The Guest-Client reports the health, + notification and voting results of guest application(s) to the + Titanium Cloud. + + The following variables are available to change the build output + directory and where the system configuration files will be located: + + BUILD_DIR - used to change the build output directory, defaults + to the wrs-guest-heartbeat-3.0.0/build directory. + + prefix - used to construct other variables below, defaults to + the /usr/local directory. + + sysconfdir - directory for configuration files, set to + $(prefix)/etc + + Note: all directory variables must specify an absolute path. + + Usage: make = + + To compile the sample-guest-app, simply run ... + + cd wrs-guest-heartbeat-3.0.0 + make sample + + The sample-guest-app executable is for demonstration purposes only. + It demonstrates how a guest application can use the guest heartbeat + library, libguest_heartbeat_api, to interact with the Guest-Client. + + To compile with a different compiler, simply run ... + + cd wrs-guest-heartbeat-3.0.0 + make CC=/x86_64/buildroot/host/usr/bin/x86_64-buildroot-linux-uclibc-cc + + +PACKAGE +======= + To build a tar package for installation, simply run ... + + cd wrs-guest-heartbeat-3.0.0 + make package + + This will create a tar file called wrs-guest-heartbeat-3.0.0_pkg.tgz + in the wrs-guest-heartbeat-3.0.0 build directory. + + If you changed the build output directory during compile, the BUILD_DIR + variable will have to be specified on the make package. Also if you + specified a different system configuration directory, the sysconfdir + variable, during compile, it will also have to be specified on the + make package. + + The following package configuration variables are available to customize + the package for installation: + + prefix - used to construct other variables below, defaults to + the /usr/local directory. + + exec_prefix - used to construct other executable variables, set to + the 'prefix' variable. + + sysconfdir - directory for configuration files, set to + $(prefix)/etc + + includedir - directory for installing header files, set to + $(prefix)/include + + libdir - directory for installing libraries, set to + $(exec_prefix)/lib + + bindir - directory for installing executable programs, set to + $(exec_prefix)/bin + + Note: all directory variables must specify an absolute path. + + Usage: make package = ... + + +INSTALL +======= + To install from source directories, simply run ... + + cd wrs-guest-heartbeat-3.0.0 + make install + + This will install the default configuration file, include files, + compiled libraries and executable into the following directories: + + guest_heartbeat.conf --> /usr/local/etc/guest-client/heartbeat + guest_api_types.h --> /usr/local/include + guest_heartbeat_api.h --> /usr/local/include + libguest_common_api.so.3.0.0 --> /usr/local/lib + libguest_heartbeat_api.so.3.0.0 --> /usr/local/lib + guest-client --> /usr/local/bin + + If you changed the build output directory during compile, the BUILD_DIR + variable will have to be specified on the make install. Also if you + specified a different system configuration directory, the sysconfdir + variable, during compile, it will also have to be specified on the + make install. + + The following install configuration variables are available to customize + installation: + + INIT_TYPE - the type of initialization the OS is using, one of + ( systemd or sysv ). Default to sysv. + + DESTDIR - prepended to each install target file, used to provide + an alternate environment to install in (i.e. support + for staged installs). + + prefix - used to construct other variables below, defaults to + the /usr/local directory. + + exec_prefix - used to construct other executable variables, set to + the 'prefix' variable. + + sysconfdir - directory for configuration files, set to + $(prefix)/etc + + includedir - directory for installing header files, set to + $(prefix)/include + + libdir - directory for installing libraries, set to + $(exec_prefix)/lib + + bindir - directory for installing executable programs, set to + $(exec_prefix)/bin + + Note: all directory variables must specify an absolute path. + + Usage: make = ... + + + + To install from a tar package file, simply run ... + + tar -xvf wrs-guest-heartbeat-v3.0.0_pkg.tgz + + cd wrs-guest-heartbeat-v3.0.0_pkg + guest-client.pkg install + + This will install the default configuration file, include files, + compiled libraries and executable into the following directories: + + guest_heartbeat.conf --> /usr/local/etc/guest-client/heartbeat + guest_api_types.h --> /usr/local/include + guest_heartbeat_api.h --> /usr/local/include + libguest_common_api.so.3.0.0 --> /usr/local/lib + libguest_heartbeat_api.so.3.0.0 --> /usr/local/lib + guest-client --> /usr/local/bin + + To uninstall: guest-client.pkg uninstall + + The following install configuration variables can be provided to + customize installation: + + INIT_TYPE - the type of initialization the OS is using, one of + ( systemd, sysv ). Optional parameter, defaults to + sysv. + + DESTDIR - prepended to each install target file, used to provide + an alternate environment to install in (i.e. support + for staged installs). Optional parameter. + + Note: all directory variables must specify an absolute path. + + guest-client.pkg [DESTDIR] + + +POST-INSTALL +============ + Running in the VM: + + Test if your platform is using systemd. First look for the systemd + process and then verify that the systemctl tool is available + + ps -ef | grep systemd + systemctl --version + + In this case use the systemd instructions, otherwise the sysv + instructions. + + systemd: + As the root user, + systemctl daemon-reload + systemctl start guest-client.service + systemctl enable guest-client.service + + sysv: + As the root user, + chkconfig --add guest-client + /etc/init.d/guest-client start + + Building into the VM Image: + + systemd: + No post install steps required. + + sysv: + ln -s /etc/init.d/guest-client /etc/rc#.d/K##guest-client + ln -s /etc/init.d/guest-client /etc/rc#.d/S##guest-client + + ... and build the VM image. diff --git a/guest-client/guest-client-3.0.1/README.usage b/guest-client/guest-client-3.0.1/README.usage new file mode 100755 index 00000000..a4995221 --- /dev/null +++ b/guest-client/guest-client-3.0.1/README.usage @@ -0,0 +1,385 @@ +Copyright(c) 2013-2017, Wind River Systems, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Wind River Systems nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------- + +This file contains instructions for using the Titanium Cloud Guest-Client. + + +Titanium Cloud Setup +===================== + The following steps are required to setup the Titanium Cloud to heartbeat + a VM. + + 1. Create and modify a Flavor for your VM. + + A flavor extraspec, 'Guest Heartbeat', is used to indicate + that VMs of this flavor support Titanium Cloud Guest Heartbeat. + The default value is 'False'. + + If support is indicated, then as soon as the VM's Titanium Cloud + Guest-Client daemon registers with the Titanium Cloud Compute + Services on the compute node host, heartbeating will be enabled. + + a) Create a new flavor: + + via dashboard ... + - Select 'Admin->Flavors' to bring up the list of flavors + - Select '+ Create Flavor' in the upper right. + - Fill in the fields as desired + - Select 'Create Flavor' + + via command line ... + - nova flavor-create ... + + b) Modify the newly created flavor or an existing flavor: + + via dashboard ... + - Select 'Admin->Flavors' to bring up the list of flavors + - Choose a flavor to modify. + - Select the to go to the Flavor Detail page + - Select the Extra Specs TAB + - Select '+ Create' + - Select 'Guest Heartbeat' from pull-down Extra Spec menu + - Check the 'Guest Heartbeat' checkbox + - Select 'Create' + + via command line ... + - nova flavor-key set sw:wrs:guest:heartbeat=True + + Note: already running instances that were launched with this + flavor are NOT affected. + + 2) Launch a new instance of your VM. + + 3) Verify your VM is running with Guest Heartbeat enabled. + + Log into the VM. + + Guest-Client logs are written to syslog's 'daemon' facility, which + are typically logged by the syslog service to /var/log/daemon.log. + Please refer to syslog for details on log settings in order to + determine location of logged Guest-Client messages. + + Guest-Client logs are easy to identify. The logs always contain the + string 'Guest-Client'. A recursive grep of /var/log is one way to + determine where your syslog is sending the Guest-Client logs. + + LOG=`grep -r -l 'Guest-Client' /var/log` + echo $LOG + + /var/log/daemon.log + + A successful connection can be verified by looking for the + following log. + + grep "Guest-Client" $USER_LOG | grep "heartbeat state change" + + Guest-Client heartbeat state change from enabling to enabled + + +VM Setup +======== + Configuring Guest-Client Initialization/Start Scripts + ----------------------------------------------------- + The Titanium Cloud communicates with the Guest-Client through a character + device. The packaged initialization/startup scripts need to be updated to + specify the character device exposed by QEMU to the VM. + + +-- Virtual Machine ---+ + | | + | | + Titanium Cloud <-------------------> QEMU <------------> Guest-Client | + unix-stream-socket char-device | + | | + +----------------------+ + + The variable that needs updating in the initialization/start scripts is + called GUEST_CLIENT_DEVICE. + + Also the location of the Guest-Client binary needs to be updated in the + initialization/start scripts. The variable that needs updating is called + GUEST_CLIENT. + + + Configuring Guest Heartbeat & Application Health Check + ------------------------------------------------------ + The Guest-Client within your VM will register with the Titanium Cloud + Compute Services on the compute node host. Part of that registration + process is the specification of a heartbeat interval and a corrective + action for a failed/unhealthy VM. The values of heartbeat interval and + corrective action come from the guest_heartbeat.conf file and is located + in /etc/guest-client/heartbeat directory by default. + + Guest heartbeat works on a challenge response model. The Titanium + Server Compute Services on the compute node host will challenge the + Guest-Client daemon with a message each interval. The Guest-Client + must respond prior to the next interval with a message indicating good + health. If the Titanium Cloud Compute Services does not receive a valid + response, or if the response specifies that the VM is in ill health, then + corrective action is taken. + + The mechanism can be extended by allowing additional VM resident application + specific scripts and processes, to register for heartbeating. Each script + or process can specify its own heartbeat interval, and its own corrective + action to be taken against the VM as a whole. On ill health the Guest-Client + reports ill health to the Titanium Cloud Compute Services on the compute node + host on the next challenge, and provoke the corrective action. + + This mechanism allows for detection of a failed or hung QEMU/KVM instance, + or a failure of the OS within the VM to schedule the Guest-Client process + or to route basic IO, or an application level error/failure. + + Configuring the Guest-Client Heartbeat & Application Health Check ... + + The heartbeat interval defaults to every second and can be overridden + by the VM in the guest_heartbeat.conf. + + /etc/guest-client/heartbeat/guest_heartbeat.conf: + ## This specifies the interval between heartbeats in milliseconds between the + ## guest-client heartbeat and the Titanium Cloud Compute Services on the + ## compute node host. + HB_INTERVAL=1000 + + The corrective action defaults to 'reboot' and can be overridden by the + VM in the guest_heartbeat.conf. + + /etc/guest-client/heartbeat/guest_heartbeat.conf: + ## This specifies the corrective action against the VM in the case of a + ## heartbeat failure between the guest-client and Titanium Cloud Compute + ## Services on the compute node host and also when the health script + ## configured below fails. + ## + ## Your options are: + ## "log" Only a log is issued. + ## "reboot" Issue a reboot against this VM. + ## "stop" Issue a stop against this VM. + ## + CORRECTIVE_ACTION="reboot" + + A health check script can be registered to run periodically to verify + the health of the VM. This is specified in the guest_heartbeat.conf. + + /etc/guest-client/heartbeat/guest_heartbeat.conf: + ## The Path to the health check script. This is optional. + ## The script will be called periodically to check for the health of the VM. + ## The health check interval is specified in seconds. + HEALTH_CHECK_INTERVAL=30 + HEALTH_CHECK_SCRIPT="/etc/guest-client/heartbeat/sample_health_check_script" + + + Configuring Guest Notifications and Voting + ------------------------------------------ + The Guest-Client running in the VM can be used as a conduit for + notifications of VM lifecycle events being taken by the Titanium Cloud that + will impact this VM. Reboots, pause/resume and migrations are examples of + the types of events your VM can be notified of. Depending on the event, a + vote on the event maybe required before a notification is sent. Notifications + may precede the event, follow it or both. The full table of events and + notifications is found below. + + Titanium Action Event Name Vote* Pre-notification Post-notification Timeout + --------------- ----------------- ---- ---------------- ----------------- ------- + stop stop yes yes no shutdown + reboot reboot yes yes no shutdown + pause pause yes yes no suspend + unpause unpause no no yes resume + suspend suspend yes yes no suspend + resume resume no no yes resume + resize resize_begin yes yes no suspend + resize_end no no yes resume + live-migrate live_migrate_begin yes yes no suspend + live_migrate_end no no yes resume + cold-migrate cold_migrate_begin yes yes no suspend + cold_migrate_end no no yes resume** + + * voting has its own timeout called 'vote' that is event independent. + ** after VM reboot and reconnection which is subject to the 'restart' timeout. + + Notifications are an opportunity for the VM to take preparatory actions + in anticipation of the forthcoming event, or recovery actions after + the event has completed. A few examples + - A reboot or stop notification might allow the application to stop + accepting transactions and cleanly wrap up existing transactions. + - A 'resume' notification after a suspend might trigger a time + adjustment. + - Pre and post migrate notifications might trigger the application + to de-register and then re-register with a network load balancer. + + If you register a notification handler, it will receive all events. If + an event is not of interest, it should return immediately with a + successful return code. + + A process may only register a single notification handler. However + multiple processes may independently register handlers. Also a script + based handler may be registered via the guest_heartbeat.conf. When + multiple processes and scripts register notification handlers, they + will be run in parallel. + + Notifications are subject to configurable timeouts. Timeouts are + specified by each registered process and in the guest_heartbeat.conf. + The timeouts in the guest_heartbeat.conf govern the maximum time all + registered notification handlers have to complete. + + While pre-notification handlers are running, the event will be delayed. + If the timeout is reached, the event will be allowed to proceed. + + While post-notification handlers are running, or waiting to be run, + the Titanium Cloud will not be able to declare the action complete. + Keep in mind that many events that offer a post notification will + require the VM's Guest-Client to reconnect to the compute host, and + that may be further delayed while the VM is rebooted as in a cold + migration. When post-notification is finally triggered, it is subject + to a timeout as well. If the timeout is reached, the event will be + declared complete. + + NOTE: A post-event notification that follows a reboot, as in the + cold_migrate_end event, is a special case. It will be triggered as + soon as the local heartbeat server reconnects with the compute host, + and likely before any processes have a chance to register a handler. + The only handler guaranteed to see such a notification is a script + directly registered by the Guest-Client itself via guest_heartbeat.conf. + + + In addition to notifications, there is also an opportunity for the VM + to vote on any proposed event. Voting precedes all notifications, + and offers the VM a chance to reject the event the Titanium Cloud wishes + to initiate. If multiple handlers are registered, it only takes one + rejection to abort the event. + + The same handler that handles notifications also handles voting. + + Voting is subject to a configurable timeout. The same timeout applies + regardless of the event. The timeout is specified when the Guest-Client + registers with compute services on the host. The timeout is specified in + the guest_heartbeat.conf file. This timeout governs the maximum time all + registered voting handlers have to complete the vote. + + Any voters that fail to vote within the timeout are assumed to have agreed + with the proposed action. + + Rejecting an event should be the exception, not the rule, reserved for + cases when the VM is handling an exceptionally sensitive operation, + as well as a slow operation that can't complete in the notification timeout. + An example + - an active-standby application deployment (1:1), where the active + rejects a shutdown or pause or ... due to its peer standby is not + ready or synchronized. + + A vote handler should generally not take any action beyond returning its + vote. Just because you vote to accept, doesn't mean all your peers + will also accept (i.e. the event might not happen). Taking an action + against an event that never happens is almost certainly NOT what you want. + Instead save your actions for the notification that follows if no one + rejects. The one exception might be to temporarily block the initiation of + any new task that would cause you to vote to reject an event in the near + future. The theory being that the requester of the event may retry in + the near future. + + The Titanium Cloud is not required to offer a vote. Voting may be + bypassed on certain recovery scenarios. + + Configuring Guest-Client Notification and Voting ... + + ## The overall time to vote in seconds regardless of the event being voted + ## upon. It should reflect the slowest of all expected voters when in a sane + ## and healthy condition, plus some allowance for scheduling and messaging. + VOTE=8 + + ## The overall time to handle a stop or reboot notification in seconds. + ## It should reflect the slowest of all expected notification handlers + ## when in a sane and healthy condition, plus some allowance for scheduling + ## and messaging. + SHUTDOWN_NOTICE=8 + + ## The overall time to handle a pause, suspend or migrate-begin notification + ## in seconds. It should reflect the slowest of all expected notification + ## handlers when in a sane and healthy condition, plus some allowance for + ## scheduling and messaging. + SUSPEND_NOTICE=8 + + ## The overall time to handle an unpause, resume or migrate-end notification + ## in seconds. It should reflect the slowest of all expected notification + ## handlers when in a sane and healthy condition, plus some allowance for + ## scheduling and messaging. It does not include reboot time. + RESUME_NOTICE=13 + + ## The overall time to reboot, up to the point the guest-client heartbeat + ## starts in seconds. Allow for some I/O contention. + RESTART=300 + + ## The Path to the event notification script. This is optional. + ## The script will be called when an action is initiated that will impact + ## the VM. + ## + ## The event handling script is invoked with two parameters: + ## + ## event_handling_script + ## + ## MSG_TYPE is one of: + ## 'revocable' Indicating a vote is called for. Return zero to accept, + ## non-zero to reject. For a rejection, the first line of + ## stdout emitted by the script will be captured and logged + ## logged indicating why the event was rejected. + ## + ## 'irrevocable' Indicating this is a notification only. Take preparatory + ## actions and return zero if successful, or non-zero on + ## failure. For a failure, the first line of stdout + ## emitted by the script will be captured and logged + ## indicating the cause of the failure. + ## + ## EVENT is one of: ( 'stop', 'reboot', 'pause', 'unpause', 'suspend', + ## 'resume', 'live_migrate_begin', + ## 'live_migrate_end', 'cold_migrate_begin', + ## 'cold_migrate_end' ) + ## + EVENT_NOTIFICATION_SCRIPT="/etc/guest-client/heartbeat/sample_event_handling_script" + + +VM Application Setup +==================== + An application running in the VM may wish to register directly for voting + and notifications. See the guest_heartbeat_api.h for more details. A + working example can be found in the guest_client_api source directory in the + sample_guest_app.c file. + + To compile the sample-guest-app run ... + cd wrs-guest-heartbeat-3.0.0 + make sample + + This will create an executable called sample-guest-app in the 'build' + directory. + + When compiling the guest application ... + + include headers: + #include + #include + #include + + link with: + -lguest_common_api -lguest_heartbeat_api diff --git a/guest-client/guest-client-3.0.1/TiS-Guest-Heartbeat-Service.doc b/guest-client/guest-client-3.0.1/TiS-Guest-Heartbeat-Service.doc new file mode 100644 index 0000000000000000000000000000000000000000..17bf86caf840844ee4c448eeae047084c2abf72a GIT binary patch literal 393728 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 literal 0 HcmV?d00001 diff --git a/guest-client/guest-client-3.0.1/TiS-Guest-Heartbeat-Service.pdf b/guest-client/guest-client-3.0.1/TiS-Guest-Heartbeat-Service.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f2e90b7cd41ff1f2d408446af66b869cf4854f43 GIT binary patch literal 1105859 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 ~Z5}(KJSc3?yu;SBizE~Yo0q@_xzrtfvv2fGP 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

v3+SFY<%G3A%L%Wdv^a>2Lh$J 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�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 UgDj&Hs&*J4lPoC(Ie_&R4-4g#mJ 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%0DI5Io8R3;DP;wEm*DVjsJB$Tdb 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ΞzR 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 & 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 `edb{6u2t&?6qLOpYVaSSvA%`KyAx8xf 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 U{ar0SOMUINi&lndZ`S^Q0XBLEFaQ7m literal 0 HcmV?d00001 diff --git a/guest-client/guest-client-3.0.1/guest_client/Makefile b/guest-client/guest-client-3.0.1/guest_client/Makefile new file mode 100755 index 00000000..5bccc9fc --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/Makefile @@ -0,0 +1,84 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +SHELL = /bin/sh + +## Configuration Directory Variables +prefix := /usr/local +exec_prefix := $(prefix) +sysconfdir := $(prefix)/etc +includedir := $(prefix)/include +libdir := $(exec_prefix)/lib +bindir := $(exec_prefix)/bin + +MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CURRENT_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH))) +BUILD_DIR := $(CURRENT_DIR)/build +CONFIG_DIR := $(sysconfdir)/guest-client/heartbeat +PACKAGE_DIR := $(BUILD_DIR)/package +PACKAGE_ROOT_DIR := $(PACKAGE_DIR)/rootdir + +.PHONY: all build sample clean distclean package + +all: build + +build: + mkdir -p --mode 755 $(BUILD_DIR) + @(cd src; make --no-print-directory build \ + sysconfdir=$(sysconfdir) BUILD_DIR=$(BUILD_DIR)) + +sample: + @: + +clean: + @-(cd src; make --no-print-directory clean BUILD_DIR=$(BUILD_DIR)) + +distclean: clean + +package: + @(mkdir -p --mode 755 $(PACKAGE_DIR)) + @(echo "Packaging guest-client.init in $(PACKAGE_DIR)") + @(cp $(CURRENT_DIR)/scripts/guest-client.init $(PACKAGE_DIR)/guest-client.init) + @(chmod 755 $(PACKAGE_DIR)/guest-client.init) + @(echo "Packaging guest-client.service in $(PACKAGE_DIR)") + @(cp $(CURRENT_DIR)/scripts/guest-client.service $(PACKAGE_DIR)/guest-client.service) + @(chmod 644 $(PACKAGE_DIR)/guest-client.service) + @(echo "Packaging guest-client.systemd in $(PACKAGE_DIR)") + @(cp $(CURRENT_DIR)/scripts/guest-client.systemd $(PACKAGE_DIR)/guest-client.systemd) + @(mkdir -p --mode 755 $(PACKAGE_ROOT_DIR)/$(CONFIG_DIR)) + @(echo "Packaging guest_heartbeat.conf in $(PACKAGE_ROOT_DIR)/$(CONFIG_DIR)") + @(cp $(CURRENT_DIR)/scripts/guest_heartbeat.conf $(PACKAGE_ROOT_DIR)/$(CONFIG_DIR)/guest_heartbeat.conf) + @(echo "Packaging sample_event_handling_script in $(PACKAGE_ROOT_DIR)/$(CONFIG_DIR)") + @(cp $(CURRENT_DIR)/scripts/sample_event_handling_script $(PACKAGE_ROOT_DIR)/$(CONFIG_DIR)/sample_event_handling_script) + @(echo "Packaging sample_health_check_script in $(PACKAGE_ROOT_DIR)/$(CONFIG_DIR)") + @(cp $(CURRENT_DIR)/scripts/sample_health_check_script $(PACKAGE_ROOT_DIR)/$(CONFIG_DIR)/sample_health_check_script) + @-(cd src; make --no-print-directory package BUILD_DIR=$(BUILD_DIR) \ + PACKAGE_DIR=$(PACKAGE_DIR) prefix=$(prefix) exec_prefix=$(exec_prefix) \ + sysconfdir=$(sysconfdir) includedir=$(includedir) libdir=$(libdir) \ + bindir=$(bindir)) diff --git a/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.init b/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.init new file mode 100755 index 00000000..f4cc6df0 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.init @@ -0,0 +1,183 @@ +#! /bin/sh +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# +# chkconfig: - 96 96 +# +### BEGIN INIT INFO +# Short-Description: Guest-Client +# Provides: guest-client +# Default-Start: 3 5 +# Default-Stop: 0 1 2 6 +# Required-Start: +# Required-Stop: +### END INIT INFO + +# Assumes that LSB (Linux Standard Base) scripts are available. On Fedora and +# other Red Hat related distros, the redhat-lsb package is optional. +if [ -f /etc/init.d/functions ] +then + . /etc/init.d/functions +else + . /lib/lsb/init-functions +fi + +# LSB Exit Codes +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess arguments +# 3 - unimplemented feature +# 4 - user had insufficient privileges +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# +# LSB Exit Status Codes +# 0 - program is running or service OK +# 1 - program is dead and /var/run pid file exists +# 2 - program is dead and /var/lock lock file exists +# 3 - program is not running +# 4 - program or service status is unknown +# +RETVAL=0 + +# Update binary location and device to be used, if necessary. +GUEST_CLIENT_NAME="guest-client" +GUEST_CLIENT_PIDFILE="/var/run/${GUEST_CLIENT_NAME}.pid" +GUEST_CLIENT="/usr/bin/${GUEST_CLIENT_NAME}" +GUEST_CLIENT_DEVICE="/dev/virtio-ports/cgcs.heartbeat" + +if [ ! -e "${GUEST_CLIENT}" ] +then + echo "${GUEST_CLIENT} is missing" + exit 5 +fi + +PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin + +case "$1" in + start) + args="" + if [ -n ${GUEST_CLIENT_DEVICE} ] + then + args="--device ${GUEST_CLIENT_DEVICE}" + fi + + echo -n "Starting ${GUEST_CLIENT_NAME}: " + if [ -n "`pidof ${GUEST_CLIENT}`" ] + then + # Something might have started guest-client already. + RETVAL=0 + else + start-stop-daemon --start --background --make-pidfile --pidfile ${GUEST_CLIENT_PIDFILE} --exec ${GUEST_CLIENT} -- ${args} + RETVAL=$? + fi + if [ ${RETVAL} -eq 0 ] + then + echo "OK" + else + echo "FAIL" + RETVAL=1 + fi + ;; + + stop) + echo -n "Stopping ${GUEST_CLIENT_NAME}: " + if [ -n "`pidof ${GUEST_CLIENT}`" ] + then + killproc ${GUEST_CLIENT} + fi + + SHUTDOWN_TIMEOUT=10 + count=0 + while [ ${count} -lt ${SHUTDOWN_TIMEOUT} ] + do + pidof ${GUEST_CLIENT} &> /dev/null + rc=$? + if [ ${rc} -eq 1 ] + then + echo "OK" + break + fi + count=`expr ${count} + 1` + sleep 1 + done + + pidof ${GUEST_CLIENT} &> /dev/null + rc=$? + if [ ${rc} -eq 0 ] + then + echo "FAIL" + RETVAL=1 + fi + + rm -f ${GUEST_CLIENT_PIDFILE} + ;; + + status) + pid=`cat ${GUEST_CLIENT_PIDFILE} 2>/dev/null` + if [ -n "${pid}" ] + then + if ps -p ${pid} &>/dev/null + then + echo "${GUEST_CLIENT_NAME} is running" + RETVAL=0 + else + echo "${GUEST_CLIENT_NAME} is not running but has pid file" + RETVAL=1 + fi + else + echo "${GUEST_CLIENT_NAME} is not running" + RETVAL=3 + fi + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + reload) + pid=`cat ${GUEST_CLIENT_PIDFILE} 2>/dev/null` + if [ -n "${pid}" ] + then + echo "${GUEST_CLIENT_NAME} reload" + kill -HUP ${pid} + fi + ;; + + *) + echo "usage: $0 { start | stop | status | restart | reload }" + ;; +esac + +exit ${RETVAL} diff --git a/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.service b/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.service new file mode 100755 index 00000000..837a617f --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.service @@ -0,0 +1,57 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +[Unit] +Description=Titanium Guest-Client +After=network.target + +[Service] +Type=forking +PIDFile=/var/run/guest-client.pid +EnvironmentFile=/etc/guest-client/heartbeat/guest_heartbeat.conf +ExecStart=/etc/guest-client/guest-client.systemd start +ExecStop=/etc/guest-client/guest-client.systemd stop +ExecReload=/etc/guest-client/guest-client.systemd restart +# We want systemd to give guest-client some time to finish gracefully, but +# still want it to kill guest-client after TimeoutStopSec if something went +# wrong during the graceful stop. Normally, systemd sends SIGTERM signal right +# after the ExecStop, which would kill heartbeat. We are sending useless SIGCONT +# here to give guest-client time to finish. +KillSignal=SIGCONT +# Exit code of 6 indicates it is not configured and no restart. +# if /dev/virtio-ports/cgcs.heartbeat is not found, guest-client +# returns 6 on exit. We don't want to keep restarting guest-client +# if it is not configured. +RestartPreventExitStatus=6 +Restart=always +RestartSec=15 + +[Install] +WantedBy=multi-user.target diff --git a/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.systemd b/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.systemd new file mode 100755 index 00000000..ba688efb --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/scripts/guest-client.systemd @@ -0,0 +1,171 @@ +#! /bin/sh +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# Assumes that LSB (Linux Standard Base) scripts are available. On Fedora and +# other Red Hat related distros, the redhat-lsb package is optional. +if [ -f /etc/init.d/functions ] +then + . /etc/init.d/functions +else + . /lib/lsb/init-functions +fi + +# LSB Exit Codes +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess arguments +# 3 - unimplemented feature +# 4 - user had insufficient privileges +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# +# LSB Exit Status Codes +# 0 - program is running or service OK +# 1 - program is dead and /var/run pid file exists +# 2 - program is dead and /var/lock lock file exists +# 3 - program is not running +# 4 - program or service status is unknown +# +RETVAL=0 + +# Update binary location and device to be used, if necessary. +GUEST_CLIENT_NAME="guest-client" +GUEST_CLIENT_PIDFILE="/var/run/${GUEST_CLIENT_NAME}.pid" +GUEST_CLIENT="/usr/local/bin/${GUEST_CLIENT_NAME}" +GUEST_CLIENT_DEVICE="/dev/virtio-ports/cgcs.heartbeat" + +if [ ! -e "${GUEST_CLIENT}" ] +then + echo "${GUEST_CLIENT} is missing" + exit 5 +fi + +PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin + +case "$1" in + start) + args="" + if [ -n ${GUEST_CLIENT_DEVICE} ] + then + args="--device ${GUEST_CLIENT_DEVICE}" + fi + + echo -n "Starting ${GUEST_CLIENT_NAME}: " + if [ -n "`pidof ${GUEST_CLIENT}`" ] + then + # Something might have started guest-client already. + RETVAL=0 + else + start-stop-daemon --start --background --make-pidfile --pidfile ${GUEST_CLIENT_PIDFILE} --exec ${GUEST_CLIENT} -- ${args} + RETVAL=$? + fi + if [ ${RETVAL} -eq 0 ] + then + echo "OK" + else + echo "FAIL" + RETVAL=1 + fi + ;; + + stop) + echo -n "Stopping ${GUEST_CLIENT_NAME}: " + if [ -n "`pidof ${GUEST_CLIENT}`" ] + then + killproc ${GUEST_CLIENT} + fi + + SHUTDOWN_TIMEOUT=10 + count=0 + while [ ${count} -lt ${SHUTDOWN_TIMEOUT} ] + do + pidof ${GUEST_CLIENT} &> /dev/null + rc=$? + if [ ${rc} -eq 1 ] + then + echo "OK" + break + fi + count=`expr ${count} + 1` + sleep 1 + done + + pidof ${GUEST_CLIENT} &> /dev/null + rc=$? + if [ ${rc} -eq 0 ] + then + echo "FAIL" + RETVAL=1 + fi + + rm -f ${GUEST_CLIENT_PIDFILE} + ;; + + status) + pid=`cat ${GUEST_CLIENT_PIDFILE} 2>/dev/null` + if [ -n "${pid}" ] + then + if ps -p ${pid} &>/dev/null + then + echo "${GUEST_CLIENT_NAME} is running" + RETVAL=0 + else + echo "${GUEST_CLIENT_NAME} is not running but has pid file" + RETVAL=1 + fi + else + echo "${GUEST_CLIENT_NAME} is not running" + RETVAL=3 + fi + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + reload) + pid=`cat ${GUEST_CLIENT_PIDFILE} 2>/dev/null` + if [ -n "${pid}" ] + then + echo "${GUEST_CLIENT_NAME} reload" + kill -HUP ${pid} + fi + ;; + + *) + echo "usage: $0 { start | stop | status | restart | reload }" + ;; +esac + +exit ${RETVAL} diff --git a/guest-client/guest-client-3.0.1/guest_client/scripts/guest_heartbeat.conf b/guest-client/guest-client-3.0.1/guest_client/scripts/guest_heartbeat.conf new file mode 100755 index 00000000..eb9a898b --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/scripts/guest_heartbeat.conf @@ -0,0 +1,116 @@ +### +# Copyright (c) <2013-2017>, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# 1) Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# 2) Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# 3) Neither the name of Wind River Systems nor the names of its contributors may be +# used to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +### + +################################################## +## Heartbeat health check options + +## This specifies the interval between heartbeats in milliseconds between the +## guest-client heartbeat and the Titanium Cloud Compute Services on the +## compute node host. +HB_INTERVAL=1000 + +## This specifies the corrective action against the VM in the case of a +## heartbeat failure between the guest-client and Titanium Cloud Compute +## Services on the compute node host and also when the health script +## configured below fails. +## +## Your options are: +## "log" Only a log is issued. +## "reboot" Issue a reboot against this VM. +## "stop" Issue a stop against this VM. +## +CORRECTIVE_ACTION="reboot" + + +################################################## +## Heartbeat event notification and voting options + +## The overall time to vote in seconds regardless of the event being voted +## upon. It should reflect the slowest of all expected voters when in a sane +## and healthy condition, plus some allowance for scheduling and messaging. +VOTE=8 + +## The overall time to handle a stop or reboot notification in seconds. +## It should reflect the slowest of all expected notification handlers +## when in a sane and healthy condition, plus some allowance for scheduling +## and messaging. +SHUTDOWN_NOTICE=8 + +## The overall time to handle a pause, suspend or migrate-begin notification +## in seconds. It should reflect the slowest of all expected notification +## handlers when in a sane and healthy condition, plus some allowance for +## scheduling and messaging. +SUSPEND_NOTICE=8 + +## The overall time to handle an unpause, resume or migrate-end notification +## in seconds. It should reflect the slowest of all expected notification +## handlers when in a sane and healthy condition, plus some allowance for +## scheduling and messaging. It does not include reboot time. +RESUME_NOTICE=13 + +## The overall time to reboot, up to the point the guest-client heartbeat +## starts in seconds. Allow for some I/O contention. +RESTART=600 + + +################################################## +## The Path to the health check script. This is optional. +## The script will be called periodically to check for the health of the VM. +## The health check interval is specified in seconds. +HEALTH_CHECK_INTERVAL=30 +HEALTH_CHECK_SCRIPT="/etc/guest-client/heartbeat/sample_health_check_script" + + +################################################## +## The Path to the event notification script. This is optional. +## The script will be called when an action is initiated that will impact +## the VM. +## +## The event handling script is invoked with two parameters: +## +## event_handling_script +## +## MSG_TYPE is one of: +## 'revocable' Indicating a vote is called for. Return zero to accept, +## non-zero to reject. For a rejection, the first line of +## stdout emitted by the script will be captured and logged +## logged indicating why the event was rejected. +## +## 'irrevocable' Indicating this is a notification only. Take preparatory +## actions and return zero if successful, or non-zero on +## failure. For a failure, the first line of stdout +## emitted by the script will be captured and logged +## indicating the cause of the failure. +## +## EVENT is one of: ( 'stop', 'reboot', 'pause', 'unpause', 'suspend', +## 'resume', 'live_migrate_begin', +## 'live_migrate_end', 'cold_migrate_begin', +## 'cold_migrate_end' ) +## +EVENT_NOTIFICATION_SCRIPT="/etc/guest-client/heartbeat/sample_event_handling_script" diff --git a/guest-client/guest-client-3.0.1/guest_client/scripts/sample_event_handling_script b/guest-client/guest-client-3.0.1/guest_client/scripts/sample_event_handling_script new file mode 100755 index 00000000..3113999c --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/scripts/sample_event_handling_script @@ -0,0 +1,165 @@ +#!/bin/sh +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +MSG_TYPE=$1 +EVENT=$2 + +FILE="/tmp/event_timeout" +if [ -f $FILE ]; +then + echo "File $FILE exists." + logger "File $FILE exists. Run slowly to trigger timeout" + sleep 300 + logger "$FILE induced delay ends" +else + logger "File $FILE does not exist." +fi + +if [ "$MSG_TYPE" == "revocable" ] +then + # Vote on the proposed action ( 0 == agree, 1 == reject ) + # Take no actions yet. + # If no other parties have rejected the proposed action, an "irrevocable" + # notification will soon follow. + + if [ $EVENT == "stop" ] + then + FILE="/tmp/vote_no_to_stop" + + elif [ "$EVENT" == "reboot" ] + then + FILE="/tmp/vote_no_to_reboot" + + elif [ "$EVENT" == "suspend" ] || [ "$EVENT" == "pause" ] + then + FILE="/tmp/vote_no_to_suspend" + + elif [ "$EVENT" == "live_migrate_begin" ] || [ "$EVENT" == "cold_migrate_begin" ] + then + FILE="/tmp/vote_no_to_migrate" + + elif [ "$EVENT" == "resize_begin" ] + then + FILE="/tmp/vote_no_to_resize" + + elif [ "$EVENT" == "live_migrate_end" ] || [ "$EVENT" == "cold_migrate_end" ] || + [ "$EVENT" == "resize_end" ] || [ "$EVENT" == "unpause" ] || + [ "$EVENT" == "resume" ] + then + logger "Should never be asked to vote on $EVENT" + echo "Should never be asked to vote on $EVENT" + exit 1 + fi + + if [ -f $FILE ]; + then + echo "File $FILE exists." + logger "File $FILE exists." + logger "Vote against $EVENT at this time." + + # Vote no to shutdown. + exit 1 + else + echo "File $FILE does not exist." + logger "File $FILE does not exists." + logger "Vote to allow $EVENT" + + # Vote yes to shutdown. + exit 0 + fi + +elif [ "$MSG_TYPE" == "irrevocable" ] +then + + if [ $EVENT == "stop" ] + then + logger "Notification of pending $EVENT received." + # Place clean shutdown actions here. Idea is to hand off activity and + # cleanly stop the payload application. It is not required to stop the + # kernel, an ACPI power-off event will follow. + + elif [ "$EVENT" == "reboot" ] + then + logger "Notification of pending $EVENT received." + # Place clean shutdown actions here. Idea is to hand off activity and + # cleanly stop the application. It is not required to stop/reboot the + # kernel, an ACPI power-off event will follow, and then a power-on + + elif [ "$EVENT" == "pause" ] || [ "$EVENT" == "suspend" ] + then + logger "Notification of pending $EVENT received." + # This VM will be paused or suspended but not rebooted. + # Hand off activity and cleanly stop the application if required. + + elif [ "$EVENT" == "unpause" ] || [ "$EVENT" == "resume" ] + then + logger "Notification of $EVENT completion received." + # This VM has resumed from a paused or suspended state. + # Restart your application and take activity as required. + + elif [ "$EVENT" == "resize_begin" ] + then + logger "Notification of pending resize received. ($EVENT)" + # This VM will soon be resized. + # Hand off activity and cleanly stop the payload application if required. + + elif [ "$EVENT" == "resize_end" ] + then + logger "Notification of resize complete received." + # This VM has been resized. + # Restart your application and/or re-establish your network connectivity + # as required. + + elif [ "$EVENT" == "live_migrate_begin" ] || [ "$EVENT" == "cold_migrate_begin" ] + then + logger "Notification of pending migration received. ($EVENT)" + # This VM will soon relocate to a different host. + # Network connectivity may change. + # Hand off activity and cleanly stop the payload application if required. + + elif [ "$EVENT" == "live_migrate_end" ] || [ "$EVENT" == "cold_migrate_end" ] + then + logger "Notification of migration complete received." + # This VM has finished relocation to a new host. + # Network connectivity may have changed. + # Restart your application and/or re-establish your network connectivity + # as required. + fi + + sleep 1 + exit 0 + +else + echo "Unknown message type '$MSG_TYPE'" + logger "Unknown message type '$MSG_TYPE'" + sleep 1 + exit -1 +fi diff --git a/guest-client/guest-client-3.0.1/guest_client/scripts/sample_health_check_script b/guest-client/guest-client-3.0.1/guest_client/scripts/sample_health_check_script new file mode 100755 index 00000000..72924a48 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/scripts/sample_health_check_script @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +FILE="/tmp/unhealthy" +if [ -f $FILE ]; +then + echo "File $FILE exists." + rm -f $FILE + exit 1 +else + echo "File $FILE does not exist." +fi + +exit 0 diff --git a/guest-client/guest-client-3.0.1/guest_client/src/Makefile b/guest-client/guest-client-3.0.1/guest_client/src/Makefile new file mode 100755 index 00000000..9b3ab8e3 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/Makefile @@ -0,0 +1,94 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +SHELL = /bin/sh + +## Configuration Directory Variables +prefix := /usr/local +exec_prefix := $(prefix) +sysconfdir := $(prefix)/etc +includedir := $(prefix)/include +libdir := $(exec_prefix)/lib +bindir := $(exec_prefix)/bin + +MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CURRENT_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH))) + +ifndef BUILD_DIR +$(error BUILD_DIR undefined) +endif + +PACKAGE_DIR := $(BUILD_DIR)/package +PACKAGE_ROOT_DIR := $(PACKAGE_DIR)/rootdir + +.SUFFIXES: +.SUFFIXES: .c .o + +.PHONY: all build heartbeat clean distclean package + +heartbeat_C_SRCS := $(wildcard $(CURRENT_DIR)/heartbeat/*.c) +heartbeat_C_SRCS := $(subst $(CURRENT_DIR)/heartbeat/,,$(heartbeat_C_SRCS)) +heartbeat_C_OBJS := ${heartbeat_C_SRCS:.c=.o} + +program_NAME := guest-client +program_C_INCLUDES := -I$(CURRENT_DIR) -I$(CURRENT_DIR)/heartbeat +program_C_INCLUDES += -I$(CURRENT_DIR)/../../include +program_C_SRCS := $(wildcard *.c) +program_C_OBJS := ${program_C_SRCS:.c=.o} +program_LDLIBS := -lrt +program_BUILD_OBJS := $(addprefix $(BUILD_DIR)/, $(heartbeat_C_OBJS)) +program_BUILD_OBJS += $(addprefix $(BUILD_DIR)/, $(program_C_OBJS)) + +CFLAGS = -g -O2 -Wall -Werror -Wformat -DSYSCONFDIR=$(sysconfdir) + +all: build + +heartbeat: + @(cd heartbeat; make --no-print-directory build \ + sysconfdir=$(sysconfdir) BUILD_DIR=$(BUILD_DIR)) + +%.o: %.c + $(CC) $(CFLAGS) $(program_C_INCLUDES) -c $^ -o $(BUILD_DIR)/$@ + +$(program_NAME): heartbeat $(program_C_OBJS) + $(CC) $(CFLAGS) $(program_BUILD_OBJS) $(program_LDLIBS) \ + -o $(BUILD_DIR)/$(program_NAME) -ljson-c + +build: $(program_NAME) + +clean: + @-($(RM) -Rf $(BUILD_DIR)/*) + +distclean: clean + +package: + @(mkdir -p --mode 755 $(PACKAGE_ROOT_DIR)/$(bindir)) + @(echo "Packaging $(program_NAME) in $(PACKAGE_ROOT_DIR)/$(bindir)") + @(cp $(BUILD_DIR)/$(program_NAME) $(PACKAGE_ROOT_DIR)/$(bindir)/$(program_NAME)) + @(chmod 755 $(PACKAGE_ROOT_DIR)/$(bindir)/$(program_NAME)) diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_channel.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_channel.c new file mode 100755 index 00000000..557baabd --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_channel.c @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_channel.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_unix.h" + +typedef struct { + bool inuse; + bool char_device; + int sock; + char dev_name[GUEST_DEVICE_NAME_MAX_CHAR]; +} GuestChannelT; + +static GuestChannelT _channel[GUEST_MAX_CONNECTIONS]; + +// **************************************************************************** +// Guest Channel - Find Empty +// ========================== +static GuestChannelIdT guest_channel_find_empty( void ) +{ + GuestChannelT* channel = NULL; + + unsigned int channel_id; + for (channel_id=0; GUEST_MAX_CONNECTIONS > channel_id; ++channel_id) + { + channel = &(_channel[channel_id]); + if (!channel->inuse) + return channel_id; + } + + return GUEST_CHANNEL_ID_INVALID; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Find +// ==================== +static GuestChannelT* guest_channel_find( GuestChannelIdT channel_id ) +{ + GuestChannelT* channel = NULL; + + if ((0 <= channel_id)&&(GUEST_MAX_CONNECTIONS > channel_id)) + { + channel = &(_channel[channel_id]); + if (channel->inuse) + return channel; + } + + return NULL; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Send +// ==================== +GuestErrorT guest_channel_send( + GuestChannelIdT channel_id, void* msg, int msg_size ) +{ + GuestChannelT* channel; + ssize_t result; + + channel = guest_channel_find(channel_id); + if (NULL == channel) + { + DPRINTFE("Invalid channel identifier, channel_id=%i.", channel_id); + return GUEST_FAILED; + } + + result = write(channel->sock, msg, msg_size); + if (0 > result) + { + if (ENODEV == errno) + { + DPRINTFI("Channel %i on device %s disconnected.", channel_id, + channel->dev_name); + return GUEST_OKAY; + } else { + DPRINTFE("Failed to write to channel on device %s, error=%s.", + channel->dev_name, strerror(errno)); + return GUEST_FAILED; + } + } + + DPRINTFV("Sent message over channel on device %s.", channel->dev_name); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Receive +// ======================= +GuestErrorT guest_channel_receive( + GuestChannelIdT channel_id, char* msg_buf, int msg_buf_size, + int* msg_size ) +{ + GuestChannelT* channel; + ssize_t result; + + channel = guest_channel_find(channel_id); + if (NULL == channel) + { + DPRINTFE("Invalid channel identifier, channel_id=%i.", channel_id); + return GUEST_FAILED; + } + + result = read(channel->sock, msg_buf, msg_buf_size); + if (0 > result) + { + if (EINTR == errno) + { + DPRINTFD("Interrupted on socket read, error=%s.", strerror(errno)); + return GUEST_INTERRUPTED; + + } else if (ENODEV == errno) { + DPRINTFI("Channel %i on device %s disconnected.", channel_id, + channel->dev_name); + *msg_size = 0; + return GUEST_OKAY; + + } else { + DPRINTFE("Failed to read from socket, error=%s.", strerror(errno)); + return GUEST_FAILED; + } + } else if (0 == result) { + DPRINTFD("No message received from socket."); + *msg_size = 0; + return GUEST_OKAY; + + } else { + DPRINTFV("Received message, msg_size=%i.", result); + *msg_size = result; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Open +// ==================== +GuestErrorT guest_channel_open( char dev_name[], GuestChannelIdT* channel_id ) +{ + int fd; + int result; + struct stat stat_data; + GuestChannelIdT empty_channel_id; + GuestChannelT* channel; + GuestErrorT error; + + empty_channel_id = guest_channel_find_empty(); + if (GUEST_CHANNEL_ID_INVALID == empty_channel_id) + { + DPRINTFE("Allocation of channel failed, no free resources."); + return GUEST_FAILED; + } + + channel = &(_channel[empty_channel_id]); + memset(channel, 0, sizeof(GuestChannelT)); + + result = stat(dev_name, &stat_data); + if (0 > result) + { + int err = errno; + if (err == ENOENT) + { + DPRINTFI("Failed to stat, error=%s.", strerror(err)); + DPRINTFI("%s file does not exist, guest heartbeat not configured.", + dev_name); + return GUEST_NOT_CONFIGURED; + } + else { + DPRINTFE("Failed to stat, error=%s.", strerror(err)); + return GUEST_FAILED; + } + } + + if (S_ISCHR(stat_data.st_mode)) + { + fd = open(dev_name, O_RDWR); + if (0 > fd) + { + DPRINTFE("Failed to open device %s, error=%s.", dev_name, + strerror(errno)); + return GUEST_FAILED; + } + + result = fcntl(fd, F_SETFD, FD_CLOEXEC); + if (0 > result) + { + DPRINTFE("Failed to set to close on exec, error=%s.", + strerror(errno)); + close(fd); + return GUEST_FAILED; + } + + result = fcntl(fd, F_SETOWN, getpid()); + if (0 > result) + { + DPRINTFE("Failed to set socket ownership, error=%s.", + strerror(errno)); + close(fd); + return GUEST_FAILED; + } + + result = fcntl(fd, F_GETFL); + if (0 > result) + { + DPRINTFE("Failed to get socket options, error=%s.", + strerror(errno)); + close(fd); + return GUEST_FAILED; + } + + result = fcntl(fd, F_SETFL, result | O_NONBLOCK | O_ASYNC); + if (0 > result) + { + DPRINTFE("Failed to set socket options, error=%s.", + strerror(errno)); + close(fd); + return GUEST_FAILED; + } + + DPRINTFI("Opened character device %s", dev_name); + + } else { + error = guest_unix_open(&fd); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to open unix socket %s, error=%s.", + dev_name, guest_error_str(error)); + return error; + } + error = guest_unix_connect(fd, dev_name); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to connect unix socket %s, error=%s.", + dev_name, guest_error_str(error)); + close(fd); + return error; + } + + DPRINTFI("Opened unix socket %s", dev_name); + } + + channel->inuse = true; + snprintf(channel->dev_name, sizeof(channel->dev_name), "%s", dev_name); + channel->char_device = S_ISCHR(stat_data.st_mode); + channel->sock = fd; + *channel_id = empty_channel_id; + + DPRINTFD("Opened channel over device %s.", channel->dev_name); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Close +// ===================== +GuestErrorT guest_channel_close( GuestChannelIdT channel_id ) +{ + GuestChannelT* channel; + + channel = guest_channel_find(channel_id); + if (NULL != channel) + { + if (channel->inuse) + { + if (0 <= channel->sock) + close(channel->sock); + + DPRINTFD("Closed channel over device %s.", channel->dev_name); + memset(channel, 0, sizeof(GuestChannelT)); + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Get Selection Object +// ==================================== +int guest_channel_get_selobj( GuestChannelIdT channel_id ) +{ + GuestChannelT *channel; + + channel = guest_channel_find(channel_id); + if (NULL != channel) + return channel->sock; + + return -1; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Initialize +// ========================== +GuestErrorT guest_channel_initialize( void ) +{ + memset(_channel, 0, sizeof(_channel)); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Finalize +// ======================== +GuestErrorT guest_channel_finalize( void ) +{ + memset(_channel, 0, sizeof(_channel)); + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_channel.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_channel.h new file mode 100755 index 00000000..a317cea0 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_channel.h @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_CHANNEL_H__ +#define __GUEST_CHANNEL_H__ + +#include + +#include "guest_limits.h" +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_CHANNEL_ID_INVALID -1 + +typedef int GuestChannelIdT; + +// **************************************************************************** +// Guest Channel - Send +// ==================== +extern GuestErrorT guest_channel_send( + GuestChannelIdT channel_id, void* msg, int msg_size ); +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Receive +// ======================= +extern GuestErrorT guest_channel_receive( + GuestChannelIdT channel_id, char* msg_buf, int msg_buf_size, + int* msg_size ); +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Open +// ==================== +extern GuestErrorT guest_channel_open( + char dev_name[], GuestChannelIdT* channel_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Close +// ===================== +extern GuestErrorT guest_channel_close( GuestChannelIdT channel_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Get Selection Object +// ==================================== +extern int guest_channel_get_selobj( GuestChannelIdT channel_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Initialize +// ========================== +extern GuestErrorT guest_channel_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Channel - Finalize +// ======================== +extern GuestErrorT guest_channel_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_CHANNEL_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.c new file mode 100755 index 00000000..01ae812a --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.c @@ -0,0 +1,312 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_child_death.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_selobj.h" + +#define GUEST_CHILD_DEATH_MAX_DISPATCH 32 + +typedef struct { + bool valid; + pid_t pid; + int exit_code; +} GuestChildDeathInfoT; + +typedef struct { + bool valid; + pid_t pid; + GuestChildDeathCallbackT death_callback; +} GuestChildDeathCallbackInfoT; + +static int _child_death_fd = -1; +static GuestChildDeathCallbackInfoT _callbacks[GUEST_CHILD_PROCESS_MAX]; +static GuestChildDeathInfoT _child_deaths[GUEST_CHILD_PROCESS_MAX]; +static uint64_t _child_death_count = 0; + +// **************************************************************************** +// Guest Child Death - Register +// ============================ +GuestErrorT guest_child_death_register( + pid_t pid, GuestChildDeathCallbackT callback ) +{ + GuestChildDeathCallbackInfoT* callback_info = NULL; + + unsigned int callbacks_i; + for (callbacks_i=0; GUEST_CHILD_PROCESS_MAX > callbacks_i; ++callbacks_i) + { + callback_info = &(_callbacks[callbacks_i]); + + if (callback_info->valid) + { + if (pid == callback_info->pid) + { + callback_info->death_callback = callback; + break; + } + } else { + callback_info->valid = true; + callback_info->pid = pid; + callback_info->death_callback = callback; + break; + } + } + + if (GUEST_CHILD_PROCESS_MAX <= callbacks_i) + { + DPRINTFE("Failed to register child death callback for pid (%i).", + (int) pid); + return GUEST_FAILED; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Deregister +// ============================== +GuestErrorT guest_child_death_deregister( pid_t pid ) +{ + GuestChildDeathCallbackInfoT* callback_info = NULL; + + unsigned int callbacks_i; + for (callbacks_i=0; GUEST_CHILD_PROCESS_MAX > callbacks_i; ++callbacks_i) + { + callback_info = &(_callbacks[callbacks_i]); + + if (!callback_info->valid) + continue; + + if (pid != callback_info->pid) + continue; + + callback_info->valid = 0; + callback_info->pid = 0; + callback_info->death_callback = NULL; + break; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Save +// ======================== +GuestErrorT guest_child_death_save( pid_t pid, int exit_code ) +{ + uint64_t child_death_count = ++_child_death_count; + GuestChildDeathInfoT* info = NULL; + int result; + + result = write(_child_death_fd, &child_death_count, + sizeof(child_death_count)); + if (0 > result) + DPRINTFE("Failed to signal child death, error=%s", strerror(errno)); + + DPRINTFD("Child process (%i) died.", (int) pid); + + unsigned int death_i; + for (death_i=0; GUEST_CHILD_PROCESS_MAX > death_i; ++death_i) + { + info = &(_child_deaths[death_i]); + + if (info->valid) + { + if (pid == info->pid) + { + info->exit_code = exit_code; + break; + } + } else { + info->valid = true; + info->pid = pid; + info->exit_code = exit_code; + break; + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Dispatch +// ============================ +static void guest_child_death_dispatch( int selobj ) +{ + static unsigned int _last_entry = 0; + + uint64_t child_death_count; + GuestChildDeathInfoT* info = NULL; + GuestChildDeathCallbackInfoT* callback_info = NULL; + unsigned int num_child_death_dispatched = 0; + int result; + + result = read(_child_death_fd, &child_death_count, sizeof(child_death_count)); + if (0 > result) + { + if (EINTR == errno) + { + DPRINTFD("Interrupted on read, error=%s.", strerror(errno)); + } else { + DPRINTFE("Failed to dispatch, error=%s.", strerror(errno)); + } + } + + unsigned int death_i; + for( death_i=_last_entry; GUEST_CHILD_PROCESS_MAX > death_i; ++death_i ) + { + info = &(_child_deaths[death_i]); + + if (!info->valid) + continue; + + if (0 == info->pid) + continue; + + DPRINTFD("Child process (%i) exited with %i.", (int) info->pid, + info->exit_code); + + unsigned int callbacks_i; + for (callbacks_i=0; GUEST_CHILD_PROCESS_MAX > callbacks_i; ++callbacks_i) + { + callback_info = &(_callbacks[callbacks_i]); + + if (callback_info->valid) + { + if (info->pid == callback_info->pid) + { + if (NULL != callback_info->death_callback) + { + callback_info->death_callback(info->pid, info->exit_code); + callback_info->valid = false; + } + } + } + } + + info->valid = false; + + if (GUEST_CHILD_DEATH_MAX_DISPATCH <= ++num_child_death_dispatched) + DPRINTFD("Maximum child process death dispatches (%i) reached.", + GUEST_CHILD_DEATH_MAX_DISPATCH); + } + + if (GUEST_CHILD_PROCESS_MAX <= death_i) + _last_entry = 0; + else + _last_entry = death_i; + + // Check for outstanding child process deaths to handle. + for (death_i=0; GUEST_CHILD_PROCESS_MAX > death_i; ++death_i) + { + info = &(_child_deaths[death_i]); + + if (!info->valid) + continue; + + if (0 == info->pid) + continue; + + result = write(_child_death_fd, &child_death_count, + sizeof(child_death_count)); + if (0 > result) + DPRINTFE("Failed to signal child process death, error=%s", + strerror(errno)); + break; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Initialize +// ============================== +GuestErrorT guest_child_death_initialize( void ) +{ + GuestSelObjCallbacksT callbacks; + GuestErrorT error; + + _child_death_fd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); + if (0 > _child_death_fd) + { + DPRINTFE("Failed to open child death file descriptor,error=%s.", + strerror(errno)); + return GUEST_FAILED; + } + + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.read_callback = guest_child_death_dispatch; + + error = guest_selobj_register(_child_death_fd, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register selection object, error=%s.", + guest_error_str(error)); + close(_child_death_fd); + _child_death_fd = -1; + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Finalize +// ============================ +GuestErrorT guest_child_death_finalize( void ) +{ + GuestErrorT error; + + if (0 <= _child_death_fd) + { + error = guest_selobj_deregister(_child_death_fd); + if (GUEST_OKAY != error) + DPRINTFE("Failed to deregister selection object, error=%s.", + guest_error_str(error)); + + close(_child_death_fd); + _child_death_fd = -1; + } + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.h new file mode 100755 index 00000000..718a2941 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_child_death.h @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_CHILD_DEATH_H__ +#define __GUEST_CHILD_DEATH_H__ + +#include + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_CHILD_FAILED -65536 + +typedef void (*GuestChildDeathCallbackT) (pid_t pid, int exit_code); + +// **************************************************************************** +// Guest Child Death - Register +// ============================ +extern GuestErrorT guest_child_death_register( + pid_t pid, GuestChildDeathCallbackT callback ); +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Deregister +// ============================== +extern GuestErrorT guest_child_death_deregister( pid_t pid ); +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Save +// ======================== +extern GuestErrorT guest_child_death_save( pid_t pid, int exit_code ); +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Initialize +// ============================== +extern GuestErrorT guest_child_death_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Child Death - Finalize +// ============================ +extern GuestErrorT guest_child_death_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_CHILD_DEATH_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_client.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_client.c new file mode 100755 index 00000000..75c137ea --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_client.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_process.h" + +// **************************************************************************** +// Guest Client - Main +// =================== +int main( int argc, char *argv[], char *envp[] ) +{ + GuestErrorT error; + + error = guest_debug_initialize("Guest-Client"); + if (GUEST_OKAY != error) + { + printf("Debug initialization failed, error=%s.\n", + guest_error_str(error)); + return EXIT_FAILURE; + } + + error = guest_process_main(argc, argv, envp); + if (GUEST_OKAY != error) + { + printf("Process failure, error=%s.\n", guest_error_str(error)); + return error; + } + + error = guest_debug_finalize(); + if (GUEST_OKAY != error) + { + printf("Debug finalization failed, error=%s.\n", + guest_error_str(error)); + } + + return EXIT_SUCCESS; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_config.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_config.c new file mode 100755 index 00000000..91a63ffa --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_config.c @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_config.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" + +#define GUEST_DEFAULT_COMM_DEVICE "/dev/vport1p1" + +static GuestConfigT _config; + +// **************************************************************************** +// Guest Configuration - Get +// ========================= +GuestConfigT* guest_config_get( void ) +{ + return &_config; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Show Usage +// ================================ +void guest_config_show_usage( void ) +{ + printf("guest-client [ARGS]\n"); + printf(" where ARGS may be any of: \n"); + printf(" --name Override the name of the instance\n"); + printf(" --device Override default communication channel device\n"); + printf("\n"); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Dump +// ========================== +static void guest_config_dump( void ) +{ + DPRINTFI("Guest-Client Configuration:"); + DPRINTFI(" name: %s", _config.name); + DPRINTFI(" device: %s", _config.comm_device); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Parse Arguments +// ===================================== +static GuestErrorT guest_config_parse_args( int argc, char *argv[] ) +{ + unsigned int arg_i; + for (arg_i=1; arg_i < argc; ++arg_i) + { + if (0 == strcmp("--name", argv[arg_i])) + { + arg_i++; + if (arg_i < argc) + snprintf(_config.name, sizeof(_config.name), "%s", argv[arg_i]); + + } else if (0 == strcmp("--device", argv[arg_i])) { + arg_i++; + if (arg_i < argc) + snprintf(_config.comm_device, sizeof(_config.comm_device), + "%s", argv[arg_i]); + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Parse Environment +// ======================================= +static GuestErrorT guest_config_parse_env( char *envp[] ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Initialize +// ================================ +GuestErrorT guest_config_initialize( int argc, char *argv[], char *envp[] ) +{ + char name[GUEST_NAME_MAX_CHAR]; + GuestErrorT error; + int result; + + result = gethostname(name, sizeof(name)); + if (0 > result) + { + DPRINTFE("Failed to get hostname, error=%s.", strerror(errno)); + return GUEST_FAILED; + } + DPRINTFI("hostname=%s.", name); + memset(&_config, 0, sizeof(GuestConfigT)); + snprintf(_config.name, sizeof(_config.name), "%s", name); + snprintf(_config.comm_device, sizeof(_config.comm_device), "%s", + GUEST_DEFAULT_COMM_DEVICE); + + error = guest_config_parse_args(argc, argv); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to parse arguments, error=%s.", + guest_error_str(error)); + return error; + } + + error = guest_config_parse_env(envp); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to parse environment, error=%s.", + guest_error_str(error)); + return error; + } + + guest_config_dump(); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Finalize +// ============================== +GuestErrorT guest_config_finalize( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_config.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_config.h new file mode 100755 index 00000000..b32a9245 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_config.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_CONFIGURATION_H__ +#define __GUEST_CONFIGURATION_H__ + +#include "guest_limits.h" +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char name[GUEST_NAME_MAX_CHAR]; + char comm_device[GUEST_DEVICE_NAME_MAX_CHAR]; +} GuestConfigT; + +// **************************************************************************** +// Guest Configuration - Get +// ========================= +extern GuestConfigT* guest_config_get( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Show Usage +// ================================ +extern void guest_config_show_usage( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Initialize +// ================================ +extern GuestErrorT guest_config_initialize( + int argc, char *argv[], char *envp[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Configuration - Finalize +// ============================== +extern GuestErrorT guest_config_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_CONFIGURATION_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_debug.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_debug.c new file mode 100755 index 00000000..4b55d3a0 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_debug.c @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_debug.h" + +#include +#include +#include + +#include "guest_types.h" + +#define GUEST_DEBUG_WANT_SYSLOG +#ifdef GUEST_DEBUG_WANT_SYSLOG +#include +#endif + +static char _process_name[30]; +static GuestDebugLogLevelT _log_level = GUEST_DEBUG_LOG_LEVEL_INFO; + +// **************************************************************************** +// Guest Debug - Log Level String +// ============================== +const char* guest_debug_log_level_str( GuestDebugLogLevelT level ) +{ + switch (level) { + case GUEST_DEBUG_LOG_LEVEL_ERROR: return "error"; + case GUEST_DEBUG_LOG_LEVEL_INFO: return " info"; + case GUEST_DEBUG_LOG_LEVEL_DEBUG: return "debug"; + case GUEST_DEBUG_LOG_LEVEL_VERBOSE: return " verb"; + default: + return "???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Set Log Level +// =========================== +void guest_debug_set_log_level( GuestDebugLogLevelT level ) +{ + _log_level = level; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Want Log +// ====================== +bool guest_debug_want_log( GuestDebugLogLevelT level ) +{ + return (level <= _log_level); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Log +// ================= +void guest_debug_log( const char* format, ... ) +{ + char time_str[80]; + char date_str[32]; + struct tm t_real; + struct timespec ts_real; + va_list arguments; + char log_data[512]; + + va_start(arguments, format); + vsnprintf(log_data, sizeof(log_data), format, arguments); + va_end(arguments); + + clock_gettime(CLOCK_REALTIME, &ts_real); + + if (NULL == localtime_r(&(ts_real.tv_sec), &t_real)) + { + snprintf( time_str, sizeof(time_str), + "YYYY:MM:DD HH:MM:SS.xxx" ); + } else { + strftime( date_str, sizeof(date_str), "%b %e %H:%M:%S", + &t_real ); + snprintf( time_str, sizeof(time_str), "%s.%03ld", date_str, + ts_real.tv_nsec/1000000 ); + } + +#ifdef GUEST_DEBUG_WANT_SYSLOG + syslog(LOG_DEBUG, "%s", log_data); +#else + printf("%s %s: %s\n", time_str, _process_name, log_data); +#endif +} +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Initialize +// ======================== +GuestErrorT guest_debug_initialize( char process_name[] ) +{ + _log_level = GUEST_DEBUG_LOG_LEVEL_INFO; + snprintf(_process_name, sizeof(_process_name), "%s", process_name); + +#ifdef GUEST_DEBUG_WANT_SYSLOG + openlog(_process_name, LOG_PID | LOG_NDELAY, LOG_DAEMON); +#endif + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Finalize +// ====================== +GuestErrorT guest_debug_finalize( void ) +{ + _log_level = GUEST_DEBUG_LOG_LEVEL_INFO; + _process_name[0] = '\0'; + +#ifdef GUEST_DEBUG_WANT_SYSLOG + closelog(); +#endif + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_debug.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_debug.h new file mode 100755 index 00000000..09a7d99a --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_debug.h @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_DEBUG_H__ +#define __GUEST_DEBUG_H__ + +#include + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GUEST_DEBUG_LOG_LEVEL_ERROR, + GUEST_DEBUG_LOG_LEVEL_INFO, + GUEST_DEBUG_LOG_LEVEL_DEBUG, + GUEST_DEBUG_LOG_LEVEL_VERBOSE, +} GuestDebugLogLevelT; + +#define DPRINTF(level, format, args...) \ + if (guest_debug_want_log(level)) \ + guest_debug_log("%s: %s(%i): " format, \ + guest_debug_log_level_str(level), \ + __FILE__, __LINE__, ##args) + +#define DPRINTFE(format, args...) \ + DPRINTF(GUEST_DEBUG_LOG_LEVEL_ERROR, format, ##args) +#define DPRINTFI(format, args...) \ + DPRINTF(GUEST_DEBUG_LOG_LEVEL_INFO, format, ##args) +#define DPRINTFD(format, args...) \ + DPRINTF(GUEST_DEBUG_LOG_LEVEL_DEBUG, format, ##args) +#define DPRINTFV(format, args... ) \ + DPRINTF(GUEST_DEBUG_LOG_LEVEL_VERBOSE, format, ##args) + +// **************************************************************************** +// Guest Debug - Log Level String +// ============================== +extern const char* guest_debug_log_level_str( GuestDebugLogLevelT level ); +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Set Log Level +// =========================== +extern void guest_debug_set_log_level( GuestDebugLogLevelT level ); +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Want Log +// ====================== +extern bool guest_debug_want_log( GuestDebugLogLevelT level ); +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Log +// ================= +extern void guest_debug_log( const char* format, ... ); +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Initialize +// ======================== +extern GuestErrorT guest_debug_initialize( char process_name[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Debug - Finalize +// ====================== +extern GuestErrorT guest_debug_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_DEBUG_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_limits.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_limits.h new file mode 100755 index 00000000..29953aed --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_limits.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_LIMITS_H__ +#define __GUEST_LIMITS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_NAME_MAX_CHAR 64 +#define GUEST_DEVICE_NAME_MAX_CHAR 255 +#define GUEST_MIN_TICK_INTERVAL_IN_MS 25 +#define GUEST_TICK_INTERVAL_IN_MS 300 +#define GUEST_SCHEDULING_MAX_DELAY_IN_MS 800 +#define GUEST_SCHEDULING_DELAY_DEBOUNCE_IN_MS 2000 +#define GUEST_TIMERS_MAX 128 +#define GUEST_MAX_TIMERS_PER_TICK GUEST_TIMERS_MAX / 4 +#define GUEST_SELECT_OBJS_MAX 128 +#define GUEST_MAX_SIGNALS 32 +#define GUEST_MAX_CONNECTIONS 32 +#define GUEST_CHILD_PROCESS_MAX 16 +#define GUEST_APPLICATIONS_MAX 16 +#define GUEST_HEARTBEAT_MIN_INTERVAL_MS 400 + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_LIMITS_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_process.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_process.c new file mode 100755 index 00000000..4f46fab4 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_process.c @@ -0,0 +1,375 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_process.h" + +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_signal.h" +#include "guest_config.h" +#include "guest_selobj.h" +#include "guest_timer.h" +#include "guest_channel.h" +#include "guest_stream.h" +#include "guest_unix.h" +#include "guest_script.h" +#include "guest_heartbeat.h" +#include "guest_child_death.h" + +static sig_atomic_t _stay_on = 1; +static sig_atomic_t _reload = 0; +static sig_atomic_t _reap_children = 0; + +// **************************************************************************** +// Guest Process - Reload +// ====================== +static void guest_process_reload( void ) +{ + int result; + + DPRINTFI("Reload signal handled."); + _reload = 0; + + result = access("/tmp/guest_debug_debug", F_OK); + if (0 == result) + { + DPRINTFI("Debug log level set to debug."); + guest_debug_set_log_level(GUEST_DEBUG_LOG_LEVEL_DEBUG); + return; + } + + result = access("/tmp/guest_debug_verbose", F_OK); + if (0 == result) + { + DPRINTFI("Debug log level set to verbose."); + guest_debug_set_log_level(GUEST_DEBUG_LOG_LEVEL_VERBOSE); + return; + } + + DPRINTFI("Debug log level set to info."); + guest_debug_set_log_level(GUEST_DEBUG_LOG_LEVEL_INFO); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Process - Reap Children +// ============================= +static void guest_process_reap_children( void ) +{ + pid_t pid; + int status; + + if (_reap_children) + { + _reap_children = 0; + + while (0 < (pid = waitpid(-1, &status, WNOHANG | WUNTRACED))) + { + if (WIFEXITED(status)) + guest_child_death_save(pid, WEXITSTATUS(status)); + else + guest_child_death_save(pid, GUEST_CHILD_FAILED); + } + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Process - Signal Handler +// ============================== +static void guest_process_signal_handler( int signum ) +{ + switch (signum) + { + case SIGINT: + case SIGTERM: + case SIGQUIT: + _stay_on = 0; + break; + + case SIGHUP: + _reload = 1; + break; + + case SIGCHLD: + _reap_children = 1; + break; + + case SIGCONT: + DPRINTFD("Ignoring signal SIGCONT (%i).", signum); + break; + + case SIGPIPE: + DPRINTFD("Ignoring signal SIGPIPE (%i).", signum); + break; + + default: + DPRINTFD("Signal (%i) ignored.", signum); + break; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Process - Initialize +// ========================== +static GuestErrorT guest_process_initialize( + int argc, char *argv[], char *envp[] ) +{ + GuestConfigT* config = NULL; + GuestErrorT error; + + error = guest_config_initialize(argc, argv, envp); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize configuration module, error=%s.", + guest_error_str(error)); + guest_config_show_usage(); + return error; + } + + error = guest_selobj_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize selection object module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_timer_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize timer module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_child_death_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize child death module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_unix_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize unix module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_channel_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize channel module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_stream_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize stream module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_script_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize script module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + config = guest_config_get(); + + error = guest_heartbeat_initialize(config->comm_device); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat module, error=%s.", + guest_error_str(error)); + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Process - Finalize +// ======================== +static GuestErrorT guest_process_finalize( void ) +{ + GuestErrorT error; + + error = guest_heartbeat_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat module, error=%s.", + guest_error_str(error)); + } + + error = guest_script_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize script module, error=%s.", + guest_error_str(error)); + } + + error = guest_stream_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize stream module, error=%s.", + guest_error_str(error)); + } + + error = guest_channel_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize channel module, error=%s.", + guest_error_str(error)); + } + + error = guest_unix_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize unix module, error=%s.", + guest_error_str(error)); + } + + error = guest_child_death_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize child death module, error=%s.", + guest_error_str(error)); + } + + error = guest_timer_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize timer module, error=%s.", + guest_error_str(error)); + } + + error = guest_selobj_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finialize selection object module, error=%s.", + guest_error_str(error)); + } + + error = guest_config_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finialize configuration module, error=%s.", + guest_error_str(error)); + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Process - Main +// ==================== +GuestErrorT guest_process_main( int argc, char *argv[], char *envp[] ) +{ + unsigned int next_interval_in_ms; + GuestErrorT error; + + DPRINTFI("Starting."); + + guest_signal_register_handler(SIGINT, guest_process_signal_handler); + guest_signal_register_handler(SIGTERM, guest_process_signal_handler); + guest_signal_register_handler(SIGQUIT, guest_process_signal_handler); + guest_signal_register_handler(SIGHUP, guest_process_signal_handler); + guest_signal_register_handler(SIGCHLD, guest_process_signal_handler); + guest_signal_register_handler(SIGCONT, guest_process_signal_handler); + guest_signal_register_handler(SIGPIPE, guest_process_signal_handler); + guest_signal_ignore(SIGIO); + + error = guest_process_initialize(argc, argv, envp); + if (GUEST_OKAY != error) + { + if (error != GUEST_NOT_CONFIGURED) + { + DPRINTFE("Failed initialize process restarting in 20 seconds," + "error=%s.", guest_error_str(error)); + sleep(20); + } + else { + DPRINTFI("Application is not configured, will be not restarted," + " exit code=%s", guest_error_str(error)); + } + return error; + } + + DPRINTFI("Started."); + + while (_stay_on) + { + next_interval_in_ms = guest_timer_schedule(); + + error = guest_selobj_dispatch(next_interval_in_ms); + if (GUEST_OKAY != error) + { + DPRINTFE("Selection object dispatch failed, error=%s.", + guest_error_str(error)); + break; + } + + guest_process_reap_children(); + + if (_reload) + guest_process_reload(); + } + + DPRINTFI("Shutting down."); + + error = guest_process_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed finalize process, error=%s.", + guest_error_str(error) ); + } + + DPRINTFI("Shutdown complete."); + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_process.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_process.h new file mode 100755 index 00000000..0a380d22 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_process.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_PROCESS_H__ +#define __GUEST_PROCESS_H__ + +#include + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Process - Main +// ==================== +extern GuestErrorT guest_process_main( int argc, char *argv[], char *envp[] ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_PROCESS_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_script.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_script.c new file mode 100755 index 00000000..2692e6de --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_script.c @@ -0,0 +1,410 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_script.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_selobj.h" +#include "guest_utils.h" +#include "guest_child_death.h" + +#define GUEST_SCRIPT_SETUP_FAILURE -65535 + +typedef struct { + bool inuse; + int pid; + int fd; + int log_end_ptr; + char log_msg[256]; + GuestScriptIdT script_id; + GuestScriptCallbackT callback; +} GuestScriptDataT; + +static GuestScriptDataT _scripts[GUEST_CHILD_PROCESS_MAX]; + +// **************************************************************************** +// Guest Script - Abort +// ==================== +void guest_script_abort( GuestScriptIdT script_id ) +{ + int result; + GuestScriptDataT* entry; + GuestErrorT error; + + if (GUEST_SCRIPT_ID_INVALID == script_id) + return; + + if (GUEST_CHILD_PROCESS_MAX <= script_id) + return; + + entry = &(_scripts[script_id]); + + if (entry->inuse) + { + if (-1 != entry->pid) + { + error = guest_child_death_deregister(entry->pid); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister for child death %i, error=%s.", + entry->pid, guest_error_str(error)); + } + + result = kill(entry->pid, SIGKILL); + if (0 > result) + { + if (ESRCH == errno) + { + DPRINTFV("Script pid (%i) not running.", entry->pid); + } else { + DPRINTFE("Failed to send kill signal to script pid %i, " + "error=%s.", entry->pid, strerror(errno)); + } + } else { + DPRINTFD("Script pid (%i) killed.", entry->pid); + } + } + + if (-1 != entry->fd) + { + error = guest_selobj_deregister(entry->fd); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister selection object %i, error=%s.", + entry->fd, guest_error_str(error)); + } + + close(entry->fd); + } + + memset(entry, 0, sizeof(GuestScriptDataT)); + entry->pid = -1; + entry->fd = -1; + entry->script_id = GUEST_SCRIPT_ID_INVALID; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Dispatch +// ======================= +static void guest_script_dispatch( int selobj ) +{ + int bytes_avail; + int result; + GuestScriptDataT* entry; + + unsigned int script_i; + for (script_i=0; GUEST_CHILD_PROCESS_MAX > script_i; ++script_i) + { + entry = &(_scripts[script_i]); + if (entry->inuse) + if (selobj == entry->fd) + break; + } + + if (GUEST_CHILD_PROCESS_MAX <= script_i) + return; + + bytes_avail = sizeof(entry->log_msg) - entry->log_end_ptr; + + result = read(selobj, &(entry->log_msg[entry->log_end_ptr]), bytes_avail); + if (0 > result) + { + if (EINTR == errno) { + DPRINTFD("Interrupted on read, error=%s.", strerror(errno)); + return; + + } else { + DPRINTFE("Failed to read, error=%s.", strerror(errno)); + return; + } + } else if (0 == result) { + DPRINTFD("No message received."); + return; + + } else { + DPRINTFD("Received message, msg_size=%i.", result); + entry->log_end_ptr += result; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Callback +// ======================= +static void guest_script_callback( pid_t pid, int exit_code ) +{ + GuestScriptDataT* entry; + + unsigned int script_i; + for (script_i=0; GUEST_CHILD_PROCESS_MAX > script_i; ++script_i) + { + entry = &(_scripts[script_i]); + if (entry->inuse) + if ((int) pid == entry->pid) + break; + } + + if (GUEST_CHILD_PROCESS_MAX <= script_i) + return; + + DPRINTFD("PID %i exited with %i", (int) pid, exit_code); + + if (NULL != entry->callback) + entry->callback(entry->script_id, exit_code, entry->log_msg); + + guest_script_abort(entry->script_id); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Invoke +// ===================== +GuestErrorT guest_script_invoke( + char script[], char* script_argv[], GuestScriptCallbackT callback, + GuestScriptIdT* script_id ) +{ + int fd[2]; + pid_t pid; + struct stat stat_data; + char* script_name = guest_utils_basename(script); + char* script_exec = script; + int result; + GuestScriptDataT* entry; + GuestSelObjCallbacksT callbacks; + GuestErrorT error; + + *script_id = GUEST_SCRIPT_ID_INVALID; + + unsigned int script_i; + for (script_i=1; GUEST_CHILD_PROCESS_MAX > script_i; ++script_i) + { + entry = &(_scripts[script_i]); + if (!entry->inuse) + break; + } + + if (GUEST_CHILD_PROCESS_MAX <= script_i) + { + DPRINTFE("Failed to allocate script data."); + return GUEST_FAILED; + } + + memset(entry, 0, sizeof(GuestScriptDataT)); + entry->script_id = script_i; + entry->callback = callback; + entry->pid = -1; + entry->fd = -1; + + result = access(script_exec, F_OK | X_OK); + if (0 > result) + { + DPRINTFE("Script %s access failed, error=%s.", script_exec, + strerror(errno)); + return GUEST_FAILED; + } + + result = stat(script_exec, &stat_data); + if (0 > result) + { + DPRINTFE("Script %s stat failed, error=%s.", script_exec, + strerror( errno ) ); + return GUEST_FAILED; + } + + if (0 >= stat_data.st_size) + { + DPRINTFE("Script %s has zero size.", script_exec); + return GUEST_FAILED; + } + + result = pipe(fd); + if (0 > result) + { + DPRINTFE("Script %s pipe creation failed, error=%s.", script_exec, + strerror(errno)); + return GUEST_FAILED; + } + + result = fcntl(fd[0], F_SETFL, O_NONBLOCK); + if (0 > result) + { + DPRINTFE("Script %s pipe failed to make read end non-blocking, " + "error=%s.", script_exec, strerror(errno)); + close(fd[0]); + close(fd[1]); + return GUEST_FAILED; + } + + pid = fork(); + if (0 > pid) + { + DPRINTFE("Failed to fork process for script %s, error=%s.", + script_exec, strerror(errno)); + close(fd[0]); + close(fd[1]); + return GUEST_FAILED; + + } else if (0 == pid) { + // Child process. + struct rlimit file_limits; + + close(fd[0]); // close read end of pipe + + result = setpgid(0, 0); + if (0 > result) + { + DPRINTFE("Failed to set process group id for script %s, " + "error=%s.", script_exec, strerror( errno ) ); + exit(GUEST_SCRIPT_SETUP_FAILURE); + } + + result = getrlimit(RLIMIT_NOFILE, &file_limits); + if (0 > result) + { + DPRINTFE("Failed to get file limits for script %s, error=%s.", + script_exec, strerror(errno)); + exit(GUEST_SCRIPT_SETUP_FAILURE); + } + + unsigned int fd_i; + for (fd_i=0; fd_i < file_limits.rlim_cur; ++fd_i) + if (fd_i != fd[1]) + close(fd_i); + + result = dup2(fd[1], 1); // make stdout into writable end of pipe + if (0 > result) + { + DPRINTFE("Failed to make stdout into writable end of pipe for " + "script %s, error=%s.", script_exec, strerror(errno)); + exit(GUEST_SCRIPT_SETUP_FAILURE); + } + + result = execv(script_exec, (char**) script_argv); + if (0 > result) + DPRINTFE("Failed to exec command for script %s, error=%s.", + script_exec, strerror(errno)); + + exit(GUEST_SCRIPT_SETUP_FAILURE); + + } else { + // Parent process. + close(fd[1]); // close write end of pipe + entry->pid = (int) pid; + entry->fd = fd[0]; + entry->inuse = true; + + DPRINTFD("Child process %i created for script %s, script_id=%i.", + entry->pid, script_name, entry->script_id); + + error = guest_child_death_register(pid, guest_script_callback); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register for child death %i, error=%s.", + entry->pid, guest_error_str(error)); + guest_script_abort(entry->script_id); + return error; + } + + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.read_callback = guest_script_dispatch; + + error = guest_selobj_register(entry->fd, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register selection object %i, error=%s.", + entry->fd, guest_error_str(error)); + guest_script_abort(entry->script_id); + return error; + } + + *script_id = entry->script_id; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Initialize +// ========================= +GuestErrorT guest_script_initialize( void ) +{ + GuestScriptDataT* entry; + + memset(_scripts, 0, sizeof(_scripts)); + + unsigned int script_i; + for (script_i=0; GUEST_CHILD_PROCESS_MAX > script_i; ++script_i) + { + entry = &(_scripts[script_i]); + + entry->pid = -1; + entry->fd = -1; + entry->script_id = GUEST_SCRIPT_ID_INVALID; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Finalize +// ======================= +GuestErrorT guest_script_finalize( void ) +{ + GuestScriptDataT* entry; + + unsigned int script_i; + for (script_i=0; GUEST_CHILD_PROCESS_MAX > script_i; ++script_i) + { + entry = &(_scripts[script_i]); + if (entry->inuse) + guest_script_abort(entry->script_id); + } + + memset(_scripts, 0, sizeof(_scripts)); + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_script.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_script.h new file mode 100755 index 00000000..e1a74c8e --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_script.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_SCRIPT_H__ +#define __GUEST_SCRIPT_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_SCRIPT_ID_INVALID -1 + +typedef int GuestScriptIdT; + +typedef void (*GuestScriptCallbackT) + (GuestScriptIdT script_id,int exit_code, char* log_msg); + +// **************************************************************************** +// Guest Script - Abort +// ==================== +extern void guest_script_abort( GuestScriptIdT script_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Invoke +// ===================== +extern GuestErrorT guest_script_invoke( + char script[], char* script_argv[], GuestScriptCallbackT callback, + GuestScriptIdT* script_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Initialize +// ========================= +extern GuestErrorT guest_script_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Script - Finalize +// ======================= +extern GuestErrorT guest_script_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_SCRIPT_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.c new file mode 100755 index 00000000..e8ffafa4 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.c @@ -0,0 +1,254 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_selobj.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" + +typedef struct { + bool inuse; + int selobj; + GuestSelObjCallbacksT callbacks; +} GuestSelObjEntryT; + +typedef GuestSelObjEntryT GuestSelObjTableT[GUEST_SELECT_OBJS_MAX]; + +static int _num_poll_fds = 0; +static struct pollfd _poll_fds[GUEST_SELECT_OBJS_MAX]; +static GuestSelObjTableT _select_objs; + +// **************************************************************************** +// Guest Selection Object - Find Selection Object +// ============================================== +static GuestSelObjEntryT* guest_selobj_find( int selobj ) +{ + GuestSelObjEntryT* entry; + + unsigned int entry_i; + for (entry_i=0; GUEST_SELECT_OBJS_MAX > entry_i; ++entry_i) + { + entry = &(_select_objs[entry_i]); + if (entry->inuse) + if (selobj == entry->selobj) + return entry; + } + return NULL; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Register +// ================================= +GuestErrorT guest_selobj_register ( + int selobj, GuestSelObjCallbacksT* callbacks ) +{ + GuestSelObjEntryT* entry; + + entry = guest_selobj_find(selobj); + if (NULL == entry) + { + unsigned int entry_i; + for (entry_i=0; GUEST_SELECT_OBJS_MAX > entry_i; ++entry_i) + { + entry = &(_select_objs[entry_i]); + if (!entry->inuse ) + { + entry->inuse = true; + entry->selobj = selobj; + memcpy(&(entry->callbacks), callbacks, + sizeof(GuestSelObjCallbacksT)); + break; + } + } + + // Rebuild polling file descriptors. + _num_poll_fds =0; + + for (entry_i=0; GUEST_SELECT_OBJS_MAX > entry_i; ++entry_i) + { + entry = &(_select_objs[entry_i]); + if (entry->inuse) + { + memset(&_poll_fds[_num_poll_fds], 0, sizeof(struct pollfd)); + + _poll_fds[_num_poll_fds].fd = entry->selobj; + + if (NULL != entry->callbacks.read_callback) + _poll_fds[_num_poll_fds].events |= POLLIN; + + if (NULL != entry->callbacks.write_callback) + _poll_fds[_num_poll_fds].events |= POLLOUT; + + if (NULL != entry->callbacks.hangup_callback) + _poll_fds[_num_poll_fds].events |= POLLHUP; + + ++_num_poll_fds; + } + } + } else { + memcpy(&(entry->callbacks), callbacks, sizeof(GuestSelObjCallbacksT)); + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Deregister +// =================================== +GuestErrorT guest_selobj_deregister( int selobj ) +{ + GuestSelObjEntryT* entry; + + entry = guest_selobj_find(selobj); + if (NULL != entry) + memset(entry, 0, sizeof(GuestSelObjEntryT)); + + // Rebuild polling file descriptors. + _num_poll_fds =0; + + unsigned int entry_i; + for (entry_i=0; GUEST_SELECT_OBJS_MAX > entry_i; ++entry_i) + { + entry = &(_select_objs[entry_i]); + if (entry->inuse) + { + memset(&_poll_fds[_num_poll_fds], 0, sizeof(struct pollfd)); + + _poll_fds[_num_poll_fds].fd = entry->selobj; + + if (NULL != entry->callbacks.read_callback) + _poll_fds[_num_poll_fds].events |= POLLIN; + + if (NULL != entry->callbacks.write_callback) + _poll_fds[_num_poll_fds].events |= POLLOUT; + + if (NULL != entry->callbacks.hangup_callback) + _poll_fds[_num_poll_fds].events |= POLLHUP; + + ++_num_poll_fds; + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Dispatch +// ================================= +GuestErrorT guest_selobj_dispatch( unsigned int timeout_in_ms ) +{ + struct pollfd* poll_entry; + GuestSelObjEntryT* entry; + int result; + + result = poll(_poll_fds, _num_poll_fds, timeout_in_ms); + if (0 > result) + { + if (errno == EINTR) + { + DPRINTFD("Interrupted by a signal."); + return GUEST_OKAY; + } else { + DPRINTFE("Select failed, error=%s.", strerror(errno)); + return GUEST_FAILED; + } + } else if (0 == result) { + DPRINTFV("Nothing selected."); + return GUEST_OKAY; + } + + unsigned int entry_i; + for (entry_i=0; _num_poll_fds > entry_i; ++entry_i) + { + poll_entry = &(_poll_fds[entry_i]); + + entry = guest_selobj_find(poll_entry->fd); + if (NULL != entry) + { + if (0 != (poll_entry->revents & POLLIN)) + if (NULL != entry->callbacks.read_callback) + { + DPRINTFD("Read on selection object %i", poll_entry->fd); + entry->callbacks.read_callback(entry->selobj); + } + + if (0 != (poll_entry->revents & POLLOUT)) + if (NULL != entry->callbacks.write_callback) + { + DPRINTFD("Write on selection object %i", poll_entry->fd); + entry->callbacks.write_callback(entry->selobj); + } + + if (0 != (poll_entry->revents & POLLHUP)) + if (NULL != entry->callbacks.hangup_callback) + { + DPRINTFD("Hangup on selection object %i", poll_entry->fd); + entry->callbacks.hangup_callback(entry->selobj); + } + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Initialize +// =================================== +GuestErrorT guest_selobj_initialize( void ) +{ + _num_poll_fds = 0; + memset(_poll_fds, 0, sizeof(_poll_fds)); + memset(_select_objs, 0, sizeof(GuestSelObjTableT)); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Finalize +// ================================= +GuestErrorT guest_selobj_finalize( void ) +{ + _num_poll_fds = 0; + memset(_poll_fds, 0, sizeof(_poll_fds)); + memset(_select_objs, 0, sizeof(GuestSelObjTableT)); + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.h new file mode 100755 index 00000000..46bae5ed --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_selobj.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_SELECTION_OBJECT_H__ +#define __GUEST_SELECTION_OBJECT_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*GuestSelObjReadCallbackT) (int selobj); +typedef void (*GuestSelObjWriteCallbackT) (int selobj); +typedef void (*GuestSelObjHangupCallbackT) (int selobj); + +typedef struct { + GuestSelObjReadCallbackT read_callback; + GuestSelObjWriteCallbackT write_callback; + GuestSelObjHangupCallbackT hangup_callback; +} GuestSelObjCallbacksT; + +// **************************************************************************** +// Guest Selection Object - Register +// ================================= +extern GuestErrorT guest_selobj_register( + int selobj, GuestSelObjCallbacksT* callbacks ); +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Deregister +// =================================== +extern GuestErrorT guest_selobj_deregister( int selobj ); +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Dispatch +// ================================= +extern GuestErrorT guest_selobj_dispatch( unsigned int timeout_in_ms ); +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Initialize +// =================================== +extern GuestErrorT guest_selobj_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Selection Object - Finalize +// ================================= +extern GuestErrorT guest_selobj_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_SELECTION_OBJECT_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_signal.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_signal.c new file mode 100755 index 00000000..9cc58c4b --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_signal.c @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_signal.h" + +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" + +typedef struct { + bool inuse; + int signum; + GuestSignalHandlerT handler; +} GuestSignalT; + +static GuestSignalT _signal[GUEST_MAX_SIGNALS]; + +// **************************************************************************** +// Guest Signal - Map +// ================== +static GuestSignalT* guest_signal_map( int signum ) +{ + switch (signum) + { + case SIGINT: return &(_signal[0]); + case SIGTERM: return &(_signal[1]); + case SIGQUIT: return &(_signal[2]); + case SIGHUP: return &(_signal[3]); + case SIGCHLD: return &(_signal[4]); + case SIGCONT: return &(_signal[5]); + case SIGPIPE: return &(_signal[6]); + case SIGIO: return &(_signal[7]); + default: + DPRINTFE("Mapping for signal %i missing.", signum); + } + + return NULL; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Signal - Handler +// ====================== +static void guest_signal_handler( int signum ) +{ + GuestSignalT* entry; + + DPRINTFD("Signal %i received.", signum); + + entry = guest_signal_map(signum); + if (NULL != entry) + if (entry->inuse) + if (NULL != entry->handler) + entry->handler(signum); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Signal - Register Handler +// =============================== +void guest_signal_register_handler( int signum, GuestSignalHandlerT handler ) +{ + GuestSignalT* entry; + + entry = guest_signal_map(signum); + if (NULL != entry) + { + entry->inuse = true; + entry->signum = signum; + entry->handler = handler; + signal(signum, guest_signal_handler); + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Signal - Deregister Handler +// ================================= +void guest_signal_deregister_handler( int signum ) +{ + GuestSignalT* entry; + + entry = guest_signal_map(signum); + if (NULL != entry) + { + memset(entry, 0, sizeof(GuestSignalT)); + signal(signum, SIG_DFL); + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Signal - Ignore +// ===================== +void guest_signal_ignore( int signum ) +{ + guest_signal_deregister_handler(signum); + signal(signum, SIG_IGN); +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_signal.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_signal.h new file mode 100755 index 00000000..5c229286 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_signal.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_SIGNAL_H__ +#define __GUEST_SIGNAL_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*GuestSignalHandlerT) (int signum); + +// **************************************************************************** +// Guest Signal - Register Handler +// =============================== +extern void guest_signal_register_handler( + int signum, GuestSignalHandlerT handler); +// **************************************************************************** + +// **************************************************************************** +// Guest Signal - Deregister Handler +// ================================= +extern void guest_signal_deregister_handler( int signum ); +// **************************************************************************** + +// **************************************************************************** +// Guest Signal - Ignore +// ===================== +extern void guest_signal_ignore( int signum ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_SIGNAL_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_stream.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_stream.c new file mode 100755 index 00000000..92521065 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_stream.c @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_stream.h" + +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" + +// **************************************************************************** +// Guest Stream - Get +// ================== +int guest_stream_get( GuestStreamT* stream ) +{ + char* byte_ptr; + int delimiter_i = 0; + + if (stream->delimiter_size > stream->size) + return -1; + + for (byte_ptr = stream->bytes; byte_ptr != stream->end_ptr; ++byte_ptr) + { + if (stream->delimiter[delimiter_i] == *byte_ptr) + { + ++delimiter_i; + if (delimiter_i == stream->delimiter_size) + { + return (byte_ptr - stream->bytes); + } + } else { + delimiter_i = 0; + } + } + + return -1; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Get Next +// ======================= +bool guest_stream_get_next( GuestStreamT* stream ) +{ + char* byte_ptr; + int delimiter_i = 0; + + if (stream->delimiter_size > stream->size) + return false; + + for (byte_ptr = stream->bytes; byte_ptr != stream->end_ptr; ++byte_ptr) + { + --stream->size; + if (stream->delimiter[delimiter_i] == *byte_ptr) + { + ++delimiter_i; + if (delimiter_i == stream->delimiter_size) + { + byte_ptr -= (stream->delimiter_size-1); + stream->size += stream->delimiter_size; + memmove(stream->bytes, byte_ptr, stream->size); + stream->avail = stream->max_size - stream->size; + stream->end_ptr = stream->bytes + stream->size; + break; + } + } else { + delimiter_i = 0; + } + } + + if (byte_ptr == stream->end_ptr) + { + // Empty the stream + memset(stream->bytes, 0, stream->max_size); + stream->avail = stream->max_size; + stream->size = 0; + stream->end_ptr = stream->bytes; + return false; + } + + return true; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Advance +// ====================== +void guest_stream_advance( int adv, GuestStreamT* stream ) +{ + stream->size -= adv; + memmove(stream->bytes, stream->bytes+adv, stream->size); + stream->avail = stream->max_size - stream->size; + stream->end_ptr = stream->bytes + stream->size; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Reset +// ==================== +void guest_stream_reset( GuestStreamT* stream ) +{ + memset(stream->bytes, 0, stream->max_size); + stream->avail = stream->max_size; + stream->size = 0; + stream->end_ptr = stream->bytes; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Setup +// ==================== +GuestErrorT guest_stream_setup( + const char* delimiter, int delimiter_size, int stream_size, + GuestStreamT* stream ) +{ + stream->delimiter = malloc(delimiter_size); + if (NULL == stream->delimiter) + { + DPRINTFE("Failed to allocated delimiter storage, needed=%i.", + delimiter_size); + return GUEST_FAILED; + } + + stream->bytes = malloc(stream_size); + if (NULL == stream->delimiter) + { + DPRINTFE("Failed to allocated stream storage, needed=%i.", stream_size); + free(stream->delimiter); + return GUEST_FAILED; + } + + memcpy(stream->delimiter, delimiter, delimiter_size); + stream->delimiter_size = delimiter_size; + memset(stream->bytes, 0, stream_size); + stream->end_ptr = stream->bytes; + stream->avail = stream_size; + stream->size = 0; + stream->max_size = stream_size; + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Release +// ====================== +GuestErrorT guest_stream_release( GuestStreamT* stream ) +{ + if (NULL != stream->delimiter) + free(stream->delimiter); + + if (NULL != stream->bytes) + free(stream->bytes); + + memset(stream, 0, sizeof(GuestStreamT)); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Initialize +// ========================= +GuestErrorT guest_stream_initialize( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Finalize +// ======================= +GuestErrorT guest_stream_finalize( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_stream.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_stream.h new file mode 100755 index 00000000..63739855 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_stream.h @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_STREAM_H__ +#define __GUEST_STREAM_H__ + +#include + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char* delimiter; + int delimiter_size; + char* end_ptr; + char* bytes; + int avail; + int size; + int max_size; +} GuestStreamT; + +// **************************************************************************** +// Guest Stream - Get +// ================== +extern int guest_stream_get( GuestStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Get Next +// ======================= +extern bool guest_stream_get_next( GuestStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Advance +// ====================== +extern void guest_stream_advance( int adv, GuestStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Reset +// ==================== +extern void guest_stream_reset( GuestStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Setup +// ==================== +extern GuestErrorT guest_stream_setup( + const char* delimiter, int delimiter_size, int stream_size, + GuestStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Release +// ====================== +extern GuestErrorT guest_stream_release( GuestStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Initialize +// ========================= +extern GuestErrorT guest_stream_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Stream - Finalize +// ======================= +extern GuestErrorT guest_stream_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_STREAM_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_time.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_time.c new file mode 100755 index 00000000..cf226cf8 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_time.c @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_time.h" + +#include + +// **************************************************************************** +// Guest Time - Get +// ================ +void guest_time_get( GuestTimeT* time ) +{ +#ifdef CLOCK_MONOTONIC_RAW + clock_gettime(CLOCK_MONOTONIC_RAW, time); +#else + clock_gettime(CLOCK_MONOTONIC, time); +#endif +} +// **************************************************************************** + +// **************************************************************************** +// Guest Time - Get Elapsed Milliseconds +// ===================================== +long guest_time_get_elapsed_ms( GuestTimeT* time ) +{ + GuestTimeT now; + + guest_time_get(&now); + + if (NULL == time) + return ((now.tv_sec*1000) + (now.tv_nsec/1000000)); + else + return (guest_time_delta_in_ms(&now, time)); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Time - Delta in Milliseconds +// ================================== +long guest_time_delta_in_ms( GuestTimeT* end, GuestTimeT* start ) +{ + long start_in_ms = (start->tv_sec*1000) + (start->tv_nsec/1000000); + long end_in_ms = (end->tv_sec*1000) + (end->tv_nsec/1000000); + + return (end_in_ms - start_in_ms); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Time - Convert Milliseconds +// ================================= +void guest_time_convert_ms( long ms, GuestTimeT* time ) +{ + time->tv_sec = ms / 1000; + time->tv_nsec = (ms % 1000) * 1000000; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_time.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_time.h new file mode 100755 index 00000000..61b73d58 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_time.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_TIME_H__ +#define __GUEST_TIME_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct timespec GuestTimeT; + +// **************************************************************************** +// Guest Time - Get +// ================ +extern void guest_time_get( GuestTimeT* time ); +// **************************************************************************** + +// **************************************************************************** +// Guest Time - Get Elapsed Milliseconds +// ===================================== +extern long guest_time_get_elapsed_ms( GuestTimeT* time ); +// **************************************************************************** + +// **************************************************************************** +// Guest Time - Delta in Milliseconds +// ================================== +extern long guest_time_delta_in_ms( GuestTimeT* end, GuestTimeT* start ); +// **************************************************************************** + +// **************************************************************************** +// Guest Time - Convert Milliseconds +// ================================= +extern void guest_time_convert_ms( long ms, GuestTimeT* time ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_TIME_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_timer.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_timer.c new file mode 100755 index 00000000..b02e62c3 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_timer.c @@ -0,0 +1,323 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_timer.h" + +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_time.h" + +typedef uint64_t GuestTimerInstanceT; + +typedef struct { + bool inuse; + GuestTimerInstanceT timer_instance; + GuestTimerIdT timer_id; + unsigned int ms_interval; + GuestTimeT arm_timestamp; + GuestTimerCallbackT callback; +} GuestTimerEntryT; + +typedef GuestTimerEntryT GuestTimerTableT[GUEST_TIMERS_MAX]; + +static bool _scheduling_on_time = true; +static GuestTimerInstanceT _timer_instance = 0; +static GuestTimerIdT _last_timer_dispatched = 0; +static GuestTimerTableT _timers; +static GuestTimeT _delay_timestamp; +static GuestTimeT _schedule_timestamp; + +// **************************************************************************** +// Guest Timer - Scheduling On Time +// ================================ +bool guest_timer_scheduling_on_time( void ) +{ + return _scheduling_on_time; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Scheduling On Time Within +// ======================================= +bool guest_timer_scheduling_on_time_within( unsigned int period_in_ms ) +{ + long ms_expired; + + ms_expired = guest_time_get_elapsed_ms(&_delay_timestamp); + return (period_in_ms < ms_expired); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Reset +// =================== +GuestErrorT guest_timer_reset( GuestTimerIdT timer_id ) +{ + GuestTimerEntryT* timer_entry = NULL; + + if ((GUEST_TIMER_ID_INVALID == timer_id)||(GUEST_TIMERS_MAX <= timer_id)) + return GUEST_FAILED; + + timer_entry = &(_timers[timer_id]); + guest_time_get(&timer_entry->arm_timestamp); + + DPRINTFD("Timer (%i) reset.", timer_entry->timer_id); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Register +// ====================== +GuestErrorT guest_timer_register( + unsigned int ms, GuestTimerCallbackT callback, GuestTimerIdT* timer_id ) +{ + GuestTimerEntryT* timer_entry; + + *timer_id = GUEST_TIMER_ID_INVALID; + + unsigned int timer_i; + for (timer_i=1; GUEST_TIMERS_MAX > timer_i; ++timer_i) + { + timer_entry = &(_timers[timer_i]); + + if (timer_entry->inuse) + continue; + + memset(timer_entry, 0, sizeof(GuestTimerEntryT)); + + timer_entry->inuse = true; + timer_entry->timer_instance = ++_timer_instance; + timer_entry->timer_id = timer_i; + timer_entry->ms_interval = ms; + guest_time_get(&timer_entry->arm_timestamp); + timer_entry->callback = callback; + break; + } + + if (GUEST_TIMERS_MAX <= timer_i) + { + DPRINTFE("No space available to create timer, exiting..."); + abort(); + } + + *timer_id = timer_i; + + DPRINTFD("Created timer, id=%i.", timer_entry->timer_id); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Deregister +// ======================== +GuestErrorT guest_timer_deregister( GuestTimerIdT timer_id ) +{ + GuestTimerEntryT* timer_entry = NULL; + + if ((GUEST_TIMER_ID_INVALID == timer_id)||(GUEST_TIMERS_MAX <= timer_id)) + return GUEST_OKAY; + + timer_entry = &(_timers[timer_id]); + timer_entry->inuse = false; + timer_entry->timer_instance = 0; + + DPRINTFD("Cancelled timer, id=%i.", timer_entry->timer_id); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Schedule Next +// =========================== +static unsigned int guest_timer_schedule_next( void ) +{ + GuestTimerEntryT* timer_entry; + long ms_expired, ms_remaining; + unsigned int interval_in_ms = GUEST_TICK_INTERVAL_IN_MS; + + unsigned int timer_i; + for (timer_i=0; GUEST_TIMERS_MAX > timer_i; ++timer_i) + { + timer_entry = &(_timers[timer_i]); + + if (timer_entry->inuse) + { + ms_expired = guest_time_get_elapsed_ms(&timer_entry->arm_timestamp); + if (ms_expired < timer_entry->ms_interval) + { + ms_remaining = timer_entry->ms_interval - ms_expired; + if (ms_remaining < interval_in_ms) + interval_in_ms = ms_remaining; + } else { + interval_in_ms = GUEST_MIN_TICK_INTERVAL_IN_MS; + break; + } + } + } + + if (GUEST_MIN_TICK_INTERVAL_IN_MS > interval_in_ms) + interval_in_ms = GUEST_MIN_TICK_INTERVAL_IN_MS; + + else if (GUEST_TICK_INTERVAL_IN_MS < interval_in_ms) + interval_in_ms = GUEST_TICK_INTERVAL_IN_MS; + + DPRINTFV("Scheduling timers in %d ms.", interval_in_ms); + return interval_in_ms; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Schedule +// ====================== +unsigned int guest_timer_schedule( void ) +{ + long ms_expired; + GuestTimeT time_prev; + GuestTimerEntryT* timer_entry; + unsigned int total_timers_fired =0; + + ms_expired = guest_time_get_elapsed_ms(&_schedule_timestamp); + if (ms_expired >= GUEST_SCHEDULING_MAX_DELAY_IN_MS) + { + if (_scheduling_on_time) + { + _scheduling_on_time = false; + DPRINTFI("Not scheduling on time, elapsed=%li ms.", ms_expired); + } + guest_time_get(&_delay_timestamp); + + } else if (!_scheduling_on_time) { + ms_expired = guest_time_get_elapsed_ms(&_delay_timestamp); + if (GUEST_SCHEDULING_DELAY_DEBOUNCE_IN_MS < ms_expired) + { + _scheduling_on_time = true; + DPRINTFI("Now scheduling on time."); + } + } + + guest_time_get(&time_prev); + + unsigned int timer_i; + for (timer_i=_last_timer_dispatched; GUEST_TIMERS_MAX > timer_i; ++timer_i) + { + timer_entry = &(_timers[timer_i]); + + if (timer_entry->inuse) + { + ms_expired = guest_time_get_elapsed_ms(&timer_entry->arm_timestamp); + + if (ms_expired >= timer_entry->ms_interval) + { + bool rearm; + GuestTimerInstanceT timer_instance; + + DPRINTFD("Timer %i fire, ms_interval=%d, ms_expired=%li.", + timer_entry->timer_id, timer_entry->ms_interval, + ms_expired); + + timer_instance = timer_entry->timer_instance; + + rearm = timer_entry->callback(timer_entry->timer_id); + + if (timer_instance == timer_entry->timer_instance) + { + if (rearm) + { + guest_time_get(&timer_entry->arm_timestamp); + DPRINTFD("Timer (%i) rearmed.", timer_entry->timer_id); + } else { + timer_entry->inuse = 0; + DPRINTFD("Timer (%i) removed.", timer_entry->timer_id); + } + } else { + DPRINTFD("Timer (%i) instance changed since callback, " + "rearm=%d.", timer_entry->timer_id, (int) rearm); + } + + if (GUEST_MAX_TIMERS_PER_TICK <= ++total_timers_fired) + { + DPRINTFD("Maximum timers per tick (%d) reached.", + GUEST_MAX_TIMERS_PER_TICK); + break; + } + } + } + } + + if (GUEST_TIMERS_MAX <= timer_i) + _last_timer_dispatched = 0; + else + _last_timer_dispatched = timer_i; + + ms_expired = guest_time_get_elapsed_ms(&time_prev); + if (ms_expired >= GUEST_SCHEDULING_MAX_DELAY_IN_MS) + { + _scheduling_on_time = false; + guest_time_get(&_delay_timestamp); + + DPRINTFI("Not scheduling on time, timer callbacks are taking too " + "long to execute, elapsed_time=%li ms.", ms_expired); + } else { + DPRINTFV("Timer callbacks took %li ms.", ms_expired); + } + + guest_time_get(&_schedule_timestamp); + + return guest_timer_schedule_next(); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Initialize +// ======================== +GuestErrorT guest_timer_initialize( void ) +{ + _scheduling_on_time = true; + _last_timer_dispatched = 0; + memset(_timers, 0, sizeof(GuestTimerTableT)); + guest_time_get(&_schedule_timestamp); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Finalize +// ====================== +GuestErrorT guest_timer_finalize( void ) +{ + memset(_timers, 0, sizeof(GuestTimerTableT)); + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_timer.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_timer.h new file mode 100755 index 00000000..b3a82c07 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_timer.h @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_TIMER_H__ +#define __GUEST_TIMER_H__ + +#include + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_TIMER_ID_INVALID -1 + +typedef int GuestTimerIdT; + +typedef bool (*GuestTimerCallbackT) (GuestTimerIdT timer_id); + +// **************************************************************************** +// Guest Timer - Scheduling On Time +// ================================ +extern bool guest_timer_scheduling_on_time( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Scheduling On Time Within +// ======================================= +extern bool guest_timer_scheduling_on_time_within( unsigned int period_in_ms ); +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Reset +// =================== +extern GuestErrorT guest_timer_reset( GuestTimerIdT timer_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Register +// ====================== +extern GuestErrorT guest_timer_register( + unsigned int ms, GuestTimerCallbackT callback, GuestTimerIdT* timer_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Deregister +// ======================== +extern GuestErrorT guest_timer_deregister( GuestTimerIdT timer_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Schedule +// ====================== +extern unsigned int guest_timer_schedule( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Initialize +// ======================== +extern GuestErrorT guest_timer_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Timer - Finalize +// ====================== +extern GuestErrorT guest_timer_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_TIMER_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_types.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_types.c new file mode 100755 index 00000000..ce92d6d5 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_types.c @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_types.h" + +// **************************************************************************** +// Guest Types - Error String +// ========================== +const char* guest_error_str( GuestErrorT error ) +{ + switch (error) + { + case GUEST_OKAY: return "OKAY"; + case GUEST_FAILED: return "FAILED"; + case GUEST_INTERRUPTED: return "INTERRUPTED"; + case GUEST_TRY_AGAIN: return "TRY_AGAIN"; + case GUEST_NOT_CONFIGURED: return "NOT_CONFIGURED"; + default: + return "???"; + } +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_types.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_types.h new file mode 100755 index 00000000..ad569b24 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_types.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_TYPES_H__ +#define __GUEST_TYPES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GUEST_OKAY, + GUEST_FAILED, + GUEST_INTERRUPTED, + GUEST_TRY_AGAIN, + GUEST_NOT_CONFIGURED=6, +} GuestErrorT; + +// **************************************************************************** +// Guest Types - Error String +// ========================== +extern const char* guest_error_str( GuestErrorT error ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_TYPES_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_unix.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_unix.c new file mode 100755 index 00000000..9ebd0f40 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_unix.c @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_unix.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_selobj.h" + +GuestUnixConnectCallbackT _callback = NULL; + +// **************************************************************************** +// Guest Unix - Connect +// ==================== +GuestErrorT guest_unix_connect( int s, char* address ) +{ + struct sockaddr_un remote; + int len, result; + + memset(&remote, 0, sizeof(remote)); + + remote.sun_family = AF_UNIX; + len = sizeof(remote.sun_family); + len += snprintf(remote.sun_path, sizeof(remote.sun_path), "%s", address); + + result = connect(s, (struct sockaddr*) &remote, sizeof(remote)); + if (0 > result) + { + DPRINTFE("Failed to connect to %s, error=%s.", address, + strerror(errno)); + return GUEST_FAILED; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Dispatch Connection +// ================================ +static void guest_unix_dispatch_connection( int s ) +{ + int sock; + struct sockaddr_un remote; + socklen_t len; + int result; + + memset(&remote, 0, sizeof(remote)); + len = sizeof(remote); + + result = accept(s, (struct sockaddr*) &remote, &len); + if (0 > result) + { + DPRINTFE("Failed to accept on socket, error=%s.", strerror(errno)); + return; + } + + sock = result; + + result = fcntl(sock, F_SETFD, FD_CLOEXEC); + if (0 > result) + { + DPRINTFE("Failed to set to close on exec, error=%s.", strerror(errno)); + close(sock); + return; + } + + result = fcntl(sock, F_GETFL); + if (0 > result) + { + DPRINTFE("Failed to get socket options, error=%s.", strerror(errno)); + close(sock); + return; + } + + result = fcntl(sock, F_SETFL, result | O_NONBLOCK); + if (0 > result) + { + DPRINTFE("Failed to set socket options, error=%s.", strerror(errno)); + close(sock); + return; + } + + if (NULL == _callback) + close(sock); + + _callback(sock, remote.sun_path); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Listen +// =================== +GuestErrorT guest_unix_listen( + int s, char* address, GuestUnixConnectCallbackT callback ) +{ + struct sockaddr_un local; + int len, result; + GuestSelObjCallbacksT callbacks; + GuestErrorT error; + + memset(&local, 0, sizeof(local)); + + local.sun_family = AF_UNIX; + len = sizeof(local.sun_family); + len += snprintf(local.sun_path, sizeof(local.sun_path), "%s", address); + + unlink(address); + + result = bind(s, (struct sockaddr*) &local, len); + if (0 > result) + { + DPRINTFE("Failed to bind socket to address %s, error=%s.", address, + strerror(errno)); + return GUEST_FAILED; + } + + result = listen(s, GUEST_MAX_CONNECTIONS); + if (0 > result) + { + DPRINTFE("Failed to listen on %s, error=%s.", address, + strerror(errno)); + return GUEST_FAILED; + } + + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.read_callback = guest_unix_dispatch_connection; + + error = guest_selobj_register(s, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register selection object, error=%s.", + guest_error_str(error)); + return error; + } + + _callback = callback; + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Send +// ================= +GuestErrorT guest_unix_send( int s, void* msg, int msg_size ) +{ + int result; + + result = write(s, msg, msg_size); + if (0 > result) + { + DPRINTFE("Failed to write to socket, error=%s.", strerror(errno)); + return GUEST_FAILED; + } + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Receive +// ==================== +GuestErrorT guest_unix_receive( + int s, void* msg_buf, int msg_buf_size, int* msg_size ) +{ + int result; + + result = read(s, msg_buf, msg_buf_size); + if (0 > result) + { + if (EINTR == errno) + { + DPRINTFD("Interrupted on socket read, error=%s.", strerror(errno)); + return GUEST_INTERRUPTED; + } else if (ECONNRESET == errno) { + DPRINTFD("Peer connection reset, error=%s.", strerror(errno)); + *msg_size = 0; + return GUEST_OKAY; + } else { + DPRINTFE("Failed to read from socket, error=%s.", strerror(errno)); + return GUEST_FAILED; + } + } else if (0 == result) { + DPRINTFD("No message received from socket."); + *msg_size = 0; + return GUEST_OKAY; + } else { + DPRINTFV("Received message, msg_size=%i.", result); + *msg_size = result; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Open +// ================= +GuestErrorT guest_unix_open( int* s ) +{ + int sock; + int reuse_addr = 1; + struct sockaddr_un local; + int result; + + *s = -1; + memset(&local, 0, sizeof(local)); + + sock = socket(AF_UNIX, SOCK_STREAM, 0); + if (0 > sock) + { + DPRINTFE("Failed to open socket, error=%s.", strerror(errno)); + return GUEST_FAILED; + } + + result = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuse_addr, + sizeof(reuse_addr)); + if (0 > result) + { + DPRINTFE("Failed to set socket option (REUSEADDR), error=%s.", + strerror(errno)); + close(sock); + return GUEST_FAILED; + } + + result = fcntl(sock, F_SETFD, FD_CLOEXEC); + if (0 > result) + { + DPRINTFE("Failed to set to close on exec, error=%s.", strerror(errno)); + close(sock); + return GUEST_FAILED; + } + + result = fcntl(sock, F_GETFL); + if (0 > result) + { + DPRINTFE("Failed to get socket options, error=%s.", strerror(errno)); + close(sock); + return GUEST_FAILED; + } + + result = fcntl(sock, F_SETFL, result | O_NONBLOCK); + if (0 > result) + { + DPRINTFE("Failed to set socket options, error=%s.", strerror(errno)); + close(sock); + return GUEST_FAILED; + } + + *s = sock; + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Close +// ================== +GuestErrorT guest_unix_close( int s ) +{ + GuestErrorT error; + + if (0 <= s) + { + error = guest_selobj_deregister(s); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister selection object, error=%s.", + guest_error_str(error)); + } + + close(s); + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Initialize +// ======================= +GuestErrorT guest_unix_initialize( void ) +{ + _callback = NULL; + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Finalize +// ===================== +GuestErrorT guest_unix_finalize( void ) +{ + _callback = NULL; + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_unix.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_unix.h new file mode 100755 index 00000000..b06f070c --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_unix.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_UNIX_H__ +#define __GUEST_UNIX_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*GuestUnixConnectCallbackT) (int selobj, char* address); + +// **************************************************************************** +// Guest Unix - Connect +// ==================== +extern GuestErrorT guest_unix_connect( int s, char* address ); +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Listen +// =================== +extern GuestErrorT guest_unix_listen( + int s, char* address, GuestUnixConnectCallbackT callback ); +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Send +// ================= +extern GuestErrorT guest_unix_send( int s, void* msg, int msg_size ); +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Receive +// ==================== +extern GuestErrorT guest_unix_receive( + int s, void* msg_buf, int msg_buf_size, int* msg_size ); +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Open +// ================= +extern GuestErrorT guest_unix_open( int* s ); +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Close +// ================== +extern GuestErrorT guest_unix_close( int s ); +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Initialize +// ======================= +extern GuestErrorT guest_unix_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Unix - Finalize +// ===================== +extern GuestErrorT guest_unix_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_UNIX_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_utils.c b/guest-client/guest-client-3.0.1/guest_client/src/guest_utils.c new file mode 100755 index 00000000..41633482 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_utils.c @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_utils.h" +#include "guest_debug.h" + +#include +#include + +// **************************************************************************** +// Guest Utilities - Trim +// ====================== +char* guest_utils_trim( char* str, char* discard ) +{ + int len; + int max_len; + + if (NULL == str) + return NULL; + + // Remove leading characters + max_len = strlen(str); + for (len=0; max_len > len; ++len) + { + if (isspace(*str) || '\n' == *str) + ++str; + else if ((NULL != discard) && (NULL != strchr(discard, *str))) + ++str; + } + + // Remove trailing characters + for (len=strlen(str)-1; 0 <= len; --len) + { + if (isspace(str[len]) || '\n' == str[len]) + str[len] = '\0'; + else if ((NULL != discard) && (NULL != strchr(discard, str[len]))) + str[len] = '\0'; + } + + return str; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Utilities - Base Name +// =========================== +char* guest_utils_basename( char* str ) +{ + const char* basename = str; + + while ('\0' != *str) + { + if (*str++ == '/') + basename = str; + } + + return (char*) basename; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Utilities - Get JSON Value from Key +// return 0 if success, -1 if fail. +// ========================================= +int guest_utils_json_get_value( struct json_object* jobj, + const char* key, void * value ) +{ + struct json_object *jobj_value; + if (!json_object_object_get_ex(jobj, key, &jobj_value)) + { + DPRINTFE("failed to parse %s\n", key); + return -1; + } + enum json_type type = json_object_get_type(jobj_value); + switch(type) + { + case json_type_boolean: + *(unsigned int *)value = json_object_get_boolean(jobj_value); + break; + case json_type_int: + *(unsigned int *)value = json_object_get_int(jobj_value); + break; + case json_type_double: + *(double *)value = json_object_get_double(jobj_value); + break; + case json_type_string: + strcpy(value, json_object_get_string(jobj_value)); + break; + default: + DPRINTFE("failed to parse %s, type %d is not supported\n", key, type); + return -1; + break; + } + return 0; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/guest_utils.h b/guest-client/guest-client-3.0.1/guest_client/src/guest_utils.h new file mode 100755 index 00000000..25b75b67 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/guest_utils.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_UTILITIES_H__ +#define __GUEST_UTILITIES_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define STRINGIZE(str) #str +#define MAKE_STRING(str) STRINGIZE(str) + +// **************************************************************************** +// Guest Utilities - Trim +// ====================== +extern char* guest_utils_trim( char* str, char* discard ); +// **************************************************************************** + +// **************************************************************************** +// Guest Utilities - Base Name +// =========================== +extern char* guest_utils_basename( char* str ); +// **************************************************************************** + +// **************************************************************************** +// Guest Utilities - Get JSON Value from Key +// return 0 if success, -1 if fail. +// ========================================= +extern int guest_utils_json_get_value( struct json_object* jobj, + const char* key, void * value ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_UTILITIES_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/Makefile b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/Makefile new file mode 100755 index 00000000..0c74c670 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/Makefile @@ -0,0 +1,62 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +SHELL = /bin/sh + +## Configuration Directory Variables +prefix := /usr/local +exec_prefix := $(prefix) +sysconfdir := $(prefix)/etc +includedir := $(prefix)/include +libdir := $(exec_prefix)/lib +bindir := $(exec_prefix)/bin + +MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CURRENT_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH))) + +ifndef BUILD_DIR +$(error BUILD_DIR undefined) +endif + +.SUFFIXES: +.SUFFIXES: .c .o + +.PHONY: build + +heartbeat_C_INCLUDES := -I$(CURRENT_DIR) -I$(CURRENT_DIR)/../ +heartbeat_C_INCLUDES += -I$(CURRENT_DIR)/../../../include +heartbeat_C_SRCS := $(wildcard *.c) +heartbeat_C_OBJS := ${heartbeat_C_SRCS:.c=.o} + +CFLAGS = -g -O2 -Wall -Werror -Wformat -DSYSCONFDIR=$(sysconfdir) + +%.o: %.c + $(CC) $(CFLAGS) $(heartbeat_C_INCLUDES) -c $< -o $(BUILD_DIR)/$@ -ljson-c + +build: $(heartbeat_C_OBJS) diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.c new file mode 100755 index 00000000..48638dbc --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.c @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat.h" + +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_timer.h" + +#include "guest_heartbeat_config.h" +#include "guest_heartbeat_msg.h" +#include "guest_heartbeat_fsm.h" +#include "guest_heartbeat_health_script.h" +#include "guest_heartbeat_event_script.h" +#include "guest_heartbeat_mgmt_api.h" + +static GuestTimerIdT _release_timer_id = GUEST_TIMER_ID_INVALID; + +// **************************************************************************** +// Guest Heartbeat - Release +// ========================= +static bool guest_heartbeat_release(GuestTimerIdT timer_id) +{ + GuestErrorT error; + + error = guest_heartbeat_fsm_event_handler(GUEST_HEARTBEAT_FSM_RELEASE, + NULL); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle release event, error=%s.", + guest_error_str(error)); + return true; + } + + return false; // don't rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Channel State Change +// ====================================== +static void guest_heartbeat_channel_state_change( bool state ) +{ + GuestErrorT error; + + if (state) + { + error = guest_heartbeat_fsm_event_handler( + GUEST_HEARTBEAT_FSM_CHANNEL_UP, NULL); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle channel up event, error=%s.", + guest_error_str(error)); + return; + } + } else { + error = guest_heartbeat_fsm_event_handler( + GUEST_HEARTBEAT_FSM_CHANNEL_DOWN, NULL); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle channel down event, error=%s.", + guest_error_str(error)); + return; + } + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Receive Init Ack Message +// ========================================== +static void guest_heartbeat_recv_init_ack_msg( int invocation_id ) +{ + void* event_data[] = {&invocation_id}; + GuestErrorT error; + + error = guest_heartbeat_fsm_event_handler(GUEST_HEARTBEAT_FSM_INIT_ACK, + event_data); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle heartbeat-init-ack event, error=%s.", + guest_error_str(error)); + return; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Receive Challenge Message +// =========================================== +static void guest_heartbeat_recv_challenge_msg( void ) +{ + GuestErrorT error; + + error = guest_heartbeat_fsm_event_handler(GUEST_HEARTBEAT_FSM_CHALLENGE, + NULL); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle heartbeat-challenge event, error=%s.", + guest_error_str(error)); + return; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Receive Action Notify Message +// =============================================== +static void guest_heartbeat_recv_action_notify_msg( + int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, int timeout_ms) +{ + void* event_data[] = {&invocation_id, &event, ¬ify, &timeout_ms}; + GuestHeartbeatFsmStateT state = guest_heartbeat_fsm_get_state(); + GuestErrorT error; + + if (GUEST_HEARTBEAT_FSM_ENABLED_STATE == state) + { + error = guest_heartbeat_fsm_event_handler(GUEST_HEARTBEAT_FSM_ACTION, + event_data); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle action notify for event %s, error=%s.", + guest_heartbeat_event_str(event), guest_error_str(error)); + return; + } + + } else { + error = guest_heartbeat_msg_send_action_response( + invocation_id, event, notify, + GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE, ""); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send action response for event %s, error=%s.", + guest_heartbeat_event_str(event), guest_error_str(error)); + return; + } + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Initialize +// ============================ +GuestErrorT guest_heartbeat_initialize( char* comm_device ) +{ + GuestHeartbeatMsgCallbacksT callbacks; + GuestErrorT error; + + _release_timer_id = GUEST_TIMER_ID_INVALID; + + error = guest_heartbeat_config_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat configuration, error=%s.", + guest_error_str(error)); + return error; + } + + memset(&callbacks, 0, sizeof(callbacks)); + + callbacks.channel_state_change = guest_heartbeat_channel_state_change; + callbacks.recv_init_ack = guest_heartbeat_recv_init_ack_msg; + callbacks.recv_challenge = guest_heartbeat_recv_challenge_msg; + callbacks.recv_action_notify = guest_heartbeat_recv_action_notify_msg; + + error = guest_heartbeat_msg_initialize(comm_device, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat messaging, error=%s.", + guest_error_str(error)); + return error; + } + + error = guest_heartbeat_fsm_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat fsm, error=%s.", + guest_error_str(error)); + return error; + } + + error = guest_heartbeat_mgmt_api_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat management api, error=%s.", + guest_error_str(error)); + return error; + } + + error = guest_heartbeat_health_script_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat health script handling, " + "error=%s.", guest_error_str(error)); + return error; + } + + error = guest_heartbeat_event_script_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat event script handling, " + "error=%s.", guest_error_str(error)); + return error; + } + + error = guest_timer_register(1000, guest_heartbeat_release, + &_release_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to start release timer, error=%s.", + guest_error_str(error)); + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Finalize +// ========================== +GuestErrorT guest_heartbeat_finalize( void ) +{ + GuestErrorT error; + + error = guest_heartbeat_fsm_event_handler(GUEST_HEARTBEAT_FSM_SHUTDOWN, + NULL); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle shutdown event, error=%s.", + guest_error_str(error)); + } + + if (GUEST_TIMER_ID_INVALID != _release_timer_id) + { + error = guest_timer_deregister(_release_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel release timer, error=%s.", + guest_error_str(error)); + } + _release_timer_id = GUEST_TIMER_ID_INVALID; + } + + error = guest_heartbeat_event_script_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat event script handling, " + "error=%s.", guest_error_str(error)); + } + + error = guest_heartbeat_health_script_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat health script handling, " + "error=%s.", guest_error_str(error)); + } + + error = guest_heartbeat_mgmt_api_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat management api, error=%s.", + guest_error_str(error)); + } + + error = guest_heartbeat_fsm_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat fsm, error=%s.", + guest_error_str(error)); + } + + error = guest_heartbeat_msg_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat messaging, error=%s.", + guest_error_str(error)); + } + + error = guest_heartbeat_config_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat configuration, error=%s.", + guest_error_str(error)); + } + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.h new file mode 100755 index 00000000..d8148674 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __GUEST_HEARTBEAT_H__ +#define __GUEST_HEARTBEAT_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Heartbeat - Initialize +// ============================ +extern GuestErrorT guest_heartbeat_initialize( char* comm_device ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Finalize +// ========================== +extern GuestErrorT guest_heartbeat_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.c new file mode 100755 index 00000000..c1e695d6 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.c @@ -0,0 +1,235 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_config.h" + +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_utils.h" + +#include "guest_heartbeat_types.h" + +#ifndef SYSCONFDIR +#define GUEST_HEARTBEAT_DEFAULT_CONFIG_FILE \ + "/etc/guest-client/heartbeat/guest_heartbeat.conf" +#else +#define GUEST_HEARTBEAT_DEFAULT_CONFIG_FILE \ + MAKE_STRING(SYSCONFDIR) "/guest-client/heartbeat/guest_heartbeat.conf" +#endif + +#define GUEST_HEARTBEAT_DEFAULT_HEARTBEAT_INIT_RETRY_MS 5000 +#define GUEST_HEARTBEAT_DEFAULT_HEARTBEAT_MIN_TIMEOUT_MS 5000 +#define GUEST_HEARTBEAT_DEFAULT_HEARTBEAT_INTERVAL_MS 1000 +#define GUEST_HEARTBEAT_DEFAULT_VOTE_MS 10000 +#define GUEST_HEARTBEAT_DEFAULT_SHUTDOWN_MS 10000 +#define GUEST_HEARTBEAT_DEFAULT_SUSPEND_MS 10000 +#define GUEST_HEARTBEAT_DEFAULT_RESUME_MS 10000 +#define GUEST_HEARTBEAT_DEFAULT_RESTART_MS 120000 + +static GuestHeartbeatConfigT _config; + +// **************************************************************************** +// Guest Heartbeat Configuration - Read +// ==================================== +static GuestErrorT guest_heartbeat_config_read( char filename[] ) +{ + char* s; + char* key; + char* value; + char delimiter[] = "="; + char discard[] = "\'\""; + char buf[1024]; + FILE* fp; + + fp = fopen(filename, "r"); + if (NULL == fp) + { + DPRINTFE("Failed to open file %s.", filename); + return GUEST_FAILED; + } + + while (NULL != (s = fgets(buf, sizeof(buf), fp))) + { + s = guest_utils_trim(s, NULL); + + // Skip empty string and comments + if (('\0' == *s) || ('#' == *s)) + continue; + + key = strtok(s, delimiter); + value = strtok(NULL, delimiter); + + key = guest_utils_trim(key, discard); + value = guest_utils_trim(value, discard); + + if ((NULL != key) && (NULL != value)) + { + if (0 == strcmp("HB_INIT_RETRY", key)) + { + _config.heartbeat_init_retry_ms = atoi(value); + + } else if (0 == strcmp("HB_MIN_TIMEOUT", key)) { + _config.heartbeat_min_timeout_ms = atoi(value); + + } else if (0 == strcmp("HB_INTERVAL", key)) { + _config.heartbeat_interval_ms = atoi(value); + + } else if (0 == strcmp("VOTE", key)) { + _config.vote_ms = atoi(value) * 1000; + + } else if (0 == strcmp("SHUTDOWN_NOTICE", key)) { + _config.shutdown_notice_ms = atoi(value) * 1000; + + } else if (0 == strcmp("SUSPEND_NOTICE", key)) { + _config.suspend_notice_ms = atoi(value) * 1000; + + } else if (0 == strcmp("RESUME_NOTICE", key)) { + _config.resume_notice_ms = atoi(value) * 1000; + + } else if (0 == strcmp("RESTART", key)) { + _config.restart_ms = atoi(value) * 1000; + + } else if (0 == strcmp("CORRECTIVE_ACTION", key)) { + if (0 == strcmp("reboot", value)) + { + _config.corrective_action = GUEST_HEARTBEAT_ACTION_REBOOT; + + } else if (0 == strcmp("stop", value)) { + _config.corrective_action = GUEST_HEARTBEAT_ACTION_STOP; + + } else if (0 == strcmp("log", value)) { + _config.corrective_action = GUEST_HEARTBEAT_ACTION_LOG; + } + + } else if (0 == strcmp("HEALTH_CHECK_INTERVAL", key)) { + _config.health_check_interval_ms = atoi(value) * 1000; + + } else if (0 == strcmp("HEALTH_CHECK_SCRIPT", key)) { + snprintf(_config.health_check_script, + sizeof(_config.health_check_script), "%s", value); + + } else if (0 == strcmp("EVENT_NOTIFICATION_SCRIPT", key)) { + snprintf(_config.event_handling_script, + sizeof(_config.event_handling_script), "%s", value); + + } else { + DPRINTFE("Unknown key %s in configuration file %s.", key, + filename); + } + } + } + + fclose(fp); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Configuration - Dump +// ==================================== +static void guest_heartbeat_config_dump( void ) +{ + DPRINTFI("Guest-Client Heartbeat Configuration:"); + DPRINTFI(" heartbeat-init-retry: %i ms", _config.heartbeat_init_retry_ms); + DPRINTFI(" heartbeat-interval: %i ms", _config.heartbeat_interval_ms); + DPRINTFI(" heartbeat-min-timeout: %i ms", _config.heartbeat_min_timeout_ms); + DPRINTFI(" vote: %i ms", _config.vote_ms); + DPRINTFI(" shutdown-notice: %i ms", _config.shutdown_notice_ms); + DPRINTFI(" suspend-notice: %i ms", _config.suspend_notice_ms); + DPRINTFI(" resume-notice: %i ms", _config.resume_notice_ms); + DPRINTFI(" restart: %i ms", _config.restart_ms); + DPRINTFI(" health-check-interval: %i ms", _config.health_check_interval_ms); + DPRINTFI(" health-check-script: %s", _config.health_check_script); + DPRINTFI(" event-handling-script: %s", _config.event_handling_script); + DPRINTFI(" corrective-action: %s", + guest_heartbeat_action_str(_config.corrective_action)); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Configuration - Get +// =================================== +GuestHeartbeatConfigT* guest_heartbeat_config_get( void ) +{ + return &_config; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Configuration - Initialize +// ========================================== +GuestErrorT guest_heartbeat_config_initialize( void ) +{ + GuestErrorT error; + + memset(&_config, 0, sizeof(GuestHeartbeatConfigT)); + + _config.heartbeat_init_retry_ms = GUEST_HEARTBEAT_DEFAULT_HEARTBEAT_INIT_RETRY_MS; + _config.heartbeat_min_timeout_ms = GUEST_HEARTBEAT_DEFAULT_HEARTBEAT_MIN_TIMEOUT_MS; + _config.heartbeat_interval_ms = GUEST_HEARTBEAT_DEFAULT_HEARTBEAT_INTERVAL_MS; + _config.vote_ms = GUEST_HEARTBEAT_DEFAULT_VOTE_MS; + _config.shutdown_notice_ms = GUEST_HEARTBEAT_DEFAULT_SHUTDOWN_MS; + _config.suspend_notice_ms = GUEST_HEARTBEAT_DEFAULT_SUSPEND_MS; + _config.resume_notice_ms = GUEST_HEARTBEAT_DEFAULT_RESUME_MS; + _config.restart_ms = GUEST_HEARTBEAT_DEFAULT_RESTART_MS; + _config.corrective_action = GUEST_HEARTBEAT_ACTION_REBOOT; + + error = guest_heartbeat_config_read(GUEST_HEARTBEAT_DEFAULT_CONFIG_FILE); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to read guest heartbeat configuration, error=%s.", + guest_error_str(error)); + return error; + } + + guest_heartbeat_config_dump(); + + if (GUEST_HEARTBEAT_MIN_INTERVAL_MS > _config.heartbeat_interval_ms) + { + DPRINTFE("Guest heartbeat interval configuration is less than %i ms.", + GUEST_HEARTBEAT_MIN_INTERVAL_MS); + return GUEST_FAILED; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Configuration - Finalize +// ======================================== +GuestErrorT guest_heartbeat_config_finalize( void ) +{ + memset(&_config, 0, sizeof(GuestHeartbeatConfigT)); + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.h new file mode 100755 index 00000000..6fd54a49 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_config.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HERATBEAT_CONFIGURATION_H__ +#define __GUEST_HEARTBEAT_CONFIGURATION_H__ + +#include "guest_limits.h" +#include "guest_types.h" + +#include "guest_heartbeat_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int heartbeat_init_retry_ms; + int heartbeat_interval_ms; + int heartbeat_min_timeout_ms; + int vote_ms; + int shutdown_notice_ms; + int suspend_notice_ms; + int resume_notice_ms; + int restart_ms; + GuestHeartbeatActionT corrective_action; + int health_check_interval_ms; + char health_check_script[255]; + char event_handling_script[255]; +} GuestHeartbeatConfigT; + +// **************************************************************************** +// Guest Heartbeat Configuration - Get +// =================================== +extern GuestHeartbeatConfigT* guest_heartbeat_config_get( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Configuration - Initialize +// ========================================== +extern GuestErrorT guest_heartbeat_config_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Configuration - Finalize +// ======================================== +extern GuestErrorT guest_heartbeat_config_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_CONFIGURATION_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.c new file mode 100755 index 00000000..97af2984 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.c @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_disabled_state.h" + +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_timer.h" + +#include "guest_heartbeat_fsm.h" + +// **************************************************************************** +// Guest Heartbeat Disabled State - Enter +// ====================================== +GuestErrorT guest_heartbeat_disabled_state_enter( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Exit +// ===================================== +GuestErrorT guest_heartbeat_disabled_state_exit( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Transition +// =========================================== +GuestErrorT guest_heartbeat_disabled_state_transition( + GuestHeartbeatFsmStateT from_state ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Event Handler +// ============================================== +GuestErrorT guest_heartbeat_disabled_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ) +{ + switch (event) + { + case GUEST_HEARTBEAT_FSM_RELEASE: + case GUEST_HEARTBEAT_FSM_INIT_ACK: + case GUEST_HEARTBEAT_FSM_CHALLENGE: + case GUEST_HEARTBEAT_FSM_CHALLENGE_TIMEOUT: + case GUEST_HEARTBEAT_FSM_CHANNEL_DOWN: + case GUEST_HEARTBEAT_FSM_ACTION: + // Ignore + break; + + case GUEST_HEARTBEAT_FSM_CHANNEL_UP: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_ENABLING_STATE); + break; + + case GUEST_HEARTBEAT_FSM_SHUTDOWN: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_INITIAL_STATE); + break; + + default: + DPRINTFE("Ignoring event %s.", + guest_heartbeat_fsm_event_str(event)); + } + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Initialize +// =========================================== +GuestErrorT guest_heartbeat_disabled_state_initialize( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Finalize +// ========================================= +GuestErrorT guest_heartbeat_disabled_state_finalize( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.h new file mode 100755 index 00000000..38f88af9 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_disabled_state.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_DISABLED_STATE_H__ +#define __GUEST_HEARTBEAT_DISABLED_STATE_H__ + +#include "guest_types.h" +#include "guest_heartbeat_fsm.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Heartbeat Disabled State - Enter +// ====================================== +extern GuestErrorT guest_heartbeat_disabled_state_enter( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Exit +// ===================================== +extern GuestErrorT guest_heartbeat_disabled_state_exit( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Transition +// =========================================== +extern GuestErrorT guest_heartbeat_disabled_state_transition( + GuestHeartbeatFsmStateT from_state ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Event Handler +// ============================================== +extern GuestErrorT guest_heartbeat_disabled_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Initialize +// =========================================== +extern GuestErrorT guest_heartbeat_disabled_state_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Disabled State - Finalize +// ========================================= +extern GuestErrorT guest_heartbeat_disabled_state_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_DISABLED_STATE_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.c new file mode 100755 index 00000000..03cdd99c --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.c @@ -0,0 +1,698 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_enabled_state.h" + +#include +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_time.h" +#include "guest_timer.h" + +#include "guest_heartbeat_config.h" +#include "guest_heartbeat_msg.h" +#include "guest_heartbeat_fsm.h" +#include "guest_heartbeat_health_script.h" +#include "guest_heartbeat_event_script.h" +#include "guest_heartbeat_mgmt_api.h" + +static bool _wait_application; +static bool _wait_script; +static int _action_invocation_id; +static GuestHeartbeatEventT _action_event; +static GuestHeartbeatNotifyT _action_notify; +GuestHeartbeatVoteResultT _vote_result; +static int _action_timeout_ms; +static GuestTimerIdT _health_check_timer_id = GUEST_TIMER_ID_INVALID; +static GuestTimerIdT _challenge_timeout_timer_id = GUEST_TIMER_ID_INVALID; +static GuestTimerIdT _action_timeout_timer_id = GUEST_TIMER_ID_INVALID; +static bool _health = true; +static char _health_log_msg[GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE]; +static char _action_log_msg[GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE]; +static GuestTimeT _last_time_reported; +static bool _last_health_reported = true; +static GuestHeartbeatActionT _last_corrective_action_reported; + +// **************************************************************************** +// Guest Heartbeat Enabled State - Health Callback +// =============================================== +static void guest_heartbeat_enabled_state_health_callback( + bool health, char* log_msg ) +{ + if (_health && !health) + { + DPRINTFI("Transition from healthy to unhealthy, msg=%s.", log_msg); + + } else if (!_health && health) { + DPRINTFI("Transition from unhealthy to healthy, msg=%s.", log_msg); + } + + _health = health; + snprintf(_health_log_msg, sizeof(_health_log_msg), "%s", log_msg); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Health Check +// ============================================ +static bool guest_heartbeat_enabled_state_health_check( + GuestTimerIdT timer_id ) +{ + GuestHeartbeatConfigT* config = guest_heartbeat_config_get(); + GuestErrorT error; + + guest_heartbeat_health_script_abort(); + + if ('\0' != config->health_check_script[0]) + { + error = guest_heartbeat_health_script_invoke( + config->health_check_script, + guest_heartbeat_enabled_state_health_callback); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to invoke health script %s.", + config->event_handling_script); + return true; // rearm + } + } + + return true; // rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Challenge Timeout +// ================================================= +static bool guest_heartbeat_enabled_state_challenge_timeout( + GuestTimerIdT timer_id ) +{ + GuestHeartbeatConfigT* config = guest_heartbeat_config_get(); + GuestErrorT error; + int max_heartbeat_delay; + + max_heartbeat_delay = config->heartbeat_interval_ms*2; + if (max_heartbeat_delay < config->heartbeat_min_timeout_ms) + max_heartbeat_delay = config->heartbeat_min_timeout_ms; + + if (!guest_timer_scheduling_on_time_within(max_heartbeat_delay)) + { + DPRINTFE("Failed to receive a challenge in %i ms, but we are not " + "scheduling on time.", max_heartbeat_delay); + return true; // rearm + } + + DPRINTFE("Failed to receive a challenge in %i ms.", max_heartbeat_delay); + + error = guest_heartbeat_fsm_event_handler(GUEST_HEARTBEAT_FSM_CHALLENGE_TIMEOUT, + NULL); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to handle heartbeat-challenge-timeout event, " + "error=%s.", guest_error_str(error)); + return true; // rearm + } + + return true; // rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Action Timeout +// ============================================== +static bool guest_heartbeat_enabled_state_action_timeout( + GuestTimerIdT timer_id ) +{ + char log_msg[GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE]; + GuestHeartbeatVoteResultT vote_result; + GuestErrorT error; + + if (!guest_timer_scheduling_on_time_within(_action_timeout_ms)) + { + DPRINTFE("Failed to receive action script response in %i ms, but we " + "are not scheduling on time.", _action_timeout_ms); + return true; + } + + DPRINTFE("Failed to receive action responses in %i ms.", + _action_timeout_ms); + + guest_heartbeat_mgmt_api_action_abort(); + guest_heartbeat_event_script_abort(); + + if (((!_wait_application) || (!_wait_script)) && + (GUEST_HEARTBEAT_VOTE_RESULT_REJECT == _vote_result)) + { + vote_result = _vote_result; + snprintf(log_msg, sizeof(log_msg), "%s", _action_log_msg); + } else { + vote_result = GUEST_HEARTBEAT_VOTE_RESULT_TIMEOUT; + snprintf(log_msg, sizeof(log_msg), "Timeout on application and/or " + "script action responses."); + } + + error = guest_heartbeat_msg_send_action_response( + _action_invocation_id, _action_event, _action_notify, + vote_result, log_msg); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send action script response for event %s, " + "notification=%s, error=%s.", + guest_heartbeat_event_str(_action_event), + guest_heartbeat_notify_str(_action_notify), + guest_error_str(error)); + } + + _action_timeout_timer_id = GUEST_TIMER_ID_INVALID; + return false; // don't rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Action Application Callback +// =========================================================== +static void guest_heartbeat_enabled_state_action_app_callback( + GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, + GuestHeartbeatVoteResultT vote_result, char* log_msg ) +{ + bool update; + GuestErrorT error; + + DPRINTFI("Received action application response, event=%s, notify=%s, " + "vote-result=%s, msg=%s.", guest_heartbeat_event_str(event), + guest_heartbeat_notify_str(notify), + guest_heartbeat_vote_result_str(vote_result), log_msg); + + _wait_application = false; + update = false; + + switch (vote_result) + { + case GUEST_HEARTBEAT_VOTE_RESULT_REJECT: + update = true; + break; + + case GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT: + case GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE: + if (GUEST_HEARTBEAT_VOTE_RESULT_REJECT != _vote_result) + update = true; + break; + + default: + update = false; + break; + } + + if (update) + { + _action_event = event; + _action_notify = notify; + _vote_result = vote_result; + snprintf(_action_log_msg, sizeof(_action_log_msg), "%s", log_msg); + } + + if (!_wait_script) + { + error = guest_heartbeat_msg_send_action_response( + _action_invocation_id, _action_event, _action_notify, + _vote_result, _action_log_msg); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send action response for event %s, " + "notification=%s, error=%s.", + guest_heartbeat_event_str(_action_event), + guest_heartbeat_notify_str(_action_notify), + guest_error_str(error)); + } + + if (GUEST_TIMER_ID_INVALID != _action_timeout_timer_id) + { + error = guest_timer_deregister(_action_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel action script timeout timer, " + "error=%s.", guest_error_str(error)); + } + _action_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Action Script Callback +// ====================================================== +static void guest_heartbeat_enabled_state_action_script_callback( + GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, + GuestHeartbeatVoteResultT vote_result, char* log_msg ) +{ + bool update; + GuestErrorT error; + + DPRINTFI("Received event script response, event=%s, notify=%s, " + "vote-result=%s, msg=%s.", guest_heartbeat_event_str(event), + guest_heartbeat_notify_str(notify), + guest_heartbeat_vote_result_str(vote_result), log_msg); + + _wait_script = false; + update = false; + + switch (vote_result) + { + case GUEST_HEARTBEAT_VOTE_RESULT_REJECT: + update = true; + break; + + case GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT: + case GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE: + if (GUEST_HEARTBEAT_VOTE_RESULT_REJECT != _vote_result) + update = true; + break; + + default: + update = false; + break; + } + + if (update) + { + _action_event = event; + _action_notify = notify; + _vote_result = vote_result; + snprintf(_action_log_msg, sizeof(_action_log_msg), "%s", log_msg); + } + + if (!_wait_application) + { + error = guest_heartbeat_msg_send_action_response( + _action_invocation_id, _action_event, _action_notify, + _vote_result, _action_log_msg); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send action response for event %s, " + "notification=%s, error=%s.", + guest_heartbeat_event_str(_action_event), + guest_heartbeat_notify_str(_action_notify), + guest_error_str(error)); + } + + if (GUEST_TIMER_ID_INVALID != _action_timeout_timer_id) + { + error = guest_timer_deregister(_action_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel action script timeout timer, " + "error=%s.", guest_error_str(error)); + } + _action_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Enter +// ===================================== +GuestErrorT guest_heartbeat_enabled_state_enter( void ) +{ + int heartbeat_timeout; + GuestHeartbeatConfigT* config = guest_heartbeat_config_get(); + GuestErrorT error; + + _health = true; + _last_health_reported = true; + + heartbeat_timeout = config->heartbeat_interval_ms*2; + if (heartbeat_timeout < config->heartbeat_min_timeout_ms) + heartbeat_timeout = config->heartbeat_min_timeout_ms; + + error = guest_timer_register(heartbeat_timeout, + guest_heartbeat_enabled_state_challenge_timeout, + &_challenge_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to start challenge timeout timer, error=%s.", + guest_error_str(error)); + return error; + } + + if ((0 != config->health_check_interval_ms) && + ('\0' != config->health_check_script[0])) + { + error = guest_timer_register(config->health_check_interval_ms, + guest_heartbeat_enabled_state_health_check, + &_health_check_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to start health check timer, error=%s.", + guest_error_str(error)); + return error; + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Exit +// ==================================== +GuestErrorT guest_heartbeat_enabled_state_exit( void ) +{ + GuestErrorT error; + + if (GUEST_TIMER_ID_INVALID != _challenge_timeout_timer_id) + { + error = guest_timer_deregister(_challenge_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel challenge timeout timer, error=%s.", + guest_error_str(error)); + } + _challenge_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + + if (GUEST_TIMER_ID_INVALID != _health_check_timer_id) + { + error = guest_timer_deregister(_health_check_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel health check timer, error=%s.", + guest_error_str(error)); + } + _health_check_timer_id = GUEST_TIMER_ID_INVALID; + } + + if (GUEST_TIMER_ID_INVALID != _action_timeout_timer_id) + { + error = guest_timer_deregister(_action_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel action timeout timer, error=%s.", + guest_error_str(error)); + } + _action_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + + guest_heartbeat_health_script_abort(); + guest_heartbeat_event_script_abort(); + guest_heartbeat_mgmt_api_action_abort(); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Transition +// ========================================== +GuestErrorT guest_heartbeat_enabled_state_transition( + GuestHeartbeatFsmStateT from_state ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Event Handler +// ============================================= +GuestErrorT guest_heartbeat_enabled_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ) +{ + bool health = true; + GuestHeartbeatActionT corrective_action = GUEST_HEARTBEAT_ACTION_NONE; + char log_msg[GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE]; + GuestHeartbeatConfigT* config = guest_heartbeat_config_get(); + GuestErrorT error; + + switch (event) { + case GUEST_HEARTBEAT_FSM_RELEASE: + case GUEST_HEARTBEAT_FSM_INIT_ACK: + case GUEST_HEARTBEAT_FSM_CHANNEL_UP: + // Ignore. + break; + + case GUEST_HEARTBEAT_FSM_CHANNEL_DOWN: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_DISABLED_STATE); + break; + + case GUEST_HEARTBEAT_FSM_CHALLENGE: + guest_timer_reset(_challenge_timeout_timer_id); + + error = guest_heartbeat_mgmt_api_get_health(&health, + &corrective_action, log_msg, + GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to get application health, error=%s.", + guest_error_str(error)); + } + + if (health) + { + // Applications are healthy, use the last health script status. + health = _health; + corrective_action = config->corrective_action; + snprintf(log_msg, GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE, "%s", + _health_log_msg); + + } else if (!_health) { + // Applications are not healthy and the health script status + // is not healthy, need to merge the corrective action taken. + corrective_action = guest_heartbeat_merge_action( + corrective_action, + config->corrective_action); + + if (corrective_action == config->corrective_action) + { + snprintf(log_msg, GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE, "%s", + _health_log_msg); + } + } + + if (!health) + { + if ((health == _last_health_reported) && + (corrective_action == _last_corrective_action_reported) && + (60000 > guest_time_get_elapsed_ms(&_last_time_reported))) + { + DPRINTFD("Unhealthy, already reported corrective action " + "%s, setting corrective action to none.", + guest_heartbeat_action_str(corrective_action)); + + // Don't keep asking for a corrective action to be taken + // over and over again at the heartbeat interval if it has + // already been reported. + corrective_action = GUEST_HEARTBEAT_ACTION_NONE; + + } else { + _last_health_reported = health; + _last_corrective_action_reported = corrective_action; + memset(&_last_time_reported, 0, sizeof(_last_time_reported)); + + DPRINTFI("Unhealthy, reporting corrective action %s.", + guest_heartbeat_action_str(corrective_action)); + } + } else { + _last_health_reported = true; + _last_corrective_action_reported = GUEST_HEARTBEAT_ACTION_NONE; + memset(&_last_time_reported, 0, sizeof(_last_time_reported)); + } + + error = guest_heartbeat_msg_send_challenge_response(health, + corrective_action, log_msg); + if (GUEST_OKAY == error) + { + if (GUEST_HEARTBEAT_ACTION_NONE != corrective_action) + { + guest_time_get(&_last_time_reported); + } + } else { + DPRINTFE("Failed to send challenge response, error=%s.", + guest_error_str(error)); + return GUEST_OKAY; + } + break; + + case GUEST_HEARTBEAT_FSM_CHALLENGE_TIMEOUT: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_ENABLING_STATE); + break; + + case GUEST_HEARTBEAT_FSM_ACTION: + guest_heartbeat_mgmt_api_action_abort(); + guest_heartbeat_event_script_abort(); + + _wait_application = false; + _wait_script = false; + _action_invocation_id = *(int*) event_data[0]; + _action_event = *(GuestHeartbeatEventT*) event_data[1]; + _action_notify = *(GuestHeartbeatNotifyT*) event_data[2]; + _action_timeout_ms = *(int*) event_data[3]; + _vote_result = GUEST_HEARTBEAT_VOTE_RESULT_UNKNOWN; + + error = guest_heartbeat_mgmt_api_action_notify( + _action_event, _action_notify, &_wait_application, + guest_heartbeat_enabled_state_action_app_callback); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to notify applications for event %s, " + "notification=%s.", + guest_heartbeat_event_str(_action_event), + guest_heartbeat_notify_str(_action_notify)); + } + + if ('\0' != config->event_handling_script[0]) + { + DPRINTFI("Invoke event script %s for event %s, " + "notification=%s.", config->event_handling_script, + guest_heartbeat_event_str(_action_event), + guest_heartbeat_notify_str(_action_notify)); + + error = guest_heartbeat_event_script_invoke( + config->event_handling_script, + _action_event, _action_notify, + guest_heartbeat_enabled_state_action_script_callback); + if (GUEST_OKAY == error) + { + _wait_script = true; + + } else { + DPRINTFE("Failed to invoke event script %s for event %s, " + "notification=%s.", config->event_handling_script, + guest_heartbeat_event_str(_action_event), + guest_heartbeat_notify_str(_action_notify)); + } + } + + if (_wait_application || _wait_script) + { + error = guest_timer_register(_action_timeout_ms, + guest_heartbeat_enabled_state_action_timeout, + &_action_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to start action timeout timer, error=%s.", + guest_error_str(error)); + guest_heartbeat_mgmt_api_action_abort(); + guest_heartbeat_event_script_abort(); + return GUEST_OKAY; + } + } else { + error = guest_heartbeat_msg_send_action_response( + _action_invocation_id, _action_event, + _action_notify, GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE, + ""); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send action response for event %s, " + "notification=%s, error=%s.", + guest_heartbeat_event_str(_action_event), + guest_heartbeat_notify_str(_action_notify), + guest_error_str(error)); + } + } + break; + + case GUEST_HEARTBEAT_FSM_SHUTDOWN: + error = guest_heartbeat_msg_send_exit("Exiting..."); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send exit, error=%s.", + guest_error_str(error)); + } + + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_INITIAL_STATE); + break; + + default: + DPRINTFE("Ignoring event %s.", + guest_heartbeat_fsm_event_str(event)); + } + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Initialize +// ========================================== +GuestErrorT guest_heartbeat_enabled_state_initialize( void ) +{ + _health = true; + _health_check_timer_id = GUEST_TIMER_ID_INVALID; + _challenge_timeout_timer_id = GUEST_TIMER_ID_INVALID; + _action_timeout_timer_id = GUEST_TIMER_ID_INVALID; + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Finalize +// ======================================== +GuestErrorT guest_heartbeat_enabled_state_finalize( void ) +{ + GuestErrorT error; + + if (GUEST_TIMER_ID_INVALID != _challenge_timeout_timer_id) + { + error = guest_timer_deregister(_challenge_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel challenge timeout timer, error=%s.", + guest_error_str(error)); + } + _challenge_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + + if (GUEST_TIMER_ID_INVALID != _health_check_timer_id) + { + error = guest_timer_deregister(_health_check_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel health check timer, error=%s.", + guest_error_str(error)); + } + _health_check_timer_id = GUEST_TIMER_ID_INVALID; + } + + if (GUEST_TIMER_ID_INVALID != _action_timeout_timer_id) + { + error = guest_timer_deregister(_action_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel action timeout timer, error=%s.", + guest_error_str(error)); + } + _action_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + + _health = false; + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.h new file mode 100755 index 00000000..7b71065b --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabled_state.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_ENABLED_STATE_H__ +#define __GUEST_HEARTBEAT_ENABLED_STATE_H__ + +#include "guest_types.h" +#include "guest_heartbeat_fsm.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Heartbeat Enabled State - Enter +// ===================================== +extern GuestErrorT guest_heartbeat_enabled_state_enter( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Exit +// ==================================== +extern GuestErrorT guest_heartbeat_enabled_state_exit( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Transition +// ========================================== +extern GuestErrorT guest_heartbeat_enabled_state_transition( + GuestHeartbeatFsmStateT from_state ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Event Handler +// ============================================= +extern GuestErrorT guest_heartbeat_enabled_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Initialize +// ========================================== +extern GuestErrorT guest_heartbeat_enabled_state_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabled State - Finalize +// ======================================== +extern GuestErrorT guest_heartbeat_enabled_state_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_ENABLED_STATE_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.c new file mode 100755 index 00000000..826f2a36 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.c @@ -0,0 +1,211 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_enabling_state.h" + +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_timer.h" +#include "guest_config.h" + +#include "guest_heartbeat_config.h" +#include "guest_heartbeat_msg.h" +#include "guest_heartbeat_fsm.h" + +static int _prev_invocation_id; +static int _invocation_id; +static GuestTimerIdT _connect_timer_id = GUEST_TIMER_ID_INVALID; + +// **************************************************************************** +// Guest Heartbeat Enabling State - Attempt Connect +// ================================================ +static bool guest_heartbeat_enabling_state_connect( GuestTimerIdT timer_id ) +{ + GuestConfigT* cfg = guest_config_get(); + GuestHeartbeatMsgInitDataT data; + GuestHeartbeatConfigT* config = guest_heartbeat_config_get(); + GuestErrorT error; + + _prev_invocation_id = _invocation_id; + _invocation_id = rand(); + + memset(&data, 0, sizeof(data)); + snprintf(data.name, GUEST_NAME_MAX_CHAR, "%s", cfg->name); + data.heartbeat_interval_ms = config->heartbeat_interval_ms; + data.vote_ms = config->vote_ms; + data.shutdown_notice_ms = config->shutdown_notice_ms; + data.suspend_notice_ms = config->suspend_notice_ms; + data.resume_notice_ms = config->resume_notice_ms; + data.restart_ms = config->restart_ms; + data.corrective_action = config->corrective_action; + + error = guest_heartbeat_msg_send_init(_invocation_id, &data); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send heartbeat init message, error=%s.", + guest_error_str(error)); + return true; + } + + return true; // rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Enter +// ====================================== +GuestErrorT guest_heartbeat_enabling_state_enter( void ) +{ + GuestHeartbeatConfigT* config = guest_heartbeat_config_get(); + GuestErrorT error; + + error = guest_timer_register(config->heartbeat_init_retry_ms, + guest_heartbeat_enabling_state_connect, + &_connect_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to start connect timer, error=%s.", + guest_error_str(error)); + return error; + } + + guest_heartbeat_enabling_state_connect(_connect_timer_id); + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Exit +// ===================================== +GuestErrorT guest_heartbeat_enabling_state_exit( void ) +{ + GuestErrorT error; + + if (GUEST_TIMER_ID_INVALID != _connect_timer_id) + { + error = guest_timer_deregister(_connect_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel connect timer, error=%s.", + guest_error_str(error)); + } + _connect_timer_id = GUEST_TIMER_ID_INVALID; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Transition +// =========================================== +GuestErrorT guest_heartbeat_enabling_state_transition( + GuestHeartbeatFsmStateT from_state ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Event Handler +// ============================================== +GuestErrorT guest_heartbeat_enabling_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ) +{ + int invocation_id; + + switch (event) + { + case GUEST_HEARTBEAT_FSM_RELEASE: + case GUEST_HEARTBEAT_FSM_CHALLENGE: + case GUEST_HEARTBEAT_FSM_CHALLENGE_TIMEOUT: + case GUEST_HEARTBEAT_FSM_ACTION: + case GUEST_HEARTBEAT_FSM_CHANNEL_UP: + // Ignore. + break; + + case GUEST_HEARTBEAT_FSM_CHANNEL_DOWN: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_DISABLED_STATE); + break; + + case GUEST_HEARTBEAT_FSM_INIT_ACK: + invocation_id = *(int*) event_data[0]; + + if ((invocation_id == _invocation_id) || + (invocation_id == _prev_invocation_id)) + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_ENABLED_STATE); + break; + + case GUEST_HEARTBEAT_FSM_SHUTDOWN: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_INITIAL_STATE); + break; + + default: + DPRINTFE("Ignoring event %s.", + guest_heartbeat_fsm_event_str(event)); + } + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Initialize +// =========================================== +GuestErrorT guest_heartbeat_enabling_state_initialize( void ) +{ + _connect_timer_id = GUEST_TIMER_ID_INVALID; + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Finalize +// ========================================= +GuestErrorT guest_heartbeat_enabling_state_finalize( void ) +{ + GuestErrorT error; + + if (GUEST_TIMER_ID_INVALID != _connect_timer_id) + { + error = guest_timer_deregister(_connect_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel connect timer, error=%s.", + guest_error_str(error)); + } + _connect_timer_id = GUEST_TIMER_ID_INVALID; + } + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.h new file mode 100755 index 00000000..df17931f --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_enabling_state.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_ENABLING_STATE_H__ +#define __GUEST_HEARTBEAT_ENABLING_STATE_H__ + +#include "guest_types.h" +#include "guest_heartbeat_fsm.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Heartbeat Enabling State - Enter +// ====================================== +extern GuestErrorT guest_heartbeat_enabling_state_enter( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Exit +// ===================================== +extern GuestErrorT guest_heartbeat_enabling_state_exit( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Transition +// =========================================== +extern GuestErrorT guest_heartbeat_enabling_state_transition( + GuestHeartbeatFsmStateT from_state ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Event Handler +// ============================================== +extern GuestErrorT guest_heartbeat_enabling_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Initialize +// =========================================== +extern GuestErrorT guest_heartbeat_enabling_state_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Enabling State - Finalize +// ========================================= +extern GuestErrorT guest_heartbeat_enabling_state_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_ENABLING_STATE_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.c new file mode 100755 index 00000000..c66d44c6 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.c @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_event_script.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_script.h" + +#include "guest_heartbeat_types.h" + +static GuestScriptIdT _script_id = GUEST_SCRIPT_ID_INVALID; +static GuestHeartbeatEventT _event; +static GuestHeartbeatNotifyT _notify; +static GuestHeartbeatEventScriptCallbackT _callback = NULL; + +// **************************************************************************** +// Guest Heartbeat Event Script - Event Argument +// ============================================= +const char* guest_heartbeat_event_script_event_arg( GuestHeartbeatEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_EVENT_STOP: return "stop"; + case GUEST_HEARTBEAT_EVENT_REBOOT: return "reboot"; + case GUEST_HEARTBEAT_EVENT_SUSPEND: return "suspend"; + case GUEST_HEARTBEAT_EVENT_PAUSE: return "pause"; + case GUEST_HEARTBEAT_EVENT_UNPAUSE: return "unpause"; + case GUEST_HEARTBEAT_EVENT_RESUME: return "resume"; + case GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN: return "resize_begin"; + case GUEST_HEARTBEAT_EVENT_RESIZE_END: return "resize_end"; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN: return "live_migrate_begin"; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END: return "live_migrate_end"; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN: return "cold_migrate_begin"; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END: return "cold_migrate_end"; + default: + return NULL; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Notify Argument +// ============================================== +const char* guest_heartbeat_event_script_notify_arg( GuestHeartbeatNotifyT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_NOTIFY_REVOCABLE: return "revocable"; + case GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE: return "irrevocable"; + default: + return NULL; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Abort +// ==================================== +void guest_heartbeat_event_script_abort( void ) +{ + if (GUEST_SCRIPT_ID_INVALID != _script_id) + { + DPRINTFI("Aborting event script for event %s, notification=%s, " + "script_id=%i.", guest_heartbeat_event_str(_event), + guest_heartbeat_notify_str(_notify), _script_id); + guest_script_abort(_script_id); + _script_id = GUEST_SCRIPT_ID_INVALID; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Callback +// ======================================= +static void guest_heartbeat_event_script_callback( + GuestScriptIdT script_id, int exit_code, char* log_msg ) +{ + GuestHeartbeatVoteResultT vote_result; + + if (script_id == _script_id) + { + switch (exit_code) + { + case 0: + vote_result = GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT; + break; + case 1: + vote_result = GUEST_HEARTBEAT_VOTE_RESULT_REJECT; + break; + default: + vote_result = GUEST_HEARTBEAT_VOTE_RESULT_ERROR; + break; + } + + if (NULL != _callback) + _callback(_event, _notify, vote_result, log_msg); + + _script_id = GUEST_SCRIPT_ID_INVALID; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Invoke +// ===================================== +GuestErrorT guest_heartbeat_event_script_invoke( + char script[], GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, + GuestHeartbeatEventScriptCallbackT callback) +{ + const char* event_arg = guest_heartbeat_event_script_event_arg(event); + const char* notify_arg = guest_heartbeat_event_script_notify_arg(notify); + const char* script_argv[] = {script, notify_arg, event_arg, NULL}; + GuestErrorT error; + + _event = event; + _notify = notify; + _callback = callback; + + if (NULL == event_arg) + { + DPRINTFE("Event argument invalid, event=%s.", + guest_heartbeat_event_str(event)); + return GUEST_FAILED; + } + + if (NULL == notify_arg) + { + DPRINTFE("Notify argument invalid, event=%s.", + guest_heartbeat_notify_str(notify)); + return GUEST_FAILED; + } + + error = guest_script_invoke(script, (char**) script_argv, + guest_heartbeat_event_script_callback, + &_script_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to invoke script %s, error=%s.", script, + guest_error_str(error)); + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Initialize +// ========================================= +GuestErrorT guest_heartbeat_event_script_initialize( void ) +{ + _script_id = GUEST_SCRIPT_ID_INVALID; + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Finalize +// ======================================= +GuestErrorT guest_heartbeat_event_script_finalize( void ) +{ + guest_heartbeat_event_script_abort(); + _script_id = GUEST_SCRIPT_ID_INVALID; + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.h new file mode 100755 index 00000000..6b16931f --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_event_script.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_EVENT_SCRIPT_H__ +#define __GUEST_HEARTBEAT_EVENT_SCRIPT_H__ + +#include "guest_types.h" +#include "guest_heartbeat_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*GuestHeartbeatEventScriptCallbackT) + (GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, + GuestHeartbeatVoteResultT vote_result, char* log_msg); + +// **************************************************************************** +// Guest Heartbeat Event Script - Abort +// ==================================== +extern void guest_heartbeat_event_script_abort( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Invoke +// ===================================== +extern GuestErrorT guest_heartbeat_event_script_invoke( + char script[], GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, + GuestHeartbeatEventScriptCallbackT callback ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Initialize +// ========================================= +extern GuestErrorT guest_heartbeat_event_script_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Event Script - Finalize +// ======================================= +extern GuestErrorT guest_heartbeat_event_script_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_EVENT_SCRIPT_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.c new file mode 100755 index 00000000..21719ce7 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_fsm.h" + +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_heartbeat_initial_state.h" +#include "guest_heartbeat_enabling_state.h" +#include "guest_heartbeat_enabled_state.h" +#include "guest_heartbeat_disabled_state.h" + +typedef GuestErrorT (*GuestHeartbeatFsmStateEnterT) (void); +typedef GuestErrorT (*GuestHeartbeatFsmStateExitT) (void); +typedef GuestErrorT (*GuestHeartbeatFsmStateTransitionT) + (GuestHeartbeatFsmStateT from_state); +typedef GuestErrorT (*GuestHeartbeatFsmStateEventHandlerT) + (GuestHeartbeatFsmEventT event, void* event_data[]); +typedef GuestErrorT (*GuestHeartbeatFsmStateInitializeT) (void); +typedef GuestErrorT (*GuestHeartbeatFsmStateFinalizeT) (void); + +typedef struct { + char name[40]; + GuestHeartbeatFsmStateEnterT enter; + GuestHeartbeatFsmStateExitT exit; + GuestHeartbeatFsmStateTransitionT transition; + GuestHeartbeatFsmStateEventHandlerT event_handler; + GuestHeartbeatFsmStateInitializeT initialize; + GuestHeartbeatFsmStateFinalizeT finalize; +} GuestHeartbeatFsmStateEntryT; + +static GuestHeartbeatFsmStateEntryT _states[GUEST_HEARTBEAT_FSM_MAX_STATES]; +static GuestHeartbeatFsmStateT _current_state = GUEST_HEARTBEAT_FSM_INITIAL_STATE; + +// **************************************************************************** +// Guest Heartbeat FSM - State String +// ================================== +const char* guest_heartbeat_fsm_state_str( GuestHeartbeatFsmStateT state ) +{ + if ((0 > state) || (GUEST_HEARTBEAT_FSM_MAX_STATES <= state)) + { + return "state-???"; + } + + return _states[state].name; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Event String +// ================================== +const char* guest_heartbeat_fsm_event_str( GuestHeartbeatFsmEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_FSM_RELEASE: return "release"; + case GUEST_HEARTBEAT_FSM_INIT_ACK: return "init-ack"; + case GUEST_HEARTBEAT_FSM_CHALLENGE: return "challenge"; + case GUEST_HEARTBEAT_FSM_CHALLENGE_TIMEOUT: return "challenge-timeout"; + case GUEST_HEARTBEAT_FSM_ACTION: return "action"; + case GUEST_HEARTBEAT_FSM_CHANNEL_UP: return "channel-up"; + case GUEST_HEARTBEAT_FSM_CHANNEL_DOWN: return "channel-down"; + case GUEST_HEARTBEAT_FSM_SHUTDOWN: return "shutdown"; + default: + return "event-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Get State +// =============================== +GuestHeartbeatFsmStateT guest_heartbeat_fsm_get_state( void ) +{ + return _current_state; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Enter State +// ================================= +static GuestErrorT guest_heartbeat_fsm_enter_state( GuestHeartbeatFsmStateT state ) +{ + GuestHeartbeatFsmStateEntryT* entry = &(_states[state]); + GuestErrorT error; + + if (NULL != entry->enter) + { + error = entry->enter(); + if (GUEST_OKAY != error) + { + DPRINTFE("Unable to enter state %s, error=%s.", entry->name, + guest_error_str(error)); + return error; + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Exit State +// ================================ +static GuestErrorT guest_heartbeat_fsm_exit_state( GuestHeartbeatFsmStateT state ) +{ + GuestHeartbeatFsmStateEntryT* entry = &(_states[state]); + GuestErrorT error; + + if (NULL != entry->exit) + { + error = entry->exit(); + if (GUEST_OKAY != error) + { + DPRINTFE("Unable to exit state %s, error=%s.", entry->name, + guest_error_str(error)); + return error; + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Transition State +// ====================================== +static GuestErrorT guest_heartbeat_fsm_transition_state( + GuestHeartbeatFsmStateT from_state ) +{ + GuestHeartbeatFsmStateEntryT* entry = &(_states[from_state]); + GuestErrorT error; + + if (NULL != entry->transition) + { + error = entry->transition(from_state); + if (GUEST_OKAY != error) + { + DPRINTFE("Unable to transition from state %s, error=%s.", + entry->name, guest_error_str(error)); + return error; + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Set State +// =============================== +GuestErrorT guest_heartbeat_fsm_set_state( GuestHeartbeatFsmStateT state ) +{ + GuestHeartbeatFsmStateT prev_state = _current_state; + GuestHeartbeatFsmStateEntryT* prev_entry; + GuestHeartbeatFsmStateEntryT* entry; + GuestErrorT error, error2; + + if ((0 > state) || (GUEST_HEARTBEAT_FSM_MAX_STATES <= state)) + { + DPRINTFE("Invalid state %i given.", state); + return GUEST_FAILED; + } + + prev_entry = &(_states[prev_state]); + entry = &(_states[state]); + + error = guest_heartbeat_fsm_exit_state(prev_state); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to exit state %s, error=%s.", prev_entry->name, + guest_error_str(error)); + return( error ); + } + + _current_state = state; + + error = guest_heartbeat_fsm_transition_state(prev_state); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to transition to state %s, error=%s.", + prev_entry->name, guest_error_str(error)); + goto STATE_CHANGE_TRANSITION_ERROR; + } + + error = guest_heartbeat_fsm_enter_state(state); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to enter state %s, error=%s.", entry->name, + guest_error_str(error)); + goto STATE_CHANGE_ENTER_ERROR; + } + + return( GUEST_OKAY ); + +STATE_CHANGE_ENTER_ERROR: + error2 = guest_heartbeat_fsm_transition_state(state); + if (GUEST_OKAY != error2) + { + DPRINTFE("Failed to transition from state %s, error=%s.", + entry->name, guest_error_str(error2)); + abort(); + } + +STATE_CHANGE_TRANSITION_ERROR: + _current_state = prev_state; + + error2 = guest_heartbeat_fsm_enter_state(prev_state); + if (GUEST_OKAY != error2) + { + DPRINTFE("Failed to enter state (%s), error=%s.", prev_entry->name, + guest_error_str(error2)); + abort(); + } + + return error; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Event Handler +// =================================== +GuestErrorT guest_heartbeat_fsm_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ) +{ + GuestHeartbeatFsmStateT prev_state = _current_state; + GuestHeartbeatFsmStateEntryT* entry = &(_states[_current_state]); + GuestErrorT error; + + if (NULL != entry->event_handler) + { + error = entry->event_handler(event, event_data); + if (GUEST_OKAY != error) + { + DPRINTFE("Unable to handle event %s in state %s, error=%s.", + guest_heartbeat_fsm_event_str(event), entry->name, + guest_error_str(error)); + return error; + } + + if (prev_state != _current_state) + { + DPRINTFI("Guest-Client heartbeat state change from %s to %s, " + "event=%s.", guest_heartbeat_fsm_state_str(prev_state), + guest_heartbeat_fsm_state_str(_current_state), + guest_heartbeat_fsm_event_str(event)); + } else { + DPRINTFV("Guest-Client heartbeat no state change from %s, " + "event=%s.", guest_heartbeat_fsm_state_str(prev_state), + guest_heartbeat_fsm_event_str(event)); + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Initialize +// ================================ +GuestErrorT guest_heartbeat_fsm_initialize( void ) +{ + GuestHeartbeatFsmStateEntryT* entry; + + memset(_states, 0, sizeof(_states)); + _current_state = GUEST_HEARTBEAT_FSM_INITIAL_STATE; + + // Initial State + entry = &(_states[GUEST_HEARTBEAT_FSM_INITIAL_STATE]); + snprintf(entry->name, sizeof(entry->name), "initial"); + entry->enter = guest_heartbeat_initial_state_enter; + entry->exit = guest_heartbeat_initial_state_exit; + entry->transition = guest_heartbeat_initial_state_transition; + entry->event_handler = guest_heartbeat_initial_state_event_handler; + entry->initialize = guest_heartbeat_initial_state_initialize; + entry->finalize = guest_heartbeat_initial_state_finalize; + + // Enabling State + entry = &(_states[GUEST_HEARTBEAT_FSM_ENABLING_STATE]); + snprintf(entry->name, sizeof(entry->name), "enabling"); + entry->enter = guest_heartbeat_enabling_state_enter; + entry->exit = guest_heartbeat_enabling_state_exit; + entry->transition = guest_heartbeat_enabling_state_transition; + entry->event_handler = guest_heartbeat_enabling_state_event_handler; + entry->initialize = guest_heartbeat_enabling_state_initialize; + entry->finalize = guest_heartbeat_enabling_state_finalize; + + // Enabled State + entry = &(_states[GUEST_HEARTBEAT_FSM_ENABLED_STATE]); + snprintf(entry->name, sizeof(entry->name), "enabled"); + entry->enter = guest_heartbeat_enabled_state_enter; + entry->exit = guest_heartbeat_enabled_state_exit; + entry->transition = guest_heartbeat_enabled_state_transition; + entry->event_handler = guest_heartbeat_enabled_state_event_handler; + entry->initialize = guest_heartbeat_enabled_state_initialize; + entry->finalize = guest_heartbeat_enabled_state_finalize; + + // Disabled State + entry = &(_states[GUEST_HEARTBEAT_FSM_DISABLED_STATE]); + snprintf(entry->name, sizeof(entry->name), "disabled"); + entry->enter = guest_heartbeat_disabled_state_enter; + entry->exit = guest_heartbeat_disabled_state_exit; + entry->transition = guest_heartbeat_disabled_state_transition; + entry->event_handler = guest_heartbeat_disabled_state_event_handler; + entry->initialize = guest_heartbeat_disabled_state_initialize; + entry->finalize = guest_heartbeat_disabled_state_finalize; + + unsigned int state_i; + for (state_i=0; GUEST_HEARTBEAT_FSM_MAX_STATES > state_i; ++state_i) + { + entry = &(_states[state_i]); + if (NULL != entry->initialize) + entry->initialize(); + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Finalize +// ============================== +GuestErrorT guest_heartbeat_fsm_finalize( void ) +{ + GuestHeartbeatFsmStateEntryT* entry; + + unsigned int state_i; + for (state_i=0; GUEST_HEARTBEAT_FSM_MAX_STATES > state_i; ++state_i) + { + entry = &(_states[state_i]); + if (NULL != entry->finalize) + entry->finalize(); + } + + memset(_states, 0, sizeof(_states)); + _current_state = GUEST_HEARTBEAT_FSM_INITIAL_STATE; + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.h new file mode 100755 index 00000000..6ff54456 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_fsm.h @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_FSM_H__ +#define __GUEST_HEARTBEAT_FSM_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GUEST_HEARTBEAT_FSM_INITIAL_STATE, + GUEST_HEARTBEAT_FSM_ENABLING_STATE, + GUEST_HEARTBEAT_FSM_ENABLED_STATE, + GUEST_HEARTBEAT_FSM_DISABLED_STATE, + GUEST_HEARTBEAT_FSM_MAX_STATES +} GuestHeartbeatFsmStateT; + +typedef enum { + GUEST_HEARTBEAT_FSM_RELEASE, + GUEST_HEARTBEAT_FSM_INIT_ACK, + GUEST_HEARTBEAT_FSM_CHALLENGE, + GUEST_HEARTBEAT_FSM_CHALLENGE_TIMEOUT, + GUEST_HEARTBEAT_FSM_ACTION, + GUEST_HEARTBEAT_FSM_CHANNEL_UP, + GUEST_HEARTBEAT_FSM_CHANNEL_DOWN, + GUEST_HEARTBEAT_FSM_SHUTDOWN, + GUEST_HEARTBEAT_FSM_MAX_EVENTS +} GuestHeartbeatFsmEventT; + +// **************************************************************************** +// Guest Heartbeat FSM - State String +// ================================== +extern const char* guest_heartbeat_fsm_state_str( GuestHeartbeatFsmStateT state ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Event String +// ================================== +extern const char* guest_heartbeat_fsm_event_str( GuestHeartbeatFsmEventT event ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Get State +// =============================== +extern GuestHeartbeatFsmStateT guest_heartbeat_fsm_get_state( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Set State +// =============================== +extern GuestErrorT guest_heartbeat_fsm_set_state( GuestHeartbeatFsmStateT state ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Event Handler +// =================================== +extern GuestErrorT guest_heartbeat_fsm_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Initialize +// ================================ +extern GuestErrorT guest_heartbeat_fsm_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat FSM - Finalize +// ============================== +extern GuestErrorT guest_heartbeat_fsm_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_FSM_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.c new file mode 100755 index 00000000..73c4a38c --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.c @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_health_script.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_script.h" + +static GuestScriptIdT _script_id = GUEST_SCRIPT_ID_INVALID; +static GuestHeartbeatHealthScriptCallbackT _callback = NULL; + +// **************************************************************************** +// Guest Heartbeat Health Script - Abort +// ===================================== +void guest_heartbeat_health_script_abort( void ) +{ + if (GUEST_SCRIPT_ID_INVALID != _script_id) + { + DPRINTFI("Aborting health script, script_id=%i.", _script_id); + guest_script_abort(_script_id); + _script_id = GUEST_SCRIPT_ID_INVALID; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Health Script - Callback +// ======================================== +static void guest_heartbeat_health_script_callback( + GuestScriptIdT script_id, int exit_code, char* log_msg ) +{ + if (script_id == _script_id) + { + if (NULL != _callback) + _callback((1 != exit_code), log_msg); + + _script_id = GUEST_SCRIPT_ID_INVALID; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Health Script - Invoke +// ====================================== +GuestErrorT guest_heartbeat_health_script_invoke( + char script[], GuestHeartbeatHealthScriptCallbackT callback) +{ + const char* script_argv[] = {script, NULL}; + GuestErrorT error; + + _callback = callback; + + error = guest_script_invoke(script, (char**) script_argv, + guest_heartbeat_health_script_callback, + &_script_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to invoke script %s, error=%s.", script, + guest_error_str(error)); + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Health Script - Initialize +// ========================================== +GuestErrorT guest_heartbeat_health_script_initialize( void ) +{ + _script_id = GUEST_SCRIPT_ID_INVALID; + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Health Script - Finalize +// ======================================== +GuestErrorT guest_heartbeat_health_script_finalize( void ) +{ + guest_heartbeat_health_script_abort(); + _script_id = GUEST_SCRIPT_ID_INVALID; + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.h new file mode 100755 index 00000000..6e52119e --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_health_script.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_HEALTH_SCRIPT_H__ +#define __GUEST_HEARTBEAT_HEALTH_SCRIPT_H__ + +#include + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*GuestHeartbeatHealthScriptCallbackT) (bool health, char* log_msg); + +// **************************************************************************** +// Guest Heartbeat Health Script - Abort +// ===================================== +extern void guest_heartbeat_health_script_abort( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Health Script - Invoke +// ====================================== +extern GuestErrorT guest_heartbeat_health_script_invoke( + char script[], GuestHeartbeatHealthScriptCallbackT callback ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Health Script - Initialize +// ========================================== +extern GuestErrorT guest_heartbeat_health_script_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Health Script - Finalize +// ======================================== +extern GuestErrorT guest_heartbeat_health_script_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_HEALTH_SCRIPT_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.c new file mode 100755 index 00000000..9df06f6d --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.c @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_initial_state.h" + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_heartbeat_fsm.h" + +// **************************************************************************** +// Guest Heartbeat Initial State - Enter +// ===================================== +GuestErrorT guest_heartbeat_initial_state_enter( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Exit +// ==================================== +GuestErrorT guest_heartbeat_initial_state_exit( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Transition +// ========================================== +GuestErrorT guest_heartbeat_initial_state_transition( + GuestHeartbeatFsmStateT from_state ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Event Handler +// ============================================= +GuestErrorT guest_heartbeat_initial_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ) +{ + switch (event) + { + case GUEST_HEARTBEAT_FSM_INIT_ACK: + case GUEST_HEARTBEAT_FSM_CHALLENGE: + case GUEST_HEARTBEAT_FSM_CHALLENGE_TIMEOUT: + case GUEST_HEARTBEAT_FSM_ACTION: + case GUEST_HEARTBEAT_FSM_SHUTDOWN: + // Ignore + break; + + case GUEST_HEARTBEAT_FSM_RELEASE: + case GUEST_HEARTBEAT_FSM_CHANNEL_UP: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_ENABLING_STATE); + break; + + case GUEST_HEARTBEAT_FSM_CHANNEL_DOWN: + guest_heartbeat_fsm_set_state(GUEST_HEARTBEAT_FSM_DISABLED_STATE); + break; + + default: + DPRINTFV("Ignoring event %s.", + guest_heartbeat_fsm_event_str(event)); + } + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Initialize +// ========================================== +GuestErrorT guest_heartbeat_initial_state_initialize( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Finalize +// ======================================== +GuestErrorT guest_heartbeat_initial_state_finalize( void ) +{ + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.h new file mode 100755 index 00000000..db05cf83 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_initial_state.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_INITIAL_STATE_H__ +#define __GUEST_HEARTBEAT_INITIAL_STATE_H__ + +#include "guest_types.h" +#include "guest_heartbeat_fsm.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Heartbeat Initial State - Enter +// ===================================== +extern GuestErrorT guest_heartbeat_initial_state_enter( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Exit +// ==================================== +extern GuestErrorT guest_heartbeat_initial_state_exit( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Transition +// ========================================== +extern GuestErrorT guest_heartbeat_initial_state_transition( + GuestHeartbeatFsmStateT from_state ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Event Handler +// ============================================= +extern GuestErrorT guest_heartbeat_initial_state_event_handler( + GuestHeartbeatFsmEventT event, void* event_data[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Initialize +// ========================================== +extern GuestErrorT guest_heartbeat_initial_state_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Initial State - Finalize +// ======================================== +extern GuestErrorT guest_heartbeat_initial_state_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_INITIAL_STATE_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.c new file mode 100755 index 00000000..00ee9dc3 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.c @@ -0,0 +1,1400 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_mgmt_api.h" + +#include +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_selobj.h" +#include "guest_unix.h" +#include "guest_stream.h" +#include "guest_timer.h" + +#include "guest_heartbeat_types.h" +#include "guest_heartbeat_api_msg_defs.h" + +#define GUEST_HEARTBEAT_MGMT_API_CHALLENGE_DEPTH 4 + +typedef struct { + char name[GUEST_HEARTBEAT_API_MSG_MAX_APPLICATION_NAME_SIZE]; + int heartbeat_interval_ms; + int vote_ms; + int shutdown_notice_ms; + int suspend_notice_ms; + int resume_notice_ms; + GuestHeartbeatActionT corrective_action; +} GuestHeartbeatMgmtApiAppConfigT; + +typedef struct { + bool healthy; + GuestHeartbeatActionT corrective_action; + char log_msg[GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE]; +} GuestHeartbeatMgmtApiAppHealthT; + +typedef struct { + bool running; + int invocation_id; + GuestHeartbeatEventT event; + GuestHeartbeatNotifyT notify; + GuestHeartbeatVoteResultT vote_result; + char log_msg[GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE]; +} GuestHeartbeatMgmtApiAppActionT; + +typedef struct { + bool inuse; + bool registered; + bool final; + int sock; + GuestStreamT stream; + int challenge_depth; + int last_challenge[GUEST_HEARTBEAT_MGMT_API_CHALLENGE_DEPTH]; + bool send_challenge_response; + GuestTimerIdT heartbeat_timer; + GuestTimerIdT heartbeat_timeout_timer; + GuestTimerIdT action_timer; + GuestHeartbeatMgmtApiAppConfigT application_config; + GuestHeartbeatMgmtApiAppHealthT application_health; + GuestHeartbeatMgmtApiAppActionT application_action; +} GuestHeartbeatMgmtApiConnectionT; + +static int _sock = -1; +static uint32_t _msg_sequence; +static GuestHeartbeatMgmtApiActionResponseT _callback; +static GuestHeartbeatMgmtApiConnectionT _connections[GUEST_APPLICATIONS_MAX]; + +// **************************************************************************** +// Guest Heartbeat Management API - Handle Action Completed +// ======================================================== +static void guest_heartbeat_mgmt_api_handle_action_completed( void ) +{ + bool update; + bool invoke_callback; + GuestHeartbeatMgmtApiAppConfigT* app_config; + GuestHeartbeatMgmtApiAppActionT* app_action; + GuestHeartbeatMgmtApiConnectionT* connection; + GuestHeartbeatEventT event; + GuestHeartbeatNotifyT notify; + GuestHeartbeatVoteResultT vote_result; + char* log_msg; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse && connection->registered) + { + if (connection->application_action.running) + { + DPRINTFD("Still waiting for application %s to respond.", + connection->application_config.name); + return; + } + } + } + + if (NULL == _callback) + return; + + vote_result = GUEST_HEARTBEAT_VOTE_RESULT_UNKNOWN; + invoke_callback = false; + + // All action responses received or timed out. + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse && connection->registered) + { + app_config = &(connection->application_config); + app_action = &(connection->application_action); + + DPRINTFI("Application %s vote %s for event %s, notification=%s.", + app_config->name, + guest_heartbeat_vote_result_str(app_action->vote_result), + guest_heartbeat_event_str(app_action->event), + guest_heartbeat_notify_str(app_action->notify)); + + update = false; + + switch (app_action->vote_result) + { + case GUEST_HEARTBEAT_VOTE_RESULT_REJECT: + update = true; + break; + + case GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT: + case GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE: + if (GUEST_HEARTBEAT_VOTE_RESULT_REJECT != vote_result) + update = true; + break; + + default: + update = false; + break; + } + + if (update) + { + event = app_action->event; + notify = app_action->notify; + vote_result = app_action->vote_result; + log_msg = &(app_action->log_msg[0]); + invoke_callback = true; + } + } + } + + if (invoke_callback) + _callback(event, notify, vote_result, log_msg); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Close Connection +// ================================================= +static void guest_heartbeat_mgmt_api_close_connection( + GuestHeartbeatMgmtApiConnectionT* connection ) +{ + GuestErrorT error; + + if (0 <= connection->sock) + { + error = guest_selobj_deregister(connection->sock); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister select on unix socket, error=%s.", + guest_error_str(error)); + } + + close(connection->sock); + } + + if (GUEST_TIMER_ID_INVALID != connection->heartbeat_timer) + { + error = guest_timer_deregister(connection->heartbeat_timer); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timer, error=%s.", + guest_error_str(error)); + } + } + + if (GUEST_TIMER_ID_INVALID != connection->heartbeat_timeout_timer) + { + error = guest_timer_deregister(connection->heartbeat_timeout_timer); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timer, error=%s.", + guest_error_str(error)); + } + } + + if (GUEST_TIMER_ID_INVALID != connection->action_timer) + { + error = guest_timer_deregister(connection->action_timer); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel action timer, error=%s.", + guest_error_str(error)); + } + } + + memset(connection, 0, sizeof(GuestHeartbeatMgmtApiConnectionT)); + connection->sock = -1; + connection->heartbeat_timer = GUEST_TIMER_ID_INVALID; + connection->heartbeat_timeout_timer = GUEST_TIMER_ID_INVALID; + connection->action_timer = GUEST_TIMER_ID_INVALID; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Action (Network to Host) +// ========================================================= +static GuestHeartbeatActionT guest_heartbeat_mgmt_api_action_ntoh( + GuestHeartbeatApiMsgActionT action ) +{ + switch (action) + { + case GUEST_HEARTBEAT_API_MSG_ACTION_NONE: + return GUEST_HEARTBEAT_ACTION_NONE; + case GUEST_HEARTBEAT_API_MSG_ACTION_REBOOT: + return GUEST_HEARTBEAT_ACTION_REBOOT; + case GUEST_HEARTBEAT_API_MSG_ACTION_STOP: + return GUEST_HEARTBEAT_ACTION_STOP; + case GUEST_HEARTBEAT_API_MSG_ACTION_LOG: + return GUEST_HEARTBEAT_ACTION_LOG; + default: + DPRINTFE("Unknown action %i.", action); + return GUEST_HEARTBEAT_ACTION_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Event (Host to Network) +// ======================================================== +static GuestHeartbeatApiMsgEventT guest_heartbeat_mgmt_api_event_hton( + GuestHeartbeatEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_EVENT_STOP: + return GUEST_HEARTBEAT_API_MSG_EVENT_STOP; + case GUEST_HEARTBEAT_EVENT_REBOOT: + return GUEST_HEARTBEAT_API_MSG_EVENT_REBOOT; + case GUEST_HEARTBEAT_EVENT_SUSPEND: + return GUEST_HEARTBEAT_API_MSG_EVENT_SUSPEND; + case GUEST_HEARTBEAT_EVENT_PAUSE: + return GUEST_HEARTBEAT_API_MSG_EVENT_PAUSE; + case GUEST_HEARTBEAT_EVENT_UNPAUSE: + return GUEST_HEARTBEAT_API_MSG_EVENT_UNPAUSE; + case GUEST_HEARTBEAT_EVENT_RESUME: + return GUEST_HEARTBEAT_API_MSG_EVENT_RESUME; + case GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN: + return GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_BEGIN; + case GUEST_HEARTBEAT_EVENT_RESIZE_END: + return GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_END; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END: + return GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_END; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END: + return GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_END; + default: + DPRINTFE("Unknown event %i.", event); + return GUEST_HEARTBEAT_API_MSG_EVENT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Event (Network to Host) +// ======================================================== +static GuestHeartbeatEventT guest_heartbeat_mgmt_api_event_ntoh( + GuestHeartbeatApiMsgEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_API_MSG_EVENT_STOP: + return GUEST_HEARTBEAT_EVENT_STOP; + case GUEST_HEARTBEAT_API_MSG_EVENT_REBOOT: + return GUEST_HEARTBEAT_EVENT_REBOOT; + case GUEST_HEARTBEAT_API_MSG_EVENT_SUSPEND: + return GUEST_HEARTBEAT_EVENT_SUSPEND; + case GUEST_HEARTBEAT_API_MSG_EVENT_PAUSE: + return GUEST_HEARTBEAT_EVENT_PAUSE; + case GUEST_HEARTBEAT_API_MSG_EVENT_UNPAUSE: + return GUEST_HEARTBEAT_EVENT_UNPAUSE; + case GUEST_HEARTBEAT_API_MSG_EVENT_RESUME: + return GUEST_HEARTBEAT_EVENT_RESUME; + case GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_BEGIN: + return GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN; + case GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_END: + return GUEST_HEARTBEAT_EVENT_RESIZE_END; + case GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_END: + return GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END; + case GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_END: + return GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END; + default: + DPRINTFE("Unknown event %i.", event); + return GUEST_HEARTBEAT_EVENT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Notify (Host to Network) +// ========================================================= +static GuestHeartbeatApiMsgNotifyT guest_heartbeat_mgmt_api_notify_hton( + GuestHeartbeatNotifyT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_NOTIFY_REVOCABLE: + return GUEST_HEARTBEAT_API_MSG_NOTIFY_REVOCABLE; + case GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE: + return GUEST_HEARTBEAT_API_MSG_NOTIFY_IRREVOCABLE; + default: + DPRINTFE("Unknown notify type %i.", notify); + return GUEST_HEARTBEAT_API_MSG_NOTIFY_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Notify (Network to Host) +// ========================================================= +static GuestHeartbeatNotifyT guest_heartbeat_mgmt_api_notify_ntoh( + GuestHeartbeatApiMsgNotifyT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_API_MSG_NOTIFY_REVOCABLE: + return GUEST_HEARTBEAT_NOTIFY_REVOCABLE; + case GUEST_HEARTBEAT_API_MSG_NOTIFY_IRREVOCABLE: + return GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE; + default: + DPRINTFE("Unknown notify type %i.", notify); + return GUEST_HEARTBEAT_NOTIFY_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Vote Result (Network to Host) +// ============================================================== +static GuestHeartbeatVoteResultT guest_heartbeat_mgmt_api_vote_result_ntoh( + GuestHeartbeatApiMsgVoteResultT vote_result ) +{ + switch (vote_result) + { + case GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_ACCEPT: + return GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT; + case GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_REJECT: + return GUEST_HEARTBEAT_VOTE_RESULT_REJECT; + case GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_COMPLETE: + return GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE; + default: + DPRINTFE("Unknown vote result %i.", vote_result); + return GUEST_HEARTBEAT_VOTE_RESULT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Send Init Ack +// ============================================== +static GuestErrorT guest_heartbeat_mgmt_api_send_init_ack( int s, bool accept ) +{ + GuestHeartbeatApiMsgT msg; + GuestHeartbeatApiMsgHeaderT *hdr = &(msg.header); + GuestHeartbeatApiMsgInitAckT *bdy = &(msg.body.init_ack); + GuestErrorT error; + + memset(&msg, 0, sizeof(msg)); + + memcpy(&(hdr->magic), GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE); + hdr->version = GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT; + hdr->revision = GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT; + hdr->msg_type = GUEST_HEARTBEAT_API_MSG_INIT_ACK; + hdr->sequence = ++_msg_sequence; + hdr->size = sizeof(msg); + + bdy->accepted = accept; + + error = guest_unix_send(s, &msg, sizeof(msg)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat register ack message, " + "error=%s.", guest_error_str(error)); + return error; + } + + DPRINTFD("Sent register ack."); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Send Heartbeat +// =============================================== +static GuestErrorT guest_heartbeat_mgmt_api_send_heartbeat( int s, int challenge ) +{ + GuestHeartbeatApiMsgT msg; + GuestHeartbeatApiMsgHeaderT *hdr = &(msg.header); + GuestHeartbeatApiMsgChallengeT *bdy = &(msg.body.challenge); + GuestErrorT error; + + memset(&msg, 0, sizeof(msg)); + + memcpy(&(hdr->magic), GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE); + hdr->version = GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT; + hdr->revision = GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT; + hdr->msg_type = GUEST_HEARTBEAT_API_MSG_CHALLENGE; + hdr->sequence = ++_msg_sequence; + hdr->size = sizeof(msg); + + bdy->heartbeat_challenge = challenge; + + error = guest_unix_send(s, &msg, sizeof(msg)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat message, error=%s.", + guest_error_str(error)); + return error; + } + + DPRINTFD("Sent heartbeat message."); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Send Action Notify +// =================================================== +static GuestErrorT guest_heartbeat_mgmt_api_send_action_notify( + int s, int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify ) +{ + GuestHeartbeatApiMsgT msg; + GuestHeartbeatApiMsgHeaderT *hdr = &(msg.header); + GuestHeartbeatApiMsgActionNotifyT *bdy = &(msg.body.action_notify); + GuestErrorT error; + + memset(&msg, 0, sizeof(msg)); + + memcpy(&(hdr->magic), GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE); + hdr->version = GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT; + hdr->revision = GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT; + hdr->msg_type = GUEST_HEARTBEAT_API_MSG_ACTION_NOTIFY; + hdr->sequence = ++_msg_sequence; + hdr->size = sizeof(msg); + + bdy->invocation_id = invocation_id; + bdy->event_type = guest_heartbeat_mgmt_api_event_hton(event); + bdy->notification_type = guest_heartbeat_mgmt_api_notify_hton(notify); + + error = guest_unix_send(s, &msg, sizeof(msg)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat action notify message, " + "error=%s.", guest_error_str(error)); + return error; + } + + DPRINTFD("Sent action notify."); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Heartbeat Interval +// =================================================== +static bool guest_heartbeat_mgmt_api_heartbeat_interval( GuestTimerIdT timer_id ) +{ + int challenge; + GuestHeartbeatMgmtApiConnectionT* connection; + GuestErrorT error; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse) + if (timer_id == connection->heartbeat_timer) + break; + } + + if (GUEST_APPLICATIONS_MAX <= connection_i) + { + DPRINTFE("Uknown timer %i.", timer_id); + return false; // don't rearm + } + + if (!(connection->send_challenge_response)) + { + DPRINTFD("Waiting for challenge response for previous iteration."); + return true; // rearm + } + + challenge = rand(); + ++connection->challenge_depth; + if (GUEST_HEARTBEAT_MGMT_API_CHALLENGE_DEPTH <= connection->challenge_depth) + connection->challenge_depth = 0; + + connection->last_challenge[connection->challenge_depth] = challenge; + + error = guest_heartbeat_mgmt_api_send_heartbeat( connection->sock, + challenge ); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send heartbeat, error=%s.", guest_error_str(error)); + return true; // rearm + } + + connection->send_challenge_response = false; + return true; // rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Heartbeat Timeout +// ================================================== +static bool guest_heartbeat_mgmt_api_heartbeat_timeout( GuestTimerIdT timer_id ) +{ + bool prev_health; + GuestHeartbeatMgmtApiAppConfigT* app_config; + GuestHeartbeatMgmtApiAppHealthT* app_health; + GuestHeartbeatMgmtApiConnectionT* connection; + int max_heartbeat_delay; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse) + if (timer_id == connection->heartbeat_timeout_timer) + break; + } + + if (GUEST_APPLICATIONS_MAX <= connection_i) + { + DPRINTFE("Uknown timer %i.", timer_id); + return false; // don't rearm + } + + app_config = &(connection->application_config); + app_health = &(connection->application_health); + + max_heartbeat_delay = app_config->heartbeat_interval_ms*2; + + if (!guest_timer_scheduling_on_time_within(max_heartbeat_delay)) + { + DPRINTFE("Failed to receive a heartbeat in %i ms, but we are not " + "scheduling on time.", max_heartbeat_delay); + return true; // rearm + } + + prev_health = app_health->healthy; + app_health->healthy = false; + app_health->corrective_action = app_config->corrective_action; + snprintf(app_health->log_msg, GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE, + "Application %s heartbeat timeout %i ms.", app_config->name, + app_config->heartbeat_interval_ms*2); + + if (prev_health) + { + DPRINTFI("Application %s heartbeat timeout %i ms, " + "corrective_action=%s, log_msg=%s.", app_config->name, + max_heartbeat_delay, + guest_heartbeat_action_str(app_health->corrective_action), + app_health->log_msg); + } + return true; // rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Receive Init +// ============================================= +static void guest_heartbeat_mgmt_api_recv_init( + GuestHeartbeatMgmtApiConnectionT* connection ) +{ + bool accepted = true; + GuestHeartbeatMgmtApiAppConfigT* app_config; + GuestHeartbeatMgmtApiAppHealthT* app_health; + GuestHeartbeatMgmtApiAppActionT* app_action; + char* ptr = connection->stream.bytes + sizeof(GuestHeartbeatApiMsgHeaderT); + GuestErrorT error; + + DPRINTFD("Heartbeat Init received..."); + + app_config = &(connection->application_config); + app_health = &(connection->application_health); + app_action = &(connection->application_action); + + snprintf(app_config->name, + GUEST_HEARTBEAT_API_MSG_MAX_APPLICATION_NAME_SIZE, "%s", ptr); + ptr += GUEST_HEARTBEAT_API_MSG_MAX_APPLICATION_NAME_SIZE; + app_config->heartbeat_interval_ms = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + app_config->vote_ms = (*(uint32_t*) ptr) * 1000; + ptr += sizeof(uint32_t); + app_config->shutdown_notice_ms = (*(uint32_t*) ptr) * 1000; + ptr += sizeof(uint32_t); + app_config->suspend_notice_ms = (*(uint32_t*) ptr) * 1000; + ptr += sizeof(uint32_t); + app_config->resume_notice_ms = (*(uint32_t*) ptr) * 1000; + ptr += sizeof(uint32_t); + app_config->corrective_action + = guest_heartbeat_mgmt_api_action_ntoh(*(uint32_t*) ptr); + ptr += sizeof(uint32_t); + + if (GUEST_HEARTBEAT_MIN_INTERVAL_MS > app_config->heartbeat_interval_ms) + { + DPRINTFE("Not accepting application %s registration, unsupported " + "heartbeat interval, less than %s ms.", app_config->name, + GUEST_HEARTBEAT_MIN_INTERVAL_MS); + accepted = false; + } + + error = guest_heartbeat_mgmt_api_send_init_ack(connection->sock, accepted); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send register ack message, error=%s.", + guest_error_str(error)); + return; + } + + if (!accepted) + return; + + error = guest_timer_register(app_config->heartbeat_interval_ms, + guest_heartbeat_mgmt_api_heartbeat_interval, + &(connection->heartbeat_timer)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register heartbeat timer, error=%s.", + guest_error_str(error)); + return; + } + + error = guest_timer_register(app_config->heartbeat_interval_ms*2, + guest_heartbeat_mgmt_api_heartbeat_timeout, + &(connection->heartbeat_timeout_timer)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register heartbeat timeout timer, error=%s.", + guest_error_str(error)); + return; + } + + app_health->healthy = true; + app_health->corrective_action = GUEST_HEARTBEAT_ACTION_NONE; + app_health->log_msg[0] = '\0'; + + app_action->event = GUEST_HEARTBEAT_EVENT_UNKNOWN; + app_action->notify = GUEST_HEARTBEAT_NOTIFY_UNKNOWN; + app_action->vote_result = GUEST_HEARTBEAT_VOTE_RESULT_UNKNOWN; + app_action->log_msg[0] = '\0'; + + connection->send_challenge_response = true; + connection->registered = true; + connection->final = false; + + DPRINTFI("Connection accepted from %s.", app_config->name); + DPRINTFI(" socket: %i", connection->sock); + DPRINTFI(" heartbeat_interval_ms: %i", app_config->heartbeat_interval_ms); + DPRINTFI(" vote_ms: %i", app_config->vote_ms); + DPRINTFI(" shutdown_notice_ms: %i", app_config->shutdown_notice_ms); + DPRINTFI(" resume_notice_ms: %i", app_config->resume_notice_ms); + DPRINTFI(" corrective_action: %s", + guest_heartbeat_action_str(app_config->corrective_action)); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Receive Final +// ============================================== +static void guest_heartbeat_mgmt_api_recv_final( + GuestHeartbeatMgmtApiConnectionT* connection ) +{ + char* log_msg; + char* ptr = connection->stream.bytes + sizeof(GuestHeartbeatApiMsgHeaderT); + + log_msg = ptr; + ptr += GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE; + + DPRINTFD("Heartbeat Final Response received..."); + + DPRINTFI("Application %s has deregistered, msg=%s.", + connection->application_config.name, log_msg); + + connection->registered = false; + connection->final = true; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Receive Challenge Response +// =========================================================== +static void guest_heartbeat_mgmt_api_recv_challenge_response( + GuestHeartbeatMgmtApiConnectionT* connection ) +{ + uint32_t heartbeat_response; + uint32_t health; + GuestHeartbeatActionT corrective_action; + char* log_msg; + GuestHeartbeatMgmtApiAppConfigT* app_config; + GuestHeartbeatMgmtApiAppHealthT* app_health; + char* ptr = connection->stream.bytes + sizeof(GuestHeartbeatApiMsgHeaderT); + + heartbeat_response = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + health = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + corrective_action + = guest_heartbeat_mgmt_api_action_ntoh(*(uint32_t*) ptr); + ptr += sizeof(uint32_t); + log_msg = ptr; + ptr += GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE; + + unsigned int challenge_i; + for (challenge_i=0; GUEST_HEARTBEAT_MGMT_API_CHALLENGE_DEPTH > challenge_i; + ++challenge_i) + { + if (connection->last_challenge[challenge_i] == heartbeat_response) + break; + } + + if (GUEST_HEARTBEAT_MGMT_API_CHALLENGE_DEPTH == challenge_i) + { + DPRINTFE("Mismatch between last transmitted challenges and received " + "challenge."); + return; + } + + DPRINTFD("Heartbeat Challenge Response received..."); + connection->send_challenge_response = true; + + app_config = &(connection->application_config); + app_health = &(connection->application_health); + + if (health != app_health->healthy) + { + DPRINTFI("Application %s health state change, prev_health=%i, " + "health=%i, corrective_action=%s, log_msg=%s.", + app_config->name, app_health->healthy, health, + guest_heartbeat_action_str(corrective_action), + log_msg); + } + + app_health->healthy = health; + app_health->corrective_action = corrective_action; + snprintf(app_health->log_msg, GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE, "%s", + log_msg); + + guest_timer_reset(connection->heartbeat_timeout_timer); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Receive Action Response +// ======================================================== +static void guest_heartbeat_mgmt_api_recv_action_response( + GuestHeartbeatMgmtApiConnectionT* connection ) +{ + int invocation_id; + GuestHeartbeatEventT event; + GuestHeartbeatNotifyT notify; + GuestHeartbeatVoteResultT vote_result; + GuestHeartbeatMgmtApiAppActionT* app_action; + char* log_msg; + char* ptr = connection->stream.bytes + sizeof(GuestHeartbeatApiMsgHeaderT); + GuestErrorT error; + + app_action = &(connection->application_action); + + invocation_id = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + event = guest_heartbeat_mgmt_api_event_ntoh(*(uint32_t*) ptr); + ptr += sizeof(uint32_t); + notify = guest_heartbeat_mgmt_api_notify_ntoh(*(uint32_t*) ptr); + ptr += sizeof(uint32_t); + vote_result = guest_heartbeat_mgmt_api_vote_result_ntoh(*(uint32_t*) ptr); + ptr += sizeof(uint32_t); + log_msg = ptr; + ptr += GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE; + + if (!(app_action->running)) + { + DPRINTFD("No action inprogress."); + return; + } + + if (invocation_id != app_action->invocation_id) + { + DPRINTFE("Unexpected action invocation %i received for %s.", + invocation_id, guest_heartbeat_event_str(event)); + return; + } + + DPRINTFD("Heartbeat Action Response received..."); + + app_action->running = false; + app_action->event = event; + app_action->notify = notify; + app_action->vote_result = vote_result; + snprintf(app_action->log_msg, GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE, "%s", + log_msg); + + if (GUEST_TIMER_ID_INVALID != connection->action_timer) + { + error = guest_timer_deregister(connection->action_timer); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel action timer, error=%s.", + guest_error_str(error)); + } + + connection->action_timer = GUEST_TIMER_ID_INVALID; + } + + guest_heartbeat_mgmt_api_handle_action_completed(); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Dispatch +// ========================================= +static void guest_heartbeat_mgmt_api_dispatch( int selobj ) +{ + static bool have_start = false; + static bool have_header = false; + static GuestHeartbeatApiMsgHeaderT hdr; + + bool more; + int bytes_received; + GuestHeartbeatMgmtApiConnectionT* connection; + GuestErrorT error; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse) + if (selobj == connection->sock) + break; + } + + if (GUEST_APPLICATIONS_MAX <= connection_i) + { + DPRINTFE("Uknown selection object %i.", selobj); + close(selobj); + return; + } + + error = guest_unix_receive(connection->sock, connection->stream.end_ptr, + connection->stream.avail, &bytes_received); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to receive message, error=%s.", + guest_error_str(error)); + return; + } + + if (0 == bytes_received) + { + DPRINTFI("Connection closed on %i.", connection->sock); + guest_heartbeat_mgmt_api_close_connection(connection); + return; + } + + DPRINTFD("Bytes received is %i.", bytes_received); + + connection->stream.end_ptr += bytes_received; + connection->stream.avail -= bytes_received; + connection->stream.size += bytes_received; + + do + { + more = false; + + if (!have_start) + { + memset(&hdr, 0 ,sizeof(GuestHeartbeatApiMsgHeaderT)); + have_start = guest_stream_get_next(&(connection->stream)); + } + + if (have_start && !have_header) + { + if (sizeof(GuestHeartbeatApiMsgHeaderT) <= connection->stream.size) + { + char* ptr = connection->stream.bytes + + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE; + + hdr.version = *(uint8_t*) ptr; + ptr += sizeof(uint8_t); + hdr.revision = *(uint8_t*) ptr; + ptr += sizeof(uint8_t); + hdr.msg_type = *(uint16_t*) ptr; + ptr += sizeof(uint16_t); + hdr.sequence = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + hdr.size = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + + DPRINTFD("Message header: version=%i, revision=%i, " + "msg_type=%i, sequence=%u, size=%u", hdr.version, + hdr.revision, hdr.msg_type, hdr.sequence, hdr.size); + + if (GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT == hdr.version) + { + have_header = true; + } else { + have_start = false; + have_header = false; + guest_stream_advance(GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE, + &connection->stream); + more = true; + } + } + } + + if (have_start && have_header) + { + if (sizeof(GuestHeartbeatApiMsgT) <= connection->stream.size) + { + switch(hdr.msg_type) + { + case GUEST_HEARTBEAT_API_MSG_INIT: + guest_heartbeat_mgmt_api_recv_init(connection); + break; + + case GUEST_HEARTBEAT_API_MSG_FINAL: + guest_heartbeat_mgmt_api_recv_final(connection); + break; + + case GUEST_HEARTBEAT_API_MSG_CHALLENGE_RESPONSE: + guest_heartbeat_mgmt_api_recv_challenge_response(connection); + break; + + case GUEST_HEARTBEAT_API_MSG_ACTION_RESPONSE: + guest_heartbeat_mgmt_api_recv_action_response(connection); + break; + + default: + DPRINTFV("Unknown message type %i.", + (int) hdr.msg_type); + break; + } + + have_start = false; + have_header = false; + guest_stream_advance(sizeof(GuestHeartbeatApiMsgT), + &(connection->stream)); + more = true; + } + } + } while (more); + + if (0 >= connection->stream.avail) + guest_stream_reset(&(connection->stream)); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Connect Handler +// ================================================ +static void guest_heartbeat_mgmt_api_connect_handler( int selobj, char* address ) +{ + int stream_size; + GuestSelObjCallbacksT callbacks; + GuestHeartbeatMgmtApiConnectionT* connection; + GuestErrorT error; + + DPRINTFD("Connect on socket %i.", selobj); + + // Find unused connection. + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (!connection->inuse) + { + memset(connection, 0, sizeof(GuestHeartbeatMgmtApiConnectionT)); + connection->inuse = true; + connection->registered = false; + connection->sock = selobj; + connection->heartbeat_timer = GUEST_TIMER_ID_INVALID; + connection->heartbeat_timeout_timer = GUEST_TIMER_ID_INVALID; + connection->action_timer = GUEST_TIMER_ID_INVALID; + break; + } + } + + if (GUEST_APPLICATIONS_MAX <= connection_i) + { + // Find unregistered connection and replace. + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if ((connection->inuse) && (!connection->registered)) + { + guest_heartbeat_mgmt_api_close_connection(connection); + connection->inuse = true; + connection->registered = false; + connection->sock = selobj; + break; + } + } + } + + if (GUEST_APPLICATIONS_MAX <= connection_i) + { + DPRINTFE("Failed to allocate connection."); + close(selobj); + return; + } + + stream_size = sizeof(GuestHeartbeatApiMsgT)*4; + if (8192 > stream_size) + stream_size = 8192; + + error = guest_stream_setup(GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE, + stream_size, &(connection->stream)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to setup stream, error=%s.", guest_error_str(error)); + close(connection->sock); + memset(connection, 0, sizeof(GuestHeartbeatMgmtApiConnectionT)); + connection->sock = -1; + connection->heartbeat_timer = GUEST_TIMER_ID_INVALID; + connection->heartbeat_timeout_timer = GUEST_TIMER_ID_INVALID; + connection->action_timer = GUEST_TIMER_ID_INVALID; + + return; + } + + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.read_callback = guest_heartbeat_mgmt_api_dispatch; + + error = guest_selobj_register(connection->sock, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register select on unix socket, error=%s.", + guest_error_str(error)); + close(connection->sock); + guest_stream_release(&(connection->stream)); + memset(connection, 0, sizeof(GuestHeartbeatMgmtApiConnectionT)); + connection->sock = -1; + connection->heartbeat_timer = GUEST_TIMER_ID_INVALID; + connection->heartbeat_timeout_timer = GUEST_TIMER_ID_INVALID; + connection->action_timer = GUEST_TIMER_ID_INVALID; + return; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Get Health +// =========================================== +GuestErrorT guest_heartbeat_mgmt_api_get_health( + bool* health, GuestHeartbeatActionT* corrective_action, char log_msg[], + int log_msg_size ) +{ + GuestHeartbeatMgmtApiAppHealthT* app_health; + GuestHeartbeatMgmtApiConnectionT* connection; + GuestHeartbeatActionT update; + + *health = true; + *corrective_action = GUEST_HEARTBEAT_ACTION_NONE; + log_msg[0] = '\0'; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if ((connection->inuse) && (connection->registered)) + { + app_health = &(connection->application_health); + if (!(app_health->healthy)) + { + update = guest_heartbeat_merge_action( + *corrective_action, app_health->corrective_action); + + if (update == app_health->corrective_action) + { + *health = false; + *corrective_action = update; + snprintf(log_msg, log_msg_size, "%s", app_health->log_msg); + } + } + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Action Timeout +// =============================================== +static bool guest_heartbeat_mgmt_api_action_timeout( GuestTimerIdT timer_id ) +{ + GuestHeartbeatMgmtApiAppActionT* app_action; + GuestHeartbeatMgmtApiConnectionT* connection; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse) + if (timer_id == connection->action_timer) + break; + } + + if (GUEST_APPLICATIONS_MAX <= connection_i) + { + DPRINTFE("Uknown timer %i.", timer_id); + return false; // don't rearm + } + + app_action = &(connection->application_action); + + if (app_action->running) + { + app_action->running = false; + app_action->vote_result = GUEST_HEARTBEAT_VOTE_RESULT_TIMEOUT; + } + + guest_heartbeat_mgmt_api_handle_action_completed(); + connection->action_timer = GUEST_TIMER_ID_INVALID; + return false; // don't rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Action Abort +// ============================================= +void guest_heartbeat_mgmt_api_action_abort( void ) +{ + GuestHeartbeatMgmtApiAppConfigT* app_config; + GuestHeartbeatMgmtApiAppActionT* app_action; + GuestHeartbeatMgmtApiConnectionT* connection; + GuestErrorT error; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse && connection->registered) + { + app_config = &(connection->application_config); + app_action = &(connection->application_action); + + if (app_action->running) + { + DPRINTFI("Aborting action %s for application %s, " + "notification=%s.", app_config->name, + guest_heartbeat_event_str(app_action->event), + guest_heartbeat_notify_str(app_action->notify)); + } + + app_action->running = false; + + if (GUEST_TIMER_ID_INVALID != connection->action_timer) + { + error = guest_timer_deregister(connection->action_timer); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel action timer, error=%s.", + guest_error_str(error)); + } + connection->action_timer = GUEST_TIMER_ID_INVALID; + } + } + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Action Notify +// ============================================== +GuestErrorT guest_heartbeat_mgmt_api_action_notify( + GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, bool* wait, + GuestHeartbeatMgmtApiActionResponseT callback ) +{ + int action_timeout_ms; + GuestHeartbeatMgmtApiAppConfigT* app_config; + GuestHeartbeatMgmtApiAppActionT* app_action; + GuestHeartbeatMgmtApiConnectionT* connection; + GuestErrorT error; + + *wait = false; + _callback = NULL; + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + if (connection->inuse && connection->registered) + { + app_config = &(connection->application_config); + app_action = &(connection->application_action); + + app_action->running = true; + app_action->invocation_id = rand(); + app_action->event = event; + app_action->notify = notify; + app_action->vote_result = GUEST_HEARTBEAT_VOTE_RESULT_UNKNOWN; + + error = guest_heartbeat_mgmt_api_send_action_notify( + connection->sock, app_action->invocation_id, event, + notify ); + if (GUEST_OKAY == error) + { + DPRINTFI("Sent action to appplication %s for event %s, " + "notification=%s.", app_config->name, + guest_heartbeat_event_str(event), + guest_heartbeat_notify_str(notify)); + } else { + DPRINTFE("Failed to send action to application %s for " + "event %s, notification=%s.", app_config->name, + guest_heartbeat_event_str(event), + guest_heartbeat_notify_str(notify)); + } + + if (GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE == notify) + { + switch (event) + { + case GUEST_HEARTBEAT_EVENT_STOP: + case GUEST_HEARTBEAT_EVENT_REBOOT: + action_timeout_ms = app_config->shutdown_notice_ms; + break; + + case GUEST_HEARTBEAT_EVENT_PAUSE: + case GUEST_HEARTBEAT_EVENT_SUSPEND: + case GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN: + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN: + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN: + action_timeout_ms = app_config->suspend_notice_ms; + break; + + case GUEST_HEARTBEAT_EVENT_UNPAUSE: + case GUEST_HEARTBEAT_EVENT_RESUME: + case GUEST_HEARTBEAT_EVENT_RESIZE_END: + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END: + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END: + action_timeout_ms = app_config->resume_notice_ms; + break; + + default: + action_timeout_ms = app_config->shutdown_notice_ms; + break; + } + } else { + action_timeout_ms = app_config->vote_ms; + } + + error = guest_timer_register(action_timeout_ms, + guest_heartbeat_mgmt_api_action_timeout, + &(connection->action_timer)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register action timeout timer, error=%s.", + guest_error_str(error)); + abort(); + } + + *wait = true; + _callback = callback; + } + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Initialize +// =========================================== +GuestErrorT guest_heartbeat_mgmt_api_initialize( void ) +{ + GuestHeartbeatMgmtApiConnectionT* connection; + GuestErrorT error; + + memset(&_connections, 0, sizeof(_connections)); + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + connection->sock = -1; + connection->heartbeat_timer = GUEST_TIMER_ID_INVALID; + connection->heartbeat_timeout_timer = GUEST_TIMER_ID_INVALID; + connection->action_timer = GUEST_TIMER_ID_INVALID; + } + + error = guest_unix_open(&_sock); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to open unix socket, error=%s.", + guest_error_str(error)); + return error; + } + + error = guest_unix_listen(_sock, GUEST_HEARTBEAT_API_MSG_ADDRESS, + guest_heartbeat_mgmt_api_connect_handler); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to listen on unix socket, error=%s.", + guest_error_str(error)); + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Finalize +// ========================================= +GuestErrorT guest_heartbeat_mgmt_api_finalize( void ) +{ + GuestHeartbeatMgmtApiConnectionT* connection; + GuestErrorT error; + + if (0 <= _sock) + { + error = guest_selobj_deregister(_sock); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister select on unix socket, error=%s.", + guest_error_str(error)); + } + + error = guest_unix_close(_sock); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to close unix socket, error=%s.", + guest_error_str(error)); + } + _sock = -1; + } + + unsigned int connection_i; + for (connection_i=0; GUEST_APPLICATIONS_MAX > connection_i; ++connection_i) + { + connection = &(_connections[connection_i]); + guest_heartbeat_mgmt_api_close_connection(connection); + } + + memset(&_connections, 0, sizeof(_connections)); + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.h new file mode 100755 index 00000000..d5663322 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_mgmt_api.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HERATBEAT_MGMT_API_H__ +#define __GUEST_HEARTBEAT_MGMT_API_H__ + +#include + +#include "guest_types.h" +#include "guest_heartbeat_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*GuestHeartbeatMgmtApiActionResponseT) + (GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, + GuestHeartbeatVoteResultT vote_result, char log_msg[]); + +// **************************************************************************** +// Guest Heartbeat Management API - Get Health +// =========================================== +extern GuestErrorT guest_heartbeat_mgmt_api_get_health( + bool* health, GuestHeartbeatActionT* corrective_action, char log_msg[], + int log_msg_size ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Action Abort +// ============================================= +extern void guest_heartbeat_mgmt_api_action_abort( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Action Notify +// ============================================== +extern GuestErrorT guest_heartbeat_mgmt_api_action_notify( + GuestHeartbeatEventT event, GuestHeartbeatNotifyT notify, bool* wait, + GuestHeartbeatMgmtApiActionResponseT callback ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Initialize +// =========================================== +extern GuestErrorT guest_heartbeat_mgmt_api_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Management API - Finalize +// ========================================= +extern GuestErrorT guest_heartbeat_mgmt_api_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_MGMT_API_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.c new file mode 100755 index 00000000..11df2feb --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.c @@ -0,0 +1,1209 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_msg_defs.h" +#include "guest_heartbeat_msg.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_selobj.h" +#include "guest_channel.h" +#include "guest_signal.h" +#include "guest_utils.h" + +#include "guest_heartbeat_types.h" + +#define GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS 1 +#define GUEST_HEARTBEAT_CHALLENGE_DEPTH 6 + +static int _signal_fd = -1; +static int _challenge_depth; +static uint32_t _last_tx_challenge[GUEST_HEARTBEAT_CHALLENGE_DEPTH]; +static uint32_t _last_rx_challenge; +static uint32_t _msg_sequence; +static GuestChannelIdT _channel_id = GUEST_CHANNEL_ID_INVALID; +static GuestHeartbeatMsgCallbacksT _callbacks; +// Tokener serves as reassembly buffer for host connection. +static struct json_tokener* tok; + +// **************************************************************************** +// Guest Heartbeat Message - Action (Host to Network) +// ================================================== +static const char *guest_heartbeat_msg_action_hton( + GuestHeartbeatActionT action ) +{ + switch (action) + { + case GUEST_HEARTBEAT_ACTION_NONE: + return GUEST_HEARTBEAT_MSG_ACTION_NONE; + case GUEST_HEARTBEAT_ACTION_REBOOT: + return GUEST_HEARTBEAT_MSG_ACTION_REBOOT; + case GUEST_HEARTBEAT_ACTION_STOP: + return GUEST_HEARTBEAT_MSG_ACTION_STOP; + case GUEST_HEARTBEAT_ACTION_LOG: + return GUEST_HEARTBEAT_MSG_ACTION_LOG; + default: + DPRINTFE("Unknown action %i.", action); + return GUEST_HEARTBEAT_MSG_ACTION_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Action (Network to Host) +// ================================================== +static GuestHeartbeatActionT guest_heartbeat_msg_action_ntoh( + const char *action ) +{ + if (!strcmp(action, GUEST_HEARTBEAT_MSG_ACTION_REBOOT)) + { + return GUEST_HEARTBEAT_ACTION_REBOOT; + } + else if (!strcmp(action, GUEST_HEARTBEAT_MSG_ACTION_STOP)) { + return GUEST_HEARTBEAT_ACTION_STOP; + } + else if (!strcmp(action, GUEST_HEARTBEAT_MSG_ACTION_LOG)) { + return GUEST_HEARTBEAT_ACTION_LOG; + } + else { + DPRINTFE("Unknown action %i.", action); + return GUEST_HEARTBEAT_ACTION_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Event (Host to Network) +// ================================================== +static const char *guest_heartbeat_msg_event_hton( + GuestHeartbeatEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_EVENT_STOP: + return GUEST_HEARTBEAT_MSG_EVENT_STOP; + case GUEST_HEARTBEAT_EVENT_REBOOT: + return GUEST_HEARTBEAT_MSG_EVENT_REBOOT; + case GUEST_HEARTBEAT_EVENT_SUSPEND: + return GUEST_HEARTBEAT_MSG_EVENT_SUSPEND; + case GUEST_HEARTBEAT_EVENT_PAUSE: + return GUEST_HEARTBEAT_MSG_EVENT_PAUSE; + case GUEST_HEARTBEAT_EVENT_UNPAUSE: + return GUEST_HEARTBEAT_MSG_EVENT_UNPAUSE; + case GUEST_HEARTBEAT_EVENT_RESUME: + return GUEST_HEARTBEAT_MSG_EVENT_RESUME; + case GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN: + return GUEST_HEARTBEAT_MSG_EVENT_RESIZE_BEGIN; + case GUEST_HEARTBEAT_EVENT_RESIZE_END: + return GUEST_HEARTBEAT_MSG_EVENT_RESIZE_END; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_MSG_EVENT_LIVE_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END: + return GUEST_HEARTBEAT_MSG_EVENT_LIVE_MIGRATE_END; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_MSG_EVENT_COLD_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END: + return GUEST_HEARTBEAT_MSG_EVENT_COLD_MIGRATE_END; + default: + DPRINTFE("Unknown event %i.", event); + return GUEST_HEARTBEAT_MSG_EVENT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Event (Network to Host) +// ================================================= +static GuestHeartbeatEventT guest_heartbeat_msg_event_ntoh( + const char *event ) +{ + if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_STOP)) + { + return GUEST_HEARTBEAT_EVENT_STOP; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_REBOOT)) { + return GUEST_HEARTBEAT_EVENT_REBOOT; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_SUSPEND)) { + return GUEST_HEARTBEAT_EVENT_SUSPEND; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_PAUSE)) { + return GUEST_HEARTBEAT_EVENT_PAUSE; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_UNPAUSE)) { + return GUEST_HEARTBEAT_EVENT_UNPAUSE; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_RESUME)) { + return GUEST_HEARTBEAT_EVENT_RESUME; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_RESIZE_BEGIN)) { + return GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_RESIZE_END)) { + return GUEST_HEARTBEAT_EVENT_RESIZE_END; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_LIVE_MIGRATE_BEGIN)) { + return GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_LIVE_MIGRATE_END)) { + return GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_COLD_MIGRATE_BEGIN)) { + return GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN; + } + else if (!strcmp(event, GUEST_HEARTBEAT_MSG_EVENT_COLD_MIGRATE_END)) { + return GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END; + } + else { + DPRINTFE("Unknown event %i.", event); + return GUEST_HEARTBEAT_EVENT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Notify (Host to Network) +// ================================================== +static const char *guest_heartbeat_msg_notify_hton( + GuestHeartbeatNotifyT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_NOTIFY_REVOCABLE: + return GUEST_HEARTBEAT_MSG_NOTIFY_REVOCABLE; + case GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE: + return GUEST_HEARTBEAT_MSG_NOTIFY_IRREVOCABLE; + default: + DPRINTFE("Unknown notify %i.", notify); + return GUEST_HEARTBEAT_MSG_NOTIFY_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Notify (Network to Host) +// ================================================== +static GuestHeartbeatNotifyT guest_heartbeat_msg_notify_ntoh( + const char *notify ) +{ + if (!strcmp(notify, GUEST_HEARTBEAT_MSG_NOTIFY_REVOCABLE)) + { + return GUEST_HEARTBEAT_NOTIFY_REVOCABLE; + } + else if (!strcmp(notify, GUEST_HEARTBEAT_MSG_NOTIFY_IRREVOCABLE)) { + return GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE; + } + else { + DPRINTFE("Unknown notify %i.", notify); + return GUEST_HEARTBEAT_NOTIFY_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Vote Result (Host to Network) +// ======================================================= +static const char * guest_heartbeat_msg_vote_result_hton( + GuestHeartbeatVoteResultT vote_result ) +{ + switch (vote_result) + { + case GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT: + return GUEST_HEARTBEAT_MSG_VOTE_RESULT_ACCEPT; + case GUEST_HEARTBEAT_VOTE_RESULT_REJECT: + return GUEST_HEARTBEAT_MSG_VOTE_RESULT_REJECT; + case GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE: + return GUEST_HEARTBEAT_MSG_VOTE_RESULT_COMPLETE; + case GUEST_HEARTBEAT_VOTE_RESULT_TIMEOUT: + return GUEST_HEARTBEAT_MSG_VOTE_RESULT_TIMEOUT; + case GUEST_HEARTBEAT_VOTE_RESULT_ERROR: + return GUEST_HEARTBEAT_MSG_VOTE_RESULT_ERROR; + default: + DPRINTFE("Unknown vote result %i.", vote_result); + return GUEST_HEARTBEAT_MSG_VOTE_RESULT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Vote Result (Network to Host) +// ======================================================= +static GuestHeartbeatVoteResultT guest_heartbeat_msg_vote_result_ntoh( + const char *vote_result ) +{ + if (!strcmp(vote_result, GUEST_HEARTBEAT_MSG_VOTE_RESULT_ACCEPT)) + { + return GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT; + } + else if (!strcmp(vote_result, GUEST_HEARTBEAT_MSG_VOTE_RESULT_REJECT)) { + return GUEST_HEARTBEAT_VOTE_RESULT_REJECT; + } + else if (!strcmp(vote_result, GUEST_HEARTBEAT_MSG_VOTE_RESULT_COMPLETE)) { + return GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE; + } + else if (!strcmp(vote_result, GUEST_HEARTBEAT_MSG_VOTE_RESULT_TIMEOUT)) { + return GUEST_HEARTBEAT_VOTE_RESULT_TIMEOUT; + } + else if (!strcmp(vote_result, GUEST_HEARTBEAT_MSG_VOTE_RESULT_ERROR)) { + return GUEST_HEARTBEAT_VOTE_RESULT_ERROR; + } + else { + DPRINTFE("Unknown vote result %i.", vote_result); + return GUEST_HEARTBEAT_VOTE_RESULT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Init +// =================================== +GuestErrorT guest_heartbeat_msg_send_init( + int invocation_id, GuestHeartbeatMsgInitDataT* data ) +{ + GuestErrorT error; + + char msg[GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE]; + snprintf(msg, sizeof(msg), "\n{\"%s\":%d,\"%s\":%d,\"%s\":\"%s\",\"%s\":%d," + "\"%s\":%d,\"%s\":\"%s\"," + "\"%s\":%d,\"%s\":%d,\"%s\":%d,\"%s\":%d,\"%s\":%d,\"%s\":%d," + "\"%s\":\"%s\"}\n", + GUEST_HEARTBEAT_MSG_VERSION, GUEST_HEARTBEAT_MSG_VERSION_CURRENT, + GUEST_HEARTBEAT_MSG_REVISION, GUEST_HEARTBEAT_MSG_REVISION_CURRENT, + GUEST_HEARTBEAT_MSG_MSG_TYPE, GUEST_HEARTBEAT_MSG_INIT, + GUEST_HEARTBEAT_MSG_SEQUENCE, ++_msg_sequence, + + GUEST_HEARTBEAT_MSG_INVOCATION_ID, invocation_id, + GUEST_HEARTBEAT_MSG_NAME, data->name, + + GUEST_HEARTBEAT_MSG_HEARTBEAT_INTERVAL_MS, + data->heartbeat_interval_ms, + GUEST_HEARTBEAT_MSG_VOTE_SECS, + data->vote_ms/1000 + GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS, + GUEST_HEARTBEAT_MSG_SHUTDOWN_NOTICE_SECS, + data->shutdown_notice_ms/1000 + GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS, + GUEST_HEARTBEAT_MSG_SUSPEND_NOTICE_SECS, + data->suspend_notice_ms/1000 + GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS, + GUEST_HEARTBEAT_MSG_RESUME_NOTICE_SECS, + data->resume_notice_ms/1000 + GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS, + GUEST_HEARTBEAT_MSG_RESTART_SECS, + data->restart_ms/1000 + GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS, + + GUEST_HEARTBEAT_MSG_CORRECTIVE_ACTION, + guest_heartbeat_msg_action_hton(data->corrective_action)); + + error = guest_channel_send(_channel_id, msg, strlen(msg)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat init message, error=%s.", + guest_error_str(error)); + return error; + } + + DPRINTFI("Sent heartbeat init message, invocation_id=%i.", invocation_id); + DPRINTFD("Sent heartbeat init message: %s", msg); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Init Ack +// ======================================= +GuestErrorT guest_heartbeat_msg_send_init_ack( int invocation_id ) +{ + GuestErrorT error; + + char msg[GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE]; + snprintf(msg, sizeof(msg), "\n{\"%s\":%d,\"%s\":%d,\"%s\":\"%s\",\"%s\":%d," + "\"%s\":%d}\n", + GUEST_HEARTBEAT_MSG_VERSION, GUEST_HEARTBEAT_MSG_VERSION_CURRENT, + GUEST_HEARTBEAT_MSG_REVISION, GUEST_HEARTBEAT_MSG_REVISION_CURRENT, + GUEST_HEARTBEAT_MSG_MSG_TYPE, GUEST_HEARTBEAT_MSG_INIT_ACK, + GUEST_HEARTBEAT_MSG_SEQUENCE, ++_msg_sequence, + + GUEST_HEARTBEAT_MSG_INVOCATION_ID, invocation_id); + + error = guest_channel_send(_channel_id, msg, strlen(msg)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat init ack message, error=%s.", + guest_error_str(error)); + return error; + } + + DPRINTFI("Sent heartbeat init ack message: %s", msg); + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Exit +// =================================== +GuestErrorT guest_heartbeat_msg_send_exit( char log_msg[] ) +{ + GuestErrorT error; + + char log_msg_buf[GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE]; + snprintf(log_msg_buf, GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE, "%s", log_msg); + + char msg[GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE]; + snprintf(msg, sizeof(msg), "\n{\"%s\":%d,\"%s\":%d,\"%s\":\"%s\",\"%s\":%d," + "\"%s\":\"%s\"}\n", + GUEST_HEARTBEAT_MSG_VERSION, GUEST_HEARTBEAT_MSG_VERSION_CURRENT, + GUEST_HEARTBEAT_MSG_REVISION, GUEST_HEARTBEAT_MSG_REVISION_CURRENT, + GUEST_HEARTBEAT_MSG_MSG_TYPE, GUEST_HEARTBEAT_MSG_EXIT, + GUEST_HEARTBEAT_MSG_SEQUENCE, ++_msg_sequence, + + GUEST_HEARTBEAT_MSG_LOG_MSG, log_msg_buf); + + error = guest_channel_send(_channel_id, msg, strlen(msg)); + + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat exit message, error=%s.", + guest_error_str(error)); + return error; + } + + DPRINTFI("Sent heartbeat exit message: %s", msg); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Challenge +// ======================================== +GuestErrorT guest_heartbeat_msg_send_challenge( void ) +{ + GuestErrorT error; + + ++_challenge_depth; + if (GUEST_HEARTBEAT_CHALLENGE_DEPTH <= _challenge_depth) + _challenge_depth = 0; + + _last_tx_challenge[_challenge_depth] = rand(); + + char msg[GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE]; + snprintf(msg, sizeof(msg), "\n{\"%s\":%d,\"%s\":%d,\"%s\":\"%s\",\"%s\":%d," + "\"%s\":%d}\n", + GUEST_HEARTBEAT_MSG_VERSION, GUEST_HEARTBEAT_MSG_VERSION_CURRENT, + GUEST_HEARTBEAT_MSG_REVISION, GUEST_HEARTBEAT_MSG_REVISION_CURRENT, + GUEST_HEARTBEAT_MSG_MSG_TYPE, GUEST_HEARTBEAT_MSG_CHALLENGE, + GUEST_HEARTBEAT_MSG_SEQUENCE, ++_msg_sequence, + + GUEST_HEARTBEAT_MSG_HEARTBEAT_CHALLENGE, _last_tx_challenge[_challenge_depth]); + + error = guest_channel_send(_channel_id, msg, strlen(msg)); + + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat challenge message, " + "error=%s.", guest_error_str(error)); + return error; + } + + DPRINTFD("Sent heartbeat challenge message, challenge=%i.", + _last_tx_challenge[_challenge_depth]); + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Challenge Response +// ================================================= +GuestErrorT guest_heartbeat_msg_send_challenge_response( + bool health, GuestHeartbeatActionT corrective_action, char log_msg[] ) +{ + GuestErrorT error; + + char log_msg_buf[GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE]; + snprintf(log_msg_buf, GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE, "%s", log_msg); + + char msg[GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE]; + snprintf(msg, sizeof(msg), "\n{\"%s\":%d,\"%s\":%d,\"%s\":\"%s\",\"%s\":%d," + "\"%s\":%d,\"%s\":\"%s\",\"%s\":\"%s\",\"%s\":\"%s\"}\n", + GUEST_HEARTBEAT_MSG_VERSION, GUEST_HEARTBEAT_MSG_VERSION_CURRENT, + GUEST_HEARTBEAT_MSG_REVISION, GUEST_HEARTBEAT_MSG_REVISION_CURRENT, + GUEST_HEARTBEAT_MSG_MSG_TYPE, GUEST_HEARTBEAT_MSG_CHALLENGE_RESPONSE, + GUEST_HEARTBEAT_MSG_SEQUENCE, ++_msg_sequence, + + GUEST_HEARTBEAT_MSG_HEARTBEAT_RESPONSE, _last_rx_challenge, + GUEST_HEARTBEAT_MSG_HEARTBEAT_HEALTH, + health ? GUEST_HEARTBEAT_MSG_HEALTHY : GUEST_HEARTBEAT_MSG_UNHEALTHY, + GUEST_HEARTBEAT_MSG_CORRECTIVE_ACTION, + guest_heartbeat_msg_action_hton(corrective_action), + GUEST_HEARTBEAT_MSG_LOG_MSG, log_msg_buf); + + error = guest_channel_send(_channel_id, msg, strlen(msg)); + + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat challenge response message, " + "error=%s.", guest_error_str(error)); + return error; + } + // print info logs with message content only if not healthy + if (!health) + { + DPRINTFI("Unhealthy, sent heartbeat challenge response message: %s", msg); + } + else { + DPRINTFD("Sent heartbeat challenge response message, challenge=%i.", + _last_rx_challenge); + } + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Action Notify +// ============================================ +GuestErrorT guest_heartbeat_msg_send_action_notify( + int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, int timeout_ms ) +{ + GuestErrorT error; + + char msg[GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE]; + snprintf(msg, sizeof(msg), "\n{\"%s\":%d,\"%s\":%d,\"%s\":\"%s\",\"%s\":%d," + "\"%s\":%d,\"%s\":\"%s\",\"%s\":\"%s\",\"%s\":%d}\n", + GUEST_HEARTBEAT_MSG_VERSION, GUEST_HEARTBEAT_MSG_VERSION_CURRENT, + GUEST_HEARTBEAT_MSG_REVISION, GUEST_HEARTBEAT_MSG_REVISION_CURRENT, + GUEST_HEARTBEAT_MSG_MSG_TYPE, GUEST_HEARTBEAT_MSG_ACTION_NOTIFY, + GUEST_HEARTBEAT_MSG_SEQUENCE, ++_msg_sequence, + + GUEST_HEARTBEAT_MSG_INVOCATION_ID, invocation_id, + GUEST_HEARTBEAT_MSG_EVENT_TYPE, guest_heartbeat_msg_event_hton(event), + GUEST_HEARTBEAT_MSG_NOTIFICATION_TYPE, guest_heartbeat_msg_notify_hton(notify), + GUEST_HEARTBEAT_MSG_TIMEOUT_MS, timeout_ms); + + error = guest_channel_send(_channel_id, msg, strlen(msg)); + + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat action notify message, " + "error=%s.", guest_error_str(error)); + return error; + } + + DPRINTFI("Sent heartbeat action notify message, invocation_id=%i.", + invocation_id); + DPRINTFD("Sent heartbeat action notify message: %s", msg); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Action Response +// ============================================== +GuestErrorT guest_heartbeat_msg_send_action_response( + int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, GuestHeartbeatVoteResultT vote_result, + char log_msg[] ) +{ + GuestErrorT error; + + char log_msg_buf[GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE]; + snprintf(log_msg_buf, GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE, "%s", log_msg); + + + char msg[GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE]; + snprintf(msg, sizeof(msg), "\n{\"%s\":%d,\"%s\":%d,\"%s\":\"%s\",\"%s\":%d," + "\"%s\":%d,\"%s\":\"%s\",\"%s\":\"%s\",\"%s\":\"%s\",\"%s\":\"%s\"}\n", + GUEST_HEARTBEAT_MSG_VERSION, GUEST_HEARTBEAT_MSG_VERSION_CURRENT, + GUEST_HEARTBEAT_MSG_REVISION, GUEST_HEARTBEAT_MSG_REVISION_CURRENT, + GUEST_HEARTBEAT_MSG_MSG_TYPE, GUEST_HEARTBEAT_MSG_ACTION_RESPONSE, + GUEST_HEARTBEAT_MSG_SEQUENCE, ++_msg_sequence, + + GUEST_HEARTBEAT_MSG_INVOCATION_ID, invocation_id, + GUEST_HEARTBEAT_MSG_EVENT_TYPE, guest_heartbeat_msg_event_hton(event), + GUEST_HEARTBEAT_MSG_NOTIFICATION_TYPE, guest_heartbeat_msg_notify_hton(notify), + GUEST_HEARTBEAT_MSG_VOTE_RESULT, guest_heartbeat_msg_vote_result_hton(vote_result), + GUEST_HEARTBEAT_MSG_LOG_MSG, log_msg_buf); + + error = guest_channel_send(_channel_id, msg, strlen(msg)); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat action response message, " + "error=%s.", guest_error_str(error)); + return error; + } + + DPRINTFI("Sent heartbeat action response message: %s", msg); + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Init +// ====================================== +static void guest_heartbeat_msg_recv_init( struct json_object *jobj_msg ) +{ + char name[GUEST_HEARTBEAT_MSG_MAX_NAME_SIZE]; + uint32_t invocation_id; + char corrective_action[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + GuestHeartbeatMsgInitDataT data; + uint32_t vote_secs, shutdown_notice_secs, suspend_notice_secs; + uint32_t resume_notice_secs, restart_secs; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_INVOCATION_ID, &invocation_id)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_NAME, &name)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_HEARTBEAT_INTERVAL_MS, &data.heartbeat_interval_ms)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_VOTE_SECS, &vote_secs)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_SHUTDOWN_NOTICE_SECS, &shutdown_notice_secs)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_SUSPEND_NOTICE_SECS, &suspend_notice_secs)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_RESUME_NOTICE_SECS, &resume_notice_secs)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_RESTART_SECS, &restart_secs)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_CORRECTIVE_ACTION, &corrective_action)) + return; + + data.vote_ms = vote_secs*1000; + data.shutdown_notice_ms = shutdown_notice_secs*1000; + data.suspend_notice_ms = suspend_notice_secs*1000; + data.resume_notice_ms= resume_notice_secs*1000; + data.restart_ms = restart_secs*1000; + + snprintf(data.name, GUEST_NAME_MAX_CHAR, "%s", name); + data.corrective_action = guest_heartbeat_msg_action_ntoh(corrective_action); + + DPRINTFI("Heartbeat Init received, invocation_id=%i", invocation_id); + + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + DPRINTFD("Heartbeat Init message received: %s", msg); + + if (NULL != _callbacks.recv_init) + _callbacks.recv_init(invocation_id, &data); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Init Ack +// ========================================== +static void guest_heartbeat_msg_recv_init_ack( struct json_object *jobj_msg ) +{ + uint32_t invocation_id; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_INVOCATION_ID, &invocation_id)) + return; + + DPRINTFI("Heartbeat Init Ack received, invocation_id=%i.", + invocation_id); + + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + DPRINTFD("Heartbeat Init Ack message received: %s", msg); + + if (NULL != _callbacks.recv_init_ack) + _callbacks.recv_init_ack(invocation_id); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Exit +// ====================================== +static void guest_heartbeat_msg_recv_exit( struct json_object *jobj_msg ) +{ + char log_msg[GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE]; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_LOG_MSG, &log_msg)) + return; + + DPRINTFI("Heartbeat Exit received, msg=%s.", log_msg); + + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + DPRINTFD("Heartbeat Exit message received: %s", msg); + + if (NULL != _callbacks.recv_exit) + _callbacks.recv_exit(log_msg); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Challenge +// =========================================== +static void guest_heartbeat_msg_recv_challenge( struct json_object *jobj_msg ) +{ + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_HEARTBEAT_CHALLENGE, &_last_rx_challenge)) + return; + + DPRINTFD("Heartbeat Challenge received, challenge=%i.", _last_rx_challenge); + + if (NULL != _callbacks.recv_challenge) + _callbacks.recv_challenge(); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Challenge Ack +// =============================================== +static void guest_heartbeat_msg_recv_challenge_ack( struct json_object *jobj_msg ) +{ + char health[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + char corrective_action_str[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + GuestHeartbeatActionT corrective_action; + char log_msg[GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE]; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_HEARTBEAT_RESPONSE, &_last_rx_challenge)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_HEARTBEAT_HEALTH, &health)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_CORRECTIVE_ACTION, &corrective_action_str)) + return; + + corrective_action = guest_heartbeat_msg_action_ntoh(corrective_action_str); + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_LOG_MSG, &log_msg)) + return; + + DPRINTFD("Heartbeat Challenge Response received, challenge=%i.", + _last_rx_challenge); + + unsigned int challenge_i; + for (challenge_i=0; GUEST_HEARTBEAT_CHALLENGE_DEPTH > challenge_i; + ++challenge_i) + { + if (_last_tx_challenge[challenge_i] == _last_rx_challenge) + break; + } + + if (GUEST_HEARTBEAT_CHALLENGE_DEPTH == challenge_i) + { + DPRINTFE("Mismatch between last transmitted challenges and last " + "received challenge."); + return; + } + if (NULL != _callbacks.recv_challenge_ack) + _callbacks.recv_challenge_ack(!strcmp(health, GUEST_HEARTBEAT_MSG_HEALTHY), + corrective_action, log_msg); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Action Notify +// =============================================== +static void guest_heartbeat_msg_recv_action_notify( struct json_object *jobj_msg ) +{ + uint32_t invocation_id; + char event_type[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + char notification_type[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + uint32_t timeout_ms; + GuestHeartbeatEventT event; + GuestHeartbeatNotifyT notify; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_INVOCATION_ID, &invocation_id)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_EVENT_TYPE, &event_type)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_NOTIFICATION_TYPE, ¬ification_type)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_TIMEOUT_MS, &timeout_ms)) + return; + + if (timeout_ms > (GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS*1000)) + timeout_ms -= (GUEST_HEARTBEAT_PROPAGATION_DELAY_IN_SECS * 1000); + + event = guest_heartbeat_msg_event_ntoh(event_type); + notify = guest_heartbeat_msg_notify_ntoh(notification_type); + + DPRINTFI("Heartbeat Action Notify received, invocation_id=%i.", + invocation_id); + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + DPRINTFD("Heartbeat Action Notify message received: %s", msg); + + if (NULL != _callbacks.recv_action_notify) + _callbacks.recv_action_notify(invocation_id, event, notify, timeout_ms); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Action Response +// ================================================= +static void guest_heartbeat_msg_recv_action_response( struct json_object *jobj_msg ) +{ + uint32_t invocation_id; + char event_type[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + char notification_type[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + char vote_result[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + GuestHeartbeatEventT event; + GuestHeartbeatNotifyT notify; + GuestHeartbeatVoteResultT result; + char log_msg[GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE]; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_INVOCATION_ID, &invocation_id)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_EVENT_TYPE, &event_type)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_NOTIFICATION_TYPE, ¬ification_type)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_VOTE_RESULT, &vote_result)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_LOG_MSG, &log_msg)) + return; + + event = guest_heartbeat_msg_event_ntoh(event_type); + notify = guest_heartbeat_msg_notify_ntoh(notification_type); + result = guest_heartbeat_msg_vote_result_ntoh(vote_result); + + DPRINTFI("Heartbeat Action Response received, invocation_id=%i.", + invocation_id); + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + DPRINTFD("Heartbeat Action Response message received: %s", msg); + + if (NULL != _callbacks.recv_action_response) + _callbacks.recv_action_response(invocation_id, event, notify, + result, log_msg); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive Nack +// ================================================= +static void guest_heartbeat_msg_recv_nack( struct json_object *jobj_msg ) +{ + uint32_t invocation_id; + char log_msg[GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE]; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_INVOCATION_ID, &invocation_id)) + return; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_LOG_MSG, &log_msg)) + return; + + DPRINTFE("Heartbeat Nack message received, invocation_id=%i, error msg: %s", + invocation_id, log_msg); + + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + DPRINTFD("Heartbeat Nack message received: %s", msg); + +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Dispatch +// ================================== +void guest_heartbeat_msg_dispatch(json_object *jobj_msg) +{ + int version; + char msg_type[GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE]; + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_VERSION, &version)) + return; + + if (GUEST_HEARTBEAT_MSG_VERSION_CURRENT != version) + { + DPRINTFI("message received version %d, expected %d, dropping\n", + version, GUEST_HEARTBEAT_MSG_VERSION_CURRENT); + return; + } + + if (guest_utils_json_get_value(jobj_msg, GUEST_HEARTBEAT_MSG_MSG_TYPE, &msg_type)) + return; + + if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_INIT)) { + guest_heartbeat_msg_recv_init(jobj_msg); + } else if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_INIT_ACK)) { + guest_heartbeat_msg_recv_init_ack(jobj_msg); + } else if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_EXIT)) { + guest_heartbeat_msg_recv_exit(jobj_msg); + } else if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_CHALLENGE)) { + guest_heartbeat_msg_recv_challenge(jobj_msg); + } else if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_CHALLENGE_RESPONSE)) { + guest_heartbeat_msg_recv_challenge_ack(jobj_msg); + } else if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_ACTION_NOTIFY)) { + guest_heartbeat_msg_recv_action_notify(jobj_msg); + } else if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_ACTION_RESPONSE)) { + guest_heartbeat_msg_recv_action_response(jobj_msg); + } else if (!strcmp(msg_type, GUEST_HEARTBEAT_MSG_NACK)) { + guest_heartbeat_msg_recv_nack(jobj_msg); + } else { + DPRINTFV("Unknown message type %s.", msg_type); + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Parser +// ================================== +/** + Multiple messages from the host can be bundled together into a single "read" + so we need to check message boundaries and handle breaking the message apart. + Assume a valid message does not contain newline '\n', and newline is added to + the beginning and end of each message by the sender to delimit the boundaries. +*/ +void guest_heartbeat_msg_parser(void *buf, ssize_t len, json_tokener* tok, int newline_found) +{ + json_object *jobj = json_tokener_parse_ex(tok, buf, len); + enum json_tokener_error jerr = json_tokener_get_error(tok); + + if (jerr == json_tokener_success) { + guest_heartbeat_msg_dispatch(jobj); + json_object_put(jobj); + return; + } + + else if (jerr == json_tokener_continue) { + // partial JSON is parsed , continue to read from socket. + if (newline_found) { + // if newline was found in the middle of the buffer, the message + // should be completed at this point. Throw out incomplete message + // by resetting tokener. + json_tokener_reset(tok); + } + } + else + { + // parsing error + json_tokener_reset(tok); + } +} +// **************************************************************************** + + +// **************************************************************************** +// Guest Heartbeat Message - Handler +// ================================== +void guest_heartbeat_msg_handler(void *buf, ssize_t len,json_tokener* tok) +{ + void *newline; + ssize_t len_head; + +next: + if (len == 0) + return; + + // search for newline as delimiter + newline = memchr(buf, '\n', len); + + if (newline) { + // split buffer to head and tail at the location of newline. + // feed the head to the parser and recursively process the tail. + len_head = newline-buf; + + // parse head + if (len_head > 0) + guest_heartbeat_msg_parser(buf, len_head, tok, 1); + + // start of the tail: skip newline + buf += len_head+1; + // length of the tail: deduct 1 for the newline character + len -= len_head+1; + + // continue to process the tail. + goto next; + } + else { + guest_heartbeat_msg_parser(buf, len, tok, 0); + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Receive +// ================================== +static void guest_heartbeat_msg_receiver( int selobj ) +{ + int bytes_received; + GuestErrorT error; + char buf[4096]; + + error = guest_channel_receive(_channel_id, buf, sizeof(buf), + &bytes_received); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to receive message, error=%s.", + guest_error_str(error)); + return; + } + + DPRINTFV("Bytes received is %i.", bytes_received); + guest_heartbeat_msg_handler(buf, bytes_received, tok); + +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Signal Handler +// ======================================== +static void guest_heartbeat_msg_signal_handler( int signum ) +{ + int64_t sigval = signum; + int result; + + if ((SIGIO == signum) && (0 <= _signal_fd)) + { + result = write(_signal_fd, &sigval, sizeof(sigval)); + if (0 > result) + { + DPRINTFE("Failed to write signal, error=%s", strerror(errno)); + return; + } + + guest_signal_ignore(signum); + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Hangup +// ================================ +static void guest_heartbeat_msg_hangup( int selobj ) +{ + DPRINTFI("Heartbeat messaging hangup."); + + if (GUEST_CHANNEL_ID_INVALID != _channel_id) + { + int selobj; + + selobj = guest_channel_get_selobj(_channel_id); + if (0 <= selobj) + { + GuestErrorT error; + + error = guest_selobj_deregister(selobj); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister selection object %i, " + "error=%s.", selobj, guest_error_str(error)); + } + + guest_signal_register_handler(SIGIO, + guest_heartbeat_msg_signal_handler); + + if (NULL != _callbacks.channel_state_change) + _callbacks.channel_state_change(false); + } + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Signal Dispatch +// ========================================= +static void guest_heartbeat_msg_signal_dispatch( int selobj ) +{ + int signum; + int64_t sigval = 0; + int result; + GuestSelObjCallbacksT callbacks; + GuestErrorT error; + + result = read(_signal_fd, &sigval, sizeof(sigval)); + if (0 > result) + { + if (EINTR == errno) + { + DPRINTFD("Interrupted on signal read, error=%s.", strerror(errno)); + } else { + DPRINTFE("Failed to dispatch signal, error=%s.", strerror(errno)); + } + return; + } + + signum = sigval; + + if (SIGIO == signum) + { + DPRINTFI("Heartbeat messaging available."); + + if (GUEST_CHANNEL_ID_INVALID != _channel_id) + { + selobj = guest_channel_get_selobj(_channel_id); + if (0 <= selobj) + { + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.read_callback = guest_heartbeat_msg_receiver; + callbacks.hangup_callback = guest_heartbeat_msg_hangup; + + error = guest_selobj_register(selobj, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register selection object %i, " + "error=%s.", selobj, guest_error_str(error)); + abort(); + } + + if (NULL != _callbacks.channel_state_change) + _callbacks.channel_state_change(true); + } + } + } else { + DPRINTFI("Ignoring signal %i.", signum); + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Initialize +// ==================================== +GuestErrorT guest_heartbeat_msg_initialize( + char* comm_device, GuestHeartbeatMsgCallbacksT* callbacks ) +{ + int selobj; + GuestSelObjCallbacksT selobj_callbacks; + GuestErrorT error; + + _channel_id = GUEST_CHANNEL_ID_INVALID; + + error = guest_channel_open(comm_device, &_channel_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to open communication channel over device %s, " + "error=%s.", comm_device, guest_error_str(error)); + return error; + } + + selobj = guest_channel_get_selobj(_channel_id); + if (0 <= selobj) + { + memset(&selobj_callbacks, 0, sizeof(selobj_callbacks)); + selobj_callbacks.read_callback = guest_heartbeat_msg_receiver; + selobj_callbacks.hangup_callback = guest_heartbeat_msg_hangup; + + error = guest_selobj_register(selobj, &selobj_callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register selection object %i, error=%s.", + selobj, guest_error_str(error)); + return error; + } + } + + _signal_fd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); + if (0 > _signal_fd) + { + DPRINTFE("Failed to open signal file descriptor,error=%s.", + strerror(errno)); + return GUEST_FAILED; + } + + memset(&selobj_callbacks, 0, sizeof(selobj_callbacks)); + selobj_callbacks.read_callback = guest_heartbeat_msg_signal_dispatch; + + error = guest_selobj_register(_signal_fd, &selobj_callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register selection object, error=%s.", + guest_error_str(error)); + close(_signal_fd); + _signal_fd = -1; + return error; + } + + memcpy(&_callbacks, callbacks, sizeof(GuestHeartbeatMsgCallbacksT)); + + tok = json_tokener_new(); + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Finalize +// ================================== +GuestErrorT guest_heartbeat_msg_finalize( void ) +{ + int selobj; + GuestErrorT error; + + memset(&_callbacks, 0, sizeof(GuestHeartbeatMsgCallbacksT)); + free(tok); + + if (0 <= _signal_fd) + { + error = guest_selobj_deregister(_signal_fd); + if (GUEST_OKAY != error) + DPRINTFE("Failed to deregister selection object, error=%s.", + guest_error_str(error)); + + close(_signal_fd); + _signal_fd = -1; + } + + if (GUEST_CHANNEL_ID_INVALID != _channel_id) + { + selobj = guest_channel_get_selobj(_channel_id); + if (0 <= selobj) + { + error = guest_selobj_deregister(selobj); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister selection object %i, error=%s.", + selobj, guest_error_str(error)); + } + } + + error = guest_channel_close(_channel_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed close communication channel, error=%s.", + guest_error_str(error)); + } + _channel_id = GUEST_CHANNEL_ID_INVALID; + } + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.h new file mode 100755 index 00000000..4bb296c3 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HERATBEAT_MESSAGE_H__ +#define __GUEST_HEARTBEAT_MESSAGE_H__ + +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" + +#include "guest_heartbeat_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_HEARTBEAT_MAX_LOG_MSG_SIZE 192 + +typedef struct { + char name[GUEST_NAME_MAX_CHAR]; + unsigned int heartbeat_interval_ms; + unsigned int vote_ms; + unsigned int shutdown_notice_ms; + unsigned int suspend_notice_ms; + unsigned int resume_notice_ms; + unsigned int restart_ms; + GuestHeartbeatActionT corrective_action; +} GuestHeartbeatMsgInitDataT; + +typedef void (*GuestHeartbeatMsgChannelStateChangeT) (bool state); +typedef void (*GuestHeartbeatMsgRecvInitT) + (int invocation_id, GuestHeartbeatMsgInitDataT* data); +typedef void (*GuestHeartbeatMsgRecvInitAckT) (int invocation_id); +typedef void (*GuestHeartbeatMsgRecvExitT) (char log_msg[]); +typedef void (*GuestHeartbeatMsgRecvChallengeT) (void); +typedef void (*GuestHeartbeatMsgRecvChallengeAckT) + (bool health, GuestHeartbeatActionT corrective_action, char log_msg[]); +typedef void (*GuestHeartbeatMsgRecvActionNotifyT) + (int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, int timeout_ms); +typedef void (*GuestHeartbeatMsgRecvActionResponseT) + (int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, GuestHeartbeatVoteResultT vote_result, + char log_msg[]); + +typedef struct { + GuestHeartbeatMsgChannelStateChangeT channel_state_change; + GuestHeartbeatMsgRecvInitT recv_init; + GuestHeartbeatMsgRecvInitAckT recv_init_ack; + GuestHeartbeatMsgRecvExitT recv_exit; + GuestHeartbeatMsgRecvChallengeT recv_challenge; + GuestHeartbeatMsgRecvChallengeAckT recv_challenge_ack; + GuestHeartbeatMsgRecvActionNotifyT recv_action_notify; + GuestHeartbeatMsgRecvActionResponseT recv_action_response; +} GuestHeartbeatMsgCallbacksT; + +// **************************************************************************** +// Guest Heartbeat Message - Send Init +// =================================== +extern GuestErrorT guest_heartbeat_msg_send_init( int invocation_id, + GuestHeartbeatMsgInitDataT* data ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Init Ack +// ======================================= +extern GuestErrorT guest_heartbeat_msg_send_init_ack( int invocation_id ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Exit +// =================================== +extern GuestErrorT guest_heartbeat_msg_send_exit( char log_msg[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Challenge +// ======================================== +extern GuestErrorT guest_heartbeat_msg_send_challenge( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Challenge Response +// ================================================= +extern GuestErrorT guest_heartbeat_msg_send_challenge_response( + bool health, GuestHeartbeatActionT corrective_action, char log_msg[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Action Notify +// ============================================ +extern GuestErrorT guest_heartbeat_msg_send_action_notify( + int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, int timeout_ms ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Send Action Response +// ============================================== +GuestErrorT guest_heartbeat_msg_send_action_response( + int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, GuestHeartbeatVoteResultT vote_result, + char log_msg[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Initialize +// ==================================== +extern GuestErrorT guest_heartbeat_msg_initialize( + char* comm_device, GuestHeartbeatMsgCallbacksT* callbacks ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Message - Finalize +// ================================== +extern GuestErrorT guest_heartbeat_msg_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_MESSAGE_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg_defs.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg_defs.h new file mode 100755 index 00000000..2a12c86f --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_msg_defs.h @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_MESSAGE_DEFINITIONS_H__ +#define __GUEST_HEARTBEAT_MESSAGE_DEFINITIONS_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_HEARTBEAT_MSG_VERSION_CURRENT 3 +#define GUEST_HEARTBEAT_MSG_REVISION_CURRENT 1 + +#define GUEST_HEARTBEAT_MSG_HEALTHY "healthy" +#define GUEST_HEARTBEAT_MSG_UNHEALTHY "unhealthy" + +// maximum size of a string value except instance name and log msg +#define GUEST_HEARTBEAT_MSG_MAX_VALUE_SIZE 32 +// maximum size of instance name +#define GUEST_HEARTBEAT_MSG_MAX_NAME_SIZE 64 +#define GUEST_HEARTBEAT_MSG_MAX_LOG_SIZE 224 +#define GUEST_HEARTBEAT_MSG_MAX_MSG_SIZE 1056 +#define GUEST_HEARTBEAT_MSG_MIN_MSG_SIZE 32 + +// *IMPORTANT NOTE* The keys defined here should match those defined in +// NFV-VIM in order to properly encode/decode REST-API messages. + +// Keys for Repair Action +#define GUEST_HEARTBEAT_MSG_ACTION_UNKNOWN "unknown" +#define GUEST_HEARTBEAT_MSG_ACTION_NONE "none" +#define GUEST_HEARTBEAT_MSG_ACTION_REBOOT "reboot" +#define GUEST_HEARTBEAT_MSG_ACTION_STOP "stop" +#define GUEST_HEARTBEAT_MSG_ACTION_LOG "log" + +// Keys for Event Type +#define GUEST_HEARTBEAT_MSG_EVENT_UNKNOWN "unknown" +#define GUEST_HEARTBEAT_MSG_EVENT_STOP "stop" +#define GUEST_HEARTBEAT_MSG_EVENT_REBOOT "reboot" +#define GUEST_HEARTBEAT_MSG_EVENT_SUSPEND "suspend" +#define GUEST_HEARTBEAT_MSG_EVENT_PAUSE "pause" +#define GUEST_HEARTBEAT_MSG_EVENT_UNPAUSE "unpause" +#define GUEST_HEARTBEAT_MSG_EVENT_RESUME "resume" +#define GUEST_HEARTBEAT_MSG_EVENT_RESIZE_BEGIN "resize_begin" +#define GUEST_HEARTBEAT_MSG_EVENT_RESIZE_END "resize_end" +#define GUEST_HEARTBEAT_MSG_EVENT_LIVE_MIGRATE_BEGIN "live_migrate_begin" +#define GUEST_HEARTBEAT_MSG_EVENT_LIVE_MIGRATE_END "live_migrate_end" +#define GUEST_HEARTBEAT_MSG_EVENT_COLD_MIGRATE_BEGIN "cold_migrate_begin" +#define GUEST_HEARTBEAT_MSG_EVENT_COLD_MIGRATE_END "cold_migrate_end" + +// Keys for Notification Type +#define GUEST_HEARTBEAT_MSG_NOTIFY_UNKNOWN "unknown" +#define GUEST_HEARTBEAT_MSG_NOTIFY_REVOCABLE "revocable" +#define GUEST_HEARTBEAT_MSG_NOTIFY_IRREVOCABLE "irrevocable" + +// Keys for Vote Result +#define GUEST_HEARTBEAT_MSG_VOTE_RESULT_UNKNOWN "unknown" +#define GUEST_HEARTBEAT_MSG_VOTE_RESULT_ACCEPT "accept" +#define GUEST_HEARTBEAT_MSG_VOTE_RESULT_REJECT "reject" +#define GUEST_HEARTBEAT_MSG_VOTE_RESULT_COMPLETE "complete" +#define GUEST_HEARTBEAT_MSG_VOTE_RESULT_TIMEOUT "timeout" +#define GUEST_HEARTBEAT_MSG_VOTE_RESULT_ERROR "error" + +// client registers for heartbeat service +#define GUEST_HEARTBEAT_MSG_INIT "init" +// server accepts new client +#define GUEST_HEARTBEAT_MSG_INIT_ACK "init_ack" +// client intends to exit +#define GUEST_HEARTBEAT_MSG_EXIT "exit" +// server challenges client, are you healthy +#define GUEST_HEARTBEAT_MSG_CHALLENGE "challenge" +// client response to challenge +#define GUEST_HEARTBEAT_MSG_CHALLENGE_RESPONSE "challenge_response" +// server proposes/demands action +#define GUEST_HEARTBEAT_MSG_ACTION_NOTIFY "action_notify" +// client votes on action, or indicates action complete +#define GUEST_HEARTBEAT_MSG_ACTION_RESPONSE "action_response" +// server notify client of failure in processing client message +#define GUEST_HEARTBEAT_MSG_NACK "nack" + +// Keys for messages between Host and Guest +#define GUEST_HEARTBEAT_MSG_VERSION "version" +#define GUEST_HEARTBEAT_MSG_REVISION "revision" +#define GUEST_HEARTBEAT_MSG_MSG_TYPE "msg_type" +#define GUEST_HEARTBEAT_MSG_SEQUENCE "sequence" +#define GUEST_HEARTBEAT_MSG_INVOCATION_ID "invocation_id" +#define GUEST_HEARTBEAT_MSG_NAME "name" +#define GUEST_HEARTBEAT_MSG_HEARTBEAT_INTERVAL_MS "heartbeat_interval_ms" +#define GUEST_HEARTBEAT_MSG_VOTE_SECS "vote_secs" +#define GUEST_HEARTBEAT_MSG_SHUTDOWN_NOTICE_SECS "shutdown_notice_secs" +#define GUEST_HEARTBEAT_MSG_SUSPEND_NOTICE_SECS "suspend_notice_secs" +#define GUEST_HEARTBEAT_MSG_RESUME_NOTICE_SECS "resume_notice_secs" +#define GUEST_HEARTBEAT_MSG_RESTART_SECS "restart_secs" +#define GUEST_HEARTBEAT_MSG_CORRECTIVE_ACTION "corrective_action" +#define GUEST_HEARTBEAT_MSG_LOG_MSG "log_msg" +#define GUEST_HEARTBEAT_MSG_HEARTBEAT_CHALLENGE "heartbeat_challenge" +#define GUEST_HEARTBEAT_MSG_HEARTBEAT_RESPONSE "heartbeat_response" +#define GUEST_HEARTBEAT_MSG_HEARTBEAT_HEALTH "heartbeat_health" +#define GUEST_HEARTBEAT_MSG_EVENT_TYPE "event_type" +#define GUEST_HEARTBEAT_MSG_NOTIFICATION_TYPE "notification_type" +#define GUEST_HEARTBEAT_MSG_TIMEOUT_MS "timeout_ms" +#define GUEST_HEARTBEAT_MSG_VOTE_RESULT "vote_result" + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_MESSAGE_DEFINITIONS_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.c b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.c new file mode 100755 index 00000000..6edcc9c8 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.c @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_types.h" + +// **************************************************************************** +// Guest Heartbeat Types - Action String +// ===================================== +const char* guest_heartbeat_action_str( GuestHeartbeatActionT action ) +{ + switch (action) + { + case GUEST_HEARTBEAT_ACTION_NONE: return "none"; + case GUEST_HEARTBEAT_ACTION_REBOOT: return "reboot"; + case GUEST_HEARTBEAT_ACTION_STOP: return "stop"; + case GUEST_HEARTBEAT_ACTION_LOG: return "log"; + default: + return "action-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Event String +// ==================================== +const char* guest_heartbeat_event_str( GuestHeartbeatEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_EVENT_STOP: return "stop"; + case GUEST_HEARTBEAT_EVENT_REBOOT: return "reboot"; + case GUEST_HEARTBEAT_EVENT_SUSPEND: return "suspend"; + case GUEST_HEARTBEAT_EVENT_PAUSE: return "pause"; + case GUEST_HEARTBEAT_EVENT_UNPAUSE: return "unpause"; + case GUEST_HEARTBEAT_EVENT_RESUME: return "resume"; + case GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN: return "resize-begin"; + case GUEST_HEARTBEAT_EVENT_RESIZE_END: return "resize-end"; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN: return "live-migrate-begin"; + case GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END: return "live-migrate-end"; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN: return "cold-migrate-begin"; + case GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END: return "cold-migrate-end"; + default: + return "event-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Notify String +// ===================================== +const char* guest_heartbeat_notify_str( GuestHeartbeatNotifyT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_NOTIFY_REVOCABLE: return "revocable"; + case GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE: return "irrevocable"; + default: + return "notify-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Vote Result String +// ========================================== +const char* guest_heartbeat_vote_result_str( GuestHeartbeatVoteResultT result ) +{ + switch (result) + { + case GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT: return "accept"; + case GUEST_HEARTBEAT_VOTE_RESULT_REJECT: return "reject"; + case GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE: return "complete"; + case GUEST_HEARTBEAT_VOTE_RESULT_TIMEOUT: return "timeout"; + case GUEST_HEARTBEAT_VOTE_RESULT_ERROR: return "error"; + default: + return "vote-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Merge Action +// ==================================== +GuestHeartbeatActionT guest_heartbeat_merge_action( + GuestHeartbeatActionT current_action, GuestHeartbeatActionT new_action ) +{ + switch (new_action) + { + case GUEST_HEARTBEAT_ACTION_STOP: + return new_action; + + case GUEST_HEARTBEAT_ACTION_REBOOT: + if (GUEST_HEARTBEAT_ACTION_STOP != current_action) + return new_action; + return current_action; + + case GUEST_HEARTBEAT_ACTION_LOG: + if ((GUEST_HEARTBEAT_ACTION_STOP != current_action) && + (GUEST_HEARTBEAT_ACTION_REBOOT != current_action)) + return new_action; + return current_action; + + default: + return current_action; + } +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.h b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.h new file mode 100755 index 00000000..bf0a5463 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/heartbeat/guest_heartbeat_types.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_TYPES_H__ +#define __GUEST_HEARTBEAT_TYPES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GUEST_HEARTBEAT_ACTION_UNKNOWN, + GUEST_HEARTBEAT_ACTION_NONE, + GUEST_HEARTBEAT_ACTION_REBOOT, + GUEST_HEARTBEAT_ACTION_STOP, + GUEST_HEARTBEAT_ACTION_LOG, + GUEST_HEARTBEAT_ACTION_MAX, +} GuestHeartbeatActionT; + +typedef enum { + GUEST_HEARTBEAT_EVENT_UNKNOWN, + GUEST_HEARTBEAT_EVENT_STOP, + GUEST_HEARTBEAT_EVENT_REBOOT, + GUEST_HEARTBEAT_EVENT_SUSPEND, + GUEST_HEARTBEAT_EVENT_PAUSE, + GUEST_HEARTBEAT_EVENT_UNPAUSE, + GUEST_HEARTBEAT_EVENT_RESUME, + GUEST_HEARTBEAT_EVENT_RESIZE_BEGIN, + GUEST_HEARTBEAT_EVENT_RESIZE_END, + GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_BEGIN, + GUEST_HEARTBEAT_EVENT_LIVE_MIGRATE_END, + GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_BEGIN, + GUEST_HEARTBEAT_EVENT_COLD_MIGRATE_END, + GUEST_HEARTBEAT_EVENT_MAX, +} GuestHeartbeatEventT; + +typedef enum { + GUEST_HEARTBEAT_NOTIFY_UNKNOWN, + GUEST_HEARTBEAT_NOTIFY_REVOCABLE, + GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE, + GUEST_HEARTBEAT_NOTIFY_MAX, +} GuestHeartbeatNotifyT; + +typedef enum { + GUEST_HEARTBEAT_VOTE_RESULT_UNKNOWN, + GUEST_HEARTBEAT_VOTE_RESULT_ACCEPT, + GUEST_HEARTBEAT_VOTE_RESULT_REJECT, + GUEST_HEARTBEAT_VOTE_RESULT_COMPLETE, + GUEST_HEARTBEAT_VOTE_RESULT_TIMEOUT, + GUEST_HEARTBEAT_VOTE_RESULT_ERROR, + GUEST_HEARTBEAT_VOTE_RESULT_MAX, +} GuestHeartbeatVoteResultT; + +// **************************************************************************** +// Guest Heartbeat Types - Action String +// ===================================== +extern const char* guest_heartbeat_action_str( GuestHeartbeatActionT action ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Event String +// ==================================== +extern const char* guest_heartbeat_event_str( GuestHeartbeatEventT event ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Notify String +// ===================================== +extern const char* guest_heartbeat_notify_str( GuestHeartbeatNotifyT notify ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Vote Result String +// ========================================== +extern const char* guest_heartbeat_vote_result_str( GuestHeartbeatVoteResultT result ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Types - Merge Action +// ==================================== +extern GuestHeartbeatActionT guest_heartbeat_merge_action( + GuestHeartbeatActionT current_action, GuestHeartbeatActionT new_action ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_TYPES_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/Makefile b/guest-client/guest-client-3.0.1/guest_client/src/test/Makefile new file mode 100755 index 00000000..b58cb799 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/Makefile @@ -0,0 +1,77 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +SHELL = /bin/sh + +## Configuration Directory Variables +prefix := /usr/local +exec_prefix := $(prefix) +sysconfdir := $(prefix)/etc +includedir := $(prefix)/include +libdir := $(exec_prefix)/lib +bindir := $(exec_prefix)/bin + +MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CURRENT_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH))) +BUILD_DIR := $(CURRENT_DIR)/build + +.SUFFIXES: +.SUFFIXES: .c .o + +.PHONY: all build create_build_dir clean distclean + +program_NAME := guest-client-test +program_C_INCLUDES := -I$(CURRENT_DIR) -I$(CURRENT_DIR)/../ +program_C_INCLUDES += -I$(CURRENT_DIR)/../heartbeat +program_C_INCLUDES += -I$(CURRENT_DIR)/../../include +program_C_SRCS := $(wildcard *.c) +program_C_OBJS := ${program_C_SRCS:.c=.o} +program_LDLIBS := -lrt + +CFLAGS = -g -O2 -Wall -Werror -Wformat -DSYSCONFDIR=$(sysconfdir) + +all: build + +%.o: %.c + $(CC) $(CFLAGS) $(program_C_INCLUDES) -c $^ -o $(BUILD_DIR)/$@ -ljson-c + +$(program_NAME): $(program_C_OBJS) + @(cd ../; make --no-print-directory build sysconfdir=$(sysconfdir) BUILD_DIR=$(BUILD_DIR)) + @-($(RM) $(BUILD_DIR)/guest_client.o $(BUILD_DIR)/guest-client) + $(CC) $(CFLAGS) $(BUILD_DIR)/*.o $(program_LDLIBS) -o $(BUILD_DIR)/$(program_NAME) -ljson-c + +create_build_dir: + mkdir -p --mode 755 $(BUILD_DIR) + +build: create_build_dir $(program_NAME) + +clean: + @-($(RM) $(BUILD_DIR)/*) + +distclean: clean diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.c b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.c new file mode 100755 index 00000000..a321f372 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.c @@ -0,0 +1,316 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_test.h" + +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_timer.h" + +#include "guest_heartbeat_types.h" +#include "guest_heartbeat_msg.h" + +static bool _challenge_response_recvd = false; +static GuestTimerIdT _heartbeat_timer_id = GUEST_TIMER_ID_INVALID; +static GuestTimerIdT _heartbeat_timeout_timer_id = GUEST_TIMER_ID_INVALID; + +// **************************************************************************** +// Guest Heartbeat - Timeout +// ========================= +static bool guest_heartbeat_timeout( GuestTimerIdT timer_id ) +{ + GuestErrorT error; + + DPRINTFE("--------> HEARTBEAT TIMEOUT <--------"); + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timer_id) + { + error = guest_timer_deregister(_heartbeat_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timer_id = GUEST_TIMER_ID_INVALID; + } + + return false; // don't rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Periodic +// ========================== +static bool guest_heartbeat_periodic( GuestTimerIdT timer_id ) +{ + GuestErrorT error; + + if (_challenge_response_recvd) + { + error = guest_heartbeat_msg_send_challenge(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send challenge, error=%s.", + guest_error_str(error)); + } + _challenge_response_recvd = false; + } + return true; // rearm +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Receive Init Message +// ====================================== +static void guest_heartbeat_recv_init_msg( + int invocation_id, GuestHeartbeatMsgInitDataT* data ) +{ + GuestErrorT error; + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timer_id) + { + error = guest_timer_deregister(_heartbeat_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timer_id = GUEST_TIMER_ID_INVALID; + } + + error = guest_timer_register(data->heartbeat_interval_ms, + guest_heartbeat_periodic, + &_heartbeat_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to start heartbeat timer, error=%s.", + guest_error_str(error)); + return; + } + + error = guest_heartbeat_msg_send_init_ack(invocation_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send init ack, error=%s.", guest_error_str(error)); + } + + error = guest_heartbeat_msg_send_challenge(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to send challenge, error=%s.", guest_error_str(error)); + } + + _challenge_response_recvd = false; + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timeout_timer_id) + { + error = guest_timer_deregister(_heartbeat_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timeout timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + + error = guest_timer_register(data->heartbeat_interval_ms*2, + guest_heartbeat_timeout, + &_heartbeat_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to start heartbeat timeout timer, error=%s.", + guest_error_str(error)); + return; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Receive Exit Message +// ====================================== +static void guest_heartbeat_recv_exit_msg( char log_msg[] ) +{ + GuestErrorT error; + + DPRINTFI("--------> HEARTBEAT EXIT <--------"); + DPRINTFI("reason=%s", log_msg); + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timer_id) + { + error = guest_timer_deregister(_heartbeat_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timer_id = GUEST_TIMER_ID_INVALID; + } + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timeout_timer_id) + { + error = guest_timer_deregister(_heartbeat_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timeout timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Receive Challenge Ack Message +// =============================================== +static void guest_heartbeat_recv_challenge_ack_msg( + bool health, GuestHeartbeatActionT corrective_action, char log_msg[] ) +{ + GuestErrorT error; + + _challenge_response_recvd = true; + + if (!health) + { + DPRINTFE("--------> HEARTBEAT UNHEALTHY <--------"); + DPRINTFE("corrective_action=%s, reason=%s", + guest_heartbeat_action_str(corrective_action), log_msg); + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timer_id) + { + error = guest_timer_deregister(_heartbeat_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timer_id = GUEST_TIMER_ID_INVALID; + } + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timeout_timer_id) + { + error = guest_timer_deregister(_heartbeat_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timeout timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + + return; + } + + guest_timer_reset(_heartbeat_timeout_timer_id); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat - Receive Action Response Message +// ================================================= +static void guest_heartbeat_recv_action_response_msg( + int invocation_id, GuestHeartbeatEventT event, + GuestHeartbeatNotifyT notify, GuestHeartbeatVoteResultT vote_result, + char log_msg[] ) +{ + DPRINTFI("--------> ACTION RESPONSE <--------"); + DPRINTFI("invocation_id=%i event=%s, notify=%s, vote-result=%s, reason=%s", + invocation_id, guest_heartbeat_event_str(event), + guest_heartbeat_notify_str(notify), + guest_heartbeat_vote_result_str(vote_result), log_msg); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test - Initialize +// ======================= +GuestErrorT guest_test_initialize( char* comm_device ) +{ + GuestHeartbeatMsgCallbacksT callbacks; + GuestErrorT error; + + memset(&callbacks, 0, sizeof(callbacks)); + + callbacks.recv_init = guest_heartbeat_recv_init_msg; + callbacks.recv_exit = guest_heartbeat_recv_exit_msg; + callbacks.recv_challenge_ack = guest_heartbeat_recv_challenge_ack_msg; + callbacks.recv_action_response = guest_heartbeat_recv_action_response_msg; + + error = guest_heartbeat_msg_initialize(comm_device, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize heartbeat messaging, error=%s.", + guest_error_str(error)); + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test - Finalize +// ===================== +GuestErrorT guest_test_finalize( void ) +{ + GuestErrorT error; + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timer_id) + { + error = guest_timer_deregister(_heartbeat_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timer_id = GUEST_TIMER_ID_INVALID; + } + + if (GUEST_TIMER_ID_INVALID != _heartbeat_timeout_timer_id) + { + error = guest_timer_deregister(_heartbeat_timeout_timer_id); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to cancel heartbeat timeout timer, error=%s.", + guest_error_str(error)); + } + _heartbeat_timeout_timer_id = GUEST_TIMER_ID_INVALID; + } + + error = guest_heartbeat_msg_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize heartbeat messaging, error=%s.", + guest_error_str(error)); + } + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.h b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.h new file mode 100755 index 00000000..409cac3c --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_TEST_H__ +#define __GUEST_TEST_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Test - Initialize +// ======================= +extern GuestErrorT guest_test_initialize( char* comm_device ); +// **************************************************************************** + +// **************************************************************************** +// Guest Test - Finalize +// ===================== +extern GuestErrorT guest_test_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_TEST_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.c b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.c new file mode 100755 index 00000000..094ce171 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.c @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_test_cli.h" + +#include +#include +#include +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_selobj.h" +#include "guest_stream.h" + +#include "guest_heartbeat_msg.h" + +static GuestStreamT _stream; + +// **************************************************************************** +// Guest Test CLI - Usage +// ====================== +void guest_test_cli_usage( void ) +{ + printf("***************************************************\n"); + printf("* CLI Options: *\n"); + printf("* 1 - send action request [pause, revocable] *\n"); + printf("* 2 - send action request [pause, irrevocable] *\n"); + printf("***************************************************\n"); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test CLI - Dispatch +// ========================= +static void guest_test_cli_dispatch( int selobj ) +{ + int msg_size; + int bytes_received; + int result; + GuestErrorT error; + + result = read(STDIN_FILENO, _stream.end_ptr, _stream.avail); + if (0 > result) + { + if (EINTR == errno) + { + DPRINTFD("Interrupted on socket read, error=%s.", strerror(errno)); + return; + + } else { + DPRINTFE("Failed to read from socket, error=%s.", strerror(errno)); + return; + } + } else if (0 == result) { + DPRINTFD("No message received from socket."); + return; + + } else { + DPRINTFV("Received message, msg_size=%i.", result); + bytes_received = result; + } + + _stream.end_ptr += bytes_received; + _stream.avail -= bytes_received; + _stream.size += bytes_received; + + msg_size = guest_stream_get(&_stream); + if (0 <= msg_size) + { + _stream.bytes[msg_size] = '\0'; + DPRINTFD("CLI message: %s, msg_size=%i", _stream.bytes, msg_size); + + switch(_stream.bytes[0]) + { + case 'h': + guest_test_cli_usage(); + break; + + case '1': + error = guest_heartbeat_msg_send_action_notify( + rand(), GUEST_HEARTBEAT_EVENT_PAUSE, + GUEST_HEARTBEAT_NOTIFY_REVOCABLE, 5); + if (GUEST_OKAY != error) + DPRINTFE("Failed to send action notify, error=%s.", + guest_error_str(error)); + break; + + case '2': + error = guest_heartbeat_msg_send_action_notify( + rand(), GUEST_HEARTBEAT_EVENT_PAUSE, + GUEST_HEARTBEAT_NOTIFY_IRREVOCABLE, 5); + if (GUEST_OKAY != error) + DPRINTFE("Failed to send action notify, error=%s.", + guest_error_str(error)); + break; + + default: + break; + } + + guest_stream_advance(msg_size+1, &_stream); + } + + if (0 >= _stream.avail) + guest_stream_reset(&_stream); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test CLI - Initialize +// =========================== +GuestErrorT guest_test_cli_initialize( void ) +{ + GuestSelObjCallbacksT callbacks; + GuestErrorT error; + + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.read_callback = guest_test_cli_dispatch; + + error = guest_selobj_register(STDIN_FILENO, &callbacks); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to register stdin selection object, error=%s.", + guest_error_str(error)); + return error; + } + + error = guest_stream_setup("\n", 1, 256*2, &_stream); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to setup stdin stream, error=%s.", + guest_error_str(error)); + return error; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test CLI - Finalize +// ========================= +GuestErrorT guest_test_cli_finalize( void ) +{ + GuestErrorT error; + + error = guest_stream_release(&_stream); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed release stream, error=%s.", guest_error_str(error)); + } + + error = guest_selobj_deregister(STDIN_FILENO); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to deregister stdin selection object, error=%s.", + guest_error_str(error)); + } + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.h b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.h new file mode 100755 index 00000000..82be5861 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_cli.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_TEST_CLI_H__ +#define __GUEST_TEST_CLI_H__ + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Test CLI - Usage +// ====================== +extern void guest_test_cli_usage( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Test CLI - Initialize +// =========================== +extern GuestErrorT guest_test_cli_initialize( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Test CLI - Finalize +// ========================= +extern GuestErrorT guest_test_cli_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_TEST_CLI_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_client.c b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_client.c new file mode 100755 index 00000000..9626cfec --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_client.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include + +#include "guest_types.h" +#include "guest_debug.h" + +#include "guest_test_process.h" + +// **************************************************************************** +// Guest Test Client - Main +// ======================== +int main( int argc, char *argv[], char *envp[] ) +{ + GuestErrorT error; + + error = guest_debug_initialize("Guest-Client-Test"); + if (GUEST_OKAY != error) + { + printf("Debug initialization failed, error=%s.\n", + guest_error_str(error)); + return EXIT_FAILURE; + } + + error = guest_test_process_main(argc, argv, envp); + if (GUEST_OKAY != error) + { + printf("Process failure, error=%s.\n", guest_error_str(error)); + return EXIT_FAILURE; + } + + error = guest_debug_finalize(); + if (GUEST_OKAY != error) + { + printf("Debug finalization failed, error=%s.\n", + guest_error_str(error)); + } + + return EXIT_SUCCESS; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.c b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.c new file mode 100755 index 00000000..e80be3bd --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.c @@ -0,0 +1,264 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_test_process.h" + +#include +#include +#include +#include + +#include "guest_limits.h" +#include "guest_types.h" +#include "guest_debug.h" +#include "guest_signal.h" +#include "guest_config.h" +#include "guest_selobj.h" +#include "guest_timer.h" +#include "guest_channel.h" +#include "guest_stream.h" +#include "guest_test.h" +#include "guest_test_cli.h" + +static sig_atomic_t _stay_on = 1; + +// **************************************************************************** +// Guest Test Process - Signal Handler +// =================================== +static void guest_test_process_signal_handler( int signum ) +{ + switch (signum) + { + case SIGINT: + case SIGTERM: + case SIGQUIT: + _stay_on = 0; + break; + + case SIGCONT: + DPRINTFD("Ignoring signal SIGCONT (%i).", signum); + break; + + case SIGPIPE: + DPRINTFD("Ignoring signal SIGPIPE (%i).", signum); + break; + + default: + DPRINTFD("Signal (%i) ignored.", signum); + break; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test Process - Initialize +// =============================== +static GuestErrorT guest_test_process_initialize( + int argc, char *argv[], char *envp[] ) +{ + GuestConfigT* config = NULL; + GuestErrorT error; + + error = guest_config_initialize(argc, argv, envp); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize configuration module, error=%s.", + guest_error_str(error)); + guest_config_show_usage(); + return GUEST_FAILED; + } + + error = guest_selobj_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize selection object module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_timer_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize timer module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_channel_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize channel module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_stream_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize stream module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + config = guest_config_get(); + + error = guest_test_initialize(config->comm_device); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize test module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + error = guest_test_cli_initialize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to initialize test cli module, error=%s.", + guest_error_str(error)); + return GUEST_FAILED; + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test Process - Finalize +// ============================= +static GuestErrorT guest_test_process_finalize( void ) +{ + GuestErrorT error; + + error = guest_test_cli_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize test cli module, error=%s.", + guest_error_str(error)); + } + + error = guest_test_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize test module, error=%s.", + guest_error_str(error)); + } + + error = guest_stream_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize stream module, error=%s.", + guest_error_str(error)); + } + + error = guest_channel_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize channel module, error=%s.", + guest_error_str(error)); + } + + error = guest_timer_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finalize timer module, error=%s.", + guest_error_str(error)); + } + + error = guest_selobj_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finialize selection object module, error=%s.", + guest_error_str(error)); + } + + error = guest_config_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed to finialize configuration module, error=%s.", + guest_error_str(error)); + } + + return GUEST_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Test Process - Main +// ========================= +GuestErrorT guest_test_process_main( int argc, char *argv[], char *envp[] ) +{ + unsigned int next_interval_in_ms; + GuestErrorT error; + + DPRINTFI("Starting."); + + guest_signal_register_handler(SIGINT, guest_test_process_signal_handler); + guest_signal_register_handler(SIGTERM, guest_test_process_signal_handler); + guest_signal_register_handler(SIGQUIT, guest_test_process_signal_handler); + guest_signal_register_handler(SIGCONT, guest_test_process_signal_handler); + guest_signal_register_handler(SIGPIPE, guest_test_process_signal_handler); + + error = guest_test_process_initialize(argc, argv, envp); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed initialize test process, error=%s.", + guest_error_str(error)); + return error; + } + + DPRINTFI("Started."); + + guest_test_cli_usage(); + + while (_stay_on) + { + next_interval_in_ms = guest_timer_schedule(); + + error = guest_selobj_dispatch(next_interval_in_ms); + if (GUEST_OKAY != error) + { + DPRINTFE("Selection object dispatch failed, error=%s.", + guest_error_str(error)); + break; + } + } + + DPRINTFI("Shutting down."); + + error = guest_test_process_finalize(); + if (GUEST_OKAY != error) + { + DPRINTFE("Failed finalize test process, error=%s.", + guest_error_str(error) ); + } + + DPRINTFI("Shutdown complete."); + + return GUEST_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.h b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.h new file mode 100755 index 00000000..e582093c --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client/src/test/guest_test_process.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_TEST_PROCESS_H__ +#define __GUEST_TEST_PROCESS_H__ + +#include + +#include "guest_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest Test Process - Main +// ==================== +extern GuestErrorT guest_test_process_main( int argc, char *argv[], char *envp[] ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_TEST_PROCESS_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client_api/Makefile b/guest-client/guest-client-3.0.1/guest_client_api/Makefile new file mode 100755 index 00000000..0e68d8a5 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/Makefile @@ -0,0 +1,123 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +SHELL = /bin/sh + +## Configuration Directory Variables +prefix := /usr/local +exec_prefix := $(prefix) +sysconfdir := $(prefix)/etc +includedir := $(prefix)/include +libdir := $(exec_prefix)/lib +bindir := $(exec_prefix)/bin + +MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CURRENT_DIR := $(patsubst %/,%,$(dir $(MAKEFILE_PATH))) +BUILD_DIR := $(CURRENT_DIR)/build +PACKAGE_DIR := $(BUILD_DIR)/package +PACKAGE_ROOT_DIR := $(PACKAGE_DIR)/rootdir + +.PHONY: all build create_build_dir sample common heartbeat clean distclean package + +C_INCLUDES = -I$(CURRENT_DIR) -I$(CURRENT_DIR)/../include + +common_NAME := guest_common_api +common_C_SRCS := guest_api_types.c guest_api_debug.c guest_api_stream.c +common_C_SRCS += guest_api_unix.c +common_C_OBJS := ${common_C_SRCS:.c=.o} +common_LDFLAGS := -fPIC -g -shared +common_LIB_NAME := lib$(common_NAME).so +common_LIB_VER_MJR_NAME := $(common_LIB_NAME).3 +common_LIB_VER_NAME := $(common_LIB_VER_MJR_NAME).0.1 +common_BUILD_OBJS := $(addprefix $(BUILD_DIR)/, $(common_C_OBJS)) + +heartbeat_NAME := guest_heartbeat_api +heartbeat_C_SRCS := guest_heartbeat_api.c +heartbeat_C_OBJS := ${heartbeat_C_SRCS:.c=.o} +heartbeat_LDFLAGS := -fPIC -g -shared +heartbeat_LIB_NAME := lib$(heartbeat_NAME).so +heartbeat_LIB_VER_MJR_NAME := $(heartbeat_LIB_NAME).3 +heartbeat_LIB_VER_NAME := $(heartbeat_LIB_VER_MJR_NAME).0.1 +heartbeat_BUILD_OBJS := $(addprefix $(BUILD_DIR)/, $(heartbeat_C_OBJS)) + +sample_NAME := sample-guest-app +sample_C_SRCS := sample_guest_app.c +sample_C_OBJS := ${sample_C_SRCS:.c=.o} +sample_LDLIBS := -L$(BUILD_DIR) -l$(common_NAME) -l$(heartbeat_NAME) -lrt +sample_BUILD_OBJS := $(addprefix $(BUILD_DIR)/, $(sample_C_OBJS)) + +CFLAGS = -g -O2 -Wall -Werror -Wformat -fPIC -DSYSCONFDIR=$(sysconfdir) + +all: build + +%.o: %.c + $(CC) $(CFLAGS) $(C_INCLUDES) -c $^ -o $(BUILD_DIR)/$@ + +common: $(common_C_OBJS) + $(CC) $(CFLAGS) $(common_BUILD_OBJS) -Wl,-soname,$(common_LIB_VER_MJR_NAME) \ + -o $(BUILD_DIR)/$(common_LIB_VER_NAME) $(common_LDFLAGS) + ln -sf $(common_LIB_VER_NAME) $(BUILD_DIR)/$(common_LIB_NAME) + ln -sf $(common_LIB_VER_NAME) $(BUILD_DIR)/$(common_LIB_VER_MJR_NAME) + +heartbeat: common $(heartbeat_C_OBJS) + $(CC) $(CFLAGS) $(heartbeat_BUILD_OBJS) -Wl,-soname,$(heartbeat_LIB_VER_MJR_NAME) \ + -o $(BUILD_DIR)/$(heartbeat_LIB_VER_NAME) $(heartbeat_LDFLAGS) + ln -sf $(heartbeat_LIB_VER_NAME) $(BUILD_DIR)/$(heartbeat_LIB_NAME) + ln -sf $(heartbeat_LIB_VER_NAME) $(BUILD_DIR)/$(heartbeat_LIB_VER_MJR_NAME) + +create_build_dir: + mkdir -p --mode 755 $(BUILD_DIR) + +build: create_build_dir common heartbeat + +sample: create_build_dir common heartbeat $(sample_C_OBJS) + $(CC) $(CFLAGS) $(sample_BUILD_OBJS) -o $(BUILD_DIR)/$(sample_NAME) $(sample_LDLIBS) + +clean: + @-($(RM) -Rf $(BUILD_DIR)/*) + +distclean: clean + +package: + @(mkdir -p --mode 755 $(PACKAGE_ROOT_DIR)/$(includedir)) + @(mkdir -p --mode 755 $(PACKAGE_ROOT_DIR)/$(libdir)) + @(echo "Packaging guest_api_types.h in $(PACKAGE_ROOT_DIR)/$(includedir)") + @(cp $(CURRENT_DIR)/guest_api_types.h $(PACKAGE_ROOT_DIR)/$(includedir)/guest_api_types.h) + @(echo "Packaging guest_heartbeat_api.h in $(PACKAGE_ROOT_DIR)/$(includedir)") + @(cp $(CURRENT_DIR)/guest_heartbeat_api.h $(PACKAGE_ROOT_DIR)/$(includedir)/guest_heartbeat_api.h) + @(echo "Packaging $(common_LIB_NAME) in $(PACKAGE_ROOT_DIR)/$(libdir)") + @(cp $(BUILD_DIR)/$(common_LIB_VER_NAME) $(PACKAGE_ROOT_DIR)/$(libdir)/$(common_LIB_VER_NAME)) + @(chmod 644 $(PACKAGE_ROOT_DIR)/$(libdir)/$(common_LIB_VER_NAME)) + ln -sf $(common_LIB_VER_NAME) $(PACKAGE_ROOT_DIR)/$(libdir)/$(common_LIB_NAME) + ln -sf $(common_LIB_VER_NAME) $(PACKAGE_ROOT_DIR)/$(libdir)/$(common_LIB_VER_MJR_NAME) + @(echo "Packaging $(heartbeat_LIB_NAME) in $(PACKAGE_ROOT_DIR)/$(libdir)") + @(cp $(BUILD_DIR)/$(heartbeat_LIB_VER_NAME) $(PACKAGE_ROOT_DIR)/$(libdir)/$(heartbeat_LIB_VER_NAME)) + @(chmod 644 $(PACKAGE_ROOT_DIR)/$(libdir)/$(heartbeat_LIB_VER_NAME)) + ln -sf $(heartbeat_LIB_VER_NAME) $(PACKAGE_ROOT_DIR)/$(libdir)/$(heartbeat_LIB_NAME) + ln -sf $(heartbeat_LIB_VER_NAME) $(PACKAGE_ROOT_DIR)/$(libdir)/$(heartbeat_LIB_VER_MJR_NAME) diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.c b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.c new file mode 100755 index 00000000..cadd2025 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.c @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_api_debug.h" + +#include +#include +#include + +#include "guest_api_types.h" + +#define GUEST_DEBUG_WANT_SYSLOG +#ifdef GUEST_DEBUG_WANT_SYSLOG +#include +#endif + +static char _process_name[30]; +static GuestApiDebugLogLevelT _log_level = GUEST_API_DEBUG_LOG_LEVEL_INFO; + +// **************************************************************************** +// Guest API Debug - Log Level String +// ================================== +const char* guest_api_debug_log_level_str( GuestApiDebugLogLevelT level ) +{ + switch (level) { + case GUEST_API_DEBUG_LOG_LEVEL_ERROR: return "error"; + case GUEST_API_DEBUG_LOG_LEVEL_INFO: return " info"; + case GUEST_API_DEBUG_LOG_LEVEL_DEBUG: return "debug"; + case GUEST_API_DEBUG_LOG_LEVEL_VERBOSE: return " verb"; + default: + return "???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Set Log Level +// =============================== +void guest_api_debug_set_log_level( GuestApiDebugLogLevelT level ) +{ + _log_level = level; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Want Log +// ========================== +bool guest_api_debug_want_log( GuestApiDebugLogLevelT level ) +{ + return (level <= _log_level); +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Log +// ===================== +void guest_api_debug_log( const char* format, ... ) +{ + char time_str[80]; + char date_str[32]; + struct tm t_real; + struct timespec ts_real; + va_list arguments; + char log_data[256]; + + va_start(arguments, format); + vsnprintf(log_data, sizeof(log_data), format, arguments); + va_end(arguments); + + clock_gettime(CLOCK_REALTIME, &ts_real); + + if (NULL == localtime_r(&(ts_real.tv_sec), &t_real)) + { + snprintf( time_str, sizeof(time_str), + "YYYY:MM:DD HH:MM:SS.xxx" ); + } else { + strftime( date_str, sizeof(date_str), "%b %e %H:%M:%S", + &t_real ); + snprintf( time_str, sizeof(time_str), "%s.%03ld", date_str, + ts_real.tv_nsec/1000000 ); + } + +#ifdef GUEST_DEBUG_WANT_SYSLOG + syslog(LOG_DEBUG, "%s", log_data); +#else + printf("%s %s: %s\n", time_str, _process_name, log_data); +#endif +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Initialize +// ============================ +GuestApiErrorT guest_api_debug_initialize( char process_name[] ) +{ + _log_level = GUEST_API_DEBUG_LOG_LEVEL_INFO; + snprintf(_process_name, sizeof(_process_name), "%s", process_name); + + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Finalize +// ========================== +GuestApiErrorT guest_api_debug_finalize( void ) +{ + _log_level = GUEST_API_DEBUG_LOG_LEVEL_INFO; + _process_name[0] = '\0'; + + return GUEST_API_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.h b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.h new file mode 100755 index 00000000..f276fbae --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_debug.h @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_API_DEBUG_H__ +#define __GUEST_API_DEBUG_H__ + +#include + +#include "guest_api_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GUEST_API_DEBUG_LOG_LEVEL_ERROR, + GUEST_API_DEBUG_LOG_LEVEL_INFO, + GUEST_API_DEBUG_LOG_LEVEL_DEBUG, + GUEST_API_DEBUG_LOG_LEVEL_VERBOSE, +} GuestApiDebugLogLevelT; + +#define DPRINTF(level, format, args...) \ + if (guest_api_debug_want_log(level)) \ + guest_api_debug_log("%s: %s(%i): " format, \ + guest_api_debug_log_level_str(level), \ + __FILE__, __LINE__, ##args) +#define DPRINTFE(format, args...) \ + DPRINTF(GUEST_API_DEBUG_LOG_LEVEL_ERROR, format, ##args) +#define DPRINTFI(format, args...) \ + DPRINTF(GUEST_API_DEBUG_LOG_LEVEL_INFO, format, ##args) +#define DPRINTFD(format, args...) \ + DPRINTF(GUEST_API_DEBUG_LOG_LEVEL_DEBUG, format, ##args) +#define DPRINTFV(format, args... ) \ + DPRINTF(GUEST_API_DEBUG_LOG_LEVEL_VERBOSE, format, ##args) + +// **************************************************************************** +// Guest API Debug - Log Level String +// ================================== +extern const char* guest_api_debug_log_level_str( GuestApiDebugLogLevelT level ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Set Log Level +// =============================== +extern void guest_api_debug_set_log_level( GuestApiDebugLogLevelT level ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Want Log +// ========================== +extern bool guest_api_debug_want_log( GuestApiDebugLogLevelT level ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Log +// ===================== +extern void guest_api_debug_log( const char* format, ... ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Initialize +// ============================ +extern GuestApiErrorT guest_api_debug_initialize( char process_name[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Debug - Finalize +// ========================== +extern GuestApiErrorT guest_api_debug_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_API_DEBUG_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.c b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.c new file mode 100755 index 00000000..5f21a39e --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.c @@ -0,0 +1,185 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_api_stream.h" + +#include +#include +#include + +#include "guest_api_types.h" +#include "guest_api_debug.h" + +// **************************************************************************** +// Guest API Stream - Get +// ====================== +int guest_api_stream_get( GuestApiStreamT* stream ) +{ + char* byte_ptr; + int delimiter_i = 0; + + if (stream->delimiter_size > stream->size) + return -1; + + for (byte_ptr = stream->bytes; byte_ptr != stream->end_ptr; ++byte_ptr) + { + if (stream->delimiter[delimiter_i] == *byte_ptr) + { + ++delimiter_i; + if (delimiter_i == stream->delimiter_size) + { + return (byte_ptr - stream->bytes); + } + } else { + delimiter_i = 0; + } + } + + return -1; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Get Next +// =========================== +bool guest_api_stream_get_next( GuestApiStreamT* stream ) +{ + char* byte_ptr; + int delimiter_i = 0; + + if (stream->delimiter_size > stream->size) + return false; + + for (byte_ptr = stream->bytes; byte_ptr != stream->end_ptr; ++byte_ptr) + { + --stream->size; + if (stream->delimiter[delimiter_i] == *byte_ptr) + { + ++delimiter_i; + if (delimiter_i == stream->delimiter_size) + { + byte_ptr -= (stream->delimiter_size-1); + stream->size += stream->delimiter_size; + memmove(stream->bytes, byte_ptr, stream->size); + stream->avail = stream->max_size - stream->size; + stream->end_ptr = stream->bytes + stream->size; + break; + } + } else { + delimiter_i = 0; + } + } + + if (byte_ptr == stream->end_ptr) + { + // Empty the stream + memset(stream->bytes, 0, stream->max_size); + stream->avail = stream->max_size; + stream->size = 0; + stream->end_ptr = stream->bytes; + return false; + } + + return true; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Advance +// ========================== +void guest_api_stream_advance( int adv, GuestApiStreamT* stream ) +{ + stream->size -= adv; + memmove(stream->bytes, stream->bytes+adv, stream->size); + stream->avail = stream->max_size - stream->size; + stream->end_ptr = stream->bytes + stream->size; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Reset +// ======================== +void guest_api_stream_reset( GuestApiStreamT* stream ) +{ + memset(stream->bytes, 0, stream->max_size); + stream->avail = stream->max_size; + stream->size = 0; + stream->end_ptr = stream->bytes; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Setup +// ======================== +GuestApiErrorT guest_api_stream_setup( + const char* delimiter, int delimiter_size, int stream_size, + GuestApiStreamT* stream ) +{ + stream->delimiter = malloc(delimiter_size); + if (NULL == stream->delimiter) + { + DPRINTFE("Failed to allocated delimiter storage, needed=%i.", + delimiter_size); + return GUEST_API_FAILED; + } + + stream->bytes = malloc(stream_size); + if (NULL == stream->delimiter) + { + DPRINTFE("Failed to allocated stream storage, needed=%i.", stream_size); + free(stream->delimiter); + return GUEST_API_FAILED; + } + + memcpy(stream->delimiter, delimiter, delimiter_size); + stream->delimiter_size = delimiter_size; + memset(stream->bytes, 0, stream_size); + stream->end_ptr = stream->bytes; + stream->avail = stream_size; + stream->size = 0; + stream->max_size = stream_size; + + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Release +// ========================== +GuestApiErrorT guest_api_stream_release( GuestApiStreamT* stream ) +{ + if (NULL != stream->delimiter) + free(stream->delimiter); + + if (NULL != stream->bytes) + free(stream->bytes); + + memset(stream, 0, sizeof(GuestApiStreamT)); + return GUEST_API_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.h b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.h new file mode 100755 index 00000000..3a71ea06 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_stream.h @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_API_STREAM_H__ +#define __GUEST_API_STREAM_H__ + +#include + +#include "guest_api_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char* delimiter; + int delimiter_size; + char* end_ptr; + char* bytes; + int avail; + int size; + int max_size; +} GuestApiStreamT; + +// **************************************************************************** +// Guest API Stream - Get +// ====================== +extern int guest_api_stream_get( GuestApiStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Get Next +// =========================== +extern bool guest_api_stream_get_next( GuestApiStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Advance +// ========================== +extern void guest_api_stream_advance( int adv, GuestApiStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Reset +// ======================== +extern void guest_api_stream_reset( GuestApiStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Setup +// ======================== +extern GuestApiErrorT guest_api_stream_setup( + const char* delimiter, int delimiter_size, int stream_size, + GuestApiStreamT* stream ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Stream - Release +// ========================== +extern GuestApiErrorT guest_api_stream_release( GuestApiStreamT* stream ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_API_STREAM_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.c b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.c new file mode 100755 index 00000000..4a0fe2e9 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_api_types.h" + +// **************************************************************************** +// Guest API - Error String +// ======================== +const char* guest_api_error_str( GuestApiErrorT error ) +{ + switch (error) + { + case GUEST_API_OKAY: return "OKAY"; + case GUEST_API_FAILED: return "FAILED"; + case GUEST_API_INTERRUPTED: return "INTERRUPTED"; + case GUEST_API_TRY_AGAIN: return "TRY_AGAIN"; + default: + return "???"; + } +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.h b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.h new file mode 100755 index 00000000..486c943a --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_types.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_API_TYPES_H__ +#define __GUEST_API_TYPES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + GUEST_API_OKAY, + GUEST_API_FAILED, + GUEST_API_INTERRUPTED, + GUEST_API_TRY_AGAIN, +} GuestApiErrorT; + +// **************************************************************************** +// Guest API - Error String +// ======================== +extern const char* guest_api_error_str( GuestApiErrorT error ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_API_TYPES_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.c b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.c new file mode 100755 index 00000000..c6035131 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.c @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_api_unix.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "guest_api_types.h" +#include "guest_api_debug.h" + +// **************************************************************************** +// Guest API Unix - Connect +// ======================== +GuestApiErrorT guest_api_unix_connect( int s, char* address ) +{ + struct sockaddr_un remote; + int len, result; + + memset(&remote, 0, sizeof(remote)); + + remote.sun_family = AF_UNIX; + len = sizeof(remote.sun_family); + len += snprintf(remote.sun_path, sizeof(remote.sun_path), "%s", address); + + result = connect(s, (struct sockaddr*) &remote, sizeof(remote)); + if (0 > result) + { + if ((ENOENT == errno) || (ECONNREFUSED == errno)) + { + DPRINTFD("Failed to connect to %s, error=%s.", address, + strerror(errno)); + return GUEST_API_TRY_AGAIN; + } else { + DPRINTFE("Failed to connect to %s, error=%s.", address, + strerror(errno)); + return GUEST_API_FAILED; + } + } + + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Send +// ===================== +GuestApiErrorT guest_api_unix_send( int s, void* msg, int msg_size ) +{ + int result; + + result = write(s, msg, msg_size); + if (0 > result) + { + if (errno == EPIPE) + { + DPRINTFI("Failed to write to socket, error=%s.", strerror(errno)); + return GUEST_API_TRY_AGAIN; + } else { + DPRINTFE("Failed to write to socket, error=%s.", strerror(errno)); + return GUEST_API_FAILED; + } + } + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Receive +// ======================== +GuestApiErrorT guest_api_unix_receive( + int s, void* msg_buf, int msg_buf_size, int* msg_size ) +{ + int result; + + result = read(s, msg_buf, msg_buf_size); + if (0 > result) + { + if (EINTR == errno) + { + DPRINTFD("Interrupted on socket read, error=%s.", strerror(errno)); + return GUEST_API_INTERRUPTED; + } else if (ECONNRESET == errno) { + DPRINTFD("Peer connection reset, error=%s.", strerror(errno)); + *msg_size = 0; + return GUEST_API_OKAY; + } else{ + DPRINTFE("Failed to read from socket, error=%s.", strerror(errno)); + return GUEST_API_FAILED; + } + } else if (0 == result) { + DPRINTFD("No message received from socket."); + *msg_size = 0; + return GUEST_API_OKAY; + } else { + DPRINTFV("Received message, msg_size=%i.", result); + *msg_size = result; + } + + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Open +// ===================== +GuestApiErrorT guest_api_unix_open( int* s ) +{ + int sock; + int reuse_addr = 1; + struct sockaddr_un local; + int result; + + *s = -1; + memset(&local, 0, sizeof(local)); + + sock = socket(AF_UNIX, SOCK_STREAM, 0); + if (0 > sock) + { + DPRINTFE("Failed to open socket, error=%s.", strerror(errno)); + return GUEST_API_FAILED; + } + + result = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuse_addr, + sizeof(reuse_addr)); + if (0 > result) + { + DPRINTFE("Failed to set socket option (REUSEADDR), error=%s.", + strerror(errno)); + close(sock); + return GUEST_API_FAILED; + } + + result = fcntl(sock, F_SETFD, FD_CLOEXEC); + if (0 > result) + { + DPRINTFE("Failed to set to close on exec, error=%s.", strerror(errno)); + close(sock); + return GUEST_API_FAILED; + } + + result = fcntl(sock, F_GETFL); + if (0 > result) + { + DPRINTFE("Failed to get socket options, error=%s.", strerror(errno)); + close(sock); + return GUEST_API_FAILED; + } + + result = fcntl(sock, F_SETFL, result | O_NONBLOCK); + if (0 > result) + { + DPRINTFE("Failed to set socket options, error=%s.", strerror(errno)); + close(sock); + return GUEST_API_FAILED; + } + + *s = sock; + + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Close +// ====================== +GuestApiErrorT guest_api_unix_close( int s ) +{ + if (0 <= s) + close(s); + + return GUEST_API_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.h b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.h new file mode 100755 index 00000000..6e0b71c5 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_api_unix.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_API_UNIX_H__ +#define __GUEST_API_UNIX_H__ + +#include "guest_api_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// **************************************************************************** +// Guest API Unix - Connect +// ======================== +extern GuestApiErrorT guest_api_unix_connect( int s, char* address ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Send +// ===================== +extern GuestApiErrorT guest_api_unix_send( int s, void* msg, int msg_size ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Receive +// ======================== +extern GuestApiErrorT guest_api_unix_receive( + int s, void* msg_buf, int msg_buf_size, int* msg_size ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Open +// ===================== +extern GuestApiErrorT guest_api_unix_open( int* s ); +// **************************************************************************** + +// **************************************************************************** +// Guest API Unix - Close +// ====================== +extern GuestApiErrorT guest_api_unix_close( int s ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_API_UNIX_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.c b/guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.c new file mode 100755 index 00000000..99e7d31a --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.c @@ -0,0 +1,748 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "guest_heartbeat_api.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "guest_api_types.h" +#include "guest_api_debug.h" +#include "guest_api_unix.h" +#include "guest_api_stream.h" + +#include "guest_heartbeat_api_msg_defs.h" + +static int _sock = -1; +static bool _connected = false; +static uint32_t _msg_sequence; +static GuestApiStreamT _stream; +static GuestHeartbeatApiCallbacksT _callbacks; + +// **************************************************************************** +// Guest Heartbeat API - Action String +// =================================== +const char* guest_heartbeat_api_action_str( GuestHeartbeatApiActionT action ) +{ + switch (action) + { + case GUEST_HEARTBEAT_API_ACTION_NONE: return "none"; + case GUEST_HEARTBEAT_API_ACTION_REBOOT: return "reboot"; + case GUEST_HEARTBEAT_API_ACTION_STOP: return "stop"; + case GUEST_HEARTBEAT_API_ACTION_LOG: return "log"; + default: + return "action-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Event String +// ================================== +const char* guest_heartbeat_api_event_str( GuestHeartbeatApiEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_API_EVENT_STOP: return "stop"; + case GUEST_HEARTBEAT_API_EVENT_REBOOT: return "reboot"; + case GUEST_HEARTBEAT_API_EVENT_SUSPEND: return "suspend"; + case GUEST_HEARTBEAT_API_EVENT_PAUSE: return "pause"; + case GUEST_HEARTBEAT_API_EVENT_UNPAUSE: return "unpause"; + case GUEST_HEARTBEAT_API_EVENT_RESUME: return "resume"; + case GUEST_HEARTBEAT_API_EVENT_RESIZE_BEGIN: return "resize-begin"; + case GUEST_HEARTBEAT_API_EVENT_RESIZE_END: return "resize-end"; + case GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_BEGIN: return "live-migrate-begin"; + case GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_END: return "live-migrate-end"; + case GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_BEGIN: return "cold-migrate-begin"; + case GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_END: return "cold-migrate-end"; + default: + return "event-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Notify String +// =================================== +const char* guest_heartbeat_api_notify_str( + GuestHeartbeatApiNotifyTypeT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_API_NOTIFY_TYPE_REVOCABLE: return "revocable"; + case GUEST_HEARTBEAT_API_NOTIFY_TYPE_IRREVOCABLE: return "irrevocable"; + default: + return "notify-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Vote Result String +// ======================================== +const char* guest_heartbeat_api_vote_result_str( + GuestHeartbeatApiVoteResultT vote_result ) +{ + switch (vote_result) + { + case GUEST_HEARTBEAT_API_VOTE_RESULT_ACCEPT: return "accept"; + case GUEST_HEARTBEAT_API_VOTE_RESULT_REJECT: return "reject"; + case GUEST_HEARTBEAT_API_VOTE_RESULT_COMPLETE: return "complete"; + default: + return "vote-???"; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Action (Host to Network) +// ============================================== +static GuestHeartbeatApiMsgActionT guest_heartbeat_api_action_hton( + GuestHeartbeatApiActionT action ) +{ + switch (action) + { + case GUEST_HEARTBEAT_API_ACTION_NONE: + return GUEST_HEARTBEAT_API_MSG_ACTION_NONE; + case GUEST_HEARTBEAT_API_ACTION_REBOOT: + return GUEST_HEARTBEAT_API_MSG_ACTION_REBOOT; + case GUEST_HEARTBEAT_API_ACTION_STOP: + return GUEST_HEARTBEAT_API_MSG_ACTION_STOP; + case GUEST_HEARTBEAT_API_ACTION_LOG: + return GUEST_HEARTBEAT_API_MSG_ACTION_LOG; + default: + DPRINTFE("Unknown action %i.", action); + return GUEST_HEARTBEAT_API_MSG_ACTION_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Event (Host to Network) +// ============================================= +static GuestHeartbeatApiMsgEventT guest_heartbeat_api_event_hton( + GuestHeartbeatApiEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_API_EVENT_STOP: + return GUEST_HEARTBEAT_API_MSG_EVENT_STOP; + case GUEST_HEARTBEAT_API_EVENT_REBOOT: + return GUEST_HEARTBEAT_API_MSG_EVENT_REBOOT; + case GUEST_HEARTBEAT_API_EVENT_SUSPEND: + return GUEST_HEARTBEAT_API_MSG_EVENT_SUSPEND; + case GUEST_HEARTBEAT_API_EVENT_PAUSE: + return GUEST_HEARTBEAT_API_MSG_EVENT_PAUSE; + case GUEST_HEARTBEAT_API_EVENT_UNPAUSE: + return GUEST_HEARTBEAT_API_MSG_EVENT_UNPAUSE; + case GUEST_HEARTBEAT_API_EVENT_RESUME: + return GUEST_HEARTBEAT_API_MSG_EVENT_RESUME; + case GUEST_HEARTBEAT_API_EVENT_RESIZE_BEGIN: + return GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_BEGIN; + case GUEST_HEARTBEAT_API_EVENT_RESIZE_END: + return GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_END; + case GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_END: + return GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_END; + case GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_END: + return GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_END; + default: + DPRINTFE("Unknown event %i.", event); + return GUEST_HEARTBEAT_API_MSG_EVENT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Event (Network to Host) +// ============================================= +static GuestHeartbeatApiEventT guest_heartbeat_api_event_ntoh( + GuestHeartbeatApiMsgEventT event ) +{ + switch (event) + { + case GUEST_HEARTBEAT_API_MSG_EVENT_STOP: + return GUEST_HEARTBEAT_API_EVENT_STOP; + case GUEST_HEARTBEAT_API_MSG_EVENT_REBOOT: + return GUEST_HEARTBEAT_API_EVENT_REBOOT; + case GUEST_HEARTBEAT_API_MSG_EVENT_SUSPEND: + return GUEST_HEARTBEAT_API_EVENT_SUSPEND; + case GUEST_HEARTBEAT_API_MSG_EVENT_PAUSE: + return GUEST_HEARTBEAT_API_EVENT_PAUSE; + case GUEST_HEARTBEAT_API_MSG_EVENT_UNPAUSE: + return GUEST_HEARTBEAT_API_EVENT_UNPAUSE; + case GUEST_HEARTBEAT_API_MSG_EVENT_RESUME: + return GUEST_HEARTBEAT_API_EVENT_RESUME; + case GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_BEGIN: + return GUEST_HEARTBEAT_API_EVENT_RESIZE_BEGIN; + case GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_END: + return GUEST_HEARTBEAT_API_EVENT_RESIZE_END; + case GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_END: + return GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_END; + case GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_BEGIN: + return GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_BEGIN; + case GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_END: + return GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_END; + default: + DPRINTFE("Unknown event %i.", event); + return GUEST_HEARTBEAT_API_EVENT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Notify (Host to Network) +// ============================================== +static GuestHeartbeatApiMsgNotifyT guest_heartbeat_api_notify_hton( + GuestHeartbeatApiNotifyTypeT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_API_NOTIFY_TYPE_REVOCABLE: + return GUEST_HEARTBEAT_API_MSG_NOTIFY_REVOCABLE; + case GUEST_HEARTBEAT_API_NOTIFY_TYPE_IRREVOCABLE: + return GUEST_HEARTBEAT_API_MSG_NOTIFY_IRREVOCABLE; + default: + DPRINTFE("Unknown notify type %i.", notify); + return GUEST_HEARTBEAT_API_MSG_NOTIFY_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Notify (Network to Host) +// ============================================== +static GuestHeartbeatApiNotifyTypeT guest_heartbeat_api_notify_ntoh( + GuestHeartbeatApiMsgNotifyT notify ) +{ + switch (notify) + { + case GUEST_HEARTBEAT_API_MSG_NOTIFY_REVOCABLE: + return GUEST_HEARTBEAT_API_NOTIFY_TYPE_REVOCABLE; + case GUEST_HEARTBEAT_API_MSG_NOTIFY_IRREVOCABLE: + return GUEST_HEARTBEAT_API_NOTIFY_TYPE_IRREVOCABLE; + default: + DPRINTFE("Unknown notify type %i.", notify); + return GUEST_HEARTBEAT_API_NOTIFY_TYPE_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Vote Result (Host to Network) +// =================================================== +static GuestHeartbeatApiMsgVoteResultT guest_heartbeat_api_vote_result_hton( + GuestHeartbeatApiVoteResultT vote_result ) +{ + switch (vote_result) + { + case GUEST_HEARTBEAT_API_VOTE_RESULT_ACCEPT: + return GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_ACCEPT; + case GUEST_HEARTBEAT_API_VOTE_RESULT_REJECT: + return GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_REJECT; + case GUEST_HEARTBEAT_API_VOTE_RESULT_COMPLETE: + return GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_COMPLETE; + default: + DPRINTFE("Unknown vote result %i.", vote_result); + return GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_UNKNOWN; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Register +// ============================== +GuestApiErrorT guest_heartbeat_api_register( + GuestHeartbeatApiInitDataT* init_data ) +{ + GuestHeartbeatApiMsgT msg; + GuestHeartbeatApiMsgHeaderT* hdr = &(msg.header); + GuestHeartbeatApiMsgInitT* bdy = &(msg.body.init); + GuestApiErrorT error; + + if (0 > _sock) + { + error = guest_api_unix_open(&_sock); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to open unix socket, error=%s.", + guest_api_error_str(error)); + return error; + } + } + + if (!_connected) + { + error = guest_api_unix_connect(_sock, GUEST_HEARTBEAT_API_MSG_ADDRESS); + if (GUEST_API_OKAY != error) + { + if (GUEST_API_TRY_AGAIN != error) + { + DPRINTFD("Failed to connect unix socket, error=%s.", + guest_api_error_str(error)); + return error; + } else { + DPRINTFE("Failed to connect unix socket, error=%s.", + guest_api_error_str(error)); + return error; + } + } + + _connected = true; + } + + memset(&msg, 0, sizeof(msg)); + + memcpy(&(hdr->magic), GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE); + hdr->version = GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT; + hdr->revision = GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT; + hdr->msg_type = GUEST_HEARTBEAT_API_MSG_INIT; + hdr->sequence = ++_msg_sequence; + hdr->size = sizeof(msg); + + snprintf(bdy->application_name, + GUEST_HEARTBEAT_API_MSG_MAX_APPLICATION_NAME_SIZE, "%s", + init_data->application_name); + bdy->heartbeat_interval_ms = init_data->heartbeat_interval_ms; + bdy->vote_secs = init_data->vote_secs; + bdy->shutdown_notice_secs = init_data->shutdown_notice_secs; + bdy->suspend_notice_secs = init_data->suspend_notice_secs; + bdy->resume_notice_secs = init_data->resume_notice_secs; + bdy->corrective_action + = guest_heartbeat_api_action_hton(init_data->corrective_action); + + error = guest_api_unix_send(_sock, &msg, sizeof(msg)); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat register message, error=%s.", + guest_api_error_str(error)); + return error; + } + + DPRINTFD("Sent register request."); + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Deregister +// ================================ +GuestApiErrorT guest_heartbeat_api_deregister( char log_msg[] ) +{ + GuestHeartbeatApiMsgT msg; + GuestHeartbeatApiMsgHeaderT* hdr = &(msg.header); + GuestHeartbeatApiMsgFinalT* bdy = &(msg.body.final); + GuestApiErrorT error; + + if (!_connected) + { + DPRINTFD("Not connected."); + return GUEST_API_OKAY; + } + + memset(&msg, 0, sizeof(msg)); + + memcpy(&(hdr->magic), GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE); + hdr->version = GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT; + hdr->revision = GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT; + hdr->msg_type = GUEST_HEARTBEAT_API_MSG_FINAL; + hdr->sequence = ++_msg_sequence; + hdr->size = sizeof(msg); + + snprintf(bdy->log_msg, GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE, "%s", log_msg); + + error = guest_api_unix_send(_sock, &msg, sizeof(msg)); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat api deregister message, " + "error=%s.", guest_api_error_str(error)); + return error; + } + + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Send Action Response +// ========================================== +GuestApiErrorT guest_heartbeat_api_send_action_response( + int invocation_id, GuestHeartbeatApiEventT event, + GuestHeartbeatApiNotifyTypeT notify_type, + GuestHeartbeatApiVoteResultT vote_result, char log_msg[] ) +{ + GuestHeartbeatApiMsgT msg; + GuestHeartbeatApiMsgHeaderT* hdr = &(msg.header); + GuestHeartbeatApiMsgActionResponseT* bdy = &(msg.body.action_response); + GuestApiErrorT error; + + if (!_connected) + { + DPRINTFD("Not connected."); + return GUEST_API_OKAY; + } + + memset(&msg, 0, sizeof(msg)); + + memcpy(&(hdr->magic), GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE); + hdr->version = GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT; + hdr->revision = GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT; + hdr->msg_type = GUEST_HEARTBEAT_API_MSG_ACTION_RESPONSE; + hdr->sequence = ++_msg_sequence; + hdr->size = sizeof(msg); + + bdy->invocation_id = invocation_id; + bdy->event_type = guest_heartbeat_api_event_hton(event); + bdy->notification_type = guest_heartbeat_api_notify_hton(notify_type); + bdy->vote_result = guest_heartbeat_api_vote_result_hton(vote_result); + snprintf(bdy->log_msg, GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE, "%s", log_msg); + + error = guest_api_unix_send(_sock, &msg, sizeof(msg)); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat api action response message, " + "error=%s.", guest_api_error_str(error)); + return error; + } + + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Api - Receive Init Ack +// ====================================== +static void guest_heartbeat_api_recv_init_ack( void ) +{ + uint32_t accepted; + char* ptr = _stream.bytes + sizeof(GuestHeartbeatApiMsgHeaderT); + + accepted = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + + DPRINTFI("Registration %s.", accepted ? "accepted" : "not accepted"); + + if (NULL != _callbacks.register_state) + _callbacks.register_state(accepted); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Api - Receive Challenge +// ======================================= +static void guest_heartbeat_api_recv_challenge( void ) +{ + bool health = true; + GuestHeartbeatApiActionT corrective_action = GUEST_HEARTBEAT_API_ACTION_NONE; + char log_msg[GUEST_HEARTBEAT_API_LOG_MAX] = ""; + int heartbeat_challenge; + GuestHeartbeatApiMsgT msg; + GuestHeartbeatApiMsgHeaderT* hdr = &(msg.header); + GuestHeartbeatApiMsgChallengeResponseT* bdy = &(msg.body.challenge_response); + GuestApiErrorT error; + char* ptr = _stream.bytes + sizeof(GuestHeartbeatApiMsgHeaderT); + + heartbeat_challenge = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + + if (NULL != _callbacks.health_check) + _callbacks.health_check(&health, &corrective_action, log_msg); + + memset(&msg, 0, sizeof(msg)); + + memcpy(&(hdr->magic), GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE); + hdr->version = GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT; + hdr->revision = GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT; + hdr->msg_type = GUEST_HEARTBEAT_API_MSG_CHALLENGE_RESPONSE; + hdr->sequence = ++_msg_sequence; + hdr->size = sizeof(msg); + + bdy->heartbeat_response = heartbeat_challenge; + bdy->health = health; + bdy->corrective_action + = guest_heartbeat_api_action_hton(corrective_action); + snprintf(bdy->log_msg, GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE, "%s", log_msg); + + error = guest_api_unix_send(_sock, &msg, sizeof(msg)); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to send guest heartbeat api challenge response " + "message, error=%s.", guest_api_error_str(error)); + return; + } + + DPRINTFD("Sent guest heartbeat api challenge response sent."); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat Api - Receive Action Notify +// =========================================== +static void guest_heartbeat_api_recv_action_notify( void ) +{ + int invocation_id; + GuestHeartbeatApiEventT event; + GuestHeartbeatApiNotifyTypeT notify_type; + char* ptr = _stream.bytes + sizeof(GuestHeartbeatApiMsgHeaderT); + + invocation_id = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + event = guest_heartbeat_api_event_ntoh(*(uint32_t*) ptr); + ptr += sizeof(uint32_t); + notify_type = guest_heartbeat_api_notify_ntoh(*(uint32_t*) ptr); + ptr += sizeof(uint32_t); + + if (NULL != _callbacks.action_notify) + _callbacks.action_notify(invocation_id, event, notify_type); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Dispatch +// ============================== +void guest_heartbeat_api_dispatch( int selobj ) +{ + static bool have_start = false; + static bool have_header = false; + static GuestHeartbeatApiMsgHeaderT hdr; + + bool more; + int bytes_received; + GuestApiErrorT error; + + if (selobj != _sock) + return; + + error = guest_api_unix_receive(_sock, _stream.end_ptr, _stream.avail, + &bytes_received); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to receive message, error=%s.", + guest_api_error_str(error)); + return; + } + + if (0 == bytes_received) + { + DPRINTFI("Registration dropped."); + _connected = false; + + error = guest_api_unix_close(_sock); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to close unix socket, error=%s.", + guest_api_error_str(error)); + } + _sock = -1; + + if (NULL != _callbacks.register_state) + _callbacks.register_state(false); + } + + DPRINTFV("Bytes received is %i.", bytes_received); + + _stream.end_ptr += bytes_received; + _stream.avail -= bytes_received; + _stream.size += bytes_received; + + do + { + more = false; + + if (!have_start) + { + memset(&hdr, 0, sizeof(GuestHeartbeatApiMsgHeaderT)); + have_start = guest_api_stream_get_next(&_stream); + } + + if (have_start && !have_header) + { + if (sizeof(GuestHeartbeatApiMsgHeaderT) <= _stream.size) + { + char *ptr = _stream.bytes + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE; + + hdr.version = *(uint8_t*) ptr; + ptr += sizeof(uint8_t); + hdr.revision = *(uint8_t*) ptr; + ptr += sizeof(uint8_t); + hdr.msg_type = *(uint16_t*) ptr; + ptr += sizeof(uint16_t); + hdr.sequence = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + hdr.size = *(uint32_t*) ptr; + ptr += sizeof(uint32_t); + + DPRINTFD("Message header: version=%i, revision=%i, " + "msg_type=%i, sequence=%u, size=%u", hdr.version, + hdr.revision, hdr.msg_type, hdr.sequence, hdr.size); + + if (GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT == hdr.version) + { + have_header = true; + } else { + have_start = false; + have_header = false; + guest_api_stream_advance(GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE, + &_stream); + more = true; + } + } + } + + if (have_start && have_header) + { + if (sizeof(GuestHeartbeatApiMsgT) <= _stream.size) + { + switch (hdr.msg_type) + { + case GUEST_HEARTBEAT_API_MSG_INIT_ACK: + guest_heartbeat_api_recv_init_ack(); + break; + + case GUEST_HEARTBEAT_API_MSG_CHALLENGE: + guest_heartbeat_api_recv_challenge(); + break; + + case GUEST_HEARTBEAT_API_MSG_ACTION_NOTIFY: + guest_heartbeat_api_recv_action_notify(); + break; + + default: + DPRINTFV("Unknown message type %i.", + (int) hdr.msg_type); + break; + } + + have_start = false; + have_header = false; + guest_api_stream_advance(sizeof(GuestHeartbeatApiMsgT), + &_stream); + more = true; + } + } + } while (more); + + if (0 >= _stream.avail) + guest_api_stream_reset(&_stream); +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Get Selection Object +// ========================================== +int guest_heartbeat_api_get_selobj( void ) +{ + return _sock; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Initialize +// ================================ +GuestApiErrorT guest_heartbeat_api_initialize( + GuestHeartbeatApiCallbacksT* callbacks ) +{ + int stream_size; + GuestApiErrorT error; + + if ((NULL == callbacks->register_state) || + (NULL == callbacks->health_check) || + (NULL == callbacks->action_notify)) + { + DPRINTFE("Not all callbacks are valid."); + return GUEST_API_FAILED; + } + + _sock = -1; + + stream_size = sizeof(GuestHeartbeatApiMsgT)*4; + if (8192 > stream_size) + stream_size = 8192; + + error = guest_api_stream_setup(GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE, + GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE, + stream_size, &_stream); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to setup stream, error=%s.", + guest_api_error_str(error)); + return error; + } + + memcpy(&_callbacks, callbacks, sizeof(_callbacks)); + return GUEST_API_OKAY; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Finalize +// ============================== +GuestApiErrorT guest_heartbeat_api_finalize( void ) +{ + GuestApiErrorT error; + + memset(&_callbacks, 0, sizeof(_callbacks)); + + error = guest_api_stream_release(&_stream); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed release stream, error=%s.", + guest_api_error_str(error)); + } + + if (0 <= _sock) + { + error = guest_api_unix_close(_sock); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to close unix socket, error=%s.", + guest_api_error_str(error)); + } + _sock = -1; + } + + return GUEST_API_OKAY; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.h b/guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.h new file mode 100755 index 00000000..5f03365b --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/guest_heartbeat_api.h @@ -0,0 +1,330 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HERATBEAT_API_H__ +#define __GUEST_HEARTBEAT_API_H__ + +#include + +#include "guest_api_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_HEARTBEAT_API_APPLICATION_NAME_MAX 40 +#define GUEST_HEARTBEAT_API_LOG_MAX 192 + +typedef enum { + + GUEST_HEARTBEAT_API_ACTION_UNKNOWN, + GUEST_HEARTBEAT_API_ACTION_NONE, + GUEST_HEARTBEAT_API_ACTION_REBOOT, + GUEST_HEARTBEAT_API_ACTION_STOP, + GUEST_HEARTBEAT_API_ACTION_LOG, + GUEST_HEARTBEAT_API_ACTION_MAX, +} GuestHeartbeatApiActionT; + +typedef enum { + GUEST_HEARTBEAT_API_EVENT_UNKNOWN, + GUEST_HEARTBEAT_API_EVENT_STOP, + GUEST_HEARTBEAT_API_EVENT_REBOOT, + GUEST_HEARTBEAT_API_EVENT_SUSPEND, + GUEST_HEARTBEAT_API_EVENT_PAUSE, + GUEST_HEARTBEAT_API_EVENT_UNPAUSE, + GUEST_HEARTBEAT_API_EVENT_RESUME, + GUEST_HEARTBEAT_API_EVENT_RESIZE_BEGIN, + GUEST_HEARTBEAT_API_EVENT_RESIZE_END, + GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_BEGIN, + GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_END, + GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_BEGIN, + GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_END, + GUEST_HEARTBEAT_API_EVENT_MAX, +} GuestHeartbeatApiEventT; + +typedef enum { + GUEST_HEARTBEAT_API_NOTIFY_TYPE_UNKNOWN, + GUEST_HEARTBEAT_API_NOTIFY_TYPE_REVOCABLE, // vote on an action + GUEST_HEARTBEAT_API_NOTIFY_TYPE_IRREVOCABLE, // notification of an action + GUEST_HEARTBEAT_API_NOTIFY_TYPE_MAX, +} GuestHeartbeatApiNotifyTypeT; + +typedef enum { +// + GUEST_HEARTBEAT_API_VOTE_RESULT_UNKNOWN, + GUEST_HEARTBEAT_API_VOTE_RESULT_ACCEPT, // vote to accept an action + GUEST_HEARTBEAT_API_VOTE_RESULT_REJECT, // vote to reject an action + GUEST_HEARTBEAT_API_VOTE_RESULT_COMPLETE, // ready for action + GUEST_HEARTBEAT_API_VOTE_RESULT_MAX, +} GuestHeartbeatApiVoteResultT; + +// **************************************************************************** +// Guest Heartbeat API - Initialization Data +// ========================================= +// Description: +// Configuration data used on registration. +// +// Fields: +// application_name name of the application, used for logging +// heartbeat_interval_ms the interval for heartbeat challenges +// vote_secs maximum time to wait for a vote to complete +// shutdown_notice_secs maximum time to wait for a shutdown prep +// suspend_notice_secs maximum time to wait for a suspend prep +// resume_notice_secs maximum time to wait for a resume prep +// corrective_action corrective action on heartbeat timeouts +// +// Note: minimum heartbeat interval is 400 milliseconds. Anything below this +// interval will cause the registration to be rejected. +// +typedef struct { + char application_name[GUEST_HEARTBEAT_API_APPLICATION_NAME_MAX]; + int heartbeat_interval_ms; + int vote_secs; + int shutdown_notice_secs; + int suspend_notice_secs; + int resume_notice_secs; + GuestHeartbeatApiActionT corrective_action; +} GuestHeartbeatApiInitDataT; +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Register State Callback +// ============================================= +// Description: +// Called when the registration with the Guest-Client changes. Situations +// this callback can be invoked are the following: +// - Guest-Client accepts the registration, +// - Guest-Client rejects the registration, and +// - Guest-Client connection fails. +// +// If the registration state is False, the application needs to register +// again with the Guest-Client. +// +// Parameters: +// state the registration state of the application. +// +typedef void (*GuestHeartbeatApiRegisterStateCallbackT) + (bool state); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Health Check Callback +// =========================================== +// Description: +// Called by the Guest-Client to request the current health of the +// application. +// +// Parameters: +// health the health of the application +// corrective_action the corrective action to be taken when unhealthy +// log_msg an indication of why the application is unhealthy. +// +typedef void (*GuestHeartbeatApiHealthCheckCallbackT) + (bool* health, GuestHeartbeatApiActionT* corrective_action, + char log_msg[]); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Action Notify Callback +// ============================================ +// Description: +// Called when the Guest-Client wants to notify the application of an +// action. The notification type indicates if this is a vote or a +// notification. +// +// Parameters: +// invocation_id the unique identifier for the action. +// event the type of event for the action. +// notify_type the type of notification for the action. +// +typedef void (*GuestHeartbeatApiActionNotifyCallbackT) + (int invocation_id, GuestHeartbeatApiEventT event, + GuestHeartbeatApiNotifyTypeT notify_type); +// **************************************************************************** + +typedef struct { + GuestHeartbeatApiRegisterStateCallbackT register_state; + GuestHeartbeatApiHealthCheckCallbackT health_check; + GuestHeartbeatApiActionNotifyCallbackT action_notify; +} GuestHeartbeatApiCallbacksT; + +// **************************************************************************** +// Guest Heartbeat API - Action String +// =================================== +extern const char* guest_heartbeat_api_action_str( + GuestHeartbeatApiActionT action ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Event String +// ================================== +extern const char* guest_heartbeat_api_event_str( + GuestHeartbeatApiEventT event ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Notify String +// =================================== +extern const char* guest_heartbeat_api_notify_str( + GuestHeartbeatApiNotifyTypeT notify ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Vote Result String +// ======================================== +extern const char* guest_heartbeat_api_vote_result_str( + GuestHeartbeatApiVoteResultT vote_result ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Register +// ============================== +// Description: +// Sends a registration request to the Guest-Client. A try-again can be +// returned which indicates that registration should be attempted again +// at a later time. +// +// Parameters: +// init_data configuration parameters and timeout values for +// this application. +// +// Returns: +// GUEST_API_OKAY on success, GUEST_API_TRY_AGAIN if Guest-Client could +// not be reached, otherwise failure. +// +extern GuestApiErrorT guest_heartbeat_api_register( + GuestHeartbeatApiInitDataT* init_data ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Deregister +// ================================ +// Description: +// Sends a deregister to the Guest-Client. +// +// Parameters: +// log_msg indication of the reason for the de-registration. +// +// Returns: +// GUEST_API_OKAY on success, otherwise failure. +// +extern GuestApiErrorT guest_heartbeat_api_deregister( char log_msg[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Send Action Response +// ========================================== +// Description: +// Sends an action response to the Guest-Client indicating the action +// is accepted, rejected or completed. +// +// Parameters: +// invocation_id the unique identifier from the action callback. +// event the type of event from the action callback. +// notify_type the type of notification from the action callback. +// vote_result indication of acceptance of the action. +// log_msg an indication of why the action was rejected. +// +// Returns: +// GUEST_API_OKAY on success, otherwise failure. +// +extern GuestApiErrorT guest_heartbeat_api_send_action_response( + int invocation_id, GuestHeartbeatApiEventT event, + GuestHeartbeatApiNotifyTypeT notify_type, + GuestHeartbeatApiVoteResultT vote_result, char log_msg[] ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Dispatch +// ============================== +// Description: +// Called when the selection object returned by guest_heartbeat_api_get_selobj +// becomes readable. +// +// Parameters: +// selobj the selection object that has become readable. +// +// Returns: +// Nothing +// +extern void guest_heartbeat_api_dispatch( int selobj ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Get Selection Object +// ========================================== +// Description: +// Returns a selection object that can be used with poll or select. +// +// Parameters: +// None +// +// Returns: +// A valid selection object, otherwise -1. +// +extern int guest_heartbeat_api_get_selobj( void ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Initialize +// ================================ +// Description: +// Initialize the Guest Heartbeat API library for use. +// +// Parameters: +// callbacks a listing of callbacks for receiving registration +// state changes, health checks, and action notifications +// (all are required to be non-NULL). +// +// Returns: +// GUEST_API_OKAY on success, otherwise failure. +// +extern GuestApiErrorT guest_heartbeat_api_initialize( + GuestHeartbeatApiCallbacksT* callbacks ); +// **************************************************************************** + +// **************************************************************************** +// Guest Heartbeat API - Finalize +// ============================== +// Description: +// Finalize the Guest Heartbeat API library. +// +// Parameters: +// None +// +// Returns: +// GUEST_API_OKAY on success, otherwise failure. +// +extern GuestApiErrorT guest_heartbeat_api_finalize( void ); +// **************************************************************************** + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_API_H__ */ diff --git a/guest-client/guest-client-3.0.1/guest_client_api/sample_guest_app.c b/guest-client/guest-client-3.0.1/guest_client_api/sample_guest_app.c new file mode 100755 index 00000000..c9ae5b77 --- /dev/null +++ b/guest-client/guest-client-3.0.1/guest_client_api/sample_guest_app.c @@ -0,0 +1,360 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include +#include +#include +#include +#include + +#include "guest_api_types.h" +#include "guest_api_debug.h" +#include "guest_heartbeat_api.h" + +static int _heartbeat_selobj = -1; +static bool _heartbeat_registered = false; +static bool _heartbeat_registering = false; +static char _application_name[40] = "sample-guest-app"; +static GuestHeartbeatApiActionT _corrective_action; + +static sig_atomic_t _stay_on = 1; + +// **************************************************************************** +// Guest Application - Register State Callback +// =========================================== +static void guest_app_register_state_callback( bool state ) +{ + if (state) + _heartbeat_registering = false; + + _heartbeat_registered = state; +} +// **************************************************************************** + +// **************************************************************************** +// Guest Application - Health Check Callback +// ========================================= +static void guest_app_health_check_callback( + bool* healthy, GuestHeartbeatApiActionT* corrective_action, + char log_msg[GUEST_HEARTBEAT_API_LOG_MAX] ) +{ + char filename[80]; + int result; + + snprintf(filename, sizeof(filename), "/tmp/%s_unhealthy", + _application_name); + + result = access(filename, F_OK); + if (0 == result) + { + *healthy = false; + *corrective_action = _corrective_action; + snprintf(log_msg, GUEST_HEARTBEAT_API_LOG_MAX, "File %s exists.", + filename); + } else { + *healthy = true; + *corrective_action = GUEST_HEARTBEAT_API_ACTION_NONE; + log_msg[0] = '\0'; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Application - Action Notify Callback +// ========================================== +static void guest_app_action_notify_callback( + int invocation_id, GuestHeartbeatApiEventT event, + GuestHeartbeatApiNotifyTypeT notify_type ) +{ + char filename[80]; + GuestHeartbeatApiVoteResultT vote_result; + char log_msg[GUEST_HEARTBEAT_API_LOG_MAX]; + GuestApiErrorT error; + int result; + + snprintf(filename, sizeof(filename), "/tmp/%s_event_timeout", + _application_name); + + result = access(filename, F_OK); + if (0 == result) + return; + + if (GUEST_HEARTBEAT_API_NOTIFY_TYPE_REVOCABLE == notify_type) + { + switch (event) + { + case GUEST_HEARTBEAT_API_EVENT_STOP: + snprintf(filename, sizeof(filename), + "/tmp/%s_vote_no_to_stop", _application_name); + break; + + case GUEST_HEARTBEAT_API_EVENT_REBOOT: + snprintf(filename, sizeof(filename), + "/tmp/%s_vote_no_to_reboot", _application_name); + break; + case GUEST_HEARTBEAT_API_EVENT_SUSPEND: + case GUEST_HEARTBEAT_API_EVENT_PAUSE: + snprintf(filename, sizeof(filename), + "/tmp/%s_vote_no_to_suspend", _application_name); + break; + case GUEST_HEARTBEAT_API_EVENT_RESIZE_BEGIN: + snprintf(filename, sizeof(filename), + "/tmp/%s_vote_no_to_resize", _application_name); + break; + case GUEST_HEARTBEAT_API_EVENT_LIVE_MIGRATE_BEGIN: + case GUEST_HEARTBEAT_API_EVENT_COLD_MIGRATE_BEGIN: + snprintf(filename, sizeof(filename), + "/tmp/%s_vote_no_to_migrate", _application_name); + break; + default: + DPRINTFE("Should never be asked to vote on event %s.", + guest_heartbeat_api_event_str(event)); + return; + } + + result = access(filename, F_OK); + if (0 == result) + { + vote_result = GUEST_HEARTBEAT_API_VOTE_RESULT_REJECT; + snprintf(log_msg, GUEST_HEARTBEAT_API_LOG_MAX, "File %s exists.", + filename); + } else { + vote_result = GUEST_HEARTBEAT_API_VOTE_RESULT_ACCEPT; + log_msg[0] = '\0'; + } + } else { + vote_result = GUEST_HEARTBEAT_API_VOTE_RESULT_COMPLETE; + } + + error = guest_heartbeat_api_send_action_response(invocation_id, event, + notify_type, vote_result, log_msg); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to send action response, error=%s.", + guest_api_error_str(error)); + return; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Application - Signal Handler +// ================================== +static void guest_app_signal_handler( int signum ) +{ + switch (signum) + { + case SIGINT: + case SIGTERM: + case SIGQUIT: + _stay_on = 0; + break; + + case SIGCONT: + DPRINTFD("Ignoring signal SIGCONT (%i).", signum); + break; + + case SIGPIPE: + DPRINTFD("Ignoring signal SIGPIPE (%i).", signum); + break; + + default: + DPRINTFD("Signal (%i) ignored.", signum); + break; + } +} +// **************************************************************************** + +// **************************************************************************** +// Guest Application - Main +// ======================== +int main( int argc, char *argv[], char *envp[] ) +{ + GuestHeartbeatApiCallbacksT callbacks; + GuestApiErrorT error; + + error = guest_api_debug_initialize("Guest-Application"); + if (GUEST_API_OKAY != error) + { + printf("Debug initialization failed, error=%s.\n", + guest_api_error_str(error)); + return EXIT_FAILURE; + } + + DPRINTFI("Starting."); + + signal(SIGINT, guest_app_signal_handler); + signal(SIGTERM, guest_app_signal_handler); + signal(SIGQUIT, guest_app_signal_handler); + signal(SIGCONT, guest_app_signal_handler); + signal(SIGPIPE, guest_app_signal_handler); + + _corrective_action = GUEST_HEARTBEAT_API_ACTION_REBOOT; + + unsigned int arg_i; + for (arg_i=1; arg_i < argc; ++arg_i) + { + if (0 == strcmp("--name", argv[arg_i])) + { + arg_i++; + if (arg_i < argc) + snprintf(_application_name, sizeof(_application_name), "%s", + argv[arg_i]); + + } else if (0 == strcmp("--corrective-action", argv[arg_i])) { + arg_i++; + if (arg_i < argc) + { + if (0 == strcmp("reboot", argv[arg_i])) + { + _corrective_action = GUEST_HEARTBEAT_API_ACTION_REBOOT; + + } else if (0 == strcmp("stop", argv[arg_i])) { + _corrective_action = GUEST_HEARTBEAT_API_ACTION_STOP; + + } else if (0 == strcmp("log", argv[arg_i])) { + _corrective_action = GUEST_HEARTBEAT_API_ACTION_LOG; + } + } + } + } + + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.register_state = guest_app_register_state_callback; + callbacks.health_check = guest_app_health_check_callback; + callbacks.action_notify = guest_app_action_notify_callback; + + error = guest_heartbeat_api_initialize(&callbacks); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to initialize guest heartbeat api, error=%s.", + guest_api_error_str(error)); + return EXIT_FAILURE; + } + + DPRINTFI("Started."); + + while (_stay_on) + { + int num_fds; + fd_set fds; + struct timeval tv; + int result; + + tv.tv_sec = 1; + tv.tv_usec = 0; + + num_fds = 0; + FD_ZERO(&fds); + + if (!_heartbeat_registered) + { + GuestHeartbeatApiInitDataT init_data; + + snprintf(init_data.application_name, + sizeof(init_data.application_name), "%s", + _application_name); + init_data.heartbeat_interval_ms = 1000; + init_data.vote_secs = 8; + init_data.shutdown_notice_secs = 5; + init_data.suspend_notice_secs = 5; + init_data.resume_notice_secs = 5; + init_data.corrective_action = _corrective_action; + + error = guest_heartbeat_api_register(&init_data); + if (GUEST_API_OKAY == error) + { + _heartbeat_registering = true; + } else { + _heartbeat_registering = false; + + if (GUEST_API_TRY_AGAIN != error) + { + DPRINTFE("Failed to register for guest heartbeating, " + "error=%s.", guest_api_error_str(error)); + return EXIT_FAILURE; + } + } + } + + if (_heartbeat_registering || _heartbeat_registered) + { + _heartbeat_selobj = guest_heartbeat_api_get_selobj(); + FD_SET(_heartbeat_selobj, &fds); + num_fds = _heartbeat_selobj; + } + + result = select(num_fds+1, &fds, NULL, NULL, &tv); + if (0 > result) + { + if (errno == EINTR) + { + DPRINTFD("Interrupted by a signal."); + } else { + DPRINTFE("Select failed, error=%s.", strerror(errno)); + } + } else if (0 == result) { + DPRINTFD("Nothing selected."); + } else { + if (FD_ISSET(_heartbeat_selobj, &fds)) + { + guest_heartbeat_api_dispatch(_heartbeat_selobj); + } + } + } + + DPRINTFI("Shutting down."); + + error = guest_heartbeat_api_deregister("Exiting"); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to deregister from guest heartbeat api, error=%s.", + guest_api_error_str(error)); + } + + error = guest_heartbeat_api_finalize(); + if (GUEST_API_OKAY != error) + { + DPRINTFE("Failed to finalize guest heartbeat api, error=%s.", + guest_api_error_str(error)); + } + + DPRINTFI("Shutdown complete."); + + error = guest_api_debug_finalize(); + if (GUEST_API_OKAY != error) + { + printf("Debug finalization failed, error=%s.\n", + guest_api_error_str(error)); + } + + return EXIT_SUCCESS; +} +// **************************************************************************** diff --git a/guest-client/guest-client-3.0.1/include/guest_heartbeat_api_msg_defs.h b/guest-client/guest-client-3.0.1/include/guest_heartbeat_api_msg_defs.h new file mode 100755 index 00000000..f178c618 --- /dev/null +++ b/guest-client/guest-client-3.0.1/include/guest_heartbeat_api_msg_defs.h @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef __GUEST_HEARTBEAT_API_MESSAGE_DEFINITIONS_H__ +#define __GUEST_HEARTBEAT_API_MESSAGE_DEFINITIONS_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define GUEST_HEARTBEAT_API_MSG_ADDRESS "/var/run/.guest_heartbeat_api" + +#define GUEST_HEARTBEAT_API_MSG_MAGIC_VALUE "FDFDA5A5" +#define GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE 8 +#define GUEST_HEARTBEAT_API_MSG_VERSION_CURRENT 2 +#define GUEST_HEARTBEAT_API_MSG_REVISION_CURRENT 1 + +#define GUEST_HEARTBEAT_API_MSG_MAX_APPLICATION_NAME_SIZE 40 +#define GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE 192 + +typedef enum { + GUEST_HEARTBEAT_API_MSG_ACTION_UNKNOWN, + GUEST_HEARTBEAT_API_MSG_ACTION_NONE, + GUEST_HEARTBEAT_API_MSG_ACTION_REBOOT, + GUEST_HEARTBEAT_API_MSG_ACTION_STOP, + GUEST_HEARTBEAT_API_MSG_ACTION_LOG, + GUEST_HEARTBEAT_API_MSG_ACTION_MAX, +} GuestHeartbeatApiMsgActionT; + +typedef enum { + GUEST_HEARTBEAT_API_MSG_EVENT_UNKNOWN, + GUEST_HEARTBEAT_API_MSG_EVENT_STOP, + GUEST_HEARTBEAT_API_MSG_EVENT_REBOOT, + GUEST_HEARTBEAT_API_MSG_EVENT_SUSPEND, + GUEST_HEARTBEAT_API_MSG_EVENT_PAUSE, + GUEST_HEARTBEAT_API_MSG_EVENT_UNPAUSE, + GUEST_HEARTBEAT_API_MSG_EVENT_RESUME, + GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_BEGIN, + GUEST_HEARTBEAT_API_MSG_EVENT_RESIZE_END, + GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_BEGIN, + GUEST_HEARTBEAT_API_MSG_EVENT_LIVE_MIGRATE_END, + GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_BEGIN, + GUEST_HEARTBEAT_API_MSG_EVENT_COLD_MIGRATE_END, + GUEST_HEARTBEAT_API_MSG_EVENT_MAX, +} GuestHeartbeatApiMsgEventT; + +typedef enum { + GUEST_HEARTBEAT_API_MSG_NOTIFY_UNKNOWN, + GUEST_HEARTBEAT_API_MSG_NOTIFY_REVOCABLE, + GUEST_HEARTBEAT_API_MSG_NOTIFY_IRREVOCABLE, + GUEST_HEARTBEAT_API_MSG_NOTIFY_MAX, +} GuestHeartbeatApiMsgNotifyT; + +typedef enum { + GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_UNKNOWN, + GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_ACCEPT, + GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_REJECT, + GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_COMPLETE, + GUEST_HEARTBEAT_API_MSG_VOTE_RESULT_MAX, +} GuestHeartbeatApiMsgVoteResultT; + +typedef enum { + GUEST_HEARTBEAT_API_MSG_INIT, + GUEST_HEARTBEAT_API_MSG_INIT_ACK, + GUEST_HEARTBEAT_API_MSG_FINAL, + GUEST_HEARTBEAT_API_MSG_CHALLENGE, + GUEST_HEARTBEAT_API_MSG_CHALLENGE_RESPONSE, + GUEST_HEARTBEAT_API_MSG_ACTION_NOTIFY, + GUEST_HEARTBEAT_API_MSG_ACTION_RESPONSE, + GUEST_HEARTBEAT_API_MSG_TYPE_MAX, +} GuestHeartbeatApiMsgTypeT; + +typedef struct { + char magic[GUEST_HEARTBEAT_API_MSG_MAGIC_SIZE]; + uint8_t version; + uint8_t revision; + uint16_t msg_type; + uint32_t sequence; + uint32_t size; +} GuestHeartbeatApiMsgHeaderT; + +typedef struct { + char application_name[GUEST_HEARTBEAT_API_MSG_MAX_APPLICATION_NAME_SIZE]; + uint32_t heartbeat_interval_ms; + uint32_t vote_secs; + uint32_t shutdown_notice_secs; + uint32_t suspend_notice_secs; + uint32_t resume_notice_secs; + uint32_t corrective_action; +} GuestHeartbeatApiMsgInitT; + +typedef struct { + uint32_t accepted; +} GuestHeartbeatApiMsgInitAckT; + +typedef struct { + char log_msg[GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE]; +} GuestHeartbeatApiMsgFinalT; + +typedef struct { + uint32_t heartbeat_challenge; +} GuestHeartbeatApiMsgChallengeT; + +typedef struct { + uint32_t heartbeat_response; + uint32_t health; + uint32_t corrective_action; + char log_msg[GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE]; +} GuestHeartbeatApiMsgChallengeResponseT; + +typedef struct { + uint32_t invocation_id; + uint32_t event_type; + uint32_t notification_type; +} GuestHeartbeatApiMsgActionNotifyT; + +typedef struct { + uint32_t invocation_id; + uint32_t event_type; + uint32_t notification_type; + uint32_t vote_result; + char log_msg[GUEST_HEARTBEAT_API_MSG_MAX_LOG_SIZE]; +} GuestHeartbeatApiMsgActionResponseT; + +typedef union { + GuestHeartbeatApiMsgInitT init; + GuestHeartbeatApiMsgInitAckT init_ack; + GuestHeartbeatApiMsgFinalT final; + GuestHeartbeatApiMsgChallengeT challenge; + GuestHeartbeatApiMsgChallengeResponseT challenge_response; + GuestHeartbeatApiMsgActionNotifyT action_notify; + GuestHeartbeatApiMsgActionResponseT action_response; +} GuestHeartbeatApiMsgBodyT; + +typedef struct { + GuestHeartbeatApiMsgHeaderT header; + GuestHeartbeatApiMsgBodyT body; +} GuestHeartbeatApiMsgT; + +#ifdef __cplusplus +} +#endif + +#endif /* __GUEST_HEARTBEAT_API_MESSAGE_DEFINITIONS_H__ */ diff --git a/guest-client/guest-client-3.0.1/packaging/guest-client.pkg b/guest-client/guest-client-3.0.1/packaging/guest-client.pkg new file mode 100755 index 00000000..cd3df1e8 --- /dev/null +++ b/guest-client/guest-client-3.0.1/packaging/guest-client.pkg @@ -0,0 +1,108 @@ +#! /bin/bash +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +RETVAL=0 + +CMD=$1 +INIT_TYPE=$2 +DESTDIR=$3 + +# Note: the variable, DESTDIR has to be an absolute path. + +if [ -z ${INIT_TYPE} ] +then + INIT_TYPE="sysv" +fi + +if [ -z ${DESTDIR} ] +then + DESTDIR="/" +fi + +case "$CMD" in + install) + find ./rootdir/ -type d | while read source_dir; do + target_dir=${source_dir#./rootdir/} + mkdir -p $DESTDIR/$target_dir + done + + cp --preserve=links -R ./rootdir/* $DESTDIR + + if [ "$INIT_TYPE" = "systemd" ] + then + mkdir -p --mode 755 $DESTDIR/etc/guest-client/ + cp guest-client.systemd $DESTDIR/etc/guest-client/ + mkdir -p --mode 755 $DESTDIR/etc/systemd/system + cp guest-client.service $DESTDIR/lib/systemd/system/guest-client.service + ln -s $DESTDIR/lib/systemd/system/guest-client.service $DESTDIR/etc/systemd/system/guest-client.service + + elif [ "$INIT_TYPE" = "sysv" ] + then + mkdir -p --mode 755 $DESTDIR/etc/init.d + cp guest-client.init $DESTDIR/etc/init.d/guest-client + + else + echo "Unknown init-type given, INIT_TYPE=$INIT_TYPE" + fi + ;; + + uninstall) + if [ "$INIT_TYPE" = "systemd" ] + then + rm $DESTDIR/etc/guest-client/guest-client.systemd + rm $DESTDIR/lib/systemd/system/guest-client.service + rm $DESTDIR/etc/systemd/system/guest-client.service + + elif [ "$INIT_TYPE" = "sysv" ] + then + rm $DESTDIR/etc/init.d/guest-client + + else + echo "Unknown init type given, INIT_TYPE=$INIT_TYPE" + fi + + find ./rootdir -type l | while read source_file; do + target_file=${source_file#./rootdir/} + rm $DESTDIR/$target_file + done + + find ./rootdir -type f | while read source_file; do + target_file=${source_file#./rootdir/} + rm $DESTDIR/$target_file + done + ;; + + *) + echo "usage: $0 { install | uninstall }" + ;; +esac + +exit ${RETVAL} diff --git a/guest-comm/PKG-INFO b/guest-comm/PKG-INFO new file mode 100644 index 00000000..df921ec5 --- /dev/null +++ b/guest-comm/PKG-INFO @@ -0,0 +1,12 @@ +Metadata-Version: 1.1 +Name: host-guest-comm +Version: 2.0 +Summary: Titanium Cloud host guest messaging agents, lib, apps +Home-page: +Author: Windriver +Author-email: info@windriver.com +License: Apache-2.0 + +Description: Titanium Cloud host guest messaging agents, lib, apps + +Platform: UNKNOWN diff --git a/guest-comm/centos/build_srpm.data b/guest-comm/centos/build_srpm.data new file mode 100644 index 00000000..6c5b4dcf --- /dev/null +++ b/guest-comm/centos/build_srpm.data @@ -0,0 +1,2 @@ +SRC_DIR="host-guest-comm-2.0" +TIS_PATCH_VER=5 diff --git a/guest-comm/centos/host-guest-comm.spec b/guest-comm/centos/host-guest-comm.spec new file mode 100644 index 00000000..178c0b5b --- /dev/null +++ b/guest-comm/centos/host-guest-comm.spec @@ -0,0 +1,230 @@ +Summary: Titanium Cloud host guest messaging agents, lib, apps +Name: host-guest-comm +Version: 2.0 +%define patchlevel %{tis_patch_ver} +Release: %{tis_patch_ver}%{?_tis_dist} + +License: Apache-2.0 +Group: base +Packager: Wind River +URL: unknown + +Source0: %{name}-%{version}.tar.gz + +%define cgcs_sdk_deploy_dir /opt/deploy/cgcs_sdk + +BuildRequires: json-c +BuildRequires: json-c-devel +BuildRequires: systemd-devel + +Requires: rtld(GNU_HASH) +Requires: /bin/sh +Requires: /usr/bin/systemctl + +%description +Titanium Cloud host/guest messaging agents, guest app library, guest app + +%package -n guest-host-comm +Summary: Titanium Cloud host guest messaging agents, lib, apps +Group: base +Requires: rtld(GNU_HASH) +Requires(post): rtld(GNU_HASH) +Requires: systemd +Requires(post): systemd +Requires(preun): systemd + +%description -n guest-host-comm +Titanium Cloud host/guest messaging agents, guest app library, guest app + +%package -n guest-host-comm-dev +Summary: Titanium Cloud host guest messaging agents, lib, apps +Group: base +Requires: guest-host-comm + +%description -n guest-host-comm-dev +Titanium Cloud host/guest messaging agents, guest app library, guest app + +%package -n %{name}-cgts-sdk +Summary: Titanium Cloud host guest messaging SDK files +Group: devel + +%description -n %{name}-cgts-sdk +Titanium Cloud host guest messaging SDK files + +%package -n host-guest-comm-dbg +Summary: Titanium Cloud host guest messaging agents, lib, apps - Debugging files +Group: devel + +%description -n host-guest-comm-dbg +Titanium Cloud host/guest messaging agents, guest app library, guest app. This +package contains ELF symbols and related sources for debugging purposes. + +%package -n host-guest-comm-dev +Summary: Titanium Cloud host guest messaging agents, lib, apps - Development files +Group: devel +Requires: host-guest-comm = %{version}-%{release} + +%description -n host-guest-comm-dev +Titanium Cloud host/guest messaging agents, guest app library, guest app This +package contains symbolic links, header files, and related items necessary +for software development. + +%prep +%setup + +%build +VER=%{version} +MAJOR=`echo $VER | awk -F . '{print $1}'` +MINOR=`echo $VER | awk -F . '{print $2}'` +PATCH=%{patchlevel} + +make all VER=${VER} MAJOR=${MAJOR} MINOR=${MINOR} PATCH=${PATCH} +find . +find . -name "*.tgz" + +%global _buildsubdir %{_builddir}/%{name}-%{version} + +%install +VER=%{version} +MAJOR=`echo $VER | awk -F . '{print $1}'` +MINOR=`echo $VER | awk -F . '{print $2}'` +PATCH=%{patchlevel} + +install -m 750 -d %{buildroot}/usr/sbin +install -m 755 -d %{buildroot}/usr/lib64 +install -m 755 -d %{buildroot}/usr/include +install -m 755 -d %{buildroot}/usr/include/cgcs +install -m 750 -d %{buildroot}%{_sysconfdir}/init.d +install -m 750 -d %{buildroot}%{_sysconfdir}/pmon.d +install -m 750 -d %{buildroot}%{_unitdir} + +install -m 750 -d %{buildroot}/usr +install -m 750 -d %{buildroot}/usr/src +install -m 750 -d %{buildroot}/usr/src/debug +install -m 750 -d %{buildroot}/usr/src/debug/host-guest-comm-%{version} + + +install -m 644 %{_buildsubdir}/host_guest_msg_type.h %{buildroot}/usr/src/debug/host-guest-comm-%{version}/host_guest_msg_type.h +install -m 644 %{_buildsubdir}/server_group_app.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/server_group_app.c +install -m 644 %{_buildsubdir}/server_group.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/server_group.c +install -m 644 %{_buildsubdir}/guest_agent.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/guest_agent.c +install -m 644 %{_buildsubdir}/lib_host_guest_msg.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/lib_host_guest_msg.c +install -m 644 %{_buildsubdir}/host_guest_msg.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/host_guest_msg.c +install -m 644 %{_buildsubdir}/lib_guest_host_msg.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/lib_guest_host_msg.c +install -m 644 %{_buildsubdir}/host_instance_mgmt.h %{buildroot}/usr/src/debug/host-guest-comm-%{version}/host_instance_mgmt.h +install -m 644 %{_buildsubdir}/host_instance_mgmt.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/host_instance_mgmt.c +install -m 644 %{_buildsubdir}/guest_host_msg.h %{buildroot}/usr/src/debug/host-guest-comm-%{version}/guest_host_msg.h +install -m 644 %{_buildsubdir}/host_guest_msg.h %{buildroot}/usr/src/debug/host-guest-comm-%{version}/host_guest_msg.h +install -m 644 %{_buildsubdir}/host_agent.c %{buildroot}/usr/src/debug/host-guest-comm-%{version}/host_agent.c +install -m 644 %{_buildsubdir}/server_group.h %{buildroot}/usr/src/debug/host-guest-comm-%{version}/server_group.h + +install -m 750 %{_buildsubdir}/scripts/host_agent %{buildroot}%{_sysconfdir}/init.d/host_agent +install -m 640 %{_buildsubdir}/scripts/host_agent.service %{buildroot}%{_unitdir}/host_agent.service +install -m 644 %{_buildsubdir}/scripts/guest-agent.service %{buildroot}%{_unitdir}/guest-agent.service +install -m 640 %{_buildsubdir}/scripts/host_agent.conf %{buildroot}%{_sysconfdir}/pmon.d/host_agent.conf +install -m 750 %{_buildsubdir}/bin/host_agent %{buildroot}/usr/sbin/host_agent +install -m 750 %{_buildsubdir}/bin/guest_agent %{buildroot}/usr/sbin/guest_agent +install -m 750 %{_buildsubdir}/bin/server_group_app %{buildroot}/usr/sbin/server_group_app +install -m 644 %{_buildsubdir}/guest_host_msg.h %{buildroot}/usr/include/cgcs/guest_host_msg.h +install -m 644 %{_buildsubdir}/host_guest_msg.h %{buildroot}/usr/include/cgcs/host_guest_msg.h + +# Deploy to the SDK deployment directory + +find . +install -d %{buildroot}%{cgcs_sdk_deploy_dir} +install -m 644 sdk/wrs-server-group-%{version}.%{patchlevel}.tgz %{buildroot}%{cgcs_sdk_deploy_dir}/wrs-server-group-%{version}.%{patchlevel}.tgz + + +install -m 755 -p -D %{_buildsubdir}/lib/libguesthostmsg.so.${MAJOR}.${MINOR}.${PATCH} %{buildroot}%{_libdir}/libguesthostmsg.so.${MAJOR}.${MINOR}.${PATCH} +cd %{buildroot}%{_libdir} ; ln -s libguesthostmsg.so.$MAJOR.$MINOR.${PATCH} libguesthostmsg.so.$MAJOR.${MINOR} +cd %{buildroot}%{_libdir} ; ln -s libguesthostmsg.so.$MAJOR.$MINOR.${PATCH} libguesthostmsg.so.$MAJOR +cd %{buildroot}%{_libdir} ; ln -s libguesthostmsg.so.$MAJOR.$MINOR.${PATCH} libguesthostmsg.so + +install -m 755 -p -D %{_buildsubdir}/lib/libhostguestmsg.so.${MAJOR}.${MINOR}.${PATCH} %{buildroot}%{_libdir}/libhostguestmsg.so.${MAJOR}.${MINOR}.${PATCH} +cd %{buildroot}%{_libdir} ; ln -s libhostguestmsg.so.$MAJOR.$MINOR.${PATCH} libhostguestmsg.so.$MAJOR.${MINOR} +cd %{buildroot}%{_libdir} ; ln -s libhostguestmsg.so.$MAJOR.$MINOR.${PATCH} libhostguestmsg.so.$MAJOR +cd %{buildroot}%{_libdir} ; ln -s libhostguestmsg.so.$MAJOR.$MINOR.${PATCH} libhostguestmsg.so + +install -m 755 -p -D %{_buildsubdir}/lib/libservergroup.so.${MAJOR}.${MINOR}.${PATCH} %{buildroot}%{_libdir}/libservergroup.so.${MAJOR}.${MINOR}.${PATCH} +cd %{buildroot}%{_libdir} ; ln -s libservergroup.so.$MAJOR.$MINOR.${PATCH} libservergroup.so.$MAJOR.${MINOR} +cd %{buildroot}%{_libdir} ; ln -s libservergroup.so.$MAJOR.$MINOR.${PATCH} libservergroup.so.$MAJOR +cd %{buildroot}%{_libdir} ; ln -s libservergroup.so.$MAJOR.$MINOR.${PATCH} libservergroup.so + +%post +/usr/bin/systemctl enable host_agent.service + +%postun +/usr/bin/systemctl disable host_agent.service + +%files +%defattr(-,root,root,-) + +/usr/lib64/libhostguestmsg.so.2.0.%{patchlevel} +/usr/lib64/libhostguestmsg.so.2.0 +/usr/lib64/libhostguestmsg.so.2 +/usr/sbin/host_agent +/etc/pmon.d/host_agent.conf +/etc/init.d/host_agent +%{_unitdir}/host_agent.service + +%files -n guest-host-comm +%defattr(-,root,root,-) + +/usr/lib64/libguesthostmsg.so.2.0.%{patchlevel} +/usr/lib64/libguesthostmsg.so.2.0 +/usr/lib64/libguesthostmsg.so.2 +/usr/lib64/libservergroup.so.2.0.%{patchlevel} +/usr/lib64/libservergroup.so.2.0 +/usr/lib64/libservergroup.so.2 +/usr/sbin/server_group_app +/usr/sbin/guest_agent +%{_unitdir}/guest-agent.service + +%preun -n guest-host-comm +%systemd_preun guest-agent.service + +%post -n guest-host-comm +%systemd_post guest-agent.service +/usr/bin/systemctl enable guest-agent.service >/dev/null 2>&1 + +%files -n guest-host-comm-dev +%defattr(-,root,root,-) + +/usr/include/cgcs/guest_host_msg.h +/usr/lib64/libguesthostmsg.so.2.0.%{patchlevel} +/usr/lib64/libguesthostmsg.so.2.0 +/usr/lib64/libguesthostmsg.so.2 +/usr/lib64/libguesthostmsg.so +/usr/lib64/libservergroup.so.2.0.%{patchlevel} +/usr/lib64/libservergroup.so.2.0 +/usr/lib64/libservergroup.so.2 +/usr/lib64/libservergroup.so + +%files -n host-guest-comm-dbg +%defattr(-,root,root,-) + +/usr/src/debug/host-guest-comm-2.0/server_group_app.c +/usr/src/debug/host-guest-comm-2.0/server_group.c +/usr/src/debug/host-guest-comm-2.0/guest_agent.c +/usr/src/debug/host-guest-comm-2.0/lib_host_guest_msg.c +/usr/src/debug/host-guest-comm-2.0/host_guest_msg.c +/usr/src/debug/host-guest-comm-2.0/lib_guest_host_msg.c +/usr/src/debug/host-guest-comm-2.0/host_guest_msg_type.h +/usr/src/debug/host-guest-comm-2.0/host_instance_mgmt.h +/usr/src/debug/host-guest-comm-2.0/host_instance_mgmt.c +/usr/src/debug/host-guest-comm-2.0/guest_host_msg.h +/usr/src/debug/host-guest-comm-2.0/host_guest_msg.h +/usr/src/debug/host-guest-comm-2.0/host_agent.c +/usr/src/debug/host-guest-comm-2.0/server_group.h + +%files -n host-guest-comm-dev +%defattr(-,root,root,-) + +/usr/include/cgcs/host_guest_msg.h +/usr/lib64/libhostguestmsg.so.2.0.%{patchlevel} +/usr/lib64/libhostguestmsg.so.2.0 +/usr/lib64/libhostguestmsg.so.2 +/usr/lib64/libhostguestmsg.so + +%files -n %{name}-cgts-sdk +%{cgcs_sdk_deploy_dir}/wrs-server-group-%{version}.%{patchlevel}.tgz diff --git a/guest-comm/host-guest-comm-2.0/LICENSE b/guest-comm/host-guest-comm-2.0/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/guest-comm/host-guest-comm-2.0/Makefile b/guest-comm/host-guest-comm-2.0/Makefile new file mode 100644 index 00000000..f7b23905 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/Makefile @@ -0,0 +1,107 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# Note: if you change either Makefile or Makefile.sdk you need to manually +# do a "make clean" and then "make". + +# Import the Makefile that we give to the customer so we eat our own dogfood +include Makefile.sdk + +# This needs to be extended from what the customer will build. +EXECS += host_agent +BINEXECS=$(addprefix $(BINDIR)/, $(EXECS)) + +HOST_AGENT_SRCS = host_guest_msg.c host_agent.c host_instance_mgmt.c +HOST_AGENT_OBJ := $(patsubst %,$(ODIR)/%,$(HOST_AGENT_SRCS:.c=.o)) + +LIBHOSTGUESTMSG_SRCS := lib_host_guest_msg.c +LIBHOSTGUESTMSG_OBJ := $(patsubst %,$(ODIR)/%,$(LIBHOSTGUESTMSG_SRCS:.c=.o)) +LIBHOSTGUESTMSG := hostguestmsg +LIBHOSTGUESTMSG_SO := $(patsubst %,lib%.so,$(LIBHOSTGUESTMSG)) +LIBHOSTGUESTMSG_DEP := $(patsubst %,$(LIBDIR)/%,$(LIBHOSTGUESTMSG_SO)) + +LIBS= $(LIBHOSTGUESTMSG) +LIBDEPS:=$(patsubst %,$(LIBDIR)/lib%.so,$(LIBS)) + +EXPORT_SDK := wrs-server-group-$(MAJOR).$(MINOR).$(PATCH) + +# Add the host build as a dependency to the SDK build +all: host_all +host_all: $(BINEXECS) $(LIBDEPS) sdk/$(EXPORT_SDK).tgz + +OBJS = $(HOST_AGENT_OBJ) +DEPS = $(OBJS:.o=.d) sdk/sdk.d +-include $(DEPS) + +# The dependency tracking for the SDK tarball is rather crude. If any +# file changes they're all copied over again. This is quick, so it's +# not worth getting fancy. +sdk/$(EXPORT_SDK).tgz: + @echo "Making SDK" + @mkdir -p sdk/$(EXPORT_SDK) + @mkdir -p sdk/$(EXPORT_SDK)/lib + @mkdir -p sdk/$(EXPORT_SDK)/bin + @mkdir -p sdk/$(EXPORT_SDK)/obj + @mkdir -p sdk/$(EXPORT_SDK)/scripts + @cp scripts/guest-agent.service sdk/$(EXPORT_SDK)/scripts + @echo "MAJOR=$(MAJOR)" > sdk/$(EXPORT_SDK)/Makefile + @echo "MINOR=$(MINOR)" >> sdk/$(EXPORT_SDK)/Makefile + @echo "PATCH=$(PATCH)" >> sdk/$(EXPORT_SDK)/Makefile + @cat Makefile.sdk >> sdk/$(EXPORT_SDK)/Makefile + @cp LICENSE sdk/$(EXPORT_SDK) + @cp docs/README.txt sdk/$(EXPORT_SDK) + @cp docs/TiS-Guest-Server-Group-Messaging.pdf sdk/$(EXPORT_SDK) + @cp $(GUEST_CLIENT_APP_SRCS) sdk/$(EXPORT_SDK) + @cp $(LIBSERVERGROUP_SRCS) sdk/$(EXPORT_SDK) + @cp $(LIBGUESTHOSTMSG_SRCS) sdk/$(EXPORT_SDK) + @cp $(GUEST_AGENT_SRCS) sdk/$(EXPORT_SDK) + @cp host_guest_msg_type.h server_group.h misc.h guest_host_msg.h sdk/$(EXPORT_SDK) + + @cd sdk && tar czf $(EXPORT_SDK).tgz $(EXPORT_SDK) + @echo -n "sdk/$(EXPORT_SDK).tgz: Makefile.sdk docs/README.txt docs/TiS-Guest-Server-Group-Messaging.pdf " > sdk/sdk.d + @echo -n "scripts/guest-agent.service" >> sdk/sdk.d + @echo -n "$(GUEST_CLIENT_APP_SRCS) $(LIBSERVERGROUP_SRCS) $(GUEST_AGENT_SRCS) $(LIBGUESTHOSTMSG_SRCS)" >> sdk/sdk.d + @echo " host_guest_msg.h server_group.h misc.h" >> sdk/sdk.d + @echo '*' > sdk/.gitignore + +$(LIBHOSTGUESTMSG_DEP): CFLAGS2 = -fPIC +$(LIBHOSTGUESTMSG_DEP): $(LIBHOSTGUESTMSG_OBJ) + $(CC) -shared -Wl,-soname,$(LIBHOSTGUESTMSG_SO).$(MAJOR) $^ -o $(LIBHOSTGUESTMSG_DEP).$(MAJOR).$(MINOR).$(PATCH) + ln -sf $(LIBHOSTGUESTMSG_SO).$(MAJOR).$(MINOR).$(PATCH) $(LIBHOSTGUESTMSG_DEP).$(MAJOR) + ln -sf $(LIBHOSTGUESTMSG_SO).$(MAJOR) $(LIBHOSTGUESTMSG_DEP) + +$(BINDIR)/host_agent: $(HOST_AGENT_OBJ) + $(CC) -o $@ $^ $(LDFLAGS) -lrt -ljson-c + +# Add the host clean as a dependency to the SDK stuff +clean: host_clean +host_clean: + rm -rf sdk diff --git a/guest-comm/host-guest-comm-2.0/Makefile.sdk b/guest-comm/host-guest-comm-2.0/Makefile.sdk new file mode 100644 index 00000000..84d4c62f --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/Makefile.sdk @@ -0,0 +1,118 @@ +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +.PHONY: all clean + +EXECS= guest_agent server_group_app + +CFLAGS= -g -Wall +LDFLAGS = + +ODIR=obj +BINDIR=bin +LIBDIR=lib +INCDIR=include/cgcs + +_DEPS = *.h +DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) + +GUEST_AGENT_SRCS = host_guest_msg.c guest_agent.c +GUEST_AGENT_OBJ := $(patsubst %,$(ODIR)/%,$(GUEST_AGENT_SRCS:.c=.o)) + +GUEST_CLIENT_APP_SRCS = server_group_app.c +GUEST_CLIENT_APP_OBJ := $(patsubst %,$(ODIR)/%,$(GUEST_CLIENT_APP_SRCS:.c=.o)) + +LIBGUESTHOSTMSG_SRCS := lib_guest_host_msg.c +LIBGUESTHOSTMSG_INCLUDES := guest_host_msg.h +LIBGUESTHOSTMSG_OBJ := $(patsubst %,$(ODIR)/%,$(LIBGUESTHOSTMSG_SRCS:.c=.o)) +LIBGUESTHOSTMSG := guesthostmsg +LIBGUESTHOSTMSG_SO := $(patsubst %,lib%.so,$(LIBGUESTHOSTMSG)) +LIBGUESTHOSTMSG_DEP := $(patsubst %,$(LIBDIR)/%,$(LIBGUESTHOSTMSG_SO)) + +LIBSERVERGROUP_SRCS := server_group.c +LIBSERVERGROUP_INCLUDES := server_group.h +LIBSERVERGROUP_OBJ := $(patsubst %,$(ODIR)/%,$(LIBSERVERGROUP_SRCS:.c=.o)) +LIBSERVERGROUP := servergroup +LIBSERVERGROUP_SO := $(patsubst %,lib%.so,$(LIBSERVERGROUP)) +LIBSERVERGROUP_DEP := $(patsubst %,$(LIBDIR)/%,$(LIBSERVERGROUP_SO)) + +LIBS= $(LIBSERVERGROUP) $(LIBGUESTHOSTMSG) +INCLUDES= $(LIBGUESTHOSTMSG_INCLUDES) $(LIBSERVERGROUP_INCLUDES) + +BINEXECS=$(addprefix $(BINDIR)/, $(EXECS)) + +LIBDEPS:=$(patsubst %,$(LIBDIR)/lib%.so,$(LIBS)) + +INCDEPS:=$(addprefix $(INCDIR)/, $(INCLUDES)) + +all: $(BINEXECS) $(LIBDEPS) $(INCDIR) $(INCDEPS) + +OBJS = $(GUEST_AGENT_OBJ) $(LIBSERVERGROUP_OBJ) $(GUEST_CLIENT_APP_OBJ) +DEPS = $(OBJS:.o=.d) +-include $(DEPS) + +$(ODIR)/%.o: %.c + $(CC) -c $(CFLAGS) $(CFLAGS2) -MMD -o $@ $< + +$(INCDIR): + mkdir -p $(INCDIR) + +$(INCDIR)/%.h: %.h $(INCDIR) + cp $< $@ + +vpath %.h . + +# the version of make in wrl5 seems to have a problem with target-specific +# variable values. It can't handle just doing "CFLAGS += -fPIC". Same thing +# for LDFLAGS below. This seems to work as a workaround. +$(LIBSERVERGROUP_DEP): CFLAGS2 = -fPIC +$(LIBSERVERGROUP_DEP): $(LIBSERVERGROUP_OBJ) + $(CC) -shared -Wl,-soname,$(LIBSERVERGROUP_SO).$(MAJOR) $^ -o $(LIBSERVERGROUP_DEP).$(MAJOR).$(MINOR).$(PATCH) + ln -sf $(LIBSERVERGROUP_SO).$(MAJOR).$(MINOR).$(PATCH) $(LIBSERVERGROUP_DEP).$(MAJOR) + ln -sf $(LIBSERVERGROUP_SO).$(MAJOR) $(LIBSERVERGROUP_DEP) + +$(LIBGUESTHOSTMSG_DEP): CFLAGS2 = -fPIC +$(LIBGUESTHOSTMSG_DEP): $(LIBGUESTHOSTMSG_OBJ) + $(CC) -shared -Wl,-soname,$(LIBGUESTHOSTMSG_SO).$(MAJOR) $^ -o $(LIBGUESTHOSTMSG_DEP).$(MAJOR).$(MINOR).$(PATCH) + ln -sf $(LIBGUESTHOSTMSG_SO).$(MAJOR).$(MINOR).$(PATCH) $(LIBGUESTHOSTMSG_DEP).$(MAJOR) + ln -sf $(LIBGUESTHOSTMSG_SO).$(MAJOR) $(LIBGUESTHOSTMSG_DEP) + +$(BINDIR)/guest_agent: LDFLAGS2 = -rdynamic +$(BINDIR)/guest_agent: $(GUEST_AGENT_OBJ) + $(CC) -o $@ $^ $(LDFLAGS) $(LDFLAGS2) -ljson-c + +$(BINDIR)/server_group_app: LDFLAGS2 = -l$(LIBSERVERGROUP) -L$(LIBDIR) +$(BINDIR)/server_group_app: $(GUEST_CLIENT_APP_OBJ) $(LIBSERVERGROUP_DEP) + $(CC) -o $@ $^ $(LDFLAGS) $(LDFLAGS2) -ljson-c + + +clean: + rm -rf $(ODIR)/* *~ core $(BINDIR)/* $(LIBDIR)/* diff --git a/guest-comm/host-guest-comm-2.0/bin/.gitignore b/guest-comm/host-guest-comm-2.0/bin/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/bin/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/guest-comm/host-guest-comm-2.0/docs/README.txt b/guest-comm/host-guest-comm-2.0/docs/README.txt new file mode 100644 index 00000000..9e17948a --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/docs/README.txt @@ -0,0 +1,257 @@ + +Copyright(c) 2013-2016, Wind River Systems, Inc. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Wind River Systems nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------- + +DESCRIPTION +=========== + +Server Group Messaging is a service to provide simple low-bandwidth datagram +messaging and notifications for servers that are part of the same server group. +This messaging channel is available regardless of whether IP networking is +functional within the server, and it requires no knowledge within the server +about the other members of the group. + +The service provides three types of messaging: +1) Broadcast: this allows a server to send a datagram (size of up to 3050 bytes) + to all other servers within the server group. + +2) Notification: this provides servers with information about changes to the + state of other servers within the server group. + +3) Status: this allows a server to query the current state of all servers within + the server group (including itself). + +This service is not intended for high bandwidth or low-latency operations. It +is best-effort, not reliable. Applications should do end-to-end acks and +retries if they care about reliability. + + +REQUIREMENTS +============ + Compilation: + Linux OS, x86_64 architecture + gcc compiler + development libraries and headers for glibc + development libraries and headers for json-c + + VM Runtime: + Linux OS, x86_64 architecture + runtime libraries for glibc + runtime libraries for json-c + + The code has been tested with glibc 2.15, gcc 4.6 and json-c 0.12.99 but it + should run on other versions without difficulty. + + +DELIVERABLE +=========== +The Server Group Messaging service is delivered as source with the +required makefiles in a compressed tarball called +"wrs-server-group-2.0.0.tgz", such that it can be compiled for the applicable +guest linux distribution. + + +COMPILE +======= +Install the prerequisites: + On CentOS/RHEL: yum install json-c-devel make gcc glibc-devel + On Ubuntu/Debian: sudo apt-get install build-essential libjson0-dev + +Extract the tarball contents: + tar xvf wrs-server-group-#.#.#.tgz + +To compile: + cd wrs-server-group-#.#.# + make + export WRS_SERVER_GROUP_DIR=${PWD} + +This will produce: + +1) An executable "bin/guest_agent". This acts as a relay between the guest and +the host. This executable must be installed into the guest and configured to +run at startup. It should be configured to respawn (via /etc/inittab or some +other process monitor) if it dies for any reason. + +Typical manual installation commands: +sudo cp bin/* /usr/sbin +sudo cp scripts/guest-agent.service /lib/systemd/system/ +sudo systemctl enable guest-agent.service +sudo systemctl start guest-agent.service + +2) A library "lib/libservergroup.so.2.0.*". This encapsulates the details of +talking to the guest agent. This can be used with the header file +"server_group.h" to create custom applications that can make use of the +messaging service. This should be installed within the guest in a suitable +library location such that the linker can find it. It should also be installed +in the build system where custom applications can link against it. The +"libservergroup.so.2" symlink should be created in the build system and the +guest, and the "libservergroup.so" symlink should be created in the build +system, either by ldconfig or some other means. + +Typical manual installation commands: +sudo cp -P lib/libservergroup.* /usr/lib/ +sudo ldconfig + +3) A header file "include/cgcs/server_group.h". This is used along with the library to +create custom applications that can make use of the messaging service. This +should be installed in the build system where custom applications can include +it. + +4) A sample program "bin/server_group_app" is created in order to show the use +of the APIs and validate that they are working properly in the guest. + +5) A library "lib/libguesthostmsg.so.2.0.*". This library is used by +wrs-guest-scale component packaged separately. This can be used with the +header file "guest_host_msg.h". This should be installed within +the guest in a suitable library location such that the linker can find it. +It should also be installed in the build system where custom applications can +link against it. The "libguesthostmsg.so.2" symlink should be created in the +build system and the guest, and the "libguesthostmsg.so" symlink should be +created in the build system, either by ldconfig or some other means. + +Typical manual installation commands: +sudo cp -P lib/libguesthostmsg.* /usr/lib/ +sudo ldconfig + +6) A header file "include/cgcs/guest_host_msg.h". This is used along with +the library to create custom applications that can make use of the messaging +service. This should be installed in the build system where custom +applications can include it. (Setting the WRS_SERVER_GROUP_DIR environment as above +variable will allow it to be found when building the wrs-guest-scale component.) + + +Note: +The inclusion of the files into the build system and the guest image and the +configuration of the guest startup scripts is left up to the user to allow for +different build systems and init subsystems in the guest. + + +INSTALL +======= +Installing in a running VM: + + As the root user + 1) Copy "bin/guest_agent" and any other desired binaries such as + "bin/server_group_app" to /usr/sbin in the VM. + + 2) Run "cp -P lib/* /usr/lib" (or /usr/lib64 as appropriate) in the VM + to install the libraries. + + 3) Run "ldconfig". + + 4) Copy scripts/guest-agent.service to /lib/systemd/system/ and then run + "systemctl enable guest-agent.service" and "systemctl start guest-agent.service". + This should cause the "guest-agent" binary to start running. + + 5) Applications can now make use of the service. + + 6) Run "cp -r include/cgcs /usr/include/" to set up the headers for anyone + wanting to link against libservergroup or libguesthostmsg. + +As part of building the VM ISO Image: + + 1) Ensure "bin/guest_agent" and any other desired binaries get installed + to /usr/sbin in the VM filesystem. + + 2) Ensure "lib/*" gets installed to /usr/lib64 in the VM filesystem. + + 3) Ensure that "ldconfig" will run at VM startup. + + 4) Ensure that "/usr/sbin/guest_agent" is configured to run automatically + at VM startup and to respawn if it dies for any reason. The scripts/ + guest_agent.service file is provided for use by systemd. + + +USAGE +===== +The service is designed to be simple to use. A basic description is given +below, but more details are provided in the header file. + +First, the application must call init_sg(). This call takes three function +pointers corresponding to callbacks for the various message types. If an +application doesn't intend to use one or more of the message types then the +appropriate function pointers can be specified as NULL. The function returns a +socket that must be monitored for activity using select/poll/etc. + +When the socket becomes readable, the application must call process_sg_msg(). +This may result in callbacks being called so be careful about deadlock. + +In order to send a broadcast message to every server in the server group, the +application can call sg_msg_broadcast(). + +In order to request the status of all servers in the group, the application can +call sg_request_status(). + +The sg_broadcast_msg_handler_t() callback will be called when receiving a server +group broadcast message. It will be passed the message as well as a +null-terminated string containing the instance name of the sender. + +The sg_notification_msg_handler_t() callback will be called when receiving a +notification message indicating a status change in one of the members of the +server group. The msg is JSON-formatted, essentially the normal notification +that gets sent out by OpenStack's notification service, but with some +non-relevant information removed to keep the message shorter. + +The sg_status_msg_handler_t() callback will be called when receiving the +response to a status query. The message is a JSON-formatted list of +dictionaries, each of which represents a single server. + + +SAMPLE APPLICATION +================== +The "server_group_app" sample application can be used to test the various types +of messages. It takes one optional argument, consisting of a character string +in quotes. When run, it behaves as follows: + +1) It registers for all three callbacks. +2) If the optional argument was specified it sends that string as a server group + broadcast message. +3) It requests the group status. +4) It then goes into a loop waiting for incoming messages. Any incoming message + will be printed out along with information about the type of message. + + +The service can be validated as follows using the "server_group_app" sample +application: +a) Create a server group with the "affinity" scheduler policy. +b) Start up a server within the server group. +c) Run "server_group_app" in the first server. You should immediately see the + status response message containing information about that server. +d) Start up a second server within the server group. You should see + notification messages being received in the first server. +e) Run 'server_group_app "this is a test"' on the second server. You should see + "this is a test" received as a broadcast message on the first server. The + second server should show a status response with information about both + servers +f) Start up a third server within the server group. You should see + notification messages being received in the other two servers. +g) Run 'server_group_app "final test"' on the second server. You should see + "final test" received as a broadcast message on the other two servers. The + second server should show a status response with information about all three + servers diff --git a/guest-comm/host-guest-comm-2.0/docs/TiS-Guest-Server-Group-Messaging.doc b/guest-comm/host-guest-comm-2.0/docs/TiS-Guest-Server-Group-Messaging.doc new file mode 100644 index 0000000000000000000000000000000000000000..f8205d9bbe332abf57d39062f0264e519f1b3c20 GIT binary patch literal 345088 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 H=lH(>#Eg9z literal 0 HcmV?d00001 diff --git a/guest-comm/host-guest-comm-2.0/docs/TiS-Guest-Server-Group-Messaging.pdf b/guest-comm/host-guest-comm-2.0/docs/TiS-Guest-Server-Group-Messaging.pdf new file mode 100644 index 0000000000000000000000000000000000000000..becafd04694a0221f6f3a5db9258bbb25d1a4d26 GIT binary patch literal 1083703 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�i`d) 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

N?=SV<^saciq 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�!>}0vwc?JqaT7xUj zQTiu8n)nF_ez*xtkCPJdMWm-^Ikq)t9+J6*3#I05kvn3}(u*>l89xq44-TdoZ|QF7 zjyYbAxF-=|bz*h?LKkkp6l2k4dfoLu&jF zo}%z%(_mVzcp@`*Ak3rygWQ=sZ))6d!f=9_+?C!{MrvAnZ2PZ5S~gm?)WhKklOh2j zC_mR&Mgq$Sz`kR=a>CaZbNn^&WjHH!bg$O+Yo&K(y9m=F`{Iz|*!akJV}eu4er2_) z6RH#H>2iy;)8dK~kZ&JD-uL_i6uW zwI3=0m2j1P-FY5%wS1j>E^*b~%<0*7ZOOPZwojS$Js|_G#DG*4pK9EOEyeEa1WpGl zS=#{*OAysk{SwzZ>{Jeuw}_+E2|@)GP+rp8`kNSoj_t)8CL^}Aa{?Yi{}%!VZSja7 zJGL=HZ>n^1xqX8?rLbq8kba_Qoh`|?1W;%|{8(^Xd)*LS5Omu+)ANXJY4}oHU+w!t zM@#HX_uLUAyCU5w{&W*}$3Y->I#KIMsEFd*1 zoM##^UHd7|)KY4+HZpmakcEj|N5eF+Y~qV%f^sE(o}R5#3nI}jhEZbK=od|;0X~=N zNc++b7zISyA7K%#&*gA-lmuraKx77J#pr!-PcNO~&n0}xuSA9>B|DHydh?M>cxM9V zHfI9WbPpv;18*qjl|5sRm_=k<;>hz`v19CAxxAUcoKf%OCd^sO*!@Q$wtRn)_f{Z<*GnTIG!tH)f}$J+&1yh30jS^lqcy+O$ALt|jtw^snc@+m^TV zvJN#bkn1Ig_ee)ye(`>#C#N;6Rg!OZd`_e_$gXVR;I6f<)xd2YG}qf2BdQ}(@^t7s zGMW4MsX-lcUUHtvvsqN(bk6*M<48e7QAzpy!158{Hq6p^rMNTIwL|3YFRnt|iuD8! zfwgTV-=Y`#Cb?70M7oO^i1lxjSstq`IXmVN=N|TTC}h%xZ`DQMI^a?#0NQu5fH!8o z$E82)ZP+oFG|sn2qCam{cKg~GUXhDgJ#UMyKfX}g;Eb+2NM3Bc5_sC(+L+=mv*;Mc zR3OyCSs8S;iQ#m5L%7(DK8vd#CnRaGKhPZJ>8SQ8YL+RFEAQhY#KMSMcAY>Ws_^J` zT41`sQ<9r0tspyePs-_b&jL^{E=I%>bvC=2dpkY&c-pL{*L^~u8D93c^z!u*zEDR` zq!PAVXxJVobOm$US*7){Y$q35f*I|s)B0bwUklZRDakE#1_QUKW_ihpVmL*%X1C>^ z%RRN*!I9x^1LtX|+xOd;V|bU+m#j{v?LrXS%J9xmKX%lu?5*sv_-1}qUU}TiZ)Vym z0s?*IKZxl>#sg)~^M~5g#uUxcs}hjok;nOlSBHhnl&&1F5|-1S<4Y{BQ&&X;8-x${kO9naEYChomS-#ZC#JO|PGqWk2{Ej#Fybki{F=Gu9u*b7ieQ%E^ zQY7b9cJN({qJ66Y0)#Mn_D&)LAqun;Z6%Rp`glT~e$V#EODQMxkm#0SpF*8xw%o=e zBm0k)>TI4qZ>G1n>)*bKf&>c-PB)RDSzry9TafmI23e(4S=bS&7|OUZ>RgmnORHps zIws6(yjw>xLJN(UNSmf(DTd4-uYRQ% z(*&|Ep$IRq2a!o+?W17d4Cjy}E-gXqwGVY_Dn{woxoPPR_2-LWzT zbAY_SwdY7GpUT8D?e0)IgET}=;7V~M&P_GCJq5V)l1NRFPYV6AJ5&inMWj%g-J!EY z>g)nisPOI(0fThM4}q)2L~6FD$MqCHl4$P_(xNW}0#`00arP?F&n&w`S&7u^g``l{ z-J$!E^5i+`3#c` zAw_=z22clikHl4N3<2U2f8#`d+VYE{4pMPyh8@>{;&eE)!_6D@~;>PRB*Q!219x5Q*`iTBRgE11l7aH+;MgUo)i z9`{7sH8<0QewD$sG}EkTweD2FRf-$LzE;$h4S_9757#`KW*(hhTC!C;7CY__vTxZS zG*@qGMj4Kb#zweh<(Gbp=2wOPt_mX=%H&e7u6BQ?+M1QU*jTUXB-J6FSeANov!oSb zu>N5Baow7!{8X0VGa_o+v{d1m?lWN5G`X^Wa;+k7&_Oh(vIVxVuZ=hvcdgMkN?9>= zZ2|3e_Cd2}u}@n@?CbaU$|)I)g!`A}aq?E|jp`r9x$+_nRfE`uQ8cwYg^QIrY0 z7S#IsYtd-7^%&Ui`qt>ZyclUiRSHf^6I&SztW3RInrcV$B0&(yFSaJ9Q#{u!(9A@W z=JNYHtF|eCaaF@&m^w-fo(tz4hF1~elGiB+kirX~uQU@{W^GIt>A9;1*&297iu7k$ zg{&C5HnY@HpU4P}WZik4vbxle?f&_)y6l<^8f+|6>TEkbllRCMQ4v@jy;F%hHGV2y zBDamv2(zC|P#=(A(C&Esd>{RKTKQT*?Q|gI-Og3J%YVfA)@ykja8E`gkF)8FQ3>Hh#oFtz(P=P8x#yH ze|oh$>+Hp>$@Ok&djPjRkw&q3*=KK0i>554xCS?sOFoK5_r>mC-Nf86%$&=dwyIQ7 zmnc&lQTg-~QOvVDy%Z-ML{1!KOdS7aEs#IvY%PZK-n%Mv3Y* z&7Zcv%t*M+WjgP_{W{m}$}6pWnG|)}%cz@dUq3ge<052G2~@WHMoca7?wdFo1Jyt% zhg3KN+efK)D1?+qXdnN`#C4_sTjr<;Ec0O=1yZR}fR=rsG7MA&df|yW`JrzhKd0iE zl}QNXuI>Kq?J<+B6I6S*VqNv}7qlSgWESk5V9MbZYXqb}l$Mk60}>F4pP31aQ*!(9V#G337Oa%8g=*q} z45sWZ^Jr--c^qubDwi~4tb#Y%R9Zlv?>N&`a5M%PL8_7gzg$yk;0rVgR( zq_a=-qiKSDfTizHjHd7M?XX;R4(smPUb#XQJVM%4A++bo_d{O07*P5vQ7DT?=kxg$ zyepZ>;%8Tv5&O}QUAG-ps6I6GIm=tk*Fco+En{Ex>SLDDFh%Wg%9W*SrlG*RHgxey z07?yQe;}O0Hu@zD1Vdr=5nKvYomo)A~=8q}4>xkyAN?-E_G)V2DaNxa3AvF7b6lpSib9 zm#7#`1&QhYi)5l#QqBmwX)`dJ^J|L%gSr%>=}1$e@(ALHMZs5(Z$xFnrD}{Z4C*7> zat&91wp763(wB^wjK+x}iNIaM-Ri68nS%B*Qf0_?OD^ySv<0XK4FZ0JiVKu5^-fA8Z-HOfE9aYUc9ns$2ADP~&-iALC;e9bY zn-QnA%I8!smSdPN4$~=4S}D#HEKX=GPWQBk9I*UNXNjROt(R8lapU>Ovl0jq_nN7i zg`F!n{cfN8{s!NZQ*t9 z>MPsKsy<&yihOiQszgfWE!L;$EN~lSS4?cf?-HSIdl7p|V<}^ud@@J#5>Ok6I?v)l8C=LrSM07c2+pYH4Icsh+=gC6Rkh}R)odf>^l zLGK%zy|zqdK^fE+ZDzqJG0A*i|9y7C@8f>%oPDhBLG0tzZ=KTG-g&T1$Q<5bu5W=S zLP#0>c z&FGt8SGWhdBSxTK^?MhlR{z!RDAhlhpdyQdqT{P`bs8bmG6&3-@4N}zypalbVEGQS z2DEwEp8_iA`!_cLssT=+um;l%;cXu<$@Nl3YHd=x>Vw03>9JS6Y0NBKXkou(z$ za+9|6j~&~UkHU^44X@FnKbQ`votb?SHD(4a@O&~9^AiqC1cOAs7tQDhMu{ryPqo|# z=qT+^L!IGm|4sUpq&#nQZqkqY1r&`<+1&^}jGh@BaoC%|jOnhV`v&3zwuR0g>L5-- z>qCBkW08<&mgk~&Wum7f(fSy6)s1xyUW286&S;UZAr2wcO8hi8xPn2dJt93-p~_!E zLVR@E6;7zgIIYrU@b+H?Qh%PaxYG@iwCX;Vp0t{EZSwt2jmBo z!p0v`nQ>B>hfywv)m#%|Pm=Ozs0Vkm@{7Fl!0FzqW&}i(1fwrQYd}8_IHED{N68%k z)DX&X75dD7eKLRb7N?nzbVcmJqFoWGnnm-L>n)us<6HbgqcHY%L~U2QRwA`zj5a;# zbR^xRtyXne()A13$miOSPE46sNho>*3Py=2K3;nfhO+#yY=d6r58sM~((znnTXjEX zx;a19b^P;x`wi)R$~u`E^p)&*>EZn;V?|^8{YiVMdoleKS|}_*TY_L}ENwdT{#m>0 zKWl>fmDc=Te?s!j3y5ZZSSH`-TQ+h_r!k4p&&yxuLuU|5Bs>9DiTH96`2_iNmNj$C z4Knii1u9HX)>MVP*p?ju6{Wp6s0q9! z+!&>{75fS47IirAEmTM`d@WGx}cEdfr?Xj z>rM=7)L*A8Cnww}K_@%hs7<|BLWUk6h1Sk+&dkhLu?(wU0jJ`3ZfMB_znCegA-Jzy zo1Y@gwVn5#5tU5hG~G6j_7(Y+K0Vu%^Bp^}8J2UB9CQ8tjmK_Sj=$@&>(V`PRg(8R z>ig#Y`!=8iR3zPnn#5G@wv2=K_wmxuWAS}yK@as`UiIn@T;V%{aCcsM@aXy| zesIb83~kSAr&jd(6W4QQzL-G-aLmHh03F(+1Ad0;eCSDwRYt4BR6O% zm;3#1VBQWvUAoryA(K;b0cR;z{9MF^scP$2hO%LM)_CZ=fmw}U#1iyHenIkQXq|Ae zkajnX8MZG)W0w5K>!EunE@&s4h;@VI4^oDsllI&j6qh&8aGfR6et?Vlw?mr#A1_3S zM2dI{9JDL>D|y&fff8W`!lbZ~Z+9a;8Xg)y>j@eN-mB~8RA3d~rQN0dv$VIc|G@l& zRk@fQRU(~j&rU(#JGh)0BShK!XZz%;Zp}gE0~YnQv&5liNgGzrECaT1CXRX5L3}K` zuT?u0jcI}nj!Lb1BT5TU2IHfp0Nvo9$c(tQk83-}yT?JoudfXbB3WvO(dKF$!RBhP z4Q)wTSL{&HoD{v!Vszj!Z`CM=bYaP?&){LsDc&54tX~Y>xXdq??IUo)Rlp`*16@kA zxmRsnYP10^8p(PJ%hMjv3a@PlJDO4q*nWg>7qy@eM>UKcM=3IKlOay|uX3P!+mcc{ z<}o zc?XEj+&;0#+L`%U*RJpvd#8a zN$;#+hS(~Z&$ELw`7+0*1XK%(I=i4p9$U6n1+8rLHFaa2O*fHO8F~f6w*)>ozYk-d zhG-4kCqN3#>Fsg=>Z%03A=lan=h&AW%0n9cU=lQY5(r1Twfp2n$L4;p0ih_n_m>9Q z(E_{~xkFRSqWZWV`OF!^5_v%?vZQEP3KoKle-#yx+H$9T*lJqFGO$Op0pNTNWI?+0|p$@YBqUiJ|80{0}}+$$g7 z681|ge)mQ51uFBF8eF1LuTIX8mq@PApAO>E7~Ikj4QC|y%4yDO9w4=b*%h=MhqH!l}s<= zu~5)q5*pXEv|iR;thAkWwIEx8uTT}rC0kUqG;cs%p-t$5ZEhO2yh_h4Ok|jxn^pV8 z$c>l!n2wYloIdiy_=mB=d?E4dC)G^LZQ}1lI%`_xU)nme#&pnLwSeWB*_q*)>6z`B^_e-j1-TU~PYkc--?Fjo@r1G2 zF|IMEar8Ypr!tQqk0g%@4^Ycmdw+W%$P?qQ(75#2p!S?!a{qIRRtK%_7=BT|eVC3) zvar08Jp3p^IP(ijAWJWcX);H0O|q4IlxcXu1m~!Vy=6VO?g}##i#78xGYLyN%PNZ( z^Ak%5vwpI1azZj!@^x}VGLyz|srIQx6_1UAPMfxumY24d?vu`wHnL8Lj(kO41>OSV zvHLO2G50arv7U8c!|;lgz9G!Xy0yN&ZIfNiS+%Pcrj}5JbopRKQMq{qL3xVJZ-vHG zTgCKs{DuM>kH)M<1lS8^Xkndqi5IM4Mq*52UDi0iRJe3xQ)hGAD5YChG2S@SxN;Y6 z8)%yVbC8f?n|=E4wEDF8^v`MiX~wDXs%e{r=BY;8DtZ0jsil|OQ`DXAiO)&@9sJ$r zJM25iUd3npz zds>HDr|$hV(>2RAYc+#4>(ht)Tl{DIyZpz^8_hc=(S4RKt(g+$;8a&vH^@PI|MKGU zq`;KGoc0mvX}N=jz@QMlK#_ns|GpqehQfr#KFU7hzRtd*DMD z>&WZ&>)h*bd7ve0+vs_Ct4gJ?rjlkr*_8Uu(K+!J@h0&uqnmo`Knq=SVQXQVS=(M4 zeoJz5avQ+4!m+~1*4ft8*3G3EqqS9UP`^ljU!Oo<6CAJWw7LdxTgr5HbGmo92j08h zyWBfrI%B$|v`V)zfz{70<`Q&z8@S+!EU6K|P=m&;kgub_UskY@Rt#I8eA!IKd2s zIcCGWbsJpDkdGVRyNehqjU?(x;v-m zWG7^2EZ5PO(YG32*6pewuJ&8VcZkNh+_}{`69gTi0I7iJLwq2CkX}e01Q#+3ae~Bv zQhaiiZnb^v45kR~3w%Vp-*Z5c}(-M?MUjF z@6hxn@lN;F^=b2d@(%IV?=bF2=-}!=?U48FW_udChl(m5gq5gQg87aJ8@?;Psv>jb~m`bGI=`sMjW_@($|zx{iwek*?a^H%?s@n-zC z>reO-alu~*3#||FQ2f3tDnJ*(2cbV8AYd~m&n05U_3B^FrhH1FtISUFqtsH zGrzk4P0-k9w=bk}!L31_e>{UwB){jp=5*&^=S=5>|5Uf|wotLqv5>N`E9R)DsTaNh zS}0iPTNqn7S$J6}S@<3NEM{_McII@Za~5^xaHeGrYN!@DK@aI2c4%^laj0@QcUX7m zyy&`^a{nL^;xVK`|-Mr1}W8?Msp5DoigNgdZFov|4yMTRSV=h~GHeXx*6H{J8PH zF}jia5pK!hHAaFu7++&oLtX=@fz))=_|^o} z+j@|Qg#+x#aG-k*v!F^ElE3-!i3SDtd)RAOci3iFZQtL%rEe~|bR4wGDSwlSmAL8B zaBahq!sf#?aY%5|afNW6a6)jTap-Z(aR_iy5>#d~oatVMEjW|L0swHz%pEmSRxExawF%UR%faNLOuxr{4a3{4EZ673`%8x7m; z2LWKTz+me3WY}Il@CxX;_i5+T-lyH0NuqewG%mU#PIK>x#Ee4$CnsWH8c@ecW2byX zJH1Y{NW@%zB03{F15qGTKpGgmpD`kk?(}&dDEFg;!FnVUrEsgnxzy`uV2-6kv}9|} ze=c?|bgo#!;ai}Uf|b6Nv6YjRmz9#0-_g%fCKqNG zP8T|t&n^O*BRu=9PQ5K9;IkIKJxKg2eG|W%_*pC%yCn}e>Qn}_1{Up23{_0(C$6To zak{yjF}08Y`F8Eb*OJ=U?tj5HOc=Km0Vj6>KTs`sY?Yp7r=1xyQ_fOZWe5r*W?p6k zXQ^lMW{qdJXA)*y4wnyuomE?TKvW<`5HCn{EejG4i93^_kZ~)F$&V>gDwr%}%V#rn zSFxPn=X(9YoiMUv>S>0;8I+p)<85qX?Ba*E*$*?DLP6Dp)cBIov5`4*Vy^Mj#<7vH zqcNsb^i+k^id6knpVYwA-qgHQ+|*g&BkC#y1H=vtFb4Sj3EUYnxk(MB9cv z1>EJaiP5~o-oTQ_tN+33wD*U+&~nwWDt=qw{qZJzW`8h*ol2MP3j4SIVb6q48yO5| zgKUR*_U`O`$NOgnUEAQ;7txD0!A3+r#C1b{WS#wgt{7JTvHFRC1%W9+@O6;}Tg{k2wha9q67oP$3i$B^S8qT3#+@m~u5P`!BJdr&wm5Jp#ZM{d-(P4%yrid-7e;kar7F0`ygJX zdTo~p-VMbKz=p0kWC4jth?{>3rAliH;q*5xtA#_rd9W{^)tbezR0YZ7+SGr!Y_BUy z8XrMBq>dPRd|tTKfb@V23OF)2vTp_wGDx3^V95>M|6n_1d{;qgtAbMohr~?*%Z|#Ry_6zy$5;)ji zV*h#VKPKo0!`knP@SRcL2JjrQ{a(Tpo@tDRDpo$&z?(BzX@0$;4<<)*yTlIjdT=K? zYkz#i_d}S_Ek50eM}oiVT)c<0mbFb_A);g$V|i3`_tCx|c0hUHy&&6Y>$>+p?~MRe z%D?<)@eH{OQ@NAkwlrEVB^*~LND7Zw-9jx#d7dZjvo+G`+@69hV8$DLuOK?bQne@K)-^7`HP5CgLV4nzX;P<3!W3 z%Ao%s?9e>D@*Doq{=rgMoj1urZx`zZHsvC}^kOqf?X@`DTn(-};nI6ygq>4-vsGEp zLpZ12U|iF$8{R2B>4@kIgAc=BW$=$OZ2z^4agqr+0=I;BNP{!G{zp3-${A6ot#ce3 zjvF60Wao@ULko@RU3Yn>LIU)=sKqOlXL)o!M>J5`kqHI-uOi4q#iX==lyTDg52#BtMHLDwytO{OoOMcENE#l<8MW4>#V#FhFwvF$1b#KqW(TDMp##CMQbzak@vN)ZBg{S7 zQJ`a3su?bhc%FIzLucq(|YtI%`(*wj*sAQkvjc#NwU9DaEgU+I!HP1g|t2dU>qv56j6tMq%My77n2(5 z;fhFrp!*<%DcoTM;nlU9g3XQ#fA1Yf6eyPb2u1iT3Hjonn61lv0hmNV`F-4x3|UGYWZ#R(JMi&<7{t_aE71FlgYrO?VusNAq{%ehIZ`|Jg?OQZYYOkhb$4AF~J<+;g#J}tNQ_>>N z^Tv?l8r6NnTUX=Gvw_Gf?JXg5coTwu>qsXtNIv`ACLRap9`)|zTra{p+`sL{W@2sr zfV@vgZh-V7E{_=|rv~}d_G^i-$%;K0Ky%WMP_857VWt}tu6_G(A2?oYEj2kFYZn~F zvQ)%EXo+fLIc;m%4Zsef<^P=WZ&$@a8>JP`xr{u=sTIA(gT!ieO4_H9eu(*dekU5g z>LXe2toL2P;kztk$4tBfB&17#4tpESHOH_y(wo6jQV_fo4n;nL~j()?~w}7l?!IXyoK7Q-`eeXLmEohScd60KaAO!x9i`x zGKc1{-~iD&@;nOR$?llHjzp6~J*+l{?(rRAGdKKEoBoEX*4Sy-QZqR?A2qqPuIN4D_@YIfkwE_NgSknIo&zlG-T28%K;XHnux@#4N8S(1UKho*G^*6Gpr zp39{vww}ZFOerlqXzBjrU9?^AyEJ~0#OmUP+&XGez}OO5$l8Cb-%%^$k2lVh><~T2 z3XKl!G-H^C?156Qt&07q^xwJvw>TF46Xr{lS;LT{_kXq<`@5e(E93vd^j|$TzV76b ziFb&4OeG+T{KwEerea~tB0Z#WP1!3j`hN~(NtH|-A}{JWEX@Wzpru&YlT;GD+4(=1 zvG4UQbbN82&meo<+voq9kv8)Ee~CT6R}(!qP`moO@c;Wxw86O%(S`Jj+5ubI*OlEH zl~go%^`Zi$-CKf<;Mg<*FtIpV;Mwwn&0ua631l-j`n~*9Kh=`XJKcz1*4X9DzmvXK z*M7Le>+UcbB9QDLyy_>^<MaX z|0r=$A=>Jkcf5&R!8l7l5lG~INq)5X5`a$oysAS~3D@z?296g2b~Y05n~37wOW;30 ztQ*YVdlFN^AJUK|dMPcMk+1H>%?J++Erif)L%JIcJx~AF(VW9;!Wkg&!jS}k8x5;% z32m5yUR4g*{_m_&#eylQQKj6kq$6AI_C>Aqyhz1IEa~W}L~UKE;L(?H{$BO}C_-7% zgnwfEW$^x_%-;vEx(eY=y{qGY3Z--drZvRfg6ypSpYgp7-h52;wrEfE(+8n5>XYXG zQ)Wpmj6=-`Es0Q)w!G@kZBlgyj;m(R8RL+qL1I-wJuj(Uzdj7j+6t!NzD62P~B z)F1iFZX7iZx65Y+wF_eE^-y6fA#9ZE1$Hg#ZA^UW}YXMcS#PsEgN{8{})1h^D~g#>R%gDt2K-f zTm3Uc*r69U<2)F)5F)ar?`<9a-=`S%z{Kiu5+(l#rfrzgK(+nj6GTXq}K={Q}js7=Exz=%57zA@zZU)lJO+me>RcBkh;as&Q^Q@4paye+g z04?M!3f}010FIp}GjA9EpRL+dMIAI?gLrcnrEXS20VLDb)SkBAsv;bV9-+)s$+lbE zBJVsos4RtkdS zo*YZ!ZLyoL+a#;6mr=HF4+D*zi+qhG2*bV!kq_$Yj!w5E7TkBG9p5uvgOmgvC;0kO zv;7uANeL#x4LMlpQooUJ??&Jm6=>0FMDQ@XRjIEe-9MNQb)KmBI-T~{>v_?>-Kh91 z0-m`J4Lo;Wrsp&Lj9${1-jvu}h8hS+MzdSyR2Km@V~YTF16SqI27>eg>#Dlo_AI_2~8J@WCA zhdvuO%J|px>iEpZst+W86nZoa34}H=Q9?X+0_`~-s*J9xdY(Ix-p2NebAK;8h^N^- ze`8J2WaJs4F%53i^OA*mmBoHd&bA%#%^DpG|00X}eDC_cHsg(vUNoU0`8oD2oY#*p zw4DBJ#Nrh_7O6Jw`9t=Wd**cdPz=#{C;E(dV{Ap_-ug#NN_(8wCx++r&**PWty}?x zRxeKvz7xN)7!o~(#zcoW@;LzvIjToe_l3q7`}`PGM2dwdw2ZP}*V2EsU~e&^tArl# znva|o#>q33v`^L@7QU|C`Yn2{-}^0&>Ud|HpVv)_dWlV*Lr?1#?ynKYH&B!@^WPt7 zOd;{)ev6ktZpPp-`X1knenCg>f#FUY5?5Ixnp|lu?#$dxurcfXIg$MYCC0Z8q}?jaoHJHA^yzKf$CF z?~NDj$L{uX64iz9$2}VDox)-ssky7ql~^Bzc=VN#F4tveMU!V|g~xP?u~B_TW)VJ6 z35Pi}!u>{7N~;Y0eQ-h3vy1RS>RHX@lX&cw?4RxTSncjOn_lqmc(T4V8^Co((<>Mt zf19SkMl6|uVCXb2xP=qet4%1mjqO^kP zxFBK)!E`|Ip_DM44Y#c?Fal!d}`gA8~Vpja+s$`0X^lKd_X zsl)uPHYs-(IHQqX-<>7+P-aY?t5dkXln~+;H@Ms}$tYoAxSG8jDMfPs(CeS~sz@8t zv1Q1VkHRMs5OROQo1fGnnBp{^#o0L2C@ns4xih`wJ5cyg1y~kVDo9v8cq_r=mo@T>osfp#*(|Hc}b5sXvYqqNQ1csoWvqn-K4>p5Fcl?#?(F zVrXEp#q8<4pXG`F;0UB{j>B#JF(sIrnIC(QNev$O-}yPt6CvjfwF4~sQoQ1g4@a+o z+vDTr1qNrI7lIeZp{=XWkq^KE9P$Ikd5VR7Y5OV}(QY42{x8Hj@c{khXf^$u-DD zwTKfTfmC`w!zcbI6|)~?oW$7aql$e3lO&dJE&@&NQTUpCxtzO_%e5H_e@7FN&4HK* z>3!kG(z328x+<#>&J|WttBYUgT&FS1#%%Y1;kJ^WOx`j8?)^KFf^9+FV8AmeprdY( zYF3c%K=V4bvOeL6!ZRC;@@Y)Y`e7+%K0Uf4j4UOVGhcLeIo-BRS*U!#+nl2FVBQ6O zkr>B@_c3X1an3xgF*26c$Qa;uyL@N&y0mWa>R5hXXhHk5a0b6EuQPUD&u{w-sKcde zd?oLf)1_+<{4%%TV^-_G?)i_bKP=zM6_+pN#q89HIol{2YACKVs< z>YJp6zNnTvGJ$hr0sLb9H2$Ney2L~r0^Px%v(IuqC*T?NK?p-Vqn1dMmEI+g*qIFa zBTizuZYpL^V8M+bfN}WV<_2UL9%qpw!^0mJ;C%$RqWfN~zG6=gDi#GUV+muC10CN^ zvEsPPMinS57RNz$gO_bi>-PMGU)*G>f2C$Wo@=&6E?T^>$^4H*=NRJ9=HyL zxypu^9tz)E5O&VfSUJxuQug&r3X9U zm#RYj7SsF;*IA(|5YLM4FdC5pMLBCTWThL|u!yy-(8{c{;+#_eNx!O(tH%8NToSZO z&E<;=hI{)}2pK2fH9hP6ib~$(BkA1FWxk~d+1i+>?5%2RMd5Y_3*L`X*@5hjG)mto z!YDUiDx?0IrSAA3@A7cG_8ScT^P^kj=w-1m<45P?ftlVlhEIPJudL%_@8iojChK`U z-xI_<$ibzrS`rKy*0*%i8M5%!q*E=j*JIml-5OaSKvg(n%{g7DoVYqvb(Jq|tFGtD zdUS=^DUaTZPp3y%_D!#UMk=!oj-S-?(teaU3ca|u5|ko~IQRUyCzXY9`Oy*J(fKr) zkJy_1S&Z5r2Bdt22}y}(@4YuCeBK)xi5<0$*lOA9O*Oc*WTk2P_ePWF(R^%D z-7eZUdDl57O!?BNzU5lG!~`&DUfvbq=(jzFW~nl%{IG)TxzjDvRLD+ztoXU$W@Ws) zdix%IU~&}9k7w^LP6EJ=vj0vR@J6v5{VsdsCZV6%Uxm;{>YoWZt3myFq~-EVVrJ)_ z7)w)aO`A7a%G>dKPMYx0c&vdgstwgpGP7$_x*ImjIX(on=m?tAujRTR6SFuzF)Vp= zArrKqDjO{t8J@r8F6J~$?bSo20w@H3Ca2uzgZVTAu=;-OJA`fC_=tH@gLj%i zeWmk)5Ey zTD$5K=xjd~+EmqP8#rIoU*8+-3!i#GkDDTNdE}q$fTidB9rH5{M!jj|&%?N={Q5j(4iznuCq*`LF zkZbwo;>Re~m%a6KyHm|ZqJfzm$OK?-V6L>QWhyk^{-c;9u{APb)cK82GH7cg49@8B zb>+OCQeM1IWt?~KG#e9|k4O9@6KRF|r8W^nkNz;#S5D`UV{_~3J-`Dg5#z9}6@NAm z0xzO>cXaZDQf*hi$0Mt%WyR455rb_msw3>^_LRLd>2e=inBlR<-gYmHd*#4&IarjN zhp`>;0QX|aUGMzY?EO}a#F_1hS&;_2pEx`HP=)d`8W9@r!v> zt&gRBrRK14nL>P4!`f3`Kx5$FE*|A}Y^oY9g)F~xRnNB&7S>lqo-Do>pyWt8(enMi zI#fF~sk3^5ey|xsWxp%r)Al%=I&X|R<~p}>UQQlN6)TG=rrBM3ICS6l$yDTkT{xhP zz8Y7UooZ?{N-0>Iw`TOTu{m*>%dx##?Ejo-K+;XxkUVPLFt(`0Y!O=}Q}kvf>NQ_B zSaO5PqESFcU08mLGjgKBjq#>4Gh6Rj_akqhKdZb&o9DOMh^ALn&!x^oZSVq0&zhr0 zT~f)a*ssSu_*qyANnW|?*3)l0^0z&qbs?WVWT!qN@>P3Z5IsDUg1UR9%$(EPt$!G$ z500KqZ9e(fe4Xh%Pt!E*`hBqgOU=qLi@h(aqlEAk{lH<+z*TO0V0^;Dyvy69RXA|Z zzk+U7da_@u@>^t>Jrl--awcJapHgL#8f$+rz3<`~yz&POZB|Bs9oqqF_VlsKeYcvA zzoOd1rO*gEFMrtBD?patG?>w_wNwW5<&aP#N|uX77p@J9iNy) z5lu{26;~FnPQSj9%YOBaA-baqx_s>;v}rX~-9vnc1Z6^GgT z_?AzHr2s5c@#)=bL&X&O-SeAr&X5VC#8CXTA>S^#?r$I;`l`qHd9h#@wj2Orzs~n7 zydk_MI_l-jx9!|TXsKlaEK8WRWIG5#GhCe4CiFsK7F73&4w!vb$7}hIZj_w_g~)g( zFB*sSPQ^eJ&dP#NPk&S7-KxYM-XIxH#I!hyr$6MOmxtg!ZboI);pm#z~x~XDU zi<^JR^%{>(3b)^K7*=#4*4F?%17C>yv)kmtr`%kZ=6~YMu=d^UM!;_vuQqHGxW2{d z`>s1)S-G?Q9BHWCFX2)A?bs=P*^}O~TLrmh5GQsrgmP*#z~MY!-*Iq&k0SjQWgfkq z_PBsc15u~9NSv1aJS2Zz(@6&gHRmTKoMd%)7r5wR z>r%d7-eO&&Z>|Lk1f^~DvJ9|8yY!Qd-oD-L#l;FFZxL0C-2VEr^fLPP<2~C8ZPuuX zY%g!Hp4Ui8@G!_w(#ta|=0yzK50^Uh%05&2vPG%xjAm{r(`+J|62*3g)Vq;#+XuyGOrfPW4C!_Z$A8|(WySl&s1 zzr$l={@Z1GH?2+dU;JnJPyhe={Qr9V3uf=O-T`~B{~K6;>Hj-Wf93uYr1##xKmISM zy=%M!_7A;(gVsC!-vISa{a+aU7gzxAoPUPJ{|{LH!}>z!vN18gU+BMFHcsF_Y5%GBx5dW(w`P40(7!EK&cAlq-mm{V1WbRgC=(IOdn9lG z-@}RHJp@?)YW$6KRyH6JE9-mQ0{;T_9uI$M9Dx6bjQ;|_U;aM;;Nf8uHMepyc3>2> z(swczHa4_1GG_d4Y-8$VM#KpOG6VkEVJ2c>VqxXr;Nydb`JXqMTjsI%S3Sjnx`U<& zvXNyFnPp9@mioG}rYOrg(`{ceJ6spmclu<#K49val?2gOV&ZR1f#u({#AouyVCgGH z$cK(XoW6Q*B`|E&Nk28;g%r9=F9)lp=bVrewE-L}B6IW2pQabu-`I9Mo%TjY(;UY$ zIRTDUP)r~6#5#qHjbu!pa(8oJKV&SzY&N&?PA~7>H>$zez2SaHcRyLH*;{qEPN{*o z9sfY_s`iw*zBgYZwcUBz^r_P3t&FovZURu${b7_Eyv$!o12o_@^M&lpf$H?}*_?+r z=#jNl_Zu2aKu?LJ({`>P4LyO)hGrVq!qMc1#NHgZ(CL5eo=(b09=)$aH7-81jF)+{u%dbJ0$ICFtTd?- zu$av}`hVoD{7H6P#Enz&k;!d+yzN;&00Zbpc|jCO3G%OHuIqBj#Ee%%BKjhQWDXox zNPW)$o-l&Z%p=-Fb`do!o(#11v8)i5HNBwH+yFOQ zy0xd{gRJ7SZ%-QTg+xI|MekXF%;gX-9N_D?wm)`aJFh+CgOTbt#cKK$ME#QvA=Ec0 zFAu%XzDyS+Cr=!#_IY6=#})eUC$N*!hy1cU6GFcZI@Al4B>$GTsxa?Q2ELZq3e-vO z<&}~W1jF!JZY=&!{(ngQx4J{Z;PA}tgV6^uCX8<*t)kQ&s+J&%&nr|NTV38CR0}8v zT8HO+zp(tF*rb4gs{A2cz|j>n>DZIKa=wJXtw-r|+HJ~Sa2n)YNr=!X(2Llm&+#J% zd}kQlU4;F*vHxqqOKbfu@-sNKs)b*3?tAtx3!QgQ;$BCG{#QCx9i29 zTB|erSFrr&(Fs$hHz2YLn64@8?MO69nW4^BxZihHH%!~->S z(e!0=G85=T^Vm@?S!H_Cj(S_eu+e33c)7h@6!`Tj7!>RJEM4FKr<0dR`+e|ixEs_eoS?cxi zxIH2G8pC%)jtj*PWz(n`g8H-IHw;orY(r8Z7bwNR*gE=Z8Dv2%3Mpo6mk7#{@yJt7@=p2}h@GFlO!bwr zdj^Y}WOh*HJ&wC&pwkEO?%eZ3LX06NF)E@2%6f!|JT(gIC*(&`qv?uVL;hU=5-tczjbvsF?##8Tkc_YB=zhrIGrV-o7<=u@;^F}c;Rb$pOhUstIf%}NQy zgiOjuGKLaA4HQLr8155g;hDRBPi$DP*1Bk0%+7y%5`|j2PewF_-iP*_jxM2weo8@& zOBo1FFCXcfS`$*5<5gn2R;_Y&59G-w_29oYID7Ce?|Gds{rGD;)DCLl?&iTr*3StK z-El($~%CDED=$9b>GIx{c|VA+KNG#)Nu1 zkjS%l%CFPSAITAToM~xuSjqlPcZ~?RaSHyz9e1yzDVt)I)8_YGIfDaF5mGE+L-puJ zePG3@L$|JZZ}Q0=K9-H0rZu=4o0-eK4~SwRqaS!aEJ&|jO(kbb2nvJv(}A|Bkrpu8 zW;ACv^<&=HQOPjZv}9b!VACoo{JR%lb+$`R{3Zt7pr+{^wK1~I1s{Y0li$^%ti?E) zC0<*;iDk7(t7iw{{@5DZ{>Nv}U$!wCFTg4W@e^60v!7lj41exr$}?3;W!l;bVy>!b z`aL**6hJd2vJHYhoQPZfKz39*kJz{v5&Sk^`yLuVVUe!z+~_VKK1B5ore8h-Z}7pr z@`Ff5g#sp-fe2Wt=5G61b!wca;s!@%9e>PG=M>ljy0&nSf~`OCm+UJqYg+sK+PY$G zEtYTj8C6DGA#2XeOOqjCl{{7B&C~SouGGsJj;2Rhm_}i7_L1|mi zH!$!US{my`2}86T^GRL1iq35j*Q1KlwdbvH$WdH`QaDa%g1uU^#@=nQO36(LZFuCI zgi=$z&uaJ(kmI58+{?jukA3yvciL&h6mD9pb423Z?evNYP=TR&HW zs-5OP<3?=3F)ghbL%?pqD+zwbx8np9$G6M}?;N}8)<~Q8p_3K1A*Z61YaG%El*M$$H zVYHSCBG9+i49_7Pio)sCALO5mw zhnf;|{CH?Q;(e9HPhDZlD<&rBtT;w8{zIK0mcSM+T@K+KrwWa)!!RtV)5hLVOQlX| z>`FvJ&r>3K;perriq?LHu+Y)nQD zZS{>e)laUghu7=&Mf)v`L_SB>UsR%q)S5nbh0n>Hh0nQGjI35N_r%pXasD75L4t!f zbqfh@s2IC0bG5O#xCd_Kd5+)UabM1r>l(WbkJ47KKpavjJ}@5|UJi_VMe^Il!i$Gs zz4&=z{_$FPm+(LS;J?y^{dmt5I{<#0gB zS(}8waNq|sKuw_y)4=)&6EWH+f+0n%_$)(mKJKfw?y>URpRrfy%FxyWZ0kz=JZcOf zmA#R9)&K^l_i4crWEL#pcza}tRN~wme$G=#F#)?pA!E(|-u>(dpUePj=|_#Um3+W% z$9?nmCFaQ2VhXpj6Pr#^FPv|fesW{jx)LwI@G(YR=ExUvZzeK~Sqd1DG6ZaLPNN9f zWLdh0Q#@q_7?Q9H1w!%(c%`2|eBzs6q9~TroR?dcTa{ak-H2Tv0)koHa981@KWhdQ z2yFbc-o*Kt%gvJ#XRSTS)}USwxaTZVM}TgYu{VgpgK-*qJcaV6#5S=-D`xTJ5AJJX z@#PooZgShq?)Z6zwnIF(GF6K884P+oK@|SzZ{;3q)uUOH=MYNtRFmhX2Q!x3_PW=3 zWB&5_#&D+&d~=Cge#u=vVsOdrX5tHr*n3ucJ7W7lTC2ifoiw6h=)gP;gTCx$5dVe9 z7A*65v66su8*#f@(?*cDB4sB(n`(7!=DSR)_9am^V%r+*MU)V#U;}NarZ7xupXcO5fqNb=FC%JvnRC^0_MUE}x zdtYjo?Vcn0QhDo*T^20cli@oozCf{OQi$gRp*yg?f`w>k;^vk$z4kqnTIE$Tw2;0M zxgF}P+jKL}4ihdfq8$NqQ|BI=C&*AYY1_uEAC8G|nle%$mqfSK|BEU0GjX82LSZdXpTSvD{Z>q=aK^>^+|Hc{pSLZv{&yptATM zjp1ar`1uzLywLsIpbFMXiEM1bws9<{l_jRYQb0%Sb=Mnv8GRaXu$tmrh6$)QcX` zjk%(G(9huX4SU73cj&81t$Z^~Chy4oPUm!B^^`WETB~*JKz|iJqb|qQG>8hf@X+GH zaw)`lx2I$jvLXqCTU4L)G#nmYQ(H>t&HBpXd)@ZF8uH8sW3E3S4ntKO7ZgqRrE|?K z)%@@z;Sygn|M}U$+Qo0?8$*gG(jD>M#TTrPTAM%RS#StqusH45p@?Sawcz}?e;XvZ zk-H-E0vKgVt|hbiD;!z10t%~C^UT97yoifvLxf7tUr9_kl(elgw3NFZubea-&6}va zrj(RSOc2gIX%y;>WYl~5WqEHI5l2e~oA;%l_moC;rjRayxKgGr4$g{yq#|m^(w4Bt zjtHWyeRozu_R*~OQoK^A2{oHdbs!?fl!CR5o*gAQ@s2;Cx z+jzj1lZ()-aGRh?Txa2}AjhQdNa*#=-QDWHYHk9!g<)$oe0AjEl`XY&@yGcc%`RIu zK*i(Z6FJiu!>{mj7uF@VXJeze8It_bFy@5IRosF3p4+5g!=u8$MPq4=fI zLq#v5rC(Z(aKU6DL75DhzksZL^=e6%7nzl7;b`LITO_rwxYyC#Uopq*1FEbXteDf$ zl`8LRcR;;D-D?S_HFHORM_-tk7L>9U5Uu1|zaKJ52*VsTu20qQ-7MKL^I-H1vdpDu zebzFG=678EHEI~AyUuAlwadPA(2VMcp_7S!)>_DSC~xKt56YbQx!YqWT<68v!wq%kYj0WdM&_B&H&?0Kdp2HK*3f)k>H_}pAe}Yn@O@BFQ3sKi^E3$6fnV*VEIcZ_ zu96aRJpI$=<=AcV?qq6o|1346n?Ia@?q}Gm3BtHDP*PY=(upgDzS7B^q?j+qr=(yG zE|S=9Zfil4R~BK~K|vQd5zOU}gnUCWW?}s0{{xfKoqQ_>7-ew@!@PaD6`RnDLh%t( zTiO}^QH{;LBAQt(f_-8>MHk)l_`c|^=3#dunXdUQ?CN5nd0#boE)XZ=sv58VG>FjM z$}{A=Mb(t|ZN&D}^6gId_U(4NnEOxaSe`3KTU|MSqvs(Ad&YIuo$j^tJ`YQFT|#Ty zQ@%#x99Fpkr8BEny;7tIcHfE_*Ne}#K+nZV=@LV46faR~muG-5ari`rhg*uF%)x_M zp-~;MUvFFI$$2I)lsyY;xO)|0t7B9OtEEb&3D=CkJeuT4yk!;YCNr<=T>G0hq>m`r zg^rGf%%wkmrtbkZOgqdq&Re>Od?`m&&4_&00#^+?UD$ z$#j{jm<}dkOOc_L7v@?Kj&}6nmHg(87!D3u&8(RFp9UQ@tW@CoRWORp0`cUhn}q+c zlN6bSAAL^Zju{U6;e?LNsQB@zDVFVf(no1=-f@oEBX z9)E8VI$TCagbBHNZW1U;k|3+RNFavqU+n*w9jkvocM+=gRhm?_BWya}SoD8Ei<8%Ew zL56N8K34*#Hg1Me_gTnz$~(TtjAlo2=4OEOa9#m)9ctvvvU%t6lIi>X66TN5;!lRM z&mUQ^LFaB@yQzoK2iPXzG#t#Lxsoe&qkhA$H$Dt_+a(F|eQ~+RXREIdq+(IQ)fz%x zmUYzC_9xf%yHN>`h}k;Mje%Um?c(MrEfp_IkrwCnD-fojx%@_n?K}Ntj21$4~Wo z8DnXS{4BR2&pi+>?|B%`LVLOKfe{f^4j?*Bj1)GCr9h)zwDGCBatt58Ad$4}E7hG7 zP8%c(W@_Ea6^@n@x874b6-VVXWvw}6>Y23hgBcF*<%>{) z!9PTvk<|y&CO^xBzV+~R za}D4EM+K$C^61aT)#$Hw_ha@zxwYpPSjb)fb~VR6JY8>{`~riehWE#4b+sR$jtJ&V z^(4({;$HTfyS|)`(iUq45uf$}OGm88++0xq9I?yIb^ZLH;srpHo7-aE_YwicH66)n zs;n!o85Im}*5im(L$!5q5RKk#gc#}`H(2^KqPA$dh>5&)(+NXIYgb16;?}##5f`V= zPcT$DnNg#8-$1k!J^3{GHg8N}yWV{VmW2 z&ocd;4u|IE(N5&I?~`XgNF)`R>~21YqOr8e=24-VfQE~N#ekO9JlUYUYHj=J#UgA^ zTW^s;QSf%kh63mlI|=4^^sSB-I|@(H@SKvas*WZ>8T~#{gCA-iOwqhS9Z>a4@(wa_ z0}m{Z^G$&k^ZphO7EYij9K2Y*Xzt!8jeWO#kJV&VQYd>n4+w;4OLPQUb{(xoV#_X$dJT-n+YacI0jb`_wOB)c$3n?!azkO-`@mFC@r z*eWhcTN?-E=~z#ZbN!R$OSBKK4mR>R7OnZ}6%F9IubWppRV}Uk-Cp+nW4)26^a~zG z{kH`TGFppvkllBb zPd}lV;JDeFd1hL!2(2Yf$5khc*m_IlXjMvg%>sAl+(t6hy}hb{^gX+bc&m%cfVXkk ziBs;|mk7lSSdBtuC_s^<<5?(74Z)h63cmSS99MGPG9D~n({}s4rtFyEGdtt(iN;%+ zY(4z?bMZaDL8y2u*4dWnjH5L^PoBlRUW+VDP$75$!=&)2&0I(P%HhGBvQ`7WXbvyN zjGpZzjaY=bPjRR|_u521pW(ms#xN zG>jaungB#=5&+EKK|==)MUFfpEB8FvHJ3WsA4T=la0kvqE`ETKC{797%-RHH?jgQ? z14VURsOHVvu?(ZXsH%%%^J_cuXgluQk~2^A4au53LHW8XnkUE60VuVNEn6ZTb99z? zvR-7Ql7`sZtoP8Wn?Da9YT_hsbw~e|8&ejJrhzv+`o>LQ1Mu8a)`F5RN=hP z;%qRZZ&O)5z|8>5J3nVhpXgftKGI!KqP;5vuizAoNW_$Ym8HiL(k1YdYW9pJ@B?6d zTx|A+#!Fgm0NffT`=T1jj9NEI(zG&TAmdeh!izC0+VTo&%f_OoJVZ~t4$avGu7aQS z^^N8O&*V=lELmqrvYG+)^kCl~mXF^ZL^9xH`~(A5wua6Z0X&%y`QLfM_9J2$!4VH` zF#FzG?Pp)kY8SCdO2Nq;VP(FI4hd5-zRsdWsY*H8~YERaq;f-6_1h-LyA} znttE8^xBQEZ0D#cG8_J8SjpbcGd22@ANT5d7QO(UmA%affG7@HEakrNUUe`+W0k^{oLXA!KLT zNh}?tZ)3kDyPfbeO5UMiXr#W*L*MPDWHiB!T~LB}hTB)xGJDu`?Vn>W?l3W`#*AKg zVp{_P6=+0d`TO*F#$DcIx--utEl8B}L}s6qUO4 z$+<0koC_zqYu$#U@v@s&;!=`Ms(NL4D>W{`>f7(jz_2Es^{eDY$Lg2>i=LhsDsInS zj*jP(+3EKU!#IxC%O-obi{Brr&6YnYQyrEtgQOi|jWTdGXGs(g;Dn{k6UXN?0Ty=m|2baMTx=&fp2mOIbmLQE>pAKfv_or!@n-^W~a_+RWZiLVjU z+hvdF>~Ss1a9tA8jO*o2n<-_Tc6cL}=bL?hz~u*SlW4tI;;s)h3~(U0orV?8jx1hm z--q60>Nw$u!n;eB)2=%oJYWB3M<6UFXPPJ08FipxmC@XR8~ys+`DC7HU1W5RHNcB6 z-^vPdz3!98hCysWa3#I3g)E?DZ>Wtvy{a+9J&4%v8TFbM70@Fy$Q-|fcT1~PoUXfP znA&mkrZZ31{hWMjzZPplMIZQ(BR&s!bUcKe>Cj&^STvZ$%3*cZe}$gmPc2Gi%y*!9 z<28xkOHzC|<54Yepeg!4mCH9<^@jxU45$blrQ zGFu2Rt_qD2-QKmkJ}`)K!vf)izs~Kp?E}SPJ7A+JbRZEgy^wPO7Z}~vVV=k~MRw3Z z+|;WgTkX9@wf;vyo zPJh}_2DMPFN^L>F3=rXOF$Z!}h2SUl$XH#yZ}W+2OT-g?&j6O#bb)b|YfR|YMkDxX zM|Z&`Sn$H!>#CUDLOs!jwjp)l9oi9jj@A8wwjq1*F|^~yx!E@6ml$H7*!N)!3rKPX z#=kqv9mGwwDzU`?bGO|XB1iB8b%R6Ld*{oo2maQ-nvbmKk=%>9#mP&?``6M_Bg5s7Eg`nVH%PqeoIgcdoIn}KP`~ayTe%`+?5TBO7>>tt>t1kEjfjyEM z3hiSyu{+9{5CHbFZ90yb1Z$21aowVA9<;)ZiftUbBL4DijX_yofj;MRn@3HW?9T_S0IjIp14zXdwGV3mDLIHmDkzp;#uq4wZ?VmRO@;8n6uo#~5a{D#k$ zhi(}3{Vs;pl5HF&m?tGISm0J__|YcAmgBogge_(Cg@6r>lI_FQ+lwkVq{?w6dr~7c zTUGn_cy1Q!8s;c=x>!M=UHx2_@{O`=w ze2;)a%5C9+NO-0{ni4L0GSs6zSc$8q20 zD3AkTer7U>HGcAfVTAK64lWYPI{Umf_6y=}I!hO%Fseujyi+SO7cTR#?vyhUb%Xra z0@2G0tMV~kOMjt|lg`3#xhcsmb_4T3!8l1z+Bp-mOhof06wT)gY@EVmTz`)*2JKOM zFcwn~e}s-M)CD!;vr8+-KF@}lH75Sy_<;wUdOK9vY9X*E8AB;s3EfG^X8yz8&|_-% zjHF}$60+JOj3gF>ontlc0FNT^rw6yHY?~rZCo2@czvV;H76WT?4S6XOg= zBdmr){0RkrVW#eM# zPp~dr2YgI3G5KLm{rk7Lc~rPU6&g?nXuwXQ2PGo%X_bV=9Cvw=wO9fs(Gt1$$CuF1 z(6vpd2!p;qCRgTtp7O$F!+qN5rTO2`#fA$ol#Ir0=gG)}eD)hBI42xmIYImEM_JA} zuH`rFH53{%eH*N7H?gz|TE8aD@JnA}Q=w=Fj+cbeRcp^M@JMUpHay_YXRFxhc-7{0|Av^w~ZlA7A{gH<= z_&F5)ylzxqE^-CECPnZUh*5!dIf1{rq09lwAX4WdG1)|{{&@3%$26jY&XTt%Ns&mU zVJTepSjRG?SuJWxf$uQC{8IQ@KN+UJEdN_Xj-8mwDp_1Qef9$VtyA`7nv@yu?Hn)(mXbb|dMIW2Y2u$$_l zTMeK^?*#OFRo#T~JIuOpT4-4?r|PyNF8Gt9V8XIAClz{T74>_AKWiRm?soASFvw{9 z{+&%114ec{j%oE(E6>QwnH`2~>a__!UHCC5d0Fd5byT6oP5OF2>zuS6?0d4%kAO$D z*L`ei7I||>DZ+cBJbe%<687haX1QIo`7trsqrMhxMP}t`4PRY$9d-N1IM_5mpx*HC^q| z5PJKQUGja5$bzJasPY`g8FxTf9pzmzI0^yME`y;%KhCL*+oy(Opw3NysI! zERfxuLALYgqA7qRjo7oF^z$m*z=)8vlV?O$mt5!Bh_oRQLB&eiKB8OUy*Dw<09wOm z<9hw*8IMn{0>p-fnZJU(8WNm>F`RyZcw9TNhaH*MW7UUr(YEKck(@j!(_`3JCQ#8P zGEb=UWo=-dyJBbdO=oRXlheQeS`OaGo&q+Y5~vSOIfs#z@*E#CV|H1o09$#V_LhEVZ<@GKLI2)@2XYjhYBSTmOqcH+WT zkY{2ETLKB@8ZmS4wQ{^rr6z6DUFSu!GBf0+ew#=Zs2f#cn$QK0F^8aBr&~ftL9cR( zEXDQrRYIQX#j%s2?L^ZNiEbVdILJ_utW3Mt3d&DrPW}W8NaOdK+%JB=;&gG@;?VTiJdSxJ%huop<)z{MVlDqHo6yK60NcC z2g^XO=;bG&G6Bb%$JK-~C@@T@JN-8a0!JZtn6$a=?%$wk&0EWkf-CaFZ?K- zHs$$Znkvq|GzrdA92;vuO$pR@3}V8#sd+Tqt3T}Rz!_7Ey55P)cAnu$&_uBEr((jO z-yY3bPUlM;LQTC+*StWr{obE|Z-luD_cRXaudz3b2=}a6)P5z|YhKivfr|)XbsSym zs#bJ^QioMkW?_>wo`#0=MCeC=A~D(q?Evq3 zU%a#{6f9-N24NJbEQl#P^dTdr>MixnG#Nk^g2uQ6FZ73~{gpg6lSG%M?*c?TL`$x& zL*7BwH-vskJD7A?8ZYf5{YrW1@t`}13w{&y(f0Y+BPw_b zY8%fl{3^a4`CQcs^?>S5ds*ZFe`$KTKd3vn65BAs9qT%*OY)`(5_y$;#d*Mezy-g* zE&l;J12?QCUXhpJ3pCZUs9v4BeR`s;j@5(EMq;F+B zv_r#=!^lI0tklwj9lt-4XK)R^{w7;VSu7>Xcp3ZDpKvY$=}qpn^7`2+Pp#wdXWGJ~ z5P4fiIB=oGx^_MIg zXE`Z~=W!3|j=LNxgvcG&A^a}2MGLN&64eq$biQ=e>JURr{#<6tp3{uDK;&jmiS+939|&4XI8S+N0E(no69mWr(#t^~9$)ML8mSQ9z~ zltVl~uOJTcFZ&3u+pfesC!A0kt<5qudn1&CR8*wwhp&dO26x|+jo}!>U&0Q<4l>d( zl2j_25RLh5p|TcMz+eRhiDZmIe06(CnYW*Q`EUxKgP&U*e#8eGh*w*@#`SP0s~Ceh*btTqY05-jiA5CI6vh=M1o=B-jS|AbBGRE}bontx%~DeJy=d1-D!1f-Pq) zW1os&Vk?v@M8@R+v2TU1@J$`dgb!RdTp9#F5r}p@Zafq|r$41+wFJJj%(f>Uu{^PW zMovbWK$ZM`H-xvocG||eeK*)o0Ii&w8p)H174@83wp$p`(Qz5MXOcO@;?r?gp!L`H z>g4N6oGaP!xAnA6pYQi9{x7NLXMw(?3ly^?zDb?y-|xBn+tSXZA(LtJG3QAc4A}6d zs~dUa>03B9lel(2uRcuAwIV#_e|G?Li^4fc?i-Xx4W7w`A*&}Z>!uJd9UDY}0amsX0OUUX8%TihSj+gGz@shpH zphgCy1@i4?EiKjXBa5pxAq`qk%V=pP73gCx8xiPNAWkAROBw>__vR!jI%!S=GI z)>GJ#o`l5%`LVAzuk16r%2k+>sI3@n@`mK51j?Y4UumMr)%(nMFJ=z`Yf)o7hx-*5YdIy|E*F^mJV^fA?Z= zRaKd`qp@%5v+?*^zgs>MgFnypmThl*m!;16^$*TrWaB{_#n41d@_1$6YK1m^7V*HU>OI** zvG9zjc^fJPS(%JlMkRKsd*w^{$v{0}MrE_N$`e#?#!5=ho+ptRWBPbTbZ<&;7wY3|_8l+0V>8VO-s|fBw)4|~Np>}XJ*g*kEVJkJCz+PyU$j3X2 zv>p|l7#)|Wl6!sW4o32fF6NXe>ot>5#rQQNq+z8XB_N;v*jepB zUsWlC@+L*eT_pNTyHD2R2A5u0m^;7S^X6n!n2^SH#_fgz%5Hs654R|Gw(}EsrBqbB zL6)G-dNz9sF_NLh`%-&ZJ153R?|TZf_rR*t+5D5&4o%Hd#>46C6yj>j&3d^_4mUV^ zo58ta5I>ol#8zwl$-RZ=iFbg9Qtfen?{2JvjUQZoaccK8Na=Q)AbNg!9^5tnE9%zM ze$#&Ug8xFjUfD6aQB~=?wb`9=y`^mXTpGtryI0)krffCV- z9>qYD)~LU&((NAxEj|XrDr-e^s+*|RnjU|sXz@d6^gYL7xF~c@;doZF+n?p)jH3DP zYs@!C#T&9~>~-dU!ip&i>oV%&Thfc!W^QBKZ65;>l@L zIx?B{ME4@UpR#|~1sX0!ULN9_9{(C$#vYrY9m`D1qN>y1YYWUw^G|~{;p46`*h@}p zF(IIelf)y}mSUi9swS&3QVXjvau`~T-zBG&(xFNmSf8#816?c%Dq)!QRbmplMx)vqZWS|HNSlQWgi4k9Y4c9>%CFTw zt`JHwoJqu}wU5;Vr^;fvn;f5)mGz>XR+piHc57NsV#d-rj?8E33(UTjw%8zlM`8~(nvWnV;wfq=GI(=E+DM3bEw3dU3yh=U@L*Kd#-R3K_ zY|XAZ30-JlRh8pnduC<3H7rA`RCwk4Ml*cS2IhYA0w7lZaTNY!ZQ?l zJtKr1=bcq(*7b%i8)#$Ioxeth&?^Ph;&4WSQ_DvQ)|?~Mfd>ADDnaJX((d)_P1@lu z(_ECcXg7tUIy_GwjDh1r=0lzhQFZmD;3Kmm$`^n04mwzh)8)S4#T%@u7v_2Xrd1eg zHLtZx4U?Z)4sr9R+tx!TdtO7lN1ZsFe0p1%0S4OR67OI62v4k= z4%W=qR_>dq$LTCpPt$iy1=X8`UeX`&YVX(}%y&S$=TGpi*F=bC5O-&)$xfmKva(FbI|uYEQP#A?%Dl%hC0BJ~dm~dJ5Shel@B*_O|LQt%WH{>D;e{F>FrV z3573O==%5)vULsAfW9i$3_{IDO@I0pc2OBQsM}nFTHg@Zv`n|sE z6t@}TDJFZ%pG((8$hwkDGru4-Os0=;ZO^D2kp}YEF?0yGgWC2)G*m(ciL?j@kp=HdeFH&S>_+H&!EG1 zRwuUMQ;VZ1cYBaLa2Y?MP&RFfoNjEGqRd<6;XZsBP6@~<)7jFrk93XoZVfvIY@m&HKHLEE)R)ck zrSyf~rwVY4peV3>+;il~*|Ci4Wrh~Iyzd_4wOB-;0{gu_-7;W~7}yKnk`?O(|Z=HFo*H7i!9?bq&k;HB$V zl!{@yo)2lY(4aHq*>Ri4%VrBP9orJFpE(dcG?9cObtS+l79`#42zjajBTWQ=IPA|@ zOGq_lC0-~l1KDPa3!-K4+muHn!NtywT8Z14SlG&`voy9vy4cCga6^X1nv0%TNp9v2e##kW*S6C9Jc`{r%jj&E^IQax%Z3Od4)ahJ8Em-Vx zb}Xp8Etz}nRVc$v8!Xtn&Ne$jqZwI*MtvTzAc430hb)PQ>$4!pbALjZEuSynkObv~ zm%^C7QV1~{WQXNPg|6aQ(GTcy9GEtg=~Fc?P8pS z6WhWvd_eaJ*x2GQ_eIJf0;alV*o&)dd8tTa&g;d?Q@aMCF{vu>x#jxt5Z>n^orZk) zMEpsF37JCPmIbW`Efr?w{o^w~q1E)%UaJ?^UZ- z^;EB}s_Cu@EyLA?oo@B`rZV$7Xf0TQ$P5nW(4OS}j&K)gCPa|LG%_eILM-(wRSJTc zC^Zk#aKJ@IVf_%Z45Yrx2Shpx2;smt9d2(l>WsMuU8X z-d+C6z@YpzN0#uqh%pC07vH2`^s+rk(azt%o(Pq@gU(9Ncr)r1g)^h07$kMlYyVxhMIs>q;iFMj@QAqNv+Q-fJ|>*8U~^~5*8J@Q=R#t zD)PWrhCVg&t@?Kb?v&<6*&U7t+DaP}O;4h99eK6M6~OOE0&Q8n}H%U2cFwG!Tu zv5U{YUvIaEJ3s0oH%D3cWx&s29kdO@oFPAiQ-^Wm zR|x<`+(-vQ?N83ij;+W-{*kX1cG{eI3B#qpB3W!L>6j5b{{-LXeyNK~^Iimo@aK$~g-OtI*uJN}h4y1Lk zCH{r0mJs^O0ILjPZ6vr=H~iOr`YemD679)ReSX=qqxxyBs^X*9cD}BI1NlYu_&_6E zve^I(cUX{i?}mmT3(UEzDf7E;7!O}w--y2Qed|l+#D+=LZcHP_t)x#UX2i?03nFXXa7RCu80hDHK0G)Uf zYop$o&RN6`;6=M&o^_9+G5JXU;?M3d*}P%N?Tzn*-{1DbdnqZ9mL={wx7{fLrZN0S z6SVp1zAMG*DfB<1GpJ9j$`X5Rrx?JUU-4+&WWoO`-2N>(^fgjg*;5pbP6Zys)^q1u zq6c*F8U_zc;4gZt(}?^o5%DbKkx73u%MNzVwZx=T8Cg&+m4Fg<8tpf;H>-)TQn|4O zi?2oXf0v8Z_tB`?1{&C-EWW92x32?;wE8EzS8kck`1v6z*q`Z_J2|cxN7%WJZEoZs? z#H-awr<$^$VyY%pY~4ahv}inEvMgm2uSp9QfGO;Oq>0SF_4!VlU$5iZ2bzE&0~mpi z{3r&j=UJ!tMjBGL;3zegn!F!sY}0x5-hp37zCIJ56Q1k-;f3kS*aXkq$p=E9TT=m{ zJs}^g>6O7ep)7x+17UM@Xq|F3!JTxtp9*=rnksu~wEFBGs9LMovv1NnxMpA8&h5(wdyJe(#1%tMIKr3-?8bq;97G{K5Z)eGvR=i-vC=##UGKK(jLt& zon8^Hz4m+wzSc#P^V0eAf8fK=fAcK*^Ae>A;yk50^#B208iYf~yjs^vTkRLKqOofc zxCeciG4yCLJx%r-@o-LO{wnT{>raN(m5;=R0!@#whSP*3lF+ATK@@xevuSok4jfYX5q^r64@%YemdWodZB>>Odp$Q6U zdb1w?_kCyFDp=U>uUijgdV`c^uEn@5`RpqFlM( zUI3jwoDfV03b}j(QkmZZ$!cyxperezQ8jfwHZFS0%rTx4mIZ35Q97P{t!1Rmqh z54T+cM3X44#*E$E-)@g>cvuQXk|bKm^$?_lvGWj^bw$ElY?|!@t0v_NfUwW(J2S zm3O&AF)Ij`y`<$K8anf`#DQ)Q%RJ*E)dFqdmfZ=FSe$s|N zu$%&pvu|GAP3+1yzC_U8MnXhIZtc@nn=R zX?8Ft#x~qViJ+9b^eU_Ro5+b7HvQ%5ty7Ak4CZaXLXwZo(5R{+hK`{Td(}?9l3Www zXma3kRlKBo-2Igz^?jBiHJGe#EkhQJ-8u40JK z{BmL;zuKUiz50&XQ$GNXa|hK8xi?v#OGE8Q#!div-aDf?)M0!UymmqI9d9fJK0nB9 z@`L}r()VKRNJ+(8JX7w9vyM)P8?r;~Kttm&ch>%X_OH=9G0lDTG6*6%SbNUt9}rtR z9hU!ielH|qtxrE_2YBXRA$68s+7c|ogMJea{ryj(`|lo)GcMPy?L0+)E0y@c*bAci zi?HCcg}>Pn%aS61ZAukuMGC$s(@F6I4!7g1qk5F^Ak8?SmuwJggL&&B9PM=m2ojz+ z?k1o=^>ioJMX);ncGe1dHPjs5EO3mr>}H?+0D z^)(UD#}aqu`G%`;Qmp8CW>oD$OYqaxLM6hQM6DZ>CfG0-6af5Y75 z)FmB4%1u>9Z8aN{!?;4ChA-W917a-kKpAPb1d;Ujd1FH7q~URT z{|eX8_5k5r_wI0m;8}lrCVK>e;OgHje_DQR$GTm+2B5`m%-EP?JF`v%)yN2FQKd0L z2_wAzaumKaMy2_WxAJu>QV+BVb`0sAc-c143k$9#JKcLiobgQUl+y#QaaC*lV3i+2 z;;bYzxLiuT>{oJ~S?D?X?E&sVVg=f79(RJw{qC7oHnfr|=Zu?8lCqYitjWdFQVJ=~ z@0yN<(hHE10`Zo@{aHetpJ5h76>Pi_vpp7558EYDfHGmeYjND*n9izpNBggg8=IO`UK%`Y$PEhnb(1OExGHjl+~02y>*^vfB_={ZZD)>hK%dDeY;U@;vCyOh)0Df;e`O_eQ1r zyPo#?^=M{-?&(*h>fV$Dwtmz*FY)o}o%x9P5PtvEHA4_LJE&-FO3PJ=m8=mmR21gn zGF6_)$5n}#oKL?Ua>||WclQ!w!W{OI<>C-ej2sk^4lU|)-!6nKL^&gVZBig_VWlFR zsH&9UPp*>NOgD->=ZeZt6<;J6&Xd8D@Gbdf%i)yui|FX%J`@c1p;PSe4Mv@cA!8`c z_1dD$gl=P_p@F&}?7mG|3Z;7#Hn+8KiWu%_nL{Aub%Wx8wASvY#-9!*Z?iDaJk4id z?nXzExO8R^6>M3KR@xjFB@#cdyt8GaGUryh!QEW5=QkNVNq3RxtY%$Yk!^+!TNkCZ zZlbu*wSOSY{Sa*+>JeqyjOsy_9uU7)EPds%8uYO)z3J5>ylceUo0k#J-~BAMKSwx; zUtlX&Vdm4&99KmWq~}Gyyt&X9vJsYP`nKZ^k9)otst@gdbo~|Ol)MS_kpT5tj$0AXI|+ix zDaTD=IC2EAhXV}lO#qt^>^lDnZz+LX?LnuQ`r?2EN$}GesdUzg1|TTR0@6DUvC2U| zD=LME^uRxupgmPkJ#mezvqNMBz2MIPi;?~cV!T3C#H5-L7>sx;x?n=-^^;$W)A9lb z)M;0pT1Het)ym&@&}iehvz3>BC~kSa3@6o!#z_^^>v(86JJS7YOhd>;Cc9KCpdS$!6)QU&#&xfug6ti*|0yO z4SK^}w8r1A3_NhNJR58a4?ZNXED&`ysgbo>a%9}FxN)~Cac8t5UgB-v5`mtY1zKHu zG~0meNn-0Kt9@u<9K@6hayt^9M+XX69jc^e$|`<35Q z1*-rMsZb!}>B~feNKpFP+m}$Gc~7wV4YcZd2*_a9MimHpMC|n^G6+_n*I~5kaps+a zD73WkFz`n)|MP%tjjc_%KfY6D-+uXr8Rm&tJai}uxg*(rq%1<^tfA*_A7VkZ_0d}6 z`g@QjMz~N7=rJgc0FiREVL-x7*Ry(@8%>F87DBMsi0fWy_e5SZ^nMsY+xU=v`OQIn zzB@)`z*+T>VD*)p$yav?{|Nh+S%^+vdlDzaW#Uby9!%bl`UA_!48VojB^`%yXdu_G zUzQwI$Y?enMUzKIss15;;UuIJ6*W1JtD3 z3OFkg?0T5;c(yM;eM0@Y_2lNt)w@NHH=DB{UyO5#q71X3V0&5$A#!ptaKRyOq@F;_ zzIMb7qo~C4xZ6|c;t?XyFsgIg$lzKTS9+Uy<62fh24J@`GPNn%{x;LJ3#r(kk3c$e z>DI$Sp9f$J*KrWD7aExY7mFg2ryMHzY*oQS`*j)s?!t|~$+JYp=vB8xXg_yi zC$%0qT{Lg$!qmFGSv5##WKj3v=euXEY+f4|*87Du`bw9B>6P{yfn}qe+bT!bot8*a z)s{+<MsVYQv!L(wg%r$k6 z?X$+tcMCn4-~jS4qEM2P`r9Y55v&cPQQnx`CZrx;dWZ`xqaAg3)<~g z|1RAYPQ#r!@Fg;GO;H=M^pY2{#XC2jz0l8JYL{k(MTyf&m6mDs5GHXFksxwYJ zF3I;RoAo1YZxpMyvXUu1DbBZ6fA)R>Ne}5EvUkF@pWXE$udT0AG}hd%#XvW!+-Rp= zJ70x!HqYa0eU-Q7 zV%y-Uc5B+m=fPw4M=~XD3k4y!whe#~O4m7wyAD9)0xTC@_P2vEETr+$=kf)&R7D+m z_6S1ZQ|3K{+9B1uUC@RkxMo=o)52tyJD@p{7E;cM|aF*H|kIOG=w`x zI>Bawkop!a&HZ_IeUsT%OAHJxPec`@~G`%6w zDKx#otON=_Fdx}6-;?%iii$j56}Ea^&6GafMHW>1YSRC%7OCd?J>4^@DOnshsaZdK zH>Dwx8lGS2J5TqySU-z7AX3a5(>An)SP0XTauLUqQya&Vu_%-TH92c*J0_$sI~%^Y6{6Qv_WUAB%67um{)y<66|xY3xs7Q=QDsE(cs z%n9}fmb(NDmAeE9mf!H)=n@mzeh1(&1vfJba9ux@(Q|QIM-DkYfp+BDLcE0fI4^V@ zE3D*@BSSpffO&3D95bmA80%s7I@Z4qhEaFAhrce(MO3E=&$y=qUFfv--gYnVhz{$m zdNMhAg*XE1dT&EhpUW;t9lY`{;vtSg`?q&2IQI!wOx-5Og&&}6;gJkSdI~HO+{>Pv zA(v{cand)}jGdi#>V?h$!Aa*kUEVvnjY0T z8fm~ldUzny#lRbKb>R^*L*BRl4CzhTwzrpauk#)bpItv&+C?WVHzO)^jbw@&{}s(Q znT^hwFACiK;>oA18zi;&g%&`UBbwv%I~E;!T#-*%>MycDFKEB?fiY97X{LC$&Ge)e zLDhtBJUe1CkNj#+!jn%iJtB4{>YPup<$>GY$uHLS$2i*81`#Q4iG4%>mN4a63|6b? zIyI%2;yg8_n^a~V#s3-7Kb^$vdMfg2JSLOHDDu+A#VFRx)9vJZm7>ebhQf{XR;;p| zFXVUqDTHnhl>8+ZKaWCkpE#u_}a|65rAE;9+dTi|ANJT-CE^{`(sicDH~#(yKkWG_7yVy&&wuc>e{=|bSmUEu#KwBD zOS#rSp&jY3MZKmfRfq6zR^&UbBquVm{i)|J(jkax6)mF%u};5km@;=hB18t}985PHOLQC+ zP%X+K*GhLBMcY44{q2J03-PDP8RoSb$rl&2<#=dg3UUXTXe$eo*c!8C8e=tRO_FkC zr21tf5<{{Sb4B|()ReZ7X)C4s52M+16m!MX#cJ*TgHd$kg~I|zUJkzj9XIn#Z)^xW z3xRJMy=+gTW(6W6U5?>XHqShE^7{Hn%=?C=}WxX5S zx;G!dDCJ$ys5ZNS;r>J(5f54tZ`NxDlR6$NYHvIET?_z(k00##o{=Nf^mBHI0K$8> zR3mz8XL-%0oYNqWoC_z)cllukc$rQp#%#|w&p&J?Js zSbhZ{qsf>XeuTqLO0Y-AR%M40j56l>AF;82s>qrfd_=(}Oc?F*N2KC-(f#`nVM3WN za%jS6n?LT04IgA#XqJvQR17bMG!sTU{7s-nJJ|k1rvHmR)IKZJ4t+vd@QXt)<^PL? zlqJ1*Y4B%_%EFKf6QSPVzBm%{mthpBgHT>pM!g4GtA9QN(2BmOG8ny7{>7Vr*cp9~ zCx>APJZ_f~cb`kU#W{ee6?f{PG&)tNrdl^tsCt7No>)4hX7>u#qFcbt_mdLemw5ClS)~1OpL4!ZM8I$97qMpV51sOX=IxkaPF|OQ84mXm&Zh_ZRK0_T zsNt9ySFSw)cc--IVWn}`Xg>MK;fbsZCsqED*a-H_jmur01*en}DR4bG!yX4^YVM+m zn^U5kj%my=+po&7U4{jxpG>JHIl~p=X0&?@l&O^Yl}`H%f_&0>!(WSr*>bYNc4>6@ z`ndo((&CAwS%+f^QhZX9;*$F`f_zeu5#t(1G)jDZ!E)m{G1e234Zg;*;t6yo*Ys8m zOPk~Nd%CL~(>b8PKDNvu)@jQ9v9`V)?(`6Q<& z%S}nF_BGfoQYWCPKTUit##kQUzFnS|CU{WfsH(YBWIR?d>k#Dq&V6OglflwN0T4Q^ zu~SqvtkIX-ZLNuue3BHSpgRs2waVMTfEhsdlb@mp6{~2>9p3gf(cqi*A#f|-ebw>O9KvQnJJF{?8 zvWb?4>PUr3IgW1SxD}D0_wCvcLt%ByJ^#-utsM?6sDBHHHNdi?+1dF{=1Lo`g}b@w z!5Xg`&dTC68=~3i_8KE2?z)ntGpZdsXRqd)xmAyj+wip3?pv+SxoIBPZ6I4|oa;id zL-b*x(Tc$J6quXcFtoaFX?Vp*uyTrTLw95akEF9pld8nXP!Rhdu`VH`a9t33LcC8; zTRjcF^}4<`U7wu4EMe|breA%$Eb+%Y1iJCWiM@Opq+*;Tl0EAieaF#sI5X!yn;4i zpv1x%CxNrOsMtCwT3m^N&_FJPSBcGB3em=7@U`f5Z?bRG9Jw7=d1lvlT3&Wavzm&G zE??SPHcGvkq(@A4Axfp(!OP&pv}kIj3S+6C)^X(Irq#x(d7I!^f+b5X@xf)1O0^$2 z?t{xz?5b==N^FMx);64?lVZF;JM21YUasKiXlj1hc2X*&1tB#Ew3tZt~ zn_~4+X-$kJzXcbcQ?QDuasIs5WD!T5F=8 z;n9($yIVC3k!)8{V8tS48_wgMXFl4C(kdpWxC-qszM!hZ=8QQXJrL`DgzoS-~z&G z!QU@uqOVLA^ImI) z^-fgDg$@^!*#@Zk0Ck^_e2{^)GCk3Aa8W}ii-X(9D#S-G$9DI&o-F zdvFl#pVTU$Y7W4mig0MILnBjacB@3*$V9=Z>H#j(Yu3uh#Nxq2V^c=<9hDgt!6{A| zXy=~E)S0z1E>UMtyKT@Yfj2#IAz=cX+{HU)cfVtqm)k@_t>{e6Vy zeO1L*2jG#?({V{?oKBIoi3uJ(UfDUm>Ts!-%M7?*NY(bYrp7?OYf;Kj|2z77^*NO# z6+1H%06ktsMT@10F#UajYE5NDTHJ+i`#$0B2QHzm7J>V7m3zg*17kh+tA#_Xd&ETU zzNWqcSK4hLOKJ7_(y(Hn9`I?*3^xQ6Ep#`?O&=LAQ5;Zd%&0v=H@X5A7isl2{GB-+==oxf{{Z*@n0ZSh z-b^PA$geTe*Koc6{Z3)}s=OriuR;%s7AP^)Ds01muG3o@-0F|h4KctYl>;jE8I@|= zXkd)EXWm46!}Nabv=P)-rjdqrs0j79RNVz>;J6EOLow_?U)yS{F@>?>+;-9Es#%3( z$x7BKJyG~va9FNKmd!TW!E@@wfe(MCzb+t5nw4p!PGIAXV5YN9uBTc}ZOLSVih$d7 z@`eWxW>xH^CC~#sd>%$*yhzmpWGfL2o^Ik+SA4?5CzD5P#iT_zFiRoO#(z{iRfMjC zh`db#yzb~vjQ67)V^PNnUHg>cbK!uQG!}@~9u1*d#MZ|5Zab?zGeJd^_Lcu6hm0MC zz=Lwo+0ZMt7;=AR5Avh{9EXN&=$+~agcEyxpXu-%-)$=C#-GGvENjgPEqJiMC# zp+o09&IF`DFi59lx*g1?Y`Q*6pAP?=h=H?PXKV@=1tA4t5{|uc#ywl;_|$}bdwK_H zIlbd8w_i!&!CkdZ@zd1y4?P>RUuj(K(gG0$+4C&o5#JAZUuAFK+6Ud~5!JsZj$lA8 z4b{dKBEI#PF@M7z#c5z?oO+?=+C;hdt{%MM-Wg<8ghq-S5t@QE7{bt|p-y}p=|STm z^}T6dM=EONb^7;+^&x$^7w-o{hPnz)^Jnuq^44n+9M@B~o`rHvpVuBap*3p4pPX*; z^&@GG;O1z~+Q!%; z&H7MTlur1erLmgP;l922p_tPyQ|+4bq7Q#La(cT?*>=d>NEcr@be5L;xLtL2qN~W= za9{A+)v3LO%2W^A{gvJ)c^+c-x6Ken0e_*?W9f+2aN+JRUx$;Q<8Ec|94TB@mMLL?J2rP~J66dZqw(iEn4N~hZ?(iFjcO10dvz~k>? zkN@k+{2L)dv;pax;SjxVp}r<(k^Yh3_;oCgcdb4qzrkSp&$C3&9I9Ca``liX)0qed z_BbUyoOQUx=AFPg679&^4Y5W4Ha##S4gRE?i27`>OnvwBK}t=idzu9g z_2FDkGFmi0skTGha@pA|NI>Y&VfUDdjmwhHfDz zwuDp9l0cvJHO|B4hf?|vUi!zyUHKM)-!TdVbFne9TZ=kML%GV7?xoi)Gmv_;nfhzD z#ns#A1WEE9Ruf{SsG(syRu} z)HsP8sE^eEcMZek@;kG6j)yVIpCwgd|GR*;O#aOw$})JXzO~?B$gTU?WJ!}+^H<%8 zV4P*Wz+gdyQx4yB!BC>*J}r=~$YlqVR?ItupQf$!+GXb5Sr~X^J#Q`Zyp_UKMxHB| zx^NT7X(yFcYu~%!LX6=aBvB_pnWubC7MG&f7pnZVpSUX7?^?<-bxU2Y1jQo|MFr?N ztE%I0ShhZkSK$;8m7w%nc^BU0lSm?D)kE7)$E z(i_hZyoce|jK(m6?!Dt0R#3R5gNLxzS&`2Y{6P$NDHkIfua>LGJy7fx0tP>c&r%7_ zXNxCan#YjXjAzNZRY^v2?T!7{NzG&a4I-+7_ zt|#hjnUDPx{|c} z>lB0FJ{|yM zI|~I&`AvGsSPD~Blg7+PN*;l;uZ%rwN1AAoU=zXtGY0g8S`byhg2bDI$!y^U!5-9TOV|^g>}wN?OySfnqIFWP98evUE802|M>7Z(!GdI>?kH3_&}R` z_7c+hE@g_=_wwjUOzV@jEPobi{Qn4C%WqBB2hJQGsEWGQ>C3Q88NGOgkoi|3bn1zT z8)3Y|@S=SEqFdg#3e*HMpSiTKkEbPjfKfx!{*A!sY`O7YF%-aP^i+!c7^mI$E2Dxf z4wFe`trbuA$~?Mf>r%toCWucPgm&6Uy$7#c0q;rY-ZBI)`l83qxYhD6`^Z92`>k3> zc%2O^jfE=^i6cCgN0uP4{Z{Q5NGREl+<&IJDpFxLL442Q+Z~7Z>Zj>twnXto8__`R ziU{dx2d@|C<6}~|z~W^7&w(@&9%Y@K1-p`kNTKU3n3&klWo-$Bu^ejTK)f7uW5l$* z21@yc?SQqtVVvTNv8v3_X2Am>?IKVQW_Q3H?&1C2UC)EDV}yyjAzJqe&k*`s047sl z{VnjI8D{OU@<(^FZG^e@qZv!FC`{~+t`?)N5PoOV{U)jtmX zlU6?0KeYUbOvbUOmTn6v?ydH&IccvCRPUcja<9g!gp#JkC+^HONo5bREIc`iBmZmU zTY?p#T4f+w zCe(s_vkLRT)eI4zQ-PQ=Rj3!Z7RV5|;pTk8>d~I{n(UuLfoxAJ8z=H1b z_4$8Joj*seZM9ddZp7IU5Yk=5vFqIrDfB&T(yhE-{4yuLIrw>4d-JLF@ZlLz56oSL zz0$R^E-9d*fxQzZIh?Th&%mVml;R%s8Qt};^X3fh;jIz`(<>}pU-%7!P*nYqwT(dhBUOBK>*;$@-ub%-;yi|IwiCRS&GIu5heNOGR7%G zDrT7}J@xxC#!ndRQLNYm|1#V%r-l$zWGl;&RN7PcMF_+f3dN(4om1-!r)P}yqN$YF z{XWcM?*WSE05_Uxn1CDrjmRdBMk#m-Hv&bf~5J+B?#_jp>2> z2{}u`2z3Ku=0WuAi~K&m~33M4!ClY!$ zcrh5Oqdd>F{|%r#k4|TE6Ia2rH1A&r@zrm$lnpOIMl8&i5#FzHF4aBPdFmC$g)&H#7{5?Dk|G$L~2_)p>w{#sRC-u95@cHi^X&@Ybf ze;2#5)|GAN=-Unr#I5|$Rlg_z+wr*cqBCd440TzjydAvSIf15XIDx!#q6MUmW_BjD z?O}DI$vXyj&!5dg1G?!Zr6UzHW^)IXhgTZc|C3%`C8ml?P&QNyk)(tQ97EX_h_dXa zNq~vN1XD1yhd9Ry-OJforqbwNqzY?`*KD5)kr3l=s|Gyhw}fnN^~UjULgMec2EvtY zYq_>~=WSA)iSm|uXpiL@mLy$FT8^CY9V76JGPBWHnojM&b3R& zH4975jSIFe3rGJSI<=Z9E4==cJyFc#G{vG*R z?)Ss+ad?02eSQDQPJe51vd-<2`WPynN_YO$BoSBV)(R``knPwZZn*u}YrOveS2O!7 zNx`TZ-X5v+@`22sTZZy>1epSI`d7k&dGCeu`LQ81-!D(pRODUE++g89GvTPdLk`}} z{NvNxZXH}q9L_>40ex=WjI&o9B%m(8-*Y%$HVPmspbug*;kJuYziE=pzaaPj>T979 zfBW|1YjVWk1h-Zlc1bF{+GE?B9c~@y-^hf#;8kIsTW;RK6tPZ5%d|jO@v%{0{wHJi7TtM+!~pA@BK$_Kv)xgvQnaI{Rv+|t_w-C3~%Z1GmBX6NSjIpBE z5L{YQtxWeq=2<2Lz3(FX^ff|Swp7A{PZ-&SbH|gl8YI(Ja1DN54P=lS-FF^H$vEHr zS7DneAPD!;mIHpDBt^ag`(KOr%M_+0_-7bSXleuAJ$UM>Na2J2k zuX6|cL&7s)tznbfompwTf^>28;Jn~j6g-M`r>NxAs*qtz8f9PGA9a-2t?Zn#w&Gwr z{R%F<#|^zsFio>{k8`~PAC^wCpC#=nlC^kUn|T zr{R-MOP*<69dapBhg9l+XG_RL&86|9?T3oP z`eo+okm-j954f@{<1BG*3#|qw32Ur)TOuyq z1V4KsajojbZQA7y)75CTV^n`G8&@1aNORsTjF`f$n#ej+1n<8_M_Bs9<%dMQkagr5 zNcd>9CDb>-4bi44_`3LDKzy`D9Dblr53U8_VE6u@-KFhPB{D(Ngymwlo8w?SXU`sru?ywWAkUjh#Qvi9VqBct8FL|E~z9( zIvBREY8?;J&yV3|tY61f>LlVAM{fz%jOoVm}~eFCd8uaJ3VWp1hB2kx{-#79 zQ>`qRUfrKmWkY;QyN|3cgOKU>_IK4)W*mq#!jqy;tMV#64nzu}MbRfxd6g6g@)u|#Nz0n$pN3UsHa47mJ=hH zN`HdFI_XnYIZh*$LHgWfy`pB_TcV*JvC8r>YwKA5@aQsmtZT_OA>>(Vm_`cyND8NP zSrokSj({rr4~*KuPn7}Z&5NYi!Q{9Z#iX_79Av6zeBVgQeilBVWqG2pBmTkv<5j~q zuLea4o)Y1Q8acbI3nN3y=gPqcD;)&(+;Htaup0`v7G+C(XZyGB2XP0}z}-F`j#vkC znvKyfJ->d1iHe3$uktF@1cNePTlHYezr%zk>36IRTePhuSF8MO_`%g1A@twzH`ZWB z6~OF0c&t4WthYK1L0VDXbt#HD=sTrzxA=ed(JAFg;o(V@cVR<=KGF|9} z#W9y0R%K~{f~uWdg~{{q)9PqeMW!;4FG2MYEHiJ#o>}gK_K*xpKFEYaA?!J5jQ<4$ z!;TFs(X!m}mpXSz#BNwx2zt0XA*T4q1{D7FX)H6?+nOB^!vrg2M@EAZ%E4;?`k!UD zI=V2JA7>-q4n86wkO;)=NozZQWMV z2eblaZga>OrIx0)dyzBgi#6n|eoiE9RhjY@?+Hf=2Sv4pMG0eI3>$6IfZZ=nmj%dt z1O#{@$1+o*>QJHU=yNa`aSTJz@AH7c*jM$clqg<|(jg&6sg@ex?WMp zi=7*vIFGx0J+x(Qy9C2(Iuf5VPwQ#M?}eLl%GsIPRRcqojdcoIsc%rMe06E9zYg>j zzjvXpCt^qse^+lclvo0c((RlhqOFW$L+SHeA}p;{uuXhz?<83N9Jy%MOH00E*so_u z(IhFCL#t$yV;`{5)_v!obWe4_w&q|>T&){sr~5H+z{9z$1l&q>aHZXTb!Vigr=@g- zE2SGrz4H25Hg{9`5$?#ld6{Cp$m(>*s!uvAu4H1Mh-h?Iti-coIA`&rWl9)ME+K}z z(NCPd=UBqhUz1nrw}>TAVvkArtkxWmpNjM}&kStoc~iP?n|b(Vp1HzDxV9?`pY!!N z_WWcUWGHxcLJg@kvU!<9ZI3$}y4(plnk=%r+!30@oFEMnH_Jx%LJOZaJ%<^_yt9IF zJO?(3pIZZEpNmgPFdwr{CK7Bs(w8kF_$m~$`-d{s1LwS$zZb`RYT;DhoZ#k8PEr2# zF)xWbDI(vS+I+xnMcZV#3DXrWZ|m6(c06U&UXRQj@CoDWTQ8=DeFwun-CJI%U}f=M zf(ZB{2~tK}e!sTYtRuWyn>;(;ZqLQ?)X|;zLx^vLcso7+5IPZhZ5rIYEZPNT?j=|z zW>I_R&J6RsqK)#Ye9YBf0xhSPTGX4uGoW{s5I3lV>jd`f8KybMTUhVC800y@=E=3; zm^Aa?iQvv7%HT=kR)iJy{=P;Ye4YQ)dh}iHYZksQBYT-9V$ERNSAv3=-m*Z4>8G0C z>*jRgil4tJYgTC|>B;#M(+Zfi^tzm2r`^B8B6+vegy+9A1mkFNAOD9>$?Kd|_Y(3! zB5k@wq(_(HeZ`2MU#mD`*GI_9*A0v6@KKm@9|RbF(lC5=>>Hxwo{5z-Vh(TS=!dAv z;-q#drJOu-+h2P796Teb2Rm`da6iL5kbOPD-ZM}1`Kd8$K<1nf44}$%ASBGI{^Fj* zLp;*gZKc?)ggJuAKQ|4_*t7b1&Sxcr)hEgjb^Ir}4R6|JtCDfpMJB#q*Or8KXje5T zJSe+cLNhFTOF}c^1r`RS(M1(&TqmS18R>y`A`bJb2uHs?L7PMGCDgTe4QcwN)T45T{g3|^5Z1W!kRx}jqrEE+FA+V{WqgC-(hVa zms%=xp2%@(?%%|g8Uk}I>xAO(h0CxV*#}lpx;rd%Vn2s3-}o&~(QAKop`T>KzO!TDc)#PBLt&ZdW3@>!EO9 zK01953Wf-xJcL}P!w?7IE_F3#@4%=lHjSL!S_{7-_5Jt-UWlv}pW*!@vWYMpiU=}< zm;tWPV8)KN64$%RqW;R7d%Pn~pZ&Gp36UPFP(nDy9b+q=_tyME8#Zab9Wr3)8j9Mp-CaPQ&pw_0wDEkF&o>?`IALVe>d=`kHKt5_PL+`NCNF z-ieFXPwvvhOLdW246K`@8oHTVYbEK`*Av}nRBq7f{(Fv`VtuYVH z#vC)JCMP_CkYB#Gl+U?Vwj>oP));b%T}K9G6yJvPY)CF@N8!ZNE3WGzmj1YLIZfIn zJ){?dkHjHp-{?wMJ^PmMf#*k*sDmk44q`}6W23jcNBTQ=jC6eA5Padj!5GIxlM{|- zDHUPxI>b6+1Xui%QQf9ylA-tS1k z@2m|0tD)7aVkjwuEU0a^q~P<_ddKrQa_paF&8X@9Yjk0`(wSIGov)ZFlYVkw1daYB z($%3twU6mXG0$?*PtSNw&?m=}e(sZqfjlLe;;|TqLA(lX(|K)Qc3T2}+rHqcN==l{ zUg@?x>*1$|J?xr?5 zZ+)9cHK2p<<*KJLpP<%Qk^grL5H&T+e;~E6F1liVA67}i8FF_8VK2R>GW)uc`?`}v zf}G|j$0G3WA%)sxcnt5npIg7emv}5Ha%JX(@P(D37EdJ`uG&`_y+@QF4C>YSm7z(1 z*~7kk#`?_I7rIcAeB!1d!dh3ch1auq06P10hK<954VqJ<^3%4fVc*@8dkLns%;S&i zM&I@TAMKZpQjwl?^Pq)5M>CkWz(1d^Ga2g~xRV@A=72WvnJCF+e@iOA+A@C6BEk{l zY5y_UMHovd`({{zmF8Fp0mVxy>f--aTvx=+#2aXzQn7V8!gF9R$SOWPD`!%iwqIx!m}G5mOgUKBM*p7Id$n~Im-XOnBmEutF$MR` zM%HLmmxXXrTl*hV-!15Q&6K+SEAE`eG)|DKG`cnLhqU5>24Fqrw>F1(I~0;d?AYGw z;jC2pyLFDp{X4oQP(|uL;AnRN`EdkxE%E+_ILMrcIkO)HJO97$r|Unc!F{f(LEiYs zJj}lG{`12NKi21IdRAo*TM8&lCfW?$z%}88KM`m$cwhN;FSv7)CP5}p#Qa-`5MCYR zlYHWsx3b7aGkzX<1XSYz+7#0g51%JYU zX_PXmeypu*<#)ZnUM(~puT*~}`^XvmjJbj!Qe&z8t6LZQ$w{7x{gTIs<#>h_EDsMZ zRU`B1$Vj(;BwfC=zZA4ksS?Ma&Se1HLM_7fV$) zSmM>{O4)18WogQfT1cNi5dzMwZ+i1VwM8D)4bYdRr$D-pSJ9jog3G^8J1-j=;Lh3vLeb;(qaU4m!D zAd2VQ1nCj!L3?{brdW|@<=%_MZI%|vF(Y=A%w_@3(YHVmV`Zm6(YWO>dZx5Mk?}t! zPB8Y>og8b@ed!sd=SA$|lL&vPEbUg1@N5lI)~!@?uT2_utj%N5vKh`)$!Px+W!9NZ z8qO-%Cig=Yx@2>R4NrqABzf+YS9VPe4Ar}R^@kWAzyy*l5Fjok#J;Xq;v}u31Ac#_gI*!o;*| zKM8YQ4Z%3NM00i?L1U6k`k z;;kM4VsRLfR>q}xRpcGn_>{|Q1njI=)gQ5)YtmK0Tv4Q!D5V9dNh~tBmI-L)(vqu| zS1;_EA9)?2W!6q>nD5{m38gZ>Rk5m=?=~Nqd9>yf(^krH7#mj4?+_pPdH|l&yHwZd zAsXsHmMa#I?krk}x>vQ|j{j{#76s}e^KHhntZ-poLViX0;=+~st@iED=kHURY-2P> zmbbi}-(L&?6bg&kM~a=|cojabrCIeN36LsrO=@su{37f_u3iQHI7+JqOKLVS{YXK# zQeHE2ttPE{*EL$N7&P9XSKpf~T7jZT(f%%BXs>QSnIN?*f0P5!J2G@GxHA8gpJ*1M zspZk~E3JvslG)YEt*v967MMIL6xUL&E*BU*vLr3WXnWLs(Xc+Iwr@BxGqg}t3D*Pb zsB0?Q*Kuo;TBqtLEM9`jz6o;E|4`X9OU3SB{wfFfB#XLMWrX=1^Sk!>a`|d`HS`qg z?lU(;WQMF-q?xUaO;zFa@(%vCG@vt}ma&y?wY^I7?(~lINbreFP(gDEbCthpB@h%i z9o1~yK%kRnXjb16*9=}+t@-B}YiLfhDoASkvVqJ8W1q7vAa-mB4I5S4YgBpB>iQ zZAd(bnqO@&F)>i`EaOp>P?Xx};NP&G!-d)JXEyszb;KoesE zW|Tk+Wpvh$fmRTbXQBJB0R10w7sP&g4MIAWqMz2t)|^DifMSksL&Bd(6uuBX*BwpD4D8UYGguuA&0Ed%90%0De7wr))h>fTvR$qqKBOwp+40tCfi! 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

1k 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 RA69zw>R5;l-2YPg{{=WlB#{6B literal 0 HcmV?d00001 diff --git a/guest-comm/host-guest-comm-2.0/guest_agent.c b/guest-comm/host-guest-comm-2.0/guest_agent.c new file mode 100644 index 00000000..144e86f0 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/guest_agent.c @@ -0,0 +1,503 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** +*/ + +#define _GNU_SOURCE /* for memmem() */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "host_guest_msg_type.h" + +/* +Notes on virtio-serial in guest: +1) The fact that POLLHUP is always set in revents when host connection is down +means that the only way to get event-driven notification of connection is to +register for SIGIO. However, then we get a SIGIO every time the device becomes +readable. The solution is to selectively block SIGIO as long as we think the link +is up, then unblock it so we get notified when the link comes back. + +2) If the host disconnects we will still process any buffered messages from it. + +3) If read() returns 0 or write() returns -1 with errno of EAGAIN that means +the host is disconnected. +*/ + +// Tokener serves as reassembly buffer for host connection. +struct json_tokener* tok; + +int host_fd; +int app_fd; + +volatile sig_atomic_t check_host_connection=1; +volatile sig_atomic_t initial_connection=1; + +// Currently we only use 2 fds, one for server group messaging and one for the +// connection to the host. +#define MAX_FDS_GUEST 10 + +// Message has arrived from the host. +// This assumes the message has been validated +void process_msg(json_object *jobj_msg, int fd) +{ + int rc; + struct sockaddr_un cliaddr; + int addrlen; + + // parse version + struct json_object *jobj_version; + if (!json_object_object_get_ex(jobj_msg, VERSION, &jobj_version)) { + PRINT_ERR("failed to parse version\n"); + return; + } + int version = json_object_get_int(jobj_version); + if (version != CUR_VERSION) { + PRINT_ERR("received version %d, expected %d\n", version, CUR_VERSION); + return; + } + + // parse source addr + struct json_object *jobj_source_addr; + if (!json_object_object_get_ex(jobj_msg, SOURCE_ADDR, &jobj_source_addr)) { + PRINT_ERR("failed to parse source_addr\n"); + return; + } + + // parse dest addr + struct json_object *jobj_dest_addr; + if (!json_object_object_get_ex(jobj_msg, DEST_ADDR, &jobj_dest_addr)) { + PRINT_ERR("failed to parse dest_addr\n"); + return; + } + const char *dest_addr = json_object_get_string(jobj_dest_addr); + + + // parse msg data + struct json_object *jobj_data; + if (!json_object_object_get_ex(jobj_msg, DATA, &jobj_data)) { + PRINT_ERR("failed to parse data\n"); + return; + } + + //create outgoing message + struct json_object *jobj_outmsg = json_object_new_object(); + if (jobj_outmsg == NULL) { + PRINT_ERR("failed to allocate json object for jobj_outmsg\n"); + return; + } + + json_object_object_add(jobj_outmsg, DATA, jobj_data); + json_object_object_add(jobj_outmsg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_outmsg, SOURCE_ADDR, jobj_source_addr); + + const char *outmsg = json_object_to_json_string_ext(jobj_outmsg, JSON_C_TO_STRING_PLAIN); + + // Set up destination address + memset(&cliaddr, 0, sizeof(struct sockaddr_un)); + cliaddr.sun_family = AF_UNIX; + cliaddr.sun_path[0] = '\0'; + strncpy(cliaddr.sun_path+1, dest_addr, strlen(dest_addr)); + addrlen = sizeof(sa_family_t) + strlen(dest_addr) + 1; + + // Send the message to the client. + // This will get transparently restarted if interrupted by signal. + ssize_t outlen = strlen(outmsg); + rc = sendto(app_fd, outmsg, outlen, 0, (struct sockaddr *) &cliaddr, + addrlen); + if (rc == -1) { + PRINT_ERR("unable to send msg to %.*s: %m\n", UNIX_ADDR_LEN, cliaddr.sun_path+1); + } else if (rc != outlen) { + PRINT_ERR("sendto didn't send the whole message\n"); + } + + json_object_put(jobj_outmsg); +} + +void handle_app_msg(const char *msg, struct sockaddr_un *cliaddr, + socklen_t cliaddrlen) +{ + int rc; + char *app_addr; + + //parse incoming msg + struct json_object *jobj_msg = json_tokener_parse(msg); + if (jobj_msg == NULL) { + PRINT_ERR("failed to parse msg\n"); + return; + } + + // parse version + struct json_object *jobj_version; + if (!json_object_object_get_ex(jobj_msg, VERSION, &jobj_version)) { + PRINT_ERR("failed to parse version\n"); + goto done; + } + int version = json_object_get_int(jobj_version); + + if (version != CUR_VERSION) { + PRINT_ERR("message from app version %d, expected %d, dropping\n", + version, CUR_VERSION); + goto done; + } + + // parse dest instance + struct json_object *jobj_dest_addr; + if (!json_object_object_get_ex(jobj_msg, DEST_ADDR, &jobj_dest_addr)) { + PRINT_ERR("failed to parse dest_address\n"); + goto done; + } + + // parse data + struct json_object *jobj_data; + if (!json_object_object_get_ex(jobj_msg, DATA, &jobj_data)) { + PRINT_ERR("failed to parse data\n"); + goto done; + } + + if (cliaddr->sun_path[0] == '\0') { + app_addr = cliaddr->sun_path+1; + // get length without family or leading null from abstract namespace + cliaddrlen = cliaddrlen - sizeof(sa_family_t) - 1; + app_addr[cliaddrlen] = '\0'; + } else { + PRINT_INFO("client address not in abstract namespace, dropping\n"); + goto done; + } + + struct json_object *jobj_outmsg = json_object_new_object(); + if (jobj_outmsg == NULL) { + PRINT_ERR("failed to allocate json object for outmsg\n"); + goto done; + } + + json_object_object_add(jobj_outmsg, DATA, jobj_data); + json_object_object_add(jobj_outmsg, VERSION, jobj_version); + json_object_object_add(jobj_outmsg, DEST_ADDR, jobj_dest_addr); + json_object_object_add(jobj_outmsg, SOURCE_ADDR, json_object_new_string(app_addr)); + + const char *outmsg = json_object_to_json_string_ext(jobj_outmsg, JSON_C_TO_STRING_PLAIN); + + // use '\n' to delimit JSON string: mark the beginning + rc = write(host_fd, "\n", 1); + if (rc == -1) { + PRINT_ERR("unable to send \\n \n"); + } + + // send to host + ssize_t outlen = strlen(outmsg); + rc = write(host_fd, outmsg, outlen); + if (rc == -1) { + PRINT_ERR("unable to send msg from %.*s: %m\n", UNIX_ADDR_LEN, app_addr); + } else if (rc != outlen) { + PRINT_ERR("write didn't write the whole message to host\n"); + } + + // use '\n' to delimit JSON string: mark the ending + rc = write(host_fd, "\n", 1); + if (rc == -1) { + PRINT_ERR("unable to send \\n \n"); + } + + json_object_put(jobj_outmsg); +done: + json_object_put(jobj_msg); +} + + +void unmask_sigio(void) +{ + sigset_t mask; + sigemptyset (&mask); + sigaddset (&mask, SIGIO); + sigprocmask(SIG_UNBLOCK, &mask, 0); +} + +void mask_sigio(void) +{ + sigset_t mask; + sigemptyset (&mask); + sigaddset (&mask, SIGIO); + sigprocmask(SIG_BLOCK, &mask, 0); +} + +void handle_host_conn_down() +{ + check_host_connection = 0; + unmask_sigio(); +} + +void scan_host_fd(struct pollfd *pfd) +{ + char buf[10000]; + ssize_t rc; + + if (pfd->revents & POLLIN) { + // Read all messages from the host device + while(1) { + rc = read(pfd->fd, buf, sizeof(buf)); + if (rc == 0) { + // Connection to host has gone down + handle_host_conn_down(); + return; + } else if (rc < 0) { + if (errno == EAGAIN) + // We've read all the messages + return; + else { + PRINT_ERR("read from host: %m"); + return; + } + } + handle_virtio_serial_msg(buf, rc, pfd->fd, tok); + } + } +} + +void scan_app_fd(struct pollfd *pfd) +{ + char buf[10000]; + struct sockaddr_un cliaddr; + ssize_t rc; + + // Read all messages from the app socket + if (pfd->revents & POLLIN) { + while(1) { + socklen_t addrlen = sizeof(struct sockaddr_un); + rc = recvfrom(pfd->fd, buf, sizeof(buf), 0, + (struct sockaddr *) &cliaddr, &addrlen); + if (rc < 0) { + if (errno == EAGAIN) + // We've read all the messages + return; + else { + PRINT_ERR("recvfrom from app: %m"); + return; + } + } + handle_app_msg(buf, &cliaddr, addrlen); + } + } +} + +//we get a SIGIO if the host connection connects/disconnects +static void sigio_handler(int signal) +{ + struct pollfd pfd; + pfd.fd = host_fd; + pfd.events = POLLIN; + poll(&pfd, 1, 0); + + // if host is not connected, just exit + if (pfd.revents & POLLHUP) + return; + + // host is connected so check it in main loop + check_host_connection = 1; + initial_connection = 1; +} + +//dump stack trace on segfault +static void segv_handler(int signum) +{ + int count; + void *syms[100]; + int fd = open("/var/log/guest_agent_backtrace.log", O_RDWR|O_APPEND|O_CREAT, S_IRWXU); + if (fd == -1) { + PRINT_ERR("Unable to open guest agent backtrace file: %m"); + goto out; + } + + write(fd, "\n", 1); + count = backtrace(syms, 100); + if (count == 0) { + char *log = "Got zero items in backtrace.\n"; + write(fd, log, strlen(log)); + goto out; + } + + backtrace_symbols_fd(syms, count, fd); +out: + fflush(NULL); + exit(-1); +} + +int main(int argc, char **argv) +{ + int flags; + int rc; + struct sockaddr_un svaddr; + int addrlen; + + PRINT_INFO("%s starting up\n", *argv); + + // optional arg for log level. Higher number means more logs + if (argc > 1) { + char *endptr, *str; + long val; + str = argv[1]; + errno = 0; + val = strtol(str, &endptr, 0); + + if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) + || (errno != 0 && val == 0)) { + PRINT_ERR("error parsing log level arg: strtol: %m"); + exit(-1); + } + + if (endptr == str) { + PRINT_ERR("No digits were found\n"); + exit(EXIT_FAILURE); + } + + if (val > LOG_DEBUG) + val = LOG_DEBUG; + + setlogmask(LOG_UPTO(val)); + } else + setlogmask(LOG_UPTO(LOG_WARNING)); + + signal(SIGIO, sigio_handler); + signal(SIGSEGV, segv_handler); + + // set up fd for talking to host + host_fd = open("/dev/virtio-ports/cgcs.messaging", O_RDWR|O_NONBLOCK); + if (host_fd == -1) { + PRINT_ERR("problem with open: %m"); + exit(-1); + } + + flags = fcntl(host_fd, F_GETFL); + rc = fcntl(host_fd, F_SETFL, flags | O_ASYNC); + if (rc == -1) { + PRINT_ERR("problem setting host_fd async: %m"); + exit(-1); + } + + rc = fcntl(host_fd, F_SETOWN, getpid()); + if (rc == -1) { + PRINT_ERR("problem owning host_fd: %m"); + exit(-1); + } + + // set up socket for talking to apps + app_fd = socket(AF_UNIX, SOCK_DGRAM, 0); + if (app_fd == -1) { + PRINT_ERR("problem with socket: %m"); + exit(-1); + } + + flags = fcntl(app_fd, F_GETFL, 0); + fcntl(app_fd, F_SETFL, flags | O_NONBLOCK); + + memset(&svaddr, 0, sizeof(struct sockaddr_un)); + svaddr.sun_family = AF_UNIX; + svaddr.sun_path[0] = '\0'; + strncpy(svaddr.sun_path+1, AGENT_ADDR, sizeof(svaddr.sun_path) - 2); + + addrlen = sizeof(sa_family_t) + strlen(AGENT_ADDR) + 1; + if (bind(app_fd, (struct sockaddr *) &svaddr, addrlen) == -1) { + PRINT_ERR("problem with bind: %m"); + exit(-1); + } + + tok = json_tokener_new(); + + while(1) { + struct pollfd pollfds[MAX_FDS_GUEST]; + int i; + int nfds = 0; + + if (check_host_connection) { + // we think the host connection is up + + if (initial_connection) { + //mask SIGIO if we haven't already + mask_sigio(); + initial_connection=0; + } + + pollfds[nfds].fd = host_fd; + pollfds[nfds].events = POLLIN; + nfds++; + + } + + pollfds[nfds].fd = app_fd; + pollfds[nfds].events = POLLIN; + nfds++; + + if (nfds > 0) { + rc = poll(pollfds, nfds, -1); + + if (rc == -1) { + if (errno == EINTR) + continue; + PRINT_ERR("problem with poll: %m"); + free(tok); + exit(-1); + } + + for(i=0;i +#include + +/* Function signature for the guest-host messaging callback function. + * source_addr is a null-terminated string representing the host source address. + * The message contents are up to the sender of the message. + */ + +typedef void (*gh_msg_handler_t)(const char *source_addr, struct json_object *jobj_msg); + +#define GH_ERRORSIZE 400 +typedef struct { + int sock; // socket for talking to guest agent + struct sockaddr_un svaddr; // address of guest agent + int svaddrlen; // length of guest agent address + char errorbuf[GH_ERRORSIZE]; + gh_msg_handler_t gh_msg_handler; +} gh_info_t; + + + +/* Allocate socket, set up callbacks, etc. This must be called once before + * any other API calls. "addr" is a null-terminated string of 16 chars or less + * (including the null) that is unique within this guest. "info" is the address + * of a value-result pointer that will be updated during the call. + * + * On success returns a socket and "info" is updated to point to an allocated chunk of memory. + * On error will return -1. If it was unable to allocate memory then "info" will be + * NULL. If it was able to allocate memory but something else failed then "info" will + * be non-NULL and you can call gh_get_error() to get an error message. + */ +int gh_init(gh_msg_handler_t msg_handler, char *addr, gh_info_t **info); + +/* This should be called when the socket becomes readable. This may result in + * callbacks being called. Returns 0 on success. + * A negative return value indicates an error of some kind. + */ +int gh_process_msg(gh_info_t *info); + +/* Send a message to an address on the host. + * Returns 0 on success. + * A negative return value indicates an error of some kind. + * The message must be a null-terminated string without embedded newlines. + */ +int gh_send_msg(gh_info_t *info, const char *dest_addr, const char *msg); + +/* Get error message from most recent library call that returned an error. */ +char *gh_get_error(gh_info_t *info); + + + +#endif diff --git a/guest-comm/host-guest-comm-2.0/host_agent.c b/guest-comm/host-guest-comm-2.0/host_agent.c new file mode 100644 index 00000000..d29b315d --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/host_agent.c @@ -0,0 +1,461 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* +This is a backchannel messaging agent that will run on the host in order to +pass messages between the host and the guest. + +When a new instance appears (detected by a new unix socket of the specified +format being added to the watched directory) we open a unix stream socket +and connect to the instance, storing the mapping from instance to socket. + +When an instance dies we will close the socket and remove the mapping. + +We will monitor the connections to the instances as well as a unix datagram +socket used to communicate with other apps on the host. Messages coming +from an instance will be forwarded to the appropriate app, and vice versa. + +If we try to send a message to a guest socket that has nothing listening +within the guest, by default the message will get queued up without giving +us any indication that there is no listener. These messages can get bundled +together when they get delivered to the guest. +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "misc.h" +#include "host_guest_msg_type.h" +#include "host_instance_mgmt.h" + +int app_fd; + +// One tokener for each instance connection serve as reassembly buffer +struct json_tokener* tok[MAX_FDS_HOST]; + +#define SERVER_SOCKET_FORMAT \ + "/var/lib/libvirt/qemu/cgcs.messaging.%s.sock" + +// Message has arrived from the guest. +// This assumes the message has been validated +void process_msg(json_object *jobj_msg, int fd) +{ + int rc; + struct sockaddr_un cliaddr; + char *name; + int addrlen; + + name = instance_name_by_fd(fd); + if (!name) { + PRINT_ERR("whoops, can't get instance name from fd, dropping\n"); + return; + } + + // parse version + struct json_object *jobj_version; + if (!json_object_object_get_ex(jobj_msg, VERSION, &jobj_version)) { + PRINT_ERR("failed to parse version\n"); + return; + } + int version = json_object_get_int(jobj_version); + if (version != CUR_VERSION) { + PRINT_ERR("received version %d, expected %d\n", version, CUR_VERSION); + return; + } + + // parse source addr + struct json_object *jobj_source_addr; + if (!json_object_object_get_ex(jobj_msg, SOURCE_ADDR, &jobj_source_addr)) { + PRINT_ERR("failed to parse source_addr\n"); + return; + } + + // parse dest addr + struct json_object *jobj_dest_addr; + if (!json_object_object_get_ex(jobj_msg, DEST_ADDR, &jobj_dest_addr)) { + PRINT_ERR("failed to parse dest_addr\n"); + return; + } + const char *dest_addr = json_object_get_string(jobj_dest_addr); + + // parse data. data is a json object that is nested inside the msg + struct json_object *jobj_data; + if (!json_object_object_get_ex(jobj_msg, DATA, &jobj_data)) { + PRINT_ERR("failed to parse data\n"); + return; + } + + //create outgoing message + struct json_object *jobj_outmsg = json_object_new_object(); + if (jobj_outmsg == NULL) { + PRINT_ERR("failed to allocate json object for jobj_outmsg\n"); + return; + } + + json_object_object_add(jobj_outmsg, DATA, jobj_data); + json_object_object_add(jobj_outmsg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_outmsg, SOURCE_ADDR, jobj_source_addr); + json_object_object_add(jobj_outmsg, SOURCE_INSTANCE, json_object_new_string(name)); + + const char *outmsg = json_object_to_json_string_ext(jobj_outmsg, JSON_C_TO_STRING_PLAIN); + ssize_t outlen = strlen(outmsg); + + // Set up destination address + memset(&cliaddr, 0, sizeof(struct sockaddr_un)); + cliaddr.sun_family = AF_UNIX; + cliaddr.sun_path[0] = '\0'; + strncpy(cliaddr.sun_path+1, dest_addr, strlen(dest_addr)); + addrlen = sizeof(sa_family_t) + strlen(dest_addr) + 1; + + // Send the message to the client. + // This will get transparently restarted if interrupted by signal. + rc = sendto(app_fd, outmsg, outlen, 0, (struct sockaddr *) &cliaddr, + addrlen); + if (rc == -1) { + PRINT_ERR("unable to send msg to client %.*s: %m\n", UNIX_ADDR_LEN, + cliaddr.sun_path+1); + } else if (rc != outlen) { + PRINT_ERR("sendto didn't send the whole message to client\n"); + } + json_object_put(jobj_outmsg); +} + +// Read and process all messages from the guest. If the guest dies, tear +// down the connection. +void scan_guest_fd(struct pollfd *pfd) +{ + char buf[10000]; + ssize_t rc; + + if (pfd->revents & POLLHUP) { + // The only known cause of this is the death of the qemu process. + // Tear everything down. + disconnect_guest(pfd->fd); + } else if (pfd->revents & POLLIN) { + // Read a message from the guest socket. + // We assume that all the data arrives in one packet. + // To handle arbitrary messages sizes we should receive into a buffer + // with knowledge of message length, etc. Can extend later if needed. + rc = read(pfd->fd, buf, sizeof(buf)); + if (rc == 0) { + PRINT_INFO("got read of 0 bytes on guest fd\n"); + return; + } else if (rc < 0) { + if (errno == EAGAIN) + // Odd, should have been a message + return; + else { + PRINT_ERR("read from guest: %m"); + return; + } + } + handle_virtio_serial_msg(buf, rc, pfd->fd, tok[pfd->fd]); + } +} + + +// validate header and send message to specified guest +void handle_app_msg(const char *msg, struct sockaddr_un *cliaddr, + socklen_t cliaddrlen) +{ + int rc; + char *app_addr; + int sock; + + //parse incoming msg + struct json_object *jobj_msg = json_tokener_parse(msg); + if (jobj_msg == NULL) { + PRINT_ERR("failed to parse msg\n"); + return; + } + + // parse version + struct json_object *jobj_version; + int version; + if (!json_object_object_get_ex(jobj_msg, VERSION, &jobj_version)) { + PRINT_ERR("failed to parse version\n"); + goto done; + } + version = json_object_get_int(jobj_version); + + if (version != CUR_VERSION) { + PRINT_ERR("message from app version %d, expected %d, dropping\n", + version, CUR_VERSION); + goto done; + } + + // parse dest addr + struct json_object *jobj_dest_addr; + if (!json_object_object_get_ex(jobj_msg, DEST_ADDR, &jobj_dest_addr)) { + PRINT_ERR("failed to parse dest_address\n"); + goto done; + } + + // parse dest instance + struct json_object *jobj_dest_instance; + if (!json_object_object_get_ex(jobj_msg, DEST_INSTANCE, &jobj_dest_instance)) { + PRINT_ERR("failed to parse dest_instance\n"); + goto done; + } + const char *dest_instance = json_object_get_string(jobj_dest_instance); + + // parse data + struct json_object *jobj_data; + if (!json_object_object_get_ex(jobj_msg, DATA, &jobj_data)) { + PRINT_ERR("failed to parse data\n"); + goto done; + } + + if (cliaddr->sun_path[0] == '\0') { + app_addr = cliaddr->sun_path+1; + // get length without family or leading null from abstract namespace + cliaddrlen = cliaddrlen - sizeof(sa_family_t) - 1; + app_addr[cliaddrlen] = '\0'; + } else { + PRINT_INFO("client address not in abstract namespace, dropping\n"); + goto done; + } + + // look up the guest socket based on the instance name + sock = fd_find_by_instance_name((char *)dest_instance); + if (sock == -1) { + PRINT_INFO("unable to find instance connection socket for %.20s\n", + dest_instance); + goto done; + } + + + struct json_object *jobj_outmsg = json_object_new_object(); + if (jobj_outmsg == NULL) { + PRINT_ERR("failed to allocate json object for outmsg\n"); + goto done; + } + + json_object_object_add(jobj_outmsg, DATA, jobj_data); + json_object_object_add(jobj_outmsg, VERSION, jobj_version); + json_object_object_add(jobj_outmsg, DEST_ADDR, jobj_dest_addr); + json_object_object_add(jobj_outmsg, SOURCE_ADDR, json_object_new_string(app_addr)); + + const char *outmsg = json_object_to_json_string_ext(jobj_outmsg, JSON_C_TO_STRING_PLAIN); + + // send to guest + ssize_t outlen = strlen(outmsg); + rc = send(sock, outmsg, outlen, 0); + if (rc == -1) { + PRINT_ERR("unable to send msg from %.*s: %m\n", UNIX_ADDR_LEN, app_addr); + } else if (rc != outlen) { + PRINT_ERR("write didn't write the whole message\n"); + } + + // use '\n' to delimit JSON string + rc = send(sock, "\n", 1, 0); + if (rc == -1) { + PRINT_ERR("unable to send \\n \n"); + } + + json_object_put(jobj_outmsg); + +done: + json_object_put(jobj_msg); +} + +// Read and process a message from the application socket +void scan_app_fd() +{ + char buf[10000]; + struct sockaddr_un cliaddr; + ssize_t rc; + + // Process a message from the app socket + socklen_t addrlen = sizeof(struct sockaddr_un); + rc = recvfrom(app_fd, buf, sizeof(buf), 0, + (struct sockaddr *) &cliaddr, &addrlen); + if (rc < 0) { + if (errno == EAGAIN) + // Odd, should have been a message + return; + else { + PRINT_ERR("error in recvfrom from app: %m"); + return; + } + } + handle_app_msg(buf, &cliaddr, addrlen); +} + +//dump stack trace on segfault +static void segv_handler(int signum) +{ + int count; + void *syms[100]; + int fd = open("/var/log/host_agent_backtrace.log", O_RDWR|O_APPEND|O_CREAT, S_IRWXU); + if (fd == -1) { + PRINT_ERR("Unable to open host agent backtrace file: %m"); + goto out; + } + + write(fd, "\n", 1); + count = backtrace(syms, 100); + if (count == 0) { + char *log = "Got zero items in backtrace.\n"; + write(fd, log, strlen(log)); + goto out; + } + + backtrace_symbols_fd(syms, count, fd); +out: + fflush(NULL); + exit(-1); +} + +void free_tok() +{ + int i; + for (i=0; i 1) { + char *endptr, *str; + long val; + str = argv[1]; + errno = 0; + val = strtol(str, &endptr, 0); + + if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN)) + || (errno != 0 && val == 0)) { + PRINT_ERR("error parsing log level arg: strtol: %m"); + exit(-1); + } + + if (endptr == str) { + PRINT_ERR("No digits were found\n"); + exit(EXIT_FAILURE); + } + + if (val > LOG_DEBUG) + val = LOG_DEBUG; + + setlogmask(LOG_UPTO(val)); + } else + setlogmask(LOG_UPTO(LOG_WARNING)); + + signal(SIGSEGV, segv_handler); + + // set up socket for talking to apps + app_fd = socket(AF_UNIX, SOCK_DGRAM, 0); + if (app_fd == -1) { + PRINT_ERR("problem with socket: %m"); + exit(-1); + } + + flags = fcntl(app_fd, F_GETFL, 0); + fcntl(app_fd, F_SETFL, flags | O_NONBLOCK); + + memset(&svaddr, 0, sizeof(struct sockaddr_un)); + svaddr.sun_family = AF_UNIX; + svaddr.sun_path[0] = '\0'; + strncpy(svaddr.sun_path+1, AGENT_ADDR, sizeof(svaddr.sun_path) - 2); + + addrlen = sizeof(sa_family_t) + strlen(AGENT_ADDR) + 1; + if (bind(app_fd, (struct sockaddr *) &svaddr, addrlen) == -1) { + PRINT_ERR("problem with bind to agent addr: %m"); + exit(-1); + } + + pollfd_add(app_fd, POLLIN); + + // This will set up monitoring for new/deleted instances + // and will set up connections for existing instances. + if (server_scan_init() < 0) + return -1; + + int i; + for (i=0; i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "host_guest_msg_type.h" + +/* + Multiple messages from the host can be bundled together into a single "read" + so we need to check message boundaries and handle breaking the message apart. + Assume a valid message does not contain newline '\n', and newline is added to + the beginning and end of each message by the sender to delimit the boundaries. +*/ + +void parser(void *buf, ssize_t len, int fd, json_tokener* tok, int newline_found) +{ + json_object *jobj = json_tokener_parse_ex(tok, buf, len); + enum json_tokener_error jerr = json_tokener_get_error(tok); + + if (jerr == json_tokener_success) { + process_msg(jobj, fd); + json_object_put(jobj); + return; + } + + else if (jerr == json_tokener_continue) { + // partial JSON is parsed , continue to read from socket. + if (newline_found) { + // if newline was found in the middle of the buffer, the message + // should be completed at this point. Throw out incomplete message + // by resetting tokener. + json_tokener_reset(tok); + } + } + else + { + // parsing error + json_tokener_reset(tok); + } +} + + +void handle_virtio_serial_msg(void *buf, ssize_t len, int fd, json_tokener* tok) +{ + void *newline; + ssize_t len_head; + +next: + if (len == 0) + return; + + // search for newline as delimiter + newline = memchr(buf, '\n', len); + + if (newline) { + // split buffer to head and tail at the location of newline. + // feed the head to the parser and recursively process the tail. + len_head = newline-buf; + + // parse head + if (len_head > 0) + parser(buf, len_head, fd, tok, 1); + + // start of the tail: skip newline + buf += len_head+1; + // length of the tail: deduct 1 for the newline character + len -= len_head+1; + + // continue to process the tail. + goto next; + } + else { + parser(buf, len, fd, tok, 0); + } +} diff --git a/guest-comm/host-guest-comm-2.0/host_guest_msg.h b/guest-comm/host-guest-comm-2.0/host_guest_msg.h new file mode 100644 index 00000000..7ab412a5 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/host_guest_msg.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef HOSTGUEST_MSG_H +#define HOSTGUEST_MSG_H + +/* This implements a library for generic guest-host messaging. + * + * This handles some of the boilerplate code that would be common to + * all applications using the generic guest/host communications. That way + * any changes can be made in a single place. + * + * This should be threadsafe as long as multiple threads don't try to + * simultaneously process incoming messages using the same gh_info_t pointer. + * + */ + +#include +#include + +/* Function signature for the guest-host messaging callback function. + * source_addr is a null-terminated string representing the host source address. + * The message contents are entirely up to the sender of the message. +*/ +typedef void (*hg_msg_handler_t)(const char *source_addr, const char *source_instance, + struct json_object *jobj_msg); + +#define HG_ERRORSIZE 400 +typedef struct { + int sock; // socket for talking to guest agent + struct sockaddr_un svaddr; // address of guest agent + int svaddrlen; // length of guest agent address + char errorbuf[HG_ERRORSIZE]; + hg_msg_handler_t hg_msg_handler; +} hg_info_t; + + + +/* Allocate socket, set up callbacks, etc. This must be called once before + * any other API calls. "addr" is a null-terminated string of 16 chars or less + * (including the null) that is unique within this guest. "info" is the address + * of a value-result pointer that will be updated during the call. + * + * On success returns a socket and "info" is updated to point to an allocated chunk of memory. + * On error will return -1. If it was unable to allocate memory then "info" will be + * NULL. If it was able to allocate memory but something else failed then "info" will + * be non-NULL and you can call hg_get_error() to get an error message. + */ +int hg_init(hg_msg_handler_t msg_handler, char *addr, hg_info_t **info); + +/* This should be called when the socket becomes readable. This may result in + * callbacks being called. Returns 0 on success. + * A negative return value indicates an error of some kind. + */ +int hg_process_msg(hg_info_t *info); + +/* Send a message to an address on the host. + * Returns 0 on success. + * A negative return value indicates an error of some kind. + * The message must be a null-terminated string without embedded newlines. + */ +int hg_send_msg(hg_info_t *info, const char *dest_addr, const char *dest_instance, + const char *msg); + +/* Get error message from most recent library call that returned an error. */ +char *hg_get_error(hg_info_t *info); + + + +#endif diff --git a/guest-comm/host-guest-comm-2.0/host_guest_msg_type.h b/guest-comm/host-guest-comm-2.0/host_guest_msg_type.h new file mode 100644 index 00000000..aa0cd83e --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/host_guest_msg_type.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef HOST_GUEST_MSG_TYPE_H +#define HOST_GUEST_MSG_TYPE_H + +#include +#include + +#include "misc.h" + +#define CUR_VERSION 2 + +// The server group message is JSON encoded null-terminated string without +// embedded newlines. +// keys for messages: +#define VERSION "version" +#define SOURCE_ADDR "source_addr" +#define DEST_ADDR "dest_addr" +#define SOURCE_INSTANCE "source_instance" +#define DEST_INSTANCE "dest_instance" +#define DATA "data" + +// Used by the message reassembly code. +// The underlying implementation uses page-size buffers +#define HOST_GUEST_BUFSIZE 4096 + +#define MAX_INSTANCES 100 +#define MAX_FDS_HOST (MAX_INSTANCES+10) +#define INSTANCE_NAME_SIZE 20 + +// unix socket abstract namespace address of both host and guest agent +#define AGENT_ADDR "cgcs.messaging" + +#define UNIX_ADDR_LEN 16 + +// Initialize connection message reassembly buffer +void init_msgbuf(int fd); + +/* Used to store partial host_guest messages */ +typedef struct { + unsigned short len; + char buf[HOST_GUEST_BUFSIZE]; +} msgbuf_t; + +void handle_virtio_serial_msg(void *buf, ssize_t len, int fd, json_tokener* tok); +void process_msg(json_object *jobj_msg, int fd); + +#endif diff --git a/guest-comm/host-guest-comm-2.0/host_instance_mgmt.c b/guest-comm/host-guest-comm-2.0/host_instance_mgmt.c new file mode 100644 index 00000000..5d6f1d78 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/host_instance_mgmt.c @@ -0,0 +1,621 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "misc.h" +#include "host_instance_mgmt.h" + + +/* When a new instance starts up it will create a named unix socket in a known +directory with a known filename format. + +We will monitor the directory using inotify. On detection of a new instance we +will add the instance to our list of instances, create a socket, and connect it +to the named socket. On detection of a deleted instance we will tear it all +down. + +We need to be able to map from socket to instance name and vice versa. +*/ + +// Main poll structure management stuff +struct pollfd pollfds[MAX_INSTANCES]; +int nfds; + +int inotify_fd; +static int inotify_watch_id; +static struct inotify_event *event_ptr; +static int event_size; + +// Directory to watch for sockets +const char* host_virtio_dir = "/var/lib/libvirt/qemu"; + +// Mapping between instance name and fd for its connection +typedef struct { + int fd; + int pollfd_index; + char name[INSTANCE_NAME_SIZE]; +} instance_t; + +static int max_instance=-1; +static instance_t instances[MAX_INSTANCES]; + + +// Lookup table indexed by instance connection fd. +// Assumes fd re-use otherwise the table would need to be bigger. +static instance_t *instance_ptrs[MAX_FDS_HOST]; + + +// Linked list nodes for queue of connections to be retried. +struct conn_retry { + struct conn_retry *next; + unsigned long long next_try; // next retry time in nanoseconds + int sock; + int addrlen; + struct sockaddr_un un; + char instance_name[INSTANCE_NAME_SIZE]; + char file_name[]; +}; +typedef struct conn_retry conn_retry_t; + +// Head/tail pointers for queue of connections to be retried. +static conn_retry_t *retry_list; +static conn_retry_t *retry_list_tail; + + + +// Look up the instance given the fd +char *instance_name_by_fd(int fd) +{ + if (fd < MAX_FDS_HOST) + return instance_ptrs[fd]->name; + else + return NULL; +} + +// Look up the instance given the instance name +instance_t *instance_find_by_instance_name(char *name) +{ + int i; + for (i=0;i<=max_instance;i++) { + instance_t *instance = instances + i; + + // Skip the entry if it has been invalidated. + if (instance->fd == -1) + continue; + if (strncmp(instance->name, name, INSTANCE_NAME_SIZE) == 0) + return instance; + } + return NULL; +} + +// Look up the connection socket given the instance name +int fd_find_by_instance_name(char *name) +{ + instance_t *instance = instance_find_by_instance_name(name); + if (instance) + return instance->fd; + else + return -1; +} + + +// Get the next available slot in the instance table. +instance_t *instance_get_entry() +{ + int i; + + // Use empty element in the existing array if possible. + for (i=0;i<=max_instance;i++) { + instance_t *instance = instances+i; + if (instance->fd == -1) + return instance; + } + // No empty elements, use a new one. + if (max_instance <= MAX_INSTANCES) { + max_instance++; + return instances+max_instance; + } + PRINT_ERR("unable to add fd, already at limit\n"); + return NULL; +} + +// Return the instance to the instance table. +void instance_put_entry(instance_t *instance) +{ + int i; + instance->fd = -1; + i = (instance - instances)/sizeof(*instance); + if (i == max_instance) + max_instance--; +} + + +void init_pollfd(struct pollfd *pfd, int fd, short events) +{ + pfd->fd = fd; + pfd->events = events; + pfd->revents = 0; +} + +// Add a new file descriptor to be monitored, return the index +// in the pollfds table. +int pollfd_add(int fd, short events) +{ + int i; + // Use empty element in the existing array if possible. + for (i=0;i= MAX_FDS_HOST) { + PRINT_ERR("fd too large to store"); + return -1; + } + + // Check if the instance is already in our list; + instance_t *ptr = instance_find_by_instance_name(name); + if (ptr) { + PRINT_INFO("instance %.20s already in table", name); + return 0; + } else { + instance_t *instance; + int idx; + if (max_instance == MAX_INSTANCES-1) { + PRINT_ERR("hit max number of instances"); + return -1; + } + + idx = pollfd_add(fd, events); + if (idx == -1) + return -1; + + PRINT_DEBUG("adding instance %.20s at pollfd index %d\n", name, idx); + + // Claim a new instance struct element. + instance = instance_get_entry(); + instance->fd = fd; + instance->pollfd_index = idx; + strncpy(instance->name, name, sizeof(instance->name)); + + // Index the new element for easy access later. + instance_ptrs[fd] = instance; + + return 0; + } +} + +// The instance socket has disappeared, tear it all down. +void vio_full_disconnect(instance_t *instance) +{ + close(instance->fd); + + // Clear the lookup table entry. + instance_ptrs[instance->fd] = NULL; + + // Clear the pollfd table entry. + pollfd_del_idx(instance->pollfd_index); + + // Clear the instance table entry + instance_put_entry(instance); +} + + +/* + * Check a filename against the expected pattern for a cgcs messaging socket. + * If satisfied, writes to the passed-in instance_name arg; + * + * Returns a pointer to the instance name on success, or NULL on failure. + */ +char *file_to_instance_name(char *filename, char* instance_name) { + int rc; + rc = sscanf(filename, "cgcs.messaging.%[^.].sock", instance_name); + if (rc == 1) + return instance_name; + else + return NULL; +} + +// poll() has told us the socket has been disconnected +void disconnect_guest(int fd) +{ + instance_t *instance = instance_ptrs[fd]; + + // Sanity check + if (instance->fd != fd) + return; + + PRINT_INFO("Detected disconnect of instance '%.20s'\n", instance->name); + vio_full_disconnect(instance); +} + + + +// Inotify has told us that a file has been deleted. +static void socket_deleted(char *fn) +{ + char buf[INSTANCE_NAME_SIZE]; + char* instance_name; + instance_t * instance; + + if (!fn) + return; + + instance_name = file_to_instance_name(fn, buf); + if (!instance_name) + // Not a file we care about. + return; + + instance = instance_find_by_instance_name(instance_name); + if (!instance) { + PRINT_ERR("Couldn't find record for instance %.20s\n", instance_name); + return; + } + + PRINT_INFO("Detected deletion of vio file '%s'\n", fn); + vio_full_disconnect(instance); +} + +// Get time in nanoseconds +static unsigned long long gettime() +{ + struct timespec ts; + clock_gettime(CLOCK_MONOTONIC, &ts); + return (unsigned long long)ts.tv_sec * 1000000000ULL + ts.tv_nsec; +} + +// Time till next connection retry in milliseconds, for use as poll() timeout. +int next_connection_retry_interval() +{ + unsigned long long time_ns; + if (!retry_list) + return -1; // infinite timeout + + time_ns = gettime(); + if (time_ns > retry_list->next_try) + return 0; // immediate timeout + else + return (retry_list->next_try - time_ns)/1000000; // calculated timeout +} + +// We always enqueue at the list tail +static void enqueue_retry(conn_retry_t *retry) +{ + if (retry_list_tail) + retry_list_tail->next = retry; + else + retry_list = retry; + retry_list_tail = retry; + retry->next = NULL; +} + +// We always dequeue from the list head +static conn_retry_t *dequeue_retry() +{ + conn_retry_t *tmp = retry_list; + if (retry_list) + retry_list = retry_list->next; + if (!retry_list) + retry_list_tail = NULL; + return tmp; +} + +// The initial connection attempt failed, add the socket to the connection +// retry list. +static void queue_connection_retry(int sock, char *filename, + char *instance_name, struct sockaddr_un *un, int addrlen) +{ + PRINT_DEBUG("attempting to queue '%s' for connection retry\n", filename); + conn_retry_t *retry = malloc(sizeof(*retry) + strlen(filename) + 1); + if (!retry) { + PRINT_ERR("unable to allocate memory for connection retry\n"); + return; + } + + retry->sock = sock; + strncpy(retry->instance_name, instance_name, sizeof(retry->instance_name)); + strcpy(retry->file_name, filename); + retry->next_try = gettime() + 1000000000ULL; // delay for one second + memcpy(&retry->un, un, sizeof(retry->un)); + retry->addrlen = addrlen; + + enqueue_retry(retry); +} + + +// We've detected a new socket corresponding to a VM. Try and open +// a connection to it. +static int socket_added(char *filename) + { + int rc; + int addrlen; + int sock; + struct sockaddr_un un; + char pathname[PATH_MAX]; + char *instance_name; + char namebuf[INSTANCE_NAME_SIZE]; + instance_t * instance; + int flags; + + if (!filename) { + PRINT_ERR("socket_added called with null filename\n"); + return -1; + } + + instance_name = file_to_instance_name(filename, namebuf); + if (!instance_name) { + // Not a bug, just not a file we care about. + return -1; + } + + instance = instance_find_by_instance_name(instance_name); + if (instance) { + PRINT_DEBUG("'%s' is already known\n", instance_name); + return 0; + } + + snprintf(pathname, sizeof(pathname), "%s/%s", host_virtio_dir, filename); + + sock = socket(AF_UNIX, SOCK_STREAM, 0); + if (sock < 0) { + PRINT_ERR("failed to get socket: %m\n"); + return -1; + } + + flags = fcntl(sock, F_GETFL, 0); + rc = fcntl(sock, F_SETFL, flags | O_NONBLOCK); + if (rc < 0) { + PRINT_ERR("fcntl failed: %s\n", strerror(errno)); + close(sock); + return -1; + } + + un.sun_family = AF_UNIX; + snprintf(pathname, sizeof(pathname), "%s/%s", host_virtio_dir, filename); + strcpy(un.sun_path, pathname); + addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(pathname); + + rc = connect(sock, (struct sockaddr *)&un, addrlen); + if (rc < 0) { + if (errno == ECONNREFUSED || errno == EAGAIN) { + // temporary glitch, retry later + queue_connection_retry(sock, filename, instance_name, &un, addrlen); + return 0; + } else { + PRINT_ERR("connect to '%s' failed: %m\n", pathname); + close(sock); + return -1; + } + } + + PRINT_INFO("Connection accepted to '%s'\n", pathname); + + rc = add_instance(sock, POLLIN, instance_name); + if (rc < 0) { + close(sock); + return -1; + } + + PRINT_INFO("added instance at '%s'\n", filename); + PRINT_INFO("registered instance sock %d\n", sock); + return 0; +} + +// process any outstanding connection retries +void process_connection_retries() +{ + int rc; + conn_retry_t *retry; + unsigned long long time; + + while (retry_list) { + time = gettime(); + if (time < retry_list->next_try) + return; + + retry = dequeue_retry(); + PRINT_DEBUG("dequeued '%s' for connect() retry\n", retry->file_name); + rc = connect(retry->sock, (struct sockaddr *)&retry->un, + retry->addrlen); + if (rc < 0) { + if (errno == ECONNREFUSED || errno == EAGAIN) { + // VM hasn't registered socket yet, retry later + retry->next_try = time + 1000000000ULL; //try again in a second + PRINT_DEBUG("connection for '%s' refused, enqueuing for retry\n", + retry->file_name); + enqueue_retry(retry); + continue; + } else { + PRINT_ERR("connect() for '%s' failed: %m\n", retry->file_name); + close(retry->sock); + free(retry); + continue; + } + } + + PRINT_INFO("Connection accepted to '%s'\n", retry->file_name); + + rc = add_instance(retry->sock, POLLIN, retry->instance_name); + if (rc < 0) { + close(retry->sock); + free(retry); + continue; + } + + // Success path + PRINT_INFO("registered instance sock %d\n", retry->sock); + + PRINT_DEBUG("freeing retry struct for '%s'\n", retry->un.sun_path); + free(retry); + } +} + +void handle_inotify_event() +{ + int len; + int bufsize = sizeof(struct inotify_event) + PATH_MAX + 1; + char buf[bufsize]; + int offset = 0; + + len = read(inotify_fd, buf, bufsize); + if (len < 0) + return; + + // There can be multiple events returned in a single buffer, need + // to process all of them. + while (len-offset > sizeof(struct inotify_event)) { + struct inotify_event *in_event_p = (struct inotify_event *)(buf+offset); + + if ((in_event_p->mask & IN_CREATE) == IN_CREATE) { + PRINT_DEBUG("inotify creation event for '%s'\n", in_event_p->name); + socket_added(in_event_p->name); + } else if ((in_event_p->mask & IN_DELETE) == IN_DELETE) { + PRINT_DEBUG("inotify deletion event for '%s'\n", in_event_p->name); + socket_deleted(in_event_p->name); + } + + // Now skip to the next inotify event if there is one + offset += (sizeof(struct inotify_event) + in_event_p->len); + } +} + +static void server_scan() +{ + DIR *dirp; + struct dirent entry; + struct dirent *result; + int rc; + + dirp = opendir(host_virtio_dir); + if (!dirp) { + PRINT_ERR("opendir %s failed: %m\n", host_virtio_dir); + return; + } + + while(0 == readdir_r(dirp, &entry, &result)) { + if (!result) + break; + + rc = socket_added(result->d_name); + if (rc == 0) { + PRINT_DEBUG("added '%s'\n", result->d_name); + } + } + + closedir(dirp); +} + + +int server_scan_init() +{ + event_size = sizeof(struct inotify_event) + PATH_MAX + 1; + event_ptr = malloc(event_size); + inotify_fd = inotify_init(); + if (inotify_fd < 0) { + PRINT_ERR("inotify_init failed: %m\n"); + return -1; + } + + inotify_watch_id = inotify_add_watch(inotify_fd, host_virtio_dir, IN_CREATE | IN_DELETE); + if (inotify_watch_id < 0) { + PRINT_ERR("vio_add_watch failed: %s\n", strerror(errno)); + close(inotify_fd); + inotify_fd = -1; + return -1; + } + + pollfd_add(inotify_fd, POLLIN); + PRINT_INFO("registered vio inotify sock %d\n", inotify_fd); + + // Do initial scan to pick up existing instance connections + server_scan(); + + return 0; +} diff --git a/guest-comm/host-guest-comm-2.0/host_instance_mgmt.h b/guest-comm/host-guest-comm-2.0/host_instance_mgmt.h new file mode 100644 index 00000000..f501945f --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/host_instance_mgmt.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef HOST_INSTANCE_MGMT_H +#define HOST_INSTANCE_MGMT_H + +#include "host_guest_msg_type.h" + +// Main poll structure management stuff +extern int nfds; +extern struct pollfd pollfds[MAX_INSTANCES]; +int pollfd_add(int fd, short events); + +// Used to scan for added/deleted instances +extern int inotify_fd; + +// Server connection added/deleted +void handle_inotify_event(); + +// Set up inotify-based monitoring +int server_scan_init(void); + +// Map from connection fd to instance name +char *instance_name_by_fd(int fd); + +// Map from instance name to connection fd +int fd_find_by_instance_name(char *name); + +// Handle disconnection of guest +void disconnect_guest(int fd); + +// Handle connection retries +void process_connection_retries(); + +// Time till next connection retry in milliseconds. +int next_connection_retry_interval(); + + +#endif diff --git a/guest-comm/host-guest-comm-2.0/lib/.gitignore b/guest-comm/host-guest-comm-2.0/lib/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/lib/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/guest-comm/host-guest-comm-2.0/lib_guest_host_msg.c b/guest-comm/host-guest-comm-2.0/lib_guest_host_msg.c new file mode 100644 index 00000000..558bafe7 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/lib_guest_host_msg.c @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/* This implements a library to be used for guest/host clients to interface with + * non-standard functionality on the host/guest using the backchannel + * communications pathway. (The same library can be used for both directions.) + * + * The general idea is that everything that goes through this is multiplexed + * over a single unix socket so that the guest app only needs to monitor one + * socket for activity. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "guest_host_msg.h" +#include "host_guest_msg_type.h" + + +/* Send a message to an address on the host. + * Returns 0 on success. + * A negative return value indicates an error of some kind. + */ +int gh_send_msg(gh_info_t *info, const char *dest_addr, const char *msg) +{ + int rc; + + //parse msg data + struct json_object *jobj_data = json_tokener_parse(msg); + if (jobj_data == NULL) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse msg"); + return -1; + } + + struct json_object *jobj_outmsg = json_object_new_object(); + if (jobj_outmsg == NULL) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to allocate json object for outmsg"); + json_object_put(jobj_data); + return -1; + } + + json_object_object_add(jobj_outmsg, DATA, jobj_data); + json_object_object_add(jobj_outmsg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_outmsg, DEST_ADDR, json_object_new_string(dest_addr)); + + + const char *outmsg = json_object_to_json_string_ext(jobj_outmsg, JSON_C_TO_STRING_PLAIN); + int msglen = strlen(outmsg); + + rc = sendto(info->sock, outmsg, msglen, 0, (struct sockaddr *) &info->svaddr, + info->svaddrlen); + if (rc != msglen) { + if (rc > 0) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "sendto returned %d, expected %d", + rc, msglen); + } else + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "sendto: %m"); + goto failed; + } + + json_object_put(jobj_outmsg); + return 0; +failed: + json_object_put(jobj_outmsg); + return -1; +} + + + +/* Read a message from the socket and process it. */ +int gh_process_msg(gh_info_t *info) +{ + char buf[HOST_GUEST_BUFSIZE]; + int len; + + len = recv(info->sock, buf, sizeof(buf), 0); + if (len == -1) { + if (errno == EAGAIN) + return 0; + else { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "error receiving msg: %m"); + return -1; + } + } + + struct json_object *jobj_msg = json_tokener_parse(buf); + if (jobj_msg == NULL) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse msg"); + return -1; + } + + // parse version + struct json_object *jobj_version; + if (!json_object_object_get_ex(jobj_msg, VERSION, &jobj_version)) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse version"); + goto failed; + } + int version = json_object_get_int(jobj_version); + + if (version != CUR_VERSION) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, + "invalid version %d, expecting %d", version, CUR_VERSION); + goto failed; + } + + // parse source address + struct json_object *jobj_source_addr; + if (!json_object_object_get_ex(jobj_msg, SOURCE_ADDR, &jobj_source_addr)) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse source_addr"); + goto failed; + } + const char *source_addr = json_object_get_string(jobj_source_addr); + + // parse data. data is a json object that is nested inside the msg + struct json_object *jobj_data; + if (!json_object_object_get_ex(jobj_msg, DATA, &jobj_data)) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse data"); + goto failed; + } + + if (info->gh_msg_handler) + info->gh_msg_handler(source_addr, jobj_data); + + json_object_put(jobj_msg); + return 0; + +failed: + json_object_put(jobj_msg); + return -1; +} + + +/* Allocate socket, set up callbacks, etc. This must be called once before + * any other API calls. "addr" is a null-terminated string of 16 chars or less + * (including the null) that is unique within this guest. "info" is the address + * of a value-result pointer that will be updated during the call. + * + * On success returns a socket and "info" is updated to point to an allocated chunk of memory. + * On error will return -1. If it was unable to allocate memory then "info" will be + * NULL. If it was able to allocate memory but something else failed then "info" will + * be non-NULL and you can call gh_get_error() to get an error message. + */ + +int gh_init(gh_msg_handler_t msg_handler, char *addr, gh_info_t **in_info) +{ + int flags; + int addrlen; + struct sockaddr_un cliaddr; + gh_info_t *info; + + *in_info = malloc(sizeof(**in_info)); + if (!*in_info) + /* unable to allocate memory */ + return -1; + + info = *in_info; + + /* socket for talking to guest agent */ + info->sock = socket(AF_UNIX, SOCK_DGRAM, 0); + if (info->sock == -1) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "unable to open socket: %m"); + goto free_out; + } + + flags = fcntl(info->sock, F_GETFL, 0); + fcntl(info->sock, F_SETFL, flags | O_NONBLOCK); + + /* our address */ + memset(&cliaddr, 0, sizeof(struct sockaddr_un)); + cliaddr.sun_family = AF_UNIX; + cliaddr.sun_path[0] = '\0'; + strncpy(cliaddr.sun_path+1, addr, + sizeof(cliaddr.sun_path) - 2); + addrlen = sizeof(sa_family_t) + strlen(addr) + 1; + + if (bind(info->sock, (struct sockaddr *) &cliaddr, addrlen) == -1) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "unable to bind socket: %m"); + goto close_out; + } + + /* guest agent address */ + memset(&info->svaddr, 0, sizeof(struct sockaddr_un)); + info->svaddr.sun_family = AF_UNIX; + info->svaddr.sun_path[0] = '\0'; + strncpy(info->svaddr.sun_path+1, AGENT_ADDR, sizeof(info->svaddr.sun_path) - 2); + info->svaddrlen = sizeof(sa_family_t) + strlen(AGENT_ADDR) + 1; + + /* set up callback pointers */ + info->gh_msg_handler = msg_handler; + + return info->sock; + +close_out: + close(info->sock); +free_out: + free(info); + return -1; +} + +/* Provide access to the error message if the most recent call failed. */ +char *gh_get_error(gh_info_t *info) +{ + return info->errorbuf; +} diff --git a/guest-comm/host-guest-comm-2.0/lib_host_guest_msg.c b/guest-comm/host-guest-comm-2.0/lib_host_guest_msg.c new file mode 100644 index 00000000..830fc18c --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/lib_host_guest_msg.c @@ -0,0 +1,250 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/* This implements a library to be used for host clients to interface with + * non-standard functionality on the guest using the backchannel + * communications pathway. + * + * The general idea is that everything that goes through this is multiplexed + * over a single unix socket so that the guest app only needs to monitor one + * socket for activity. + * + * This is almost identical to lib_guest_host_msg.c but some data structures + * are different. Might be possible to extract some common stuff. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "host_guest_msg_type.h" +#include "host_guest_msg.h" + + +/* Send a message to an address on the host. + * Returns 0 on success. + * A negative return value indicates an error of some kind. + */ +int hg_send_msg(hg_info_t *info, const char *dest_addr, const char *dest_instance, + const char *msg) +{ + int rc; + + //parse msg data + struct json_object *jobj_data = json_tokener_parse(msg); + if (jobj_data == NULL) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse msg"); + return -1; + } + + struct json_object *jobj_outmsg = json_object_new_object(); + if (jobj_outmsg == NULL) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to allocate json object for outmsg"); + json_object_put(jobj_data); + return -1; + } + + json_object_object_add(jobj_outmsg, DATA, jobj_data); + json_object_object_add(jobj_outmsg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_outmsg, DEST_ADDR, json_object_new_string(dest_addr)); + json_object_object_add(jobj_outmsg, DEST_INSTANCE, json_object_new_string(dest_instance)); + + const char *outmsg = json_object_to_json_string_ext(jobj_outmsg, JSON_C_TO_STRING_PLAIN); + int msglen = strlen(outmsg); + + rc = sendto(info->sock, outmsg, msglen, 0, (struct sockaddr *) &info->svaddr, + info->svaddrlen); + if (rc != msglen) { + if (rc > 0) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "sendto returned %d, expected %d", + rc, msglen); + } else + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "sendto: %m"); + goto failed; + } + + json_object_put(jobj_outmsg); + return 0; +failed: + json_object_put(jobj_outmsg); + return -1; +} + + + +/* Read a message from the socket and process it. */ +int hg_process_msg(hg_info_t *info) +{ + char buf[HOST_GUEST_BUFSIZE]; + int len; + + len = recv(info->sock, buf, sizeof(buf), 0); + if (len == -1) { + if (errno == EAGAIN) + return 0; + else { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "error receiving msg: %m"); + return -1; + } + } + + struct json_object *jobj_msg = json_tokener_parse(buf); + if (jobj_msg == NULL) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse msg"); + return -1; + } + + // parse version + struct json_object *jobj_version; + if (!json_object_object_get_ex(jobj_msg, VERSION, &jobj_version)) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse version"); + goto failed; + } + int version = json_object_get_int(jobj_version); + + if (version != CUR_VERSION) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "invalid version"); + goto failed; + } + + // parse source address + struct json_object *jobj_source_addr; + if (!json_object_object_get_ex(jobj_msg, SOURCE_ADDR, &jobj_source_addr)) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse source_addr"); + goto failed; + } + const char *source_addr = json_object_get_string(jobj_source_addr); + + // parse source instance + struct json_object *jobj_source_instance; + if (!json_object_object_get_ex(jobj_msg, SOURCE_INSTANCE, &jobj_source_instance)) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse source_instance"); + goto failed; + } + const char *source_instance = json_object_get_string(jobj_source_instance); + + // parse data. data is a json object that is nested inside the msg + struct json_object *jobj_data; + if (!json_object_object_get_ex(jobj_msg, DATA, &jobj_data)) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "failed to parse data"); + goto failed; + } + + if (info->hg_msg_handler) + info->hg_msg_handler(source_addr, source_instance, jobj_data); + + json_object_put(jobj_msg); + return 0; + +failed: + json_object_put(jobj_msg); + return -1; +} + + +/* Allocate socket, set up callbacks, etc. This must be called once before + * any other API calls. "addr" is a null-terminated string of 16 chars or less + * (including the null) that is unique within this guest. "info" is the address + * of a value-result pointer that will be updated during the call. + * + * On success returns a socket and "info" is updated to point to an allocated chunk of memory. + * On error will return -1. If it was unable to allocate memory then "info" will be + * NULL. If it was able to allocate memory but something else failed then "info" will + * be non-NULL and you can call hg_get_error() to get an error message. + */ + +int hg_init(hg_msg_handler_t msg_handler, char *addr, hg_info_t **in_info) +{ + int flags; + int addrlen; + struct sockaddr_un cliaddr; + hg_info_t *info; + + *in_info = malloc(sizeof(**in_info)); + if (!*in_info) + /* unable to allocate memory */ + return -1; + + info = *in_info; + + /* socket for talking to guest agent */ + info->sock = socket(AF_UNIX, SOCK_DGRAM, 0); + if (info->sock == -1) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "unable to open socket: %m"); + goto free_out; + } + + flags = fcntl(info->sock, F_GETFL, 0); + fcntl(info->sock, F_SETFL, flags | O_NONBLOCK); + + /* our address */ + memset(&cliaddr, 0, sizeof(struct sockaddr_un)); + cliaddr.sun_family = AF_UNIX; + cliaddr.sun_path[0] = '\0'; + strncpy(cliaddr.sun_path+1, addr, + sizeof(cliaddr.sun_path) - 2); + addrlen = sizeof(sa_family_t) + strlen(addr) + 1; + + if (bind(info->sock, (struct sockaddr *) &cliaddr, addrlen) == -1) { + snprintf(info->errorbuf, sizeof(info->errorbuf)-1, "unable to bind socket: %m"); + goto close_out; + } + + /* guest agent address */ + memset(&info->svaddr, 0, sizeof(struct sockaddr_un)); + info->svaddr.sun_family = AF_UNIX; + info->svaddr.sun_path[0] = '\0'; + strncpy(info->svaddr.sun_path+1, AGENT_ADDR, sizeof(info->svaddr.sun_path) - 2); + info->svaddrlen = sizeof(sa_family_t) + strlen(AGENT_ADDR) + 1; + + /* set up callback pointers */ + info->hg_msg_handler = msg_handler; + + return info->sock; + +close_out: + close(info->sock); +free_out: + free(info); + return -1; +} + +/* Provide access to the error message if the most recent call failed. */ +char *hg_get_error(hg_info_t *info) +{ + return info->errorbuf; +} diff --git a/guest-comm/host-guest-comm-2.0/misc.h b/guest-comm/host-guest-comm-2.0/misc.h new file mode 100644 index 00000000..e8434ed3 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/misc.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef CGCS_MSG_MISC_H +#define CGCS_MSG_MISC_H + +#include + +#define PRINT(level, format, ...) \ + syslog(level, "%s(%d): " format, __FILE__, __LINE__, ##__VA_ARGS__) + +#define PRINT_ERR(format, ...) PRINT(LOG_ERR, format, ##__VA_ARGS__) +#define PRINT_INFO(format, ...) PRINT(LOG_INFO, format, ##__VA_ARGS__) +#define PRINT_DEBUG(format, ...) PRINT(LOG_DEBUG, format, ##__VA_ARGS__) + +#endif diff --git a/guest-comm/host-guest-comm-2.0/obj/.gitignore b/guest-comm/host-guest-comm-2.0/obj/.gitignore new file mode 100644 index 00000000..5e7d2734 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/obj/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/guest-comm/host-guest-comm-2.0/scripts/guest-agent.service b/guest-comm/host-guest-comm-2.0/scripts/guest-agent.service new file mode 100644 index 00000000..f37042be --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/scripts/guest-agent.service @@ -0,0 +1,12 @@ +[Unit] +Description=Titanium Cloud Host Guest Messaging Agent +After=cloud-init.service + +[Service] +ExecStart=/usr/sbin/guest_agent +Type=simple +Restart=always + +[Install] +WantedBy=multi-user.target + diff --git a/guest-comm/host-guest-comm-2.0/scripts/host_agent b/guest-comm/host-guest-comm-2.0/scripts/host_agent new file mode 100644 index 00000000..78648dca --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/scripts/host_agent @@ -0,0 +1,78 @@ +#!/bin/sh +# +# Copyright(c) 2013-2016, Wind River Systems, Inc. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Wind River Systems nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +DAEMON=/usr/sbin/host_agent +NAME=host_agent +DESC="agent to communicate with guest" +ARGS= +PIDFILE=/var/run/host_agent.pid + +test -f $DAEMON || exit 0 + +case "$1" in + start) + echo -n "starting $DESC: $NAME... " + test -d /var/lib/misc/ || mkdir /var/lib/misc/ + start-stop-daemon -S -m -b -x $DAEMON --pidfile=$PIDFILE -- $ARGS + echo "done." + ;; + stop) + echo -n "stopping $DESC: $NAME... " + start-stop-daemon -K -x $DAEMON --pidfile=$PIDFILE + echo "done." + ;; + status) + echo -n "$NAME " + start-stop-daemon -q -K -t -x $DAEMON --pidfile=$PIDFILE + RET=$? + if [ "$RET" = "0" ]; then + PID=`cat $PIDFILE` + echo "($PID) is running" + else + echo "is not running" + # For lsb compliance return 3 if process not running + exit 3 + fi + ;; + restart) + echo "restarting $DESC: $NAME... " + $0 stop + $0 start + echo "done." + ;; + *) + echo "Usage: $0 {start|stop|status|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/guest-comm/host-guest-comm-2.0/scripts/host_agent.conf b/guest-comm/host-guest-comm-2.0/scripts/host_agent.conf new file mode 100644 index 00000000..c6f2f47d --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/scripts/host_agent.conf @@ -0,0 +1,24 @@ +[process] +process = host_agent +pidfile = /var/run/host_agent.pid +script = /etc/init.d/host_agent +style = lsb ; ocf or lsb +severity = major ; minor, major, critical +restarts = 3 ; restart retries before error assertion +interval = 1 ; number of seconds to wait between restarts +debounce = 20 ; number of seconds that a process needs to remain + ; running before degrade is removed and retry count + ; is cleared. +startuptime = 5 ; Seconds to wait after process start before starting the debounce monitor +mode = passive ; Monitoring mode: passive (default or if mode field is missing) or active + ; passive: process death monitoring (default: always) + ; active: heartbeat monitoring, i.e. request / response messaging + ; ignore: do not monitor or stop monitoring process +subfunction = compute ; Optional label. + ; Manage this process in the context of a combo host subfunction + ; Choices: compute or storage. + ; when specified pmond will wait for + ; /var/run/.compute_config_complete or + ; /var/run/.storage_config_complete + ; ... before managing this process with the specified subfunction + ; Excluding this label will cause this process to be managed by default on startup diff --git a/guest-comm/host-guest-comm-2.0/scripts/host_agent.service b/guest-comm/host-guest-comm-2.0/scripts/host_agent.service new file mode 100644 index 00000000..7e58b4c1 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/scripts/host_agent.service @@ -0,0 +1,13 @@ +[Unit] +Description=Titanium Cloud Host Guest Messaging Agent +After=config.service +Before=pmon.service + +[Service] +Type=forking +ExecStart=/etc/init.d/host_agent start +ExecStop=/etc/init.d/host_agent stop +PIDFile=/var/run/host_agent.pid + +[Install] +WantedBy=multi-user.target diff --git a/guest-comm/host-guest-comm-2.0/server_group.c b/guest-comm/host-guest-comm-2.0/server_group.c new file mode 100644 index 00000000..11033962 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/server_group.c @@ -0,0 +1,497 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/* This implements a library to be used for guest clients to interface with + * non-standard functionality on the host using the backchannel + * communications pathway. + * + * The general idea is that everything that goes through this is multiplexed + * over a single unix socket so that the guest app only needs to monitor one + * socket for activity. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "server_group.h" +#include "host_guest_msg_type.h" + +/* unix socket abstract namespace address of guest agent */ +#define GUEST_CLIENT_ADDR "cgcs.server_grp" + +#define HOST_GUEST_BUFSIZE 4096 // max size of message that can be received + + +/* Server Group message is encoded in JSON format. + The message sent out to UNIX socket is a null-terminated JSON format string + without embedded newlines. + + Format: + {key:value,key:value,..., key:value} + + Key/value pairs: + "version": - version of the interface + "type": < string> - one of these types “broadcast", "notification", + "status_query", "status_response", + "status_response_done” + + "req": - sequence number for status_query/status_response/ + status_response_done messages + + "source_instance“: - source instance that send out the broadcast + "data": - message content for broadcast, notification, + status_query and status_response messages. + Must be a null-terminated string without embedded newlines. + + + Message Types: + broadcast - incoming or outgoing + notification - incoming, state change of other servers within the + server group + status_query - outgoing, query the current state of all servers + within the server group + status_response - incoming, one or more responses to the status_query + status_response_done - incoming, last response to the status query + +*/ + +// server group message type +#define GRP_BROADCAST "broadcast" // broadcast message from another server +#define GRP_NOTIFICATION "notification" // notification of server state change +#define GRP_STATUS_QUERY "status_query" // query of status of all servers in group +#define GRP_STATUS_RESP "status_response" // query response msg (could be several) +#define GRP_STATUS_RESP_DONE "status_response_done" // query response done msg (no data) +#define GRP_NACK "nack" // nack msg indicating parse or protocol error from host + + +/* Header for incoming server group messages. The exact contents will differ + * depending on message type. + * + * "len" is the overall length including header. + * + * For messages with a TYPE of GRP_BROADCAST only, the "sinstance" field + * will contain the instance name of the instance that sent the broadcast, and + * DATA will contain the message that was sent. + * + */ +static int sock; // socket for talking to guest agent +static struct sockaddr_un svaddr; // address of guest agent +static int svaddrlen; // length of guest agent address + +static unsigned int status_seqnum; // status query sequence number +static char *status_buf; // status query reassembly buffer +static unsigned long status_size; // current status buffer size +static unsigned long status_len; // currently used buffer length + +#define ERRORSIZE 400 +static char errorbuf[ERRORSIZE]; + +static sg_broadcast_msg_handler_t sg_broadcast_msg_callback; +static sg_notification_msg_handler_t sg_notification_msg_callback; +static sg_status_msg_handler_t sg_status_msg_callback; + + +/* Generic routine to send a server group message down to the host. */ +int sg_send_host_msg(const char *msg_type, int seq, const char *data) +{ + int rc; + + struct json_object *jobj_data = json_object_new_object(); + if (jobj_data == NULL) { + snprintf(errorbuf, ERRORSIZE-1, "failed to allocate json object for data"); + return -1; + } + + json_object_object_add(jobj_data, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_data, MSG_TYPE, json_object_new_string(msg_type)); + if (!strcmp(msg_type, GRP_STATUS_QUERY)) { + json_object_object_add(jobj_data, SEQ, json_object_new_int(seq)); + } + + if (data) { + json_object_object_add(jobj_data, DATA, json_object_new_string(data)); + } + + struct json_object *jobj_outmsg = json_object_new_object(); + if (jobj_outmsg == NULL) { + snprintf(errorbuf, ERRORSIZE-1, "failed to allocate json object for outmsg"); + json_object_put(jobj_data); + return -1; + } + + json_object_object_add(jobj_outmsg, DATA, jobj_data); + json_object_object_add(jobj_outmsg, VERSION, json_object_new_int(CUR_VERSION)); + /* This is a known address that nova-compute is listening on */ + json_object_object_add(jobj_outmsg, DEST_ADDR, json_object_new_string(GUEST_CLIENT_ADDR)); + + const char *outmsg = json_object_to_json_string_ext(jobj_outmsg, JSON_C_TO_STRING_PLAIN); + int msglen = strlen(outmsg); + + rc = sendto(sock, outmsg, msglen, 0, (struct sockaddr *) &svaddr, svaddrlen); + if (rc != msglen) { + if (rc > 0) { + snprintf(errorbuf, ERRORSIZE-1, "sendto returned %d, expected %d", + rc, msglen); + } else + snprintf(errorbuf, ERRORSIZE-1, "sendto: %m"); + json_object_put(jobj_outmsg); + return -1; + } + + json_object_put(jobj_outmsg); + return 0; +} + +/* Send a message to all other servers in our server group. */ +int sg_msg_broadcast(void *msg, unsigned int len) +{ + return sg_send_host_msg(GRP_BROADCAST, 0, (const char*)msg); +} + +/* Ensure the status buffer is at least as big as the specified size. + * Call realloc() if necessary to grow the buffer. + */ +int ensure_status_buf_size(unsigned int size) +{ + if (size > status_size) { + /* need to grow the buffer */ + void *ptr = realloc(status_buf, size); + if (!ptr) { + /* hopefully shouldn't happen */ + snprintf(errorbuf, ERRORSIZE-1, + "unable to realloc buffer to size %u", size); + + /* give up on current status query */ + status_seqnum++; + status_len = 0; + return -1; + } + status_buf = ptr; + status_size = size; + } + return 0; +} + +/* Request current status of all servers in server group. Due to limitations in + * the current implementation of host-guest comm channel agents we receive + * information on one server per response, then a final "done" message. This + * could be changed if we fix the host-guest comm channel to handle arbitrarily + * large messages. + * + * Yes, the current design is not the most robust...might want to consider adding + * an indication of how many servers we expect data for and which one we're on + * in case we lose a message or something. Better fix might be to just fix the + * host-guest comm channel to handle arbitrarily large messages. + */ +int sg_request_status() +{ + int rc; + /* If we were still receiving status updates from a previous query this + * will cause them to get dropped. + */ + status_seqnum++; + status_len = 0; + + /* Ensure we have room for an empty list otherwise give up. + * Start with a decent size buffer to minimize reallocs. + */ + if (ensure_status_buf_size(4096) != 0) + return -1; + + rc = sg_send_host_msg(GRP_STATUS_QUERY, status_seqnum, NULL); + if (rc == 0) { + /* start a list in the buffer */ + status_buf[0] = '['; + status_len = 1; + } + return rc; +} + +/* Handle a response to the status query. This should contain the current + * status of a single server. We add it to the data accumulating in the buffer. + */ +int handle_status_resp(unsigned int seqnum, const char *msg, unsigned int len) +{ + if (seqnum != status_seqnum) { + snprintf(errorbuf, ERRORSIZE-1, + "status resp seqnum %u doesn't match expected %u", + seqnum, status_seqnum); + return -1; + } + + /* Ensure we have room for new data otherwise give up. + * Add an extra byte for comma between server data. + */ + if (ensure_status_buf_size(status_len + len + 1) != 0) + return -1; + + /* comma-separate the status for each instance */ + if (status_len != 1) { + status_buf[status_len] = ','; + status_len++; + } + + /* Now copy the server status into the buffer */ + memcpy((status_buf + status_len), msg, len); + status_len += len; + return 0; +} + +/* This tells us that we've received all the server status messages + * so we can call the callback and then reset things for the next one. + */ +int handle_status_resp_done(unsigned int seqnum) +{ + if (seqnum != status_seqnum) { + snprintf(errorbuf, ERRORSIZE-1, + "status resp done seqnum %u doesn't match expected %u", + seqnum, status_seqnum); + return -1; + } + + /* Ensure we have room for list terminator otherwise give up */ + if (ensure_status_buf_size(status_len + 1) != 0) + return -1; + + if (status_buf) { + /* terminate the list */ + status_buf[status_len] = ']'; + status_len++; + + if (sg_status_msg_callback) + sg_status_msg_callback(status_buf, status_len); + } + + /* reset the buffer */ + status_len = 0; + /* bump seqnum just in case */ + status_seqnum++; + return 0; +} + + +int dispatch_sg_msg(json_object *job_msg) +{ + int rc = 0; + + struct json_object *jobj_msg_type; + if (!json_object_object_get_ex(job_msg, MSG_TYPE, &jobj_msg_type)) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse msg_type"); + return -1; + } + const char *msg_type = json_object_get_string(jobj_msg_type); + + struct json_object *jobj_data; + const char *data; + + // type GRP_STATUS_RESP_DONE message does not have a data field + if (!strcmp(msg_type, GRP_BROADCAST) || + !strcmp(msg_type, GRP_NOTIFICATION) || + !strcmp(msg_type, GRP_STATUS_RESP)) { + if (!json_object_object_get_ex(job_msg, DATA, &jobj_data)) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse data for type %s", msg_type); + return -1; + } + data = json_object_get_string(jobj_data); + } + + if (!strcmp(msg_type, GRP_BROADCAST)) { + struct json_object *jobj_source_instance; + if (!json_object_object_get_ex(job_msg, SOURCE_INSTANCE, &jobj_source_instance)) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse source_instance for type %s", msg_type); + return -1; + } + const char *source_instance = json_object_get_string(jobj_source_instance); + + if (sg_broadcast_msg_callback) + sg_broadcast_msg_callback((char *)source_instance, (void *)data, strlen(data)); + } + else if (!strcmp(msg_type, GRP_NOTIFICATION)) { + if (sg_notification_msg_callback) + sg_notification_msg_callback((void *)data, strlen(data)); + } + else if ((!strcmp(msg_type, GRP_STATUS_RESP)) || (!strcmp(msg_type, GRP_STATUS_RESP_DONE))) { + struct json_object *jobj_seq; + if (!json_object_object_get_ex(job_msg, SEQ, &jobj_seq)) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse seq for type %s", msg_type); + return -1; + } + int seq = json_object_get_int(jobj_seq); + + if (!strcmp(msg_type, GRP_STATUS_RESP)) { + rc = handle_status_resp(seq, data, strlen(data)); + } + else if (!strcmp(msg_type, GRP_STATUS_RESP_DONE)) { + rc = handle_status_resp_done(seq); + } + } + else if (!strcmp(msg_type, GRP_NACK)) { + struct json_object *jobj_log_msg; + if (!json_object_object_get_ex(job_msg, LOG_MSG, &jobj_log_msg)) { + snprintf(errorbuf, ERRORSIZE-1, "Nack: failed to parse log_msg"); + } + const char *log_msg = json_object_get_string(jobj_log_msg); + snprintf(errorbuf, ERRORSIZE-1, "Nack received, error message from host: %s", log_msg); + return -1; + } else { + snprintf(errorbuf, ERRORSIZE-1, "unknown server group message type %s", msg_type); + return -1; + } + return rc; +} + + +/* Read a message from the socket and process it. */ +int process_sg_msg() +{ + char buf[HOST_GUEST_BUFSIZE]; + int len; + int rc = -1; + + len = recv(sock, buf, sizeof(buf), 0); + if (len == -1) { + if (errno == EAGAIN) + return 0; + else { + snprintf(errorbuf, ERRORSIZE-1, "error receiving msg: %m"); + return -1; + } + } + + struct json_object *jobj_msg = json_tokener_parse(buf); + if (jobj_msg == NULL) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse msg"); + return -1; + } + + // parse version + struct json_object *jobj_version; + if (!json_object_object_get_ex(jobj_msg, VERSION, &jobj_version)) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse version"); + goto done; + } + int version = json_object_get_int(jobj_version); + + if (version != CUR_VERSION) { + snprintf(errorbuf, ERRORSIZE-1, "invalid version"); + goto done; + } + + // parse source address + struct json_object *jobj_source_addr; + if (!json_object_object_get_ex(jobj_msg, SOURCE_ADDR, &jobj_source_addr)) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse source_addr"); + goto done; + } + const char *source_addr = json_object_get_string(jobj_source_addr); + + /* check the host sender */ + if (strcmp(source_addr, GUEST_CLIENT_ADDR) != 0) { + snprintf(errorbuf, ERRORSIZE-1, "unknown sender address %s", source_addr); + goto done; + } + + // parse data. data is a json object that is nested inside the msg + struct json_object *jobj_data; + if (!json_object_object_get_ex(jobj_msg, DATA, &jobj_data)) { + snprintf(errorbuf, ERRORSIZE-1, "failed to parse data"); + goto done; + } + + rc = dispatch_sg_msg(jobj_data); + +done: + json_object_put(jobj_msg); + return rc; +} + + +/* This needs to be called first to initialize sockets, buffers, + * callback pointers, etc. + */ +int init_sg(sg_broadcast_msg_handler_t broadcast_handler, + sg_notification_msg_handler_t notification_handler, + sg_status_msg_handler_t status_handler) +{ + int flags; + int addrlen; + struct sockaddr_un cliaddr; + + // socket for talking to guest agent + sock = socket(AF_UNIX, SOCK_DGRAM, 0); + if (sock == -1) { + snprintf(errorbuf, ERRORSIZE-1, "unable to open socket: %m"); + return -1; + } + + flags = fcntl(sock, F_GETFL, 0); + fcntl(sock, F_SETFL, flags | O_NONBLOCK); + + /* our address */ + memset(&cliaddr, 0, sizeof(struct sockaddr_un)); + cliaddr.sun_family = AF_UNIX; + cliaddr.sun_path[0] = '\0'; + strncpy(cliaddr.sun_path+1, GUEST_CLIENT_ADDR, + sizeof(cliaddr.sun_path) - 2); + addrlen = sizeof(sa_family_t) + strlen(GUEST_CLIENT_ADDR) + 1; + + if (bind(sock, (struct sockaddr *) &cliaddr, addrlen) == -1) { + snprintf(errorbuf, ERRORSIZE-1, "unable to bind socket: %m"); + return -1; + } + + /* guest agent address */ + memset(&svaddr, 0, sizeof(struct sockaddr_un)); + svaddr.sun_family = AF_UNIX; + svaddr.sun_path[0] = '\0'; + strncpy(svaddr.sun_path+1, AGENT_ADDR, sizeof(svaddr.sun_path) - 2); + svaddrlen = sizeof(sa_family_t) + strlen(AGENT_ADDR) + 1; + + /* set up callback pointers */ + sg_broadcast_msg_callback = broadcast_handler; + sg_notification_msg_callback = notification_handler; + sg_status_msg_callback = status_handler; + + return sock; +} + +/* Provide access to the error message if the most recent call failed. */ +char *sg_get_error() +{ + return errorbuf; +} diff --git a/guest-comm/host-guest-comm-2.0/server_group.h b/guest-comm/host-guest-comm-2.0/server_group.h new file mode 100644 index 00000000..87353a82 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/server_group.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** +*/ + +#ifndef GUEST_CLIENT_H +#define GUEST_CLIENT_H + +// keys for server group messages +#define VERSION "version" +#define MSG_TYPE "msg_type" +#define SEQ "seq" +#define SOURCE_INSTANCE "source_instance" +#define DATA "data" +#define LOG_MSG "log_msg" + +/* This implements a library for server group messaging. + * + * The general idea is that everything that goes through this is multiplexed + * over a single unix socket so that the guest app only needs to monitor one + * socket for activity. + * + * This has not been tested for safe use in multithreaded applications. + */ + + +/* Function signature for the server group broadcast messaging callback function. + * source_instance is a null-terminated string of the form "instance-xxxxxxxx". + * The message contents are entirely up to the sender of the message. + */ +typedef void (*sg_broadcast_msg_handler_t)(char *source_instance, void *msg, + unsigned short msglen); + +/* Function signature for the server group notification callback function. The + * message is basically the notification as sent out by nova with some information + * removed as not relevant. The message is not null-terminated, though it is + * a JSON representation of a python dictionary. + */ +typedef void (*sg_notification_msg_handler_t)(void *msg, unsigned short msglen); + +/* Function signature for the server group status callback function. The + * message is a JSON representation of a list of dictionaries, each of which + * corresponds to a single server. The message is not null-terminated. + */ +typedef void (*sg_status_msg_handler_t)(void *msg, unsigned short msglen); + + + +/* Get error message from most recent library call that returned an error. */ +char *sg_get_error(); + +/* Allocate socket, set up callbacks, etc. This must be called once before + * any other API calls. + * + * Returns a socket that must be monitored for activity using select/poll/etc. + * A negative return value indicates an error of some kind. + */ +int init_sg(sg_broadcast_msg_handler_t broadcast_handler, + sg_notification_msg_handler_t notification_handler, + sg_status_msg_handler_t status_handler); + +/* This should be called when the socket becomes readable. This may result in + * callbacks being called. Returns 0 on success. + * A negative return value indicates an error of some kind. + */ +int process_sg_msg(); + +/* max msg length for a broadcast message */ +#define MAX_MSG_DATA_LEN 3050 + +/* Send a server group broadcast message. Returns 0 on success. + * A negative return value indicates an error of some kind. + * The message must be a null-terminated string without embedded newlines. + * len is no longer used. + */ +int sg_msg_broadcast(void *msg, unsigned int len); + +/* Request a status update for all servers in the group. + * Returns 0 if the request was successfully sent. + * A negative return value indicates an error of some kind. + * + * A successful response will cause the status_handler callback + * to be called. + * + * If a status update has been requested but the callback has not yet + * been called this may result in the previous request being cancelled. + */ +int sg_request_status(); + + +#endif + diff --git a/guest-comm/host-guest-comm-2.0/server_group_app.c b/guest-comm/host-guest-comm-2.0/server_group_app.c new file mode 100644 index 00000000..21ad3d41 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/server_group_app.c @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** +*/ + +#include +#include +#include +#include + +#include "server_group.h" + + +void sg_broadcast_msg_handler(char *source_instance, void *msg, + unsigned short msglen) +{ + printf("got server group broadcast msg: len: %d, sinstance: %.20s, msg: %.*s\n\n", + msglen, source_instance, msglen, (char *)msg); +} + +void sg_notification_msg_handler(void *msg, unsigned short msglen) +{ + printf("got server group notification msg: %.*s\n\n", + msglen, (char *)msg); +} + +void sg_status_msg_handler(void *msg, unsigned short msglen) +{ + printf("got server group status response msg: %.*s\n\n", + msglen, (char *)msg); +} + +int main(int argc, char **argv) +{ + int nfds; + int rc; + fd_set rfds; + // socket for guest client library + int sock = init_sg(sg_broadcast_msg_handler, + sg_notification_msg_handler, + sg_status_msg_handler); + if (sock < 0) { + printf("error initializing library: %s\n", sg_get_error()); + exit(-1); + } + nfds=sock+1; + FD_ZERO(&rfds); + FD_SET(sock, &rfds); + + if (argc == 2) { + rc = sg_msg_broadcast(argv[1], strlen(argv[1])+1); + if (rc != 0) { + printf("problem sending broadcast: %s\n", sg_get_error()); + return -1; + } + } + + rc = sg_request_status(); + if (rc != 0) { + printf("problem requesting status: %s\n", sg_get_error()); + return -1; + } + + while(1) { + int retval; + fd_set tmpfds = rfds; + retval = select(nfds, &tmpfds, NULL, NULL, NULL); + + if (retval > 0) { + rc = process_sg_msg(); + if (rc < 0) { + printf("problem processing incoming msg: %s\n", sg_get_error()); + } + } else if (retval == -1) + perror("select()"); + } + return 0; +} + + diff --git a/guest-comm/host-guest-comm-2.0/test/guest_app.c b/guest-comm/host-guest-comm-2.0/test/guest_app.c new file mode 100644 index 00000000..663394f0 --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/test/guest_app.c @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + build: gcc -I../ -o guest_app guest_app.c -ljson-c +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "host_guest_msg_type.h" + +struct json_object *create_new_jobj_data() +{ + struct json_object *jobj_data = json_object_new_object(); + if (jobj_data == NULL) { + printf("failed to allocate json object for data\n"); + return NULL; + } + + json_object_object_add(jobj_data, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_data, "resource", json_object_new_string("cpu")); + json_object_object_add(jobj_data, "direction", json_object_new_string("down")); + return jobj_data; +} + +// create app to daemon msg +const char *create_outmsg(int msg_count) +{ + struct json_object *jobj_msg = json_object_new_object(); + if (jobj_msg == NULL) { + printf("failed to allocate json object for msg\n"); + return NULL; + } + + json_object_object_add(jobj_msg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_msg, DEST_ADDR, json_object_new_string("h_scale_agent")); + json_object_object_add(jobj_msg, "msg_count", json_object_new_int(msg_count)); + + struct json_object *jobj_data = create_new_jobj_data(); + if (jobj_data == NULL) { + json_object_put(jobj_msg); + return NULL; + } + + json_object_object_add(jobj_msg, DATA, create_new_jobj_data()); + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + return msg; +} + +// create daemon to app msg +const char *create_inmsg() +{ + struct json_object *jobj_msg = json_object_new_object(); + if (jobj_msg == NULL) { + printf("failed to allocate json object for msg\n"); + return NULL; + } + + json_object_object_add(jobj_msg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_msg, SOURCE_ADDR, json_object_new_string("h_scale_agent")); + + struct json_object *jobj_data = create_new_jobj_data(); + if (jobj_data == NULL) { + json_object_put(jobj_msg); + return NULL; + } + + json_object_object_add(jobj_msg, DATA, create_new_jobj_data()); + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + return msg; +} + +int main() +{ + char buf[4096]; + int len; + struct sockaddr_un cliaddr, srvaddr; + int rc; + + // set up socket for talking to host agent + int fd = socket(AF_UNIX, SOCK_DGRAM, 0); + if (fd == -1) { + perror("socket"); + exit(-1); + } + + memset(&cliaddr, 0, sizeof(struct sockaddr_un)); + cliaddr.sun_family = AF_UNIX; + cliaddr.sun_path[0] = '\0'; + strncpy(cliaddr.sun_path+1, "g_scale_agent", sizeof(cliaddr.sun_path) - 2); + + if (bind(fd, (struct sockaddr *) &cliaddr, sizeof(struct sockaddr_un)) == -1) { + perror("bind"); + exit(-1); + } + + /* Construct address of server */ + memset(&srvaddr, 0, sizeof(struct sockaddr_un)); + srvaddr.sun_family = AF_UNIX; + srvaddr.sun_path[0] = '\0'; + strncpy(srvaddr.sun_path+1, AGENT_ADDR, sizeof(srvaddr.sun_path) - 2); + + const char* inmsg = create_inmsg(); + const char* outmsg = create_outmsg(1); + len = strlen(outmsg); + rc = sendto(fd, outmsg, len, 0, (struct sockaddr *) &srvaddr, + sizeof(struct sockaddr_un)); + if (rc != len) { + perror("sendto"); + exit(-1); + } + outmsg = create_outmsg(2); + len = strlen(outmsg); + rc = sendto(fd, outmsg, len, 0, (struct sockaddr *) &srvaddr, + sizeof(struct sockaddr_un)); + if (rc != len) { + perror("sendto"); + exit(-1); + } + + while (1) { + len = recv(fd, buf, sizeof(buf), 0); + if (len == -1) { + perror("recvfrom"); + exit(-1); + } + printf("Msg from host: %s\n", buf); + fflush(0); + } +} + + diff --git a/guest-comm/host-guest-comm-2.0/test/host_app.c b/guest-comm/host-guest-comm-2.0/test/host_app.c new file mode 100644 index 00000000..d8b2477e --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/test/host_app.c @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + build: gcc -I../ -o host_app host_app.c -ljson-c +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "host_guest_msg_type.h" + +struct json_object *create_new_jobj_data() +{ + struct json_object *jobj_data = json_object_new_object(); + if (jobj_data == NULL) { + printf("failed to allocate json object for data\n"); + return NULL; + } + + json_object_object_add(jobj_data, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_data, "resource", json_object_new_string("cpu")); + json_object_object_add(jobj_data, "direction", json_object_new_string("down")); + return jobj_data; +} + +// create app to daemon msg +const char *create_outmsg(int msg_count, const char *dest_instance) +{ + struct json_object *jobj_msg = json_object_new_object(); + if (jobj_msg == NULL) { + printf("failed to allocate json object for msg\n"); + return NULL; + } + + json_object_object_add(jobj_msg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_msg, DEST_ADDR, json_object_new_string("g_scale_agent")); + json_object_object_add(jobj_msg, DEST_INSTANCE, json_object_new_string(dest_instance)); + json_object_object_add(jobj_msg, "msg_count", json_object_new_int(msg_count)); + + struct json_object *jobj_data = create_new_jobj_data(); + if (jobj_data == NULL) { + json_object_put(jobj_msg); + return NULL; + } + + json_object_object_add(jobj_msg, DATA, create_new_jobj_data()); + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + return msg; +} + +// create daemon to app msg +const char *create_inmsg() +{ + struct json_object *jobj_msg = json_object_new_object(); + if (jobj_msg == NULL) { + printf("failed to allocate json object for msg\n"); + return NULL; + } + + json_object_object_add(jobj_msg, VERSION, json_object_new_int(CUR_VERSION)); + json_object_object_add(jobj_msg, SOURCE_ADDR, json_object_new_string("h_scale_agent")); + + struct json_object *jobj_data = create_new_jobj_data(); + if (jobj_data == NULL) { + json_object_put(jobj_msg); + return NULL; + } + + json_object_object_add(jobj_msg, DATA, create_new_jobj_data()); + const char *msg = json_object_to_json_string_ext(jobj_msg, JSON_C_TO_STRING_PLAIN); + return msg; +} + +//argv[1] should be the instance name +int main(int argc, char **argv) +{ + char buf[4096]; + int len; + struct sockaddr_un cliaddr, srvaddr; + int rc; + + if (argc != 2) { + printf("call with instance name as arg\n"); + exit(1); + } + + // set up socket for talking to host agent + int fd = socket(AF_UNIX, SOCK_DGRAM, 0); + if (fd == -1) { + perror("socket"); + exit(-1); + } + + memset(&cliaddr, 0, sizeof(struct sockaddr_un)); + cliaddr.sun_family = AF_UNIX; + cliaddr.sun_path[0] = '\0'; + strncpy(cliaddr.sun_path+1, "h_scale_agent", sizeof(cliaddr.sun_path) - 2); + + if (bind(fd, (struct sockaddr *) &cliaddr, sizeof(struct sockaddr_un)) == -1) { + perror("bind"); + exit(-1); + } + + /* Construct address of server */ + memset(&srvaddr, 0, sizeof(struct sockaddr_un)); + srvaddr.sun_family = AF_UNIX; + srvaddr.sun_path[0] = '\0'; + strncpy(srvaddr.sun_path+1, AGENT_ADDR, sizeof(srvaddr.sun_path) - 2); + + const char* inmsg = create_inmsg(); + + // pass argv[1] as dest_instance + const char* outmsg = create_outmsg(1, argv[1]); + len = strlen(outmsg); + + rc = sendto(fd, outmsg, len, 0, (struct sockaddr *) &srvaddr, + sizeof(struct sockaddr_un)); + if (rc != len) { + perror("sendto"); + exit(-1); + } + + outmsg = create_outmsg(2, argv[1]); + len = strlen(outmsg); + rc = sendto(fd, outmsg, len, 0, (struct sockaddr *) &srvaddr, + sizeof(struct sockaddr_un)); + if (rc != len) { + perror("sendto"); + exit(-1); + } + + while (1) { + len = recv(fd, buf, sizeof(buf), 0); + if (len == -1) { + perror("recvfrom"); + exit(-1); + } + printf("Msg from instance %s\n", buf); + fflush(0); + } +} + + diff --git a/guest-comm/host-guest-comm-2.0/test/test_host_guest_msg.c b/guest-comm/host-guest-comm-2.0/test/test_host_guest_msg.c new file mode 100644 index 00000000..2626c98c --- /dev/null +++ b/guest-comm/host-guest-comm-2.0/test/test_host_guest_msg.c @@ -0,0 +1,374 @@ +/* + * Copyright (c) 2013-2016, Wind River Systems, Inc. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1) Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * 3) Neither the name of Wind River Systems nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + This file is used to test functions in file host_guest_msg.c. + Functions under test are directly copied to here to simplify compile. + Once tested and refactored, the functions can be copied back to their + original location with appropriate debug traces. + + build: gcc -I. -o test_host_guest_msg test_host_guest_msg.c -ljson-c + + usage: binary can be executed directly on a linux desktop. + ./test_host_guest_msg - run without parameters to check TCs PASS or FAIL + ./test_host_guest_msg 1 - show error logs + ./test_host_guest_msg 2 - show error and debug logs +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//number of guest +#define NUM_GUEST 3 + +//number of reads +#define NUM_READS 3 + +int debug = 0; +#define PRINT_ERR(format, ...) if(debug >= 1) printf(format, ##__VA_ARGS__) +#define PRINT_DEBUG(format, ...) if(debug >= 2) printf(format, ##__VA_ARGS__) + +// One tokener for each instance connection serve as reassembly buffer +struct json_tokener* tok[NUM_GUEST]; +void process_msg(json_object *jobj_msg, int fd); + +//---------------------------------------------------------- +// Functions Under Test +//---------------------------------------------------------- +void parser(void *buf, ssize_t len, int fd, json_tokener* tok, int newline_found) +{ + PRINT_DEBUG("parser: len=%lu, buf=%s\n", len, (char *)buf); + + json_object *jobj = json_tokener_parse_ex(tok, buf, len); + enum json_tokener_error jerr = json_tokener_get_error(tok); + + if (jerr == json_tokener_success) { + process_msg(jobj, fd); + json_object_put(jobj); + return; + } + + else if (jerr == json_tokener_continue) { + // partial JSON is parsed , continue to read from socket + PRINT_DEBUG("partial message parsed, continue read socket\n"); + PRINT_DEBUG("processed so far buf=%s\n", (char *)buf); + + // if newline was found in the middle of the buffer, the message should + // be completed at this point. Throw out incomplete message by resetting + // tokener. + if (newline_found) { + PRINT_DEBUG("newline_found. throw out the partial message\n"); + json_tokener_reset(tok); + } + } + else + { + PRINT_ERR("JSON Parsing Error: %s\n", json_tokener_error_desc(jerr)); + json_tokener_reset(tok); + } +} + + +//---------------------------------------------------------- +// Functions Under Test +//---------------------------------------------------------- +void handle_virtio_serial_msg(void *buf, ssize_t len, int fd, json_tokener* tok) +{ + void *origbuf = buf; + void *newline; + + ssize_t len_head; + +next: + if (len == 0) + return; + + PRINT_DEBUG("analyzing buffer at offset %lu, len %zd\n", buf-origbuf, len); + + // search for newline as delimiter + newline = memchr(buf, '\n', len); + + if (newline) { + PRINT_DEBUG("found newline start at offset %lu\n", newline - origbuf); + + // split buffer to head and tail at the location of newline. + // feed the head to the parser and recursively process the tail. + len_head = newline-buf; + + // parse head + if (len_head > 0) + parser(buf, len_head, fd, tok, 1); + + // start of the tail: skip newline + buf += len_head+1; + // length of the tail: deduct 1 for the newline character + len -= len_head+1; + // continue to process the tail. + goto next; + } + else { + parser(buf, len, fd, tok, 0); + } +} + + +// buffer to simulate socket to read, one socket per guest +void *socket[NUM_GUEST][NUM_READS]; + +// resulting parsed socket +char socket_processed[NUM_GUEST][NUM_READS][500]; + +// expected result +char *socket_expected[NUM_GUEST][NUM_READS]; + +// track current buffer being processed for particular guest +int current_processed[NUM_GUEST]; + +void free_tok() +{ + int fd; + for (fd=0; fd 1) + debug = atoi(argv[1]); + + setup_test(); + + printf("\n===== TC1 one valid message per read: "); + init_socket_tc1(); + for (read = 0; read > /dev/null` + if [ $? -ne 0 ]; then + echo "ERROR: 'Release' not found in '$SPEC_PATH'" + fi + NAME=`spec_find_tag Name "$SPEC_PATH" 2>> /dev/null` + if [ $? -ne 0 ]; then + echo "ERROR: 'Name' not found in '$SPEC_PATH'" + fi + SRPM="$NAME-$VERSION-$RELEASE.src.rpm" + SRPM_PATH="$BUILD_DIR/SRPMS/$SRPM" + + BUILD_NEEDED=0 + if [ -f $SRPM_PATH ]; then + n=`find . -cnewer $SRPM_PATH | wc -l` + if [ $n -gt 0 ]; then + BUILD_NEEDED=1 + fi + else + BUILD_NEEDED=1 + fi + + if [ $BUILD_NEEDED -gt 0 ]; then + echo "SPEC file: $SPEC_PATH" + echo "SRPM build directory: $BUILD_DIR" + echo "TIS_PATCH_VER: $TIS_PATCH_VER" + + sed -i -e "1 i%define tis_patch_ver $TIS_PATCH_VER" $SPEC_PATH + rpmbuild -bs $SPEC_PATH --define="%_topdir $BUILD_DIR" --define="_tis_dist .tis" + fi +done + + + + + diff --git a/nfv/centos/build_srpm.data b/nfv/centos/build_srpm.data new file mode 100755 index 00000000..5651d70f --- /dev/null +++ b/nfv/centos/build_srpm.data @@ -0,0 +1 @@ +TIS_PATCH_VER=67 diff --git a/nfv/centos/nfv.spec b/nfv/centos/nfv.spec new file mode 100755 index 00000000..09b16146 --- /dev/null +++ b/nfv/centos/nfv.spec @@ -0,0 +1,187 @@ +Summary: Network Function Virtualization +Name: nfv +Version: 1.0 +Release: %{tis_patch_ver}%{?_tis_dist} +License: Apache-2.0 +Group: base +Packager: Wind River +URL: unknown +Source0: %{name}-%{version}.tar.gz + +%define debug_package %{nil} + +BuildRequires: python-setuptools + +%description +Titanium Cloud Config Info + +%define local_bindir /usr/bin/ +%define pythonroot /usr/lib64/python2.7/site-packages + +%define build_python() ( \ + pushd %1; \ + %{__python} setup.py build; \ + popd) + +%define install_python() ( \ + pushd %1; \ + %{__python} setup.py install \\\ + --root=$RPM_BUILD_ROOT \\\ + --install-lib=%{pythonroot} \\\ + --prefix=/usr \\\ + --install-data=/usr/share \\\ + --single-version-externally-managed; \ + popd) + +# TODO: nfv-docs + +%package -n nfv-common +Requires: librt.so.1()(64bit) +Summary: Network Function Virtualization Common +Group: base + +%description -n nfv-common +Network Function Virtualization Common + +%package -n nfv-plugins +Summary: Network Function Virtualization Plugins +Group: base + +%description -n nfv-plugins +Network Function Virtualization Plugins + +%package -n nfv-tools +Summary: Network Function Virtualization Tools +Group: base + +%description -n nfv-tools +Network Function Virtualization Tools + +%package -n nfv-vim +Summary: Virtual Infrastructure Manager +Group: base + +%description -n nfv-vim +Virtual Infrastructure Manager + +%package -n nfv-client +Summary: Network Function Virtualization Client +Group: base + +%description -n nfv-client +Network Function Virtualization Client + +%prep +%setup + +%build +%build_python nfv-common +%build_python nfv-plugins +%build_python nfv-tools +%build_python nfv-vim +%build_python nfv-client + +%install +%install_python nfv-common +%install_python nfv-plugins +%install_python nfv-tools +%install_python nfv-vim +%install_python nfv-client + +# nfv-client +install -d -m 755 %{buildroot}%{_sysconfdir}/bash_completion.d +install -m 444 nfv-client/scripts/sw-manager.completion %{buildroot}%{_sysconfdir}/bash_completion.d/sw-manager + +# nfv-plugins +install -d -m 755 %{buildroot}/etc/nfv/ +install -d -m 755 %{buildroot}/etc/nfv/nfv_plugins/ +install -d -m 755 %{buildroot}/etc/nfv/nfv_plugins/alarm_handlers/ +install -p -D -m 600 nfv-plugins/nfv_plugins/alarm_handlers/config.ini %{buildroot}/etc/nfv/nfv_plugins/alarm_handlers/config.ini +install -d -m 755 %{buildroot}/etc/nfv/nfv_plugins/event_log_handlers/ +install -p -D -m 600 nfv-plugins/nfv_plugins/event_log_handlers/config.ini %{buildroot}/etc/nfv/nfv_plugins/event_log_handlers/config.ini +install -d -m 755 %{buildroot}/etc/nfv/nfv_plugins/nfvi_plugins/ +install -p -D -m 600 nfv-plugins/nfv_plugins/nfvi_plugins/config.ini %{buildroot}/etc/nfv/nfv_plugins/nfvi_plugins/config.ini +install -d -m 755 %{buildroot}/ +install -p -D -m 755 nfv-plugins/scripts/nfvi_plugins.logrotate %{buildroot}/etc/logrotate.d/nfvi_plugins.logrotate + +# nfv-vim +install -d -m 755 %{buildroot}/usr/lib/ocf/resource.d/nfv +install -p -D -m 755 nfv-vim/scripts/vim %{buildroot}/usr/lib/ocf/resource.d/nfv/vim +install -p -D -m 755 nfv-vim/scripts/vim-api %{buildroot}/usr/lib/ocf/resource.d/nfv/vim-api +install -p -D -m 755 nfv-vim/scripts/vim-webserver %{buildroot}/usr/lib/ocf/resource.d/nfv/vim-webserver +install -d -m 755 %{buildroot}/etc/nfv/ +install -d -m 755 %{buildroot}/etc/nfv/vim/ +install -p -D -m 600 nfv-vim/nfv_vim/config.ini %{buildroot}/etc/nfv/vim/config.ini +install -p -D -m 600 nfv-vim/nfv_vim/debug.ini %{buildroot}/etc/nfv/vim/debug.ini + +%post -n nfv-common + +%post -n nfv-plugins + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) + +%files -n nfv-common +%defattr(-,root,root,-) +%doc nfv-common/LICENSE +%dir %{pythonroot}/nfv_common/ +%{pythonroot}/nfv_common/* +%dir %{pythonroot}/windriver_nfv_common_plugins-%{version}.0-py2.7.egg-info +%{pythonroot}/windriver_nfv_common_plugins-%{version}.0-py2.7.egg-info/* + +%files -n nfv-plugins +%defattr(-,root,root,-) +%doc nfv-plugins/LICENSE +%dir /etc/logrotate.d/ +/etc/logrotate.d/nfvi_plugins.logrotate +%dir /etc/nfv/nfv_plugins/ +%config(noreplace)/etc/nfv/nfv_plugins/alarm_handlers/config.ini +%config(noreplace)/etc/nfv/nfv_plugins/event_log_handlers/config.ini +%config(noreplace)/etc/nfv/nfv_plugins/nfvi_plugins/config.ini +/etc/nfv/nfv_plugins/* +%dir %{pythonroot}/nfv_plugins/ +%{pythonroot}/nfv_plugins/* +%dir %{pythonroot}/windriver_nfv_plugins-%{version}.0-py2.7.egg-info +%{pythonroot}/windriver_nfv_plugins-%{version}.0-py2.7.egg-info/* + +%files -n nfv-tools +%defattr(-,root,root,-) +%doc nfv-tools/LICENSE +%{local_bindir}/nfv-forensic +%{local_bindir}/nfv-notify +%dir %{pythonroot}/nfv_tools/ +%{pythonroot}/nfv_tools/* +%dir %{pythonroot}/nfv_tools-%{version}.0-py2.7.egg-info +%{pythonroot}/nfv_tools-%{version}.0-py2.7.egg-info/* + +%files -n nfv-vim +%defattr(-,root,root,-) +%doc nfv-vim/LICENSE +%{local_bindir}/nfv-vim +%{local_bindir}/nfv-vim-api +%{local_bindir}/nfv-vim-manage +%{local_bindir}/nfv-vim-webserver +%dir /etc/nfv/vim/ +%config(noreplace)/etc/nfv/vim/config.ini +%config(noreplace)/etc/nfv/vim/debug.ini +%dir /usr/lib/ocf/resource.d/nfv/ +/usr/lib/ocf/resource.d/nfv/vim +/usr/lib/ocf/resource.d/nfv/vim-api +/usr/lib/ocf/resource.d/nfv/vim-webserver +%dir %{pythonroot}/nfv_vim/ +%{pythonroot}/nfv_vim/* +%dir %{pythonroot}/nfv_vim-%{version}.0-py2.7.egg-info +%{pythonroot}/nfv_vim-%{version}.0-py2.7.egg-info/* + +%files -n nfv-client +%defattr(-,root,root,-) +%doc nfv-client/LICENSE +%{local_bindir}/sw-manager +%{_sysconfdir}/bash_completion.d/sw-manager +%dir %{pythonroot}/nfv_client/ +%{pythonroot}/nfv_client/* +%dir %{pythonroot}/nfv_client-%{version}.0-py2.7.egg-info +%{pythonroot}/nfv_client-%{version}.0-py2.7.egg-info/* diff --git a/nfv/nfv-client/LICENSE b/nfv/nfv-client/LICENSE new file mode 100755 index 00000000..d6456956 --- /dev/null +++ b/nfv/nfv-client/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/nfv/nfv-client/nfv_client/__init__.py b/nfv/nfv-client/nfv_client/__init__.py new file mode 100755 index 00000000..e302d78a --- /dev/null +++ b/nfv/nfv-client/nfv_client/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# diff --git a/nfv/nfv-client/nfv_client/openstack/__init__.py b/nfv/nfv-client/nfv_client/openstack/__init__.py new file mode 100755 index 00000000..e302d78a --- /dev/null +++ b/nfv/nfv-client/nfv_client/openstack/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# diff --git a/nfv/nfv-client/nfv_client/openstack/objects.py b/nfv/nfv-client/nfv_client/openstack/objects.py new file mode 100755 index 00000000..8a51d620 --- /dev/null +++ b/nfv/nfv-client/nfv_client/openstack/objects.py @@ -0,0 +1,77 @@ +# +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import re +import iso8601 +import datetime + + +class Token(object): + """ + Token + """ + def __init__(self, token_data, token_id): + self._expired = False + self._data = token_data + self._token_id = token_id + + def set_expired(self): + self._expired = True + + def is_expired(self, within_seconds=300): + if not self._expired: + end = iso8601.parse_date(self._data['token']['expires_at']) + now = iso8601.parse_date(datetime.datetime.utcnow().isoformat()) + if end <= now: + return True + delta = abs(end - now).seconds + return delta <= within_seconds + return True + + def get_id(self): + """ + Get the identifier of the token. + """ + return self._token_id + + def get_tenant_id(self): + """ + Get the tenant identifier of the token. + """ + return self._data['token']['project']['id'] + + @staticmethod + def _url_strip_version(url): + """ + Strip the version information from the url + """ + # Get rid of the trailing '/' if present and remove the version + # information from the URL. + url = url.rstrip('/') + url_bits = url.split('/') + # Regular-Expression to match 'v1' or 'v2.0' etc + # prefix regular expression with r to treat as raw string to + # suppress lint 'anomalous backslash' warnings + if re.match(r'v\d+\.?\d*', url_bits[-1]): + url = '/'.join(url_bits[:-1]) + + elif re.match(r'v\d+\.?\d*', url_bits[-2]): + url = '/'.join(url_bits[:-2]) + + return url + + def get_service_url(self, region_name, service_name, service_type, interface): + """ + Search the catalog of a service in a region for the url + """ + for catalog in self._data['token']['catalog']: + if catalog['type'] == service_type: + if catalog['name'] == service_name: + if 0 != len(catalog['endpoints']): + for endpoint in catalog['endpoints']: + if (endpoint['region'] == region_name and + endpoint['interface'] == interface): + return endpoint['url'] + return None diff --git a/nfv/nfv-client/nfv_client/openstack/openstack.py b/nfv/nfv-client/nfv_client/openstack/openstack.py new file mode 100755 index 00000000..4f378a70 --- /dev/null +++ b/nfv/nfv-client/nfv_client/openstack/openstack.py @@ -0,0 +1,78 @@ +# +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import json +import urllib2 + +from objects import Token + + +class OpenStackServices(object): + """ + OpenStack Services Constants + """ + VIM = 'vim' + + +class OpenStackServiceTypes(object): + """ + OpenStack Service Types Constants + """ + NFV = 'nfv' + + +SERVICE = OpenStackServices() +SERVICE_TYPE = OpenStackServiceTypes() + + +def get_token(auth_uri, project_name, project_domain_name, username, password, + user_domain_name): + """ + Ask OpenStack for a token + """ + try: + url = auth_uri + "/auth/tokens" + + request_info = urllib2.Request(url) + request_info.add_header("Content-Type", "application/json") + request_info.add_header("Accept", "application/json") + + payload = json.dumps( + {"auth": { + "identity": { + "methods": [ + "password" + ], + "password": { + "user": { + "name": username, + "password": password, + "domain": {"name": user_domain_name} + } + } + }, + "scope": { + "project": { + "name": project_name, + "domain": {"name": project_domain_name} + }}}}) + + request_info.add_data(payload) + + request = urllib2.urlopen(request_info) + # Identity API v3 returns token id in X-Subject-Token + # response header. + token_id = request.info().getheader('X-Subject-Token') + response = json.loads(request.read()) + request.close() + return Token(response, token_id) + + except urllib2.HTTPError as e: + print(e) + return None + + except urllib2.URLError as e: + print(e) + return None diff --git a/nfv/nfv-client/nfv_client/openstack/rest_api.py b/nfv/nfv-client/nfv_client/openstack/rest_api.py new file mode 100755 index 00000000..f3205171 --- /dev/null +++ b/nfv/nfv-client/nfv_client/openstack/rest_api.py @@ -0,0 +1,102 @@ +# +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import json +import urllib2 +import httplib + + +def request(token_id, method, api_cmd, api_cmd_headers=None, api_cmd_payload=None): + """ + Make a rest-api request + """ + headers_per_hop = ['connection', 'keep-alive', 'proxy-authenticate', + 'proxy-authorization', 'te', 'trailers', + 'transfer-encoding', 'upgrade'] + + try: + request_info = urllib2.Request(api_cmd) + request_info.get_method = lambda: method + if token_id is not None: + request_info.add_header("X-Auth-Token", token_id) + request_info.add_header("Accept", "application/json") + + if api_cmd_headers is not None: + for header_type, header_value in api_cmd_headers.items(): + request_info.add_header(header_type, header_value) + + if api_cmd_payload is not None: + request_info.add_data(api_cmd_payload) + + url_request = urllib2.urlopen(request_info) + + headers = list() # list of tuples + for key, value in url_request.info().items(): + if key not in headers_per_hop: + cap_key = '-'.join((ck.capitalize() for ck in key.split('-'))) + headers.append((cap_key, value)) + + response_raw = url_request.read() + + if response_raw == "": + response = dict() + else: + response = json.loads(response_raw) + + url_request.close() + + return response + + except urllib2.HTTPError as e: + headers = list() + response_raw = dict() + + if e.fp is not None: + headers = list() # list of tuples + for key, value in e.fp.info().items(): + if key not in headers_per_hop: + cap_key = '-'.join((ck.capitalize() + for ck in key.split('-'))) + headers.append((cap_key, value)) + + response_raw = e.fp.read() + + if httplib.FOUND == e.code: + return response_raw + + elif httplib.NOT_FOUND == e.code: + return None + + elif httplib.CONFLICT == e.code: + raise Exception("Operation failed: conflict detected") + + elif httplib.FORBIDDEN == e.code: + raise Exception("Authorization failed") + + # Attempt to get the reason for the http error from the response + reason = '' + for header, value in headers: + if 'Content-Type' == header: + if 'application/json' == value.split(';')[0]: + try: + response = json.loads(response_raw) + message = response.get('faultstring', None) + if message is not None: + reason = str(message.lower().rstrip('.')) + print "Operation failed: %s" % reason + return + + except ValueError: + pass + + print("Rest-API status=%s, %s, %s, headers=%s, payload=%s, response=%s" + % (e.code, method, api_cmd, api_cmd_headers, api_cmd_payload, + response_raw)) + raise + + except urllib2.URLError as e: + print("Rest-API status=ERR, %s, %s, headers=%s, payload=%s" + % (method, api_cmd, api_cmd_headers, api_cmd_payload,)) + raise diff --git a/nfv/nfv-client/nfv_client/openstack/sw_update.py b/nfv/nfv-client/nfv_client/openstack/sw_update.py new file mode 100755 index 00000000..4bedf551 --- /dev/null +++ b/nfv/nfv-client/nfv_client/openstack/sw_update.py @@ -0,0 +1,319 @@ +# +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import json +import rest_api + + +class StrategyStep(object): + step_id = None + step_name = None + entity_type = None + entity_names = [] + entity_uuids = [] + timeout = None + start_date_time = None + end_date_time = None + result = None + reason = None + + def __repr__(self): + return "%s" % str(self.__dict__) + + +class StrategyStage(object): + stage_id = None + stage_name = None + steps = [] + total_steps = None + current_step = None + timeout = None + start_date_time = None + end_date_time = None + inprogress = None + result = None + reason = None + + def __repr__(self): + return "%s" % str(self.__dict__) + + +class StrategyPhase(object): + phase_name = None + stages = [] + total_stages = None + current_stage = None + stop_at_stage = None + timeout = None + start_date_time = None + end_date_time = None + inprogress = None + completion_percentage = None + result = None + reason = None + + def __repr__(self): + return "%s" % str(self.__dict__) + + +class Strategy(object): + uuid = None + name = None + controller_apply_type = None + storage_apply_type = None + swift_apply_type = None + compute_apply_type = None + max_parallel_compute_hosts = None + default_instance_action = None + alarm_restrictions = None + current_phase = None + current_phase_completion_percentage = None + state = None + build_phase = None + apply_phase = None + abort_phase = None + + def __repr__(self): + return "%s" % str(self.__dict__) + + +def _get_strategy_step_object_from_response(response): + """ + Convert the Rest-API response into a strategy step object + """ + step = StrategyStep() + step.step_id = response['step-id'] + step.step_name = response['step-name'] + step.entity_type = response['entity-type'] + step.entity_names = response['entity-names'] + step.entity_uuids = response['entity-uuids'] + step.timeout = response['timeout'] + step.start_date_time = response['start-date-time'] + step.end_date_time = response['end-date-time'] + step.result = response['result'] + step.reason = response['reason'] + return step + + +def _get_strategy_stage_object_from_response(response): + """ + Convert the Rest-API response into a strategy stage object + """ + stage = StrategyStage() + stage.stage_id = response['stage-id'] + stage.stage_name = response['stage-name'] + stage.total_steps = response['total-steps'] + stage.current_step = response['current-step'] + stage.timeout = response['timeout'] + stage.start_date_time = response['start-date-time'] + stage.end_date_time = response['end-date-time'] + stage.inprogress = response['inprogress'] + stage.result = response['result'] + stage.reason = response['reason'] + + stage.steps = [] + for step in response['steps']: + stage.steps.append(_get_strategy_step_object_from_response(step)) + + return stage + + +def _get_strategy_phase_object_from_response(response): + """ + Convert the Rest-API response into a strategy phase object + """ + phase = StrategyPhase() + phase.phase_name = response['phase-name'] + phase.total_stages = response['total-stages'] + phase.current_stage = response['current-stage'] + phase.stop_at_stage = response['stop-at-stage'] + phase.timeout = response['timeout'] + phase.start_date_time = response['start-date-time'] + phase.end_date_time = response['end-date-time'] + phase.inprogress = response['inprogress'] + phase.completion_percentage = response['completion-percentage'] + phase.result = response['result'] + phase.reason = response['reason'] + + phase.stages = [] + for stage in response['stages']: + phase.stages.append(_get_strategy_stage_object_from_response(stage)) + + return phase + + +def _get_strategy_object_from_response(response): + """ + Convert the Rest-API response into a strategy object + """ + strategy_data = response.get('strategy', None) + if strategy_data is None: + return None + strategy = Strategy() + strategy.uuid = strategy_data['uuid'] + strategy.name = strategy_data['name'] + strategy.controller_apply_type = strategy_data['controller-apply-type'] + strategy.storage_apply_type = strategy_data['storage-apply-type'] + strategy.swift_apply_type = strategy_data['swift-apply-type'] + strategy.compute_apply_type = strategy_data['compute-apply-type'] + strategy.max_parallel_compute_hosts = \ + strategy_data['max-parallel-compute-hosts'] + strategy.default_instance_action = strategy_data['default-instance-action'] + strategy.alarm_restrictions = strategy_data['alarm-restrictions'] + strategy.current_phase = strategy_data['current-phase'] + strategy.current_phase_completion_percentage \ + = strategy_data['current-phase-completion-percentage'] + strategy.state = strategy_data['state'] + + strategy.build_phase \ + = _get_strategy_phase_object_from_response(strategy_data['build-phase']) + strategy.apply_phase \ + = _get_strategy_phase_object_from_response(strategy_data['apply-phase']) + strategy.abort_phase \ + = _get_strategy_phase_object_from_response(strategy_data['abort-phase']) + + return strategy + + +def get_strategies(token_id, url, strategy_name): + """ + Software Update - Get Strategies + """ + api_cmd = url + "/api/orchestration/%s/strategy" % strategy_name + + api_cmd_headers = dict() + api_cmd_headers['X-Auth-Token'] = token_id + + response = rest_api.request(token_id, "GET", api_cmd, api_cmd_headers) + if not response: + return None + + return _get_strategy_object_from_response(response) + + +def get_strategy(token_id, url, strategy_name, strategy_uuid): + """ + Software Update - Get Strategy + """ + api_cmd = url + "/api/orchestration/%s/strategy/%s" % (strategy_name, + strategy_uuid) + + api_cmd_headers = dict() + api_cmd_headers['X-Auth-Token'] = token_id + + response = rest_api.request(token_id, "GET", api_cmd, api_cmd_headers) + if not response: + return None + + return _get_strategy_object_from_response(response) + + +def create_strategy(token_id, url, strategy_name, controller_apply_type, + storage_apply_type, swift_apply_type, compute_apply_type, + max_parallel_compute_hosts, + default_instance_action, alarm_restrictions, **kwargs): + """ + Software Update - Create Strategy + """ + api_cmd = url + "/api/orchestration/%s/strategy" % strategy_name + + api_cmd_headers = dict() + api_cmd_headers['Content-Type'] = "application/json" + api_cmd_headers['X-Auth-Token'] = token_id + + api_cmd_payload = dict() + if 'sw-patch' == strategy_name: + api_cmd_payload['controller-apply-type'] = controller_apply_type + api_cmd_payload['swift-apply-type'] = swift_apply_type + api_cmd_payload['default-instance-action'] = default_instance_action + elif 'sw-upgrade' == strategy_name: + if 'start_upgrade' in kwargs and kwargs['start_upgrade']: + api_cmd_payload['start-upgrade'] = True + if 'complete_upgrade' in kwargs and kwargs['complete_upgrade']: + api_cmd_payload['complete-upgrade'] = True + api_cmd_payload['storage-apply-type'] = storage_apply_type + api_cmd_payload['compute-apply-type'] = compute_apply_type + if max_parallel_compute_hosts is not None: + api_cmd_payload['max-parallel-compute-hosts'] = \ + max_parallel_compute_hosts + api_cmd_payload['alarm-restrictions'] = alarm_restrictions + + response = rest_api.request(token_id, "POST", api_cmd, api_cmd_headers, + json.dumps(api_cmd_payload)) + if not response: + return None + + return _get_strategy_object_from_response(response) + + +def delete_strategy(token_id, url, strategy_name, force=False): + """ + Software Update - Delete Strategy + """ + api_cmd = url + "/api/orchestration/%s/strategy" % strategy_name + + api_cmd_headers = dict() + api_cmd_headers['Content-Type'] = "application/json" + api_cmd_headers['X-Auth-Token'] = token_id + + api_cmd_payload = dict() + api_cmd_payload['force'] = force + + response = rest_api.request(token_id, "DELETE", api_cmd, api_cmd_headers, + json.dumps(api_cmd_payload)) + # We expect an empty response body for this request (204 NO CONTENT). If + # there is no response body it is a 404 NOT FOUND which means there was + # no strategy to delete. + if response is None: + return False + + return True + + +def apply_strategy(token_id, url, strategy_name, stage_id=None): + """ + Software Update - Apply Strategy + """ + api_cmd = url + ("/api/orchestration/%s/strategy/actions" % strategy_name) + + api_cmd_headers = dict() + api_cmd_headers['Content-Type'] = "application/json" + api_cmd_headers['X-Auth-Token'] = token_id + + api_cmd_payload = dict() + if stage_id is None: + api_cmd_payload['action'] = 'apply-all' + else: + api_cmd_payload['action'] = 'apply-stage' + api_cmd_payload['stage-id'] = stage_id + + response = rest_api.request(token_id, "POST", api_cmd, api_cmd_headers, + json.dumps(api_cmd_payload)) + if not response: + return None + + return _get_strategy_object_from_response(response) + + +def abort_strategy(token_id, url, strategy_name, stage_id): + """ + Software Update - Abort Strategy + """ + api_cmd = url + ("/api/orchestration/%s/strategy/actions" % strategy_name) + + api_cmd_headers = dict() + api_cmd_headers['Content-Type'] = "application/json" + api_cmd_headers['X-Auth-Token'] = token_id + + api_cmd_payload = dict() + api_cmd_payload['action'] = 'abort-stage' + api_cmd_payload['stage-id'] = stage_id + + response = rest_api.request(token_id, "POST", api_cmd, api_cmd_headers, + json.dumps(api_cmd_payload)) + if not response: + return None + + return _get_strategy_object_from_response(response) diff --git a/nfv/nfv-client/nfv_client/shell.py b/nfv/nfv-client/nfv_client/shell.py new file mode 100755 index 00000000..1724f5e1 --- /dev/null +++ b/nfv/nfv-client/nfv_client/shell.py @@ -0,0 +1,342 @@ +# +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import os +import sys +import argparse +import urllib2 + +from nfv_client import sw_update + + +def process_main(argv=sys.argv[1:]): # pylint: disable=dangerous-default-value + """ + Client - Main + """ + try: + parser = argparse.ArgumentParser() + parser.add_argument('--debug', action='store_true') + parser.add_argument('--os-auth-url', default=None) + parser.add_argument('--os-project-name', default=None) + parser.add_argument('--os-project-domain-name', default=None) + parser.add_argument('--os-username', default=None) + parser.add_argument('--os-password', default=None) + parser.add_argument('--os-user-domain-name', default=None) + parser.add_argument('--os-region-name', default=None) + parser.add_argument('--os-interface', default=None) + + commands = parser.add_subparsers(title='Commands', metavar='') + + # Software Patch Commands + sw_patch_parser = commands.add_parser('patch-strategy', + help='Patch Strategy') + sw_patch_parser.set_defaults(cmd_area='patch-strategy') + + sw_patch_cmds = sw_patch_parser.add_subparsers( + title='Software Patch Commands', metavar='') + + sw_patch_create_strategy_cmd \ + = sw_patch_cmds.add_parser('create', help='Create a strategy') + sw_patch_create_strategy_cmd.set_defaults(cmd='create') + sw_patch_create_strategy_cmd.add_argument( + '--controller-apply-type', default=sw_update.APPLY_TYPE_SERIAL, + choices=[sw_update.APPLY_TYPE_SERIAL, sw_update.APPLY_TYPE_IGNORE], + help='defaults to serial') + sw_patch_create_strategy_cmd.add_argument( + '--storage-apply-type', default=sw_update.APPLY_TYPE_SERIAL, + choices=[sw_update.APPLY_TYPE_SERIAL, sw_update.APPLY_TYPE_PARALLEL, + sw_update.APPLY_TYPE_IGNORE], + help='defaults to serial') + sw_patch_create_strategy_cmd.add_argument( + '--compute-apply-type', default=sw_update.APPLY_TYPE_SERIAL, + choices=[sw_update.APPLY_TYPE_SERIAL, sw_update.APPLY_TYPE_PARALLEL, + sw_update.APPLY_TYPE_IGNORE], + help='defaults to serial') + sw_patch_create_strategy_cmd.add_argument( + '--max-parallel-compute-hosts', type=int, choices=range(2, 101), + help='maximum compute hosts to patch in parallel') + sw_patch_create_strategy_cmd.add_argument( + '--instance-action', default=sw_update.INSTANCE_ACTION_STOP_START, + choices=[sw_update.INSTANCE_ACTION_MIGRATE, + sw_update.INSTANCE_ACTION_STOP_START], + help='defaults to stop-start') + sw_patch_create_strategy_cmd.add_argument( + '--alarm-restrictions', default=sw_update.ALARM_RESTRICTIONS_STRICT, + choices=[sw_update.ALARM_RESTRICTIONS_STRICT, + sw_update.ALARM_RESTRICTIONS_RELAXED], + help='defaults to strict') + + sw_patch_delete_strategy_cmd \ + = sw_patch_cmds.add_parser('delete', help='Delete a strategy') + sw_patch_delete_strategy_cmd.set_defaults(cmd='delete') + sw_patch_delete_strategy_cmd.add_argument( + '--force', action='store_true', help=argparse.SUPPRESS) + + sw_patch_apply_strategy_cmd \ + = sw_patch_cmds.add_parser('apply', help='Apply a strategy') + sw_patch_apply_strategy_cmd.set_defaults(cmd='apply') + sw_patch_apply_strategy_cmd.add_argument( + '--stage-id', default=None, help='stage identifier to apply') + + sw_patch_abort_strategy_cmd \ + = sw_patch_cmds.add_parser('abort', help='Abort a strategy') + sw_patch_abort_strategy_cmd.set_defaults(cmd='abort') + sw_patch_abort_strategy_cmd.add_argument( + '--stage-id', help='stage identifier to abort') + + sw_patch_show_strategy_cmd \ + = sw_patch_cmds.add_parser('show', help='Show a strategy') + sw_patch_show_strategy_cmd.set_defaults(cmd='show') + sw_patch_show_strategy_cmd.add_argument( + '--details', action='store_true', help='show strategy details') + + # Software Upgrade Commands + sw_upgrade_parser = commands.add_parser('upgrade-strategy', + help='Upgrade Strategy') + sw_upgrade_parser.set_defaults(cmd_area='upgrade-strategy') + + sw_upgrade_cmds = sw_upgrade_parser.add_subparsers( + title='Software Upgrade Commands', metavar='') + + sw_upgrade_create_strategy_cmd \ + = sw_upgrade_cmds.add_parser('create', help='Create a strategy') + sw_upgrade_create_strategy_cmd.set_defaults(cmd='create') + sw_upgrade_create_strategy_cmd.add_argument( + '--storage-apply-type', default=sw_update.APPLY_TYPE_SERIAL, + choices=[sw_update.APPLY_TYPE_SERIAL, sw_update.APPLY_TYPE_PARALLEL, + sw_update.APPLY_TYPE_IGNORE], + help='defaults to serial') + sw_upgrade_create_strategy_cmd.add_argument( + '--compute-apply-type', default=sw_update.APPLY_TYPE_SERIAL, + choices=[sw_update.APPLY_TYPE_SERIAL, sw_update.APPLY_TYPE_PARALLEL, + sw_update.APPLY_TYPE_IGNORE], + help='defaults to serial') + sw_upgrade_create_strategy_cmd.add_argument( + '--max-parallel-compute-hosts', type=int, choices=range(2, 11), + help='maximum compute hosts to upgrade in parallel') + # Disable support for --start-upgrade as it was not completed + # sw_upgrade_create_strategy_cmd.add_argument( + # '--start-upgrade', action='store_true', + # help=argparse.SUPPRESS) + sw_upgrade_create_strategy_cmd.add_argument( + '--complete-upgrade', action='store_true', help=argparse.SUPPRESS) + sw_upgrade_create_strategy_cmd.add_argument( + '--alarm-restrictions', default=sw_update.ALARM_RESTRICTIONS_STRICT, + choices=[sw_update.ALARM_RESTRICTIONS_STRICT, + sw_update.ALARM_RESTRICTIONS_RELAXED], + help='defaults to strict') + + sw_upgrade_delete_strategy_cmd \ + = sw_upgrade_cmds.add_parser('delete', help='Delete a strategy') + sw_upgrade_delete_strategy_cmd.set_defaults(cmd='delete') + sw_upgrade_delete_strategy_cmd.add_argument( + '--force', action='store_true', help=argparse.SUPPRESS) + + sw_upgrade_apply_strategy_cmd \ + = sw_upgrade_cmds.add_parser('apply', help='Apply a strategy') + sw_upgrade_apply_strategy_cmd.set_defaults(cmd='apply') + sw_upgrade_apply_strategy_cmd.add_argument( + '--stage-id', default=None, help='stage identifier to apply') + + sw_upgrade_abort_strategy_cmd \ + = sw_upgrade_cmds.add_parser('abort', help='Abort a strategy') + sw_upgrade_abort_strategy_cmd.set_defaults(cmd='abort') + sw_upgrade_abort_strategy_cmd.add_argument( + '--stage-id', help='stage identifier to abort') + + sw_upgrade_show_strategy_cmd \ + = sw_upgrade_cmds.add_parser('show', help='Show a strategy') + sw_upgrade_show_strategy_cmd.set_defaults(cmd='show') + sw_upgrade_show_strategy_cmd.add_argument( + '--details', action='store_true', help='show strategy details') + + args = parser.parse_args(argv) + + if args.debug: + # Enable Debug + handler = urllib2.HTTPHandler(debuglevel=1) + opener = urllib2.build_opener(handler) + urllib2.install_opener(opener) + + if args.os_auth_url is None: + args.os_auth_url = os.environ.get('OS_AUTH_URL', None) + + if args.os_project_name is None: + args.os_project_name = os.environ.get('OS_PROJECT_NAME', None) + + if args.os_project_domain_name is None: + args.os_project_domain_name \ + = os.environ.get('OS_PROJECT_DOMAIN_NAME', None) + + if args.os_username is None: + args.os_username = os.environ.get('OS_USERNAME', None) + + if args.os_password is None: + args.os_password = os.environ.get('OS_PASSWORD', None) + + if args.os_user_domain_name is None: + args.os_user_domain_name = os.environ.get('OS_USER_DOMAIN_NAME', None) + + if args.os_region_name is None: + args.os_region_name = os.environ.get('OS_REGION_NAME', None) + + if args.os_interface is None: + args.os_interface = os.environ.get('OS_INTERFACE', None) + + if args.os_auth_url is None: + print("Authentication URI not given") + return + + if args.os_project_name is None: + print("Project name not given") + return + + if args.os_project_domain_name is None: + print("Project domain name not given") + return + + if args.os_username is None: + print("Username not given") + return + + if args.os_password is None: + print("User password not given") + return + + if args.os_user_domain_name is None: + print("User domain name not given") + return + + if args.os_region_name is None: + print("Openstack region name not given") + return + + if args.os_interface is None: + print("Openstack interface not given") + return + + if 'patch-strategy' == args.cmd_area: + if 'create' == args.cmd: + sw_update.create_strategy( + args.os_auth_url, args.os_project_name, + args.os_project_domain_name, args.os_username, args.os_password, + args.os_user_domain_name, args.os_region_name, + args.os_interface, + sw_update.STRATEGY_NAME_SW_PATCH, + args.controller_apply_type, + args.storage_apply_type, sw_update.APPLY_TYPE_IGNORE, + args.compute_apply_type, + args.max_parallel_compute_hosts, + args.instance_action, + args.alarm_restrictions) + + elif 'delete' == args.cmd: + sw_update.delete_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_PATCH, + args.force) + + elif 'apply' == args.cmd: + sw_update.apply_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_PATCH, + args.stage_id) + + elif 'abort' == args.cmd: + sw_update.abort_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_PATCH, + args.stage_id) + + elif 'show' == args.cmd: + sw_update.show_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_PATCH, + args.details) + + else: + raise ValueError("Unknown command, %s, given for patch-strategy" + % args.cmd) + elif 'upgrade-strategy' == args.cmd_area: + if 'create' == args.cmd: + sw_update.create_strategy( + args.os_auth_url, args.os_project_name, + args.os_project_domain_name, args.os_username, args.os_password, + args.os_user_domain_name, args.os_region_name, + args.os_interface, + sw_update.STRATEGY_NAME_SW_UPGRADE, + sw_update.APPLY_TYPE_IGNORE, + args.storage_apply_type, sw_update.APPLY_TYPE_IGNORE, + args.compute_apply_type, + args.max_parallel_compute_hosts, + None, args.alarm_restrictions, + # start_upgrade=args.start_upgrade, + complete_upgrade=args.complete_upgrade + ) + + elif 'delete' == args.cmd: + sw_update.delete_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_UPGRADE, + args.force) + + elif 'apply' == args.cmd: + sw_update.apply_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_UPGRADE, + args.stage_id) + + elif 'abort' == args.cmd: + sw_update.abort_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_UPGRADE, + args.stage_id) + + elif 'show' == args.cmd: + sw_update.show_strategy(args.os_auth_url, args.os_project_name, + args.os_project_domain_name, + args.os_username, args.os_password, + args.os_user_domain_name, + args.os_region_name, args.os_interface, + sw_update.STRATEGY_NAME_SW_UPGRADE, + args.details) + + else: + raise ValueError("Unknown command, %s, given for upgrade-strategy" + % args.cmd) + else: + raise ValueError("Unknown command area, %s, given" % args.cmd_area) + + except KeyboardInterrupt: + print("Keyboard Interrupt received.") + + except Exception as e: # pylint: disable=broad-except + print(e) + sys.exit(1) + + +if __name__ == "__main__": + process_main(sys.argv[1:]) diff --git a/nfv/nfv-client/nfv_client/sw_update/__init__.py b/nfv/nfv-client/nfv_client/sw_update/__init__.py new file mode 100755 index 00000000..954f8dc3 --- /dev/null +++ b/nfv/nfv-client/nfv_client/sw_update/__init__.py @@ -0,0 +1,20 @@ +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _sw_update import STRATEGY_NAME_SW_PATCH +from _sw_update import STRATEGY_NAME_SW_UPGRADE +from _sw_update import APPLY_TYPE_SERIAL +from _sw_update import APPLY_TYPE_PARALLEL +from _sw_update import APPLY_TYPE_IGNORE +from _sw_update import INSTANCE_ACTION_MIGRATE +from _sw_update import INSTANCE_ACTION_STOP_START +from _sw_update import ALARM_RESTRICTIONS_STRICT +from _sw_update import ALARM_RESTRICTIONS_RELAXED +from _sw_update import create_strategy +from _sw_update import delete_strategy +from _sw_update import apply_strategy +from _sw_update import abort_strategy +from _sw_update import show_strategy diff --git a/nfv/nfv-client/nfv_client/sw_update/_sw_update.py b/nfv/nfv-client/nfv_client/sw_update/_sw_update.py new file mode 100755 index 00000000..25b65be2 --- /dev/null +++ b/nfv/nfv-client/nfv_client/sw_update/_sw_update.py @@ -0,0 +1,292 @@ +# +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_client.openstack import openstack +from nfv_client.openstack import sw_update + +STRATEGY_NAME_SW_PATCH = 'sw-patch' +STRATEGY_NAME_SW_UPGRADE = 'sw-upgrade' + +APPLY_TYPE_SERIAL = 'serial' +APPLY_TYPE_PARALLEL = 'parallel' +APPLY_TYPE_IGNORE = 'ignore' + +INSTANCE_ACTION_MIGRATE = 'migrate' +INSTANCE_ACTION_STOP_START = 'stop-start' + +ALARM_RESTRICTIONS_STRICT = 'strict' +ALARM_RESTRICTIONS_RELAXED = 'relaxed' + + +def _print(indent_by, field, value, remains=''): + print("%s%s%s%s %s" % (' ' * indent_by, field + ':', + ' ' * (42 - indent_by - len('%s' % field) - 1), value, + remains)) + + +def _display_strategy_step(strategy_step): + """ + Software Update - Display Strategy Step Information + """ + _print(12, "step-id", strategy_step.step_id) + _print(12, "step-name", strategy_step.step_name) + if 0 < len(strategy_step.entity_type): + _print(12, "entity-type", strategy_step.entity_type) + if 0 < len(strategy_step.entity_names): + _print(12, "entity-names", strategy_step.entity_names) + if 0 < len(strategy_step.entity_uuids): + _print(12, "entity-uuids", strategy_step.entity_uuids) + _print(12, "timeout", strategy_step.timeout, 'seconds') + if 0 < len(strategy_step.start_date_time): + _print(12, "start-date-time", strategy_step.start_date_time) + if 0 < len(strategy_step.end_date_time): + _print(12, "end-date-time", strategy_step.end_date_time) + _print(12, "result", strategy_step.result) + _print(12, "reason", strategy_step.reason) + + +def _display_strategy_stage(strategy_stage, details=False): + """ + Software Update - Display Strategy Stage Information + """ + _print(8, "stage-id", strategy_stage.stage_id) + _print(8, "stage-name", strategy_stage.stage_name) + _print(8, "total-steps", strategy_stage.total_steps) + _print(8, "current-step", strategy_stage.current_step) + _print(8, "timeout", strategy_stage.timeout, 'seconds') + _print(8, "start-date-time", strategy_stage.start_date_time) + if strategy_stage.inprogress: + _print(8, "inprogress", "true") + else: + _print(8, "end-date-time", strategy_stage.end_date_time) + _print(8, "result", strategy_stage.result) + _print(8, "reason", strategy_stage.reason) + + if details: + print(" steps:") + for step in strategy_stage.steps: + _display_strategy_step(step) + print("") + + +def _display_strategy_phase(strategy_phase, details=False): + """ + Software Update - Display Strategy Phase Information + """ + print(" %s-phase:" % strategy_phase.phase_name) + _print(4, "total-stages", strategy_phase.total_stages) + _print(4, "current-stage", strategy_phase.current_stage) + _print(4, "stop-at-stage", strategy_phase.stop_at_stage) + _print(4, "timeout", strategy_phase.timeout, 'seconds') + _print(4, "completion-percentage", + ("%s%%" % strategy_phase.completion_percentage)) + _print(4, "start-date-time", strategy_phase.start_date_time) + if strategy_phase.inprogress: + _print(4, "inprogress", "true") + else: + _print(4, "end-date-time", strategy_phase.end_date_time) + _print(4, "result", strategy_phase.result) + _print(4, "reason", strategy_phase.reason) + + if details: + print(" stages:") + for stage in strategy_phase.stages: + _display_strategy_stage(stage, details) + print("") + + +def _display_strategy(strategy, details=False): + """ + Software Update - Display Strategy Information + """ + if strategy.name == STRATEGY_NAME_SW_PATCH: + print("Strategy Patch Strategy:") + elif strategy.name == STRATEGY_NAME_SW_UPGRADE: + print("Strategy Upgrade Strategy:") + else: + print("Strategy Unknown Strategy:") + + _print(2, "strategy-uuid", strategy.uuid) + _print(2, "controller-apply-type", strategy.controller_apply_type) + _print(2, "storage-apply-type", strategy.storage_apply_type) + _print(2, "compute-apply-type", strategy.compute_apply_type) + if APPLY_TYPE_PARALLEL == strategy.compute_apply_type: + _print(2, "max-parallel-compute-hosts", + strategy.max_parallel_compute_hosts) + _print(2, "default-instance-action", strategy.default_instance_action) + _print(2, "alarm-restrictions", strategy.alarm_restrictions) + _print(2, "current-phase", strategy.current_phase) + _print(2, "current-phase-completion", + ("%s%%" % strategy.current_phase_completion_percentage)) + _print(2, "state", strategy.state) + + if details: + if 0 < strategy.build_phase.total_stages: + _display_strategy_phase(strategy.build_phase, details) + + if 0 < strategy.apply_phase.total_stages: + _display_strategy_phase(strategy.apply_phase, details) + + if 0 < strategy.abort_phase.total_stages: + _display_strategy_phase(strategy.abort_phase, details) + else: + if strategy.current_phase == strategy.build_phase.phase_name: + if strategy.build_phase.inprogress: + _print(2, "inprogress", "true") + else: + _print(2, "build-result", strategy.build_phase.result) + _print(2, "build-reason", strategy.build_phase.reason) + elif strategy.current_phase == strategy.apply_phase.phase_name: + if strategy.apply_phase.inprogress: + _print(2, "inprogress", "true") + else: + _print(2, "apply-result", strategy.apply_phase.result) + _print(2, "apply-reason", strategy.apply_phase.reason) + elif strategy.current_phase == strategy.abort_phase.phase_name: + if strategy.abort_phase.inprogress: + _print(2, "inprogress", "true") + _print(2, "apply-result", strategy.apply_phase.result) + _print(2, "apply-reason", strategy.apply_phase.reason) + _print(2, "abort-result", "") + _print(2, "abort-reason", "") + else: + _print(2, "apply-result", strategy.apply_phase.result) + _print(2, "apply-reason", strategy.apply_phase.reason) + _print(2, "abort-result", strategy.abort_phase.result) + _print(2, "abort-reason", strategy.abort_phase.reason) + + +def create_strategy(os_auth_uri, os_project_name, os_project_domain_name, + os_username, os_password, os_user_domain_name, + os_region_name, os_interface, + strategy_name, controller_apply_type, + storage_apply_type, swift_apply_type, compute_apply_type, + max_parallel_compute_hosts, + default_instance_action, alarm_restrictions, **kwargs): + """ + Software Update - Create Strategy + """ + token = openstack.get_token(os_auth_uri, os_project_name, + os_project_domain_name, os_username, os_password, + os_user_domain_name) + + url = token.get_service_url(os_region_name, openstack.SERVICE.VIM, + openstack.SERVICE_TYPE.NFV, os_interface) + if url is None: + raise ValueError("NFV-VIM URL is invalid") + + strategy = sw_update.create_strategy(token.get_id(), url, + strategy_name, + controller_apply_type, + storage_apply_type, swift_apply_type, + compute_apply_type, + max_parallel_compute_hosts, + default_instance_action, + alarm_restrictions, + **kwargs) + if not strategy: + raise Exception("Strategy creation failed") + + _display_strategy(strategy) + + +def delete_strategy(os_auth_uri, os_project_name, os_project_domain_name, + os_username, os_password, os_user_domain_name, os_region_name, + os_interface, strategy_name, force=False): + """ + Software Update - Delete Strategy + """ + token = openstack.get_token(os_auth_uri, os_project_name, + os_project_domain_name, os_username, os_password, + os_user_domain_name) + + url = token.get_service_url(os_region_name, openstack.SERVICE.VIM, + openstack.SERVICE_TYPE.NFV, os_interface) + if url is None: + raise ValueError("NFV-VIM URL is invalid") + + success = sw_update.delete_strategy(token.get_id(), url, + strategy_name, force) + if success: + print("Strategy deleted") + return + else: + raise Exception("Strategy delete failed") + + +def apply_strategy(os_auth_uri, os_project_name, os_project_domain_name, + os_username, os_password, os_user_domain_name, os_region_name, + os_interface, strategy_name, stage_id=None): + """ + Software Update - Apply Strategy + """ + token = openstack.get_token(os_auth_uri, os_project_name, + os_project_domain_name, os_username, os_password, + os_user_domain_name) + + url = token.get_service_url(os_region_name, openstack.SERVICE.VIM, + openstack.SERVICE_TYPE.NFV, os_interface) + if url is None: + raise ValueError("NFV-VIM URL is invalid") + + strategy = sw_update.apply_strategy(token.get_id(), url, + strategy_name, stage_id) + if not strategy: + if stage_id is None: + raise Exception("Strategy apply failed") + else: + raise Exception("Strategy stage %s apply failed" % stage_id) + + _display_strategy(strategy) + + +def abort_strategy(os_auth_uri, os_project_name, os_project_domain_name, + os_username, os_password, os_user_domain_name, os_region_name, + os_interface, strategy_name, stage_id=None): + """ + Software Update - Abort Strategy + """ + token = openstack.get_token(os_auth_uri, os_project_name, + os_project_domain_name, os_username, os_password, + os_user_domain_name) + + url = token.get_service_url(os_region_name, openstack.SERVICE.VIM, + openstack.SERVICE_TYPE.NFV, os_interface) + if url is None: + raise ValueError("NFV-VIM URL is invalid") + + strategy = sw_update.abort_strategy(token.get_id(), url, + strategy_name, stage_id) + if not strategy: + if stage_id is None: + raise Exception("Strategy abort failed") + else: + raise Exception("Strategy stage %s abort failed" % stage_id) + + _display_strategy(strategy) + + +def show_strategy(os_auth_uri, os_project_name, os_project_domain_name, + os_username, os_password, os_user_domain_name, os_region_name, + os_interface, strategy_name, details=False): + """ + Software Update - Show Strategy + """ + token = openstack.get_token(os_auth_uri, os_project_name, + os_project_domain_name, os_username, os_password, + os_user_domain_name) + + url = token.get_service_url(os_region_name, openstack.SERVICE.VIM, + openstack.SERVICE_TYPE.NFV, os_interface) + if url is None: + raise ValueError("NFV-VIM URL is invalid") + + strategy = sw_update.get_strategies(token.get_id(), url, + strategy_name) + if not strategy: + print("No strategy available") + return + + _display_strategy(strategy, details) diff --git a/nfv/nfv-client/scripts/sw-manager.completion b/nfv/nfv-client/scripts/sw-manager.completion new file mode 100755 index 00000000..e7c00e04 --- /dev/null +++ b/nfv/nfv-client/scripts/sw-manager.completion @@ -0,0 +1,190 @@ +# +# Copyright (c) 2016-2017 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + +# +# This file provides bash-completion functionality for the sw-manager CLI +# + +function _swmanager() +{ + COMPREPLY=() + local cur="${COMP_WORDS[COMP_CWORD]}" + local prev="${COMP_WORDS[COMP_CWORD-1]}" + local subcommand=${COMP_WORDS[1]} + + # + # The available sw-manager subcommands + # + local subcommands=" + patch-strategy + upgrade-strategy + " + + if [ $COMP_CWORD -gt 1 ]; then + # + # Complete the arguments to the subcommands + # + case "$subcommand" in + patch-strategy) + local actions=" + create + delete + apply + abort + show + " + if [ $COMP_CWORD -gt 2 ]; then + local action=${COMP_WORDS[2]} + # + # Complete the arguments for each action + # + case "$action" in + create) + local createopts=" + --controller-apply-type + --storage-apply-type + --compute-apply-type + --max-parallel-compute-hosts + --instance-action + --alarm-restrictions + " + local createopt=${prev} + case "$createopt" in + --controller-apply-type) + COMPREPLY=($(compgen -W "serial ignore" -- ${cur})) + return 0 + ;; + --storage-apply-type|--compute-apply-type) + COMPREPLY=($(compgen -W "serial parallel ignore" -- ${cur})) + return 0 + ;; + --max-parallel-compute-hosts) + COMPREPLY=( $(compgen -- ${cur})) + return 0 + ;; + --instance-action) + COMPREPLY=($(compgen -W "migrate stop-start" -- ${cur})) + return 0 + ;; + --alarm-restrictions) + COMPREPLY=($(compgen -W "strict relaxed" -- ${cur})) + return 0 + ;; + *) + ;; + esac + COMPREPLY=($(compgen -W "${createopts}" -- ${cur})) + return 0 + ;; + apply|abort) + if [ "${prev}" = "${action}" ]; then + COMPREPLY=($(compgen -W "--stage-id" -- ${cur})) + fi + return 0 + ;; + show) + if [ "${prev}" = "${action}" ]; then + COMPREPLY=($(compgen -W "--details" -- ${cur})) + fi + return 0 + ;; + delete) + # These subcommands have no options/arguments + COMPREPLY=( $(compgen -- ${cur}) ) + return 0 + ;; + *) + ;; + esac + fi + + # Provide actions for completion + COMPREPLY=($(compgen -W "${actions}" -- ${cur})) + return 0 + ;; + upgrade-strategy) + local actions=" + create + delete + apply + abort + show + " + if [ $COMP_CWORD -gt 2 ]; then + local action=${COMP_WORDS[2]} + # + # Complete the arguments for each action + # + case "$action" in + create) + local createopts=" + --storage-apply-type + --compute-apply-type + --max-parallel-compute-hosts + --alarm-restrictions + " + local createopt=${prev} + case "$createopt" in + --storage-apply-type) + COMPREPLY=($(compgen -W "serial parallel ignore" -- ${cur})) + return 0 + ;; + --compute-apply-type) + COMPREPLY=($(compgen -W "serial parallel ignore" -- ${cur})) + return 0 + ;; + --max-parallel-compute-hosts) + COMPREPLY=( $(compgen -- ${cur})) + return 0 + ;; + --alarm-restrictions) + COMPREPLY=($(compgen -W "strict relaxed" -- ${cur})) + return 0 + ;; + *) + ;; + esac + COMPREPLY=($(compgen -W "${createopts}" -- ${cur})) + return 0 + ;; + apply|abort) + if [ "${prev}" = "${action}" ]; then + COMPREPLY=($(compgen -W "--stage-id" -- ${cur})) + fi + return 0 + ;; + show) + if [ "${prev}" = "${action}" ]; then + COMPREPLY=($(compgen -W "--details" -- ${cur})) + fi + return 0 + ;; + delete) + # These subcommands have no options/arguments + COMPREPLY=( $(compgen -- ${cur}) ) + return 0 + ;; + *) + ;; + esac + fi + + # Provide actions for completion + COMPREPLY=($(compgen -W "${actions}" -- ${cur})) + return 0 + ;; + *) + ;; + esac + fi + + # Provide subcommands for completion + COMPREPLY=($(compgen -W "${subcommands}" -- ${cur})) + return 0 +} + +# Bind the above function to the sw-manager CLI +complete -F _swmanager -o filenames sw-manager diff --git a/nfv/nfv-client/setup.py b/nfv/nfv-client/setup.py new file mode 100755 index 00000000..0a9f94e2 --- /dev/null +++ b/nfv/nfv-client/setup.py @@ -0,0 +1,21 @@ +# +# Copyright (c) 2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from setuptools import setup, find_packages + +setup( + name='nfv_client', + description='NFV Client', + version='1.0.0', + license='Apache-2.0', + platforms=['any'], + provides='nfv_client', + packages=find_packages(), + entry_points={ + 'console_scripts': [ + 'sw-manager = nfv_client.shell:process_main', + ], + } +) diff --git a/nfv/nfv-common/LICENSE b/nfv/nfv-common/LICENSE new file mode 100755 index 00000000..d6456956 --- /dev/null +++ b/nfv/nfv-common/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/nfv/nfv-common/nfv_common/__init__.py b/nfv/nfv-common/nfv_common/__init__.py new file mode 100755 index 00000000..02083bd0 --- /dev/null +++ b/nfv/nfv-common/nfv_common/__init__.py @@ -0,0 +1,5 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# diff --git a/nfv/nfv-common/nfv_common/alarm/__init__.py b/nfv/nfv-common/nfv_common/alarm/__init__.py new file mode 100755 index 00000000..a5a3f12b --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/__init__.py @@ -0,0 +1,19 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from objects.v1 import ALARM_CONTEXT +from objects.v1 import ALARM_TYPE +from objects.v1 import ALARM_EVENT_TYPE +from objects.v1 import ALARM_PROBABLE_CAUSE +from objects.v1 import ALARM_SEVERITY +from objects.v1 import ALARM_TREND_INDICATION +from objects.v1 import AlarmStateData +from objects.v1 import AlarmThresholdData +from objects.v1 import AlarmData + +from _alarm_module import alarm_raise, alarm_clear +from _alarm_module import alarm_subsystem_sane, alarm_initialize, alarm_finalize diff --git a/nfv/nfv-common/nfv_common/alarm/_alarm_handlers.py b/nfv/nfv-common/nfv_common/alarm/_alarm_handlers.py new file mode 100755 index 00000000..21a453c2 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/_alarm_handlers.py @@ -0,0 +1,87 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +import stevedore + +from nfv_common import debug +from nfv_common.helpers import Singleton + +DLOG = debug.debug_get_logger('nfv_common.alarm.alarm_handlers') + + +@six.add_metaclass(Singleton) +class AlarmHandlers(stevedore.enabled.EnabledExtensionManager): + """ + Alarm Handlers + """ + _version = '1.0.0' + _signature = 'e33d7cf6-f270-4256-893e-16266ee4dd2e' + + def __init__(self, namespace, handler_names): + super(AlarmHandlers, self).__init__(namespace, + AlarmHandlers.valid_handler, + invoke_on_load=True, + invoke_args=(), invoke_kwds={}) + + handler_list = [handler.strip() for handler in handler_names.split(',')] + + self._handlers = {} + for handler in self: + if handler.obj.name in handler_list: + handler_id = handler.obj.provider + ':' + handler.obj.name + if handler_id not in self._handlers: + self._handlers[handler_id] = handler + DLOG.info("Loaded handler %s version %s provided by %s." + % (handler.obj.name, handler.obj.version, + handler.obj.provider)) + + @staticmethod + def valid_handler(handler): + """ + Verify signature of the handler is valid + """ + if AlarmHandlers._signature == handler.obj.signature: + return True + else: + DLOG.info("Handler %s version %s from provider %s has an invalid " + "signature." % (handler.obj.name, handler.obj.version, + handler.obj.provider)) + return False + + def raise_alarm(self, alarm_uuid, alarm_data): + """ + Raise an alarm using the handlers + """ + for handler_type, handler in self._handlers.iteritems(): + handler.obj.raise_alarm(alarm_uuid, alarm_data) + + def clear_alarm(self, alarm_uuid): + """ + Clear an alarm using the handlers + """ + for handler_type, handler in self._handlers.iteritems(): + handler.obj.clear_alarm(alarm_uuid) + + def audit_alarms(self): + """ + Audit alarms using the handlers + """ + for handler_type, handler in self._handlers.iteritems(): + handler.obj.audit_alarms() + + def initialize(self, config_file): + """ + Initialize handlers + """ + for handler_id, handler in self._handlers.iteritems(): + handler.obj.initialize(config_file) + + def finalize(self): + """ + Finalize handlers + """ + for handler_id, handler in self._handlers.iteritems(): + handler.obj.finalize() diff --git a/nfv/nfv-common/nfv_common/alarm/_alarm_module.py b/nfv/nfv-common/nfv_common/alarm/_alarm_module.py new file mode 100755 index 00000000..9692f501 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/_alarm_module.py @@ -0,0 +1,48 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.alarm.alarm_module') + + +def alarm_raise(alarm_uuid, alarm_data): + """ + Raise an alarm + """ + from _alarm_thread import AlarmThread + AlarmThread().alarm_raise(alarm_uuid, alarm_data) + + +def alarm_clear(alarm_uuid): + """ + Clear an alarm + """ + from _alarm_thread import AlarmThread + AlarmThread().alarm_clear(alarm_uuid) + + +def alarm_subsystem_sane(): + """ + Returns true if the alarm subsystem is healthy + """ + from _alarm_thread import AlarmThread + return 600 >= AlarmThread().stall_elapsed_secs + + +def alarm_initialize(config): + """ + Initialize the alarm subsystem + """ + from _alarm_thread import AlarmThread + AlarmThread(config).start() + + +def alarm_finalize(): + """ + Finalize the alarm subsystem + """ + from _alarm_thread import AlarmThread + AlarmThread().stop(max_wait_in_seconds=5) diff --git a/nfv/nfv-common/nfv_common/alarm/_alarm_thread.py b/nfv/nfv-common/nfv_common/alarm/_alarm_thread.py new file mode 100755 index 00000000..42252ded --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/_alarm_thread.py @@ -0,0 +1,107 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +import datetime + +from nfv_common import debug +from nfv_common import thread +from nfv_common import timers +from nfv_common.helpers import Singleton, coroutine + +from _alarm_handlers import AlarmHandlers + +DLOG = debug.debug_get_logger('nfv_common.alarm.alarm_thread') + + +@six.add_metaclass(Singleton) +class AlarmWorker(thread.ThreadWorker): + """ + Alarm Worker + """ + def __init__(self, name, config): + super(AlarmWorker, self).__init__(name) + self._config = config + self._handlers = None + self._alarm_audit_timer_id = None + + @coroutine + def _alarm_audit(self): + """ + Called periodically to audit alarms + """ + while True: + (yield) + self._handlers.audit_alarms() + + def initialize(self): + """ + Initialize the Alarm Worker + """ + self._handlers = AlarmHandlers(self._config['namespace'], + self._config['handlers']) + self._handlers.initialize(self._config['config_file']) + + self._alarm_audit_timer_id = timers.timers_create_timer( + 'alarm_audit', int(self._config['audit_interval']), + int(self._config['audit_interval']), self._alarm_audit) + + def finalize(self): + """ + Finalize the Alarm Worker + """ + if self._handlers is not None: + self._handlers.finalize() + + if self._alarm_audit_timer_id is not None: + timers.timers_delete_timer(self._alarm_audit_timer_id) + + def do_work(self, action, work): + """ + Do work given to the Alarm Worker + """ + if AlarmThread.ACTION_RAISE_ALARM == action: + DLOG.verbose("Raise alarm with uuid=%s" % work['alarm-uuid']) + self._handlers.raise_alarm(work['alarm-uuid'], work['alarm-data']) + + elif AlarmThread.ACTION_CLEAR_ALARM == action: + DLOG.verbose("Clear alarm with uuid=%s" % work['alarm-uuid']) + self._handlers.clear_alarm(work['alarm-uuid']) + + else: + DLOG.debug("Unknown action %s given." % action) + + +@six.add_metaclass(Singleton) +class AlarmThread(thread.Thread): + """ + Alarm Thread + """ + ACTION_RAISE_ALARM = "thread-raise-alarm" + ACTION_CLEAR_ALARM = "thread-clear-alarm" + + def __init__(self, config=None): + self._worker = AlarmWorker('Alarm', config) + super(AlarmThread, self).__init__('Alarm', self._worker) + + def alarm_raise(self, alarm_uuid, alarm_data): + """ + Send raise alarm to the Alarm Thread Worker + """ + work = dict() + work['alarm-uuid'] = alarm_uuid + work['alarm-data'] = alarm_data + work['alarm-change-date'] = datetime.datetime.utcnow() + self.send_work(AlarmThread.ACTION_RAISE_ALARM, work) + + def alarm_clear(self, alarm_uuid): + """ + Send clear alarm to the Alarm Thread Worker + """ + work = dict() + work['alarm-uuid'] = alarm_uuid + work['alarm-data'] = None + work['alarm-change-date'] = datetime.datetime.utcnow() + self.send_work(AlarmThread.ACTION_CLEAR_ALARM, work) diff --git a/nfv/nfv-common/nfv_common/alarm/handlers/__init__.py b/nfv/nfv-common/nfv_common/alarm/handlers/__init__.py new file mode 100755 index 00000000..02083bd0 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/handlers/__init__.py @@ -0,0 +1,5 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# diff --git a/nfv/nfv-common/nfv_common/alarm/handlers/v1/__init__.py b/nfv/nfv-common/nfv_common/alarm/handlers/v1/__init__.py new file mode 100755 index 00000000..f3fb86b2 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/handlers/v1/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _alarm_handler import AlarmHandler diff --git a/nfv/nfv-common/nfv_common/alarm/handlers/v1/_alarm_handler.py b/nfv/nfv-common/nfv_common/alarm/handlers/v1/_alarm_handler.py new file mode 100755 index 00000000..bd4336c8 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/handlers/v1/_alarm_handler.py @@ -0,0 +1,58 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import abc +import six + + +@six.add_metaclass(abc.ABCMeta) +class AlarmHandler(object): + """ + Abstract Alarm Handler Class Definition + """ + @abc.abstractproperty + def name(self): + """ The name of handler """ + pass + + @abc.abstractproperty + def version(self): + """ The versions of the handler """ + pass + + @abc.abstractproperty + def provider(self): + """ Who created the handler """ + pass + + @abc.abstractproperty + def signature(self): + """ Signature of the handler """ + pass + + @abc.abstractmethod + def raise_alarm(self, alarm_uuid, alarm_data): + """ Raise an alarm via the handler """ + pass + + @abc.abstractmethod + def clear_alarm(self, alarm_uuid): + """ Clear an alarm via the handler """ + pass + + @abc.abstractmethod + def audit_alarms(self): + """ Audit alarms via the handler """ + pass + + @abc.abstractmethod + def initialize(self, config_file): + """ Initialize the handler """ + pass + + @abc.abstractmethod + def finalize(self): + """ Finalize the handler """ + pass diff --git a/nfv/nfv-common/nfv_common/alarm/objects/__init__.py b/nfv/nfv-common/nfv_common/alarm/objects/__init__.py new file mode 100755 index 00000000..90b33192 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/objects/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +import v1 diff --git a/nfv/nfv-common/nfv_common/alarm/objects/v1/__init__.py b/nfv/nfv-common/nfv_common/alarm/objects/v1/__init__.py new file mode 100755 index 00000000..25dc7c7c --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/objects/v1/__init__.py @@ -0,0 +1,10 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _alarm_defs import ALARM_CONTEXT, ALARM_TYPE, ALARM_EVENT_TYPE +from _alarm_defs import ALARM_PROBABLE_CAUSE, ALARM_SEVERITY, ALARM_TREND_INDICATION +from _alarm_data import AlarmData, AlarmStateData, AlarmThresholdData diff --git a/nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_data.py b/nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_data.py new file mode 100755 index 00000000..c5fd1046 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_data.py @@ -0,0 +1,66 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from datetime import datetime + + +class AlarmStateData(object): + """ + Alarm State Data + """ + def __init__(self, state): + self.state = state + + def as_dict(self): + return dict.copy(self.__dict__) + + +class AlarmThresholdData(object): + """ + Alarm Threshold Data + """ + def __init__(self, threshold_value, observed_value): + self.threshold_value = threshold_value + self.observed_value = observed_value + + def as_dict(self): + return dict.copy(self.__dict__) + + +class AlarmData(object): + """ + Alarm Data + """ + + def __init__(self, alarm_uuid, alarm_type, alarm_context, entity_type, + entity, event_type, probable_cause, perceived_severity, + trend_indication, specific_problem_text, proposed_repair_action, + additional_text="", state_data=None, threshold_data=None, + service_affecting=True, suppression_allowed=True, + raised_timestamp=None): + + self.alarm_uuid = alarm_uuid + self.alarm_type = alarm_type + self.alarm_context = alarm_context + self.entity_type = entity_type + self.entity = entity + self.event_type = event_type + self.probable_cause = probable_cause + self.perceived_severity = perceived_severity + self.trend_indication = trend_indication + self.specific_problem_text = specific_problem_text + self.proposed_repair_action = proposed_repair_action + self.additional_text = additional_text + self.state_data = state_data + self.threshold_data = threshold_data + self.service_affecting = service_affecting + self.suppression_allowed = suppression_allowed + self.created_timestamp = datetime.utcnow() + self.raised_timestamp = raised_timestamp + self.changed_timestamp = None + self.cleared_timestamp = None + + def as_dict(self): + return dict.copy(self.__dict__) diff --git a/nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_defs.py b/nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_defs.py new file mode 100755 index 00000000..cc816753 --- /dev/null +++ b/nfv/nfv-common/nfv_common/alarm/objects/v1/_alarm_defs.py @@ -0,0 +1,116 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six + +from nfv_common.helpers import Constants, Constant, Singleton + + +@six.add_metaclass(Singleton) +class _AlarmType(Constants): + """ + Alarm Type Constants + """ + UNKNOWN = Constant('unknown') + MULTI_NODE_RECOVERY_MODE = Constant('multi-node-recovery-mode') + HOST_SERVICES_FAILED = Constant('host-services-failed') + INSTANCE_FAILED = Constant('instance-failed') + INSTANCE_SCHEDULING_FAILED = Constant('instance-scheduling-failed') + INSTANCE_STOPPED = Constant('instance-stopped') + INSTANCE_REBOOTING = Constant('instance-rebooting') + INSTANCE_PAUSED = Constant('instance-paused') + INSTANCE_SUSPENDED = Constant('instance-suspended') + INSTANCE_EVACUATING = Constant('instance-evacuating') + INSTANCE_REBUILDING = Constant('instance-rebuilding') + INSTANCE_LIVE_MIGRATING = Constant('instance-live-migrating') + INSTANCE_COLD_MIGRATING = Constant('instance-cold-migrating') + INSTANCE_COLD_MIGRATED = Constant('instance-cold-migrated') + INSTANCE_COLD_MIGRATE_REVERTING = Constant('instance-cold-migrate-reverting') + INSTANCE_RESIZING = Constant('instance-resizing') + INSTANCE_RESIZED = Constant('instance-resized') + INSTANCE_RESIZE_REVERTING = Constant('instance-resize-reverting') + INSTANCE_GUEST_HEARTBEAT = Constant('instance-guest-heartbeat') + INSTANCE_GROUP_POLICY_CONFLICT = Constant('instance-group-policy-conflict') + SW_PATCH_AUTO_APPLY_INPROGRESS = Constant('sw-patch-auto-apply-inprogress') + SW_PATCH_AUTO_APPLY_ABORTING = Constant('sw-patch-auto-apply-aborting') + SW_PATCH_AUTO_APPLY_FAILED = Constant('sw-patch-auto-apply-failed') + SW_UPGRADE_AUTO_APPLY_INPROGRESS = Constant('sw-upgrade-auto-apply-inprogress') + SW_UPGRADE_AUTO_APPLY_ABORTING = Constant('sw-upgrade-auto-apply-aborting') + SW_UPGRADE_AUTO_APPLY_FAILED = Constant('sw-upgrade-auto-apply-failed') + + +@six.add_metaclass(Singleton) +class _AlarmContext(Constants): + """ + Alarm Context Constants + """ + ADMIN = Constant('admin') + TENANT = Constant('tenant') + + +@six.add_metaclass(Singleton) +class _AlarmEventType(Constants): + """ + Alarm Event Type Constants + """ + UNKNOWN = Constant('unknown') + COMMUNICATIONS_ALARM = Constant('communications-alarm') + PROCESSING_ERROR_ALARM = Constant('processing-error-alarm') + ENVIRONMENTAL_ALARM = Constant('environmental-alarm') + QUALITY_OF_SERVICE_ALARM = Constant('quality-of-service-alarm') + EQUIPMENT_ALARM = Constant('equipment-alarm') + INTEGRITY_VIOLATION = Constant('integrity-violation') + OPERATIONAL_VIOLATION = Constant('operational-violation') + PHYSICAL_VIOLATION = Constant('physical-violation') + SECURITY_SERVICE_VIOLATION = Constant('security-service-violation') + MECHANISM_VIOLATION = Constant('mechanism-violation') + TIME_DOMAIN_VIOLATION = Constant('time-domain-violation') + + +@six.add_metaclass(Singleton) +class _AlarmProbableCause(Constants): + """ + Alarm Probable Cause Constants + """ + UNKNOWN = Constant('unknown') + INDETERMINATE = Constant('indeterminate') + SOFTWARE_ERROR = Constant('software-error') + SOFTWARE_PROGRAM_ERROR = Constant('software-program-error') + UNDERLYING_RESOURCE_UNAVAILABLE = Constant('underlying-resource-unavailable') + PROCEDURAL_ERROR = Constant('procedural-error') + + +@six.add_metaclass(Singleton) +class _AlarmSeverity(Constants): + """ + Alarm Severity Constants + """ + UNKNOWN = Constant('unknown') + CLEARED = Constant('cleared') + INDETERMINATE = Constant('indeterminate') + WARNING = Constant('warning') + MINOR = Constant('minor') + MAJOR = Constant('major') + CRITICAL = Constant('critical') + + +@six.add_metaclass(Singleton) +class _AlarmTrendIndication(Constants): + """ + Alarm Trend Indication Constants + """ + UNKNOWN = Constant('unknown') + LESS_SEVERE = Constant('less-severe') + NO_CHANGE = Constant('no-change') + MORE_SEVERE = Constant('more-severe') + + +# Constant Instantiation +ALARM_TYPE = _AlarmType() +ALARM_CONTEXT = _AlarmContext() +ALARM_EVENT_TYPE = _AlarmEventType() +ALARM_PROBABLE_CAUSE = _AlarmProbableCause() +ALARM_SEVERITY = _AlarmSeverity() +ALARM_TREND_INDICATION = _AlarmTrendIndication() diff --git a/nfv/nfv-common/nfv_common/catalog/__init__.py b/nfv/nfv-common/nfv_common/catalog/__init__.py new file mode 100755 index 00000000..01975855 --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +import model diff --git a/nfv/nfv-common/nfv_common/catalog/_catalog_backend.py b/nfv/nfv-common/nfv_common/catalog/_catalog_backend.py new file mode 100755 index 00000000..7394e2b4 --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/_catalog_backend.py @@ -0,0 +1,65 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +import stevedore + +from nfv_common import debug +from nfv_common.helpers import Singleton + +DLOG = debug.debug_get_logger('nfv_common.catalog.catalog_backend') + + +@six.add_metaclass(Singleton) +class CatalogBackend(stevedore.named.NamedExtensionManager): + """ + Catalog Backend + """ + _version = '1.0.0' + _signature = '7926ef8d-b04c-4f5b-8627-f40f59fd8d11' + + def __init__(self, plugin_namespace, plugin_name): + super(CatalogBackend, self).__init__(plugin_namespace, plugin_name, + invoke_on_load=True, + invoke_args=(), invoke_kwds={}) + self.plugin = None + + for plugin in self: + if self.valid_plugin(plugin): + self.plugin = plugin + DLOG.info("Loaded plugin %s version %s provided by %s." + % (plugin.obj.name, plugin.obj.version, + plugin.obj.provider)) + break + + @staticmethod + def valid_plugin(plugin): + """ Verify signature of plugin is valid """ + if CatalogBackend._signature == plugin.obj.signature: + return True + else: + DLOG.info("Plugin %s version %s from provider %s has an invalid " + "signature." % (plugin.obj.name, plugin.obj.version, + plugin.obj.provider)) + return False + + def read_vnf_descriptor(self, vnfd_id, vnf_vendor, vnf_version): + """ Read a particular vnf descriptor """ + vnfd_record = None + if self.plugin is not None: + vnfd_record = self.plugin.obj.read_vnf_descriptor(vnfd_id, + vnf_vendor, + vnf_version) + return vnfd_record + + def initialize(self): + """ Initialize plugin """ + if self.plugin is not None: + self.plugin.obj.initialize(self._version) + + def finalize(self): + """ Finalize plugin """ + if self.plugin is not None: + self.plugin.obj.finalize() diff --git a/nfv/nfv-common/nfv_common/catalog/_catalog_module.py b/nfv/nfv-common/nfv_common/catalog/_catalog_module.py new file mode 100755 index 00000000..41e3e7ce --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/_catalog_module.py @@ -0,0 +1,28 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from _catalog_backend import CatalogBackend + +_catalog_backend = None + + +def read_vnf_descriptor(vnfd_id, vnf_vendor, vnf_version): + """ Read a vnf descriptor """ + if _catalog_backend is not None: + return _catalog_backend.read_vnf_descriptor(vnfd_id, vnf_vendor, + vnf_version) + return None + + +def catalog_initialize(plugin_namespace, plugin_name): + """ Catalog Initialize """ + global _catalog_backend + _catalog_backend = CatalogBackend(plugin_namespace, plugin_name) + + +def catalog_finalize(): + """ Catalog Finalize """ + global _catalog_backend + _catalog_backend = None diff --git a/nfv/nfv-common/nfv_common/catalog/model/__init__.py b/nfv/nfv-common/nfv_common/catalog/model/__init__.py new file mode 100755 index 00000000..05ed99b3 --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/model/__init__.py @@ -0,0 +1,11 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _defs import CONNECTION_TYPE, CONNECTIVITY_TYPE +from _vnf_descriptor import VNFD, ConnectionPointVNFD, VirtualLink +from _vnf_descriptor import DeploymentFlavor, ConstituentVDU +from _vnf_descriptor import VDU, VNFC, ConnectionPointVNFC diff --git a/nfv/nfv-common/nfv_common/catalog/model/_defs.py b/nfv/nfv-common/nfv_common/catalog/model/_defs.py new file mode 100755 index 00000000..f35a6f82 --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/model/_defs.py @@ -0,0 +1,35 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +from nfv_common.helpers import Constant, Singleton + + +@six.add_metaclass(Singleton) +class ConnectionType(object): + """ + Connection Type Constants + """ + UNKNOWN = Constant('unknown') + VIRTUAL_PORT = Constant('virtual-port') + VIRTUAL_NIC_ADDRESS = Constant('virtual-nic-address') + PHYSICAL_PORT = Constant('physical-port') + PHYSICAL_NIC_ADDRESS = Constant('physical-nic-address') + + +@six.add_metaclass(Singleton) +class ConnectivityType(object): + """ + Connectivity Type Constants + """ + UNKNOWN = Constant('unknown') + E_LINE = Constant('E-Line') + E_LAN = Constant('E-LAN') + E_TREE = Constant('E-Tree') + + +# Constant Instantiation +CONNECTION_TYPE = ConnectionType() +CONNECTIVITY_TYPE = ConnectivityType() diff --git a/nfv/nfv-common/nfv_common/catalog/model/_vnf_descriptor.py b/nfv/nfv-common/nfv_common/catalog/model/_vnf_descriptor.py new file mode 100755 index 00000000..1def1d8c --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/model/_vnf_descriptor.py @@ -0,0 +1,179 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from _defs import CONNECTIVITY_TYPE, CONNECTION_TYPE + +# +# Virtual Network Function Descriptor - Class Layout +# +# VNFD -+------ ConnectionPointVNFD +# | +# +------ VirtualLink +# | +# +------ DeploymentFlavor ------ ConstituentVDU +# | +# +------ VDU ------ VNFC ------ ConnectionPointVNFC +# + + +class VNFD(object): + """ + Virtual Network Function Descriptor + id: unique name for this vnfd + vendor: who created this vnfd + descriptor_version: the version of the vnf descriptor + version: the version of the vnf software + vdu: one or more VDU() objects + virtual_link: zero or more VirtualLink() objects + connection_point: one or more connection points described by + ConnectionPointVNFD() objects + dependency: describes dependencies between vdus + monitoring_parameter: monitoring parameters which can be tracked for + this vnf + deployment_flavor: one or more DeploymentFlavor objects + auto_scale_policy: describes the policy in terms of criteria and action + manifest_file: a file that lists all files in the vnf package + manifest_file_security: a file that contains a digest of each file that + it lists as part of the vnf package + """ + def __init__(self, id): + self.id = id + self.vendor = None + self.descriptor_version = None + self.version = None + self.vdu = [] + self.virtual_link = [] + self.connection_point = [] + self.dependency = [] + self.monitoring_parameter = [] + self.deployment_flavor = [] + self.auto_scale_policy = [] + self.manifest_file = [] + self.manifest_file_security = [] + + +class ConnectionPointVNFD(object): + """ + Connection Point of a Virtual Network Function Descriptor + id: connection point identifier + virtual_link_reference: references zero or more virtual links by their + identifiers + type: type of connection + """ + def __init__(self, id): + self.id = id + self.virtual_link_reference = None + self.type = CONNECTION_TYPE.UNKNOWN + + +class VirtualLink(object): + """ + Virtual Link + id: unique identifier of this internal virtual link + connectivity_type: the type of connectivity + connection_points_references: 2 or more connection point identifiers + root_requirement: describes the throughput of the link + leaf_requirement: describes the throughput of the leaf connections + qos: describes the qos options to be supported on the virtual link + test_access: describes the test access facilities to be supported on + the virtual link + """ + def __init__(self, id): + self.id = id + self.connectivity_type = CONNECTIVITY_TYPE.UNKNOWN + self.connection_points_references = [] + self.root_requirement = None + self.leaf_requirement = None + self.qos = [] + self.test_access = None + + +class DeploymentFlavor(object): + """ + Deployment Flavor + id: vnf flavor identifier + flavor_key: monitoring parameter and it's value against which this + flavor is being described + constraint: zero or more deployment flavor constraints + constituent_vdu: one or more ConstituentVDU() objects + """ + def __init__(self, id): + self.id = id + self.flavor_key = None + self.constraint = [] + self.constituent_vdu = [] + + +class ConstituentVDU(object): + """ + Constituent Virtual Deployment Unit + vdu_reference: identifier of a vdu + number_of_instances: number of vdu instances required + constituent_vnfc: one or more vnfc identifiers that should be used for + this deployment + """ + def __init__(self, vdu_reference): + self.vdu_reference = vdu_reference + self.number_of_instances = 0 + self.constituent_vnfc = [] + + +class VDU(object): + """ + Virtual Deployment Unit + id: unique identifier for this vdu within the scope of the vnfd + vm_image: a reference to the vm image, does not need to be specified in + the case of null containers + computation_requirement: description of the required computation + resource characteristics + virtual_memory_resource_element: the virtual memory needed for this vdu + virtual_network_bandwidth_resource: the network bandwidth needed for + this vdu + lifecycle_event: describes vnfc functional scripts/workflows for + specific lifecycle events + constraint: vdu specific constraints + high_availability: specifies the redundancy model + scale_in_out: describes the minimum and maximum number of instances + that can be created when scaling + vnfc: describes one or more VNFC() objects created using this vdu + monitoring_parameter: zero or more monitoring parameters which can be + tracked for a vnfc based on this vdu + """ + def __init__(self, id): + self.id = id + self.vm_image = None + self.computation_requirement = None + self.virtual_memory_resource_element = None + self.virtual_network_bandwidth_resource = None + self.lifecycle_event = [] + self.constraint = None + self.high_availability = None + self.scale_in_out = None + self.vnfc = [] + self.monitoring_parameter = [] + + +class VNFC(object): + """ + Virtual Network Function Component + id: unique vnfc identification within the namespace of a specific vnf + connection_point: one or more network connections + """ + def __init__(self, id): + self.id = id + self.connection_point = [] + + +class ConnectionPointVNFC(object): + """ + Connection Point of a Virtual Network Function Component + id: connection point identifier + virtual_link_reference: references zero or more internal virtual links + type: type of network connection + """ + def __init__(self, id): + self.id = id + self.virtual_link_reference = None + self.type = CONNECTION_TYPE.UNKNOWN diff --git a/nfv/nfv-common/nfv_common/catalog/plugin/__init__.py b/nfv/nfv-common/nfv_common/catalog/plugin/__init__.py new file mode 100755 index 00000000..02083bd0 --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/plugin/__init__.py @@ -0,0 +1,5 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# diff --git a/nfv/nfv-common/nfv_common/catalog/plugin/v1/__init__.py b/nfv/nfv-common/nfv_common/catalog/plugin/v1/__init__.py new file mode 100755 index 00000000..02083bd0 --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/plugin/v1/__init__.py @@ -0,0 +1,5 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# diff --git a/nfv/nfv-common/nfv_common/catalog/plugin/v1/_catalog_plugin.py b/nfv/nfv-common/nfv_common/catalog/plugin/v1/_catalog_plugin.py new file mode 100755 index 00000000..3adf14bc --- /dev/null +++ b/nfv/nfv-common/nfv_common/catalog/plugin/v1/_catalog_plugin.py @@ -0,0 +1,48 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +from abc import ABCMeta, abstractproperty, abstractmethod + + +@six.add_metaclass(ABCMeta) +class CatalogPlugin(object): + """ + Abstract Catalog Plugin Class Definition + """ + @abstractproperty + def name(self): + """ The name of plugin """ + pass + + @abstractproperty + def version(self): + """ The versions of the plugin """ + pass + + @abstractproperty + def provider(self): + """ Vendor created the plugin """ + pass + + @abstractproperty + def signature(self): + """ Signature of the plugin """ + pass + + @abstractmethod + def read_vnf_descriptor(self, vnfd_id, vnf_vendor, vnf_version): + """ Read a particular vnf descriptor """ + pass + + @abstractmethod + def initialize(self, version): + """ Initialize the plugin """ + pass + + @abstractmethod + def finalize(self): + """ Finalize the plugin """ + pass diff --git a/nfv/nfv-common/nfv_common/config.py b/nfv/nfv-common/nfv_common/config.py new file mode 100755 index 00000000..28f92a82 --- /dev/null +++ b/nfv/nfv-common/nfv_common/config.py @@ -0,0 +1,45 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from six.moves import configparser + +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.config') + +# Configuration Global used by other modules to get access to the configuration +# specified in the ini file. +CONF = dict() + + +class Config(configparser.ConfigParser): + """ + Override ConfigParser class to add dictionary functionality. + """ + def as_dict(self): + d = dict(self._sections) + for key in d: + d[key] = dict(self._defaults, **d[key]) + d[key].pop('__name__', None) + return d + + +def section_exists(section): + """ + Returns true if configuration section exists + """ + section = CONF.get(section, None) + return section is not None + + +def load(config_file): + """ + Load the configuration file into a global CONF variable. + """ + global CONF + + config = Config() + config.read(config_file) + CONF = config.as_dict() diff --git a/nfv/nfv-common/nfv_common/debug/__init__.py b/nfv/nfv-common/nfv_common/debug/__init__.py new file mode 100755 index 00000000..982658c8 --- /dev/null +++ b/nfv/nfv-common/nfv_common/debug/__init__.py @@ -0,0 +1,12 @@ +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _debug_defs import DEBUG_LEVEL +from _debug_log import debug_trace, debug_get_logger, debug_dump_loggers +from _debug_module import debug_register_config_change_callback +from _debug_module import debug_deregister_config_change_callback +from _debug_module import debug_get_config, debug_reload_config +from _debug_module import debug_initialize, debug_finalize diff --git a/nfv/nfv-common/nfv_common/debug/_debug_config.py b/nfv/nfv-common/nfv_common/debug/_debug_config.py new file mode 100755 index 00000000..02ee4cf9 --- /dev/null +++ b/nfv/nfv-common/nfv_common/debug/_debug_config.py @@ -0,0 +1,138 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +from six.moves import configparser + +from _debug_defs import DEBUG_LEVEL + +from nfv_common.helpers import Singleton + +# File Format: +# [debug-overall] +# debug_level: +# trace_level: +# +# [debug-loggers] +# : +# +# Note: the python logging library does not have all of the debug levels +# specified above. What this means is that for external libraries using the +# logging library directly, the logger will be enabled for some debug levels. +# The level mappings are as follows: +# debug.level.none --> logging.NOTSET +# debug.level.verbose --> logging.DEBUG +# debug.level.debug --> logging.DEBUG +# debug.level.info --> logging.INFO +# debug.level.notice --> logging.INFO +# debug.level.warn --> logging.WARNING +# debug.level.error --> logging.ERROR +# debug.level.critical --> logging.CRITICAL +# + + +@six.add_metaclass(Singleton) +class DebugConfig(object): + """ + Debug Configuration + """ + debug_level_mapping = {'debug.level.none': DEBUG_LEVEL.NONE, + 'debug.level.verbose': DEBUG_LEVEL.VERBOSE, + 'debug.level.debug': DEBUG_LEVEL.DEBUG, + 'debug.level.info': DEBUG_LEVEL.INFO, + 'debug.level.notice': DEBUG_LEVEL.NOTICE, + 'debug.level.warn': DEBUG_LEVEL.WARN, + 'debug.level.error': DEBUG_LEVEL.ERROR, + 'debug.level.critical': DEBUG_LEVEL.CRITICAL} + + def __init__(self, filename): + """ + Create debug configuration + """ + self._filename = filename + self._config = None + + def load(self): + """ + Load debug configuration + """ + if self._config is None: + self._config = configparser.SafeConfigParser() + self._config.read(self._filename) + + @property + def filename(self): + """ + Returns the debug configuration file name + """ + return self._filename + + @property + def debug_level_overall(self): + """ + Returns the overall debug level + """ + debug_level = DEBUG_LEVEL.NONE + + if self._config is not None: + try: + level_str = self._config.get('debug-overall', 'debug_level') + debug_level = self.debug_level_mapping.get(level_str, + DEBUG_LEVEL.NONE) + + except configparser.NoOptionError: + print("Debug configuration has no debug_level option in the " + "debug-overall section.") + + except configparser.NoSectionError: + print("Debug configuration has no debug-overall section.") + + return debug_level + + @property + def trace_level_overall(self): + """ + Returns the overall trace level + """ + trace_level = DEBUG_LEVEL.NONE + + if self._config is not None: + try: + level_str = self._config.get('debug-overall', 'trace_level') + trace_level = self.debug_level_mapping.get(level_str, + DEBUG_LEVEL.NONE) + + except configparser.NoOptionError: + print("Debug configuration has no trace_level option in the " + "debug-overall section.") + + except configparser.NoSectionError: + print("Debug configuration has no debug-overall section.") + + return trace_level + + @property + def debug_loggers(self): + """ + Returns a list of debug loggers + """ + debug_list = [] + + if self._config is not None: + try: + for name, level_str in self._config.items('debug-loggers'): + debug_list.append((name, self.debug_level_mapping.get( + level_str, DEBUG_LEVEL.NONE))) + + except configparser.NoSectionError: + print("Debug configuration file has no debug-loggers section.") + + return debug_list diff --git a/nfv/nfv-common/nfv_common/debug/_debug_defs.py b/nfv/nfv-common/nfv_common/debug/_debug_defs.py new file mode 100755 index 00000000..3a3187d9 --- /dev/null +++ b/nfv/nfv-common/nfv_common/debug/_debug_defs.py @@ -0,0 +1,27 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six + +from nfv_common.helpers import Constant, Singleton + + +@six.add_metaclass(Singleton) +class _DebugLevel(object): + """ + Debug Level Constants + """ + NONE = Constant(8000) + CRITICAL = Constant(7000) + ERROR = Constant(6000) + WARN = Constant(5000) + NOTICE = Constant(4000) + INFO = Constant(3000) + DEBUG = Constant(2000) + VERBOSE = Constant(1000) + + +# Constant Instantiation +DEBUG_LEVEL = _DebugLevel() diff --git a/nfv/nfv-common/nfv_common/debug/_debug_log.py b/nfv/nfv-common/nfv_common/debug/_debug_log.py new file mode 100755 index 00000000..07d6a97c --- /dev/null +++ b/nfv/nfv-common/nfv_common/debug/_debug_log.py @@ -0,0 +1,338 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import os +import six +import sys +import inspect +import logging +import datetime +import functools + +from _debug_defs import DEBUG_LEVEL +from _debug_thread import DebugLoggingThread +from _debug_module import Debug + +_debug_loggers = {} + + +class DebugLogFormatter(logging.Formatter): + """ + Debug Log Formatter + """ + def formatTime(self, record, date_format=None): + dt = datetime.datetime.fromtimestamp(record.created) + if date_format is None: + date_str = dt.strftime("%b %d %H:%M:%S") + ".%03d" % record.msecs + else: + date_str = dt.strftime(date_format) + return date_str + + +class DebugLogHandler(logging.Handler): + """ + Debug Log Handler + """ + def __init__(self): + super(DebugLogHandler, self).__init__() + self.process_name = None + self.thread_name = None + + # To keep syslog-ng happy, we need to add the who field twice. Newer + # syslog-ng removes the header formatting + fmt = ("%(asctime)s %(who)36s[%(process)d]: %(who)36s[%(process)d] " + "%(levelname)8s %(message)s") + formatter = DebugLogFormatter(fmt) + self.setFormatter(formatter) + + def set_process_name(self, process_name): + """ + Set the process name + """ + self.process_name = process_name + + def set_thread_name(self, thread_name): + """ + Set the thread name + """ + self.thread_name = thread_name + + @staticmethod + def send(log_record): + """ + Send log record to debug logging thread + """ + DebugLoggingThread().send_log_record(log_record) + + def _format_record(self, log_record): + """ + Format the record so that it can be pickled and sent + to the debug logging thread + """ + if log_record.args: + # Not all arguments can be pickled. + log_record.msg %= log_record.args + log_record.args = None + + if self.process_name is not None: + if self.thread_name is not None: + log_record.who = ("%s_%s_Thread" % (self.process_name, + self.thread_name)) + else: + log_record.who = ("%s_Thread" % self.process_name) + else: + log_record.who = "UNKNOWN" + + if log_record.exc_info: + # Not all exceptions can be pickled. + self.format(log_record) + log_record.exc_info = None + + log_record.formatted_log = self.format(log_record) + + return log_record + + def emit(self, record): + """ + Send record to debug logging thread + """ + try: + log_record = self._format_record(record) + DebugLoggingThread().send_log_record(log_record) + + except (KeyboardInterrupt, SystemExit): + raise + + except Exception: + self.handleError(record) + + +class DebugLogger(object): + """ + Debug Logger + """ + log_level_mapping = {DEBUG_LEVEL.NONE: logging.NOTSET, + DEBUG_LEVEL.VERBOSE: logging.DEBUG, + DEBUG_LEVEL.DEBUG: logging.DEBUG, + DEBUG_LEVEL.INFO: logging.INFO, + DEBUG_LEVEL.NOTICE: logging.INFO, + DEBUG_LEVEL.WARN: logging.WARNING, + DEBUG_LEVEL.ERROR: logging.ERROR, + DEBUG_LEVEL.CRITICAL: logging.CRITICAL} + + def __init__(self, name, debug_level=DEBUG_LEVEL.NONE, process_name=None, + thread_name=None): + """ + Create debug logger + """ + self.name = name + self.process_name = process_name + self.thread_name = thread_name + self.debug_level = debug_level + self.logger = logging.getLogger(name) + self.logger.propagate = False + self.logger.setLevel(logging.NOTSET) + for handler in self.logger.handlers: + self.logger.removeHandler(handler) + self.logger.addHandler(DebugLogHandler()) + + def set_level(self, debug_level): + """ + Set the debug level for the logger + """ + log_level = self.log_level_mapping.get(debug_level, logging.NOTSET) + self.debug_level = debug_level + self.logger.setLevel(log_level) + + def set_process_name(self, process_name): + """ + Set the process name + """ + for handler in self.logger.handlers: + handler.set_process_name(process_name) + + def set_thread_name(self, thread_name): + """ + Set the thread name + """ + for handler in self.logger.handlers: + handler.set_thread_name(thread_name) + + @staticmethod + def get_caller(): + """ + Get the calling function and line number + """ + caller = inspect.currentframe().f_back.f_back + _, filename = os.path.split(caller.f_code.co_filename) + return "%42s.%-4s " % (filename, caller.f_lineno) + + def verbose(self, msg, *args, **kwargs): + """ + Debug log with severity of VERBOSE + """ + if DEBUG_LEVEL.VERBOSE >= Debug().debug_level: + if DEBUG_LEVEL.VERBOSE >= self.debug_level: + caller = self.get_caller() + self.logger.debug(caller + msg, *args, **kwargs) + + def debug(self, msg, *args, **kwargs): + """ + Debug log with severity of DEBUG + """ + if DEBUG_LEVEL.DEBUG >= Debug().debug_level: + if DEBUG_LEVEL.DEBUG >= self.debug_level: + caller = self.get_caller() + self.logger.debug(caller + msg, *args, **kwargs) + + def info(self, msg, *args, **kwargs): + """ + Debug log with severity of INFO + """ + if DEBUG_LEVEL.INFO >= Debug().debug_level: + if DEBUG_LEVEL.INFO >= self.debug_level: + caller = self.get_caller() + self.logger.info(caller + msg, *args, **kwargs) + + def notice(self, msg, *args, **kwargs): + """ + Debug log with severity of NOTICE + """ + if DEBUG_LEVEL.NOTICE >= Debug().debug_level: + if DEBUG_LEVEL.NOTICE >= self.debug_level: + caller = self.get_caller() + self.logger.info(caller + msg, *args, **kwargs) + + def warn(self, msg, *args, **kwargs): + """ + Debug log with severity of WARNING + """ + if DEBUG_LEVEL.WARN >= Debug().debug_level: + if DEBUG_LEVEL.WARN >= self.debug_level: + caller = self.get_caller() + self.logger.warning(caller + msg, *args, **kwargs) + + def error(self, msg, *args, **kwargs): + """ + Debug log with severity of ERROR + """ + if DEBUG_LEVEL.ERROR >= Debug().debug_level: + if DEBUG_LEVEL.ERROR >= self.debug_level: + caller = self.get_caller() + self.logger.error(caller + msg, *args, **kwargs) + + def critical(self, msg, *args, **kwargs): + """ + Debug log with severity of CRITICAL + """ + if DEBUG_LEVEL.CRITICAL >= Debug().debug_level: + if DEBUG_LEVEL.CRITICAL >= self.debug_level: + caller = self.get_caller() + self.logger.critical(caller + msg, *args, **kwargs) + + def exception(self, msg, *args): + """ + Debug exception log + """ + self.logger.exception(msg, *args) + + +def debug_trace(trace_level): + """ + Decorator function used to trace entering and exiting functions + """ + def trace_wrap(func): + def trace_wrapper(*args, **kwargs): + if trace_level >= Debug().trace_level: + six.print_(" " * Debug().trace_depth, file=Debug().output, + end='', sep='') + six.print_("entering " + func.__name__ + ":", + file=Debug().output, end='', sep='') + + six.print_(" args=", file=Debug().output, end='', sep='') + for arg in args: + six.print_("{0} ".format(arg), file=Debug().output, + end='', sep='') + + six.print_(" kwargs=", file=Debug().output, end='', sep='') + for name, value in kwargs.items(): + six.print_("{0}={1} ".format(name, value), + file=Debug().output, end='', sep='') + + try: + Debug().trace_depth += 1 + result = func(*args, **kwargs) + except Exception: + six.print_(" " * Debug().trace_depth, + file=Debug().output, end='', sep='') + six.print_("exception", file=Debug().output, + end='\n', sep='') + raise + finally: + Debug().trace_depth -= 1 + + six.print_(" " * Debug().trace_depth, file=Debug().output, + end='\n', sep='') + six.print_("exiting " + func.__name__, file=Debug().output, + end='\n', sep='') + return result + else: + return func(*args, **kwargs) + + functools.update_wrapper(trace_wrapper, func) + return trace_wrapper + return trace_wrap + + +def debug_dump_loggers(directory): + """ + Dump all available loggers + """ + if os.path.exists(directory): + program_name = os.path.basename(sys.argv[0]) + + with open(directory + program_name + '.dbg.conf', 'a') as f: + for name in _debug_loggers: + f.write(name + '\n') + + +def debug_get_logger(name, debug_level=None, process_name=None, + thread_name=None): + """ + Create a logger if it does not already exist + """ + global _debug_loggers + + logger = _debug_loggers.get(name, None) + if logger is None: + logger = DebugLogger(name, process_name, thread_name) + _debug_loggers[name] = logger + if debug_level is None: + logger.set_level(DEBUG_LEVEL.NONE) + else: + logger.set_level(debug_level) + else: + if debug_level is not None: + logger.set_level(debug_level) + + if process_name is not None: + logger.set_process_name(process_name) + + if thread_name is not None: + logger.set_thread_name(thread_name) + + return logger + + +def debug_set_loggers_level(debug_level=None): + """ + Set the level of all loggers + """ + global _debug_loggers + + for name in _debug_loggers: + logger = _debug_loggers.get(name, None) + if logger is not None: + logger.set_level(debug_level) diff --git a/nfv/nfv-common/nfv_common/debug/_debug_module.py b/nfv/nfv-common/nfv_common/debug/_debug_module.py new file mode 100755 index 00000000..6cafd0b6 --- /dev/null +++ b/nfv/nfv-common/nfv_common/debug/_debug_module.py @@ -0,0 +1,174 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +import sys + +from nfv_common.helpers import Singleton + +from _debug_defs import DEBUG_LEVEL +from _debug_config import DebugConfig +from _debug_thread import DebugLoggingThread + + +@six.add_metaclass(Singleton) +class Debug(object): + """ + Debug + """ + def __init__(self): + self._config_change_callbacks = list() + self._config = None + self._debug_config = None + self._debug_level = DEBUG_LEVEL.VERBOSE + self._debug_trace_depth = 0 + self._debug_trace_level = DEBUG_LEVEL.VERBOSE + self._debug_output = sys.stdout + + def reinitialize(self): + self._config_change_callbacks = list() + + def register_config_change_callback(self, callback): + """ + Register a configuration change callback + """ + if callback not in self._config_change_callbacks: + self._config_change_callbacks.append(callback) + + def deregister_config_change_callback(self, callback): + """ + Deregister a configuration change callback + """ + self._config_change_callbacks.remove(callback) + + def load(self, process_name=None, thread_name=None): + """ + Load debug configuration settings + """ + from _debug_log import debug_get_logger, debug_set_loggers_level + + if self._debug_config is not None: + self._debug_config.load() + self._debug_level = self._debug_config.debug_level_overall + self._debug_trace_level = self._debug_config.trace_level_overall + debug_set_loggers_level(self._debug_level) + for name, debug_level in self._debug_config.debug_loggers: + debug_get_logger(name, debug_level, process_name, thread_name) + + def reload(self): + """ + Reload debug configuration settings + """ + from _debug_log import debug_get_logger, debug_set_loggers_level + + if self._debug_config is not None: + self._debug_config.load() + self._debug_level = self._debug_config.debug_level_overall + self._debug_trace_level = self._debug_config.trace_level_overall + debug_set_loggers_level(self._debug_level) + for name, debug_level in self._debug_config.debug_loggers: + debug_get_logger(name, debug_level) + + for callback in self._config_change_callbacks: + callback() + + @property + def config(self): + """ + Returns the debug configuration + """ + return self._config + + @config.setter + def config(self, config): + """ + Set the debug configuration file + """ + if self._config is None: + self._config = config + self._debug_config = DebugConfig(config['config_file']) + DebugLoggingThread().send_log_config(config) + + @property + def debug_level(self): + """ + Returns the debug level currently set + """ + return self._debug_level + + @property + def trace_level(self): + """ + Returns the debug trace level currently set + """ + return self._debug_trace_level + + @property + def trace_depth(self): + """ + Returns the debug trace depth currently set + """ + return self._debug_trace_depth + + @trace_depth.setter + def trace_depth(self, trace_depth): + """ + Set the current trace depth + """ + self._debug_trace_depth = trace_depth + + @property + def output(self): + """ + Returns where the debug output should go + """ + return self._debug_output + + +def debug_register_config_change_callback(callback): + """ + Register debug configuration change callback + """ + return Debug().register_config_change_callback(callback) + + +def debug_deregister_config_change_callback(callback): + """ + Deregister debug configuration change callback + """ + return Debug().deregister_config_change_callback(callback) + + +def debug_get_config(): + """ + Get debug configuration + """ + return Debug().config + + +def debug_reload_config(): + """ + Reload debug configuration + """ + Debug().reload() + + +def debug_initialize(config, process_name=None, thread_name=None): + """ + Initializes the debug subsystem + """ + Debug().reinitialize() + + if config is not None: + Debug().config = config + + Debug().load(process_name, thread_name) + + +def debug_finalize(): + """ + Finalizes the debug subsystem + """ + return diff --git a/nfv/nfv-common/nfv_common/debug/_debug_thread.py b/nfv/nfv-common/nfv_common/debug/_debug_thread.py new file mode 100755 index 00000000..12c6daec --- /dev/null +++ b/nfv/nfv-common/nfv_common/debug/_debug_thread.py @@ -0,0 +1,113 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +import sys +import logging +import threading +import multiprocessing + +from logging.handlers import SysLogHandler + +from nfv_common.helpers import Singleton + + +class DebugLoggingThreadFormatter(logging.Formatter): + """ + Debug Log Formatter + """ + def format(self, record): + """ + Override the formatter if the record has already been formatted + """ + if hasattr(record, 'formatted_log'): + return record.formatted_log + else: + super(DebugLoggingThreadFormatter, self).format(record) + + +@six.add_metaclass(Singleton) +class DebugLoggingThread(object): + """ + Debug Logging Thread + """ + def __init__(self): + self._handlers = list() + self._log_queue = multiprocessing.Queue() + self._thread = threading.Thread(target=self._receive_logs) + self._thread.daemon = True + self._thread.start() + + def send_log_record(self, log_record): + """ + Send a log record to debug logging thread + """ + self._log_queue.put_nowait(['log-record', log_record]) + + def send_log_config(self, config): + """ + Send log configuration to debug logging thread + """ + self._log_queue.put_nowait(['log-config', config]) + + def _receive_logs(self): + """ + Receive log records sent to the debug logging thread + """ + formatter = DebugLoggingThreadFormatter() + + while True: + try: + log_work = self._log_queue.get() + + if log_work is not None: + action, work = log_work + + if 'log-record' == action: + if self._handlers: + for handler in self._handlers: + if hasattr(handler, 'is_stdout'): + try: + date_time = work.asctime + text = str(work.formatted_log) + text = text.split('[', 1)[-1] + text = text.split(':', 1)[-1] + work.formatted_log = date_time + ' ' + text + except Exception: + pass + + handler.emit(work) + + elif 'log-config' == action: + if self._handlers: + for handler in self._handlers: + handler.close() + + handler_names = work.get('handlers', '') + handler_list = [handler.strip() + for handler in handler_names.split(',')] + + self._handlers[:] = list() + + if 'syslog' in handler_list: + address = work.get('syslog_address', '/dev/log') + facility = work.get('syslog_facility', 'user') + facility = SysLogHandler.facility_names[facility] + syslog_handler = SysLogHandler(address=address, + facility=facility) + syslog_handler.setFormatter(formatter) + self._handlers.append(syslog_handler) + + if 'stdout' in handler_list: + stdout_handler = logging.StreamHandler(sys.stdout) + stdout_handler.setFormatter(formatter) + stdout_handler.is_stdout = True + self._handlers.append(stdout_handler) + + except EOFError: + return + + except (KeyboardInterrupt, SystemExit): + raise diff --git a/nfv/nfv-common/nfv_common/event_log/__init__.py b/nfv/nfv-common/nfv_common/event_log/__init__.py new file mode 100755 index 00000000..db979e93 --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/__init__.py @@ -0,0 +1,16 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from objects.v1 import EVENT_ID +from objects.v1 import EVENT_CONTEXT +from objects.v1 import EVENT_TYPE +from objects.v1 import EVENT_IMPORTANCE +from objects.v1 import EVENT_INITIATED_BY +from objects.v1 import EventLogStateData +from objects.v1 import EventLogThresholdData, EventLogData +from _event_log_module import event_log, event_log_subsystem_sane +from _event_log_module import event_log_initialize, event_log_finalize diff --git a/nfv/nfv-common/nfv_common/event_log/_event_log_handlers.py b/nfv/nfv-common/nfv_common/event_log/_event_log_handlers.py new file mode 100755 index 00000000..94e8c667 --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/_event_log_handlers.py @@ -0,0 +1,73 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +import stevedore + +from nfv_common import debug +from nfv_common.helpers import Singleton + +DLOG = debug.debug_get_logger('nfv_common.event_log.event_log_handlers') + + +@six.add_metaclass(Singleton) +class EventLogHandlers(stevedore.enabled.EnabledExtensionManager): + """ + Event Log Handlers + """ + _version = '1.0.0' + _signature = 'e33d7cf6-f270-4256-893e-16266ee4dd2e' + + def __init__(self, namespace, handler_names): + super(EventLogHandlers, self).__init__(namespace, + EventLogHandlers.valid_handler, + invoke_on_load=True, + invoke_args=(), invoke_kwds={}) + + handler_list = [handler.strip() for handler in handler_names.split(',')] + + self._handlers = {} + for handler in self: + if handler.obj.name in handler_list: + handler_id = handler.obj.provider + ':' + handler.obj.name + if handler_id not in self._handlers: + self._handlers[handler_id] = handler + DLOG.info("Loaded handler %s version %s provided by %s." + % (handler.obj.name, handler.obj.version, + handler.obj.provider)) + + @staticmethod + def valid_handler(handler): + """ + Verify signature of the handler is valid + """ + if EventLogHandlers._signature == handler.obj.signature: + return True + else: + DLOG.info("Handler %s version %s from provider %s has an invalid " + "signature." % (handler.obj.name, handler.obj.version, + handler.obj.provider)) + return False + + def log(self, log_data): + """ + Log a particular event using the handlers + """ + for handler_type, handler in self._handlers.iteritems(): + handler.obj.log(log_data) + + def initialize(self, config_file): + """ + Initialize handlers + """ + for handler_id, handler in self._handlers.iteritems(): + handler.obj.initialize(config_file) + + def finalize(self): + """ + Finalize handlers + """ + for handler_id, handler in self._handlers.iteritems(): + handler.obj.finalize() diff --git a/nfv/nfv-common/nfv_common/event_log/_event_log_module.py b/nfv/nfv-common/nfv_common/event_log/_event_log_module.py new file mode 100755 index 00000000..a7baa334 --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/_event_log_module.py @@ -0,0 +1,37 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +def event_log(log_data): + """ + Log a particular event + """ + from _event_log_thread import EventLogThread + EventLogThread().log(log_data) + + +def event_log_subsystem_sane(): + """ + Returns true if the event log subsystem is healthy + """ + from _event_log_thread import EventLogThread + return 600 >= EventLogThread().stall_elapsed_secs + + +def event_log_initialize(config): + """ + Initialize the event log subsystem + """ + from _event_log_thread import EventLogThread + EventLogThread(config).start() + + +def event_log_finalize(): + """ + Finalize the event log subsystem + """ + from _event_log_thread import EventLogThread + EventLogThread().stop(max_wait_in_seconds=5) diff --git a/nfv/nfv-common/nfv_common/event_log/_event_log_thread.py b/nfv/nfv-common/nfv_common/event_log/_event_log_thread.py new file mode 100755 index 00000000..dc78c07f --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/_event_log_thread.py @@ -0,0 +1,67 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six + +from nfv_common import debug +from nfv_common import thread +from nfv_common.helpers import Singleton + +from _event_log_handlers import EventLogHandlers + +DLOG = debug.debug_get_logger('nfv_common.event_log.event_log_thread') + + +@six.add_metaclass(Singleton) +class EventLogWorker(thread.ThreadWorker): + """ + Event Log Worker + """ + def __init__(self, name, config): + super(EventLogWorker, self).__init__(name) + self._config = config + self._handlers = None + + def initialize(self): + """ + Initialize the Event Log Worker + """ + self._handlers = EventLogHandlers(self._config['namespace'], + self._config['handlers']) + self._handlers.initialize(self._config['config_file']) + + def finalize(self): + """ + Finalize the Event Log Worker + """ + if self._handlers is not None: + self._handlers.finalize() + + def do_work(self, action, work): + """ + Do work given to the Event Log Worker + """ + if EventLogThread.ACTION_LOG_EVENT == action: + self._handlers.log(work['log-data']) + + +@six.add_metaclass(Singleton) +class EventLogThread(thread.Thread): + """ + Event Log Thread + """ + ACTION_LOG_EVENT = "thread-log-event" + + def __init__(self, config=None): + self._worker = EventLogWorker('Event-Log', config) + super(EventLogThread, self).__init__('Event-Log', self._worker) + + def log(self, log_data): + """ + Send log data to the Event Log Thread + """ + work = dict() + work['log-data'] = log_data + self.send_work(EventLogThread.ACTION_LOG_EVENT, work) diff --git a/nfv/nfv-common/nfv_common/event_log/handlers/__init__.py b/nfv/nfv-common/nfv_common/event_log/handlers/__init__.py new file mode 100755 index 00000000..02083bd0 --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/handlers/__init__.py @@ -0,0 +1,5 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# diff --git a/nfv/nfv-common/nfv_common/event_log/handlers/v1/__init__.py b/nfv/nfv-common/nfv_common/event_log/handlers/v1/__init__.py new file mode 100755 index 00000000..29930d0c --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/handlers/v1/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _event_log_handler import EventLogHandler diff --git a/nfv/nfv-common/nfv_common/event_log/handlers/v1/_event_log_handler.py b/nfv/nfv-common/nfv_common/event_log/handlers/v1/_event_log_handler.py new file mode 100755 index 00000000..6fe78272 --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/handlers/v1/_event_log_handler.py @@ -0,0 +1,48 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import abc +import six + + +@six.add_metaclass(abc.ABCMeta) +class EventLogHandler(object): + """ + Abstract Event Log Handler Class Definition + """ + @abc.abstractproperty + def name(self): + """ The name of handler """ + pass + + @abc.abstractproperty + def version(self): + """ The versions of the handler """ + pass + + @abc.abstractproperty + def provider(self): + """ Who created the handler """ + pass + + @abc.abstractproperty + def signature(self): + """ Signature of the handler """ + pass + + @abc.abstractmethod + def log(self, log_data): + """ Log an event via the handler """ + pass + + @abc.abstractmethod + def initialize(self, config_file): + """ Initialize the handler """ + pass + + @abc.abstractmethod + def finalize(self): + """ Finalize the handler """ + pass diff --git a/nfv/nfv-common/nfv_common/event_log/objects/__init__.py b/nfv/nfv-common/nfv_common/event_log/objects/__init__.py new file mode 100755 index 00000000..90b33192 --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/objects/__init__.py @@ -0,0 +1,8 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +import v1 diff --git a/nfv/nfv-common/nfv_common/event_log/objects/v1/__init__.py b/nfv/nfv-common/nfv_common/event_log/objects/v1/__init__.py new file mode 100755 index 00000000..a8ad418a --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/objects/v1/__init__.py @@ -0,0 +1,12 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _event_log_defs import EVENT_ID, EVENT_CONTEXT, EVENT_TYPE, EVENT_IMPORTANCE +from _event_log_defs import EVENT_INITIATED_BY +from _event_log_data import EventLogStateData +from _event_log_data import EventLogThresholdData +from _event_log_data import EventLogData diff --git a/nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_data.py b/nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_data.py new file mode 100755 index 00000000..480bcc52 --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_data.py @@ -0,0 +1,54 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from datetime import datetime + + +class EventLogStateData(object): + """ + Event Log State Data + """ + def __init__(self, state): + self.state = state + + +class EventLogThresholdData(object): + """ + Event Log Threshold Data + """ + def __init__(self, threshold_value, observed_value): + self.threshold_value = threshold_value + self.observed_value = observed_value + + +class EventLogData(object): + """ + Event Log Data + """ + _id = 1 + + def __init__(self, event_id, event_type, event_context, entity_type, entity, + reason_text, importance, additional_text="", state_data=None, + threshold_data=None, suppression_allowed=True): + self.log_id = EventLogData._id + self.event_id = event_id + self.event_type = event_type + self.event_context = event_context + self.entity_type = entity_type + self.entity = entity + self.reason_text = reason_text + self.importance = importance + self.additional_text = additional_text + self.state_data = state_data + self.threshold_data = threshold_data + self.suppression_allowed = suppression_allowed + self.timestamp = datetime.utcnow() + EventLogData._id += 1 + + def as_dict(self): + """ + Render this object as a dictionary of its fields + """ + return dict.copy(self.__dict__) diff --git a/nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_defs.py b/nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_defs.py new file mode 100755 index 00000000..4e40146f --- /dev/null +++ b/nfv/nfv-common/nfv_common/event_log/objects/v1/_event_log_defs.py @@ -0,0 +1,212 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +import six + +from nfv_common.helpers import Constants, Constant, Singleton + + +@six.add_metaclass(Singleton) +class _EventId(Constants): + """ + Event Type Constants + """ + UNKNOWN = Constant('unknown') + MULTI_NODE_RECOVERY_MODE_ENTER = Constant('multi-node-recovery-enter') + MULTI_NODE_RECOVERY_MODE_EXIT = Constant('multi-node-recovery-exit') + HOST_SERVICES_ENABLED = Constant('host-services-enabled') + HOST_SERVICES_DISABLED = Constant('host-services-disabled') + HOST_SERVICES_FAILED = Constant('host-services-failed') + HYPERVISOR_STATE_CHANGE = Constant('hypervisor-state-change') + INSTANCE_RENAMED = Constant('instance-renamed') + INSTANCE_ENABLED = Constant('instance-enabled') + INSTANCE_FAILED = Constant('instance-failed') + INSTANCE_SCHEDULING_FAILED = Constant('instance-scheduling-failed') + INSTANCE_CREATE_BEGIN = Constant('instance-create-begin') + INSTANCE_CREATING = Constant('instance-creating') + INSTANCE_CREATE_REJECTED = Constant('instance-create-rejected') + INSTANCE_CREATE_CANCELLED = Constant('instance-create-cancelled') + INSTANCE_CREATE_FAILED = Constant('instance-create-failed') + INSTANCE_CREATED = Constant('instance-created') + INSTANCE_DELETE_BEGIN = Constant('instance-delete-begin') + INSTANCE_DELETING = Constant('instance-deleting') + INSTANCE_DELETE_REJECTED = Constant('instance-delete-rejected') + INSTANCE_DELETE_CANCELLED = Constant('instance-delete-cancelled') + INSTANCE_DELETE_FAILED = Constant('instance-delete-failed') + INSTANCE_DELETED = Constant('instance-deleted') + INSTANCE_PAUSE_BEGIN = Constant('instance-pause-begin') + INSTANCE_PAUSING = Constant('instance-pausing') + INSTANCE_PAUSE_REJECTED = Constant('instance-pause-rejected') + INSTANCE_PAUSE_CANCELLED = Constant('instance-pause-cancelled') + INSTANCE_PAUSE_FAILED = Constant('instance-pause-failed') + INSTANCE_PAUSED = Constant('instance-paused') + INSTANCE_UNPAUSE_BEGIN = Constant('instance-unpause-begin') + INSTANCE_UNPAUSING = Constant('instance-unpausing') + INSTANCE_UNPAUSE_REJECTED = Constant('instance-unpause-rejected') + INSTANCE_UNPAUSE_CANCELLED = Constant('instance-unpause-cancelled') + INSTANCE_UNPAUSE_FAILED = Constant('instance-unpause-failed') + INSTANCE_UNPAUSED = Constant('instance-unpaused') + INSTANCE_SUSPEND_BEGIN = Constant('instance-suspend-begin') + INSTANCE_SUSPENDING = Constant('instance-suspending') + INSTANCE_SUSPEND_REJECTED = Constant('instance-suspend-rejected') + INSTANCE_SUSPEND_CANCELLED = Constant('instance-suspend-cancelled') + INSTANCE_SUSPEND_FAILED = Constant('instance-suspend-failed') + INSTANCE_SUSPENDED = Constant('instance-suspended') + INSTANCE_RESUME_BEGIN = Constant('instance-resume-begin') + INSTANCE_RESUMING = Constant('instance-resuming') + INSTANCE_RESUME_REJECTED = Constant('instance-resume-rejected') + INSTANCE_RESUME_CANCELLED = Constant('instance-resume-cancelled') + INSTANCE_RESUME_FAILED = Constant('instance-resume-failed') + INSTANCE_RESUMED = Constant('instance-resumed') + INSTANCE_START_BEGIN = Constant('instance-start-begin') + INSTANCE_STARTING = Constant('instance-starting') + INSTANCE_START_REJECTED = Constant('instance-start-rejected') + INSTANCE_START_CANCELLED = Constant('instance-start-cancelled') + INSTANCE_START_FAILED = Constant('instance-start-failed') + INSTANCE_STARTED = Constant('instance-started') + INSTANCE_STOP_BEGIN = Constant('instance-stop-begin') + INSTANCE_STOPPING = Constant('instance-stopping') + INSTANCE_STOP_REJECTED = Constant('instance-stop-rejected') + INSTANCE_STOP_CANCELLED = Constant('instance-stop-cancelled') + INSTANCE_STOP_FAILED = Constant('instance-stop-failed') + INSTANCE_STOPPED = Constant('instance-stopped') + INSTANCE_LIVE_MIGRATE_BEGIN = Constant('instance-live-migrate-begin') + INSTANCE_LIVE_MIGRATING = Constant('instance-live-migrating') + INSTANCE_LIVE_MIGRATE_REJECTED = Constant('instance-live-migrate-rejected') + INSTANCE_LIVE_MIGRATE_CANCELLED = Constant('instance-live-migrate-cancelled') + INSTANCE_LIVE_MIGRATE_FAILED = Constant('instance-live-migrate-failed') + INSTANCE_LIVE_MIGRATED = Constant('instance-live-migrated') + INSTANCE_COLD_MIGRATE_BEGIN = Constant('instance-cold-migrate-begin') + INSTANCE_COLD_MIGRATING = Constant('instance-cold-migrating') + INSTANCE_COLD_MIGRATE_REJECTED = Constant('instance-cold-migrate-rejected') + INSTANCE_COLD_MIGRATE_CANCELLED = Constant('instance-cold-migrate-cancelled') + INSTANCE_COLD_MIGRATE_FAILED = Constant('instance-cold-migrate-failed') + INSTANCE_COLD_MIGRATED = Constant('instance-cold-migrated') + INSTANCE_COLD_MIGRATE_CONFIRM_BEGIN = Constant('instance-cold-migrate-confirm-begin') + INSTANCE_COLD_MIGRATE_CONFIRMING = Constant('instance-cold-migrate-confirming') + INSTANCE_COLD_MIGRATE_CONFIRM_REJECTED = Constant('instance-cold-migrate-confirm-rejected') + INSTANCE_COLD_MIGRATE_CONFIRM_CANCELLED = Constant('instance-cold-migrate-confirm-cancelled') + INSTANCE_COLD_MIGRATE_CONFIRM_FAILED = Constant('instance-cold-migrate-confirm-failed') + INSTANCE_COLD_MIGRATE_CONFIRMED = Constant('instance-cold-migrate-confirmed') + INSTANCE_COLD_MIGRATE_REVERT_BEGIN = Constant('instance-cold-migrate-revert-begin') + INSTANCE_COLD_MIGRATE_REVERTING = Constant('instance-cold-migrate-reverting') + INSTANCE_COLD_MIGRATE_REVERT_REJECTED = Constant('instance-cold-migrate-revert-rejected') + INSTANCE_COLD_MIGRATE_REVERT_CANCELLED = Constant('instance-cold-migrate-revert-cancelled') + INSTANCE_COLD_MIGRATE_REVERT_FAILED = Constant('instance-cold-migrate-revert-failed') + INSTANCE_COLD_MIGRATE_REVERTED = Constant('instance-cold-migrate-reverted') + INSTANCE_EVACUATE_BEGIN = Constant('instance-evacuate-begin') + INSTANCE_EVACUATING = Constant('instance-evacuating') + INSTANCE_EVACUATE_REJECTED = Constant('instance-evacuate-rejected') + INSTANCE_EVACUATE_CANCELLED = Constant('instance-evacuate-cancelled') + INSTANCE_EVACUATE_FAILED = Constant('instance-evacuate-failed') + INSTANCE_EVACUATED = Constant('instance-evacuated') + INSTANCE_REBOOT_BEGIN = Constant('instance-reboot-begin') + INSTANCE_REBOOTING = Constant('instance-rebooting') + INSTANCE_REBOOT_REJECTED = Constant('instance-reboot-rejected') + INSTANCE_REBOOT_CANCELLED = Constant('instance-reboot-cancelled') + INSTANCE_REBOOT_FAILED = Constant('instance-reboot-failed') + INSTANCE_REBOOTED = Constant('instance-rebooted') + INSTANCE_REBUILD_BEGIN = Constant('instance-rebuild-begin') + INSTANCE_REBUILDING = Constant('instance-rebuilding') + INSTANCE_REBUILD_REJECTED = Constant('instance-rebuild-rejected') + INSTANCE_REBUILD_CANCELLED = Constant('instance-rebuild-cancelled') + INSTANCE_REBUILD_FAILED = Constant('instance-rebuild-failed') + INSTANCE_REBUILT = Constant('instance-rebuilt') + INSTANCE_RESIZE_BEGIN = Constant('instance-resize-begin') + INSTANCE_RESIZING = Constant('instance-resizing') + INSTANCE_RESIZE_REJECTED = Constant('instance-resize-rejected') + INSTANCE_RESIZE_CANCELLED = Constant('instance-resize-cancelled') + INSTANCE_RESIZE_FAILED = Constant('instance-resize-failed') + INSTANCE_RESIZED = Constant('instance-resized') + INSTANCE_RESIZE_CONFIRM_BEGIN = Constant('instance-resize-confirm-begin') + INSTANCE_RESIZE_CONFIRMING = Constant('instance-resize-confirming') + INSTANCE_RESIZE_CONFIRM_REJECTED = Constant('instance-resize-confirm-rejected') + INSTANCE_RESIZE_CONFIRM_CANCELLED = Constant('instance-resize-confirm-cancelled') + INSTANCE_RESIZE_CONFIRM_FAILED = Constant('instance-resize-confirm-failed') + INSTANCE_RESIZE_CONFIRMED = Constant('instance-resize-confirmed') + INSTANCE_RESIZE_REVERT_BEGIN = Constant('instance-resize-revert-begin') + INSTANCE_RESIZE_REVERTING = Constant('instance-resize-reverting') + INSTANCE_RESIZE_REVERT_REJECTED = Constant('instance-resize-revert-rejected') + INSTANCE_RESIZE_REVERT_CANCELLED = Constant('instance-resize-revert-cancelled') + INSTANCE_RESIZE_REVERT_FAILED = Constant('instance-resize-revert-failed') + INSTANCE_RESIZE_REVERTED = Constant('instance-resize-reverted') + INSTANCE_GUEST_HEARTBEAT_ESTABLISHED = Constant('instance-guest-heartbeat-established') + INSTANCE_GUEST_HEARTBEAT_DISCONNECTED = Constant('instance-guest-heartbeat-disconnected') + INSTANCE_GUEST_HEARTBEAT_FAILED = Constant('instance-guest-heartbeat-failed') + INSTANCE_GUEST_HEALTH_CHECK_FAILED = Constant('instance-guest-health_check-failed') + SW_PATCH_AUTO_APPLY_START = Constant('sw-patch-auto-apply-started') + SW_PATCH_AUTO_APPLY_INPROGRESS = Constant('sw-patch-auto-apply-inprogress') + SW_PATCH_AUTO_APPLY_REJECTED = Constant('sw-patch-auto-apply-rejected') + SW_PATCH_AUTO_APPLY_CANCELLED = Constant('sw-patch-auto-apply-cancelled') + SW_PATCH_AUTO_APPLY_FAILED = Constant('sw-patch-auto-apply-failed') + SW_PATCH_AUTO_APPLY_COMPLETED = Constant('sw-patch-auto-apply-completed') + SW_PATCH_AUTO_APPLY_ABORT = Constant('sw-patch-auto-apply-abort') + SW_PATCH_AUTO_APPLY_ABORTING = Constant('sw-patch-auto-apply-aborting') + SW_PATCH_AUTO_APPLY_ABORT_REJECTED = Constant('sw-patch-auto-apply-abort-rejected') + SW_PATCH_AUTO_APPLY_ABORT_FAILED = Constant('sw-patch-auto-apply-abort-failed') + SW_PATCH_AUTO_APPLY_ABORTED = Constant('sw-patch-auto-apply-aborted') + SW_UPGRADE_AUTO_APPLY_START = Constant('sw-upgrade-auto-apply-started') + SW_UPGRADE_AUTO_APPLY_INPROGRESS = Constant('sw-upgrade-auto-apply-inprogress') + SW_UPGRADE_AUTO_APPLY_REJECTED = Constant('sw-upgrade-auto-apply-rejected') + SW_UPGRADE_AUTO_APPLY_CANCELLED = Constant('sw-upgrade-auto-apply-cancelled') + SW_UPGRADE_AUTO_APPLY_FAILED = Constant('sw-upgrade-auto-apply-failed') + SW_UPGRADE_AUTO_APPLY_COMPLETED = Constant('sw-upgrade-auto-apply-completed') + SW_UPGRADE_AUTO_APPLY_ABORT = Constant('sw-upgrade-auto-apply-abort') + SW_UPGRADE_AUTO_APPLY_ABORTING = Constant('sw-upgrade-auto-apply-aborting') + SW_UPGRADE_AUTO_APPLY_ABORT_REJECTED = Constant('sw-upgrade-auto-apply-abort-rejected') + SW_UPGRADE_AUTO_APPLY_ABORT_FAILED = Constant('sw-upgrade-auto-apply-abort-failed') + SW_UPGRADE_AUTO_APPLY_ABORTED = Constant('sw-upgrade-auto-apply-aborted') + + +@six.add_metaclass(Singleton) +class _EventType(Constants): + """ + Event Type Constants + """ + UNKNOWN = Constant('unknown') + STATE_EVENT = Constant('state-event') + ACTION_EVENT = Constant('action-event') + GUEST_HEARTBEAT_EVENT = Constant('guest-heartbeat-event') + PROCESSING_ERROR = Constant('processing-error') + + +@six.add_metaclass(Singleton) +class _EventContext(Constants): + """ + Event Context Constants + """ + ADMIN = Constant('admin') + TENANT = Constant('tenant') + + +@six.add_metaclass(Singleton) +class _EventImportance(Constants): + """ + Event Importance Constants + """ + UNKNOWN = Constant('unknown') + HIGH = Constant('high') + MEDIUM = Constant('medium') + LOW = Constant('low') + + +@six.add_metaclass(Singleton) +class _EventInitiatedBy(Constants): + """ + Initiated-By Constants + """ + UNKNOWN = Constant('unknown') + TENANT = Constant('tenant') + INSTANCE = Constant('instance') + INSTANCE_DIRECTOR = Constant('instance-director') + +# Constant Instantiation +EVENT_ID = _EventId() +EVENT_TYPE = _EventType() +EVENT_CONTEXT = _EventContext() +EVENT_IMPORTANCE = _EventImportance() +EVENT_INITIATED_BY = _EventInitiatedBy() diff --git a/nfv/nfv-common/nfv_common/exceptions.py b/nfv/nfv-common/nfv_common/exceptions.py new file mode 100755 index 00000000..14681c09 --- /dev/null +++ b/nfv/nfv-common/nfv_common/exceptions.py @@ -0,0 +1,13 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + + +class PickleableException(Exception): + """ + Pickleable Exception + Used to mark custom exception classes that can be pickled. + """ + pass diff --git a/nfv/nfv-common/nfv_common/forensic/__init__.py b/nfv/nfv-common/nfv_common/forensic/__init__.py new file mode 100755 index 00000000..2b87fd9d --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/__init__.py @@ -0,0 +1,25 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _evidence import evidence_from_files +from _analysis import analysis_instance_start_success +from _analysis import analysis_instance_stop_success +from _analysis import analysis_instance_pause_success +from _analysis import analysis_instance_unpause_success +from _analysis import analysis_instance_suspend_success +from _analysis import analysis_instance_resume_success +from _analysis import analysis_instance_reboot_success +from _analysis import analysis_instance_rebuild_success +from _analysis import analysis_instance_live_migrate_success +from _analysis import analysis_instance_cold_migrate_success +from _analysis import analysis_instance_cold_migrate_confirm_success +from _analysis import analysis_instance_cold_migrate_revert_success +from _analysis import analysis_instance_resize_success +from _analysis import analysis_instance_resize_confirm_success +from _analysis import analysis_instance_resize_revert_success +from _analysis import analysis_stdout +from _forensic_module import forensic_initialize, forensic_finalize diff --git a/nfv/nfv-common/nfv_common/forensic/_analysis.py b/nfv/nfv-common/nfv_common/forensic/_analysis.py new file mode 100755 index 00000000..309126a1 --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/_analysis.py @@ -0,0 +1,766 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +from _defs import NFV_VIM + +DLOG = debug.debug_get_logger('forensic-analysis') + + +def _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, action_types=None, callback=None): + """ + Analyze records and determine if instance success + """ + def default_callback(idx, record): + return True + + if action_types is None: + action_types = list() + + if callback is None: + callback = default_callback + + DLOG.verbose("%s" % '-' * 80) + + idx = 0 + + for record in records: + record_data = record['data'] + + if record_data['type'] == expected_records[idx]: + if NFV_VIM.INSTANCE_NFVI_ACTION_START == record_data['type']: + if record_data['instance_uuid'] == instance_uuid: + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] \ + in [NFV_VIM.INSTANCE_START_STATE, + NFV_VIM.INSTANCE_START_STATE_COMPLETED, + NFV_VIM.INSTANCE_STOP_STATE, + NFV_VIM.INSTANCE_STOP_STATE_COMPLETED, + NFV_VIM.INSTANCE_PAUSE_STATE, + NFV_VIM.INSTANCE_PAUSE_STATE_COMPLETED, + NFV_VIM.INSTANCE_UNPAUSE_STATE, + NFV_VIM.INSTANCE_UNPAUSE_STATE_COMPLETED, + NFV_VIM.INSTANCE_SUSPEND_STATE, + NFV_VIM.INSTANCE_SUSPEND_STATE_COMPLETED, + NFV_VIM.INSTANCE_RESUME_STATE, + NFV_VIM.INSTANCE_RESUME_STATE_COMPLETED, + NFV_VIM.INSTANCE_REBOOT_STATE, + NFV_VIM.INSTANCE_REBOOT_STATE_COMPLETED, + NFV_VIM.INSTANCE_REBUILD_STATE, + NFV_VIM.INSTANCE_REBUILD_STATE_COMPLETED, + NFV_VIM.INSTANCE_LIVE_MIGRATE_STATE, + NFV_VIM.INSTANCE_LIVE_MIGRATE_FINISH_STATE, + NFV_VIM.INSTANCE_COLD_MIGRATE_STATE, + NFV_VIM.INSTANCE_COLD_MIGRATE_CONFIRM_STATE, + NFV_VIM.INSTANCE_COLD_MIGRATE_REVERT_STATE, + NFV_VIM.INSTANCE_RESIZE_STATE, + NFV_VIM.INSTANCE_RESIZE_CONFIRM_STATE, + NFV_VIM.INSTANCE_RESIZE_REVERT_STATE, + NFV_VIM.INSTANCE_INITIAL_STATE]: + if record_data['instance_name'] == instance_name: + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] \ + in [NFV_VIM.INSTANCE_START_CALLBACK, + NFV_VIM.INSTANCE_STOP_CALLBACK, + NFV_VIM.INSTANCE_PAUSE_CALLBACK, + NFV_VIM.INSTANCE_UNPAUSE_CALLBACK, + NFV_VIM.INSTANCE_SUSPEND_CALLBACK, + NFV_VIM.INSTANCE_RESUME_CALLBACK, + NFV_VIM.INSTANCE_REBOOT_CALLBACK, + NFV_VIM.INSTANCE_REBUILD_CALLBACK, + NFV_VIM.INSTANCE_LIVE_MIGRATE_CALLBACK, + NFV_VIM.INSTANCE_COLD_MIGRATE_CALLBACK, + NFV_VIM.INSTANCE_COLD_MIGRATE_CONFIRM_CALLBACK, + NFV_VIM.INSTANCE_COLD_MIGRATE_REVERT_CALLBACK, + NFV_VIM.INSTANCE_RESIZE_CALLBACK, + NFV_VIM.INSTANCE_RESIZE_CONFIRM_CALLBACK, + NFV_VIM.INSTANCE_RESIZE_REVERT_CALLBACK]: + if record_data['instance_name'] == instance_name: + if "True" == record_data['completed']: + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] == NFV_VIM.INSTANCE_GUEST_SERVICES_NOTIFY: + if record_data['instance_uuid'] == instance_uuid: + if record_data['service_name'] == 'heartbeat': + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] == NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE: + if record_data['instance_name'] == instance_name: + if record_data['service_name'] == 'heartbeat': + if record_data['service_admin_state'] == 'unlocked': + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] \ + == NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK: + if record_data['instance_name'] == instance_name: + if "True" == record_data['completed']: + if record_data['service_name'] == 'heartbeat': + if record_data['service_admin_state'] == 'unlocked': + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] == NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE: + if record_data['instance_name'] == instance_name: + if record_data['service_name'] == 'heartbeat': + if record_data['service_admin_state'] == 'locked': + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] \ + == NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK: + if record_data['instance_name'] == instance_name: + if "True" == record_data['completed']: + if record_data['service_name'] == 'heartbeat': + if record_data['service_admin_state'] == 'locked': + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] == NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT: + if record_data['instance_name'] == instance_name: + if record_data['vote_result'] == 'allow': + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] \ + in [NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE, + NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY, + NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY]: + if record_data['instance_name'] == instance_name: + if record_data['action_type'] in action_types: + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] \ + in [NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK, + NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK, + NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK]: + if record_data['instance_name'] == instance_name: + if record_data['action_type'] in action_types: + if "True" == record_data['completed']: + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + elif record_data['type'] \ + == NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT: + if record_data['instance_name'] == instance_name: + if callback(idx, record): + DLOG.verbose("accept: %s" % record_data['type']) + idx += 1 + + if len(expected_records) == idx: + return True, 'analysis successful' + + if len(expected_records) > idx: + data_type = expected_records[idx] + return False, "record %s was not found" % data_type + + return False, 'analysis unsuccessful' + + +def analysis_instance_start_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance is started + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_START_STATE), + (always, NFV_VIM.INSTANCE_START_CALLBACK), + (always, NFV_VIM.INSTANCE_START_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records) + + +def analysis_instance_stop_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance is stopped + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_STOP_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK), + (always, NFV_VIM.INSTANCE_STOP_CALLBACK), + (always, NFV_VIM.INSTANCE_STOP_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, action_types=['stop']) + + +def analysis_instance_pause_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance is paused + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_PAUSE_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK), + (always, NFV_VIM.INSTANCE_PAUSE_CALLBACK), + (always, NFV_VIM.INSTANCE_PAUSE_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, action_types=['pause']) + + +def analysis_instance_unpause_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance is unpaused + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_UNPAUSE_STATE), + (always, NFV_VIM.INSTANCE_UNPAUSE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (always, NFV_VIM.INSTANCE_UNPAUSE_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, action_types=['unpause']) + + +def analysis_instance_suspend_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance is suspended + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_SUSPEND_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK), + (always, NFV_VIM.INSTANCE_SUSPEND_CALLBACK), + (always, NFV_VIM.INSTANCE_SUSPEND_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, action_types=['suspend']) + + +def analysis_instance_resume_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance is resumed + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_RESUME_STATE), + (always, NFV_VIM.INSTANCE_RESUME_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (always, NFV_VIM.INSTANCE_RESUME_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, action_types=['resume']) + + +def analysis_instance_reboot_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance rebooted + """ + def callback(idx, record): + record_data = record['data'] + if record_data['type'] == NFV_VIM.INSTANCE_GUEST_SERVICES_NOTIFY: + if record_data['restart_timeout'] == 0: + return False + return True + + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_REBOOT_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK), + (always, NFV_VIM.INSTANCE_REBOOT_CALLBACK), + (always, NFV_VIM.INSTANCE_REBOOT_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_NOTIFY)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, action_types=['reboot'], + callback=callback) + + +def analysis_instance_rebuild_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance was rebuilt + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_REBUILD_STATE), + (always, NFV_VIM.INSTANCE_REBUILD_CALLBACK), + (always, NFV_VIM.INSTANCE_REBUILD_STATE_COMPLETED), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records) + + +def analysis_instance_live_migrate_success(instance_uuid, instance_name, + records, action=False, + guest_hb=False): + """ + Analyze records and determine if instance live-migrated + """ + always = True + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_LIVE_MIGRATE_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK), + (always, NFV_VIM.INSTANCE_LIVE_MIGRATE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_LIVE_MIGRATE_FINISH_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, + action_types=['live-migrate', + 'live_migrate', + 'live_migrate_begin', + 'live_migrate_end']) + + +def analysis_instance_cold_migrate_success(instance_uuid, instance_name, + records, action=False, + guest_hb=False): + """ + Analyze records and determine if instance cold-migrated + """ + always = True + guest_hb_only = not action and guest_hb + + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (always, NFV_VIM.INSTANCE_COLD_MIGRATE_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK), + (always, NFV_VIM.INSTANCE_COLD_MIGRATE_CALLBACK), + (not action, NFV_VIM.INSTANCE_COLD_MIGRATE_CONFIRM_STATE), + (not action, NFV_VIM.INSTANCE_COLD_MIGRATE_CONFIRM_CALLBACK), + (guest_hb_only, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb_only, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb_only, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb_only, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb_only, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (always, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, + action_types=['cold-migrate', + 'cold_migrate', + 'cold_migrate_begin', + 'cold_migrate_end']) + + +def analysis_instance_cold_migrate_confirm_success(instance_uuid, instance_name, + records, action=False, + guest_hb=False): + """ + Analyze records and determine if instance cold-migrate confirmed + """ + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (action, NFV_VIM.INSTANCE_COLD_MIGRATE_CONFIRM_STATE), + (action, NFV_VIM.INSTANCE_COLD_MIGRATE_CONFIRM_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (action, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, + action_types=['cold-migrate', + 'cold_migrate', + 'cold_migrate_begin', + 'cold_migrate_end']) + + +def analysis_instance_cold_migrate_revert_success(instance_uuid, instance_name, + records, action=False, + guest_hb=False): + """ + Analyze records and determine if instance cold-migrate reverted + """ + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (action, NFV_VIM.INSTANCE_COLD_MIGRATE_REVERT_STATE), + (action, NFV_VIM.INSTANCE_COLD_MIGRATE_REVERT_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (action, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, + action_types=['cold-migrate', + 'cold_migrate', + 'cold_migrate_begin', + 'cold_migrate_end']) + + +def analysis_instance_resize_success(instance_uuid, instance_name, records, + action=False, guest_hb=False): + """ + Analyze records and determine if instance resized + """ + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (action, NFV_VIM.INSTANCE_RESIZE_STATE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_VOTE_RESULT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK), + (action, NFV_VIM.INSTANCE_RESIZE_CALLBACK), + (action, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, + action_types=['resize', 'resize_begin', + 'resize_end']) + + +def analysis_instance_resize_confirm_success(instance_uuid, instance_name, + records, action=False, + guest_hb=False): + """ + Analyze records and determine if instance resize confirmed + """ + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (action, NFV_VIM.INSTANCE_RESIZE_CONFIRM_STATE), + (action, NFV_VIM.INSTANCE_RESIZE_CONFIRM_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (action, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, + action_types=['confirm-resize', 'resize', + 'resize_begin', 'resize_end']) + + +def analysis_instance_resize_revert_success(instance_uuid, instance_name, + records, action=False, + guest_hb=False): + """ + Analyze records and determine if instance resize reverted + """ + possible_records \ + = [(action, NFV_VIM.INSTANCE_NFVI_ACTION_START), + (action, NFV_VIM.INSTANCE_RESIZE_REVERT_STATE), + (action, NFV_VIM.INSTANCE_RESIZE_REVERT_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY), + (guest_hb, NFV_VIM.INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK), + (action, NFV_VIM.INSTANCE_INITIAL_STATE)] + + expected_records = list() + for allowed, data_type in possible_records: + if allowed: + expected_records.append(data_type) + + return _analysis_instances_success(instance_uuid, instance_name, records, + expected_records, + action_types=['revert-resize', 'resize', + 'resize_begin', 'resize_end']) + + +def analysis_stdout(records): + """ + Analyze records and display results to stdout + """ + def timestamp_str(timestamp_data): + return timestamp_data.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + + hosts = dict() + instances = dict() + + hosts_state_change = dict() + instances_state_change = dict() + + print("\nAnalysis:") + + for idx, record in enumerate(records): + data = record['data'] + if data['type'] in [NFV_VIM.HOST_CONFIGURE_STATE, + NFV_VIM.HOST_ENABLING_STATE, + NFV_VIM.HOST_ENABLED_STATE, + NFV_VIM.HOST_DISABLING_STATE, + NFV_VIM.HOST_DISABLED_STATE, + NFV_VIM.HOST_DISABLING_FAILED_STATE, + NFV_VIM.HOST_DELETING_STATE, + NFV_VIM.HOST_DELETED_STATE]: + + if data['host_name'] in hosts: + prev_record = hosts[data['host_name']] + elapsed_time = record['timestamp'] - prev_record['timestamp'] + print(" %s (%s=%s) %s" + % (timestamp_str(record['timestamp']), u"\u0394", + elapsed_time, data['log'])) + else: + print(" %s %s" % (timestamp_str(record['timestamp']), + data['log'])) + + hosts[data['host_name']] = record + + elif data['type'] in [NFV_VIM.INSTANCE_DIRECTOR_EVACUATE_FAILED, + NFV_VIM.INSTANCE_DIRECTOR_EVACUATE_TIMEOUT, + NFV_VIM.INSTANCE_DIRECTOR_MIGRATE_FAILED, + NFV_VIM.INSTANCE_DIRECTOR_MIGRATE_TIMEOUT]: + print(" ** %s %s" % (timestamp_str(record['timestamp']), + data['log'])) + + elif data['type'] in [NFV_VIM.INSTANCE_DIRECTOR_EVACUATE_SUCCESS, + NFV_VIM.INSTANCE_DIRECTOR_MIGRATE_SUCCESS]: + print(" %s %s" % (timestamp_str(record['timestamp']), + data['log'])) + + elif data['type'] in [NFV_VIM.INSTANCE_LIVE_MIGRATE_STATE, + NFV_VIM.INSTANCE_LIVE_MIGRATE_FINISH_STATE, + NFV_VIM.INSTANCE_COLD_MIGRATE_STATE, + NFV_VIM.INSTANCE_COLD_MIGRATE_CONFIRM_STATE, + NFV_VIM.INSTANCE_COLD_MIGRATE_REVERT_STATE, + NFV_VIM.INSTANCE_EVACUATE_STATE, + NFV_VIM.INSTANCE_START_STATE, + NFV_VIM.INSTANCE_STOP_STATE, + NFV_VIM.INSTANCE_PAUSE_STATE, + NFV_VIM.INSTANCE_UNPAUSE_STATE, + NFV_VIM.INSTANCE_SUSPEND_STATE, + NFV_VIM.INSTANCE_RESUME_STATE, + NFV_VIM.INSTANCE_REBOOT_STATE, + NFV_VIM.INSTANCE_REBUILD_STATE, + NFV_VIM.INSTANCE_FAIL_STATE, + NFV_VIM.INSTANCE_DELETE_STATE, + NFV_VIM.INSTANCE_RESIZE_STATE, + NFV_VIM.INSTANCE_RESIZE_CONFIRM_STATE, + NFV_VIM.INSTANCE_RESIZE_REVERT_STATE, + NFV_VIM.INSTANCE_GUEST_SERVICES_CREATE_STATE, + NFV_VIM.INSTANCE_GUEST_SERVICES_DELETE_STATE, + NFV_VIM.INSTANCE_GUEST_SERVICES_ENABLE_STATE, + NFV_VIM.INSTANCE_GUEST_SERVICES_DISABLE_STATE, + NFV_VIM.INSTANCE_GUEST_SERVICES_SET_STATE]: + instances[data['instance_name']] = record + + elif data['type'] in [NFV_VIM.INSTANCE_INITIAL_STATE]: + if data['instance_name'] in instances: + prev_record = instances[data['instance_name']] + elapsed_time = record['timestamp'] - prev_record['timestamp'] + + print(" %s (%s=%s) %s" + % (timestamp_str(prev_record['timestamp']), u"\u0394", + elapsed_time, prev_record['data']['log'])) + + elif data['type'] in [NFV_VIM.INSTANCE_NFVI_ACTION_START]: + print(" %s %s" % (timestamp_str(record['timestamp']), + data['log'])) + + elif data['type'] == NFV_VIM.HOST_NFVI_STATE_CHANGE: + hosts_state_change[data['host_name']] = record + + elif data['type'] == NFV_VIM.INSTANCE_NFVI_STATE_CHANGE: + instances_state_change[data['instance_name']] = record + + print("\nHost-States (last-seen):") + hosts_state = sorted(hosts_state_change.values(), + key=lambda k: k['timestamp']) + + for idx, host in enumerate(hosts_state): + timestamp = host['timestamp'] + host_data = host['data'] + print("%4i. %s %16s: %s %s %s" % ( + idx, timestamp_str(timestamp), + host_data['host_name'], + host_data['nfvi_admin_state'], + host_data['nfvi_oper_state'], + host_data['nfvi_avail_state'])) + + print("\nInstance-States (last-seen):") + instances_state = sorted(instances_state_change.values(), + key=lambda k: k['timestamp']) + + for idx, instance in enumerate(instances_state): + timestamp = instance['timestamp'] + instance_data = instance['data'] + print("%4i. %s %32s (%s): %s %s %s (%s %s %s) on host %s" % ( + idx, timestamp_str(timestamp), + instance_data['instance_name'], + instance_data['instance_uuid'], + instance_data['instance_admin_state'], + instance_data['instance_oper_state'], + instance_data['instance_avail_status'], + instance_data['nfvi_vm_state'], + instance_data['nfvi_task_state'], + instance_data['nfvi_power_state'], + instance_data['host_name'])) diff --git a/nfv/nfv-common/nfv_common/forensic/_defs.py b/nfv/nfv-common/nfv_common/forensic/_defs.py new file mode 100755 index 00000000..3415b3c7 --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/_defs.py @@ -0,0 +1,125 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# + +class _NfvVimRecordType(object): + """ + NFV-VIM Record Type Constants + """ + HOST_NFVI_STATE_CHANGE = 'nfv_vim_host_nfvi_state_change' + HOST_CONFIGURE_STATE = 'nfv_vim_host_configure_state' + HOST_ENABLING_STATE = 'nfv_vim_host_enabling_state' + HOST_ENABLED_STATE = 'nfv_vim_host_enabled_state' + HOST_DISABLING_STATE = 'nfv_vim_host_disabling_state' + HOST_DISABLED_STATE = 'nfv_vim_host_disabled_state' + HOST_DISABLING_FAILED_STATE = 'nfv_vim_host_disabling_failed_state' + HOST_DELETING_STATE = 'nfv_vim_host_deleting_state' + HOST_DELETED_STATE = 'nfv_vim_host_deleted_state' + INSTANCE_DIRECTOR_EVACUATE_FAILED = 'nfv_vim_director_evacuate_failed' + INSTANCE_DIRECTOR_EVACUATE_TIMEOUT = 'nfv_vim_director_evacuate_timeout' + INSTANCE_DIRECTOR_EVACUATE_SUCCESS = 'nfv_vim_director_evacuate_success' + INSTANCE_DIRECTOR_MIGRATE_FAILED = 'nfv_vim_director_migrate_failed' + INSTANCE_DIRECTOR_MIGRATE_TIMEOUT = 'nfv_vim_director_migrate_timeout' + INSTANCE_DIRECTOR_MIGRATE_SUCCESS = 'nfv_vim_director_migrate_success' + INSTANCE_INITIAL_STATE = 'nfv_vim_instance_initial_state' + INSTANCE_LIVE_MIGRATE_STATE = 'nfv_vim_instance_live_migrate_state' + INSTANCE_LIVE_MIGRATE_STATE_FAILED = 'nfv_vim_instance_live_migrate_state_failed' + INSTANCE_LIVE_MIGRATE_STATE_TIMED_OUT = 'nfv_vim_instance_live_migrate_state_timed_out' + INSTANCE_LIVE_MIGRATE_FINISH_STATE = 'nfv_vim_instance_live_migrate_finish_state' + INSTANCE_LIVE_MIGRATE_FINISH_STATE_FAILED = 'nfv_vim_instance_live_migrate_finish_state_failed' + INSTANCE_LIVE_MIGRATE_FINISH_STATE_TIMED_OUT = 'nfv_vim_instance_live_migrate_finish_state_timed_out' + INSTANCE_COLD_MIGRATE_STATE = 'nfv_vim_instance_cold_migrate_state' + INSTANCE_COLD_MIGRATE_STATE_FAILED = 'nfv_vim_instance_cold_migrate_state_failed' + INSTANCE_COLD_MIGRATE_STATE_TIMED_OUT = 'nfv_vim_instance_cold_migrate_state_timed_out' + INSTANCE_COLD_MIGRATE_CONFIRM_STATE = 'nfv_vim_instance_cold_migrate_confirm_state' + INSTANCE_COLD_MIGRATE_CONFIRM_STATE_FAILED = 'nfv_vim_instance_cold_migrate_confirm_state_failed' + INSTANCE_COLD_MIGRATE_CONFIRM_STATE_TIMED_OUT = 'nfv_vim_instance_cold_migrate_confirm_state_timed_out' + INSTANCE_COLD_MIGRATE_REVERT_STATE = 'nfv_vim_instance_cold_migrate_revert_state' + INSTANCE_COLD_MIGRATE_REVERT_STATE_FAILED = 'nfv_vim_instance_cold_migrate_revert_state_failed' + INSTANCE_COLD_MIGRATE_REVERT_STATE_TIMED_OUT = 'nfv_vim_instance_cold_migrate_revert_state_timed_out' + INSTANCE_EVACUATE_STATE = 'nfv_vim_instance_evacuate_state' + INSTANCE_START_STATE = 'nfv_vim_instance_start_state' + INSTANCE_START_STATE_COMPLETED = 'nfv_vim_instance_start_state_completed' + INSTANCE_START_STATE_FAILED = 'nfv_vim_instance_start_state_failed' + INSTANCE_START_STATE_TIMED_OUT = 'nfv_vim_instance_start_state_timed_out' + INSTANCE_STOP_STATE = 'nfv_vim_instance_stop_state' + INSTANCE_STOP_STATE_COMPLETED = 'nfv_vim_instance_stop_state_completed' + INSTANCE_STOP_STATE_FAILED = 'nfv_vim_instance_stop_state_failed' + INSTANCE_STOP_STATE_TIMED_OUT = 'nfv_vim_instance_stop_state_timed_out' + INSTANCE_PAUSE_STATE = 'nfv_vim_instance_pause_state' + INSTANCE_PAUSE_STATE_COMPLETED = 'nfv_vim_instance_pause_state_completed' + INSTANCE_PAUSE_STATE_FAILED = 'nfv_vim_instance_pause_state_failed' + INSTANCE_PAUSE_STATE_TIMED_OUT = 'nfv_vim_instance_pause_state_timed_out' + INSTANCE_UNPAUSE_STATE = 'nfv_vim_instance_unpause_state' + INSTANCE_UNPAUSE_STATE_COMPLETED = 'nfv_vim_instance_unpause_state_completed' + INSTANCE_UNPAUSE_STATE_FAILED = 'nfv_vim_instance_unpause_state_failed' + INSTANCE_UNPAUSE_STATE_TIMED_OUT = 'nfv_vim_instance_unpause_state_timed_out' + INSTANCE_SUSPEND_STATE = 'nfv_vim_instance_suspend_state' + INSTANCE_SUSPEND_STATE_COMPLETED = 'nfv_vim_instance_suspend_state_completed' + INSTANCE_SUSPEND_STATE_FAILED = 'nfv_vim_instance_suspend_state_failed' + INSTANCE_SUSPEND_STATE_TIMED_OUT = 'nfv_vim_instance_suspend_state_timed_out' + INSTANCE_RESUME_STATE = 'nfv_vim_instance_resume_state' + INSTANCE_RESUME_STATE_COMPLETED = 'nfv_vim_instance_resume_state_completed' + INSTANCE_RESUME_STATE_FAILED = 'nfv_vim_instance_resume_state_failed' + INSTANCE_RESUME_STATE_TIMED_OUT = 'nfv_vim_instance_resume_state_timed_out' + INSTANCE_REBOOT_STATE = 'nfv_vim_instance_reboot_state' + INSTANCE_REBOOT_STATE_COMPLETED = 'nfv_vim_instance_reboot_state_completed' + INSTANCE_REBOOT_STATE_FAILED = 'nfv_vim_instance_reboot_state_failed' + INSTANCE_REBOOT_STATE_TIMED_OUT = 'nfv_vim_instance_reboot_state_timed_out' + INSTANCE_REBUILD_STATE = 'nfv_vim_instance_rebuild_state' + INSTANCE_REBUILD_STATE_COMPLETED = 'nfv_vim_instance_rebuild_state_completed' + INSTANCE_REBUILD_STATE_FAILED = 'nfv_vim_instance_rebuild_state_failed' + INSTANCE_REBUILD_STATE_TIMED_OUT = 'nfv_vim_instance_rebuild_state_timed_out' + INSTANCE_FAIL_STATE = 'nfv_vim_instance_fail_state' + INSTANCE_DELETE_STATE = 'nfv_vim_instance_delete_state' + INSTANCE_RESIZE_STATE = 'nfv_vim_instance_resize_state' + INSTANCE_RESIZE_STATE_FAILED = 'nfv_vim_instance_resize_state_failed' + INSTANCE_RESIZE_STATE_TIMED_OUT = 'nfv_vim_instance_resize_state_timed_out' + INSTANCE_RESIZE_CONFIRM_STATE = 'nfv_vim_instance_resize_confirm_state' + INSTANCE_RESIZE_CONFIRM_STATE_FAILED = 'nfv_vim_instance_resize_confirm_state_failed' + INSTANCE_RESIZE_CONFIRM_STATE_TIMED_OUT = 'nfv_vim_instance_resize_confirm_state_timed_out' + INSTANCE_RESIZE_REVERT_STATE = 'nfv_vim_instance_resize_revert_state' + INSTANCE_RESIZE_REVERT_STATE_FAILED = 'nfv_vim_instance_resize_revert_state_failed' + INSTANCE_RESIZE_REVERT_STATE_TIMED_OUT = 'nfv_vim_instance_resize_revert_state_timed_out' + INSTANCE_GUEST_SERVICES_CREATE_STATE = 'nfv_vim_instance_guest_services_create_state' + INSTANCE_GUEST_SERVICES_DELETE_STATE = 'nfv_vim_instance_guest_services_delete_state' + INSTANCE_GUEST_SERVICES_ENABLE_STATE = 'nfv_vim_instance_guest_services_enable_state' + INSTANCE_GUEST_SERVICES_DISABLE_STATE = 'nfv_vim_instance_guest_services_disable_state' + INSTANCE_GUEST_SERVICES_SET_STATE = 'nfv_vim_instance_guest_services_set_state' + INSTANCE_NFVI_ACTION_START = 'nfv_vim_instance_nfvi_action_initial' + INSTANCE_NFVI_STATE_CHANGE = 'nfv_vim_instance_nfvi_state_change' + INSTANCE_START_CALLBACK = 'nfv_vim_instance_start_callback' + INSTANCE_STOP_CALLBACK = 'nfv_vim_instance_stop_callback' + INSTANCE_PAUSE_CALLBACK = 'nfv_vim_instance_pause_callback' + INSTANCE_UNPAUSE_CALLBACK = 'nfv_vim_instance_unpause_callback' + INSTANCE_SUSPEND_CALLBACK = 'nfv_vim_instance_suspend_callback' + INSTANCE_RESUME_CALLBACK = 'nfv_vim_instance_resume_callback' + INSTANCE_REBOOT_CALLBACK = 'nfv_vim_instance_reboot_callback' + INSTANCE_REBUILD_CALLBACK = 'nfv_vim_instance_rebuild_callback' + INSTANCE_LIVE_MIGRATE_CALLBACK = 'nfv_vim_instance_live_migrate_callback' + INSTANCE_COLD_MIGRATE_CALLBACK = 'nfv_vim_instance_cold_migrate_callback' + INSTANCE_COLD_MIGRATE_CONFIRM_CALLBACK = 'nfv_vim_instance_cold_migrate_confirm_callback' + INSTANCE_COLD_MIGRATE_REVERT_CALLBACK = 'nfv_vim_instance_cold_migrate_revert_callback' + INSTANCE_RESIZE_CALLBACK = 'nfv_vim_instance_resize_callback' + INSTANCE_RESIZE_CONFIRM_CALLBACK = 'nfv_vim_instance_resize_confirm_callback' + INSTANCE_RESIZE_REVERT_CALLBACK = 'nfv_vim_instance_resize_revert_callback' + INSTANCE_GUEST_SERVICES_NOTIFY = 'nfv_vim_instance_guest_services_notify' + INSTANCE_GUEST_SERVICES_ENABLE = 'nfv_vim_instance_guest_services_enable' + INSTANCE_GUEST_SERVICES_ENABLE_CALLBACK = 'nfv_vim_instance_guest_services_enable_callback' + INSTANCE_GUEST_SERVICES_DISABLE = 'nfv_vim_instance_guest_services_disable' + INSTANCE_GUEST_SERVICES_DISABLE_CALLBACK = 'nfv_vim_instance_guest_services_disable_callback' + INSTANCE_GUEST_SERVICES_VOTE = 'nfv_vim_instance_guest_services_vote' + INSTANCE_GUEST_SERVICES_VOTE_RESULT = 'nfv_vim_instance_guest_services_vote_result' + INSTANCE_GUEST_SERVICES_VOTE_CALLBACK = 'nfv_vim_instance_guest_services_vote_callback' + INSTANCE_GUEST_SERVICES_PRE_NOTIFY = 'nfv_vim_instance_guest_services_pre_notify' + INSTANCE_GUEST_SERVICES_PRE_NOTIFY_CALLBACK = 'nfv_vim_instance_guest_services_pre_notify_callback' + INSTANCE_GUEST_SERVICES_POST_NOTIFY = 'nfv_vim_instance_guest_services_post_notify' + INSTANCE_GUEST_SERVICES_POST_NOTIFY_CALLBACK = 'nfv_vim_instance_guest_services_post_notify_callback' + INSTANCE_GUEST_SERVICES_POST_NOTIFY_HEARTBEAT = 'nfv_vim_instance_guest_services_post_notify_heartbeat' + +# Constant Instantiation +NFV_VIM = _NfvVimRecordType() diff --git a/nfv/nfv-common/nfv_common/forensic/_evidence.py b/nfv/nfv-common/nfv_common/forensic/_evidence.py new file mode 100755 index 00000000..07c340b5 --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/_evidence.py @@ -0,0 +1,63 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +import _parsers + +DLOG = debug.debug_get_logger('forensic-evidence') + + +def evidence_from_files(files, start_date, end_date, progress=None): + """ + Gather evidence + """ + records = list() + file_ctrl = dict() + + total_lines = 0 + for parser_name, file_name in files.items(): + total_lines += sum(1 for _ in open(file_name)) + file_ctrl[file_name] = (parser_name, open(file_name), None) + + lines_read = 0 + while 0 < len(file_ctrl): + # Read a record from each file. + for file_name, (parser_name, f, record) in file_ctrl.items(): + if record is None: + line = f.readline() + while line: + parser = _parsers.parser_get(parser_name) + record = parser.parse(start_date, end_date, line) + if record is not None: + file_ctrl[file_name] = (parser_name, f, record) + break + line = f.readline() + lines_read += 1 + + # Remove files that do not have any more records. + for file_name, (parser_name, f, record) in file_ctrl.items(): + if record is None: + del file_ctrl[file_name] + + # Sort records and take the earliest record. + earliest = None + for file_name, (parser_name, f, record) in file_ctrl.items(): + if earliest is None: + earliest = (file_name, parser_name, f, record) + else: + _, _, _, earliest_record = earliest + if earliest_record['timestamp'] > record['timestamp']: + earliest = (file_name, parser_name, f, record) + + if earliest is not None: + file_name, parser_name, f, record = earliest + file_ctrl[file_name] = (parser_name, f, None) + records.append(record) + + if progress is not None: + progress((float(lines_read) / total_lines) * 100) + + return records diff --git a/nfv/nfv-common/nfv_common/forensic/_forensic_module.py b/nfv/nfv-common/nfv_common/forensic/_forensic_module.py new file mode 100755 index 00000000..f6ebfe11 --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/_forensic_module.py @@ -0,0 +1,19 @@ +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import _parsers + + +def forensic_initialize(): + """ + Initialize forensic module + """ + _parsers.parser_initialize() + + +def forensic_finalize(): + """ + Finalize forensic module + """ + _parsers.parser_finalize() diff --git a/nfv/nfv-common/nfv_common/forensic/_nfv_vim_parser.py b/nfv/nfv-common/nfv_common/forensic/_nfv_vim_parser.py new file mode 100755 index 00000000..f2fc1141 --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/_nfv_vim_parser.py @@ -0,0 +1,115 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import os +import re +import yaml +import datetime + +from pyparsing import Word, Combine, Suppress, Literal, Regex +from pyparsing import nums, alphas + + +class NfvVimParser(object): + """ + NFV-VIM Parser + """ + def __init__(self, config_data): + self._config_data = config_data + + year = Word(nums) + month = Suppress('-') + Word(nums) + day = Suppress('-') + Word(nums) + + hour = Suppress('T') + Word(nums) + minute = Suppress(':') + Word(nums) + second = Suppress(':') + Word(nums) + millisecond = Suppress('.') + Word(nums) + + hostname = Word(alphas + nums + '_' + '-' + '.') + + pid = (Suppress(Word(alphas + '_' + alphas + '-' + '[')) + Word(nums) + + Suppress(']')) + + ignore = Suppress(Word(alphas)) + + filename = Combine(Word(alphas + '_') + Literal(".py")) + + lineno = Suppress('.') + Word(nums) + + message = Regex(".*") + + self.__pattern = (year + month + day + hour + minute + second + + millisecond + hostname + pid + ignore + filename + + lineno + message) + + def parse_message(self, filename, lineno, message): + for log in self._config_data['logs']: + if log.get('file', None) is not None: + if filename != log['file']: + continue + + if log.get('lineno', None) is not None: + if lineno != str(log['lineno']): + continue + + query_obj = re.match(log['regex'], message) + if query_obj is not None: + message_data = dict() + message_data['type'] = log['type'] + message_data['log'] = message + for idx, field_name in enumerate(log['fields'], 1): + message_data[field_name] = query_obj.group(idx) + return message_data + return None + + def parse(self, start_date, end_date, line): + record = None + + try: + # verify minimum line length is met + if 70 < len(line): + parsed = self.__pattern.parseString(line) + + timestamp = datetime.datetime(int(parsed[0]), int(parsed[1]), + int(parsed[2]), int(parsed[3]), + int(parsed[4]), int(parsed[5]), + int(parsed[6])*1000) + + if start_date <= timestamp <= end_date: + message_data = self.parse_message(parsed[9], parsed[10], + parsed[11]) + if message_data is not None: + record = dict() + record['timestamp'] = timestamp + record['hostname'] = parsed[7] + record['pid'] = parsed[8] + record['filename'] = parsed[9] + record['lineno'] = parsed[10] + record['data'] = message_data + + except Exception as e: + print("Bad line: %s, exception=%s." % (line, e)) + + return record + + +def parser_initialize(): + """ + Initialize module + """ + path = os.path.abspath(__file__) + config_file = os.path.dirname(path) + "/config/nfv-vim.yaml" + if os.path.isfile(config_file): + config_data = yaml.load(open(config_file)) + return NfvVimParser(config_data) + return None + + +def parser_finalize(): + """ + Finalize module + """ + pass diff --git a/nfv/nfv-common/nfv_common/forensic/_parsers.py b/nfv/nfv-common/nfv_common/forensic/_parsers.py new file mode 100755 index 00000000..7af5cb0d --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/_parsers.py @@ -0,0 +1,30 @@ +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import _nfv_vim_parser + +_parsers = dict() + + +def parser_get(parser_name): + """ + Returns the associated parser + """ + return _parsers.get(parser_name, None) + + +def parser_initialize(): + """ + Initialize module + """ + global _parsers + + _parsers['nfv-vim'] = _nfv_vim_parser.parser_initialize() + + +def parser_finalize(): + """ + Finalize module + """ + _nfv_vim_parser.parser_finalize() diff --git a/nfv/nfv-common/nfv_common/forensic/config/nfv-vim.yaml b/nfv/nfv-common/nfv_common/forensic/config/nfv-vim.yaml new file mode 100755 index 00000000..6872b073 --- /dev/null +++ b/nfv/nfv-common/nfv_common/forensic/config/nfv-vim.yaml @@ -0,0 +1,929 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +logs: + - name: Host State Change + type: nfv_vim_host_nfvi_state_change + file: _host.py + regex: "Host State-Change detected: nfvi_admin_state=(.*) + host_admin_state=(.*), nfvi_oper_state=(.*) host_oper_state=(.*), + nfvi_avail_state=(.*) host_avail_status=(.*), locking=(.*) + unlocking=(.*) fsm current_state=(.*) for (.*)." + fields: + - nfvi_admin_state + - host_admin_state + - nfvi_oper_state + - host_oper_state + - nfvi_avail_state + - host_avail_status + - locking + - unlocking + - fsm_current_state + - host_name + + - name: Host Configure State + type: nfv_vim_host_configure_state + file: _host_state_configure.py + regex: "Entering state \\(configure\\) for (.*)." + fields: + - host_name + + - name: Host Enabling State + type: nfv_vim_host_enabling_state + file: _host_state_enabling.py + regex: "Entering state \\(enabling\\) for (.*)." + fields: + - host_name + + - name: Host Enabled State + type: nfv_vim_host_enabled_state + file: _host_state_enabled.py + regex: "Entering state \\(enabled\\) for (.*)." + fields: + - host_name + + - name: Host Disabling State + type: nfv_vim_host_disabling_state + file: _host_state_disabling.py + regex: "Entering state \\(disabling\\) for (.*)." + fields: + - host_name + + - name: Host Disabled State + type: nfv_vim_host_disabled_state + file: _host_state_disabled.py + regex: "Entering state \\(disabled\\) for (.*)." + fields: + - host_name + + - name: Host Disabling Failed State + type: nfv_vim_host_disabling_failed_state + file: _host_state_disabling_failed.py + regex: "Entering state \\(disabling-failed\\) for (.*)." + fields: + - host_name + + - name: Host Deleting State + type: nfv_vim_host_deleting_state + file: _host_state_deleting.py + regex: "Entering state \\(deleting\\) for (.*)." + fields: + - host_name + + - name: Host Deleted State + type: nfv_vim_host_deleted_state + file: _host_state_deleted.py + regex: "Entering state \\(deleted\\) for (.*)." + fields: + - host_name + + - name: Instance Director Evacuate Failed + type: nfv_vim_director_evacuate_failed + file: _instance_director.py + regex: "Evacuate of instance (.*) from host (.*) failed." + fields: + - instance_name + - host_name + + - name: Instance Director Evacuate Timeout + type: nfv_vim_director_evacuate_timeout + file: _instance_director.py + regex: "Evacuate of instance (.*) from host (.*) timed out." + fields: + - instance_name + - host_name + + - name: Instance Director Evacuate Success + type: nfv_vim_director_evacuate_success + file: _instance_director.py + regex: "Evacuate of instance (.*) from host (.*) succeeded." + fields: + - instance_name + - host_name + + - name: Instance Director Migrate Failed + type: nfv_vim_director_migrate_failed + file: _instance_director.py + regex: "Migrate of instance (.*) from host (.*) failed." + fields: + - instance_name + - host_name + + - name: Instance Director Migrate Timeout + type: nfv_vim_director_migrate_timeout + file: _instance_director.py + regex: "Migrate of instance (.*) from host (.*) timed out." + fields: + - instance_name + - host_name + + - name: Instance Director Migrate Success + type: nfv_vim_director_migrate_success + file: _instance_director.py + regex: "Migrate of instance (.*) from host (.*) succeeded." + fields: + - instance_name + - host_name + + - name: Instance Initial State + type: nfv_vim_instance_initial_state + file: _instance_state_initial.py + regex: "Entering state \\(initial\\) for (.*)." + fields: + - instance_name + + - name: Instance Live-Migrate State + type: nfv_vim_instance_live_migrate_state + file: _instance_state_live_migrate.py + regex: "Entering state \\(live-migrate\\) for (.*)." + fields: + - instance_name + + - name: Instance Live-Migrate State + type: nfv_vim_instance_live_migrate_state + file: _instance_state_live_migrate.py + regex: "Entering state \\(live-migrate\\) for (.*)." + fields: + - instance_name + + - name: Instance Live-Migrate State Failed + type: nfv_vim_instance_live_migrate_state_failed + file: _instance_state_live_migrate.py + regex: "Live-Migrate failed for (.*)." + fields: + - instance_name + + - name: Instance Live-Migrate State Timed out + type: nfv_vim_instance_live_migrate_state_timed_out + file: _instance_state_live_migrate.py + regex: "Live-Migrate timed out for (.*)." + fields: + - instance_name + + - name: Instance Live-Migrate Finish State + type: nfv_vim_instance_live_migrate_finish_state + file: _instance_state_live_migrate_finish.py + regex: "Entering state \\(live-migrate-finish\\) for (.*)." + fields: + - instance_name + + - name: Instance Live-Migrate Finish State Failed + type: nfv_vim_instance_live_migrate_finish_state_failed + file: _instance_state_live_migrate_finish.py + regex: "Live-Migrate-Finish failed for (.*)." + fields: + - instance_name + + - name: Instance Live-Migrate Finish State Timed out + type: nfv_vim_instance_live_migrate_finish_state_timed_out + file: _instance_state_live_migrate_finish.py + regex: "Live-Migrate-Finish timed out for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate State + type: nfv_vim_instance_cold_migrate_state + file: _instance_state_cold_migrate.py + regex: "Entering state \\(cold-migrate\\) for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate State Failed + type: nfv_vim_instance_cold_migrate_state_failed + file: _instance_state_cold_migrate.py + regex: "Cold-Migrate failed for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate State Timed out + type: nfv_vim_instance_cold_migrate_state_timed_out + file: _instance_state_cold_migrate.py + regex: "Cold-Migrate timed out for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate Confirm State + type: nfv_vim_instance_cold_migrate_confirm_state + file: _instance_state_cold_migrate_confirm.py + regex: "Entering state \\(cold-migrate-confirm\\) for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate Confirm State Failed + type: nfv_vim_instance_cold_migrate_confirm_state_failed + file: _instance_state_cold_migrate_confirm.py + regex: "Cold-Migrate-Confirm failed for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate Confirm State Timed out + type: nfv_vim_instance_cold_migrate_confirm_state_timed_out + file: _instance_state_cold_migrate_confirm.py + regex: "Cold-Migrate-Confirm timed out for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate Revert State + type: nfv_vim_instance_cold_migrate_revert_state + file: _instance_state_cold_migrate_revert.py + regex: "Entering state \\(cold-migrate-revert\\) for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate Revert State Failed + type: nfv_vim_instance_cold_migrate_revert_state_failed + file: _instance_state_cold_migrate_revert.py + regex: "Cold-Migrate-Revert failed for (.*)." + fields: + - instance_name + + - name: Instance Cold-Migrate Revert State Timed out + type: nfv_vim_instance_cold_migrate_revert_state_timed_out + file: _instance_state_cold_migrate_revert.py + regex: "Cold-Migrate-Revert timed out for (.*)." + fields: + - instance_name + + - name: Instance Evacuate State + type: nfv_vim_instance_evacuate_state + file: _instance_state_evacuate.py + regex: "Entering state \\(evacuate\\) for (.*)." + fields: + - instance_name + + - name: Instance Start State + type: nfv_vim_instance_start_state + file: _instance_state_start.py + regex: "Entering state \\(start\\) for (.*)." + fields: + - instance_name + + - name: Instance Start State Completed + type: nfv_vim_instance_start_state_completed + file: _instance_state_start.py + regex: "Start completed for (.*)." + fields: + - instance_name + + - name: Instance Start State Failed + type: nfv_vim_instance_start_state_failed + file: _instance_state_start.py + regex: "Start failed for (.*)." + fields: + - instance_name + + - name: Instance Start State Timed out + type: nfv_vim_instance_start_state_timed_out + file: _instance_state_start.py + regex: "Start timed out for (.*)." + fields: + - instance_name + + - name: Instance Stop State + type: nfv_vim_instance_stop_state + file: _instance_state_stop.py + regex: "Entering state \\(stop\\) for (.*)." + fields: + - instance_name + + - name: Instance Stop State Completed + type: nfv_vim_instance_stop_state_completed + file: _instance_state_stop.py + regex: "Stop completed for (.*)." + fields: + - instance_name + + - name: Instance Stop State Failed + type: nfv_vim_instance_stop_state_failed + file: _instance_state_stop.py + regex: "Stop failed for (.*)." + fields: + - instance_name + + - name: Instance Stop State Timed out + type: nfv_vim_instance_stop_state_timed_out + file: _instance_state_stop.py + regex: "Stop timed out for (.*)." + fields: + - instance_name + + - name: Instance Pause State + type: nfv_vim_instance_pause_state + file: _instance_state_pause.py + regex: "Entering state \\(pause\\) for (.*)." + fields: + - instance_name + + - name: Instance Pause State Completed + type: nfv_vim_instance_pause_state_completed + file: _instance_state_pause.py + regex: "Pause completed for (.*)." + fields: + - instance_name + + - name: Instance Pause State Failed + type: nfv_vim_instance_pause_state_failed + file: _instance_state_pause.py + regex: "Pause failed for (.*)." + fields: + - instance_name + + - name: Instance Pause State Timed out + type: nfv_vim_instance_pause_state_timed_out + file: _instance_state_pause.py + regex: "Pause timed out for (.*)." + fields: + - instance_name + + - name: Instance Unpause State + type: nfv_vim_instance_unpause_state + file: _instance_state_unpause.py + regex: "Entering state \\(unpause\\) for (.*)." + fields: + - instance_name + + - name: Instance Unpause State Completed + type: nfv_vim_instance_unpause_state_completed + file: _instance_state_unpause.py + regex: "Unpause completed for (.*)." + fields: + - instance_name + + - name: Instance Unpause State Failed + type: nfv_vim_instance_unpause_state_failed + file: _instance_state_unpause.py + regex: "Unpause failed for (.*)." + fields: + - instance_name + + - name: Instance Unpause State Timed out + type: nfv_vim_instance_unpause_state_timed_out + file: _instance_state_unpause.py + regex: "Unpause timed out for (.*)." + fields: + - instance_name + + - name: Instance Suspend State + type: nfv_vim_instance_suspend_state + file: _instance_state_suspend.py + regex: "Entering state \\(suspend\\) for (.*)." + fields: + - instance_name + + - name: Instance Suspend State Completed + type: nfv_vim_instance_suspend_state_completed + file: _instance_state_suspend.py + regex: "Suspend completed for (.*)." + fields: + - instance_name + + - name: Instance Suspend State Failed + type: nfv_vim_instance_suspend_state_failed + file: _instance_state_suspend.py + regex: "Suspend failed for (.*)." + fields: + - instance_name + + - name: Instance Suspend State Timed out + type: nfv_vim_instance_suspend_state_timed_out + file: _instance_state_suspend.py + regex: "Suspend timed out for (.*)." + fields: + - instance_name + + - name: Instance Resume State + type: nfv_vim_instance_resume_state + file: _instance_state_resume.py + regex: "Entering state \\(resume\\) for (.*)." + fields: + - instance_name + + - name: Instance Resume State Completed + type: nfv_vim_instance_resume_state_completed + file: _instance_state_resume.py + regex: "Resume completed for (.*)." + fields: + - instance_name + + - name: Instance Resume State Failed + type: nfv_vim_instance_resume_state_failed + file: _instance_state_resume.py + regex: "Resume failed for (.*)." + fields: + - instance_name + + - name: Instance Resume State Timed out + type: nfv_vim_instance_resume_state_timed_out + file: _instance_state_resume.py + regex: "Resume timed out for (.*)." + fields: + - instance_name + + - name: Instance Reboot State + type: nfv_vim_instance_reboot_state + file: _instance_state_reboot.py + regex: "Entering state \\(reboot\\) for (.*)." + fields: + - instance_name + + - name: Instance Reboot State Completed + type: nfv_vim_instance_reboot_state_completed + file: _instance_state_reboot.py + regex: "Reboot completed for (.*)." + fields: + - instance_name + + - name: Instance Reboot State Failed + type: nfv_vim_instance_reboot_state_failed + file: _instance_state_reboot.py + regex: "Reboot failed for (.*)." + fields: + - instance_name + + - name: Instance Reboot State Timed out + type: nfv_vim_instance_reboot_state_timed_out + file: _instance_state_reboot.py + regex: "Reboot timed out for (.*)." + fields: + - instance_name + + - name: Instance Rebuild State + type: nfv_vim_instance_rebuild_state + file: _instance_state_rebuild.py + regex: "Entering state \\(rebuild\\) for (.*)." + fields: + - instance_name + + - name: Instance Rebuild State Completed + type: nfv_vim_instance_rebuild_state_completed + file: _instance_state_rebuild.py + regex: "Rebuild completed for (.*)." + fields: + - instance_name + + - name: Instance Rebuild State Failed + type: nfv_vim_instance_rebuild_state_failed + file: _instance_state_rebuild.py + regex: "Rebuild failed for (.*)." + fields: + - instance_name + + - name: Instance Rebuild State Timed out + type: nfv_vim_instance_rebuild_state_timed_out + file: _instance_state_rebuild.py + regex: "Rebuild timed out for (.*)." + fields: + - instance_name + + - name: Instance Fail State + type: nfv_vim_instance_fail_state + file: _instance_state_fail.py + regex: "Entering state \\(fail\\) for (.*)." + fields: + - instance_name + + - name: Instance Delete State + type: nfv_vim_instance_delete_state + file: _instance_state_delete.py + regex: "Entering state \\(delete\\) for (.*)." + fields: + - instance_name + + - name: Instance Resize State + type: nfv_vim_instance_resize_state + file: _instance_state_resize.py + regex: "Entering state \\(resize\\) for (.*)." + fields: + - instance_name + + - name: Instance Resize State Failed + type: nfv_vim_instance_resize_state_failed + file: _instance_state_resize.py + regex: "Resize failed for (.*)." + fields: + - instance_name + + - name: Instance Resize State Timed out + type: nfv_vim_instance_resize_state_timed_out + file: _instance_state_resize.py + regex: "Reisze timed out for (.*)." + fields: + - instance_name + + - name: Instance Resize-Confirm State + type: nfv_vim_instance_resize_confirm_state + file: _instance_state_resize_confirm.py + regex: "Entering state \\(resize-confirm\\) for (.*)." + fields: + - instance_name + + - name: Instance Resize Confirm State Failed + type: nfv_vim_instance_resize_confirm_state_failed + file: _instance_state_resize_confirm.py + regex: "Resize-Confirm failed for (.*)." + fields: + - instance_name + + - name: Instance Resize Confirm State Timed out + type: nfv_vim_instance_resize_confirm_state_timed_out + file: _instance_state_resize_confirm.py + regex: "Reisze-Confirm timed out for (.*)." + fields: + - instance_name + + - name: Instance Resize-Revert State + type: nfv_vim_instance_resize_revert_state + file: _instance_state_resize_revert.py + regex: "Entering state \\(resize-revert\\) for (.*)." + fields: + - instance_name + + - name: Instance Resize Revert State Failed + type: nfv_vim_instance_resize_revert_state_failed + file: _instance_state_resize_revert.py + regex: "Resize-Revert failed for (.*)." + fields: + - instance_name + + - name: Instance Resize Revert State Timed out + type: nfv_vim_instance_resize_revert_state_timed_out + file: _instance_state_resize_revert.py + regex: "Reisze-Revert timed out for (.*)." + fields: + - instance_name + + - name: Instance Guest-Services-Create State + type: nfv_vim_instance_guest_services_create_state + file: _instance_state_guest_services_create.py + regex: "Entering state \\(guest-services-create\\) for (.*)." + fields: + - instance_name + + - name: Instance Guest-Services-Delete State + type: nfv_vim_instance_guest_services_delete_state + file: _instance_state_guest_services_delete.py + regex: "Entering state \\(guest-services-delete\\) for (.*)." + fields: + - instance_name + + - name: Instance Guest-Services-Enable State + type: nfv_vim_instance_guest_services_enable_state + file: _instance_state_guest_services_enable.py + regex: "Entering state \\(guest-services-enable\\) for (.*)." + fields: + - instance_name + + - name: Instance Guest-Services-Disable State + type: nfv_vim_instance_guest_services_disable_state + file: _instance_state_guest_services_disable.py + regex: "Entering state \\(guest-services-disable\\) for (.*)." + fields: + - instance_name + + - name: Instance Guest-Services-Set State + type: nfv_vim_instance_guest_services_set_state + file: _instance_state_guest_services_set.py + regex: "Entering state \\(guest-services-set\\) for (.*)." + fields: + - instance_name + + - name: Instance NFVI Action Initial + type: nfv_vim_instance_nfvi_action_initial + file: _vim_nfvi_events.py + regex: "Instance action, uuid=(.*), nfvi_action_data=Instance action, + type=(.*), params=(.*), state=initial, reason=" + fields: + - instance_uuid + - action_type + - action_params + + - name: Instance NFVI State Change + type: nfv_vim_instance_nfvi_state_change + file: _vim_nfvi_events.py + regex: "Instance state-change, nfvi_instance={'instance_type_uuid': u'(.*)', + 'name': u'(.*)', 'tenant_id': '(.*)', 'avail_status': \\[(.*)], 'nfvi_data': + {'vm_state': u'(.*)', 'task_state': u?'(.*)', 'power_state': '(.*)'}, + 'live_migration_support': (.*), 'oper_state': '(.*)', 'host_name': u'(.*)', + 'admin_state': '(.*)', 'action': '(.*)', 'image_uuid': (.*), 'uuid': u'(.*)'}." + fields: + - instance_type_uuid + - instance_name + - tenant_uuid + - instance_avail_status + - nfvi_vm_state + - nfvi_task_state + - nfvi_power_state + - live_migrate_support + - instance_oper_state + - host_name + - instance_admin_state + - instance_action_state + - image_uuid + - instance_uuid + + - name: Instance Start Callback + type: nfv_vim_instance_start_callback + file: _instance_task_work.py + regex: "Start-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Stop Callback + type: nfv_vim_instance_stop_callback + file: _instance_task_work.py + regex: "Stop-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Pause Callback + type: nfv_vim_instance_pause_callback + file: _instance_task_work.py + regex: "Pause-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Unpause Callback + type: nfv_vim_instance_unpause_callback + file: _instance_task_work.py + regex: "Unpause-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Suspend Callback + type: nfv_vim_instance_suspend_callback + file: _instance_task_work.py + regex: "Suspend-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Resume Callback + type: nfv_vim_instance_resume_callback + file: _instance_task_work.py + regex: "Resume-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Reboot Callback + type: nfv_vim_instance_reboot_callback + file: _instance_task_work.py + regex: "Reboot-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Rebuild Callback + type: nfv_vim_instance_rebuild_callback + file: _instance_task_work.py + regex: "Rebuild-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Live-Migrate Callback + type: nfv_vim_instance_live_migrate_callback + file: _instance_task_work.py + regex: "Live-Migrate-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Cold-Migrate Callback + type: nfv_vim_instance_cold_migrate_callback + file: _instance_task_work.py + regex: "Cold-Migrate-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Cold-Migrate Confirm Callback + type: nfv_vim_instance_cold_migrate_confirm_callback + file: _instance_task_work.py + regex: "Cold-Migrate-Confirm-Instance callback for (.*), + response={'completed': (.*), 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Cold-Migrate Revert Callback + type: nfv_vim_instance_cold_migrate_revert_callback + file: _instance_task_work.py + regex: "Cold-Migrate-Revert-Instance callback for (.*), + response={'completed': (.*), 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Resize Callback + type: nfv_vim_instance_resize_callback + file: _instance_task_work.py + regex: "Resize-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Resize Confirm Callback + type: nfv_vim_instance_resize_confirm_callback + file: _instance_task_work.py + regex: "Resize-Confirm-Instance callback for (.*), + response={'completed': (.*), 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Resize Revert Callback + type: nfv_vim_instance_resize_revert_callback + file: _instance_task_work.py + regex: "Resize-Revert-Instance callback for (.*), response={'completed': (.*), + 'reason': (.*)}." + fields: + - instance_name + - completed + - reason + + - name: Instance Guest Services Notify + type: nfv_vim_instance_guest_services_notify + file: _vim_nfvi_events.py + regex: "Guest-Services state notify, instance_uuid=(.*), host_name=(.*) + guest_services=\\[{'admin_state': '(.*)', 'restart_timeout': (.*), + 'oper_state': '(.*)', 'name': '(.*)'}]." + fields: + - instance_uuid + - host_name + - service_admin_state + - restart_timeout + - service_oper_state + - service_name + + - name: Instance Guest Services Enable + type: nfv_vim_instance_guest_services_enable + file: _instance_task_work.py + regex: "Guest-Services-Enable for (.*), nfvi_guest_services=\\[{'admin_state': + '(.*)', 'service': '(.*)'}]." + fields: + - instance_name + - service_admin_state + - service_name + + - name: Instance Guest Services Enable Callback + type: nfv_vim_instance_guest_services_enable_callback + file: _instance_task_work.py + regex: "Guest-Services-Enable callback for (.*), response={'completed': (.*), + 'reason': (.*), 'result-data': {'instance_uuid': u'(.*)', 'services': + \\[{'admin_state': '(.*)', 'restart_timeout': (.*), 'oper_state': '(.*)', + 'name': '(.*)'}], 'host_name': u'(.*)'}}." + fields: + - instance_name + - completed + - reason + - instance_uuid + - service_admin_state + - restart_timeout + - service_oper_state + - service_name + - host_name + + - name: Instance Guest Services Disable + type: nfv_vim_instance_guest_services_disable + file: _instance_task_work.py + regex: "Guest-Services-Disable for (.*), nfvi_guest_services=\\[{'admin_state': + '(.*)', 'service': '(.*)'}]." + fields: + - instance_name + - service_admin_state + - service_name + + - name: Instance Guest Services Disable Callback + type: nfv_vim_instance_guest_services_disable_callback + file: _instance_task_work.py + regex: "Guest-Services-Disable callback for (.*), response={'completed': (.*), + 'reason': (.*), 'result-data': {'instance_uuid': u'(.*)', 'services': + \\[{'admin_state': '(.*)', 'restart_timeout': (.*), 'oper_state': '(.*)', + 'name': '(.*)'}], 'host_name': u'(.*)'}}." + fields: + - instance_name + - completed + - reason + - instance_uuid + - service_admin_state + - restart_timeout + - service_oper_state + - service_name + - host_name + + - name: Instance Guest Services Vote + type: nfv_vim_instance_guest_services_vote + file: _instance_task_work.py + regex: "Guest-Services-Vote for (.*), action_type=(.*)." + fields: + - instance_name + - action_type + + - name: Instance Guest Services Vote Result + type: nfv_vim_instance_guest_services_vote_result + file: _instance_task_work.py + regex: "Guest-Services-Vote for (.*), vote=(.*)." + fields: + - instance_name + - vote_result + + - name: Instance Guest Services Vote Callback + type: nfv_vim_instance_guest_services_vote_callback + file: _instance_task_work.py + regex: "Guest-Services-Vote callback for (.*), response={'action-type': u'(.*)', + 'uuid': u'(.*)', 'completed': (.*), 'reason': (.*), 'host-name': u'(.*)', + 'timeout': (.*)}." + fields: + - instance_name + - action_type + - instance_uuid + - completed + - reason + - host_name + - timeout + + - name: Instance Guest Services Pre-Notify + type: nfv_vim_instance_guest_services_pre_notify + file: _instance_task_work.py + regex: "Guest-Services-Pre-Notify for (.*), action_type=(.*)." + fields: + - instance_name + - action_type + + - name: Instance Guest Services Pre-Notify Callback + type: nfv_vim_instance_guest_services_pre_notify_callback + file: _instance_task_work.py + regex: "Guest-Services-Pre-Notify callback for (.*), + response={'action-type': u'(.*)', 'uuid': u'(.*)', 'completed': (.*), + 'reason': (.*), 'host-name': u'(.*)', 'timeout': (.*)}." + fields: + - instance_name + - action_type + - instance_uuid + - completed + - reason + - host_name + - timeout + + - name: Instance Guest Services Post-Notify + type: nfv_vim_instance_guest_services_post_notify + file: _instance_task_work.py + regex: "Guest-Services-Post-Notify for (.*), action_type=(.*)." + fields: + - instance_name + - action_type + + - name: Instance Guest Services Post-Notify Callback + type: nfv_vim_instance_guest_services_post_notify_callback + file: _instance_task_work.py + regex: "Guest-Services-Post-Notify callback for (.*), + response={'action-type': u'(.*)', 'uuid': u'(.*)', 'completed': (.*), + 'reason': (.*), 'host-name': u'(.*)', 'timeout': (.*)}." + fields: + - instance_name + - action_type + - instance_uuid + - completed + - reason + - host_name + - timeout + + - name: Instance Guest Services Post-Notify Heartbeat + type: nfv_vim_instance_guest_services_post_notify_heartbeat + file: _instance_task_work.py + regex: "Guest-Services-Post-Notify for (.*), guest communication + re-established." + fields: + - instance_name diff --git a/nfv/nfv-common/nfv_common/helpers.py b/nfv/nfv-common/nfv_common/helpers.py new file mode 100755 index 00000000..f85e49e9 --- /dev/null +++ b/nfv/nfv-common/nfv_common/helpers.py @@ -0,0 +1,116 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import socket +import select +import errno +import functools + + +def syscall_retry_on_interrupt(func, *args): + """ Attempt system call again if interrupted by EINTR """ + for _ in range(0, 5): + try: + return func(*args) + except (OSError, socket.error, select.error) as e: + if errno.EINTR != e.args[0]: + raise + + +def local_uptime_in_secs(): + try: + with open('/proc/uptime', 'r') as f: + uptime_secs = int(float(f.readline().split()[0])) + except IOError: + uptime_secs = 0 + return uptime_secs + + +_process_start_time = local_uptime_in_secs() + + +def process_uptime_in_secs(): + return local_uptime_in_secs() - _process_start_time + + +class Object(object): + """ + Class Object Type Definition + """ + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + def as_dict(self): + return self.__dict__ + + +class Result(object): + """ + Generic Result Object Type Definition + """ + def __init__(self, result_data, ancillary_data=None): + self.result_data = result_data + self.ancillary_data = ancillary_data + + def __str__(self): + return("Result: result-data: %s ancillary-data: %s" + % (self.result_data, self.ancillary_data)) + + +class Constants(object): + def __iter__(self): + for attr in dir(self): + if not callable(attr) and not attr.startswith("__"): + value = getattr(self, attr) + yield value + + +class Constant(object): + """ + Constant Type Definition + """ + def __init__(self, value): + self.value = value + + def __get__(self, obj, obj_type): + return self.value + + def __set__(self, obj, value): + raise AttributeError("ERROR: attempting to set a constant.") + + def __delete__(self, obj): + raise AttributeError("ERROR: attempting to delete a constant.") + + +class Singleton(type): + """ + Singleton Type Definition + """ + _instances = {} + + def __call__(cls, *args, **kwargs): + if cls not in cls._instances: + cls._instances[cls] = \ + super(Singleton, cls).__call__(*args, **kwargs) + return cls._instances[cls] + + +def coroutine(func): + """ + Co-Routine decorator that wraps a function and starts the co-routine + """ + def start(*args, **kwargs): + target = func(*args, **kwargs) + target.send(None) + functools.update_wrapper(start, func) + return target + return start + + +def get_local_host_name(): + """ + Returns the name of the local host + """ + return socket.gethostname() diff --git a/nfv/nfv-common/nfv_common/histogram.py b/nfv/nfv-common/nfv_common/histogram.py new file mode 100755 index 00000000..07e3ab90 --- /dev/null +++ b/nfv/nfv-common/nfv_common/histogram.py @@ -0,0 +1,187 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import math +import array +import datetime + +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.histogram') + + +class Histogram(object): + """ + Histogram Object + """ + def __init__(self, name, num_buckets, units): + self._name = name + self._units = units + self._num_buckets = num_buckets + self._created_date = datetime.datetime.now() + self._reset_date = self._created_date + self._sample_total = 0 + self._num_samples = 0 + self._average_sample = None + self._max_sample = -1 + self._max_sample_date = None + self._buckets = array.array("L", [0] * num_buckets) + + @property + def name(self): + """ + Returns the name of the histogram + """ + return self._name + + def add_data(self, sample): + """ + Convert data given to the nearest power of two. + """ + sample_as_int = int(sample) + if 0 == sample_as_int: + bucket_idx = sample_as_int.bit_length() + else: + bucket_idx = (sample_as_int-1).bit_length() + + if bucket_idx > self._num_buckets: + bucket_idx = self._num_buckets-1 + + if sample_as_int > self._max_sample: + self._max_sample = sample_as_int + self._max_sample_date = datetime.datetime.now() + + self._sample_total += sample_as_int + self._num_samples += 1 + self._average_sample = (self._sample_total / self._num_samples) + + self._buckets[bucket_idx] += 1 + + def reset_data(self): + """ + Clear out the collected samples. + """ + self._reset_date = datetime.datetime.now() + self._sample_total = 0 + self._num_samples = 0 + self._average_sample = None + self._max_sample = -1 + self._max_sample_date = None + for idx, _ in enumerate(self._buckets): + self._buckets[idx] = 0 + + @staticmethod + def _scale_sample(scale_min, scale_max, sample_min, sample_max, sample): + """ + Normalize sample to be compared with other samples + """ + if scale_min == scale_max: + return sample + + if sample_min == sample_max: + return sample + + return ((((scale_max - scale_min) * (sample - sample_min)) / + (sample_max - sample_min)) + sample_max) + + def display_data(self, pretty_format=True): + """ + Output the histogram to a log. + """ + date_str = "" + values_str = "" + + if pretty_format: + date_str += " created-date: %s" % self._created_date + if self._reset_date is not None: + date_str += " reset-date: %s" % self._reset_date + + values_str += " total: %s" % self._num_samples + + if self._average_sample is not None: + values_str += " avg: %s" % self._average_sample + + if self._max_sample_date is not None: + values_str += (" max: %s (%s)" % (self._max_sample, + self._max_sample_date)) + + DLOG.info("%s" % '-' * 120) + + DLOG.info("Histogram: %s" % self._name) + + if "" != date_str: + DLOG.info("%s" % date_str) + + if "" != values_str: + DLOG.info(" %s" % values_str) + + for idx, bucket_value in enumerate(self._buckets): + if 0 != bucket_value: + if pretty_format: + scaled_bucket_value \ + = self._scale_sample(0, 60, 0, self._max_sample, + bucket_value) + + DLOG.info(" %03i [up to %03i %s]: %07i %s" + % (idx, math.pow(2, idx), self._units, bucket_value, + '*' * min(60, scaled_bucket_value))) + else: + DLOG.info(" %03i [up to %03i %s]: %07i" + % (idx, math.pow(2, idx), self._units, bucket_value)) + + if pretty_format: + DLOG.info("%s" % '-' * 120) + + +_histograms = dict() + + +def _find_histogram(name): + """ + Lookup a histogram with a particular name + """ + if name in _histograms: + return _histograms[name] + return None + + +def add_histogram_data(name, sample, units): + """ + Add a sample to a histogram + """ + global _histograms + + histogram = _find_histogram(name) + if histogram is None: + histogram = Histogram(name, 16, units) + _histograms[name] = histogram + + histogram.add_data(sample) + + +def reset_histogram_data(name=None): + """ + Reset histogram data + """ + if name is None: + for histogram in _histograms.itervalues(): + histogram.reset_data() + else: + histogram = _find_histogram(name) + if histogram is not None: + histogram.reset_data() + + +def display_histogram_data(name=None, pretty_format=True): + """ + Display histogram data captured + """ + if name is None: + for histogram in _histograms.itervalues(): + histogram.display_data(pretty_format) + else: + histogram = _find_histogram(name) + if histogram is not None: + histogram.display_data(pretty_format) diff --git a/nfv/nfv-common/nfv_common/profiler.py b/nfv/nfv-common/nfv_common/profiler.py new file mode 100755 index 00000000..a9a8b014 --- /dev/null +++ b/nfv/nfv-common/nfv_common/profiler.py @@ -0,0 +1,63 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.profiler') + +try: + import objgraph + import guppy + memory_profiling = guppy.hpy() + +except ImportError: + memory_profiling = None + + +def profile_memory_references(obj_type, obj_name): + """ + Graph memory references + """ + if memory_profiling is not None: + objs = objgraph.by_type(obj_type) + objgraph.show_backrefs(objs, max_depth=5, + filename='/tmp/%s_memory_back_refs.dot' % obj_name) + objgraph.show_refs(objs, max_depth=5, + filename='/tmp/%s_memory_refs.dot' % obj_name) + + +def profile_memory_set_reference(): + """ + Set the memory usage reference + """ + if memory_profiling is not None: + memory_profiling.setref() + + +def profile_memory_dump(): + """ + Dumps the current memory usage + """ + if memory_profiling is not None: + DLOG.info("%s" % '-' * 120) + DLOG.info("Memory Profile: %s" % memory_profiling.heap()) + profile_memory_references('nfv_vim.objects._instance.Instance', 'instance') + DLOG.info("%s" % '-' * 120) + + +def profiler_initialize(): + """ + Profiler - Initialize + """ + if memory_profiling is not None: + DLOG.info("Memory Profiling Enabled") + memory_profiling.setref() + + +def profiler_finalize(): + """ + Profiler - Finalize + """ + pass diff --git a/nfv/nfv-common/nfv_common/schedule/__init__.py b/nfv/nfv-common/nfv_common/schedule/__init__.py new file mode 100755 index 00000000..d7f84472 --- /dev/null +++ b/nfv/nfv-common/nfv_common/schedule/__init__.py @@ -0,0 +1,9 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _schedule_module import schedule_function_call +from _schedule_module import schedule_initialize, schedule_finalize diff --git a/nfv/nfv-common/nfv_common/schedule/_schedule_module.py b/nfv/nfv-common/nfv_common/schedule/_schedule_module.py new file mode 100755 index 00000000..00038549 --- /dev/null +++ b/nfv/nfv-common/nfv_common/schedule/_schedule_module.py @@ -0,0 +1,70 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import socket + +from nfv_common import selobj +from nfv_common.helpers import coroutine + +_send_socket = None +_receive_socket = None +_pending_function_calls = list() + + +def schedule_function_call(func, *args, **kwargs): + """ + Schedule a function call to be performed at a later time + """ + global _send_socket, _pending_function_calls + + function_data = (func, args, kwargs) + _pending_function_calls.append(function_data) + _send_socket.send('1') + + +@coroutine +def _schedule_dispatch(): + global _receive_socket, _pending_function_calls + + while True: + select_obj = (yield) + if select_obj == _receive_socket.fileno(): + _receive_socket.recv(1) + + for func, args, kwargs in _pending_function_calls: + func(*args, **kwargs) + + _pending_function_calls[:] = list() + + +def schedule_initialize(): + """ + Initialize the schedule module + """ + global _send_socket, _receive_socket, _pending_function_calls + + _send_socket, _receive_socket = socket.socketpair() + _receive_socket.setblocking(False) + selobj.selobj_add_read_obj(_receive_socket.fileno(), _schedule_dispatch) + + del _pending_function_calls + _pending_function_calls = list() # flake8: noqa + + +def schedule_finalize(): + """ + Finalize the schedule module + """ + global _send_socket, _receive_socket, _pending_function_calls + + if _send_socket is not None: + _send_socket.close() + + if _receive_socket is not None: + selobj.selobj_del_read_obj(_receive_socket.fileno()) + _receive_socket.close() + + del _pending_function_calls + _pending_function_calls = list() # flake8: noqa diff --git a/nfv/nfv-common/nfv_common/selectable.py b/nfv/nfv-common/nfv_common/selectable.py new file mode 100755 index 00000000..f01296c4 --- /dev/null +++ b/nfv/nfv-common/nfv_common/selectable.py @@ -0,0 +1,59 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import socket +import multiprocessing +import Queue as threading_queue + + +class ThreadQueue(object): + def __init__(self, queue_id): + self._queue_id = queue_id + self._send_socket, self._receive_socket = socket.socketpair() + self._receive_socket.setblocking(False) + self._message_queue = threading_queue.Queue() + + @property + def selobj(self): + return self._receive_socket.fileno() + + def put(self, message): + self._message_queue.put(message) + self._send_socket.send(self._queue_id) + + def get_nowait(self): + self._receive_socket.recv(1) + try: + return self._message_queue.get_nowait() + + except threading_queue.Empty: + return None + + +class MultiprocessQueue(object): + def __init__(self): + self._queue = multiprocessing.Queue() + + @property + def selobj(self): + return self._queue._reader + + def put(self, data): + self._queue.put(data) + + def get(self): + try: + entry = self._queue.get_nowait() + return entry + + except threading_queue.Empty: + return None + + def close(self): + self._queue.close() + if self._queue._writer is not None: + # Fix memory leak with pipes in the multiprocessing.queue module + self._queue._writer.close() + self._queue.join_thread() diff --git a/nfv/nfv-common/nfv_common/selobj/__init__.py b/nfv/nfv-common/nfv_common/selobj/__init__.py new file mode 100755 index 00000000..074c19fc --- /dev/null +++ b/nfv/nfv-common/nfv_common/selobj/__init__.py @@ -0,0 +1,11 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _selobj_module import selobj_add_read_obj, selobj_del_read_obj +from _selobj_module import selobj_add_write_obj, selobj_del_write_obj +from _selobj_module import selobj_add_error_callback, selobj_del_error_callback +from _selobj_module import selobj_dispatch, selobj_initialize, selobj_finalize diff --git a/nfv/nfv-common/nfv_common/selobj/_selobj_module.py b/nfv/nfv-common/nfv_common/selobj/_selobj_module.py new file mode 100755 index 00000000..9d83540f --- /dev/null +++ b/nfv/nfv-common/nfv_common/selobj/_selobj_module.py @@ -0,0 +1,168 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import socket +import select +import errno + +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.selobj') + +_read_callbacks = dict() +_write_callbacks = dict() +_error_callbacks = dict() + + +def selobj_add_read_obj(selobj, callback, *callback_args, **callback_kwargs): + """ + Add read selection object, callback is a co-routine that is + sent the selection object that has become readable + """ + global _read_callbacks + + coroutine = callback(*callback_args, **callback_kwargs) + _read_callbacks[selobj] = coroutine + + +def selobj_del_read_obj(selobj): + """ + Delete read selection object + """ + global _read_callbacks + + if selobj in _read_callbacks.keys(): + _read_callbacks.pop(selobj) + + +def selobj_add_write_obj(selobj, callback, *callback_args, **callback_kwargs): + """ + Add write selection object, callback is a co-routine that is + sent the selection object that has become writeable + """ + global _write_callbacks + + coroutine = callback(*callback_args, **callback_kwargs) + _write_callbacks[selobj] = coroutine + + +def selobj_del_write_obj(selobj): + """ + Delete write selection object + """ + global _write_callbacks + + if selobj in _write_callbacks.keys(): + _write_callbacks.pop(selobj) + + +def selobj_add_error_callback(selobj, callback, *callback_args, + **callback_kwargs): + """ + Add selection object error callback which is a co-routine that is + called when the selection object is in error + """ + global _error_callbacks + + coroutine = callback(*callback_args, **callback_kwargs) + _error_callbacks[selobj] = coroutine + + +def selobj_del_error_callback(selobj): + """ + Delete selection object error callback + """ + global _error_callbacks + + if selobj in _error_callbacks.keys(): + _error_callbacks.pop(selobj) + + +def selobj_dispatch(timeout_in_ms): + """ + Dispatch selection objects that have become readable or writeable + within the given time period + """ + from nfv_common import timers, histogram + + global _read_callbacks, _write_callbacks, _error_callbacks + + read_objs = _read_callbacks.keys() + write_objs = _write_callbacks.keys() + + try: + readable, writeable, in_error = select.select(read_objs, write_objs, [], + timeout_in_ms/1000.0) + + for selobj in readable: + callback = _read_callbacks.get(selobj, None) + if callback is not None: + start_ms = timers.get_monotonic_timestamp_in_ms() + try: + callback.send(selobj) + except StopIteration: + _read_callbacks.pop(selobj) + elapsed_ms = timers.get_monotonic_timestamp_in_ms() - start_ms + histogram.add_histogram_data("selobj read: " + callback.__name__, + elapsed_ms / 100, "decisecond") + + for selobj in writeable: + callback = _write_callbacks.get(selobj, None) + if callback is not None: + start_ms = timers.get_monotonic_timestamp_in_ms() + try: + callback.send(selobj) + except StopIteration: + _write_callbacks.pop(selobj) + elapsed_ms = timers.get_monotonic_timestamp_in_ms() - start_ms + histogram.add_histogram_data("selobj write: " + callback.__name__, + elapsed_ms / 100, "decisecond") + + for selobj in in_error: + callback = _error_callbacks.get(selobj, None) + if callback is not None: + start_ms = timers.get_monotonic_timestamp_in_ms() + try: + callback.send(selobj) + except StopIteration: + _error_callbacks.pop(selobj) + elapsed_ms = timers.get_monotonic_timestamp_in_ms() - start_ms + histogram.add_histogram_data("selobj error: " + callback.__name__, + elapsed_ms / 100, "decisecond") + + if selobj in _read_callbacks.keys(): + _read_callbacks.pop(selobj) + + if selobj in _write_callbacks.keys(): + _write_callbacks.pop(selobj) + + except (OSError, socket.error, select.error) as e: + if errno.EINTR == e.args[0]: + pass + + +def selobj_initialize(): + """ + Initialize the selection object module + """ + global _read_callbacks, _write_callbacks + + del _read_callbacks + _read_callbacks = dict() # flake8: noqa + + del _write_callbacks + _write_callbacks = dict() # flake8: noqa + + +def selobj_finalize(): + """ + Finalize the selection object module + """ + global _read_callbacks, _write_callbacks + + del _read_callbacks + _read_callbacks = dict() # flake8: noqa + del _write_callbacks + _write_callbacks = dict() # flake8: noqa diff --git a/nfv/nfv-common/nfv_common/state_machine/__init__.py b/nfv/nfv-common/nfv_common/state_machine/__init__.py new file mode 100755 index 00000000..b44ff531 --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/__init__.py @@ -0,0 +1,14 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _state import State +from _state_task import StateTask +from _state_task_work import StateTaskWork +from _state_task_result import STATE_TASK_RESULT, state_task_result_update +from _state_task_work_result import STATE_TASK_WORK_RESULT +from _state_exception import StateException +from _state_machine import StateMachine diff --git a/nfv/nfv-common/nfv_common/state_machine/_state.py b/nfv/nfv-common/nfv_common/state_machine/_state.py new file mode 100755 index 00000000..dc59a410 --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/_state.py @@ -0,0 +1,56 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.state_machine.state') + + +class State(object): + """ + State Object + """ + def __init__(self, name): + """ + Create State + """ + self._name = name + + @property + def name(self): + """ + Returns the name of the state + """ + return self._name + + def __str__(self): + """ + Returns the name of the state + """ + return self._name + + def enter(self, context, *context_args, **context_kwargs): + """ + Called by the State Machine to enter this state + """ + raise NotImplementedError + + def exit(self, context): + """ + Called by the State Machine to exit this state + """ + raise NotImplementedError + + def transition(self, context, event, event_data, to_state): + """ + Called by the State Machine to transition from this state + """ + raise NotImplementedError + + def handle_event(self, context, event, event_data=None): + """ + Called by the State Machine to handle an event + """ + raise NotImplementedError diff --git a/nfv/nfv-common/nfv_common/state_machine/_state_exception.py b/nfv/nfv-common/nfv_common/state_machine/_state_exception.py new file mode 100755 index 00000000..34627ae1 --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/_state_exception.py @@ -0,0 +1,47 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.state_machine.state_exception') + + +class StateException(Exception): + """ + State Exception + """ + def __init__(self, message, reason): + """ + Create a State exception + """ + super(StateException, self).__init__(message, reason) + self._reason = reason # a message string or another exception + self._message = message + + def __str__(self): + """ + Return a string representing the exception + """ + return "[State Exception:reason=%s]" % self._reason + + def __repr__(self): + """ + Provide a representation of the exception + """ + return str(self) + + @property + def message(self): + """ + Returns the message for the exception + """ + return self._message + + @property + def reason(self): + """ + Returns the reason for the exception + """ + return self._reason diff --git a/nfv/nfv-common/nfv_common/state_machine/_state_machine.py b/nfv/nfv-common/nfv_common/state_machine/_state_machine.py new file mode 100755 index 00000000..75bc0f04 --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/_state_machine.py @@ -0,0 +1,155 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import weakref + +from nfv_common import debug + +from _state_exception import StateException + +DLOG = debug.debug_get_logger('nfv_common.state_machine.state_machine') + + +class StateMachine(object): + """ + State Machine Object + """ + def __init__(self, context, context_args, context_kwargs, initial_state, + states): + """ + Create State Machine + """ + if context_args is None: + context_args = tuple() + + if context_kwargs is None: + context_kwargs = dict() + + self._context_reference = weakref.ref(context) + self._context_args = context_args + self._context_kwargs = context_kwargs + self._states = states + self._current_state = initial_state + self._state_change_callbacks = list() + self._transitioning = False + self._event_backlog_state = None + self._event_backlog = list() + + @property + def _context(self): + """ + Returns the context + """ + context = self._context_reference() + return context + + @property + def current_state(self): + """ + Returns the current state + """ + return self._current_state + + def register_state_change_callback(self, callback): + """ + Register state change callback + """ + if callback not in self._state_change_callbacks: + self._state_change_callbacks.append(callback) + + def handle_event(self, event, event_data=None): + """ + Handle event + """ + if self._transitioning: + self._event_backlog.append((self._event_backlog_state, event, + event_data)) + return + + try: + prev_state = self._current_state + next_state_name = self._current_state.handle_event( + self._context, event, event_data) + next_state = self._states[next_state_name] + + if prev_state != self._current_state: + # Nested handle event calls, we have already moved away + DLOG.verbose("Nested handle event calls detected, " + "prev_state=%s, current_state=%s." + % (prev_state.name, self.current_state.name)) + return + + if next_state_name != prev_state.name: + # Attempt to exit the current state + try: + prev_state.exit(self._context) + + except StateException as e: + DLOG.error("Caught exception while trying to exit state " + "(%s), event=%s, error=%s." + % (prev_state, event, e)) + return + + # Attempt to transition from the current state + try: + prev_state.transition(self._context, event, event_data, + next_state) + + except StateException as e: + DLOG.error("Caught exception while trying to transition " + "from state (%s) to state (%s), event=%s, " + "error=%s." % (prev_state, next_state, event, e)) + prev_state.enter(self._context, *self._context_args, + **self._context_kwargs) + return + + # Attempt to enter the next state + try: + self._transitioning = True + self._event_backlog_state = next_state + next_state.enter(self._context, *self._context_args, + **self._context_kwargs) + self._current_state = next_state + + for callback in self._state_change_callbacks: + callback(prev_state, next_state, event) + + event_backlog = list(self._event_backlog) + + self._transitioning = False + self._event_backlog_state = None + del self._event_backlog[:] + + for event_state, event, event_data in event_backlog: + if event_state != self._current_state: + DLOG.info("Ignoring event %s, no longer in state " + "%s, now in state %s." + % (event, event_state, + self._current_state)) + else: + DLOG.info("Handling event backlog, event=%s while " + "transitioning to state %s." + % (event, self._current_state)) + self.handle_event(event, event_data) + + del event_backlog[:] + + except StateException as e: + DLOG.error("Caught exception while trying to enter state " + "(%s) from state (%s), event=%s, error=%s." + % (next_state, prev_state, event, e)) + self._transitioning = False + self._event_backlog_state = None + del self._event_backlog[:] + prev_state.transition(self._context, event, event_data, + prev_state) + prev_state.enter(self._context, *self._context_args, + **self._context_kwargs) + return + + except StateException as e: + DLOG.error("Caught exception while trying to handle event (%s), " + "error=%s." % (event, e)) + return diff --git a/nfv/nfv-common/nfv_common/state_machine/_state_task.py b/nfv/nfv-common/nfv_common/state_machine/_state_task.py new file mode 100755 index 00000000..78643f49 --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/_state_task.py @@ -0,0 +1,304 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import timers +from nfv_common import debug +from nfv_common.helpers import coroutine + +from _state_task_result import STATE_TASK_RESULT, state_task_result_update +from _state_task_work_result import STATE_TASK_WORK_RESULT + +DLOG = debug.debug_get_logger('nfv_common.state_machine.state_task') + + +class StateTask(object): + """ + State Task + """ + def __init__(self, name, task_work_list): + self._name = name + self._current_task_work = 0 + self._task_work_timer_id = None + self._task_work_list = task_work_list + self._task_result = STATE_TASK_RESULT.SUCCESS + self._task_result_reason = '' + self._timer_id = None + self._timeout_in_secs = 0 + for task_work in task_work_list: + self._timeout_in_secs += task_work.timeout_in_secs + if 0 < self._timeout_in_secs: + self._timeout_in_secs += 1 + self._task_inprogress = False + + def __del__(self): + self._cleanup() + + @property + def name(self): + """ + Returns the name of the task + """ + return self._name + + def _cleanup(self): + """ + State Task Cleanup + """ + if self._timer_id is not None: + timers.timers_delete_timer(self._timer_id) + self._timer_id = None + + if self._task_work_timer_id is not None: + timers.timers_delete_timer(self._task_work_timer_id) + self._task_work_timer_id = None + + def _abort(self): + """ + State Task Internal Abort + """ + DLOG.debug("Task (%s) abort." % self._name) + + if self._task_inprogress and 0 < len(self._task_work_list): + for idx in range(self._current_task_work, -1, -1): + task_work = self._task_work_list[idx] + task_work.abort() + DLOG.debug("Task (%s) aborted work (%s)." + % (self._name, task_work.name)) + self._current_task_work = 0 + self._task_inprogress = False + self._cleanup() + + def abort(self): + """ + State Task Abort + """ + self._task_result = STATE_TASK_RESULT.ABORTED + self._task_result_reason = 'aborted' + self._abort() + + def start(self): + """ + State Task Start + """ + self._cleanup() + self._current_task_work = 0 + self._task_inprogress = True + self._task_result = STATE_TASK_RESULT.SUCCESS + self._task_result_reason = 'success' + self._timer_id = timers.timers_create_timer(self._name, + self._timeout_in_secs, + self._timeout_in_secs, + self._timeout) + self._run() + + def refresh_timeouts(self): + """ + State Task Refresh Timeouts + """ + if self._timer_id is None: + # No need to refresh task timer, task not started + return + + timers.timers_delete_timer(self._timer_id) + self._timer_id = None + + # Calculate overall task timeout + self._timeout_in_secs = 0 + for task_work in self._task_work_list: + self._timeout_in_secs += task_work.timeout_in_secs + if 0 < self._timeout_in_secs: + self._timeout_in_secs += 1 + + # Re-start task timer + self._timer_id = timers.timers_create_timer(self._name, + self._timeout_in_secs, + self._timeout_in_secs, + self._timeout) + + if self._task_work_timer_id is None: + # No need to refresh task work timer, no task work running + return + + timers.timers_delete_timer(self._task_work_timer_id) + self._task_work_timer_id = None + + if len(self._task_work_list) <= self._current_task_work: + # No need to refresh task work timer, no current task work running + return + + # Re-start task work timer + task_work = self._task_work_list[self._current_task_work] + if 0 < task_work.timeout_in_secs: + self._task_work_timer_id = timers.timers_create_timer( + task_work.name, task_work.timeout_in_secs, + task_work.timeout_in_secs, self._task_work_timeout) + + def _run(self): + """ + State Task Run + """ + if not self._task_inprogress: + DLOG.debug("Task (%s) not inprogress." % self._name) + return + + for idx in range(self._current_task_work, len(self._task_work_list), 1): + task_work = self._task_work_list[idx] + if self._task_work_timer_id is not None: + timers.timers_delete_timer(self._task_work_timer_id) + self._task_work_timer_id = None + + DLOG.debug("Task %s running %s work." % (self._name, + task_work.name)) + + task_work_result, task_work_result_reason = task_work.run() + self._current_task_work = idx + + if STATE_TASK_WORK_RESULT.WAIT == task_work_result: + if 0 < task_work.timeout_in_secs: + self._task_work_timer_id = timers.timers_create_timer( + task_work.name, task_work.timeout_in_secs, + task_work.timeout_in_secs, self._task_work_timeout) + + DLOG.debug("Task (%s) is waiting for work (%s) to complete, " + "timeout_in_secs=%s." % (self._name, task_work.name, + task_work.timeout_in_secs)) + break + else: + self._task_result, self._task_result_reason = \ + state_task_result_update( + self._task_result, self._task_result_reason, + task_work_result, task_work_result_reason) + + if STATE_TASK_RESULT.FAILED == self._task_result \ + or STATE_TASK_RESULT.ABORTED == self._task_result \ + or STATE_TASK_RESULT.TIMED_OUT == self._task_result: + self._abort() + self._complete(self._task_result, self._task_result_reason) + break + else: + DLOG.debug("Task (%s) done running." % self._name) + self._task_inprogress = False + self._cleanup() + self._complete(self._task_result, self._task_result_reason) + + def inprogress(self): + """ + Returns if the task is inprogress or not + """ + return self._task_inprogress + + def is_failed(self): + """ + Return true if this task is failed + """ + return STATE_TASK_RESULT.FAILED == self._task_result + + def timed_out(self): + """ + Return true if this task has timed out + """ + return STATE_TASK_RESULT.TIMED_OUT == self._task_result + + def aborted(self): + """ + Return true if this task was aborted + """ + return STATE_TASK_RESULT.ABORTED == self._task_result + + @coroutine + def _timeout(self): + """ + State Task Timeout + """ + (yield) + DLOG.debug("Task (%s) timed out, timeout_in_secs=%s." + % (self._name, self._timeout_in_secs)) + self._abort() + self._task_result = STATE_TASK_RESULT.TIMED_OUT + self._task_result_reason = 'timeout' + self._complete(self._task_result, self._task_result_reason) + + def task_work_complete(self, task_work_result, task_work_result_reason=None): + """ + State Task Work Complete + """ + task_work = self._task_work_list[self._current_task_work] + DLOG.debug("Task (%s) work (%s) complete, result=%s, reason=%s." + % (self._name, task_work.name, task_work_result, + task_work_result_reason)) + + updated_task_work_result, updated_task_work_result_reason = \ + task_work.complete(task_work_result, task_work_result_reason) + + if task_work_result != updated_task_work_result: + DLOG.debug("Task (%s) work (%s) complete, result updated, " + "was_result=%s, now_result=%s." + % (self._name, task_work.name, task_work_result, + updated_task_work_result)) + task_work_result = updated_task_work_result + task_work_result_reason = updated_task_work_result_reason + + self._task_result, self._task_result_reason = \ + state_task_result_update(self._task_result, self._task_result_reason, + task_work_result, task_work_result_reason) + + if STATE_TASK_RESULT.FAILED == self._task_result \ + or STATE_TASK_RESULT.ABORTED == self._task_result \ + or STATE_TASK_RESULT.TIMED_OUT == self._task_result: + self._abort() + self._complete(self._task_result, self._task_result_reason) + else: + self._current_task_work += 1 + self._run() + + @coroutine + def _task_work_timeout(self): + """ + State Task Work Timeout + """ + (yield) + if len(self._task_work_list) <= self._current_task_work: + DLOG.error("Task work timeout timer fired, but current task " + "work is invalid, current_task_work=%i." + % self._current_task_work) + return + + task_work = self._task_work_list[self._current_task_work] + DLOG.debug("Task (%s) work (%s) timed out, timeout_in_secs=%s." + % (self._name, task_work.name, task_work.timeout_in_secs)) + + task_work_result, task_work_result_reason = task_work.timeout() + if STATE_TASK_WORK_RESULT.TIMED_OUT == task_work_result: + self._abort() + self._task_result = STATE_TASK_RESULT.TIMED_OUT + self._task_result_reason = task_work_result_reason + self._complete(self._task_result, self._task_result_reason) + else: + self.task_work_complete(task_work_result, task_work_result_reason) + + def _complete(self, result, reason): + """ + State Task Internal Complete + """ + self.complete(result, reason) + + def complete(self, result, reason): + """ + State Task Complete (expected to be overridden by child class) + """ + DLOG.debug("Task (%s) complete." % self._name) + + def handle_event(self, event, event_data=None): + """ + State Task Handle Event (expected to be overridden by child class) + """ + DLOG.debug("Task (%s) handle event (%s)." % (self._name, event)) + handled = False + + if self._task_inprogress: + task_work = self._task_work_list[self._current_task_work] + handled = task_work.handle_event(event, event_data) + + return handled diff --git a/nfv/nfv-common/nfv_common/state_machine/_state_task_result.py b/nfv/nfv-common/nfv_common/state_machine/_state_task_result.py new file mode 100755 index 00000000..5265adb2 --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/_state_task_result.py @@ -0,0 +1,63 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six + +from nfv_common.helpers import Constant, Singleton + +from _state_task_work_result import STATE_TASK_WORK_RESULT + + +@six.add_metaclass(Singleton) +class _StateTaskResult(object): + """ + State Task Result - Constants + """ + SUCCESS = Constant('success') + FAILED = Constant('failed') + DEGRADED = Constant('degraded') + ABORTED = Constant('aborted') + TIMED_OUT = Constant('timed-out') + + +def state_task_result_update(task_result, task_result_reason, task_work_result, + task_work_result_reason): + """ + Update State Task Result given a state task work result + """ + if STATE_TASK_WORK_RESULT.WAIT == task_result: + # Nothing to update + return task_result, task_result_reason + + if STATE_TASK_RESULT.SUCCESS == task_result: + + if STATE_TASK_WORK_RESULT.FAILED == task_work_result: + return STATE_TASK_RESULT.FAILED, task_work_result_reason + + elif STATE_TASK_WORK_RESULT.DEGRADED == task_work_result: + return STATE_TASK_RESULT.DEGRADED, task_work_result_reason + + elif STATE_TASK_WORK_RESULT.ABORTED == task_work_result: + return STATE_TASK_RESULT.ABORTED, task_work_result_reason + + elif STATE_TASK_WORK_RESULT.TIMED_OUT == task_work_result: + return STATE_TASK_RESULT.TIMED_OUT, task_work_result_reason + + elif STATE_TASK_RESULT.DEGRADED == task_result: + + if STATE_TASK_WORK_RESULT.FAILED == task_work_result: + return STATE_TASK_RESULT.FAILED, task_work_result_reason + + elif STATE_TASK_WORK_RESULT.ABORTED == task_work_result: + return STATE_TASK_RESULT.ABORTED, task_work_result_reason + + elif STATE_TASK_WORK_RESULT.TIMED_OUT == task_work_result: + return STATE_TASK_RESULT.TIMED_OUT, task_work_result_reason + + return task_result, task_result_reason + + +# Constant Instantiation +STATE_TASK_RESULT = _StateTaskResult() diff --git a/nfv/nfv-common/nfv_common/state_machine/_state_task_work.py b/nfv/nfv-common/nfv_common/state_machine/_state_task_work.py new file mode 100755 index 00000000..8a245618 --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/_state_task_work.py @@ -0,0 +1,104 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import weakref + +from nfv_common import debug + +from _state_task_result import STATE_TASK_WORK_RESULT + +DLOG = debug.debug_get_logger('nfv_common.state_machine.state_task_work') + + +class StateTaskWork(object): + """ + State Task Work + """ + def __init__(self, name, task, force_pass=False, timeout_in_secs=1, + max_retries=1): + self._name = name + self._force_pass = force_pass + self._max_retries = max_retries + self._timeout_in_secs = timeout_in_secs + self._task_reference = weakref.ref(task) + + @property + def name(self): + """ + Returns the name of the task work + """ + return self._name + + @property + def force_pass(self): + """ + Returns the true if force_pass has been set, otherwise false + """ + return self._force_pass + + @property + def max_retries(self): + """ + Returns the maximum retry attempts for task work to be completed + """ + return self._max_retries + + @property + def timeout_in_secs(self): + """ + Returns the maximum amount of time to wait for completion + """ + return self._timeout_in_secs + + @property + def task(self): + task = self._task_reference() + return task + + def extend_timeout(self, timeout_in_secs): + """ + Allow the task work timeout to be extended + """ + DLOG.verbose("Extending state task work timeout for %s to %s." + % (self._name, timeout_in_secs)) + self._timeout_in_secs = timeout_in_secs + self.task.refresh_timeouts() + + def run(self): + """ + State Task Work Run (expected to be overridden by child class) + """ + DLOG.verbose("Default state task work run for %s." % self._name) + return STATE_TASK_WORK_RESULT.SUCCESS, '' + + def complete(self, result, reason): + """ + State Task Work Completed (can be overridden by child class) + """ + DLOG.verbose("Default state task work complete for %s, result=%s, " + "reason=%s." % (self._name, result, reason)) + return result, reason + + def abort(self): + """ + State Task Work Abort (can be overridden by child class) + """ + DLOG.verbose("Default state task work abort for %s." % self._name) + + def timeout(self): + """ + State Task Work Timeout (can be overridden by child class) + """ + DLOG.verbose("Default state task work timeout for %s, timeout=%s secs." + % (self._name, self._timeout_in_secs)) + return STATE_TASK_WORK_RESULT.TIMED_OUT, '' + + def handle_event(self, event, event_data=None): + """ + State Task Work Handle Event (expected to be overridden by child class) + """ + DLOG.verbose("Default state task work handle event for %s." + % self._name) + return False diff --git a/nfv/nfv-common/nfv_common/state_machine/_state_task_work_result.py b/nfv/nfv-common/nfv_common/state_machine/_state_task_work_result.py new file mode 100755 index 00000000..dec9746f --- /dev/null +++ b/nfv/nfv-common/nfv_common/state_machine/_state_task_work_result.py @@ -0,0 +1,25 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six + +from nfv_common.helpers import Constant, Singleton + + +@six.add_metaclass(Singleton) +class _StateTaskWorkResult(object): + """ + State Task Work Result - Constants + """ + WAIT = Constant('wait') + SUCCESS = Constant('success') + FAILED = Constant('failed') + DEGRADED = Constant('degraded') + ABORTED = Constant('aborted') + TIMED_OUT = Constant('timed-out') + + +# Constant Instantiation +STATE_TASK_WORK_RESULT = _StateTaskWorkResult() diff --git a/nfv/nfv-common/nfv_common/strategy/__init__.py b/nfv/nfv-common/nfv_common/strategy/__init__.py new file mode 100755 index 00000000..8c4bf407 --- /dev/null +++ b/nfv/nfv-common/nfv_common/strategy/__init__.py @@ -0,0 +1,15 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _strategy_defs import STRATEGY_APPLY_TYPE, STRATEGY_STATE, STRATEGY_PHASE +from _strategy_defs import STRATEGY_ALARM_RESTRICTION_TYPES +from _strategy_result import STRATEGY_RESULT, STRATEGY_PHASE_RESULT +from _strategy_result import STRATEGY_STAGE_RESULT, STRATEGY_STEP_RESULT +from _strategy_step import StrategyStep +from _strategy_stage import StrategyStage +from _strategy_phase import StrategyPhase +from _strategy import Strategy diff --git a/nfv/nfv-common/nfv_common/strategy/_strategy.py b/nfv/nfv-common/nfv_common/strategy/_strategy.py new file mode 100755 index 00000000..8b0c8b28 --- /dev/null +++ b/nfv/nfv-common/nfv_common/strategy/_strategy.py @@ -0,0 +1,526 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import json + +from nfv_common import debug + +from _strategy_defs import STRATEGY_PHASE, STRATEGY_STATE +from _strategy_result import STRATEGY_RESULT, strategy_result_update +from _strategy_phase import StrategyPhase + +DLOG = debug.debug_get_logger('nfv_common.strategy') + + +class Strategy(object): + """ + Strategy + """ + def __init__(self, uuid, name, state=None, current_phase=None, build_phase=None, + apply_phase=None, abort_phase=None): + self._uuid = uuid + self._name = name + + if state is None: + self._state = STRATEGY_STATE.INITIAL + else: + self._state = state + + if current_phase is None: + self._current_phase = STRATEGY_PHASE.INITIAL + else: + self._current_phase = current_phase + + if build_phase is None: + build_phase = StrategyPhase(STRATEGY_PHASE.BUILD) + + if apply_phase is None: + apply_phase = StrategyPhase(STRATEGY_PHASE.APPLY) + + if abort_phase is None: + abort_phase = StrategyPhase(STRATEGY_PHASE.ABORT) + + build_phase.strategy = self + apply_phase.strategy = self + abort_phase.strategy = self + + self._phase = dict() + self._phase[STRATEGY_PHASE.BUILD] = build_phase + self._phase[STRATEGY_PHASE.APPLY] = apply_phase + self._phase[STRATEGY_PHASE.ABORT] = abort_phase + + def __del__(self): + del self._phase[STRATEGY_PHASE.BUILD] + del self._phase[STRATEGY_PHASE.APPLY] + del self._phase[STRATEGY_PHASE.ABORT] + + @property + def uuid(self): + """ + Returns the uuid of the strategy + """ + return self._uuid + + @property + def name(self): + """ + Returns the name of the strategy + """ + return self._name + + @property + def state(self): + """ + Returns the state of the strategy + """ + return self._state + + @property + def current_phase(self): + """ + Returns the current phase being executed for the strategy + """ + return self._current_phase + + @property + def build_phase(self): + """ + Returns the build phase of the strategy + """ + return self._phase[STRATEGY_PHASE.BUILD] + + @property + def apply_phase(self): + """ + Returns the apply phase of the strategy + """ + return self._phase[STRATEGY_PHASE.APPLY] + + @property + def abort_phase(self): + """ + Returns the abort phase of the strategy + """ + return self._phase[STRATEGY_PHASE.ABORT] + + def is_building(self): + """ + Returns true if the strategy is building + """ + return STRATEGY_STATE.BUILDING == self._state + + def is_build_failed(self): + """ + Returns true if the strategy build failed + """ + return (STRATEGY_STATE.BUILD_FAILED == self._state or + self.build_phase.is_failed()) + + def is_build_timed_out(self): + """ + Returns true if the strategy build timed out + """ + return (STRATEGY_STATE.BUILD_TIMEOUT == self._state or + self.build_phase.is_timed_out()) + + def is_ready_to_apply(self): + """ + Returns true if the strategy is ready to apply + """ + return STRATEGY_STATE.READY_TO_APPLY == self._state + + def is_applying(self): + """ + Returns true if the strategy is applying + """ + return STRATEGY_STATE.APPLYING == self._state + + def is_apply_failed(self): + """ + Returns true if the strategy apply failed + """ + return (STRATEGY_STATE.APPLY_FAILED == self._state or + self.apply_phase.is_failed()) + + def is_apply_timed_out(self): + """ + Returns true if the strategy apply timed out + """ + return (STRATEGY_STATE.APPLY_TIMEOUT == self._state or + self.apply_phase.is_timed_out()) + + def is_applied(self): + """ + Returns true if the strategy is applied + """ + return STRATEGY_STATE.APPLIED == self._state + + def is_aborting(self): + """ + Returns true if the strategy is aborting + """ + return STRATEGY_STATE.ABORTING == self._state + + def is_abort_failed(self): + """ + Returns true if the strategy abort failed + """ + return (STRATEGY_STATE.ABORT_FAILED == self._state or + self.abort_phase.is_failed()) + + def is_abort_timed_out(self): + """ + Returns true if the strategy abort timed out + """ + return (STRATEGY_STATE.ABORT_TIMEOUT == self._state or + self.abort_phase.is_timed_out()) + + def is_aborted(self): + """ + Returns true if the strategy is aborted + """ + return STRATEGY_STATE.ABORTED == self._state + + def _build(self): + """ + Strategy Build + """ + if STRATEGY_PHASE.INITIAL == self._current_phase: + if STRATEGY_STATE.INITIAL == self._state: + self._state = STRATEGY_STATE.BUILDING + self._current_phase = STRATEGY_PHASE.BUILD + self.build_phase.apply() + + def _apply(self, stage_id=None): + """ + Strategy Apply + """ + success = True + reason = '' + + if STRATEGY_PHASE.BUILD == self._current_phase: + if STRATEGY_STATE.READY_TO_APPLY == self._state: + if stage_id is None: + self._state = STRATEGY_STATE.APPLYING + self._current_phase = STRATEGY_PHASE.APPLY + self.apply_phase.apply() + + elif 0 == stage_id and stage_id < self.apply_phase.total_stages: + self._state = STRATEGY_STATE.APPLYING + self._current_phase = STRATEGY_PHASE.APPLY + self.apply_phase.apply(stage_id+1) + + else: + success = False + reason = ("invalid stage id %s for the apply, total-stages " + "are %s" % (stage_id, self.apply_phase.total_stages)) + + else: + if stage_id is None: + success = False + reason = self.build_phase.result_reason + else: + success = False + reason = ("apply of stage id %s failed: %s " + % (stage_id, self.build_phase.result_reason)) + + elif STRATEGY_PHASE.APPLY == self._current_phase: + if self._state in [STRATEGY_STATE.APPLIED, STRATEGY_STATE.APPLY_FAILED, + STRATEGY_STATE.APPLY_TIMEOUT, + STRATEGY_STATE.ABORTED, STRATEGY_STATE.ABORT_FAILED, + STRATEGY_STATE.ABORT_TIMEOUT]: + success = False + reason = "apply already completed" + + # Allow an apply after a single stage apply has completed + elif stage_id is None and self.apply_phase.current_stage == \ + self.apply_phase.stop_at_stage: + self.apply_phase.apply() + + elif stage_id is None or self.apply_phase.is_inprogress(): + success = False + reason = "apply already inprogress" + + elif stage_id < self.apply_phase.current_stage: + success = False + reason = "apply already complete for stage id %s" % stage_id + + elif stage_id >= self.apply_phase.total_stages: + success = False + reason = ("invalid stage id %s for the apply, total-stages are %s" + % (stage_id, self.apply_phase.total_stages)) + + elif self.apply_phase.current_stage != stage_id: + success = False + reason = ("stage id %s is not the next stage to be applied, " + "next-stage = %s" + % (stage_id, self.apply_phase.current_stage)) + + else: + self.apply_phase.apply(stage_id+1) + + else: + if stage_id is None: + success = False + reason = "apply not supported during an abort" + else: + success = False + reason = ("apply of stage id %s not supported during an abort" + % stage_id) + + return success, reason + + def _abort(self, stage_id=None): + """ + Strategy Abort + """ + if STRATEGY_PHASE.APPLY == self._current_phase: + if stage_id is not None: + if not self.apply_phase.is_inprogress() or \ + stage_id != self.apply_phase.current_stage: + reason = "apply not inprogress for stage id %s" % stage_id + return False, reason + + if self._state in [STRATEGY_STATE.APPLYING, STRATEGY_STATE.APPLY_FAILED, + STRATEGY_STATE.APPLY_TIMEOUT]: + self._state = STRATEGY_STATE.ABORTING + abort_phase = self.apply_phase.abort() + if not abort_phase: + abort_phase = StrategyPhase(STRATEGY_PHASE.ABORT) + abort_phase.strategy = self + self._phase[STRATEGY_PHASE.ABORT] = abort_phase + + # In the case of a single stage apply, if we are not currently + # applying anything, we need to go to the aborted state now. + if self.apply_phase.current_stage == self.apply_phase.stop_at_stage: + self._state = STRATEGY_STATE.ABORTED + self.abort_complete(STRATEGY_RESULT.ABORTED, "") + + elif STRATEGY_STATE.APPLIED != self._state: + self._state = STRATEGY_STATE.ABORTED + + else: + reason = "apply not inprogress" + return False, reason + else: + reason = "apply not inprogress" + return False, reason + + return True, '' + + def _handle_event(self, event, event_data=None): + """ + Strategy Handle Event + """ + handled = False + + if STRATEGY_STATE.BUILDING == self._state: + if STRATEGY_PHASE.BUILD == self._current_phase: + handled = self.build_phase.handle_event(event, event_data) + + elif STRATEGY_STATE.APPLYING == self._state: + if STRATEGY_PHASE.APPLY == self._current_phase: + handled = self.apply_phase.handle_event(event, event_data) + + elif STRATEGY_STATE.ABORTING == self._state: + if STRATEGY_PHASE.APPLY == self._current_phase: + handled = self.apply_phase.handle_event(event, event_data) + + elif STRATEGY_PHASE.ABORT == self._current_phase: + handled = self.abort_phase.handle_event(event, event_data) + + return handled + + def phase_save(self): + """ + Strategy Phase Save + """ + self.save() + + def phase_extend_timeout(self, phase): + """ + Strategy Phase Extend Timeout + """ + phase.refresh_timeouts() + + def phase_complete(self, phase, phase_result, phase_result_reason=None): + """ + Strategy Phase Complete + """ + self.save() + + result, result_reason = \ + strategy_result_update(STRATEGY_RESULT.INITIAL, '', + phase_result, phase_result_reason) + + if STRATEGY_STATE.BUILDING == self._state: + if self._phase[STRATEGY_PHASE.BUILD] == phase: + if phase.is_success() or phase.is_degraded(): + self._state = STRATEGY_STATE.READY_TO_APPLY + self.build_complete(result, result_reason) + + elif phase.is_failed(): + self._state = STRATEGY_STATE.BUILD_FAILED + self.build_complete(result, result_reason) + + elif phase.is_timed_out(): + self._state = STRATEGY_STATE.BUILD_TIMEOUT + self.build_complete(result, result_reason) + + elif STRATEGY_STATE.APPLYING == self._state: + if self._phase[STRATEGY_PHASE.APPLY] == phase: + if phase.is_success() or phase.is_degraded(): + self._state = STRATEGY_STATE.APPLIED + self.apply_complete(result, result_reason) + + elif phase.is_failed(): + self._state = STRATEGY_STATE.APPLY_FAILED + self.apply_complete(result, result_reason) + self._abort() + self._current_phase = STRATEGY_PHASE.ABORT + self.abort_phase.apply() + + elif phase.is_timed_out(): + self._state = STRATEGY_STATE.APPLY_TIMEOUT + self.apply_complete(result, result_reason) + self._abort() + self._current_phase = STRATEGY_PHASE.ABORT + self.abort_phase.apply() + + elif STRATEGY_STATE.ABORTING == self._state: + if self._phase[STRATEGY_PHASE.APPLY] == phase: + if phase.is_success() or phase.is_degraded(): + self._state = STRATEGY_STATE.APPLIED + self.apply_complete(result, result_reason) + + elif phase.is_failed(): + self._state = STRATEGY_STATE.APPLY_FAILED + self.apply_complete(result, result_reason) + + elif phase.is_timed_out(): + self._state = STRATEGY_STATE.APPLY_TIMEOUT + self.apply_complete(result, result_reason) + + self._current_phase = STRATEGY_PHASE.ABORT + self.abort_phase.apply() + + elif self._phase[STRATEGY_PHASE.ABORT] == phase: + if phase.is_success() or phase.is_degraded(): + self._state = STRATEGY_STATE.ABORTED + self.abort_complete(result, result_reason) + + elif phase.is_failed(): + self._state = STRATEGY_STATE.ABORT_FAILED + self.abort_complete(result, result_reason) + + elif phase.is_timed_out(): + self._state = STRATEGY_STATE.ABORT_TIMEOUT + self.abort_complete(result, result_reason) + + self.save() + + def refresh_timeouts(self): + """ + Strategy Refresh Timeouts + """ + self.build_phase.refresh_timeouts() + self.apply_phase.refresh_timeouts() + self.abort_phase.refresh_timeouts() + + def save(self): + """ + Strategy Save (can be overridden by child class) + """ + pass + + def build(self): + """ + Strategy Build (can be overridden by child class) + """ + self._build() + self.save() + + def build_complete(self, result, result_reason): + """ + Strategy Build Complete (can be overridden by child class) + """ + self.save() + return result, result_reason + + def apply(self, stage_id): + """ + Strategy Apply (can be overridden by child class) + """ + success, reason = self._apply(stage_id) + self.save() + return success, reason + + def apply_complete(self, result, result_reason): + """ + Strategy Apply Complete (can be overridden by child class) + """ + self.save() + return result, result_reason + + def abort(self, stage_id): + """ + Strategy Abort (can be overridden by child class) + """ + success, reason = self._abort(stage_id) + self.save() + return success, reason + + def abort_complete(self, result, result_reason): + """ + Strategy Abort Complete (can be overridden by child class) + """ + self.save() + return result, result_reason + + def handle_event(self, event, event_data=None): + """ + Strategy Handle Event (can be overridden by child class) + """ + return self._handle_event(event, event_data) + + def from_dict(self, data, build_phase=None, apply_phase=None, abort_phase=None): + """ + Initializes a strategy object using the given dictionary + """ + Strategy.__init__(self, data['uuid'], data['name'], data['state'], + data['current_phase'], build_phase, apply_phase, + abort_phase) + return self + + def as_dict(self): + """ + Represent the strategy as a dictionary + """ + data = dict() + data['uuid'] = self.uuid + data['name'] = self.name + data['state'] = self.state + data['current_phase'] = self._current_phase + if self.build_phase.name == self._current_phase: + data['current_phase_completion_percentage'] \ + = self.build_phase.completion_percentage + elif self.apply_phase.name == self._current_phase: + data['current_phase_completion_percentage'] \ + = self.apply_phase.completion_percentage + elif self.abort_phase.name == self._current_phase: + data['current_phase_completion_percentage'] \ + = self.abort_phase.completion_percentage + else: + data['current_phase_completion_percentage'] = 0 + data['build_phase'] = self.build_phase.as_dict() + data['apply_phase'] = self.apply_phase.as_dict() + data['abort_phase'] = self.abort_phase.as_dict() + return data + + def as_json(self): + """ + Represent the strategy as json + """ + return json.dumps(self.as_dict()) diff --git a/nfv/nfv-common/nfv_common/strategy/_strategy_defs.py b/nfv/nfv-common/nfv_common/strategy/_strategy_defs.py new file mode 100755 index 00000000..73a31768 --- /dev/null +++ b/nfv/nfv-common/nfv_common/strategy/_strategy_defs.py @@ -0,0 +1,65 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six + +from nfv_common.helpers import Constant, Constants, Singleton + + +@six.add_metaclass(Singleton) +class StrategyApplyTypes(Constants): + """ + Strategy - Apply Type Constants + """ + SERIAL = Constant('serial') + PARALLEL = Constant('parallel') + IGNORE = Constant('ignore') + + +@six.add_metaclass(Singleton) +class StrategyAlarmRestrictionTypes(Constants): + """ + Strategy - Alarm Restriction Type Constants + """ + STRICT = Constant('strict') + RELAXED = Constant('relaxed') + + +@six.add_metaclass(Singleton) +class StrategyPhases(Constants): + """ + Strategy - Phase Constants + """ + INITIAL = Constant('initial') + BUILD = Constant('build') + APPLY = Constant('apply') + ABORT = Constant('abort') + + +@six.add_metaclass(Singleton) +class StrategyStates(Constants): + """ + Strategy - State Constants + """ + INITIAL = Constant('initial') + BUILDING = Constant('building') + BUILD_FAILED = Constant('build-failed') + BUILD_TIMEOUT = Constant('build-timeout') + READY_TO_APPLY = Constant('ready-to-apply') + APPLYING = Constant('applying') + APPLY_FAILED = Constant('apply-failed') + APPLY_TIMEOUT = Constant('apply-timeout') + APPLIED = Constant('applied') + ABORTING = Constant('aborting') + ABORT_FAILED = Constant('abort-failed') + ABORT_TIMEOUT = Constant('abort-timeout') + ABORTED = Constant('aborted') + + +# Constant Instantiation +STRATEGY_APPLY_TYPE = StrategyApplyTypes() +STRATEGY_ALARM_RESTRICTION_TYPES = StrategyAlarmRestrictionTypes() +STRATEGY_PHASE = StrategyPhases() +STRATEGY_STATE = StrategyStates() diff --git a/nfv/nfv-common/nfv_common/strategy/_strategy_phase.py b/nfv/nfv-common/nfv_common/strategy/_strategy_phase.py new file mode 100755 index 00000000..4eb13a36 --- /dev/null +++ b/nfv/nfv-common/nfv_common/strategy/_strategy_phase.py @@ -0,0 +1,614 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import weakref + +from datetime import datetime + +from nfv_common import timers +from nfv_common import debug +from nfv_common.helpers import coroutine + +from _strategy_defs import STRATEGY_PHASE +from _strategy_result import STRATEGY_PHASE_RESULT, STRATEGY_STAGE_RESULT +from _strategy_result import STRATEGY_STEP_RESULT +from _strategy_result import strategy_phase_result_update + +DLOG = debug.debug_get_logger('nfv_common.strategy.phase') + + +class StrategyPhase(object): + """ + Strategy Phase + """ + def __init__(self, name): + self._name = name + self._current_stage = 0 + self._stop_at_stage = 0 + self._stage_timer_id = None + self._stages = list() + self._result = STRATEGY_PHASE_RESULT.INITIAL + self._result_reason = '' + self._timer_id = None + self._timeout_in_secs = 0 + self._inprogress = False + self._strategy_reference = None + self._start_date_time = '' + self._end_date_time = '' + + def __del__(self): + self._cleanup() + + @property + def name(self): + """ + Returns the name of the strategy phase + """ + return self._name + + @property + def strategy(self): + """ + Returns the strategy this phase is a member of + """ + if self._strategy_reference is not None: + return self._strategy_reference() + return None + + @strategy.setter + def strategy(self, strategy_value): + """ + Set the strategy that this phase is a member of + """ + self._strategy_reference = weakref.ref(strategy_value) + + @property + def current_stage(self): + """ + Return the current stage + """ + return self._current_stage + + @property + def stop_at_stage(self): + """ + Return the stage to stop at + """ + return self._stop_at_stage + + @property + def total_stages(self): + """ + Returns the number of stages + """ + return len(self._stages) + + @property + def stages(self): + """ + Returns the stages for this phase + """ + return self._stages + + @property + def timeout_in_secs(self): + """ + Returns the maximum amount of time to wait for completion + """ + return self._timeout_in_secs + + @property + def result(self): + """ + Returns the result of the strategy phase + """ + return self._result + + @result.setter + def result(self, result): + """ + Updates the result of the strategy phase + """ + self._result = result + + @property + def result_reason(self): + """ + Returns the reason for the result of the strategy phase + """ + return self._result_reason + + @result_reason.setter + def result_reason(self, reason): + """ + Updates the reason for the result of the strategy phase + """ + self._result_reason = reason + + @property + def start_date_time(self): + """ + Returns the start date-time of the strategy phase + """ + return self._start_date_time + + @start_date_time.setter + def start_date_time(self, date_time_str): + """ + Updates the start date-time of the strategy phase + """ + self._start_date_time = date_time_str + + @property + def end_date_time(self): + """ + Returns the end date-time of the strategy phase + """ + return self._end_date_time + + @end_date_time.setter + def end_date_time(self, date_time_str): + """ + Updates the end date-time of the strategy phase + """ + self._end_date_time = date_time_str + + @property + def completion_percentage(self): + """ + Returns the percentage completed + """ + completed_steps = 0 + total_steps = 0 + + if self._inprogress: + for stage in self._stages: + for step in stage.steps: + if step.result in [STRATEGY_STEP_RESULT.SUCCESS, + STRATEGY_STEP_RESULT.DEGRADED, + STRATEGY_STEP_RESULT.FAILED, + STRATEGY_STEP_RESULT.TIMED_OUT, + STRATEGY_STEP_RESULT.ABORTED]: + completed_steps += 1 + total_steps += 1 + + if 0 == total_steps: + return 100 + + return int((completed_steps * 100) / total_steps) + + def is_inprogress(self): + """ + Returns true if the phase is inprogress + """ + if self._inprogress: + stage = self._stages[self._current_stage] + return stage.is_inprogress() + return False + + def is_degraded(self): + """ + Returns true if the phase is degraded + """ + return STRATEGY_PHASE_RESULT.DEGRADED == self._result + + def is_failed(self): + """ + Returns true if the phase has failed + """ + return STRATEGY_PHASE_RESULT.FAILED == self._result + + def is_timed_out(self): + """ + Returns true if the phase has timed out + """ + return STRATEGY_PHASE_RESULT.TIMED_OUT == self._result + + def is_aborted(self): + """ + Returns true if the phase is aborted + """ + return STRATEGY_PHASE_RESULT.ABORTED == self._result + + def is_success(self): + """ + Returns true if the phase completed successfully + """ + return STRATEGY_PHASE_RESULT.SUCCESS == self._result + + def add_stage(self, stage): + """ + Add a stage to this strategy phase + """ + stage.id = len(self._stages) + stage.phase = self + self._stages.append(stage) + + def _save(self): + """ + Phase Save + """ + if self.strategy is not None: + self.strategy.phase_save() + else: + DLOG.info("Strategy reference is invalid for phase (%s)." % self._name) + + def _cleanup(self): + """ + Phase Cleanup + """ + DLOG.info("Phase (%s) cleanup called" % self._name) + + if self._timer_id is not None: + timers.timers_delete_timer(self._timer_id) + self._timer_id = None + + if self._stage_timer_id is not None: + timers.timers_delete_timer(self._stage_timer_id) + self._stage_timer_id = None + + def _abort(self): + """ + Phase Abort + """ + abort_list = list() + + if STRATEGY_PHASE_RESULT.INITIAL == self._result: + self._result = STRATEGY_PHASE_RESULT.ABORTED + self._result_reason = '' + + elif self._inprogress: + self._result = STRATEGY_PHASE_RESULT.ABORTING + self._result_reason = '' + + if 0 < len(self._stages): + if self._current_stage < len(self._stages): + for idx in range(self._current_stage, -1, -1): + stage = self._stages[idx] + abort_stages = stage.abort() + if abort_stages: + abort_list += abort_stages + + DLOG.info("Phase (%s) abort stage (%s)." + % (self._name, stage.name)) + + DLOG.info("Phase (%s) abort." % self._name) + return abort_list + + @coroutine + def _timeout(self): + """ + Phase Timeout + """ + (yield) + DLOG.info("Phase (%s) timed out, timeout_in_secs=%s." + % (self._name, self._timeout_in_secs)) + + if not self._inprogress: + DLOG.info("Phase timeout timer fired, but phase %s is not inprogress." + % self.name) + return + + self._result = STRATEGY_PHASE_RESULT.TIMED_OUT + self._result_reason = 'timeout' + self._complete(self._result, self._result_reason) + + def _complete(self, result, reason): + """ + Phase Internal Complete + """ + self._inprogress = False + self._cleanup() + self._save() + self._end_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + return self.complete(result, reason) + + def _apply(self): + """ + Phase Apply + """ + if not self._inprogress: + if 0 == self._current_stage: + self._cleanup() + self._current_stage = 0 + self._inprogress = True + self._result = STRATEGY_PHASE_RESULT.INPROGRESS + self._result_reason = '' + self._start_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + else: + DLOG.debug("Phase (%s) not inprogress." % self._name) + return self._result, self._result_reason + + if self._timer_id is None: + timeout_in_secs = 0 + for idx in range(self._current_stage, self._stop_at_stage, 1): + stage = self._stages[idx] + timeout_in_secs += stage.timeout_in_secs + + if 0 < timeout_in_secs: + self._timeout_in_secs = timeout_in_secs + 1 + self._timer_id = timers.timers_create_timer( + self._name, self._timeout_in_secs, self._timeout_in_secs, + self._timeout) + + for idx in range(self._current_stage, self._stop_at_stage, 1): + stage = self._stages[idx] + if self._stage_timer_id is not None: + timers.timers_delete_timer(self._stage_timer_id) + self._stage_timer_id = None + + DLOG.info("Phase %s running %s stage." % (self._name, stage.name)) + + stage_result, stage_result_reason = stage.apply() + self._current_stage = idx + + if STRATEGY_STAGE_RESULT.WAIT == stage_result: + if 0 < stage.timeout_in_secs: + self._stage_timer_id = timers.timers_create_timer( + stage.name, stage.timeout_in_secs, stage.timeout_in_secs, + self._stage_timeout) + + DLOG.debug("Phase (%s) is waiting for stage (%s) to complete, " + "timeout_in_secs=%s." % (self._name, stage.name, + stage.timeout_in_secs)) + self._save() + return STRATEGY_PHASE_RESULT.WAIT, '' + + else: + DLOG.debug("Phase (%s) stage (%s) complete, result=%s, reason=%s." + % (self._name, stage.name, stage_result, + stage_result_reason)) + + self._result, self._result_reason = \ + strategy_phase_result_update(self._result, + self._result_reason, + stage_result, stage_result_reason) + + if STRATEGY_PHASE_RESULT.FAILED == self._result \ + or STRATEGY_PHASE_RESULT.ABORTED == self._result \ + or STRATEGY_PHASE_RESULT.TIMED_OUT == self._result: + return self._complete(self._result, self._result_reason) + else: + self._save() + + else: + # Check if this is an intermediate stop or the phase has been completed + if self._stop_at_stage == len(self._stages): + # Check for a phase with no stages + if 0 == self._current_stage: + self._result = STRATEGY_PHASE_RESULT.SUCCESS + self._result_reason = '' + + DLOG.debug("Phase (%s) done running, result=%s, reason=%s." + % (self._name, self._result, self._result_reason)) + return self._complete(self._result, self._result_reason) + else: + self._cleanup() + self._save() + return self._result, self._result_reason + + def stage_complete(self, stage_result, stage_result_reason=None): + """ + Strategy Stage Complete + """ + stage = self._stages[self._current_stage] + DLOG.debug("Phase (%s) stage (%s) complete, result=%s, reason=%s." + % (self._name, stage.name, stage_result, stage_result_reason)) + + self._result, self._result_reason = \ + strategy_phase_result_update(self._result, self._result_reason, + stage_result, stage_result_reason) + + if STRATEGY_PHASE_RESULT.ABORTING == self._result: + self._result = STRATEGY_PHASE_RESULT.ABORTED + self._result_reason = '' + self._complete(self._result, self._result_reason) + + elif STRATEGY_PHASE_RESULT.FAILED == self._result \ + or STRATEGY_STAGE_RESULT.ABORTED == self._result \ + or STRATEGY_STAGE_RESULT.TIMED_OUT == self._result: + self._complete(self._result, self._result_reason) + + else: + self._current_stage += 1 + self._apply() + + @coroutine + def _stage_timeout(self): + """ + Strategy Stage Timeout + """ + (yield) + if len(self._stages) <= self._current_stage: + DLOG.error("Stage timeout timer fired, but current stage is invalid, " + "current_stage=%i." % self._current_stage) + return + + if not self._inprogress: + DLOG.info("Stage timeout timer fired, but phase %s is not inprogress, " + "current_stage=%i." % (self.name, self._current_stage)) + return + + stage = self._stages[self._current_stage] + DLOG.info("Phase (%s) stage (%s) timed out, timeout_in_secs=%s." + % (self._name, stage.name, stage.timeout_in_secs)) + + stage_result, stage_result_reason = stage.timeout() + + if STRATEGY_STAGE_RESULT.TIMED_OUT == stage_result: + if STRATEGY_PHASE_RESULT.ABORTING == self._result: + self._result = STRATEGY_PHASE_RESULT.ABORTED + self._result_reason = stage_result_reason + else: + self._result = STRATEGY_PHASE_RESULT.TIMED_OUT + self._result_reason = stage_result_reason + + self._complete(self._result, self._result_reason) + else: + self.stage_complete(stage_result, stage_result_reason) + + def stage_extend_timeout(self): + """ + Strategy Stage Extend Timeout + """ + if self.strategy is not None: + self.strategy.phase_extend_timeout(self) + else: + self.refresh_timeouts() + + def stage_save(self): + """ + Strategy Stage Save + """ + self._save() + + def refresh_timeouts(self): + """ + Phase Refresh Timeouts + """ + if not self._inprogress: + # No need to refresh phase timer, phase not started + return + + if self._timer_id is not None: + timers.timers_delete_timer(self._timer_id) + self._timer_id = None + + # Calculate overall phase timeout + timeout_in_secs = 0 + for idx in range(self._current_stage, self._stop_at_stage, 1): + stage = self._stages[idx] + timeout_in_secs += stage.timeout_in_secs + + if 0 == timeout_in_secs: + # No need to refresh phase timer, phase not inprogress + return + + self._timeout_in_secs = timeout_in_secs + 1 + + # Re-start phase timer + self._timer_id = timers.timers_create_timer(self._name, + self._timeout_in_secs, + self._timeout_in_secs, + self._timeout) + + DLOG.verbose("Started overall strategy phase timer, timeout_in_sec=%s" + % self._timeout_in_secs) + + if self._stage_timer_id is not None: + timers.timers_delete_timer(self._stage_timer_id) + self._stage_timer_id = None + + if len(self._stages) <= self._current_stage: + # No need to refresh strategy stage timer, no current stage being + # applied + return + + # Re-start stage timer + stage = self._stages[self._current_stage] + if 0 < stage.timeout_in_secs: + self._stage_timer_id = timers.timers_create_timer( + stage.name, stage.timeout_in_secs, stage.timeout_in_secs, + self._stage_timeout) + + DLOG.verbose("Started strategy stage timer, timeout_in_sec=%s" + % stage.timeout_in_secs) + + stage.refresh_timeouts() + + def abort(self): + """ + Phase Abort (can be overridden by child class) + """ + abort_list = self._abort() + abort_phase = StrategyPhase(STRATEGY_PHASE.ABORT) + for abort_stage in abort_list: + abort_phase.add_stage(abort_stage) + return abort_phase + + def apply(self, stop_at_stage=None): + """ + Phase Apply (can be overridden by child class) + """ + if stop_at_stage is None: + self._stop_at_stage = len(self._stages) + elif 0 <= stop_at_stage <= len(self._stages): + self._stop_at_stage = stop_at_stage + return self._apply() + + def complete(self, result, reason): + """ + Phase Complete (can be overridden by child class) + """ + DLOG.debug("Strategy Phase (%s) complete." % self._name) + if self.strategy is not None: + self.strategy.phase_complete(self, result, reason) + else: + DLOG.info("Strategy reference is invalid for phase (%s)." % self._name) + return self._result, self._result_reason + + def handle_event(self, event, event_data=None): + """ + Phase Handle Event (can be overridden by child class) + """ + DLOG.debug("Strategy Phase (%s) handle event (%s)." % (self._name, event)) + handled = False + + if self._inprogress: + stage = self._stages[self._current_stage] + handled = stage.handle_event(event, event_data) + + else: + DLOG.debug("Phase (%s) not inprogress." % self._name) + + return handled + + def from_dict(self, data, stages=None): + """ + Initializes a strategy phase object using the given dictionary + """ + StrategyPhase.__init__(self, data['name']) + self._inprogress = data['inprogress'] + self._current_stage = data['current_stage'] + self._stop_at_stage = data['stop_at_stage'] + self._result = data['result'] + self._result_reason = data['result_reason'] + self._start_date_time = data['start_date_time'] + self._end_date_time = data['end_date_time'] + + if stages is not None: + for stage in stages: + self.add_stage(stage) + + if self._inprogress and 0 < len(self._stages): + if 0 == self._current_stage: + stage = self._stages[self._current_stage] + if not stage.is_inprogress(): + self._inprogress = False + self._result = STRATEGY_PHASE_RESULT.INITIAL + self._result_reason = '' + + return self + + def as_dict(self): + """ + Represent the strategy phase as a dictionary + """ + data = dict() + data['name'] = self.name + data['timeout'] = self._timeout_in_secs + data['inprogress'] = self._inprogress + data['completion_percentage'] = self.completion_percentage + data['current_stage'] = self._current_stage + data['stop_at_stage'] = self._stop_at_stage + data['total_stages'] = len(self._stages) + data['stages'] = list() + for stage in self._stages: + data['stages'].append(stage.as_dict()) + data['result'] = self._result + data['result_reason'] = self._result_reason + data['start_date_time'] = self._start_date_time + data['end_date_time'] = self._end_date_time + return data diff --git a/nfv/nfv-common/nfv_common/strategy/_strategy_result.py b/nfv/nfv-common/nfv_common/strategy/_strategy_result.py new file mode 100755 index 00000000..0ddfde70 --- /dev/null +++ b/nfv/nfv-common/nfv_common/strategy/_strategy_result.py @@ -0,0 +1,337 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six + +from nfv_common.helpers import Constant, Singleton + + +@six.add_metaclass(Singleton) +class StrategyResult(object): + """ + Strategy Result - Constants + """ + INITIAL = Constant('initial') + INPROGRESS = Constant('inprogress') + WAIT = Constant('wait') + SUCCESS = Constant('success') + DEGRADED = Constant('degraded') + FAILED = Constant('failed') + TIMED_OUT = Constant('timed-out') + ABORTING = Constant('aborted') + ABORTED = Constant('aborted') + + +@six.add_metaclass(Singleton) +class StrategyPhaseResult(object): + """ + Strategy Phase Result - Constants + """ + INITIAL = Constant('initial') + INPROGRESS = Constant('inprogress') + WAIT = Constant('wait') + SUCCESS = Constant('success') + DEGRADED = Constant('degraded') + FAILED = Constant('failed') + TIMED_OUT = Constant('timed-out') + ABORTING = Constant('aborted') + ABORTED = Constant('aborted') + + +@six.add_metaclass(Singleton) +class StrategyStageResult(object): + """ + Strategy Stage Result - Constants + """ + INITIAL = Constant('initial') + INPROGRESS = Constant('inprogress') + WAIT = Constant('wait') + SUCCESS = Constant('success') + DEGRADED = Constant('degraded') + FAILED = Constant('failed') + TIMED_OUT = Constant('timed-out') + ABORTING = Constant('aborted') + ABORTED = Constant('aborted') + + +@six.add_metaclass(Singleton) +class StrategyStepResult(object): + """ + Strategy Step Result - Constants + """ + INITIAL = Constant('initial') + INPROGRESS = Constant('inprogress') + WAIT = Constant('wait') + SUCCESS = Constant('success') + DEGRADED = Constant('degraded') + FAILED = Constant('failed') + TIMED_OUT = Constant('timed-out') + ABORTING = Constant('aborted') + ABORTED = Constant('aborted') + + +def strategy_result_update(strategy_result, strategy_result_reason, phase_result, + phase_result_reason): + """ + Update Strategy Stage Result given a strategy phase result + """ + if STRATEGY_RESULT.WAIT == strategy_result: + # Nothing to update + return strategy_result, strategy_result_reason + + if STRATEGY_RESULT.INITIAL == strategy_result: + + if STRATEGY_PHASE_RESULT.ABORTING == phase_result: + return STRATEGY_RESULT.ABORTING, phase_result_reason + + elif STRATEGY_PHASE_RESULT.ABORTED == phase_result: + return STRATEGY_RESULT.ABORTED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.TIMED_OUT == phase_result: + return STRATEGY_RESULT.TIMED_OUT, phase_result_reason + + elif STRATEGY_PHASE_RESULT.FAILED == phase_result: + return STRATEGY_RESULT.FAILED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.DEGRADED == phase_result: + return STRATEGY_RESULT.DEGRADED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.SUCCESS == phase_result: + return STRATEGY_RESULT.SUCCESS, phase_result_reason + + elif STRATEGY_PHASE_RESULT.INPROGRESS == phase_result: + return STRATEGY_RESULT.INPROGRESS, phase_result_reason + + elif STRATEGY_RESULT.INPROGRESS == strategy_result: + + if STRATEGY_PHASE_RESULT.ABORTING == phase_result: + return STRATEGY_RESULT.ABORTING, phase_result_reason + + elif STRATEGY_PHASE_RESULT.ABORTED == phase_result: + return STRATEGY_RESULT.ABORTED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.TIMED_OUT == phase_result: + return STRATEGY_RESULT.TIMED_OUT, phase_result_reason + + elif STRATEGY_PHASE_RESULT.FAILED == phase_result: + return STRATEGY_RESULT.FAILED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.DEGRADED == phase_result: + return STRATEGY_RESULT.DEGRADED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.SUCCESS == phase_result: + return STRATEGY_RESULT.SUCCESS, phase_result_reason + + elif STRATEGY_RESULT.SUCCESS == strategy_result: + + if STRATEGY_PHASE_RESULT.ABORTING == phase_result: + return STRATEGY_RESULT.ABORTING, phase_result_reason + + elif STRATEGY_PHASE_RESULT.ABORTED == phase_result: + return STRATEGY_RESULT.ABORTED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.TIMED_OUT == phase_result: + return STRATEGY_RESULT.TIMED_OUT, phase_result_reason + + elif STRATEGY_PHASE_RESULT.FAILED == phase_result: + return STRATEGY_RESULT.FAILED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.DEGRADED == phase_result: + return STRATEGY_RESULT.DEGRADED, phase_result_reason + + elif STRATEGY_STAGE_RESULT.DEGRADED == strategy_result: + + if STRATEGY_PHASE_RESULT.ABORTING == phase_result: + return STRATEGY_RESULT.ABORTING, phase_result_reason + + elif STRATEGY_PHASE_RESULT.ABORTED == phase_result: + return STRATEGY_RESULT.ABORTED, phase_result_reason + + elif STRATEGY_PHASE_RESULT.TIMED_OUT == phase_result: + return STRATEGY_RESULT.TIMED_OUT, phase_result_reason + + elif STRATEGY_PHASE_RESULT.FAILED == phase_result: + return STRATEGY_RESULT.FAILED, phase_result_reason + + return strategy_result, strategy_result_reason + + +def strategy_phase_result_update(phase_result, phase_result_reason, stage_result, + stage_result_reason): + """ + Update Strategy Phase Result given a strategy stage result + """ + if STRATEGY_PHASE_RESULT.WAIT == phase_result: + # Nothing to update + return phase_result, phase_result_reason + + if STRATEGY_PHASE_RESULT.INITIAL == phase_result: + + if STRATEGY_STAGE_RESULT.ABORTING == stage_result: + return STRATEGY_PHASE_RESULT.ABORTING, stage_result_reason + + elif STRATEGY_STAGE_RESULT.ABORTED == stage_result: + return STRATEGY_PHASE_RESULT.ABORTED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.TIMED_OUT == stage_result: + return STRATEGY_PHASE_RESULT.TIMED_OUT, stage_result_reason + + elif STRATEGY_STAGE_RESULT.FAILED == stage_result: + return STRATEGY_PHASE_RESULT.FAILED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.DEGRADED == stage_result: + return STRATEGY_PHASE_RESULT.DEGRADED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.SUCCESS == stage_result: + return STRATEGY_PHASE_RESULT.SUCCESS, stage_result_reason + + elif STRATEGY_STAGE_RESULT.INPROGRESS == stage_result: + return STRATEGY_PHASE_RESULT.INPROGRESS, stage_result_reason + + elif STRATEGY_PHASE_RESULT.INPROGRESS == phase_result: + + if STRATEGY_STAGE_RESULT.ABORTING == stage_result: + return STRATEGY_PHASE_RESULT.ABORTING, stage_result_reason + + elif STRATEGY_STAGE_RESULT.ABORTED == stage_result: + return STRATEGY_PHASE_RESULT.ABORTED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.TIMED_OUT == stage_result: + return STRATEGY_PHASE_RESULT.TIMED_OUT, stage_result_reason + + elif STRATEGY_STAGE_RESULT.FAILED == stage_result: + return STRATEGY_PHASE_RESULT.FAILED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.DEGRADED == stage_result: + return STRATEGY_PHASE_RESULT.DEGRADED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.SUCCESS == stage_result: + return STRATEGY_PHASE_RESULT.SUCCESS, stage_result_reason + + elif STRATEGY_PHASE_RESULT.SUCCESS == phase_result: + + if STRATEGY_STAGE_RESULT.ABORTING == stage_result: + return STRATEGY_PHASE_RESULT.ABORTING, stage_result_reason + + elif STRATEGY_STAGE_RESULT.ABORTED == stage_result: + return STRATEGY_PHASE_RESULT.ABORTED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.TIMED_OUT == stage_result: + return STRATEGY_PHASE_RESULT.TIMED_OUT, stage_result_reason + + elif STRATEGY_STAGE_RESULT.FAILED == stage_result: + return STRATEGY_PHASE_RESULT.FAILED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.DEGRADED == stage_result: + return STRATEGY_PHASE_RESULT.DEGRADED, stage_result_reason + + elif STRATEGY_PHASE_RESULT.DEGRADED == phase_result: + + if STRATEGY_STAGE_RESULT.ABORTING == stage_result: + return STRATEGY_PHASE_RESULT.ABORTING, stage_result_reason + + elif STRATEGY_STAGE_RESULT.ABORTED == stage_result: + return STRATEGY_PHASE_RESULT.ABORTED, stage_result_reason + + elif STRATEGY_STAGE_RESULT.TIMED_OUT == stage_result: + return STRATEGY_PHASE_RESULT.TIMED_OUT, stage_result_reason + + elif STRATEGY_STAGE_RESULT.FAILED == stage_result: + return STRATEGY_PHASE_RESULT.FAILED, stage_result_reason + + return phase_result, phase_result_reason + + +def strategy_stage_result_update(stage_result, stage_result_reason, step_result, + step_result_reason): + """ + Update Strategy Stage Result given a strategy step result + """ + if STRATEGY_STAGE_RESULT.WAIT == stage_result: + # Nothing to update + return stage_result, stage_result_reason + + if STRATEGY_STAGE_RESULT.INITIAL == stage_result: + + if STRATEGY_STEP_RESULT.ABORTING == step_result: + return STRATEGY_STAGE_RESULT.ABORTING, step_result_reason + + elif STRATEGY_STEP_RESULT.ABORTED == step_result: + return STRATEGY_STAGE_RESULT.ABORTED, step_result_reason + + elif STRATEGY_STEP_RESULT.TIMED_OUT == step_result: + return STRATEGY_STAGE_RESULT.TIMED_OUT, step_result_reason + + elif STRATEGY_STEP_RESULT.FAILED == step_result: + return STRATEGY_STAGE_RESULT.FAILED, step_result_reason + + elif STRATEGY_STEP_RESULT.DEGRADED == step_result: + return STRATEGY_STAGE_RESULT.DEGRADED, step_result_reason + + elif STRATEGY_STEP_RESULT.SUCCESS == step_result: + return STRATEGY_STAGE_RESULT.SUCCESS, step_result_reason + + elif STRATEGY_STEP_RESULT.INPROGRESS == step_result: + return STRATEGY_STAGE_RESULT.INPROGRESS, step_result_reason + + elif STRATEGY_STAGE_RESULT.INPROGRESS == stage_result: + + if STRATEGY_STEP_RESULT.ABORTING == step_result: + return STRATEGY_STAGE_RESULT.ABORTING, step_result_reason + + elif STRATEGY_STEP_RESULT.ABORTED == step_result: + return STRATEGY_STAGE_RESULT.ABORTED, step_result_reason + + elif STRATEGY_STEP_RESULT.TIMED_OUT == step_result: + return STRATEGY_STAGE_RESULT.TIMED_OUT, step_result_reason + + elif STRATEGY_STEP_RESULT.FAILED == step_result: + return STRATEGY_STAGE_RESULT.FAILED, step_result_reason + + elif STRATEGY_STEP_RESULT.DEGRADED == step_result: + return STRATEGY_STAGE_RESULT.DEGRADED, step_result_reason + + elif STRATEGY_STEP_RESULT.SUCCESS == step_result: + return STRATEGY_STAGE_RESULT.SUCCESS, step_result_reason + + elif STRATEGY_STAGE_RESULT.SUCCESS == stage_result: + + if STRATEGY_STEP_RESULT.ABORTING == step_result: + return STRATEGY_STAGE_RESULT.ABORTING, step_result_reason + + elif STRATEGY_STEP_RESULT.ABORTED == step_result: + return STRATEGY_STAGE_RESULT.ABORTED, step_result_reason + + elif STRATEGY_STEP_RESULT.TIMED_OUT == step_result: + return STRATEGY_STAGE_RESULT.TIMED_OUT, step_result_reason + + elif STRATEGY_STEP_RESULT.FAILED == step_result: + return STRATEGY_STAGE_RESULT.FAILED, step_result_reason + + elif STRATEGY_STEP_RESULT.DEGRADED == step_result: + return STRATEGY_STAGE_RESULT.DEGRADED, step_result_reason + + elif STRATEGY_STAGE_RESULT.DEGRADED == stage_result: + + if STRATEGY_STEP_RESULT.ABORTING == step_result: + return STRATEGY_STAGE_RESULT.ABORTING, step_result_reason + + elif STRATEGY_STEP_RESULT.ABORTED == step_result: + return STRATEGY_STAGE_RESULT.ABORTED, step_result_reason + + elif STRATEGY_STEP_RESULT.TIMED_OUT == step_result: + return STRATEGY_STAGE_RESULT.TIMED_OUT, step_result_reason + + elif STRATEGY_STEP_RESULT.FAILED == step_result: + return STRATEGY_STAGE_RESULT.FAILED, step_result_reason + + return stage_result, stage_result_reason + + +# Constant Instantiation +STRATEGY_RESULT = StrategyResult() +STRATEGY_PHASE_RESULT = StrategyPhaseResult() +STRATEGY_STAGE_RESULT = StrategyStageResult() +STRATEGY_STEP_RESULT = StrategyStepResult() diff --git a/nfv/nfv-common/nfv_common/strategy/_strategy_stage.py b/nfv/nfv-common/nfv_common/strategy/_strategy_stage.py new file mode 100755 index 00000000..b3c056f0 --- /dev/null +++ b/nfv/nfv-common/nfv_common/strategy/_strategy_stage.py @@ -0,0 +1,594 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import weakref + +from datetime import datetime + +from nfv_common import timers +from nfv_common import debug +from nfv_common.helpers import coroutine + +from _strategy_result import STRATEGY_STAGE_RESULT, STRATEGY_STEP_RESULT +from _strategy_result import strategy_stage_result_update + +DLOG = debug.debug_get_logger('nfv_common.strategy.stage') + + +class StrategyStage(object): + """ + Strategy Stage + """ + def __init__(self, name): + self._id = 0 + self._name = name + self._current_step = 0 + self._step_timer_id = None + self._steps = list() + self._result = STRATEGY_STAGE_RESULT.INITIAL + self._result_reason = '' + self._timer_id = None + self._timeout_in_secs = 0 + self._inprogress = False + self._phase_reference = None + self._start_date_time = '' + self._end_date_time = '' + + def __del__(self): + self._cleanup() + + @property + def name(self): + """ + Returns the name of the stage + """ + return self._name + + @property + def id(self): + """ + Returns the id of the stage + """ + return self._id + + @id.setter + def id(self, value): + """ + Sets the id of the step + """ + self._id = value + + @property + def timeout_in_secs(self): + """ + Returns the maximum amount of time to wait for completion + """ + return self._timeout_in_secs + + @property + def result(self): + """ + Returns the result of the stage + """ + return self._result + + @result.setter + def result(self, result): + """ + Updates the result of the stage + """ + self._result = result + + @property + def result_reason(self): + """ + Returns the reason for the result of the stage + """ + return self._result_reason + + @result_reason.setter + def result_reason(self, reason): + """ + Updates the reason for the result of the stage + """ + self._result_reason = reason + + @property + def start_date_time(self): + """ + Returns the start date-time of the stage + """ + return self._start_date_time + + @start_date_time.setter + def start_date_time(self, date_time_str): + """ + Updates the start date-time of the stage + """ + self._start_date_time = date_time_str + + @property + def end_date_time(self): + """ + Returns the end date-time of the stage + """ + return self._end_date_time + + @end_date_time.setter + def end_date_time(self, date_time_str): + """ + Updates the end date-time of the stage + """ + self._end_date_time = date_time_str + + @property + def strategy(self): + """ + Returns the strategy this stage is a member of + """ + if self.phase is not None: + return self.phase.strategy + return None + + @property + def phase(self): + """ + Returns the phase this stage is a member of + """ + if self._phase_reference is not None: + return self._phase_reference() + return None + + @phase.setter + def phase(self, phase_value): + """ + Set the phase that this stage is a member of + """ + self._phase_reference = weakref.ref(phase_value) + + @property + def steps(self): + """ + Returns the steps for this stage + """ + return self._steps + + def is_inprogress(self): + """ + Returns if the stage is inprogress or not + """ + return self._inprogress + + def is_failed(self): + """ + Return true if this stage has failed + """ + return STRATEGY_STAGE_RESULT.FAILED == self._result + + def timed_out(self): + """ + Return true if this stage has timed out + """ + return STRATEGY_STAGE_RESULT.TIMED_OUT == self._result + + def aborted(self): + """ + Return true if this stage was aborted + """ + return STRATEGY_STAGE_RESULT.ABORTED == self._result + + def add_step(self, step): + """ + Add a step to this stage + """ + step.id = len(self._steps) + step.stage = self + self._steps.append(step) + + self._timeout_in_secs = 0 + for step in self._steps: + self._timeout_in_secs += step.timeout_in_secs + + if 0 < self._timeout_in_secs: + self._timeout_in_secs += 1 + + def _save(self): + """ + Stage Save + """ + import os + import inspect + + if self.phase is not None: + self.phase.stage_save() + else: + caller = inspect.currentframe().f_back + _, filename = os.path.split(caller.f_code.co_filename) + DLOG.info("Traceback1: %s %s" % (filename, caller.f_lineno)) + + caller = inspect.currentframe().f_back.f_back + _, filename = os.path.split(caller.f_code.co_filename) + DLOG.info("Traceback2: %s %s" % (filename, caller.f_lineno)) + + caller = inspect.currentframe().f_back.f_back.f_back + _, filename = os.path.split(caller.f_code.co_filename) + DLOG.info("Traceback3: %s %s" % (filename, caller.f_lineno)) + + caller = inspect.currentframe().f_back.f_back.f_back.f_back + _, filename = os.path.split(caller.f_code.co_filename) + DLOG.info("Traceback4: %s %s" % (filename, caller.f_lineno)) + + caller = inspect.currentframe().f_back.f_back.f_back.f_back.f_back + _, filename = os.path.split(caller.f_code.co_filename) + DLOG.info("Traceback5: %s %s" % (filename, caller.f_lineno)) + + DLOG.info("Strategy Phase reference is invalid for stage (%s)." + % self._name) + + def _cleanup(self): + """ + Stage Cleanup + """ + DLOG.info("Stage (%s) cleanup called" % self._name) + + if self._timer_id is not None: + timers.timers_delete_timer(self._timer_id) + self._timer_id = None + + if self._step_timer_id is not None: + timers.timers_delete_timer(self._step_timer_id) + self._step_timer_id = None + + def _abort(self): + """ + Stage Abort + """ + abort_list = list() + + if STRATEGY_STAGE_RESULT.INITIAL == self._result: + self._result = STRATEGY_STAGE_RESULT.ABORTED + self._result_reason = '' + + elif self._inprogress: + self._result = STRATEGY_STAGE_RESULT.ABORTING + self._result_reason = '' + + if 0 < len(self._steps): + if self._current_step < len(self._steps): + for idx in range(self._current_step, -1, -1): + step = self._steps[idx] + abort_steps = step.abort() + if abort_steps: + abort_list += abort_steps + + DLOG.info("Stage (%s) abort step (%s)." + % (self._name, step.name)) + + DLOG.info("Stage (%s) abort." % self._name) + return abort_list + + @coroutine + def _timeout(self): + """ + Stage Timeout + """ + (yield) + DLOG.info("Stage (%s) timed out, timeout_in_secs=%s." + % (self._name, self._timeout_in_secs)) + + if not self._inprogress: + DLOG.info("Stage timeout timer fired, but stage %s is not inprogress." + % self.name) + return + + self._result = STRATEGY_STAGE_RESULT.TIMED_OUT + self._result_reason = 'timeout' + self._complete(self._result, self._result_reason) + + def _complete(self, result, reason): + """ + Stage Internal Complete + """ + self._inprogress = False + self._cleanup() + self._save() + self._end_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + return self.complete(result, reason) + + def _apply(self): + """ + Stage Apply + """ + if not self._inprogress: + if 0 == self._current_step: + self._cleanup() + self._inprogress = True + self._result = STRATEGY_STAGE_RESULT.INPROGRESS + self._result_reason = '' + self._start_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + if 0 < self.timeout_in_secs: + self._timer_id = timers.timers_create_timer( + self._name, self._timeout_in_secs, self._timeout_in_secs, + self._timeout) + else: + DLOG.debug("Stage (%s) not inprogress." % self._name) + return self._result, self._result_reason + + for idx in range(self._current_step, len(self._steps), 1): + step = self._steps[idx] + if self._step_timer_id is not None: + timers.timers_delete_timer(self._step_timer_id) + self._step_timer_id = None + + step.start_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + step.result, step.result_reason = step.apply() + self._current_step = idx + + if STRATEGY_STEP_RESULT.WAIT == step.result: + if 0 < step.timeout_in_secs: + self._step_timer_id = timers.timers_create_timer( + step.name, step.timeout_in_secs, step.timeout_in_secs, + self._step_timeout) + + DLOG.debug("Stage (%s) is waiting for step (%s) to complete, " + "timeout_in_secs=%s." % (self.name, step.name, + step.timeout_in_secs)) + + self._save() + return STRATEGY_STAGE_RESULT.WAIT, '' + + else: + DLOG.debug("Stage (%s) step (%s) complete, result=%s, reason=%s." + % (self._name, step.name, step.result, + step.result_reason)) + + step.end_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + self._result, self._result_reason = \ + strategy_stage_result_update(self._result, + self._result_reason, + step.result, step.result_reason) + + if STRATEGY_STAGE_RESULT.FAILED == self._result or \ + STRATEGY_STAGE_RESULT.ABORTED == self._result or \ + STRATEGY_STAGE_RESULT.TIMED_OUT == self._result: + return self._complete(self._result, self._result_reason) + else: + self._save() + + else: + # Check for a stage with no steps + if 0 == self._current_step: + self._result = STRATEGY_STAGE_RESULT.SUCCESS + self._result_reason = '' + + DLOG.debug("Stage (%s) done running, result=%s, reason=%s." + % (self._name, self._result, self._result_reason)) + return self._complete(self._result, self._result_reason) + + def step_complete(self, step_result, step_result_reason=None): + """ + Stage Step Complete + """ + step = self._steps[self._current_step] + + DLOG.debug("Stage (%s) step (%s) complete, step_result=%s, step_reason=%s." + % (self._name, step.name, step_result, step_result_reason)) + + step.result, step.result_reason = \ + step.complete(step_result, step_result_reason) + + step.end_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + if step_result != step.result: + DLOG.debug("Stage (%s) step (%s) complete, result updated, " + "was_result=%s, now_result=%s." % (self._name, step.name, + step_result, step.result)) + + self._result, self._result_reason = \ + strategy_stage_result_update(self._result, self._result_reason, + step.result, step.result_reason) + + if STRATEGY_STAGE_RESULT.ABORTING == self._result: + self._result = STRATEGY_STAGE_RESULT.ABORTED + self._result_reason = '' + self._complete(self._result, self._result_reason) + + elif STRATEGY_STAGE_RESULT.FAILED == self._result or \ + STRATEGY_STAGE_RESULT.ABORTED == self._result or \ + STRATEGY_STAGE_RESULT.TIMED_OUT == self._result: + self._complete(self._result, self._result_reason) + + else: + self._current_step += 1 + self._apply() + + @coroutine + def _step_timeout(self): + """ + Stage Step Timeout + """ + (yield) + if len(self._steps) <= self._current_step: + DLOG.error("Step timeout timer fired, but current step is invalid, " + "current_step=%i." % self._current_step) + return + + if not self._inprogress: + DLOG.info("Step timeout timer fired, but stage %s is not inprogress, " + "current_step=%i." % (self.name, self._current_step)) + return + + step = self._steps[self._current_step] + DLOG.info("Stage (%s) step (%s) timed out, timeout_in_secs=%s." + % (self._name, step.name, step.timeout_in_secs)) + + step.result, step.result_reason = step.timeout() + + if STRATEGY_STEP_RESULT.TIMED_OUT == step.result: + step.end_date_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + if STRATEGY_STAGE_RESULT.ABORTING == self._result: + self._result = STRATEGY_STAGE_RESULT.ABORTED + self._result_reason = '' + else: + self._result = STRATEGY_STAGE_RESULT.TIMED_OUT + self._result_reason = step.result_reason + + self._complete(self._result, self._result_reason) + + else: + self.step_complete(step.result, step.result_reason) + + def step_extend_timeout(self): + """ + Stage Step Extend Timeout + """ + if self.phase is not None: + self.phase.stage_extend_timeout() + else: + self.refresh_timeouts() + + def refresh_timeouts(self): + """ + Stage Refresh Timeouts + """ + if not self.is_inprogress(): + # No need to refresh stage timer, stage not started + return + + if self._timer_id is not None: + timers.timers_delete_timer(self._timer_id) + self._timer_id = None + + # Calculate overall stage timeout + self._timeout_in_secs = 0 + for step in self._steps: + self._timeout_in_secs += step.timeout_in_secs + + if 0 < self._timeout_in_secs: + self._timeout_in_secs += 1 + + # Re-start stage timer + self._timer_id = timers.timers_create_timer(self._name, + self._timeout_in_secs, + self._timeout_in_secs, + self._timeout) + + DLOG.verbose("Started overall strategy stage timer, timeout_in_sec=%s" + % self._timeout_in_secs) + + if self._step_timer_id is not None: + timers.timers_delete_timer(self._step_timer_id) + self._step_timer_id = None + + if len(self._steps) <= self._current_step: + # No need to refresh step timer, no current step being applied + return + + # Re-start step timer + step = self._steps[self._current_step] + if 0 < step.timeout_in_secs: + self._step_timer_id = timers.timers_create_timer( + step.name, step.timeout_in_secs, step.timeout_in_secs, + self._step_timeout) + + DLOG.verbose("Started strategy step timer, timeout_in_sec=%s" + % step.timeout_in_secs) + + def abort(self): + """ + Stage Abort (can be overridden by child class) + """ + abort_list = self._abort() + if abort_list: + abort_stage = StrategyStage(self.name) + for abort_step in abort_list: + abort_stage.add_step(abort_step) + return [abort_stage] + return [] + + def apply(self): + """ + Stage Apply (can be overridden by child class) + """ + return self._apply() + + def complete(self, result, result_reason): + """ + Stage Complete (can be overridden by child class) + """ + DLOG.debug("Strategy Stage (%s) complete." % self._name) + if self.phase is not None: + self.phase.stage_complete(result, result_reason) + else: + DLOG.info("Strategy Phase reference is invalid for stage (%s)." + % self._name) + return self._result, self._result_reason + + def handle_event(self, event, event_data=None): + """ + Stage Handle Event (can be overridden by child class) + """ + DLOG.debug("Stage (%s) handle event (%s)." % (self._name, event)) + handled = False + + if self._inprogress: + step = self._steps[self._current_step] + handled = step.handle_event(event, event_data) + + return handled + + def from_dict(self, data, steps=None): + """ + Initializes a strategy stage object using the given dictionary + """ + StrategyStage.__init__(self, data['name']) + self._inprogress = data['inprogress'] + self._current_step = data['current_step'] + self._result = data['result'] + self._result_reason = data['result_reason'] + self._start_date_time = data['start_date_time'] + self._end_date_time = data['end_date_time'] + + if steps is not None: + for step in steps: + self.add_step(step) + + if self._inprogress and 0 < len(self._steps): + if 0 == self._current_step: + step = self._steps[self._current_step] + if STRATEGY_STEP_RESULT.INITIAL == step.result: + self._inprogress = False + self._result = STRATEGY_STAGE_RESULT.INITIAL + self._result_reason = '' + + elif len(self._steps) > self._current_step: + step = self._steps[self._current_step] + if step.result not in [STRATEGY_STEP_RESULT.INITIAL, + STRATEGY_STAGE_RESULT.INPROGRESS, + STRATEGY_STAGE_RESULT.WAIT]: + self._current_step += 1 + + return self + + def as_dict(self): + """ + Represent the strategy stage as a dictionary + """ + data = dict() + data['id'] = self._id + data['name'] = self._name + data['timeout'] = self._timeout_in_secs + data['inprogress'] = self._inprogress + data['current_step'] = self._current_step + data['total_steps'] = len(self._steps) + data['steps'] = list() + for step in self._steps: + data['steps'].append(step.as_dict()) + data['result'] = self._result + data['result_reason'] = self._result_reason + data['start_date_time'] = self._start_date_time + data['end_date_time'] = self._end_date_time + return data diff --git a/nfv/nfv-common/nfv_common/strategy/_strategy_step.py b/nfv/nfv-common/nfv_common/strategy/_strategy_step.py new file mode 100755 index 00000000..a17f2bfa --- /dev/null +++ b/nfv/nfv-common/nfv_common/strategy/_strategy_step.py @@ -0,0 +1,237 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import weakref + +from nfv_common import debug + +from _strategy_result import STRATEGY_STEP_RESULT + +DLOG = debug.debug_get_logger('nfv_common.strategy.step') + + +class StrategyStep(object): + """ + Strategy Step + """ + def __init__(self, name, force_pass=False, timeout_in_secs=0, max_retries=1): + self._id = 0 + self._name = name + self._force_pass = force_pass + self._timeout_in_secs = timeout_in_secs + self._max_retries = max_retries + self._result = STRATEGY_STEP_RESULT.INITIAL + self._result_reason = '' + self._stage_reference = None + self._start_date_time = '' + self._end_date_time = '' + + @property + def name(self): + """ + Returns the name of the step + """ + return self._name + + @property + def id(self): + """ + Returns the id of the step + """ + return self._id + + @id.setter + def id(self, value): + """ + Sets the id of the step + """ + self._id = value + + @property + def force_pass(self): + """ + Returns the true if force_pass has been set, otherwise false + """ + return self._force_pass + + @property + def max_retries(self): + """ + Returns the maximum retry attempts for step to be completed + """ + return self._max_retries + + @property + def timeout_in_secs(self): + """ + Returns the maximum amount of time to wait for completion + """ + return self._timeout_in_secs + + @property + def result(self): + """ + Returns the result of the step + """ + return self._result + + @result.setter + def result(self, result): + """ + Updates the result of the step + """ + self._result = result + + @property + def result_reason(self): + """ + Returns the reason for the result of the step + """ + return self._result_reason + + @result_reason.setter + def result_reason(self, reason): + """ + Updates the reason for the result of the step + """ + self._result_reason = reason + + @property + def start_date_time(self): + """ + Returns the start date-time of the step + """ + return self._start_date_time + + @start_date_time.setter + def start_date_time(self, date_time_str): + """ + Updates the start date-time of the step + """ + self._start_date_time = date_time_str + + @property + def end_date_time(self): + """ + Returns the end date-time of the step + """ + return self._end_date_time + + @end_date_time.setter + def end_date_time(self, date_time_str): + """ + Updates the end date-time of the step + """ + self._end_date_time = date_time_str + + @property + def strategy(self): + """ + Returns the strategy this step is a member of + """ + if self.phase is not None: + return self.phase.strategy + return None + + @property + def phase(self): + """ + Returns the phase this step is a member of + """ + if self.stage is not None: + return self.stage.phase + return None + + @property + def stage(self): + """ + Returns the stage this step is a member of + """ + if self._stage_reference is not None: + return self._stage_reference() + return None + + @stage.setter + def stage(self, stage_value): + """ + Set the stage that this step is a member of + """ + self._stage_reference = weakref.ref(stage_value) + + def extend_timeout(self, timeout_in_secs): + """ + Allow the step timeout to be extended + """ + DLOG.verbose("Extending strategy step timeout for %s to %s." + % (self._name, timeout_in_secs)) + self._timeout_in_secs = timeout_in_secs + if self._stage_reference is not None: + self.stage.step_extend_timeout() + + def abort(self): + """ + Strategy Step Abort (can be overridden by child class) + """ + DLOG.info("Default strategy step abort for %s." % self._name) + return [] + + def apply(self): + """ + Strategy Step Apply (expected to be overridden by child class) + """ + DLOG.verbose("Default strategy step apply for %s." % self._name) + return STRATEGY_STEP_RESULT.SUCCESS, '' + + def complete(self, result, result_reason): + """ + Strategy Step Completed (can be overridden by child class) + """ + DLOG.verbose("Default strategy step complete for %s, result=%s, " + "reason=%s." % (self._name, result, result_reason)) + return result, result_reason + + def timeout(self): + """ + Strategy Step Timeout (can be overridden by child class) + """ + DLOG.verbose("Default strategy step timeout for %s, timeout=%s secs." + % (self._name, self._timeout_in_secs)) + return STRATEGY_STEP_RESULT.TIMED_OUT, '' + + def handle_event(self, event, event_data=None): + """ + Strategy Step Handle Event (expected to be overridden by child class) + """ + DLOG.verbose("Default strategy step handle event for %s." + % self._name) + return False + + def from_dict(self, data): + """ + Returns a strategy step object initialized using the given dictionary + """ + StrategyStep.__init__(self, data['name'], data['force_pass'], + data['timeout'], data['max_retries']) + self._result = data['result'] + self._result_reason = data['result_reason'] + self._start_date_time = data['start_date_time'] + self._end_date_time = data['end_date_time'] + return self + + def as_dict(self): + """ + Represent the strategy step as a dictionary + """ + data = dict() + data['id'] = self._id + data['name'] = self._name + data['force_pass'] = self._force_pass + data['timeout'] = self._timeout_in_secs + data['max_retries'] = self._max_retries + data['result'] = self._result + data['result_reason'] = self._result_reason + data['start_date_time'] = self._start_date_time + data['end_date_time'] = self._end_date_time + return data diff --git a/nfv/nfv-common/nfv_common/tasks/__init__.py b/nfv/nfv-common/nfv_common/tasks/__init__.py new file mode 100755 index 00000000..4de43fd4 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/__init__.py @@ -0,0 +1,11 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _task import TASK_PRIORITY, Task +from _task_future import TaskFuture +from _task_scheduler import TaskScheduler +from _task_worker_pool import TaskWorkerPool diff --git a/nfv/nfv-common/nfv_common/tasks/_task.py b/nfv/nfv-common/nfv_common/tasks/_task.py new file mode 100755 index 00000000..35f0ac13 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/_task.py @@ -0,0 +1,221 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import six +import collections + +from nfv_common import debug +from nfv_common.helpers import Constants, Constant, Singleton + +from _task_result import TaskResult + +DLOG = debug.debug_get_logger('nfv_common.tasks.task') + + +@six.add_metaclass(Singleton) +class TaskPriority(Constants): + """ + Task Priority Constants + """ + HIGH = 0 + MED = 1 + LOW = 2 + + +# Constant Instantiation +TASK_PRIORITY = TaskPriority() + + +class Task(object): + """ + Task + """ + _READY = Constant('Ready') + _RUNNING = Constant('Running') + _TIMEOUT = Constant('Timeout') + _COMPLETE = Constant('Complete') + _COMPLETED = Constant('Completed') + _ABORTED = Constant('Aborted') + + _id = 1 + + def __init__(self, scheduler, priority, target): + """ + Create a task, scheduler is used to schedule this task and the task + work, the target is a co-routine that is sent task results + """ + self._id = Task._id + self._priority = priority + self._name = target.__name__ + self._scheduler = scheduler + self._started = False + self._target = target + self._work_list = collections.OrderedDict() + DLOG.debug("Task created, id=%s, name=%s." % (self._id, self._name)) + Task._id += 1 + + @property + def id(self): + """ + Returns the unique identifier of the task + """ + return self._id + + @property + def name(self): + """ + Returns the name of the task + """ + return self._name + + @property + def priority(self): + """ + Returns the priority of the task + """ + return self._priority + + def add_timer(self, name, interval_secs): + """ + Add a timer that will fire in so many milliseconds + """ + timer_id = self._scheduler.add_task_timer(name, interval_secs, self) + return timer_id + + def cancel_timer(self, timer_id): + """ + Cancel timer + """ + self._scheduler.cancel_task_timer(timer_id, self) + + def timer_fired(self, timer_id): + """ + Handle timer firing; the timer identifier is sent to + the task's co-routine target + """ + task_result = TaskResult(complete=True, timer_result=True, + result_data=timer_id, + ancillary_result_data=None) + self._target.send(task_result) + self._scheduler.schedule_task(self) + + def add_io_read_wait(self, select_obj): + """ + Add a read selection object to wait on + """ + self._scheduler.add_task_io_read_wait(select_obj, self) + + def cancel_io_read_wait(self, select_obj): + """ + Cancel a read selection object being waited on + """ + self._scheduler.cancel_task_io_read_wait(select_obj, self) + + def add_io_write_wait(self, select_obj): + """ + Add a write selection object to wait on + """ + self._scheduler.add_task_io_write_wait(select_obj, self) + + def cancel_io_write_wait(self, select_obj): + """ + Cancel a write selection object being waited on + """ + self._scheduler.cancel_task_io_write_wait(select_obj, self) + + def io_wait_complete(self, select_obj): + """ + Called when a selection object being waited on has become + readable or writeable; the selection object is sent to + the tasks co-routine target + """ + task_result = TaskResult(complete=True, selobj_result=True, + result_data=select_obj, + ancillary_result_data=None) + self._target.send(task_result) + self._scheduler.schedule_task(self) + + def add_task_work(self, task_work): + """ + Add work to be done by the task + """ + task_work.task_id = self._id + self._work_list[task_work.id] = [Task._READY, task_work] + return task_work + + def task_work_complete(self, task_work): + """ + Task work has been completed, send result to the task target + (results are sent in order the task work was scheduled) + """ + DLOG.verbose("TaskWork complete, name=%s." % task_work.name) + + state, _ = self._work_list[task_work.id] + if Task._TIMEOUT == state: + DLOG.verbose("TaskWork already marked as timed out, ignoring " + "completed result, name=%s." % task_work.name) + self._scheduler.schedule_task(self) + return + + self._work_list[task_work.id] = [Task._COMPLETE, task_work] + + # Following is used to order how the results are sent to the task + # target. It is possible to have many task work outstanding at + # the same time. Results are returned in the order that task + # work was scheduled. + for key, (state, task_work) in self._work_list.items(): + if Task._READY == state: + self._scheduler.schedule_task(self) + break + elif Task._RUNNING == state: + break + elif Task._COMPLETE == state: + self._work_list[task_work.id] = [Task._COMPLETED, task_work] + self._scheduler.schedule_task(self) + if isinstance(task_work.result, Exception): + try: + self._target.throw(task_work.result) + except Exception as e: + if e == task_work.result: + DLOG.info("Task (%s) target did not catch " + "exception, exception=%s." + % (self._name, e)) + else: + raise + else: + task_result = TaskResult( + complete=True, result_data=task_work.result, + ancillary_result_data=task_work.ancillary_result_data) + self._target.send(task_result) + + def task_work_timeout(self, task_work): + """ + Work being done by the task has timed out + """ + DLOG.error("Task(%s) work (%s) timed out, id=%s." + % (self._name, task_work.name, self._id)) + task_result = TaskResult(complete=False, result_data=None, + ancillary_result_data=None) + self._target.send(task_result) + self._work_list[task_work.id] = [Task._TIMEOUT, task_work] + self._scheduler.schedule_task(self) + + def run(self): + """ + Run the task + """ + DLOG.debug("Task(%s) run, id=%s." % (self._name, self._id)) + if not self._started: + self._target.send(None) + self._scheduler.reschedule_task(self) + self._started = True + else: + # Schedule work that is ready + for key, (state, task_work) in self._work_list.items(): + if Task._READY == state: + scheduled = self._scheduler.schedule_task_work(task_work) + if scheduled: + self._work_list[task_work.id] = [Task._RUNNING, + task_work] diff --git a/nfv/nfv-common/nfv_common/tasks/_task_future.py b/nfv/nfv-common/nfv_common/tasks/_task_future.py new file mode 100755 index 00000000..e7828966 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/_task_future.py @@ -0,0 +1,141 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +from _task_work import TaskWork + +DLOG = debug.debug_get_logger('nfv_common.tasks.task_future') + + +class TaskFuture(object): + """ + Task Future + """ + def __init__(self, scheduler): + """ + Create a task future + """ + self._scheduler = scheduler + self._result = None + self._timeouts = None + + def set_timeouts(self, timeouts): + """ + Set the timeout values to be used when work is to be done + Parameter timeouts is a dictionary of target and the timeout in seconds + """ + self._timeouts = timeouts + + def work(self, target, *args, **kwargs): + """ + Schedule work in the future + """ + timeout_in_secs = None + if self._timeouts is not None: + # Look for a target specific timeout + module_name = target.__module__.split('.')[-1] + timeout_name = "%s.%s" % (module_name, target.__name__) + timeout_in_secs = self._timeouts.get(timeout_name, None) + if timeout_in_secs is not None: + timeout_in_secs = int(timeout_in_secs) + else: + # Look for a module level timeout + timeout_name = "%s" % module_name + timeout_in_secs = self._timeouts.get(timeout_name, None) + if timeout_in_secs is not None: + timeout_in_secs = int(timeout_in_secs) + + if timeout_in_secs is None: + if kwargs: + timeout_in_secs = kwargs.get('timeout_in_secs', None) + if timeout_in_secs is not None: + del kwargs['timeout_in_secs'] + + if timeout_in_secs is None: + timeout_in_secs = 20 + + elif 0 >= timeout_in_secs: + timeout_in_secs = None # No timeout wanted, wait forever + + if self._scheduler.running_task is not None: + task_work = TaskWork(timeout_in_secs, target, *args, **kwargs) + self._scheduler.running_task.add_task_work(task_work) + self._result = None + return task_work.id + else: + raise LookupError("Running task no longer running") + + def timer(self, name, interval_secs): + """ + Schedule a timer to be fired after so many milliseconds, + callback is a co-routine that is sent the timer identifier + that has fired + """ + if self._scheduler.running_task is not None: + timer_id = self._scheduler.running_task.add_timer(name, + interval_secs) + return timer_id + else: + raise LookupError("Running task no longer running") + + def cancel_timer(self, timer_id): + """ + Cancel a scheduled timer + """ + if self._scheduler.running_task is not None: + self._scheduler.running_task.cancel_timer(timer_id) + else: + raise LookupError("Running task no longer running") + + def io_read_wait(self, select_obj): + """ + Wait on a read selection object + """ + if self._scheduler.running_task is not None: + self._scheduler.running_task.add_io_read_wait(select_obj) + else: + raise LookupError("Running task no longer running") + + def io_read_wait_cancel(self, select_obj): + """ + Cancel a wait on a read selection object + """ + if self._scheduler.running_task is not None: + self._scheduler.running_task.cancel_io_read_wait(select_obj) + else: + raise LookupError("Running task no longer running") + + def io_write_wait(self, select_obj): + """ + Wait on a write selection object + """ + if self._scheduler.running_task is not None: + self._scheduler.running_task.add_io_write_wait(select_obj) + else: + raise LookupError("Running task no longer running") + + def io_write_wait_cancel(self, select_obj): + """ + Cancel a wait on a write selection object + """ + if self._scheduler.running_task is not None: + self._scheduler.running_task.cancel_io_write_wait(select_obj) + else: + raise LookupError("Running task no longer running") + + @property + def result(self): + """ + Returns the result of a future + """ + return self._result + + @result.setter + def result(self, result): + """ + Set the result of a future + """ + self._result = result diff --git a/nfv/nfv-common/nfv_common/tasks/_task_result.py b/nfv/nfv-common/nfv_common/tasks/_task_result.py new file mode 100755 index 00000000..e5ff6e7b --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/_task_result.py @@ -0,0 +1,64 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.tasks.task_result') + + +class TaskResult(object): + """ + Task Result + """ + def __init__(self, complete=False, aborted=False, timer_result=False, + selobj_result=False, result_data=None, + ancillary_result_data=None): + """ + Create a task result + """ + self._complete = complete + self._aborted = aborted + self._timer_result = timer_result + self._selobj_result = selobj_result + self._result_data = result_data + self._ancillary_result_data = ancillary_result_data + + @property + def ancillary_data(self): + """ + Returns the ancillary result data + """ + return self._ancillary_result_data + + @property + def data(self): + """ + Returns the result data + """ + return self._result_data + + def is_complete(self): + """ + Indicates if the task result has been completed + """ + return self._complete + + def is_aborted(self): + """ + Indicates if the task result has been aborted + """ + return self._aborted + + def is_timer(self): + """ + Indicates if the task result data is a timer identifier + """ + return self._timer_result + + def is_selobj(self): + """ + Indicates if the task result data is a selection object + """ + return self._selobj_result diff --git a/nfv/nfv-common/nfv_common/tasks/_task_scheduler.py b/nfv/nfv-common/nfv_common/tasks/_task_scheduler.py new file mode 100755 index 00000000..8f225b78 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/_task_scheduler.py @@ -0,0 +1,396 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import inspect +import collections + +from nfv_common import debug +from nfv_common import timers +from nfv_common import selobj +from nfv_common import selectable +from nfv_common import histogram +from nfv_common.helpers import coroutine + +from _task import Task, TASK_PRIORITY +from _task_future import TaskFuture + +DLOG = debug.debug_get_logger('nfv_common.tasks.task_scheduler') + + +class TaskScheduler(object): + """ + Task Scheduler + """ + def __init__(self, name, task_worker_pool): + """ + Create a task scheduler + """ + self._name = name + self._task_worker_pool = task_worker_pool + self._workers_selobj = dict() + self._workers_timer = dict() + self._tasks = dict() + self._task_timers = dict() + self._task_work_timers = dict() + self._task_read_selobjs = dict() + self._task_write_selobjs = dict() + self._running_task = None + self._tasks_scheduled = False + self._wait_queue = collections.deque() + self._ready_queue = list() + self._ready_dequeues = list() + for _ in TASK_PRIORITY: + self._ready_queue.append(collections.deque()) + self._ready_dequeues.append(0) + self._run_queue = selectable.MultiprocessQueue() + selobj.selobj_add_read_obj(self._run_queue.selobj, self.run_tasks) + + @property + def name(self): + """ + Returns the name of the scheduler + """ + return self._name + + @property + def running_task(self): + """ + Returns the running task + """ + return self._running_task + + def add_task(self, priority, target, *args, **kwargs): + """ + Add a task to the task scheduler + """ + if inspect.isgeneratorfunction(target): + future = TaskFuture(self) + task = Task(self, priority, target(future, *args, **kwargs)) + DLOG.debug("Pool %s: Add Task, name=%s." + % (self._task_worker_pool.name, task.name)) + self.schedule_task(task) + result = task.id + else: + result = target(*args, **kwargs) + return result + + def delete_task(self, task): + """ + Delete a task from the task scheduler + """ + DLOG.debug("Pool %s: Delete Task, name=%s." + % (self._task_worker_pool.name, task.name)) + for timer_id, timer_owner in self._task_timers.items(): + if timer_owner.id == task.id: + timers.timers_delete_timer(timer_id) + del self._task_timers[timer_id] + + for timer_id, timer_owner in self._task_work_timers.items(): + if timer_owner.task_id == task.id: + timers.timers_delete_timer(timer_id) + del self._task_work_timers[timer_id] + + for select_obj, select_obj_owner in self._task_read_selobjs.items(): + if select_obj_owner.id == task.id: + selobj.selobj_del_read_obj(select_obj) + del self._task_read_selobjs[select_obj] + + for select_obj, select_obj_owner in self._task_write_selobjs.items(): + if select_obj_owner.id == task.id: + selobj.selobj_del_write_obj(select_obj) + del self._task_write_selobjs[select_obj] + + del self._tasks[task.id] + + def add_task_timer(self, name, interval_secs, task): + """ + Add timer for a task + """ + timer_id = timers.timers_create_timer(name, interval_secs, + interval_secs, + self.task_timer_timeout) + self._task_timers[timer_id] = task + return timer_id + + def cancel_task_timer(self, timer_id, task): + timer_owner = self._task_timers.get(timer_id, None) + if timer_owner is not None: + if timer_owner.id == task.id: + timers.timers_delete_timer(timer_id) + del self._task_timers[timer_id] + + @coroutine + def task_timer_timeout(self): + """ + Called when a task timer has fired + """ + while True: + timer_id = (yield) + task = self._task_timers.get(timer_id, None) + if task is None: + break + try: + task.timer_fired(timer_id) + except StopIteration: + self.delete_task(task) + break + + def add_task_io_read_wait(self, select_obj, task): + """ + Add a task read selection object to wait on + """ + selobj.selobj_add_read_obj(select_obj, self.task_io_wait_complete) + self._task_read_selobjs[select_obj] = task + + def cancel_task_io_read_wait(self, select_obj, task): + """ + Cancel a task read selection object being waited on + """ + select_obj_owner = self._task_read_selobjs.get(select_obj, None) + if select_obj_owner is not None: + if select_obj_owner.id == task.id: + selobj.selobj_del_read_obj(select_obj) + del self._task_read_selobjs[select_obj] + + def add_io_write_wait(self, select_obj, task): + """ + Add a task write selection object to wait on + """ + selobj.selobj_add_write_obj(select_obj, self.task_io_wait_complete) + self._task_write_selobjs[select_obj] = task + + def cancel_io_write_wait(self, select_obj, task): + """ + Cancel a task write selection object being waited on + """ + select_obj_owner = self._task_write_selobjs.get(select_obj, None) + if select_obj_owner is not None: + if select_obj_owner.id == task.id: + selobj.selobj_del_write_obj(select_obj) + del self._task_write_selobjs[select_obj] + + @coroutine + def task_io_wait_complete(self): + """ + Called when a task selection object being waited on has become + readable or writeable + """ + while True: + select_obj = (yield) + task = self._task_read_selobjs.get(select_obj, None) + if task is None: + task = self._task_write_selobjs.get(select_obj, None) + if task is None: + break + try: + task.io_wait_complete(select_obj) + except StopIteration: + self.delete_task(task) + break + + def _schedule_next_task(self): + """ + Schedule next task + """ + task_id = None + + if self._ready_dequeues[TASK_PRIORITY.HIGH] >= 60: + self._ready_dequeues[TASK_PRIORITY.HIGH] = 0 + + if self._ready_dequeues[TASK_PRIORITY.MED] >= 60: + self._ready_dequeues[TASK_PRIORITY.MED] = 0 + if 0 < len(self._ready_queue[TASK_PRIORITY.LOW]): + task_id = self._ready_queue[TASK_PRIORITY.LOW].pop() + else: + if 0 < len(self._ready_queue[TASK_PRIORITY.MED]): + task_id = self._ready_queue[TASK_PRIORITY.MED].pop() + + elif 0 < len(self._ready_queue[TASK_PRIORITY.LOW]): + task_id = self._ready_queue[TASK_PRIORITY.LOW].pop() + self._ready_dequeues[TASK_PRIORITY.MED] = 0 + + if task_id is None: + if 0 < len(self._ready_queue[TASK_PRIORITY.HIGH]): + task_id = self._ready_queue[TASK_PRIORITY.HIGH].pop() + self._ready_dequeues[TASK_PRIORITY.HIGH] += 1 + + elif 0 < len(self._ready_queue[TASK_PRIORITY.MED]): + task_id = self._ready_queue[TASK_PRIORITY.MED].pop() + self._ready_dequeues[TASK_PRIORITY.HIGH] = 0 + self._ready_dequeues[TASK_PRIORITY.MED] += 1 + + elif 0 < len(self._ready_queue[TASK_PRIORITY.LOW]): + task_id = self._ready_queue[TASK_PRIORITY.LOW].pop() + self._ready_dequeues[TASK_PRIORITY.HIGH] = 0 + self._ready_dequeues[TASK_PRIORITY.MED] = 0 + self._ready_dequeues[TASK_PRIORITY.LOW] += 1 + + if task_id is not None: + self._run_queue.put(task_id) + self._tasks_scheduled = True + + def _schedule_task(self, task, reschedule=False): + """ + Schedule or Reschedule a task + """ + DLOG.verbose("Pool %s: Scheduling Task, name=%s." + % (self._task_worker_pool.name, task.name)) + self._tasks[task.id] = task + + for pri in TASK_PRIORITY: + if task.id in self._ready_queue[pri]: + break + else: + if reschedule: + self._ready_queue[task.priority].append(task.id) + else: + self._ready_queue[task.priority].appendleft(task.id) + + histogram.add_histogram_data(self._name + + ' [tasks-queue-p%i]' % task.priority, + len(self._ready_queue[task.priority]), + "ready-tasks") + + if not self._tasks_scheduled: + self._schedule_next_task() + + def reschedule_task(self, task): + """ + Reschedule a task + """ + self._schedule_task(task, reschedule=True) + + def schedule_task(self, task): + """ + Schedule a task + """ + self._schedule_task(task) + + def schedule_task_work(self, task_work=None): + """ + Schedule task work to one of the task workers if available + """ + if task_work is not None: + self._wait_queue.appendleft(task_work) + + if 0 == len(self._wait_queue): + return False + + worker = self._task_worker_pool.claim_worker() + if worker is not None: + task_work = self._wait_queue.pop() + + DLOG.verbose("Pool %s: Task worker available to run TaskWork, " + "name=%s." % (self._task_worker_pool.name, + task_work.name)) + + selobj.selobj_add_read_obj(worker.selobj, self.task_work_complete) + self._workers_selobj[worker.selobj] = worker + worker.submit_task_work(task_work) + + if task_work.timeout_in_secs is not None: + timer_id = timers.timers_create_timer(task_work.name, + task_work.timeout_in_secs, + task_work.timeout_in_secs, + self.task_work_timeout) + self._task_work_timers[timer_id] = task_work + self._workers_timer[timer_id] = worker + return True + else: + DLOG.verbose("Pool %s: No task worker available to run TaskWork." + % self._task_worker_pool.name) + return False + + @coroutine + def task_work_complete(self): + """ + A task worker has completed it's assigned work + """ + while True: + select_obj = (yield) + worker = self._workers_selobj.get(select_obj, None) + if worker is not None: + self._task_worker_pool.release_worker(worker) + selobj.selobj_del_read_obj(worker.selobj) + del self._workers_selobj[worker.selobj] + + task_work = worker.get_task_work_result() + if task_work is not None: + for timer_id, timer_owner in self._task_work_timers.items(): + if timer_owner.id == task_work.id: + timers.timers_delete_timer(timer_id) + del self._task_work_timers[timer_id] + del self._workers_timer[timer_id] + + task = self._tasks.get(task_work.task_id, None) + if task is not None: + self._running_task = task + try: + task.task_work_complete(task_work) + except StopIteration: + self.delete_task(task) + + if self._task_worker_pool.available_workers(): + self.schedule_task_work() + + @coroutine + def task_work_timeout(self): + """ + Work being done by the task has timed out + """ + timer_id = (yield) + worker = self._workers_timer.get(timer_id, None) + if worker is not None: + self._task_worker_pool.timeout_worker(worker) + selobj.selobj_del_read_obj(worker.selobj) + del self._workers_selobj[worker.selobj] + del self._workers_timer[timer_id] + + task_work = self._task_work_timers.get(timer_id, None) + if task_work is not None: + task = self._tasks.get(task_work.task_id, None) + if task is not None: + try: + task.task_work_timeout(task_work) + del self._task_work_timers[timer_id] + except StopIteration: + self.delete_task(task) + + if self._task_worker_pool.available_workers(): + self.schedule_task_work() + + @coroutine + def run_tasks(self): + """ + Run tasks that are ready to run + """ + while True: + select_obj = (yield) + if select_obj == self._run_queue.selobj: + self._tasks_scheduled = False + task_id = self._run_queue.get() + if self._tasks: + DLOG.verbose("Pool %s: Total tasks=%s." + % (self._task_worker_pool.name, + len(self._tasks))) + self._running_task = self._tasks.get(task_id, None) + if self._running_task is not None: + try: + DLOG.verbose("Pool %s: Running task, name=%s." + % (self._task_worker_pool.name, + self._running_task.name)) + self._running_task.run() + + except StopIteration: + self.delete_task(self._running_task) + + finally: + self._running_task = None + + self._schedule_next_task() + + else: + DLOG.verbose("Pool %s: No tasks to schedule." + % self._task_worker_pool.name) diff --git a/nfv/nfv-common/nfv_common/tasks/_task_work.py b/nfv/nfv-common/nfv_common/tasks/_task_work.py new file mode 100755 index 00000000..0a35e964 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/_task_work.py @@ -0,0 +1,113 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug +from nfv_common import timers +from nfv_common import exceptions +from nfv_common.helpers import Result + +DLOG = debug.debug_get_logger('nfv_common.tasks.task_work') + + +class TaskWork(object): + """ + Task Work + """ + _id = 0 + + def __init__(self, timeout, target, *args, **kwargs): + """ + Create task work + """ + self._id = TaskWork._id + self._name = target.__name__ + self._task_id = None + self._target = target + self._timeout_in_secs = timeout + self._args = list(args) + self._kwargs = dict(kwargs) + self._result = None + self._ancillary_result_data = None + self._create_timestamp_ms = timers.get_monotonic_timestamp_in_ms() + + DLOG.debug("TaskWork created, id=%s, name=%s, timeout_in_secs=%i." + % (self._id, self._name, self._timeout_in_secs)) + TaskWork._id += 1 + + @property + def name(self): + """ + Returns the name of the task work + """ + return self._name + + @property + def id(self): + """ + Returns the unique identifier of the task work + """ + return self._id + + @property + def task_id(self): + """ + Returns the task identifier that owns this task work + """ + return self._task_id + + @task_id.setter + def task_id(self, task_id): + """ + Set the task identifier that owns this task work + """ + self._task_id = task_id + + @property + def create_timestamp_ms(self): + """ + Returns the creation timestamp in milliseconds + """ + return self._create_timestamp_ms + + @property + def timeout_in_secs(self): + """ + Returns the maximum timeout in seconds that the task work should + take to run + """ + return self._timeout_in_secs + + @property + def ancillary_result_data(self): + """ + Returns the ancillary result data for the task work + """ + return self._ancillary_result_data + + @property + def result(self): + """ + Returns the result of the task work + """ + return self._result + + def run(self): + """ + Runs the task work + """ + DLOG.debug("TaskWork run, id=%s, name=%s." % (self._id, self._name)) + try: + result = self._target(*self._args, **self._kwargs) + if isinstance(result, Result): + self._result = result.result_data + self._ancillary_result_data = result.ancillary_data + else: + self._result = result + + except Exception as e: + if isinstance(e, exceptions.PickleableException): + self._result = e + else: + self._result = Exception(e.__class__.__name__ + ": " + str(e)) diff --git a/nfv/nfv-common/nfv_common/tasks/_task_worker.py b/nfv/nfv-common/nfv_common/tasks/_task_worker.py new file mode 100755 index 00000000..df87655d --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/_task_worker.py @@ -0,0 +1,96 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import thread +from nfv_common import histogram +from nfv_common import timers +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.tasks.task_worker') + + +class TaskWorker(thread.ThreadWorker): + """ + Task Worker + """ + def __init__(self, name): + super(TaskWorker, self).__init__(name) + + def initialize(self): + """ + Initialize the Task Worker + """ + return + + def finalize(self): + """ + Finalize the Task Worker + """ + return + + def do_work(self, action, work): + """ + Do work given to the Task Worker + """ + if TaskWorkerThread.ACTION_DO_WORK == action: + if work is not None: + work.run() + self.send_result(work) + + +class TaskWorkerThread(thread.Thread): + """ + Task Worker Thread + """ + ACTION_DO_WORK = "thread-do-work" + _id = 1 + + def __init__(self, name): + """ + Create a task worker + """ + self._id = TaskWorkerThread._id + self._name = name + self._worker = TaskWorker(self._name) + super(TaskWorkerThread, self).__init__(self._name, self._worker) + TaskWorkerThread._id += 1 + + @property + def id(self): + """ + Returns a unique identifier for this task worker + """ + return self._id + + @property + def name(self): + """ + Returns the name for this task worker + """ + return self._name + + def submit_task_work(self, task_work): + """ + Submit task work for this task worker to execute + """ + self.send_work(TaskWorkerThread.ACTION_DO_WORK, task_work) + + def get_task_work_result(self): + """ + Returns the result of task work completed + """ + result = self._worker.get_result() + + if hasattr(result.ancillary_result_data, 'execution_time'): + histogram.add_histogram_data( + result.name + ' [worker-execution-time]', + result.ancillary_result_data.execution_time, 'secs') + + now_ms = timers.get_monotonic_timestamp_in_ms() + elapsed_secs = (now_ms - result.create_timestamp_ms) / 1000 + histogram.add_histogram_data(result.name + ' [execution-time]', + elapsed_secs, 'secs') + + return result diff --git a/nfv/nfv-common/nfv_common/tasks/_task_worker_pool.py b/nfv/nfv-common/nfv_common/tasks/_task_worker_pool.py new file mode 100755 index 00000000..78bc559a --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/_task_worker_pool.py @@ -0,0 +1,87 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import collections + +from nfv_common import debug + +from _task_worker import TaskWorkerThread + +DLOG = debug.debug_get_logger('nfv_common.tasks.task_worker_pool') + + +class TaskWorkerPool(object): + """ + Task Worker Pool + """ + def __init__(self, pool_name, num_workers=1): + """ + Create Task Worker Pool + """ + self._pool_name = pool_name + self._workers_avail = collections.OrderedDict() + self._workers = list() + + for worker_x in range(num_workers): + worker = TaskWorkerThread("%s-Worker-%s" % (pool_name, worker_x)) + self._workers.append(worker) + + for worker in self._workers: + worker.start() + self._workers_avail[worker.id] = worker + + @property + def name(self): + """ + Returns the pool name + """ + return self._pool_name + + def available_workers(self): + """ + Returns true if there are workers available to do work + """ + if self._workers_avail: + return True + return False + + def claim_worker(self): + """ + Claims a worker, returns a worker if available or None otherwise + """ + if self._workers_avail: + _, worker = self._workers_avail.popitem() + DLOG.verbose("Claim worker %s" % worker.name) + return worker + return None + + def release_worker(self, worker, timeout=False): + """ + Release a worker back into the pool + """ + if worker is not None: + DLOG.verbose("Release worker %s" % worker.name) + self._workers_avail[worker.id] = worker + + def timeout_worker(self, worker): + """ + Timeout a worker + """ + if worker is not None: + DLOG.info("Timeout worker %s" % worker.name) + worker.stop(max_wait_in_seconds=1) + new_worker = TaskWorkerThread(worker.name) + new_worker.start() + self._workers = [x for x in self._workers if x.id == worker.id] + self._workers.append(new_worker) + self._workers_avail[new_worker.id] = new_worker + del worker + + def shutdown(self): + """ + Shutdown the pool of workers + """ + for worker in self._workers: + worker.stop(max_wait_in_seconds=1) diff --git a/nfv/nfv-common/nfv_common/tasks/unit_test.py b/nfv/nfv-common/nfv_common/tasks/unit_test.py new file mode 100755 index 00000000..9e7abc7f --- /dev/null +++ b/nfv/nfv-common/nfv_common/tasks/unit_test.py @@ -0,0 +1,138 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +import six + +from nfv_common import debug +from nfv_common import config +from nfv_common import selobj +from nfv_common import timers +from nfv_common.helpers import coroutine + +from _task_worker_pool import TaskWorkerPool +from _task_scheduler import TaskScheduler + +DLOG = debug.debug_get_logger('unit_test', debug_level=debug.DEBUG_LEVEL.INFO) + +_test_complete = False +_test_result = None + + +def unit_test(title): + def unit_test_wrapper(func): + def func_wrapper(*args, **kwargs): + try: + global _test_complete, _test_result + _test_complete = False + _test_result = None + six.print_("%-40s: " % title, end='') + result = func(*args, **kwargs) + _test_result = result + while not _test_complete: + selobj.selobj_dispatch(500) + timers.timers_schedule() + if _test_result: + six.print_("PASSED", end='\n') + else: + six.print_("%s FAILED", end='\n') + except Exception as e: + DLOG.exception("%s" % e) + six.print_("%s FAILED", end='\n') + return func_wrapper + return unit_test_wrapper + + +def _task_non_coroutine(arg1): + global _test_complete + _test_complete = True + assert(arg1 == 'arg1') + return True + + +def _task_work_func(arg1, arg2): + assert(arg1 == 'arg1') + assert(arg2 == 'arg2') + return "FUNCTION PASSED" + + +@coroutine +def _task_coroutine_callback(): + global _test_complete, _test_result + result = (yield) + assert(result == "FUNCTION PASSED") + _test_complete = True + _test_result = True + + +def _task_coroutine(future, arg1, callback): + assert(arg1 == 'arg1') + future.work(_task_work_func, 'arg1', 'arg2') + future.result = (yield) + if future.result.is_complete(): + callback.send(future.result.data) + else: + callback.send(None) + + +def _task_coroutine_with_timer(future, arg1, callback): + assert(arg1 == 'arg1') + timer_id = future.timer('timer-test', 2) + start_ms = timers.get_monotonic_timestamp_in_ms() + future.result = (yield) + end_ms = timers.get_monotonic_timestamp_in_ms() + if future.result.is_complete(): + if future.result.is_timer: + if future.result.data == timer_id: + elapsed_secs = (end_ms - start_ms) / 1000 + if 2 < elapsed_secs: + callback.send("FUNCTION PASSED") + return + callback.send(None) + + +class UnitTest(object): + def __init__(self): + self._task_worker_pool = TaskWorkerPool('test-pool', num_workers=1) + self._scheduler = TaskScheduler('test-scheduler', self._task_worker_pool) + + @unit_test('NORMAL_FUNCTION_CALL') + def test_normal_function_call(self): + result = self._scheduler.add_task(_task_non_coroutine, 'arg1') + return result + + @unit_test('CO-ROUTINE_FUNCTION_CALL') + def test_coroutine_function_call(self): + self._scheduler.add_task(_task_coroutine, 'arg1', + callback=_task_coroutine_callback()) + return _test_result + + @unit_test('CO-ROUTINE_FUNCTION_TIMER_CALL') + def test_coroutine_timer_function_call(self): + self._scheduler.add_task(_task_coroutine_with_timer, 'arg1', + callback=_task_coroutine_callback()) + return _test_result + + def run(self): + six.print_("TASKS UNIT TESTS", end='\n') + six.print_("================", end='\n') + self.test_normal_function_call() + self.test_coroutine_function_call() + self.test_coroutine_timer_function_call() + + +if __name__ == '__main__': + + debug.debug_initialize(config.CONF['debug']) + selobj.selobj_initialize() + timers.timers_initialize(500, 1000, 1000) + + unit_test = UnitTest() + unit_test.run() + + timers.timers_finalize() + selobj.selobj_finalize() + debug.debug_finalize() \ No newline at end of file diff --git a/nfv/nfv-common/nfv_common/tcp/__init__.py b/nfv/nfv-common/nfv_common/tcp/__init__.py new file mode 100755 index 00000000..f2824d31 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tcp/__init__.py @@ -0,0 +1,9 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _tcp_connection import TCPConnection +from _tcp_server import TCPServer diff --git a/nfv/nfv-common/nfv_common/tcp/_tcp_connection.py b/nfv/nfv-common/nfv_common/tcp/_tcp_connection.py new file mode 100755 index 00000000..353dd430 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tcp/_tcp_connection.py @@ -0,0 +1,268 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import hmac +import hashlib +import base64 + +import struct +import socket +import select +import errno + +from nfv_common import debug +from nfv_common import timers + +DLOG = debug.debug_get_logger('nfv_common.tcp') + + +class TCPConnection(object): + """ + TCP Connection + """ + AUTH_VECTOR_MAX_SIZE = 64 + + def __init__(self, ip, port, sock=None, blocking=True, owner=None, + auth_key=None): + """ + Create a TCP connection + """ + self._owner = owner + self._auth_key = auth_key + self._ip = ip + self._port = port + if sock is None: + result = None + for family in (socket.AF_INET6, socket.AF_INET): + try: + result = socket.getaddrinfo(ip, None, family, + socket.SOCK_STREAM) + break + except socket.error: + continue + + if result is None or 0 == len(result): + raise ValueError("Unable to get address information for %s." % ip) + + family, sock_type, protocol, canonical_name, socket_address = result[0] + + self._socket = socket.socket(family, socket.SOCK_STREAM) + self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + self._socket.bind((ip, int(port))) + else: + self._socket = sock + + self._blocking = blocking + self._socket.setblocking(blocking) + self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) + self._msg_parts = list() + self._msg_len = 0 + self._msg_len_remaining = -1 + + @property + def ip(self): + """ + Returns the ip of the connection + """ + return self._ip + + @property + def port(self): + """ + Returns the port of the connection + """ + return self._port + + @property + def sock(self): + """ + Returns the socket object of the connection + """ + return self._socket + + @property + def selobj(self): + """ + Returns the selection object associated with the connection + """ + return self._socket.fileno() + + def is_shutdown(self): + """ + Returns true if the connection has shutdown + """ + return self._socket is None + + def connect(self, ip, port, timeout_in_secs=None): + """ + Connect to an end-point + """ + try: + if timeout_in_secs is not None: + self._socket.settimeout(timeout_in_secs) + + self._socket.connect((ip, int(port))) + + if self._blocking: + self._socket.settimeout(None) + + self._socket.setblocking(self._blocking) + + except socket.error as e: + DLOG.error("Connect to end-point failed, ip=%s, port=%s, error=%s." + % (ip, port, e)) + self.close() + raise + + def send(self, payload): + """ + Send a message into the TCP connection, assumes the following + messaging format: | length (4-bytes) | string of bytes | + """ + bytes_sent = 0 + + if self._socket is not None: + if self._auth_key is None: + msg = struct.pack('!L', socket.htonl(len(payload))) + msg += payload + else: + auth_vector = hmac.new(self._auth_key, msg=payload, + digestmod=hashlib.sha512).digest() + msg_len = len(auth_vector) + len(payload) + msg = struct.pack('!L', socket.htonl(msg_len)) + msg += auth_vector[:self.AUTH_VECTOR_MAX_SIZE] + msg += payload + + bytes_sent = self._socket.send(bytes(msg)) + return bytes_sent + + def _receive_non_blocking(self): + """ + Receive a message from the TCP connection (non-blocking), assumes the + following messaging format: | length (4-bytes) | string of bytes | + """ + if self._socket is None: + return None + + message = None + self._socket.setblocking(False) + try: + if -1 == self._msg_len_remaining: + if 0 == self._msg_len: + read_len = struct.calcsize('!L') + else: + read_len = struct.calcsize('!L') - self._msg_len + + msg_block = self._socket.recv(read_len) + if 0 == len(msg_block): + DLOG.verbose("Connection closed.") + self.close() + else: + self._msg_parts.append(msg_block) + msg = b"".join(self._msg_parts) + self._msg_len = len(msg_block) + + if struct.calcsize('!L') == len(msg): + self._msg_parts[:] = list() + self._msg_len = socket.ntohl(struct.unpack('!L', msg)[0]) + self._msg_len_remaining = self._msg_len + + else: + msg_block = self._socket.recv(self._msg_len_remaining) + if 0 == len(msg_block): + DLOG.verbose("Connection closed.") + self.close() + else: + self._msg_parts.append(msg_block) + self._msg_len_remaining -= len(msg_block) + if 0 == self._msg_len_remaining: + msg = b"".join(self._msg_parts) + self._msg_parts[:] = list() + self._msg_len = 0 + self._msg_len_remaining = -1 + + if self._auth_key is None: + message = msg + else: + auth_vector = msg[:self.AUTH_VECTOR_MAX_SIZE] + message = msg[self.AUTH_VECTOR_MAX_SIZE:] + expected = hmac.new(self._auth_key, msg=message, + digestmod=hashlib.sha512).digest() + + if auth_vector != expected: + auth_vector_str = base64.b64encode(auth_vector) + expected_str = base64.b64encode(expected) + + DLOG.info("Authorization vector mismatch, msg=%s, " + "auth_vector=%s, expected=%s." + % (message, auth_vector_str, + expected_str)) + message = None + + except socket.timeout as e: + DLOG.info("TCP socket timeout, ip=%s, por=%s, error=%s." + % (self._ip, self._port, e)) + + except socket.error as e: + DLOG.error("TCP socket error, ip=%s, port=%s, error=%s." + % (self._ip, self._port, e)) + self.close() + + finally: + if self._socket is not None: + self._socket.setblocking(self._blocking) + + return message + + def _receive_blocking(self, timeout_in_secs=5): + """ + Receive a message from the TCP connection (blocking) + """ + start_ms = timers.get_monotonic_timestamp_in_ms() + + while self._socket is not None: + read_objs = [self._socket.fileno()] + try: + readable, writeable, in_error \ + = select.select(read_objs, [], [], timeout_in_secs) + + for selobj in readable: + if selobj == self._socket.fileno(): + msg = self._receive_non_blocking() + if msg is not None: + return msg + + except (OSError, socket.error, select.error) as e: + if errno.EINTR != e.args[0]: + pass + + now_ms = timers.get_monotonic_timestamp_in_ms() + secs_expired = (now_ms - start_ms) / 1000 + if timeout_in_secs <= secs_expired: + DLOG.info("Timed out waiting for a message.") + break + else: + timeout_in_secs -= secs_expired + + return None + + def receive(self, blocking=True, timeout_in_secs=5): + """ + Receive a message from the TCP connection + """ + if blocking: + return self._receive_blocking(timeout_in_secs) + else: + return self._receive_non_blocking() + + def close(self): + """ + Close the TCP connection + """ + if self._socket is not None: + if self._owner is not None: + self._owner.closing_connection(self.selobj) + self._socket.close() + self._socket = None diff --git a/nfv/nfv-common/nfv_common/tcp/_tcp_server.py b/nfv/nfv-common/nfv_common/tcp/_tcp_server.py new file mode 100755 index 00000000..9971fb49 --- /dev/null +++ b/nfv/nfv-common/nfv_common/tcp/_tcp_server.py @@ -0,0 +1,118 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug +from nfv_common import selobj +from nfv_common.helpers import coroutine + +from _tcp_connection import TCPConnection + +DLOG = debug.debug_get_logger('nfv_common.tcp') + + +class TCPServer(object): + """ + TCP Server + """ + def __init__(self, ip, port, msg_handler, max_connections=5, auth_key=None): + """ + Create a TCP Server + """ + self._auth_key = auth_key + self._connection = TCPConnection(ip, port) + self._socket = self._connection.sock + self._socket.listen(max_connections) + selobj.selobj_add_read_obj(self._connection.selobj, self.dispatch) + self._client_connections = dict() + self._message_handler = msg_handler + + @coroutine + def selobj_error_callback(self): + while True: + select_obj = (yield) + client_connection = self._client_connections.get(select_obj, None) + if client_connection is not None: + selobj.selobj_del_read_obj(select_obj) + del self._client_connections[select_obj] + DLOG.info("Client connection error, from %s, port=%s." + % (client_connection.ip, client_connection.port)) + selobj.selobj_del_error_callback(select_obj) + + @coroutine + def dispatch(self): + while True: + select_obj = (yield) + if select_obj == self._connection.selobj: + # Client Connect + client_socket, client_address = self._socket.accept() + client_ip = client_address[0] + client_port = client_address[1] + + client_connection = TCPConnection(client_ip, client_port, + client_socket, False, self, + self._auth_key) + selobj.selobj_add_read_obj(client_connection.selobj, + self.dispatch) + selobj.selobj_add_error_callback(client_connection.selobj, + self.selobj_error_callback) + self._client_connections[client_connection.selobj] \ + = client_connection + + DLOG.verbose("Client connected from %s, port=%s." + % (client_ip, client_port)) + else: + # Client Data + client_connection = self._client_connections.get(select_obj, + None) + if client_connection is not None: + msg = client_connection.receive(blocking=False) + if msg is not None: + DLOG.verbose("Message received from %s, port=%s, " + "select_obj=%s." % (client_connection.ip, + client_connection.port, + select_obj)) + self._message_handler(client_connection, msg) + + client_connection = self._client_connections.get(select_obj, + None) + if client_connection is not None: + if client_connection.is_shutdown(): + selobj.selobj_del_read_obj(select_obj) + selobj.selobj_del_error_callback(select_obj) + del self._client_connections[select_obj] + DLOG.verbose("Client connection closed, ip=%s, port=%s, " + "select_obj=%s." % (client_connection.ip, + client_connection.port, + select_obj)) + else: + selobj.selobj_del_read_obj(select_obj) + selobj.selobj_del_error_callback(select_obj) + + def closing_connection(self, select_obj): + """ + Connection is about to be closed + """ + client_connection = self._client_connections.get(select_obj, None) + if client_connection is not None: + selobj.selobj_del_read_obj(select_obj) + selobj.selobj_del_error_callback(select_obj) + del self._client_connections[select_obj] + DLOG.verbose("Client connection closing, ip=%s, port=%s, " + "select_obj=%s." % (client_connection.ip, + client_connection.port, + select_obj)) + + def shutdown(self): + """ + Shutdown the TCP Server + """ + connections = self._client_connections.copy() + for client_connection in connections.itervalues(): + selobj.selobj_del_read_obj(client_connection.selobj) + selobj.selobj_del_error_callback(client_connection.selobj) + client_connection.close() + + selobj.selobj_del_read_obj(self._connection.selobj) + self._connection.close() diff --git a/nfv/nfv-common/nfv_common/tcp/unit_test.py b/nfv/nfv-common/nfv_common/tcp/unit_test.py new file mode 100755 index 00000000..3fad733c --- /dev/null +++ b/nfv/nfv-common/nfv_common/tcp/unit_test.py @@ -0,0 +1,57 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +import time +import argparse + +from nfv_common import debug +from nfv_common import selobj +from nfv_common import timers + +from _tcp_server import TCPServer +from _tcp_connection import TCPConnection + + +def message_handler(client_connection, msg): + print("Received Message: %s" % msg) + + +if __name__ == '__main__': + + CONF = dict() + CONF['debug'] = dict() + CONF['debug']['config_file'] = '/etc/nfv/vim/debug.ini' + CONF['debug']['handlers'] = 'stdout' + + debug.debug_initialize(CONF['debug']) + selobj.selobj_initialize() + timers.timers_initialize(500, 1000, 1000) + + parser = argparse.ArgumentParser() + parser.add_argument('-s', '--server', help='server-side', + action="store_true") + parser.add_argument('-c', '--client', help='client-side', + action="store_true") + args = parser.parse_args() + + if args.server: + tcp_server = TCPServer('127.0.0.1', '3201', message_handler) + + while True: + selobj.selobj_dispatch(5000) + + else: + tcp_connection = TCPConnection('127.0.0.1', '3202') + tcp_connection.connect('127.0.0.1', '3201') + + while True: + tcp_connection.send("HI") + time.sleep(5) + + timers.timers_finalize() + selobj.selobj_finalize() + debug.debug_finalize() diff --git a/nfv/nfv-common/nfv_common/thread/__init__.py b/nfv/nfv-common/nfv_common/thread/__init__.py new file mode 100755 index 00000000..006cd625 --- /dev/null +++ b/nfv/nfv-common/nfv_common/thread/__init__.py @@ -0,0 +1,9 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _thread import Thread +from _thread_worker import ThreadWorker diff --git a/nfv/nfv-common/nfv_common/thread/_thread.py b/nfv/nfv-common/nfv_common/thread/_thread.py new file mode 100755 index 00000000..517774c3 --- /dev/null +++ b/nfv/nfv-common/nfv_common/thread/_thread.py @@ -0,0 +1,237 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import sys +import ctypes +import signal +from multiprocessing import Process + +from nfv_common import debug +from nfv_common import selobj +from nfv_common import timers +from nfv_common import selectable +from nfv_common.helpers import coroutine + +from _thread_progress_marker import ThreadProgressMarker + +DLOG = debug.debug_get_logger('nfv_common.thread') + + +class ThreadState(object): + """ + Thread State + """ + def __init__(self): + self.stay_on = True + self.debug_reload = False + + +class Thread(object): + """ + Thread + """ + ACTION_DEBUG_CONFIG_RELOAD = "thread-debug-config-reload" + ACTION_STOP = "thread-stop" + + def __init__(self, name, thread_worker, check_interval_in_secs=30): + """ + Create thread + """ + self._name = name + self._work_queue = selectable.MultiprocessQueue() + self._thread_worker = thread_worker + self._progress_marker = ThreadProgressMarker() + self._process = Process(target=_thread_main, + args=(self._name, self._progress_marker, + debug.debug_get_config(), + thread_worker, self._work_queue), + name=self._name) + self._process.daemon = True + self._check_timer_id = None + self._check_interval_in_secs = check_interval_in_secs + self._last_marker_value = None + self._stall_timestamp_ms = None + debug.debug_register_config_change_callback(self.debug_config_change) + + @property + def name(self): + """ + Return the name of the thread + """ + return self._name + + @property + def selobj(self): + """ + Returns the selection object that signals when thread work + is complete + """ + return self._thread_worker.selobj + + @property + def stall_elapsed_secs(self): + """ + Returns the elapsed time in seconds that the thread has been stalled + """ + if self._stall_timestamp_ms is not None: + now = timers.get_monotonic_timestamp_in_ms() + return int((now - self._stall_timestamp_ms) / 1000) + return 0 + + @coroutine + def do_check(self): + """ + Check the Thread for progress + """ + while True: + (yield) + if self._last_marker_value is not None: + if self._last_marker_value == self._progress_marker.value: + if self._stall_timestamp_ms is None: + self._stall_timestamp_ms = \ + timers.get_monotonic_timestamp_in_ms() + + DLOG.error("Thread %s stalled, progress_marker=%s, " + "elapsed_secs=%s." % (self._name, + self._progress_marker.value, + self.stall_elapsed_secs)) + else: + self._stall_timestamp_ms = None + + self._last_marker_value = self._progress_marker.value + + def start(self): + """ + Start the Thread + """ + self._process.start() + if self._check_timer_id is None: + self._check_timer_id = timers.timers_create_timer( + self._name, self._check_interval_in_secs, + self._check_interval_in_secs, self.do_check) + + def stop(self, max_wait_in_seconds): + """ + Stop the Thread + """ + self._work_queue.put([Thread.ACTION_STOP, None]) + self._process.join(max_wait_in_seconds) + if self._process.is_alive(): + self._process.terminate() + if self._check_timer_id is not None: + timers.timers_delete_timer(self._check_timer_id) + self._work_queue.close() + + def debug_config_change(self): + self._work_queue.put([Thread.ACTION_DEBUG_CONFIG_RELOAD, None]) + + def send_work(self, action, work): + """ + Send work to Thread + """ + self._work_queue.put([action, work]) + + def get_result(self): + """ + Get work result + """ + return self._thread_worker.get_result() + + +@coroutine +def _thread_dispatch_work(thread_state, thread_worker, work_queue): + """ + Dispatch thread work + """ + while True: + select_obj = (yield) + if select_obj == work_queue.selobj: + work_entry = work_queue.get() + if work_entry is not None: + action, work = work_entry + + DLOG.verbose("Received work, action=%s." % action) + + if Thread.ACTION_DEBUG_CONFIG_RELOAD == action: + thread_state.debug_reload = True + + elif Thread.ACTION_STOP == action: + thread_state.stay_on = False + + else: + thread_worker.do_work(action, work) + + +def _thread_main(thread_name, progress_marker, debug_config, thread_worker, + work_queue): + """ + Main loop for the thread + """ + from ctypes import util + + PR_SET_PDEATHSIG = 1 + PR_SET_NAME = 15 + PR_SIGKILL = 9 + + libc = ctypes.cdll.LoadLibrary(util.find_library("c")) + result = libc.prctl(PR_SET_NAME, thread_name) + if 0 != result: + DLOG.error("PRCTL set-name failed with error=%s." % result) + sys.exit(200) + + result = libc.prctl(PR_SET_PDEATHSIG, PR_SIGKILL) + if 0 != result: + DLOG.error("PRCTL set-parent-death-signal failed with error=%s." % result) + sys.exit(201) + + signal.signal(signal.SIGTERM, signal.SIG_IGN) + signal.signal(signal.SIGINT, signal.SIG_IGN) + signal.signal(signal.SIGHUP, signal.SIG_IGN) + signal.signal(signal.SIGUSR1, signal.SIG_IGN) + signal.signal(signal.SIGUSR2, signal.SIG_IGN) + + try: + thread_state = ThreadState() + + debug.debug_initialize(debug_config, thread_name=thread_name) + selobj.selobj_initialize() + timers.timers_initialize(thread_worker.tick_interval_in_ms, + thread_worker.tick_max_delay_in_ms, + thread_worker.tick_delay_debounce_in_ms) + + DLOG.debug("Thread %s: initializing." % thread_name) + thread_worker.initialize() + + selobj.selobj_add_read_obj(work_queue.selobj, _thread_dispatch_work, + thread_state, thread_worker, work_queue) + + DLOG.debug("Thread %s: started." % thread_name) + while thread_state.stay_on: + progress_marker.increment() + selobj.selobj_dispatch(thread_worker.tick_interval_in_ms) + timers.timers_schedule() + + if not timers.timers_scheduling_on_time(): + DLOG.info("Thread %s: not scheduling on time" % thread_name) + + if thread_state.debug_reload: + debug.debug_reload_config() + thread_state.debug_reload = False + + except KeyboardInterrupt: + print("Keyboard Interrupt received.") + pass + + except Exception as e: + DLOG.exception("%s" % e) + sys.exit(202) + + finally: + DLOG.info("Thread %s: shutting down." % thread_name) + thread_worker.finalize() + timers.timers_finalize() + selobj.selobj_finalize() + DLOG.info("Thread %s: shutdown." % thread_name) + debug.debug_finalize() diff --git a/nfv/nfv-common/nfv_common/thread/_thread_progress_marker.py b/nfv/nfv-common/nfv_common/thread/_thread_progress_marker.py new file mode 100755 index 00000000..0b2b0e8a --- /dev/null +++ b/nfv/nfv-common/nfv_common/thread/_thread_progress_marker.py @@ -0,0 +1,28 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from ctypes import c_ulonglong +from multiprocessing import RawValue, Lock + +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.thread.thread_progress_marker') + + +class ThreadProgressMarker(object): + """ + Thread Progress Marker + """ + def __init__(self, initial_value=0): + self.progress_marker = RawValue(c_ulonglong, initial_value) + self.lock = Lock() + + def increment(self, increment_by=1): + with self.lock: + self.progress_marker.value += increment_by + + @property + def value(self): + return self.progress_marker.value diff --git a/nfv/nfv-common/nfv_common/thread/_thread_worker.py b/nfv/nfv-common/nfv_common/thread/_thread_worker.py new file mode 100755 index 00000000..e527e735 --- /dev/null +++ b/nfv/nfv-common/nfv_common/thread/_thread_worker.py @@ -0,0 +1,82 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug +from nfv_common import selectable + +DLOG = debug.debug_get_logger('nfv_common.thread.thread_worker') + + +class ThreadWorker(object): + """ + Thread Worker + """ + def __init__(self, name, tick_interval_in_ms=500, + tick_max_delay_in_ms=10000, tick_delay_debounce_in_ms=5000): + self._name = name + self._tick_interval_in_ms = tick_interval_in_ms + self._tick_max_delay_in_ms = tick_max_delay_in_ms + self._tick_delay_debounce_in_ms = tick_delay_debounce_in_ms + self._result_queue = selectable.MultiprocessQueue() + + @property + def name(self): + """ + Returns the name of thread worker + """ + return self._name + + @property + def tick_interval_in_ms(self): + return self._tick_interval_in_ms + + @property + def tick_max_delay_in_ms(self): + return self._tick_max_delay_in_ms + + @property + def tick_delay_debounce_in_ms(self): + return self._tick_delay_debounce_in_ms + + @property + def selobj(self): + """ + Returns the selection object that signals when thread work + is complete + """ + return self._result_queue.selobj + + def send_result(self, result): + """ + Send work result + """ + self._result_queue.put(result) + + def get_result(self): + """ + Get work result + """ + return self._result_queue.get() + + def do_work(self, action, work): + """ + Called to do work from thread-main + """ + DLOG.verbose("Default thread worker do_work called for %s." + % self._name) + + def initialize(self): + """ + Called to initialize thread worker from thread-main + """ + DLOG.verbose("Default thread worker initialize called for %s." + % self._name) + + def finalize(self): + """ + Called to finalize thread worker from thread-main + """ + DLOG.verbose("Default thread worker finalize called for %s." + % self._name) diff --git a/nfv/nfv-common/nfv_common/timers/__init__.py b/nfv/nfv-common/nfv_common/timers/__init__.py new file mode 100755 index 00000000..9fe8666b --- /dev/null +++ b/nfv/nfv-common/nfv_common/timers/__init__.py @@ -0,0 +1,14 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from _timestamp import get_monotonic_timestamp_in_ms +from _timer_module import interval_timer +from _timer_module import timers_create_timer, timers_delete_timer +from _timer_module import timers_reschedule_timer +from _timer_module import timers_scheduling_on_time, timers_schedule +from _timer_module import timers_register_interval_timers +from _timer_module import timers_initialize, timers_finalize diff --git a/nfv/nfv-common/nfv_common/timers/_timer.py b/nfv/nfv-common/nfv_common/timers/_timer.py new file mode 100755 index 00000000..80f6d83b --- /dev/null +++ b/nfv/nfv-common/nfv_common/timers/_timer.py @@ -0,0 +1,73 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug + +from _timestamp import get_monotonic_timestamp_in_ms + +DLOG = debug.debug_get_logger('nfv_common.timers.timer') + + +class Timer(object): + """ + Timer + """ + _id = 1 + + def __init__(self, timer_name, initial_delay_secs, interval_secs, + callback, *callback_args, **callback_kwargs): + """ + Create timer + """ + self._timer_id = Timer._id + self._timer_name = timer_name + self._interval_secs = interval_secs + self._arm_timestamp = get_monotonic_timestamp_in_ms() + self._callback = callback(*callback_args, **callback_kwargs) + + if initial_delay_secs is None: + self._next_expiry_in_secs = interval_secs + else: + self._next_expiry_in_secs = initial_delay_secs + Timer._id += 1 + + @property + def timer_id(self): + """ + Returns the unique timer identifier + """ + return self._timer_id + + @property + def timer_name(self): + """ + Returns the name of the timer + """ + return self._timer_name + + def reschedule(self, interval_secs): + """ + Reschedule a timer + """ + self._interval_secs = interval_secs + self._next_expiry_in_secs = self._interval_secs + + def callback(self, now_ms): + """ + Execute the callback associated with this timer if enough + time has elapsed + """ + rearm = True + secs_expired = (now_ms - self._arm_timestamp) / 1000 + if secs_expired > self._next_expiry_in_secs: + DLOG.verbose("Timer %s with timer id %s fired." % (self._timer_name, + self._timer_id)) + try: + self._callback.send(self._timer_id) + self._arm_timestamp = get_monotonic_timestamp_in_ms() + self._next_expiry_in_secs = self._interval_secs + except StopIteration: + rearm = False + return rearm diff --git a/nfv/nfv-common/nfv_common/timers/_timer_module.py b/nfv/nfv-common/nfv_common/timers/_timer_module.py new file mode 100755 index 00000000..ccf9eb10 --- /dev/null +++ b/nfv/nfv-common/nfv_common/timers/_timer_module.py @@ -0,0 +1,124 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import functools + +from nfv_common import debug + +from _timer import Timer +from _timer_scheduler import TimerScheduler + +DLOG = debug.debug_get_logger('nfv_common.timers.timer_module') + +_scheduler = None +_interval_timers = dict() + + +def interval_timer(name, initial_delay_secs, interval_secs): + """ + Decorator function used to create an interval timer, note decorators + are called at load time + """ + def timer_wrap(func): + def timer_wrapper(*args, **kwargs): + target = func(*args, **kwargs) + target.send(None) + return target + + functools.update_wrapper(timer_wrapper, func) + if timer_wrapper not in _interval_timers: + _interval_timers[timer_wrapper] = (name, initial_delay_secs, + interval_secs, timer_wrapper) + return timer_wrapper + return timer_wrap + + +def timers_create_timer(name, initial_delay_secs, interval_secs, + callback, *callback_args, **callback_kwargs): + """ + Create a timer + """ + global _scheduler + + timer = Timer(name, initial_delay_secs, interval_secs, + callback, *callback_args, **callback_kwargs) + _scheduler.add_timer(timer) + DLOG.debug("Timer %s created, name=%s." % (timer.timer_id, name)) + return timer.timer_id + + +def timers_delete_timer(timer_id): + """ + Delete a timer + """ + global _scheduler + + _scheduler.delete_timer(timer_id) + DLOG.debug("Timer %s deleted." % timer_id) + + +def timers_reschedule_timer(timer_id, interval_secs): + """ + Reschedule a timer at a different interval + """ + global _scheduler + + _scheduler.reschedule_timer(timer_id, interval_secs) + DLOG.debug("Timer %s rescheduled every %s seconds." % (timer_id, + interval_secs)) + + +def timers_scheduling_on_time(): + """ + Determine if we are scheduling timers on time + """ + global _scheduler + + return _scheduler.scheduling_on_time + + +def timers_schedule(): + """ + Schedule timers + """ + global _scheduler + + _scheduler.schedule() + + +def timers_register_interval_timers(interval_timers): + """ + Register the given interval timers + """ + for timer_func in interval_timers: + name, initial_delay_secs, interval_secs, func \ + = _interval_timers[timer_func] + + timers_create_timer(name, initial_delay_secs, interval_secs, func) + + +def timers_initialize(scheduler_interval_ms, scheduler_max_delay_ms, + scheduler_delay_debounce_ms): + """ + Initializes the timer package + """ + global _scheduler + + if _scheduler is not None: + del _scheduler + + _scheduler = TimerScheduler(scheduler_interval_ms, + scheduler_max_delay_ms, + scheduler_delay_debounce_ms) # flake8: noqa + + +def timers_finalize(): + """ + Finalizes the timer package + """ + global _scheduler + + if _scheduler is not None: + del _scheduler diff --git a/nfv/nfv-common/nfv_common/timers/_timer_scheduler.py b/nfv/nfv-common/nfv_common/timers/_timer_scheduler.py new file mode 100755 index 00000000..975d7c09 --- /dev/null +++ b/nfv/nfv-common/nfv_common/timers/_timer_scheduler.py @@ -0,0 +1,117 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +from nfv_common import debug +from nfv_common import histogram + +from _timestamp import get_monotonic_timestamp_in_ms + +DLOG = debug.debug_get_logger('nfv_common.timers.timer_scheduler') + + +class TimerScheduler(object): + """ + Timer Scheduler + """ + def __init__(self, scheduler_interval_ms, scheduler_max_delay_ms, + scheduler_delay_debounce_ms): + """ + Create a timer scheduler + """ + self._scheduler_interval_ms = scheduler_interval_ms + self._scheduler_max_delay_ms = scheduler_max_delay_ms + self._scheduler_delay_debounce_ms = scheduler_delay_debounce_ms + self._scheduler_timestamp_ms = 0 + self._scheduler_delay_timestamp_ms = 0 + self._timers = [] + self._scheduling_on_time = True + self._timers_to_delete = [] + self._scheduling_timers = False + + @property + def scheduling_on_time(self): + """ + Determine if timers are being scheduled on time + """ + return self._scheduling_on_time + + def schedule(self): + """ + Schedule timers + """ + now_ms = get_monotonic_timestamp_in_ms() + ms_expired = now_ms - self._scheduler_timestamp_ms + + if ms_expired < self._scheduler_interval_ms: + DLOG.verbose("Not enough time has elapsed to schedule timers, " + "ms_expired=%d ms." % ms_expired) + return + + if 0 != self._scheduler_timestamp_ms: + if ms_expired >= self._scheduler_max_delay_ms: + if self._scheduling_on_time: + self._scheduling_on_time = False + DLOG.info("Not scheduling on time, elapsed=%d ms." + % ms_expired) + + self._scheduler_delay_timestamp_ms \ + = get_monotonic_timestamp_in_ms() + else: + if not self.scheduling_on_time: + ms_expired = now_ms - self._scheduler_delay_timestamp_ms + if ms_expired > self._scheduler_delay_debounce_ms: + self._scheduling_on_time = True + DLOG.info("Now scheduling on time.") + + self._scheduler_timestamp_ms = now_ms + self._scheduling_timers = True + overall_start_ms = get_monotonic_timestamp_in_ms() + try: + DLOG.verbose('Scheduling timers.') + for timer in self._timers: + start_ms = get_monotonic_timestamp_in_ms() + rearm = timer.callback(now_ms) + elapsed_ms = get_monotonic_timestamp_in_ms() - start_ms + histogram.add_histogram_data("timer callback: " + timer.timer_name, + elapsed_ms / 100, "decisecond") + if not rearm and timer.timer_id not in self._timers_to_delete: + self._timers_to_delete.append(timer.timer_id) + finally: + self._scheduling_timers = False + + # Cleanup pending timers to be deleted. + self._timers[:] = [timer for timer in self._timers + if timer.timer_id not in self._timers_to_delete] + # Cleanup list of timers to delete + del self._timers_to_delete[:] + + elapsed_ms = get_monotonic_timestamp_in_ms() - overall_start_ms + histogram.add_histogram_data("timer overall time per dispatch: ", + elapsed_ms / 100, "decisecond") + + def add_timer(self, timer): + """ + Add a timer + """ + self._timers.append(timer) + + def delete_timer(self, timer_id): + """ + Delete a timer + """ + if self._scheduling_timers: + self._timers_to_delete.append(timer_id) + else: + self._timers[:] = [timer for timer in self._timers + if timer_id != timer.timer_id] + + def reschedule_timer(self, timer_id, interval_secs): + """ + Reschedule a timer + """ + existing_timer = next((timer for timer in self._timers + if timer_id == timer.timer_id), None) + if existing_timer is not None: + existing_timer.reschedule(interval_secs) diff --git a/nfv/nfv-common/nfv_common/timers/_timestamp.py b/nfv/nfv-common/nfv_common/timers/_timestamp.py new file mode 100755 index 00000000..8c0c0bf0 --- /dev/null +++ b/nfv/nfv-common/nfv_common/timers/_timestamp.py @@ -0,0 +1,41 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import os +import ctypes + +from nfv_common import debug + +DLOG = debug.debug_get_logger('nfv_common.timers.timestamp') + +CLOCK_MONOTONIC_RAW = 4 # from + + +class timespec(ctypes.Structure): + """ + Timespec C Type + """ + _fields_ = [('tv_sec', ctypes.c_long), ('tv_nsec', ctypes.c_long)] + + +try: + librt = ctypes.CDLL('librt.so.1', use_errno=True) + clock_gettime = librt.clock_gettime + clock_gettime.argtypes = [ctypes.c_int, ctypes.POINTER(timespec)] +except Exception: + raise OSError("Could not load librt.so library") + + +def get_monotonic_timestamp_in_ms(): + """ + Returns the timestamp in milliseconds + """ + t = timespec() + if 0 != clock_gettime(CLOCK_MONOTONIC_RAW, ctypes.pointer(t)): + errno_ = ctypes.get_errno() + raise OSError(errno_, os.strerror(errno_)) + timestamp_ms = (t.tv_sec * 1e+3) + (t.tv_nsec * 1e-6) + DLOG.verbose("Monotonic timestamp fetched is %s." % timestamp_ms) + return timestamp_ms diff --git a/nfv/nfv-common/nfv_common/validate.py b/nfv/nfv-common/nfv_common/validate.py new file mode 100755 index 00000000..6b498d74 --- /dev/null +++ b/nfv/nfv-common/nfv_common/validate.py @@ -0,0 +1,57 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +import uuid + + +def valid_uuid_str(uuid_str, version=4): + """ + Returns true if uuid string given is a valid uuid + """ + try: + uuid.UUID(uuid_str, version=version) + + except ValueError: + return False + + return True + + +def valid_uuid_hex(uuid_hex_str, version=4): + """ + Returns true if uuid hex string given is a valid uuid + """ + try: + uuid_value = uuid.UUID(uuid_hex_str, version=version) + + except ValueError: + return False + + # Verify that the uuid_hex_str was not converted into a valid uuid. This + # is possible when the uuid_hex_str is a valid hex string but not a valid + # uuid. The uuid.UUID constructor will auto correct. + return uuid_value.hex == uuid_hex_str + + +def valid_bool(boolean_str): + """ + Returns true if string given is a valid boolean + """ + if boolean_str.lower() in ['true', '1', 'false', '0']: + return True + return False + + +def valid_integer(integer_str): + """ + Returns true if string given is a valid integer + """ + try: + int(integer_str) + + except ValueError: + return False + + return True diff --git a/nfv/nfv-common/setup.py b/nfv/nfv-common/setup.py new file mode 100755 index 00000000..d63d79a2 --- /dev/null +++ b/nfv/nfv-common/setup.py @@ -0,0 +1,20 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# flake8: noqa +# +from setuptools import setup, find_packages + +setup( + name='windriver-nfv_common-plugins', + description='Wind River NFV Plugins', + version='1.0.0', + license='Apache-2.0', + platforms=['any'], + provides='nfv_plugins', + packages=find_packages(), + package_data={'nfv_common.forensic': ['config/*']}, + include_package_data=True, +) diff --git a/nfv/nfv-debug-tools/histogram_analysis/Histogram.py b/nfv/nfv-debug-tools/histogram_analysis/Histogram.py new file mode 100755 index 00000000..b8b82e36 --- /dev/null +++ b/nfv/nfv-debug-tools/histogram_analysis/Histogram.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python +################################################################################ +# +# Copyright (c) 2017 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +################################################################################ +# +# Description: Un-gzips nfv-vim log files within the same directory and generates +# CSVs based on the processes found related to histogram data, +# naming each CSV after the process found in the log files whose +# log data it is storing. Each CSV file contains 3 columns of +# data: TIMESTAMP, average execution time, hits per sample +# This script is meant to be used with the plotter.py data visualization +# script. +# +# Behaviour : The script runs without any input arguments, copies all nfv-vim +# log files found, gzipped or not, and places them into a directory +# called logs/ where it un-gzips any zipped files (this retains the +# original gzipped files). After this it begins parsing each nfv-vim +# log file found, starting from the highest numbered e.g. nfv-vim.log.20 +# down to the lowest nfv-vim.log.1 or nfv-vim.log. This script expects +# the highest number of digits following .log. to be two i.e [0-9][0-9] +# CSV files will be stored in a new directory called csv/ +# Timestamps for each sample are written to the CSV, followed by the +# average execution time which is each execution time in the sample, +# multiplied by its respective number of hits during that sample, and +# then all of these values summed together, divided by the sum comprising +# the total number of hits for that particular sample. The third column +# is simply the total number of hits for that same (across all execution +# times). +# +# Place this script in a directory containing the gzipped or ungzipped logs you would +# like to generate CSV files for. +# +# Run the script with ./Histogram.py +# +################################################################################ + +import os +import glob +from subprocess import call +from collections import defaultdict + +dir = os.path.dirname(__file__) +csvDir = os.path.join(dir,'csv/') +logDir = os.path.join(dir,'logs/') + +if not os.path.exists(csvDir): + os.makedirs(csvDir) + +if not os.path.exists(logDir): + os.makedirs(logDir) + +call("cp nfv-vim.log nfv-vim.log.[0-9] nfv-vim.log.[0-9][0-9] nfv-vim.log.[0-9].gz nfv-vim.log.[0-9][0-9].gz logs/", shell=True) +call("gunzip logs/nfv-vim.log.[0-9].gz logs/nfv-vim.log.[0-9][0-9].gz", shell=True) + +class Parser: + def __init__(self): + self.proc="" # Name of process being read + self.timestamp="" # Timestamp found on line stating process name + self.write=False # Flag indicating data has yet to be written + self.stored=False # Flag indicating that there is new data stored + self.length=0 # Time duration of process + self.instanceCount=0 # Number of hits for the particular duration + self.rollingCount=0 # Sum of the hits for each duration parsed within the sample + self.total=0 # Specific duration multiplied by number of hits for that duration + self.avg=0 # Average execution time of process + self.unit="" # Unit execution time was recorded in + self.csvs=defaultdict(list) # Stores unique processes in a dict of lists + + # Resets variables when a new process begins to be read in logs + def reset(self): + self.length=0 + self.avg=0 + self.instanceCount=0 + self.rollingCount=0 + self.total=0 + self.proc="" + self.unit="" + self.write=False + self.stored=False + + # Adds log data for a process to the csvs dictionary + def add(self,proc,total,timestamp,rollingCount): + if rollingCount != 0: + avg=total/float(rollingCount) + else: + avg=0 + self.csvs[proc].append(timestamp+","+str(avg)+","+str(rollingCount)+",") + self.reset() + + def main(self): + # Sorts the log files to read them in descending order + sorted_files = glob.glob(logDir+"nfv-vim.log*") + sorted_files.sort(reverse=True) + for logFile in sorted_files: + with open(logFile,"r+") as f: + cfgLines = f.read().splitlines() + for line in cfgLines: + if "Histogram" in line: + if self.write or self.stored: + self.add(self.proc,self.total,self.timestamp,self.rollingCount) + self.write=True + self.proc=line.partition("Histogram: ")[2] + self.proc=("".join(self.proc.split())).rstrip(':') + self.timestamp=line.split()[0] + elif "histogram.py" in line: + line=line.split() + self.length=int(line[8]) + self.unit=line[9] + self.instanceCount=int(line[10]) + if "decisecond" in self.unit: + self.length*=100 + elif "secs" in self.unit: + self.length*=1000 + self.total=self.total+self.instanceCount*self.length + self.rollingCount+=self.instanceCount + self.stored=True + f.close() + if self.write or self.stored: + self.add(self.proc,self.total,self.timestamp,self.rollingCount) + + for process in self.csvs: + with open(os.path.join(csvDir,process+".csv"),'w+') as csvOut: + for line in self.csvs[process]: + csvOut.write(line+"\n") + csvOut.close() + +process=Parser() +process.main() +print "\nComplete\n" \ No newline at end of file diff --git a/nfv/nfv-debug-tools/histogram_analysis/plotter.py b/nfv/nfv-debug-tools/histogram_analysis/plotter.py new file mode 100755 index 00000000..3794b6f6 --- /dev/null +++ b/nfv/nfv-debug-tools/histogram_analysis/plotter.py @@ -0,0 +1,495 @@ +#!/usr/bin/env python +################################################################################ +# +# Copyright (c) 2017 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +################################################################################ +# +# Description: Graphs nfv-vim histogram data from CSV files to html page and saves +# saves it locally. +# +# Behaviour : The script takes in arguments from the command line such as specific +# process names, or the name of a grouping of processes, and graphs +# them in a local html file using plotly. The x-axis displays +# datestamps corresponding to when the sample in the csv file was taken, +# and the y-axis displays either the average execution time of the +# processes during each sample, or the difference in total hits that +# process experienced from one sample period to the previous sample +# period. Both average execution times and the delta hit count can +# be displayed on the same graph using two y-axes. The CSV files must +# be generated prior to running this script by running Histogram.sh. +# A config called logplot.cfg will be generated the first time this +# script is run and will automatically populate itself with all processes +# listed in the csv/ directory. Change the N to a Y in the right column +# of the config file to have that process graphed when running this script +# via config settings. Groupings of processes can also be made under the +# groups section by following the same N/Y format as above. When a group +# name is specified all processes listed under that group name will be +# graphed if they have a Y in their right-column. +# +# To run this script ensure that plotly is installed. +# To do this enter: sudo pip install plotly +# +# +# If no arguments are entered when running this script it will default to running +# the proceses in logplot.cfg with a Y in their rightmost column, and will display +# the average execution time on the y-axis for all available samples. +# +################################################################################ + +import os +import csv +import sys +import time +import plotly +import plotly.graph_objs as go +from plotly.graph_objs import Scatter, Layout +from plotly import tools +from glob import iglob +import commands + +dir = os.path.dirname(__file__) +fig = plotly.graph_objs.graph_objs.Figure +pth = os.path.join(dir,'csv/') + +execTime=False # Indicates if average execution time is to be graphed or not +default=False # Indicates no commands were entered and to run with default settings (run config with -t option) +oneAxis=False # Causes the generated graph to have two y-axes sharing an x-axis with both avg execution time and hits being graphed +config=False # Indicates whether to pull process names from logplot.cfg or not +hits=False # Indicates if the delta of hits between samples is to be graphed +markers=False +lines=False +timestamp=[] +dateRange=[] +warnings=[] +procs=[] +group=[] +graphName="" +plotType="" + +def helpMessage(): + print "\n"+"-"*120 + print "NFV-VIM Histogram Graphing Script\n" + print "This script is meant to graph average execution times and the delta of hits between sample periods for processes in nfv-vim logs.\n" + print "Usage:\n" + print(" -c ... runs from the logplot.cfg (c)onfig file. All processes in the first list with a Y\n" + " in the far-right column will be included in the generated graph.\n") + print(" -d ... command used to specify a (d)ate range within which you would like to see log data.\n" + " The format is YYYY/MM/DD-YYYY/MM/DD with the lower bound on the left, and the upper\n" + " bound on the right. The range is up to and including the bounds. To have a bound simply\n" + " cover all datestamps before or after a bound, omit the undefined bound. Only one bound can be\n" + " unspecified in this way.\n" + " e.g. -d 2016/12/01-2016/12/12\n" + " -d -2016/12/12 To use all logs prior to and including 2016/12/12\n" + " -d 2016/12/01- To use all logs after and including 2016/12/01\n") + print(" -t ... used to indicate that you would like the graph to display average execution (t)imes\n" + " along the y-axis.\n") + print(" -h ... used to indicate that you would like the graph to display the dela of (h)its between\n" + " sample periods on the y-axis.\n") + print " -l ... used to set the graph to be a line graph. (Can be used with -m as well)\n" + print " -m ... used to set the graph to be a scatterplot. (Can be used with -l as well)\n" + print(" -lm ... used to set the graph to be a scatterplot with connecting lines. This same effect can also be\n" + " achieved by using -l -m\n") + print(" -n ... used to (n)ame the file that will be generated by this script. Files can be found in the\n" + " Graphs/ directory, found inside the directory containing this script. Do not include spaces in\n" + " the file name. If no name is specified, the name will default to the timestamp from when the\n" + " script was run.\n" + " e.g. 01-24-2017.html\n") + print(" -oneaxis ... used to generate a graph with two Y-axes sharing an x-axis. Average execution time's y-axis is\n" + " on the right, and delta Hits per sample's y-axis is on the left. Used to look for correlations. The \n" + " name of the process being graphed will have _time or _hits appended to it so you can tell which\n" + " y-axis to relate it to. Only works if both -h and -t flags are used. Can be used for multiple processes.\n" + " e.g. -h -t -oneaxis --p process1 process2\n") + print(" --g ... will run the script for processes specified in logplot.cfg under the (G)roups heading.\n" + " All processes listed under the named group's heading will be included in the graph.\n" + " Space-delimit the groups to be included. This must be the last command entered.\n" + " e.g. --g group1 group2\n") + print(" --p ... follow this with a space-delimited list of (p)rocesses you would like to graph together.\n" + " This must be the last command entered.\n") + print(" --update ... This will update the master list of process at the beginning of the logplot.cfg file:\n" + " Processes not currently listed in the master list will be added and their run status set to N.\n\n") + print "Note: If neither the -t nor -h tag is used, the script will default to display the average execution time on the y-axis.\n\n" + print "Examples:\n" + print("./plotter.py -c -d 2016/12/3-2016/12/10 -t -n ConfigOutput_Dec_3-10 ... This will graph all processes with a Y in their\n" + " right-most column in the config file, using logs\n" + " with a timestamp between Dec 3rd and 10th 2016,\n" + " and will display their average execution time in\n" + " the y-axis. The file will be called\n" + " ConfigOutput_Dec_3-10.html") + print("./plotter.py -h -t --g group1 ... This will generate two graphs, one with the delta of hits\n" + " on the y-axis, and the other with the average execution time\n" + " in the y-axis, for processes listed under group1 in\n" + " logplot.cfg.\n" + " period will be displayed on the y-axis.\n") + print("./plotter.py ... This will run the default settings, which are to run\n" + " for the processes enabled in the master list in\n" + " the config file, to use log information for all dates\n" + " available, to show average execution time on the y-axis,\n" + " and to name the file with the current day's datestamp.") + print "-"*120 + + +# Appends new processes found via CSV filenames to the master process list in logplot.cfg if there are not already present. +# If logplot.cfg has not been generated yet, this will create it and add process names found in filenames in ./csv +def updater(configExists=True): + procs=[] + existingProcs=[] + newProcs=[] + position=0 # Tracks position of the end of the master process list so new processes can be added above it. + + os.chdir(pth) + for name in iglob("*.csv"): + procs.append(str(name)[:-4]) + os.chdir("..") + if not configExists: + f=open(os.path.join(dir,'logplot.cfg'),"w") + for p in procs: + f.write(p+" "*(59-len(p))+"N\n") + f.write("#"*20+"END OF PROCESS LIST"+"#"*21+"\n\n") + f.write("#"*27+"GROUPS"+"#"*27+"\n") + f.write("#GroupSTART\n") + f.write("GroupName=ExampleGroupName1\n") + f.write("ExampleProcessName1"+" "*40+"N\n") + f.write("ExampleProcessName2"+" "*40+"N\n") + f.write("#GroupEND\n") + f.write("-"*60+"\n") + f.write("GroupName=ExampleGroupName2\n") + f.write("ExampleProcessName3"+" "*40+"N\n") + f.write("ExampleProcessName4"+" "*40+"N\n") + f.write("#GroupEND\n") + f.write("#"*20+"END OF GROUPS"+"#"*27) + f.close() + else: + with open(os.path.join(dir,'logplot.cfg'),"r+") as f: + cfgLines = f.read().splitlines() + for cfgProc in cfgLines: + if "#END" in cfgProc: + break + existingProcs.append(cfgProc.split()[0]) + position+=1 + for p in procs: + if p not in existingProcs: + newProcs.append(p+" "*(59-len(p))+"N") + procs=cfgLines[:position]+newProcs+cfgLines[position:] + f.seek(0) + f.write("\n".join(procs)) + f.truncate() + f.close() + + +# Appends process names found in the specified group to the list of processes to be graphed. +def gCommand(groups): + procs=[] + f=open(os.path.join(dir,'logplot.cfg'),"r") + cfgLines=f.read().splitlines() + + for g in groups: + groupFound=False + finishedGroup=False + + for i in xrange(len(cfgLines)): + liNum=i + if str("GroupName="+g) == cfgLines[i].strip(): + groupFound=True + linum=i + while not finishedGroup: + liNum+=1 + if "GroupEND" in cfgLines[liNum]: + finishedGroup=True + else: + cfgLine=cfgLines[liNum].split() + if cfgLine[1]=="Y": + procs.append(cfgLine[0]) + else: + break + else: + if not groupFound: + warnings.append("WARNING: The following group could not be found: %s\n\t\t Please check your logplot.cfg file for the intended group name."%(g,)) + + f.close() + return procs + + +# Appends processes explicitly named by the user to the list of processes to be run. +# If the process name specified using the --p command does not match the name of any processes taken from .csv filenames, the user is given +# a list of known processes containing the name they entered. If they enter one of the provided names, it will be added to the list. If the +# user enters "s", the process in question will be skipped and the script will continue. If they user enters "q" the script will exit. +def pCommand(pList): + procList=[] + for i in xrange(len(pList)): + csvFile=str(pList[i])+".csv" + procName=str(pList[i]) + isFile=False + + if os.path.isfile(os.path.join(pth,csvFile)): + isFile = True + procList.append(pList[i]) + else: + while(not isFile): + print "\nFiles containing keyword: %s"%(str(procName)) + csvFile=str(procName)+".csv" + for root, directories, filenames in os.walk(pth): + for filename in filenames: + if procName.lower() in filename.lower(): + if (str(procName)+".csv") == str(filename): + isFile=True + procList.append(str(procName).strip()) + break + else: + print " "+filename[:-4] + else: + procName = str(raw_input("\nEnter the corrected process name, q to quit, or s to skip: ")).strip() + if procName=="s": + isFile=True + break + elif procName=="q": + sys.exit() + return procList + + +# Stores the average execution time, or delta hit count data into into a plotly graph obj, and restricts sample to be within a certain +# date range if specified. If plots is 1, one graph will be generated. If plots is 2, two graphs will be generated with one above the other. +def storeGraphData(procs, dateRange=[], execTime=False, hits=False, plots=1): + graphData={} + prevHitTotal=0 + timeList=[[] for p in xrange(len(procs))] + dateList=[[] for p in xrange(len(procs))] + hitList=[[] for p in xrange(len(procs))] + if dateRange: + for i in xrange(len(procs)): + csvFile = str(procs[i])+".csv" + with open(os.path.join(pth,csvFile), 'rb') as f: + reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE) + for ts, at, h, n in reader: + t = ts.split("T") + date=''.join(x for x in t[0].split('-')) + if (int(date) >= int(dateRange[0])) and (int(date) <= int(dateRange[1])): + timeList[i].append(at) + dateList[i].append(str(ts[0:10:1]+" "+ts[11:])) + hitList[i].append(int(h)-prevHitTotal) + prevHitTotal=int(h) + f.close() + hitList[i][0]=None + graphData['trace'+str(i)] = go.Scatter( + x = dateList[i], + y = timeList[i] if execTime else hitList[i], + mode = plotType, + name = (procs[i] if not oneAxis else (procs[i]+"_"+("time" if execTime else "hits"))) + ) + if plots==1: + fig.append_trace(graphData['trace'+str(i)], 1, 1) + elif plots==2: + fig.append_trace(graphData['trace'+str(i)], 2, 1) + + else: + for i in xrange(len(procs)): + csvFile = str(procs[i])+".csv" + with open(os.path.join(pth,csvFile), 'rb') as f: + reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE) + for ts, at, h, n in reader: + timeList[i].append(at) + dateList[i].append(str(ts[0:10:1]+" "+ts[11:])) + hitList[i].append(int(h)-prevHitTotal) + prevHitTotal=int(h) + f.close() + hitList[i][0]=None + graphData['trace'+str(i)] = go.Scatter( + x = dateList[i], + y = timeList[i] if execTime else hitList[i], + mode = plotType, + name = (procs[i] if not oneAxis else (procs[i]+"_"+("time" if execTime else "hits"))) + ) + if plots==1: + fig.append_trace(graphData['trace'+str(i)], 1, 1) + elif plots==2: + fig.append_trace(graphData['trace'+str(i)], 2, 1) + + +# Formats the graph by adding axis titles, changing font sizes, setting there to be two separate graphs or two graphs sharing an x-axis etc. +def formatGraph(two, oneAxis): + fig['layout'].update(showlegend=True) + if two: + if oneAxis: + fig['layout']['xaxis1'].update(title='Timestamp',titlefont=dict(size=20, color='#4d4d4d')) + fig['layout']['yaxis1'].update(title='Hits Per Sample',titlefont=dict(size=20, color='#4d4d4d')) + fig['layout']['yaxis2'].update(title='Average Execution Time (milliseconds)',anchor='x',overlaying='y',side='right',position=1,titlefont=dict(size=20, color='#4d4d4d')) + else: + fig['layout']['xaxis1'].update(title='Timestamp',titlefont=dict(size=20, color='#4d4d4d')) + fig['layout']['yaxis1'].update(title='Average Execution Time (milliseconds)',titlefont=dict(size=20, color='#4d4d4d')) + fig['layout']['xaxis2'].update(title='Timestamp',titlefont=dict(size=20, color='#4d4d4d')) + fig['layout']['yaxis2'].update(title='Hits Per Sample',titlefont=dict(size=20, color='#4d4d4d')) + fig['layout'].update(title=graphName, titlefont=dict(size=26)) + else: + fig['layout'].update( + title=graphName, + xaxis=dict( + title="Timestamp", + titlefont=dict( + family='Courier New, monospace', + size=18, + color='#4d4d4d' + ) + ), + yaxis=dict( + title="Average Execution Time (milliseconds)" if execTime else "Hits Per Sample", + titlefont=dict( + family='Courier New, monospace', + size=18, + color='#4d4d4d' + ) + ) + ) + + +# Sets the name of the saved html file. +def setFilename(graphName): + validName=False + if not os.path.exists("Graphs/"): + os.makedirs("Graphs/") + os.chdir(os.path.join(dir,'Graphs/')) + if not graphName: + graphName=time.strftime("%m-%d-%Y") + if os.path.exists(str(graphName+".html")): + n=1 + while(not validName): + if os.path.exists(str(graphName+"("+str(n)+").html")): + n+=1 + else: + graphName=graphName+"("+str(n)+")" + validName=True + return graphName + + + +print "Welcome to plotter, type --help for information" +# Checks that plotly is installed, otherwise graphs cannot be generated. +plotCheck=commands.getstatusoutput("pip list | grep plotly") +if plotCheck[0]==0: + if "plotly" not in plotCheck[1]: + print "\n\tWARNING: Plotly is not installed on your system.\n\tPlease install it with: sudo pip install plotly\n" + sys.exit() +# Checks to see if logplot.cfg already exists, creates it if not. +if not os.path.isfile(os.path.join(dir,'logplot.cfg')): + print "Generating logplot.cfg" + updater(False) + print "logplot.cfg created." +if not os.path.isdir('./csv'): + print "\n\tWARNING: ./csv directory is missing. Please run Histogram.sh or make sure directory has not been renamed.\n" + sys.exit() + +command = sys.argv # Takes arguments from the command line + +if len(command)==1: + print "Running with default settings." + default = True +else: + for i in xrange(1,len(command)): + if command[i] == "-c": # Use config file + config=True + elif command[i] == "--g": # Groups + for j in xrange(i+1,len(command)): + group.append(command[j]) + procs=gCommand(group) + break + elif command[i] == "-t": # Average execution time + execTime=True + elif command[i] == "-h": # Delta hits between samples + hits=True + elif command[i] == "-l": # Graph with lines + lines=True + elif command[i] == "-m": # Graph with markers (scatter) + markers=True + elif command[i] == "-lm": # Graph with lines and markers + lines=True + markers=True + elif command[i] == "-d": # Date range + dateRange=command[i+1].split('-') + if dateRange[0]: + lower=dateRange[0].split("/") + dateRange[0]=lower[0]+lower[1].zfill(2)+lower[2].zfill(2) + else: + dateRange[0]="0"*8 + if dateRange[1]: + upper=dateRange[1].split("/") + dateRange[1]=upper[0]+upper[1].zfill(2)+upper[2].zfill(2) + else: + dateRange[1]="9"*8 + i+=1 + elif command[i] == "-n": # Name of file to be generated + graphName=command[i+1] + i+=1 + elif command[i] == "-oneaxis": # Have hit and time data displayed on same graph + oneAxis=True + elif (command[i] == "--help") or (command[i] == "--h"): # Print help message and exit script + helpMessage() + sys.exit() + elif command[i] == "--p": # User-specified processes + for j in xrange(i+1,len(command)): + procs.append(command[j]) + procs=pCommand(procs) + break + elif command[i] == "--update": + print "Updating..." + updater() + print "Update complete." + sys.exit() + +# If neither average execution time nor delta hit count are specified to be shown, default to showing average execution time. +if (not execTime) and (not hits): + execTime = True + +# Default settings can be changed as desired. +if default: + config=True + execTime=True + +if (lines and markers): + plotType="lines+markers" +elif lines: + plotType="lines" +else: + plotType="markers" + +if config: + f=open(os.path.join(dir,'logplot.cfg'),"r") + procList=f.read().splitlines() + for p in procList: + if "#END" in p: + break + cfgLine=p.split() + if cfgLine[1]=="Y": + csvFile=cfgLine[0]+".csv" + if os.path.exists(os.path.join(pth,csvFile)): + procs.append(cfgLine[0]) + else: + warnings.append("WARNING: %s does not exist."%(csvFile,)) + f.close() + +# If both average execution time and delta hits are specified to be shown, generate two graphs if -oneaxis wasn't specified. +# If only one of execution time and delta hits was specified, generate one graph. +if procs: + if (execTime and hits): + if(not oneAxis): + fig = tools.make_subplots(rows=2, cols=1) + storeGraphData(procs, dateRange, execTime, False, 1) + storeGraphData(procs, dateRange, False, hits, 2) + else: + fig = tools.make_subplots(rows=1, cols=1) + storeGraphData(procs, dateRange, False, hits, 1) + storeGraphData(procs, dateRange, execTime, False, 1) + else: + fig = tools.make_subplots(rows=1, cols=1) + storeGraphData(procs, dateRange, execTime, hits) + + formatGraph((execTime and hits), oneAxis) + + # Generates the plot + plotly.offline.plot(fig, filename=setFilename(graphName)+".html") +else: + warnings.append("NO GRAPH GENERATED BECAUSE NO VALID GROUP OR PROCESS NAME SPECIFIED.") + +# If any warnings occured, print them +if warnings: + print "\n\t"+("\n\t").join(warnings)+"\n" diff --git a/nfv/nfv-docs/Makefile b/nfv/nfv-docs/Makefile new file mode 100755 index 00000000..e84f7d0f --- /dev/null +++ b/nfv/nfv-docs/Makefile @@ -0,0 +1,26 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +DOC_BUILDER = python ./doc_builder.py + +BUILD_DIR = ./build + +.PHONY: html clean help + +html: + $(DOC_BUILDER) -b html $(BUILD_DIR)/html + @echo + @echo "Build finished. Build output is in $(BUILD_DIR)/html." + +package: + tar -pczf vim_documentation.tar.gz $(BUILD_DIR) + +clean: + rm -rf $(BUILD_DIR)/* + +help: + @echo "Please use make where is one of" + @echo " html to make standalone HTML files" + @echo " package to tar and gzip documentation" diff --git a/nfv/nfv-docs/doc_builder.py b/nfv/nfv-docs/doc_builder.py new file mode 100755 index 00000000..e1df5366 --- /dev/null +++ b/nfv/nfv-docs/doc_builder.py @@ -0,0 +1,68 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +# The following installs are required: +# pip install pyyaml +# pip install jinja2 +# +import os +import six +import yaml +import shutil +import pprint +import argparse +from jinja2 import Environment, FileSystemLoader + + +CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) +DOC_SRC_DIR = CURRENT_DIR + '/documentation' +HTML_SRC_DIR = CURRENT_DIR + '/html_layout' + + +def build_html_doc(build_dir, document_data): + """ + Build HTML Documentation + """ + shutil.copytree(HTML_SRC_DIR + '/css', build_dir + '/css') + shutil.copytree(HTML_SRC_DIR + '/images', build_dir + '/images') + shutil.copytree(HTML_SRC_DIR + '/javascript', build_dir + '/javascript') + + j2_env = Environment(loader=FileSystemLoader(HTML_SRC_DIR + '/templates'), + trim_blocks=True) + + index_template = j2_env.get_template('index.html') + index_html = index_template.render(document_data) + + with open(build_dir + '/index.html', "w") as f: + six.print_(index_html, file=f) + + for toc_entry in document_data['table_of_contents']: + toc_entry_data = yaml.load(open(DOC_SRC_DIR + '/' + toc_entry['link'] + + '.yaml')) + toc_entry_data['page_link'] = toc_entry['link'] + + page_content_template = j2_env.get_template('page_content.html') + toc_entry_html = page_content_template.render(toc_entry_data) + six.print_(toc_entry_html, file=f) + + +if __name__ == '__main__': + """ + Document Builder + """ + parser = argparse.ArgumentParser() + parser.add_argument('-b', '--builder', help='type of build') + parser.add_argument('build_dir', help='build directory') + args = parser.parse_args() + + if not os.path.exists(args.build_dir): + os.makedirs(args.build_dir) + + document_data = yaml.load(open(DOC_SRC_DIR + '/document.yaml')) + + if 'html' == args.builder: + build_html_doc(args.build_dir, document_data) + else: + print "No builder selected, do nothing." \ No newline at end of file diff --git a/nfv/nfv-docs/documentation/document.yaml b/nfv/nfv-docs/documentation/document.yaml new file mode 100755 index 00000000..513ff480 --- /dev/null +++ b/nfv/nfv-docs/documentation/document.yaml @@ -0,0 +1,20 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +title: VIM Documentation +title_expanded: Virtual Infrastructure Manager Documentation + +table_of_contents: + - name: Software Image Management + link: software_image_management + + - name: Virtualised Network Resource + link: virtualised_network_resource + + - name: Virtualised Storage Resource + link: virtualised_storage_resource + + - name: Virtualised Compute Resource + link: virtualised_compute_resource diff --git a/nfv/nfv-docs/documentation/software_image_management.yaml b/nfv/nfv-docs/documentation/software_image_management.yaml new file mode 100755 index 00000000..868ec2e2 --- /dev/null +++ b/nfv/nfv-docs/documentation/software_image_management.yaml @@ -0,0 +1,302 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +page_title: Software Image Management +page_description: > + These interfaces allows an authorized consumer functional block to manage + the VNF software images in the VIM. + +query_response: &alias_query_response + - name: uuid + type: xsd:string + description: UUID of the image. + - name: name + type: xsd:string + description: Name of the image. + - name: description + type: xsd:string + description: > + Description of the image. Defaults to the empty string. + - name: container_format + type: xsd:string + description: > + Format of container. One of ami, ari, aki, bare, ovf, ova. + - name: disk_format + type: xsd:string + description: > + Format of disk. One of ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, + iso. + - name: minimum_disk_size + type: xsd:string + description: Minimum size of disk in GB. + - name: minimum_memory_size + type: xsd:string + description: Minimum size of memory in MB. + - name: visibility + type: xsd:string + description: > + Visibility of the image. One of private, public, shared. + - name: protected + type: xsd:string + description: Determines if image is deletable. + - name: availability_status + type: xsd:string + description: Status of the image. + - name: action + type: xsd:string + description: Current action being performed on the image. + +api_group_images: &alias_api_group_images + name: Images + api_listing: + - id: add_image + name: Add Image + description: Allows adding a new software image to the image repository. + method: POST + urls: + - /v1/images + request: + - name: name + optional: "no" + type: xsd:string + description: Name of the image. + - name: description + optional: "yes" + type: xsd:string + description: > + Description of the image. Defaults to the empty string. + - name: container_format + optional: "no" + type: xsd:string + description: > + Format of container. One of ami, ari, aki, bare, ovf, ova. + - name: disk_format + optional: "no" + type: xsd:string + description: > + Format of disk. One of ami, ari, aki, vhd, vmdk, raw, qcow2, vdi, + iso. + - name: minimum_disk_size + optional: "yes" + type: xsd:string + description: Minimum size of disk in GB. Defaults to no minimum. + - name: minimum_memory_size + optional: "yes" + type: xsd:string + description: Minimum size of memory in MB. Defaults to no minimum. + - name: visibility + optional: "yes" + type: xsd:string + description: > + Visibility of the image. One of private, public, shared. Defaults + to 'public'. + - name: protected + optional: "yes" + type: xsd:boolean + description: Determines if image is deletable. Defaults to 'no'. + - name: properties + optional: "yes" + type: xsd:string + description: List of properties to be associated with the image. + - name: image_data_ref + optional: "no" + type: xsd:string + description: > + URL of where the image data is located. URL can be located on the + local disk (URL starts with file://) or located on a HTTP server + (URL starts with http://). + response: *alias_query_response + normal_codes: + - name: Created + value: 201 + error_codes: + - name: Bad Request + value: 400 + - name: Internal Server Error + value: 500 + examples: + - title: Add a software image where the image data is on local disk + description: > + This example demonstrates how to add a software image where the + image data is on the local disk to the image repository using curl + commands. + request: > + curl -i -X POST -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/images + -d "{\"name\": \"cirros\", \"container_format\": \"bare\", + \"disk_format\": \"qcow2\", \"image_data_ref\": + \"file://scratch/cirros-0.3.0-x86_64-disk.img\"}" + response: > + {"description": "", "container_format": "bare", + "disk_format": "qcow2", "minimum_disk_size": 0, + "visibility": "public", "name": "cirros", "protected": "no", + "availability_status": ["available"], "action": "", + "minimum_memory_size": 0, + "uuid": "9a770e3f-e67d-482d-b592-092226fdd119"} + - title: Add a software image where the image data is on a HTTP server + description: > + This example demonstrates how to add a software image where the + image data is on a remote http server to the image repository using + curl commands. + request: > + curl -i -X POST -H 'Content-Type: application/json' + -H 'Accept: application/json' http://localhost:4545/v1/images + -d "{\"name\": \"cirros\", \"container_format\": \"bare\", + \"disk_format\": \"qcow2\", \"image_data_ref\": + \"http://192.168.204.15:4545/file/cirros-0.3.0-x86_64-disk.img\"}" + response: > + {"description": "", "container_format": "bare", + "disk_format": "qcow2", "minimum_disk_size": 0, + "visibility": "public", "name": "cirros", + "protected": "no", "availability_status": ["available"], + "action": "", "minimum_memory_size": 0, + "uuid": "4ebfeb7c-c783-4c2d-a1cd-1558f06c6dba"} + + - id: update_image + name: Update Image + description: Allows updating a software image in the image repository. + method: PUT + urls: + - /v1/images/{image_uuid} + request: + - name: description + optional: "yes" + type: xsd:string + description: > + Description of the image. + - name: minimum_disk_size + optional: "yes" + type: xsd:string + description: Minimum size of disk in GB. + - name: minimum_memory_size + optional: "yes" + type: xsd:string + description: Minimum size of memory in MB. + - name: visibility + optional: "yes" + type: xsd:string + description: > + Visibility of the image. One of private, public, shared. + - name: protected + optional: "yes" + type: xsd:boolean + description: Determines if image is deletable. + response: *alias_query_response + normal_codes: + - name: Okay + value: 200 + error_codes: + - name: Bad Request + value: 400 + - name: Not Found + value: 404 + - name: Internal Server Error + value: 500 + examples: + - title: Update a software image + description: > + This example demonstrates how to update attributes of a software + image in the image repository using curl commands. + request: > + curl -i -X PUT -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/images/9a770e3f-e67d-482d-b592-092226fdd119 + -d "{\"description\": \"new cirros image\", + \"minimum_disk_size\": \"1\", \"minimum_memory_size\": \"512\", + \"visibility\": \"private\", \"protected\": false}" + response: > + {"description": "new cirros image", "container_format": "bare", + "disk_format": "qcow2", "minimum_disk_size": 1, + "visibility": "private", "name": "cirros", "protected": "yes", + "availability_status": ["available"], "action": "", + "minimum_memory_size": 512, + "uuid": "9a770e3f-e67d-482d-b592-092226fdd119"} + + - id: delete_image + name: Delete Image + description: Allows deleting a software image from the image repository. + method: DELETE + urls: + - /v1/images/{image_uuid} + normal_codes: + - name: No Content + value: 204 + error_codes: + - name: Bad Request + value: 400 + - name: Not Found + value: 404 + - name: Internal Server Error + value: 500 + examples: + - title: Delete a software image + description: > + This example demonstrates how to delete a particular software image + from the image repository using curl commands. + request: > + curl -i -X DELETE -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/images/9a770e3f-e67d-482d-b592-092226fdd119 + response: > + No response is returned. + + - id: query_images + name: Query Image(s) + description: > + Allows querying the information of all the software images or a single + software image from the image repository. + method: GET + urls: + - /v1/images + - /v1/images/{image_uuid} + response: *alias_query_response + normal_codes: + - name: Okay + value: 200 + error_codes: + - name: Not Found + value: 404 + - name: Internal Server Error + value: 500 + examples: + - title: Query all software images + description: > + This example demonstrates how to query all software images from the + image repository using curl commands. + request: > + curl -i -X GET -H 'Content-Type: application/json' + -H 'Accept: application/json' http://localhost:4545/v1/images + response: > + [{"description": "new cirros image", "container_format": "bare", + "disk_format": "qcow2", "minimum_disk_size": 1, + "visibility": "private", "name": "cirros", "protected": "yes", + "availability_status": ["available"], "action": "", + "minimum_memory_size": 512, + "uuid": "9a770e3f-e67d-482d-b592-092226fdd119"}, + {"description": "", "container_format": "bare", + "disk_format": "qcow2", "minimum_disk_size": 1, + "visibility": "public", "name": "vim-test-image", "protected": "no", + "availability_status": ["available"], "action": "", + "minimum_memory_size": 512, + "uuid": "def2d2c8-7411-45a0-a9e1-fc343c641b07"}] + - title: Query a software image + description: > + This example demonstrates how to query a particular software image + from the image repository using curl commands. + request: > + curl -i -X GET -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/images/def2d2c8-7411-45a0-a9e1-fc343c641b07 + response: > + {"description": "", "container_format": "bare", + "disk_format": "qcow2", "minimum_disk_size": 1, + "visibility": "public", "name": "vim-test-image", + "protected": "no", "availability_status": ["available"], + "action": "", "minimum_memory_size": 512, + "uuid": "def2d2c8-7411-45a0-a9e1-fc343c641b07"} + +api_group_list: + - *alias_api_group_images diff --git a/nfv/nfv-docs/documentation/virtualised_compute_resource.yaml b/nfv/nfv-docs/documentation/virtualised_compute_resource.yaml new file mode 100755 index 00000000..67641b85 --- /dev/null +++ b/nfv/nfv-docs/documentation/virtualised_compute_resource.yaml @@ -0,0 +1,6 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +page_title: Virtualised Compute Resource diff --git a/nfv/nfv-docs/documentation/virtualised_network_resource.yaml b/nfv/nfv-docs/documentation/virtualised_network_resource.yaml new file mode 100755 index 00000000..ce4cedcb --- /dev/null +++ b/nfv/nfv-docs/documentation/virtualised_network_resource.yaml @@ -0,0 +1,295 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +page_title: Virtualised Network Resource +page_description: > + These interfaces allows an authorized consumer functional block to manage + virtualized network resources in the VIM. + +api_networks: &api_networks_grouping + name: Networks + data_model: network_model.svg + api_listing: + - id: allocate_network + name: Allocate Network + description: Allows for the instantiation and assignment of a network. + method: POST + urls: + - /v1/virtualised_resources/networks + request: + - name: network_resource_id + optional: "no" + type: string + description: Name of the network. + - name: reservation_id + optional: "yes" + type: string + description: Unique identifier representing a resource reservation. + - name: network_resource_type + optional: "no" + type: string + description: > + Type of virtualised network resource being allocated. One of + network, subnet. + - name: type_network_data + optional: "yes" + type: NetworkType + description: > + The network data about the particular network resource to create. + - name: type_subnet_data + optional: "yes" + type: NetworkSubnetType + description: > + The subnet data about the particular sub-network resource to + create. + - name: meta_data + optional: "yes" + type: key-value pairs + description: List of key-value pairs. + response: + - name: operation_result + type: string + description: Result of the request, indicating pass or failed. + - name: network_data + type: NetworkResourceType + description: > + The network data about the particular network resource that + was created. + - name: subnet_data + type: NetworkSubnetResourceType + description: > + The subnet data about the particular sub-network resource that + was created. + - name: message + type: string + description: > + Additional information about the allocation request result. + normal_codes: + - name: Created + value: 201 + error_codes: + - name: Bad Request + value: 400 + - name: Internal Server Error + value: 500 + examples: + - title: Allocate a network + description: > + This example demonstrates how to allocate a network with subnets. + request: > + cat > network_ipv4_subnets_request.txt + {"network_resource_id": "network-ipv4-subnets", "network_resource_type": "network", + "type_network_data": { + "type_of_network": "vlan", "type_of_segment": "351", "wrs_physical_network": "physnet-x", "is_shared": true, + "layer3_attributes": [ + {"ip_version": "4", "is_dhcp_enabled": true, "gateway_ip": "192.168.12.1", "wrs_subnet_ip": "192.168.12.0", + "wrs_subnet_prefix": 24} + ]}} + + curl -i -X POST -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/virtualised_resources/networks + -d @network_ipv4_subnets_request.txt + response: > + {"operation_result": null, "message": null, + "network_data": { + "network_attributes": { + "is_shared": true, "type_of_network": "vlan", "type_of_segment": "351", + "layer3_attributes": [ + {"is_dhcp_enabled": true, "meta_data": null, "wrs_subnet_ip": "192.168.12.0", "gateway_ip": "192.168.12.1", + "ip_version": "4", "wrs_subnet_prefix": 24} + ], + "sharing_criteria": null, "bandwidth": 0, "meta_data": null, "network_qos": []}, + "resource_id": "network-ipv4-subnets"}} + + - id: update_network + name: Update Network + description: Allows updating the information for a network. + method: PATCH + urls: + - /v1/virtualised_resources/networks + request: + - name: network_resource_id + optional: "no" + type: string + description: Name of the network. + - name: update_network_data + optional: "yes" + type: NetworkType + description: > + The network data to use to update a particular network resource. + - name: update_subnet_data + optional: "yes" + type: NetworkSubnetType + description: > + The subnet data to use to update a particular sub-network resource. + - name: meta_data + optional: "yes" + type: key-value pairs + description: List of key-value pairs. + response: + - name: operation_result + type: string + description: Result of the request, indicating pass or failed. + - name: network_resource_id + type: string + description: Name of the network. + - name: network_data + type: NetworkResourceType + description: > + The network data about the particular network resource that + was updated. + - name: subnet_data + type: NetworkSubnetResourceType + description: > + The subnet data about the particular sub-network resource that + was updated. + - name: message + type: string + description: Additional information about the update request result. + normal_codes: + - name: Okay + value: 200 + error_codes: + - name: Bad Request + value: 400 + - name: Internal Server Error + value: 500 + examples: + - title: Update a network + description: > + This example demonstrates how to update a network with subnets. + request: > + cat > network_update_ipv4_ipv6_subnets_request.txt + {"network_resource_id": "network-ipv4-subnets", + "update_network_data": { + "layer3_attributes": [ + {"ip_version": "4", "is_dhcp_enabled": true, "wrs_subnet_ip": "192.168.14.0", "wrs_subnet_prefix": "24"}, + {"ip_version": "6", "is_dhcp_enabled": false, "gateway_ip": "3FFE::1", "wrs_subnet_ip": "3FFE::", + "wrs_subnet_prefix": "16"}, + {"ip_version": "4", "is_dhcp_enabled": false, "gateway_ip": "192.168.15.1", "wrs_subnet_ip": "192.168.15.0", + "wrs_subnet_prefix": "24"} + ]}} + + curl -i -X PATCH -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/virtualised_resources/networks + -d @network_update_ipv4_ipv6_subnets_request.txt + response: > + {"operation_result": null, "message": null, + "network_data": { + "network_attributes": { + "is_shared": false, "type_of_network": "vlan", "type_of_segment": "351", + "layer3_attributes": [ + {"network_id": "143fab9e-b4d2-4239-867b-d52e254d6d86", "is_dhcp_enabled": false, "meta_data": null, + "wrs_subnet_ip": "192.168.15.0", "gateway_ip": "192.168.15.1", + "ip_version": "4", "wrs_subnet_prefix": 24}, + {"network_id": "143fab9e-b4d2-4239-867b-d52e254d6d86", "is_dhcp_enabled": false, "meta_data": null, + "wrs_subnet_ip": "3ffe::", "gateway_ip": "3FFE::1", "ip_version": "6", "wrs_subnet_prefix": 16}, + {"network_id": "143fab9e-b4d2-4239-867b-d52e254d6d86", "is_dhcp_enabled": true, "meta_data": null, + "wrs_subnet_ip": "192.168.14.0", "gateway_ip": "192.168.14.1", "ip_version": "4", "wrs_subnet_prefix": 24} + ], + "sharing_criteria": null, "bandwidth": 0, "meta_data": null, "network_qos": []}, + "resource_id": "network-ipv4-subnets"}} + + - id: delete_network + name: Delete Network + description: Allows deleting a network. + method: DELETE + urls: + - /v1/virtualised_resources/networks + request: + - name: network_resource_ids + optional: "no" + type: string list + description: List of network resource identifiers to be deleted. + response: + - name: operation_result + type: string + description: Result of the request, indicating pass or failed. + - name: network_resource_ids + type: list of strings + description: > + List of network resource identifiers that have been deleted. + - name: message + type: string + description: Additional information about the delete request result. + normal_codes: + - name: Okay + value: 200 + error_codes: + - name: Bad Request + value: 400 + - name: Internal Server Error + value: 500 + examples: + - title: Delete a network + description: > + This example demonstrates how to delete a network. + request: > + cat > network_delete_request.txt + {"network_resource_ids": ["network-ipv4-subnets"]} + + curl -i -X DELETE -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/virtualised_resources/networks + -d @network_delete_request.txt + response: > + {"operation_result": null, "network_resource_ids": + ["network-ipv4-subnets"], "message": null} + + - id: get_network + name: Get Network(s) + description: > + Allows querying the information of all the networks or a + a single network. + method: GET + urls: + - /v1/virtualised_resources/networks + - /v1/virtualised_resources/networks/{resource_id} + response: + - name: operation_result + type: string + description: Result of the request, indicating pass or failed. + - name: query_result + type: NetworkResourceType(s) + description: A list of network data that was request. + - name: message + type: string + description: Additional information about the query request result. + normal_codes: + - name: Okay + value: 200 + error_codes: + - name: Bad Request + value: 400 + - name: Internal Server Error + value: 500 + examples: + - title: Query a network + description: > + This example demonstrates how to query a network. + request: > + curl -i -X GET -H 'Content-Type: application/json' + -H 'Accept: application/json' + http://localhost:4545/v1/virtualised_resources/networks/network-ipv4-subnets + response: > + {"operation_result": null, "message": null, + "query_result": [ + {"network_attributes": { + "is_shared": false, "type_of_network": "vlan", "type_of_segment": "351", + "layer3_attributes": [ + {"network_id": "143fab9e-b4d2-4239-867b-d52e254d6d86", "is_dhcp_enabled": false, "meta_data": null, + "wrs_subnet_ip": "192.168.15.0", "gateway_ip": "192.168.15.1", "ip_version": "4", "wrs_subnet_prefix": 24}, + {"network_id": "143fab9e-b4d2-4239-867b-d52e254d6d86", "is_dhcp_enabled": false, "meta_data": null, + "wrs_subnet_ip": "3ffe::", "gateway_ip": "3FFE::1", "ip_version": "6", "wrs_subnet_prefix": 16}, + {"network_id": "143fab9e-b4d2-4239-867b-d52e254d6d86", "is_dhcp_enabled": true, "meta_data": null, + "wrs_subnet_ip": "192.168.14.0", "gateway_ip": "192.168.14.1", "ip_version": "4", "wrs_subnet_prefix": 24} + ], + "sharing_criteria": null, "bandwidth": 0, "meta_data": null, "network_qos": []}, + "resource_id": "network-ipv4-subnets"}]} + +api_group_list: + - *api_networks_grouping diff --git a/nfv/nfv-docs/documentation/virtualised_storage_resource.yaml b/nfv/nfv-docs/documentation/virtualised_storage_resource.yaml new file mode 100755 index 00000000..ab6ad83d --- /dev/null +++ b/nfv/nfv-docs/documentation/virtualised_storage_resource.yaml @@ -0,0 +1,6 @@ +# +# Copyright (c) 2015-2016 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +page_title: Virtualised Storage Resource \ No newline at end of file diff --git a/nfv/nfv-docs/html_layout/conf.py b/nfv/nfv-docs/html_layout/conf.py new file mode 100644 index 00000000..a03f9435 --- /dev/null +++ b/nfv/nfv-docs/html_layout/conf.py @@ -0,0 +1,354 @@ +# -*- coding: utf-8 -*- +# +# VIM documentation build configuration file, created by +# sphinx-quickstart on Tue Mar 31 19:18:06 2015. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os +import shlex + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'VIM' +copyright = u'2015, WindRiver' +author = u'WindRiver' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = 'v1.0' +# The full version, including alpha/beta/rc tags. +release = 'v1.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'VIMdoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'VIM.tex', u'VIM Documentation', + u'WindRiver', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'vim', u'VIM Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'VIM', u'VIM Documentation', + author, 'VIM', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The basename for the epub file. It defaults to the project name. +#epub_basename = project + +# The HTML theme for the epub output. Since the default themes are not optimized +# for small screen space, using the same theme for HTML and epub output is +# usually not wise. This defaults to 'epub', a theme designed to save visual +# space. +#epub_theme = 'epub' + +# The language of the text. It defaults to the language option +# or 'en' if the language is not set. +#epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +#epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +#epub_identifier = '' + +# A unique identification for the text. +#epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +#epub_cover = () + +# A sequence of (type, uri, title) tuples for the guide element of content.opf. +#epub_guide = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_post_files = [] + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# The depth of the table of contents in toc.ncx. +#epub_tocdepth = 3 + +# Allow duplicate toc entries. +#epub_tocdup = True + +# Choose between 'default' and 'includehidden'. +#epub_tocscope = 'default' + +# Fix unsupported image types using the Pillow. +#epub_fix_images = False + +# Scale large images. +#epub_max_image_width = 0 + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#epub_show_urls = 'inline' + +# If false, no index is generated. +#epub_use_index = True diff --git a/nfv/nfv-docs/html_layout/css/bootstrap.css b/nfv/nfv-docs/html_layout/css/bootstrap.css new file mode 100755 index 00000000..ba6fac53 --- /dev/null +++ b/nfv/nfv-docs/html_layout/css/bootstrap.css @@ -0,0 +1,6566 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.form-group-sm .form-control, +select[multiple].form-group-sm .form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.form-group-lg .form-control, +select[multiple].form-group-lg .form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.333333px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + visibility: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: normal; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/nfv/nfv-docs/html_layout/css/dashboard.css b/nfv/nfv-docs/html_layout/css/dashboard.css new file mode 100755 index 00000000..0f043235 --- /dev/null +++ b/nfv/nfv-docs/html_layout/css/dashboard.css @@ -0,0 +1,640 @@ + +h4, h5 { + font-weight: bold; + color: #333333; + text-rendering: optimizelegibility; +} + +h4 { + margin: 0; + font-size: 16px; +} + +h5 { + margin: 0; + font-size: 12px; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; + min-width: 890px; +} + +html, body { + height: 100%; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, .clearfix:after { + display: table; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, .row:after { + display: table; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + margin-left: 20px; +} + +.span1 { + width: 60px; +} + +.span2 { + width: 140px; +} + +.span3 { + width: 220px; +} + +.span4 { + width: 300px; +} + +.span5 { + width: 380px; +} + +.span6 { + width: 460px; +} + +.span7 { + width: 540px; +} + +.span8 { + width: 620px; +} + +.span9 { + width: 700px; +} + +.span10 { + width: 780px; +} + +.span11 { + width: 860px; +} + +.span12, .container { + width: 940px; +} + +.offset1 { + margin-left: 100px; +} + +.offset2 { + margin-left: 180px; +} + +.offset3 { + margin-left: 260px; +} + +.offset4 { + margin-left: 340px; +} + +.offset5 { + margin-left: 420px; +} + +.offset6 { + margin-left: 500px; +} + +.offset7 { + margin-left: 580px; +} + +.offset8 { + margin-left: 660px; +} + +.offset9 { + margin-left: 740px; +} + +.offset10 { + margin-left: 820px; +} + +.offset11 { + margin-left: 900px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid > [class*="span"] { + float: left; + margin-left: 2.127659574%; +} + +.row-fluid > [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid > .span1 { + width: 6.382978723%; +} + +.row-fluid > .span2 { + width: 14.89361702%; +} + +.row-fluid > .span3 { + width: 23.404255317%; +} + +.row-fluid > .span4 { + width: 31.914893614%; +} + +.row-fluid > .span5 { + width: 40.425531911%; +} + +.row-fluid > .span6 { + width: 48.936170208%; +} + +.row-fluid > .span7 { + width: 57.446808505%; +} + +.row-fluid > .span8 { + width: 65.957446802%; +} + +.row-fluid > .span9 { + width: 74.468085099%; +} + +.row-fluid > .span10 { + width: 82.978723396%; +} + +.row-fluid > .span11 { + width: 91.489361693%; +} + +.row-fluid > .span12 { + width: 99.99999999%; +} + +.container { + width: auto; + margin-left: 50px; + margin-right: 50px; + *zoom: 1; +} + +.container:before, .container:after { + display: table; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-left: 20px; + padding-right: 20px; + *zoom: 1; +} + +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +#container { + *zoom: 1; + height: 100%; +} + +#container:before, #container:after { + display: table; + content: ""; +} + +#container:after { + clear: both; +} + +.main_nav { + list-style: none; + width: 240px; + margin: 10px 0 20px 0; +} + +.main_nav a { + color: #999999; + width: 230px; + display: block; + margin-left: 20px; +} + +.main_nav a.active { + background: #ffffff; + border: 2px solid #d8d8d8; + border-right: 0; + border-bottom-color: #cccccc; +} + +#main_content { + padding-left: 265px; + padding-right: 25px; + padding-bottom: 20px; +} + +#main_content .nav-tabs { + margin-bottom: 0; +} + +#main_content .tab-content { + border: 1px solid #dddddd; + border-top: 0 none; + padding-top: 130px; + padding-left: 45px; + padding-right: 45px; + padding-bottom: 45px; +} + +#main_content .row-fluid { + margin: 5px 0px 5px; +} + +#main_content .row-fluid:last-child { + margin-bottom: 0; +} + +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} + +.page-header h1 { + line-height: 1; +} + +.topbar { + background: #f2f2f2; + border-bottom: 1px solid #e5e5e5; + padding: 10px 25px; + margin-top: 0; + margin-left: -25px; + margin-bottom: 20px; + margin-right: -25px; + min-width: 700px; + width: 100%; + background-color: #474747; + background-image: -moz-linear-gradient(top, #333333, #666666); + background-image: -ms-linear-gradient(top, #333333, #666666); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#666666)); + background-image: -webkit-linear-gradient(top, #333333, #666666); + background-image: -o-linear-gradient(top, #333333, #666666); + background-image: linear-gradient(top, #333333, #666666); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#666666', GradientType=0); + position: fixed; + z-index: 999; +} + +.topbar .page-header h2 { + color: #ffffff; +} + +.topbar .page-header h2 small.datetime { + font-size: 15px; +} + +.topbar #user_info { + color: #eeeeee; +} + +.topbar #user_info a { + color: #eeeeee; + font-weight: bold; +} + +.topbar #user_info a:hover { + color: #ffffff; + text-decoration: underline; +} + +.sidebar { + width: 240px; + min-height: 100%; + background: #666666; + border-bottom: none; + position: fixed; + -webkit-box-shadow: 0px 5px 50px 0px rgba(0, 0, 0, 0.5) inset; + -moz-box-shadow: 0px 5px 50px 0px rgba(0, 0, 0, 0.5) inset; + box-shadow: 0px 5px 50px 0px rgba(0, 0, 0, 0.5) inset; + float: left; +} + +.sidebar h4 { + margin-left: 14px; + color: #999999; +} + +.sidebar .branding { + padding-bottom: 40px; + background-color: #404040; + background-image: -moz-linear-gradient(top, #000000, #a0a0a0); + background-image: -ms-linear-gradient(top, #000000, #a0a0a0); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#000000), to(#a0a0a0)); + background-image: -webkit-linear-gradient(top, #000000, #a0a0a0); + background-image: -o-linear-gradient(top, #000000, #a0a0a0); + background-image: linear-gradient(top, #000000, #a0a0a0); + background-repeat: repeat-x; +} + +h1.brand { + width: 100%; + margin: 0; + background-color: #f5f5f5; + padding-bottom: 40px; +} + +h1.brand a { + display: block; + float: left; + width: 116px; + height: 123px; + text-indent: -9999px; + margin-left: 56px; + margin-top: 15px; + margin-bottom: 25px; +} + +.sidebar .branding .brand { + background: none; + padding-bottom: 0px; +} + +.sidebar .branding .brand a { + float: none; + background: url('../images/windriver-red-med.png') top center no-repeat; + color: #ffffff; + text-indent: inherit; + text-align: center; + text-decoration: none; + text-shadow: 2px 1px 15px #000000; + font-size: 20px; + line-height: 20px; + margin: 20px 0px 0px 0px; + padding-top: 42px; + padding-bottom: 0px; + height: 30px; + width: 240px; +} + +.sidebar .branding .system { + text-align: center; + color: #ffffff; + padding-bottom: 20px; + font-size: 15px; +} + +.sidebar .nav-tabs { + margin-top: -39px; +} + +.sidebar .nav-tabs li a { + color: #ffffff; +} + +.sidebar .main_nav { + width: 240px; + padding-left: 5px; +} + +.sidebar .main_nav a { + font-size: 14px; + padding: 12px 12px 0px; + color: #dddddd; +} + +.sidebar .main_nav a.active { + color: #666666; +} + +.sidebar .switcher_bar { + background: #000000; + width: 100%; + margin: 15px 0px; + -webkit-box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 4px 8px 0px rgba(0, 0, 0, 0.5); +} + +.main-table > thead > tr > th { + background: #e4e4e4; +} + +.main-table > tbody > tr:hover > td { + background-color: #e9e9e9; + cursor: default; +} + +.table-header { + min-height: 35px; + padding: 5px 0; +} + +.table-actions { + float: right; + min-width: 400px; + margin-top: 18px; +} + +.table_header .table_actions { + min-width: 0; +} + +.table-header h3 { + font-weight: normal; + font-size: 24px; + margin-bottom: 15px; + float: left; +} + +.table-header .table-actions { + min-width: 0; +} + +.table-header .table-actions a { + display: inline-block; + float: none; +} + +.table thead th { + background: #f5f5f5; +} + +.table tfoot tr td { + border-top: 1px solid #000000; + background-color: #e4e4e4; + font-size: 11px; + line-height: 14px; +} + +.subhead { + border-bottom: 1px dotted; + padding-bottom: 5px; + border-color: #c5e2ea; + margin-bottom: 20px; +} + +.subhead h1 { + font-size: 24px; +} + +.subhead h2 { + color: black; + font-size: 20px; +} + +.subhead h3 { + font-size: 18px; + color: black; +} + +.subhead h2, +.subhead h3 +{ + position: relative; + margin-left: -20px; + padding-left: 20px; +} + +.method-section { + margin-left: 10px; + margin-bottom: 5px; +} + +.method-section h3 { + font-size: 16px; + color: black; + position: relative; + margin-top: 10px; + margin-left: 10px; + margin-bottom: 10px; +} + +.method-label { + display: flex; + padding: .3em .6em .3em; + font-size: 85%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; + width: 5.2em; + align-items: center; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; +} + +.method.col-md-1 { + padding-left: 0px; + padding-right: 0px; +} + +.method-urls { + margin:0; +} + +.btn-details { + width: 6em; + height:auto; + display:inline-block; + margin-bottom: 2px; +} + +.btn-examples { + width: 6em; + height:auto; + display:inline-block; + margin-bottom: 2px; +} + +#main_content .row-fluid .examples { + margin: 10px 0px 5px; +} + +.btn:focus { + outline: none; +} + +pre { + width: 900px; /* specify width */ + white-space: pre-wrap; /* CSS3 browsers */ + white-space: -moz-pre-wrap !important; /* 1999+ Mozilla */ + white-space: -pre-wrap; /* Opera 4 thru 6 */ + white-space: -o-pre-wrap; /* Opera 7 and up */ + word-wrap: break-word; /* IE 5.5+ and up */ + /* overflow-x: auto; */ /* Firefox 2 only */ + /* width: 99%; */ /* only if needed */ +} diff --git a/nfv/nfv-docs/html_layout/images/network_model.svg b/nfv/nfv-docs/html_layout/images/network_model.svg new file mode 100755 index 00000000..659b5566 --- /dev/null +++ b/nfv/nfv-docs/html_layout/images/network_model.svg @@ -0,0 +1,842 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + NetworkResourceType + network_attributes + resource_id + reservation_id + + + status + + + qos_value + NetworkQosType + + qos_name + + + + + sharing_criteria + NetworkType + type_of_segment + bandwidth + type_of_network + + + network_qos + is_shared + meta_data + layer3_attributes + wrs_physical_network + + + + + NetworkSubnetType + gateway_ip + network_id + ip_version + + + is_dhcp_enabled + meta_data + wrs_subnet_ip + wrs_subnet_prefix + + + NetworkSubnetResourceType + + resource_id + subnet_attributes + status + + + + + + + + + diff --git a/nfv/nfv-docs/html_layout/images/windriver-favicon.ico b/nfv/nfv-docs/html_layout/images/windriver-favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..d5edb059a9cd8390cb91fb747c2cf9b49e150d40 GIT binary patch literal 1406 zcmbW%*;kBl9LMo*7tV3%%8eVBu5$6<9O4{KGSjx9AcWg1aqXfrh?>Zy^X zX_5AgvWJkzmVK8kp@nzoYS*eplg9-%%%tH>fbP(U#{ zlXGcMp@0U=Ljnyd6ws7;$e}@n0tS&`!){4wsYi;6eo20Qzc`(JlAQcSES66a8QCpi zVecd)q(g#&UP(YeyZHG%5x09lT&{j`IQqn9>lL%PMft;Ap^;hjZxSSU+l#Q&@rp_V_AJqW7DVJuYEs${(7Fi)BeI;Uh%T()$2EJ-*;QL z+42i+-zh37y?gJ$qbJWSn-jLQ=Iq;l;Naye*KXXrWsHkCo_*q!mg_om_WXs5m)iTI zQ!>*et9FmnA8Bkl_H@UG!%3+^RVgd4sI2O^{%va_XUN7`bW^qNVM|*)XC{HO>aAM6 zx4AP)V&lY|Ejd)p$YaPa?M8{o+$CAN_ZUphnnUNPnw*lFMpc8s^tt%{QE$~GX5DTe xC_H)kVavPt0q?AQ8%&Psy5`Qd@3C>4%-(N8lg literal 0 HcmV?d00001 diff --git a/nfv/nfv-docs/html_layout/images/windriver-red-med.png b/nfv/nfv-docs/html_layout/images/windriver-red-med.png new file mode 100755 index 0000000000000000000000000000000000000000..76317dc236d0c35739e4e3a2834415c56017dd74 GIT binary patch literal 1835 zcmV+`2h{k9P)N2bZe?^J zG%heMHD!e|WdHyMsYygZRCr$Po5_n^MHI$sll%eceaOy*0U;oy7cN{xZ~#q$D1sqD zBThkFC<&-IkbsDh!~ql&qYx(&5gdpE&K>6|an@+N5L^UY3GUkOcXQ68y56~O=r>Se zKKOX=p5ay9SLds`Rj)fOEG(SnX`W^a(`P9y{2zExO3P9oT&TET#IMA8anArb;4#aA zKZ#~;@Qtp&HhPQ`-)*9WHuzoFZSkJ-?STCPc`o;MiD<60TkpNCw)UK~>pU#(6|WMN zw~YS0BCgB&l^0nw9&Ufe-t+4An)qK3$Y0{gVfe1{J}*9JgJ@&dikGtZPsK+D$dT|? zs6aY-JJr6q8pw9?g!rd8m&HMfvJ}Wa7Av8gJetMkq)3&!!cuzT6U9RE=%@PIY41t3 z@rSkdqxg}0+;`pcGqs-_&Xz+T` z+>3B_N^3tXVx4b@7S;vLsB3?=IA+qj)TX&wF|0uJ=+lXZUliBRi~5YU7TyIWiAf2> zp~tGDMD`04?l2x20PDiA%^9AdAKi4+1&wqD` z5RG?D42`vM6zoZ9S3YP^#kC!ugs|NUg2CJ&Hc0}HRX#%_lzg+ULfY;J0EmYb$6S3e zE`flp2noHof{Dh1pNV zAdQ@Yie-mCo*@v5OYzcHN{{P3g#;-A39XaY591UFm{Z%ipT1J45_r?sX$pjR&-Hu` zK+GK?8tKls2=8^?{?NH8C{S#&KYMO0#9LL2N35Sqtle3TieIh!uBhUK=JU5TK%*^FZx_uy6s92%FsD9qe|f<#MIihyi2Cp=)OYvWo4V$IL;QH$ zNn3Y{x~ElIR{MUZj%d7VVrZ<5 (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.2 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.2' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true, + trigger: '[data-toggle="collapse"]' + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.2 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.2' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('

Jo)XfpW_;arw0-rVOTC7?CBh;(To#pwqlSrPTDt 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%0DoJO8yb$*u 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%0A~x~C&uR-*@7 zABESFZhwH{_-5|aoWamd1eiSM$Z=8!Kr|tfEPl+ku|*tup+u= zLpJS1gRjT$U=WhTOPA+%(9q!KRO|OonG5eIb~ss}ty)O^p@N-WWof*P--1kjhOgO* z?tPdG3H?BSQH{Ky_|>PL24lSRsO$#{t_;mXPrOntD10}>e;qp049nSoux98l2U_MO zR|^Y;`{RTl!3k@xha3KPdugvI31Tzj<-;rY44h514L|;BQ5@^m$J!hZHhWm_It&T?_R3UKr1)ta*VRT4?74{+IosXXf=s zw5q3*-&w#qvzxWu@RbEB;oj4&-o_SZm%$e1@N@&uOQ1`P;3un+-<%Wb%ZkO~<6U)U>Aa9A1!e*`l$ zY}eSNon<*vbhj9f#d}38cj|aIhE_*My%RC}0XH*GeW%pzU9M?6pgTXWor+SircAhW z9p`A9l|PrHTe8mCXJ|F#y{Zr99Gy(w=X8$CpF`{B9tR#i0gPSSNdmr$R5bh`v^HY$ z?9&cmR5v5m!MAPhjW_&$Ev3nRmP%*XwbNDw6iU?fx$E_9ukLmn)q>nBXJk+4Z^ z65==R8+(#Df7s2}{4|@i9@5s5 zdiy5{M(0n|9OO)WVS#m>URUf@U~$;3@BOH-zq=j;LzyJ)UywV9QfNsZzq z8Rj~}PphI5xaX6PPH$P4fLn#S$4p&5Y1FInSg5vcyNA!Lsy%(SSQ4hndEx~f>hk;k;P_3JYrn&q}A&`b^MjWt3vW({ja)fxU^|e-sr91>- zzw>h}$+R#;FmF9xw|=D{G_~*+#k6n8bEBI~)uBN{PmAgT0^<5V<$pzC9MDJSD>pF+ z-QYW32nFZ`d#b8#n2c*l2DtGMC$oLVkspwhk(X>Lay6-hCNduh9@%fNN?iueM4@h7 z-}m9#ww(-KyPP*JLzS`5w%vdoo}_u_oG_+aaxB(m2aCJEUTlL#Zw+u2F4h`ye!^Dq zKm8qx^u7ol4EdDLOvVdm$O_wLK&zr#S*5Sh9U;av_+4GZlCp@Juw<2b1hzA_u!IlC zhzR0Ww+O(S*MulX{zYRjXcF)ho242XIY@Npp0ndcV9=5+6DVMeO4k(d zCNtfMcBWO!426g2APr{HBaMb50Hf_sI*tBW#*sFY{?FDSaO|7Wy!trGE6P0jTj(wJ zGV2kmhTpNyg--G2M{%h1hqXN_YQPQ z!fbsMJB}f~cBL}F{A|wH#vgzkIN-(Aa?SNHZ@YVuuf?*l>BYhdh45%Q;@>ySZhdP* zZ=K0CrQSm@ICPQcr6>jO5^Qc&!YwX(A@-;f%1)u4Soid$l7AHDh6qb`c+?5t2-N^;W&VtGDCF4@&c;Rxpvvtu zNK6m?q}B7f$$jGWFmPRX?8nwUX8R=h=iBqS?(^oFMAN_DC_{*dpXNQSrppQczPCT3d`J< z^neQ173-?W$CoN;>Iu>PjAT?ZOCTsEm#u)xPZ2cv3u3jz_>CpKxZQXpzX|`Hg~eKT;xcwJ!{5nxf%t-*>7RVBQo#># zf>=VsIWx;M!`4ITKPJ++2>hmNb{JGc6qoP#;}A*+5I*ekjme_Qk__dK5#=c+Vy(Om zqY2J#&g}GxgeBe`MLF2e{T5* zQrvIX+!hTFQ@tdSZ+|`Zs>)zBO%z_mn$hz-jV#O*HX|YlFc*Y7KKT~hSxreSVJ)#2 z6`o25&^79DMMh&P($??E5U~@_=pBKFp%70}sI?qmi;}>iEk;KoMOs=1I+^EeyxPCmJIP>{U+hIq7vtyzK`>|~M$7DcWFF`Y~ z0?*P;5#93Fr+}SejQOD`7Ylf{3XU(xt{j>t43<648pS*#8rJ4q>Hf2P-@Z1w8F~$1 z)Q)&$1Y;J#KG>0Z`|En$-5XD3`r=HMVOVY`lrFxn(!h=JQkYpC+VN=`b?h6V6(=eXGodv4?C zoQS#J?v0_)3~P{(g8IC_{)z!is+|xLpZ$$hszDylzY)T{Gp!ntX%3N=qW#B3by*0a z0P^QZahVw8DSI*yr(8wg4`MB>n0P)OzdbAvZZp!3nmYu_kVt}~hy5pWYW{JG6MaPl zq>Xoawp}VBxh#bh&tY$Xeew{2tNzs{RFPE?Zp!4~8mwLW@zSkERjcoJmw^N+g;dw` zs;oN=!9ZT$lZ0nXK{u@A%S)Naj+&vA`2CHlDZ;JF>Nzy_eq&1@)Fz7N@$4-uy2i=& z&)ew3#dUoa`-nfq*lVm(tW5-7QPsN?`;adXK<*PkxKma(Itdwf6z53=Y*Z@KM2u(x z4^!i;cRWOU451;zv(H;?-5N1>wvgMB^5imaC3t8w4hYK=ca8!NNKaV!zo8N4duUYW zcm~}CsE`YOt135JoJaIiFX;ChP;88C)7keQLS|ijLij`sM=k@ynk)Sh-eF*E-k%_SiIZ^DuO^Jb3KWO8R;=TujK01MiJ@vS-5~I-bnm?9>$lt^ zSa-?2+hyd+RNqjPpF)2Ml9g|9CkSVMezJ`$YN83qWY`m6LkJ-RYfq)GyUdg_OO z)KdFBU*^cMao1t*A>;_1mYBLF!at5(xQXLUNt;k5sJxQ+9zn)5=zT3EV4jFe-kl21i7r9r z^JyUsx~+z*2`zUaX8oLdv%oVqVG*Aq#M@?{#Rua`aDphBO89HwpJzP}r+1wLR5x39 zpHXCHVb{&hZm*{}GwCHhz+^*f^R!Kx!7FJOUMr4dcGp=xWc#vk?M3N4Dem%yGc>RJ zEeN{XU~~QU-ld*CbqY4KEA9en+bNH=y(E2e?v5~J$=3NHU_&)_C`a=SFo<#^*gU&s zMRRXvk7RjeAog11IY#?YC1hEK);sxEb0*{A!46+5+a|~FOyCrmn!zTAIUzd-L4U_C zNl6NVGj0V<01mA_@5fFii;u0*xcvi$ptZC3rJ8M1!&5r?8K4YHPD@T5i&dba{DNnp zXFXA3y9r(Qu8X9W14K`4pR{u0+m{M9#!N*A<=g<}_cQ2uKNUHn>8oAl*Q2`d3+3NS zRo)Mq-8heUK?} zz;cLIePu!slm4Wh)zHVG^vIR<{{TBc#J?au#1kNc3qcwFui`*v;iy373mXKoLg*BT zaEWFPE6Pu`Ksp*Y)53n*)xtR4(mvpE4-R@m=E~f*eNu zh$yHPZG?i3li=ersF~gGY(rg;_b(CW3~gex{9rM#*Z-rrFk?@gXTRLs)34KQXBKcd za(A(MHog~czPMPyVnafR-^njWJ`^ObT|~8#6$b+(;77iI5BY;Q;3H+v(vOi74hk!ZZ4-BRYYuMU`{kQDIw!WOB_(q_TzUqMU-azwF^Kp7!{ zpnp4ntQxL>_bCQZGE=+5A&OejSHRyXS~I+dY&R*E0?F)|5x{{0`9d*;6jQV5OA|Fc z7Fxbe^$fQMxX9&Uf`wH`Oxi(z3M9;6L$_&2r*yZNz%9C={zq5LI)@oSpx||Ep4H;ABnSgsLoZXO;6|(gMYgue9pq+tXb~tX#7zGe^A$Q z;oxWI*Cnt1^b7p*dovQjv?dlayD~rJE;+sBj`R6gjH{L_=VK#@4*r(y`-TzXJ_WrJ zKq)ketW`4e(7eE%=#Idh*{z<36FWRR5}$egl=x%XFbZ9tSd)FAW@~nP^vUc8o(~cq zBz0VUf&6igd1-Au^9o-$$Ii+h?9N6!bdeNHz-0Q;G7aV3dZ-M^$ENbvT*N zYaQiDr_({Ilgv{##&MjveSKa%jbW#*J&jE{_HfVG3F=uXgZZiReOMRB_=s;7mkN%m z9KoKD#^*pxPCUr(j4oE-5VUT}sDX~hyW+SsI4Q4azjYjCh;LB!-%rb}A zLvv4E{WJJ2B%=k`1^GKQ{ZuN|Fl_*Q2dec{OFR26!U$URnO8jx%!R_Pfq7`hfa+i! zL(&HhbsJeN;+;cfiL;LFu7LPyO6MX;R{(1~UbmMBLOcqREE`X{;#r*5jL70hAfBZ; zJR(aI-tsKY@YPuq^M|u2P($-sP@qsuHk>7khH6SEad1aR2kL15VRH+ytpUf7Hjl{p zY|Y48buS01NtsocFduU;rBpjqT3UuhySjluci%l>LD%t52D`GeVorZzT9!=y*`m!o zHxAwqn_qYDPp7}ox48M5_I=OJeqqDtIbO0iFy@lmE;~3YRvYP{SN?}w8FNJsT({&A zvqsZ+^R(+8cbs0~eRTDVduOu$2*hY|>G!-DxH^i7GDaIn<1|Urba1nIYv57yqt^ZA z16I8lfYsx*^alHC$K7eHEKx7WcYYu7V%&!cbjtqF z1ANj)ae*A)XG!gpuvDN;`!*Q28Huq#(@MHbOLicPagDU&X$uZo8ZE@)QNRJU4Ivjc zyMiv_Qr*LKUTpCqRVAfbI@CSMuR7YN4V-FcYN`EH%c)Nr2fjE3lrsP_?}!R-$nF&k znwTf9k2_+5S6hV)cIZSmUxjr}V--`h_-sAf(cXe>5!L9#US?JI9GwCe39-8k)+p1r z47riqTfyMyPao<2aP6vrEw{e9Cb*>d<)Px!2iNV#jlcZqh6<~<%%kU*7qf5fzq9zx z@j~&h8`~c*+xPf)eP>?7GY?I2*t{8*B_og}S!L@0B~O*PdavGpyR=DqSK?PmtIE2i zEw-)pBi<%VPCL?ht9S$V=8fIAW zQ2CItDpuZFDE)3fv!V682#dwhjd`eELlN8-VHGls$WApHooX~XRdYK*SQ;dVMnRnv zJZw_v2`?DNfW_jV+C!z$k@`vn<;Re#`#!{co`Bgd#meFVvu`%`*rD@Vg0r#L=AQk% z`PnWEL`+M2_8$Wy#98fePjt||WN z%XuqfBjuI!%Fa+_Y+do$w~L=V`_4iio`9X$jmPEZ2OD64XL6s1rD{{?>*`B`9OpIcA(0J!3L&ZrGYPy z^!F4VJ`e9lw_uCRA|PvtsGDIj+ndg+d-Ef+bcon~1dzoNjPMRzaZMs8#9}6s^@3T& z_oU>gPggF>jBZL^d;0TCCKYmeqBAp`-JGyzYm%4oWbkC9`kG>LkuQ=gHqA>oL+R0L zi#uXYNm)eOZwe%1#rKyt+tnQj84zXP->SkDyOQYw4k#mIi)*!r*+ykzD?)^jJxDC8qDvkLXkL1N=cGrNXHV1IB__|L@K!hm19(%fx^8F>h+C+ z5Y*rq8vLBP0kBW0MkWZD&q(%)14FF|(-Vy*#HTDw}|1A2dM z`2jq)f))G&I3-=6`(cD4Zr1qy==-%nt z>DE`JSLwU;)Ky#UX|8Rny^H$=*I&yS=$bDH+z{R4`y*mJg^#4hYQ1fw0BWY~5%jX6p zfu7i_5@>;Zqv&-F&2emw2jc{U(3gtDJ|-@)=i}$)7q1(}3J4M6ES*xJQc*jhZay%S zr0+A;FiYk_DUBq?l8N#}MS=xsDy)y0s)n~? zm@-#yoT(`+rN$_e9xRaoiXkSkhccOk$%(vdXL|;A3+NCvtwG@auuC|S`wU>8x#rp8 zV0ZiGzjaNyt0~xY0WrF#`^#4L-&wrw^{um)?B4X+E&=Z==I6rT+mxBhsOuKqvbFOdUbNd7W8`M z2qcawIg$^0&y^!!fk-s!9ewV(dcBTRS5^6ZUeRg`6D5p~hjA#J3AcrN!$-sYVIf=~ zA;lw2Y@K*`A`MN%6UWEG`Q}_}j^uhKEcmS}HBCCz!M>CtwRfmwpng4NxJrXILR&f0o+o~IYAN+Ih%m1DZhTnp>lU2Y2sZ559Q^^~MpfZygd?s^Y+&#EXeQLzu zp<#-EXUKRkA_%$n@vX~-h`}i}Ek3j9N0z`37Z;ty8OzUl8RLvBh^5u+d%Ea(WreI} zVOez@SxM&I@&e1^S~2J)a@ZC0TIH}i=*4nG8}wS_h}8l_ExO!-R{I)&FEVFsf?O*gx)a7R-n3l?xa!c_Z3Rtsn-pIQ+t^`*g%n)O?+XkHX|zH263DCw8%dv9v4esH8O0b zKPhFZnH;M9Jh9`T`un4?0vWMK?*C6#$(?9XMM+CLsK;R&4GgrjH#Q92HTqsVN*=Gy z;4%2l!Frun?>+}X9&1o}j@@Z(xBX~2;m0lL;rkuK)_q+yplj^UuDSF|w_F*@CY(`k zTD2#iP>ncv`POIeZfO|d4pv-TJ7y;B`N5`P;HwY7ren!YrEr7kSrfSu;ZAfdxxut5 zvnGFi?Q^<5qj(jv;+5=-l`Gxh<$;DHw3i-V+D%gw6;+@Lwgr`Id=^GHD}i9-TDm9ldLjEX&(P` z{3zM3>?iwmJIB0%ev6LccgTD6bM!g>68~NIrQxqemm}-Q&N=9O*-1Im9K&&bfACqktFtqk z%}np;$mP<{X5>JCWi1)X!gt-vICWiPMl5j90xhFdyJ8^U>AWFf>Y4Klxc;Gs$rZCK!TY_V^_plccM!? z|5w{VBh;^?3<)`$W7q_8e;Jm|8yHhuv6Y z9d-CSM$g6DcDUYU&s zlE}LBS7v(;Bd*IKd;SpOIu-0S6%mL~1u8TX%cyIpuTb07ht%EbVbu;3qwt$%t8;bR z71YWog=9S)Pxz-P?&%3zOcCQrHHI;76VTxIVYf(ylN8M(w!5AhrCv2P|KD?XtyUW$ z6&pEfBcx(`IR1tH^Tu~gTAe;kl131(ob1QK3hUQlq+elx{u^k=m#(W=;v=;&_s7?t z`LK0q%12z-HPW);qx}LrcyRRwOXl^?D?2?$zTfC_zi`f4} zqoTt%&5v9%bOJu$3_7x|oU4)1IcYkauJy_5;9B_xZIk=}+^M}KzaxJHKam{{8QKD@ zK3k{Tk2?)=)?_ri9{&B9S7X&tSKCbZ7nH3JIANY4f2N%#YI z(L}Gk0&5%5kY%?ai;@9&*$9kI9y<^)0=n0zr3R6AA4Cc)PWbX-uEYj9gcn!@7kmuq z*%POg)MCAw)t5H-z0L(o;0XK!JPAj%WexstYOyvkrY}qSC;r6Tbaum*SYs+xQitgc zE3%PH>dbE$vU_&>xevCVxeMvJ$qyz!MjqKhkb$q53${y8x(7naTvWb?f>MNn8LHrE z_iXe$NWDi*Qk*A|kVI_ZCgRw_P0)B=lU_WpNl9`;ib_ZcuOuZ9hkoC5WuApLs})j8 zh?lH1nGd_P#O+o^T{J~nMB;3}8%>TlWoF z98MJl{a8F_tx{0R!3r>>MPRf2My%< z9N#Ax=r+e{&0h|94a#&+$^3KBGo~ugPa~o#U1U`z|CY)KB%{DVdOD^UcpTGG!`W{r z=|zaJFd=nL?~HU>7M|s3=M<@&*~ZK~`{Q$jvu9S5#|kLo%Wou^?h1I$Y<@u6#qGB3 z7MZWWP25&^C&%>gjx3;kS=K6d;q^2qK#Md^bv0=VJuiaiH&iLB5i>$X++BDL4yqO) zpBJu!y%<)!R2<6xxrQ%JWuUe|1!tOu(w?-_?k)fY$_41RR|s*adsues12@UDcPW`=7rPHo|VW@|im^wu>WAdE&D) z!HtJO5k2a?9c8U}le}J8AO31~u=t%Yw@E(K@Iv;t%5TH(G_b*pSj?u4l#%Jo>cthA zYcqqzk)rS#fT3_MydeCq!QU#DU0L|EhTjCB07X#&O+E}le! z))!BLh}zT`$ySn!l2kIu`5Lo+zmMWMUIHO8q=(GVV8{}hSFGc~pa{+4-Xir#ajbZ( zNEe$RQIL?RLP!)OOt_qc+vf{m>(r6gM~z>4SfBG({_#80x5Nkr97 zG=(t$2@V4C1jip5hQpX0^M6Oel8B4Ho=K7MpO3R}@bPf^($d6>NI!cOq@Up*5B_q; zZ{KJh?k;~Wvi5%y z(jfXQ&tv-qhwB;eIi7dW`9xRDqj@Oc5k0C$_n01wXI^%SgR*9p%7(f`hw7kQj+ldT z%**^e4mycrVf~1Yx+>%1=^8JY*0h=mrvxQ?HD`yygY)9IMq5y3_O> zYsMegUVW|l`!zdyH*ba8Au?Iu?TGg_A6$3$H@|$~r5m@-H-7Be`=nj9T>bpj9o=7m z$}3QZ->%+JJ^ESoPUhop{GhtGdT8IaZQqAo|Mld^rm5)4TEu}_P@*VvUxSRvHbsbc zYXVBQr;j9$6zF*kPZcOR7AUT1psmoFN~h+4|w`F!VJOLl4o^04tc)4&~|Fke!a7e%pLzI+7T-MxC?9kUV zT&vj{c`6)+zL?^QCqOEz0OW@|kq3^^qoheSr5YL%6!cOQYi6@-RlX2h)XY&cak8rk+9P|;+_B~ww!eQbbU4%S~{TOe`lS*){#?@M# ztLw(o__&DJx_?;9V=pNf633@JA}ARlx$XkxN#1m`E@QqgG)I%MR3WLg!saO26cbIY zAlaa+Ev*ntQ5N$1hifr9qF+-a@frC+r}lY`EcTPUL}8-tsRN>+i!P)hVNEk4b1R>Z z$01?)|4k%t*l&U@b)kS{f@N*>{%W~ZbwtH*dSRIe2V%U#|2Tg1o*z5|<$>+%&QAA) ztv@;P$gLe$QJX0Us~avB5tZFHZ5d5hZ@y!>ow^V1`o=Afcrd;&GWkAZL2{yQI51mN|7=S?G_j{s>X7;LhB4T zgQ_rkP><>{JwClOy*$@3x3O1P>R2W&%`MGGVlYN2t+BGw)+_f0dqaIKD_d8VR+d+` zt(fMd1tI4Vlw49!J34cE$FMZ)+1BtN_n`KWzDpa+zS8(weyrnEhxanRT>$IpMkkZDl7>yf3FHA~o9Sd0 zM~tBvO_U&v;Y0nX!7JrU*Xi!v(I#PH{@g+DL7;rX8G{7RWKR<+oVu8mvz?a4JBJXuluh1y>1c9M_0f)w??U{#NdYXRH{1;0?^N-r2c1DuDvrq!Q3Cuf!L{AGAE6?6N$ma1@M0{n)2ZSh4g>a&i*HDAC2oN2xK>V}*HO2Ambig>JVP z?7<1dRMrgfRwC!DM5I}XoUq>gj$g@S;e-3T1qQeS)im1~`9G?5YRk@XP>HD5Lk(M;{VX2gC4Cd=uv+ zV6U$hmr2*cZWqWQ0>p4h5A&ESEqG$r^uCNNa&6)jY@YvMRkk#rON*9;)t~e>bWA&Q zddd`M>`u@1E8z@0s>0+6%X4T{i}2RNKu2yzqgK*MR$BvU&0c@Flw~{Eh3qC5lS-yC zEyH$6`t_o@gY1u?K^IN#vR%Jw>Im z4r?Rw(f+s}j~eQHNE|rQ!6TT%o|&4_pLv4X>GS?y z{}gV6tA2o=c+c9~e|ag=I2f+(i49G>^Y;6X?fgdHpD1a|WvNuTVR+)XMQ;z! zUw_~@mAXZ3LUbS@uk1&dyC`YD&Bey3TC{DyA4WyTDE)s9Ib)Qcb0R|m$G$4!#Ia*z zP{YZSc1eswKQ9=&{g7A_axE>gwOmV!Y|=<;-l`@`|0SJ?or=>h1P;qDhW5rk<1D*_ z&xT&I9Apo3mZvRGvAemaeNXu<|H$od?T~i*cf>8%`c?vzFSzp#~K^A0Oj}OF;#VvJU zI}Dt0)#eZR8~wDObKpl*oJfyze9Vb4?MlBmapcGm4As`Ma!oI=Kn1vbqT+J$=;T-+ zs>DVox0-H0$ErNXA#2EstN{zlVgfGv1GxMy=0au`pg7igCIAD!*Zrn{hyRqH@qeWI zOy6SPUf(I7MfDB%27Mzw#y3iRa!`%mAII60NO<%IPxqhf2XY;8AQcK&cc4}#o&Pz3 zvR3eM{zWVrgUT+_+5%IAc z8lEJ?LMVfXk;U2p!g_^B+47^gsdBEGNmZGQ7@RkQYW#eA5%xh->zHM+TNb7q@#d?~ ze2w|m3U4fFNu{jChL$g#{eX6_FGR`$5(-!nDU+=lg8S z?aM>U_1@-d+11?j!rIVU<+|1l%m#J?x52hixY>SlXrra(eBfC@lRWy7M>36Qg(-*jy$D3&ppo{vW#ysd@t+B2 zBcG}B*J@YmYn!)OnRey+=(^aK3(VEr)%;p3y}-IKHaELKWBQb3+T}XEm|M)R5NL)2 zHe_an{aRx<7i;DWVJe&x0a9m&qFcj^;I56VBJrF61>VR=nCubVcM-xra^zgShhjEa z!(rZPwS|%06^-(MMU3DHc@T3D zkWkRsN+=wTT5UE0#3^BPAgo1rK7o;1U2A4J4u2BXo6&BwN6KWg$jJwkV6*W&XYG8L zeWDr7**>$}TuU+~Nu%k4UecRKns+qQi<(z84>S*wofFNcn)&9B_}^PUCnyI(!V8oN zLh!GqVA>bkkJ)MaQyrb7)R&&GF&Zug3W_IXapE*_Qt}fYp7TrU=SrRIs9;)f@gT6$a z9qSxfQxAkCJsIpalR(Y+gLOVlmboqEOQPO<^^R=yt?JQ+>J0_EcUC9-vs`X(g2MY* z6?t)3!eHo;L_hp%i& zdmIwaqC>gXTP9-ECtuYAS>8#w+J*e-J&3C-bW>fUxEW4X5Kr%CJEmn*n7PHYI}VCW zI@nI7sUXktpn_f`Wgn{<@$5MU7dN?~BWO)`z>VN5af=kgRb)<=p^08Y>^AdeH{Fd1 zh;cPDlypDgUwUQE82dNKV%`@zZ^;t}PD`i3#q z{V&qLsGkX^y2Fwts!~F2$Y+b1HeJ*uUG0pwW%T?UfZX(MwOj8#*3G?mTa&@0e@3NyL8vFgO5P%DC|(_ZBK|~?sdHe033Zz}ce+TqLA=N)DLfQP zhz;?0D3o-2x*kzIa-`niL737(3yP`+3vpEw6K*jfRRAnV6;|XFHl(7vWC~ftgq04( zus}w!1SMGsrW5$C+BBuTkPyWLEO;R-Ajv6_D2b|hRaGm--GCt*m@wMgaV}aY7-U%s zzqSG^d4TIhRH(z1Z~zX%y>JYkfTy4hj#7U$T{G1s>S~o%TR`H`1eF-2etOXCzJH3b zPWK~M2&u3OlT3(YsX0P~lbm&y`u}2|3%4%x!i6~f$co;FMg|u%q8A+MS$Vk^NBt;M2B2~%dVYT z$6`8J$71z!&@u{XQwXnaTMO4xRDC@Q*M;j@z#o#BhvY4hRuEAOwL{>Cbda&!7f09Q zMJ@7|oyO^L`H73ywZO}BAW^ske!RHquP6fQtrg77AX& z%$bWkv_Ey#ip0?k;^jCaoq3l@R%iEO6mZ_;IK7SD16sgzdS1N}Nv)9Vp^Ax}3ZKFi zQ@kKxY!Dw!0efqW79{G5RzE%k?f)Bba$2$X;=_(cD>=8-;7H3A2#~H?(Iv%J5M^>r zddY5D(M|1UB!ahY^pSmZ@>gaQpJcZ)x5!W?M`dz`ET*DdR}%xY@ya;TLH&|JGSQA| z6If>aDt{DeXory2*x0-I{Hx-xj^dOe#at(Zx3^N#k~S!*F=M2%%X-j8OL=Jv*wT6j zxJ$UJ%tj=Chgcb@FxK!w%R+XRIxDfT!>nwJ@HQu>g2X(yz&1~qS6(o!r(@pqWx_SW z?bh3Dw+XIZ|E+#1R#{b{2KZJ`>MG_6r5BOeU zCCvsqWABo2SSu$Oi{w@EI+@nwTVzW9T1;AMeB=rm1B^?-{>?zDwY~a?MN|Z>QssvNx_tePfEQ=^#Bg| zka-a^e53FhGpcAtGiN#tm0Qe>aJ0z5Qyj#_xIHs^zFY%+hK7gpm*SjEVj!sQ zX*M?EG7~rqhmfl|Gz_rRtVl%OkD|#)uQ5j6CcS9 z$Jye(8t{t684`T0E!3QUXlR?h>gH(ftv@VVQc0yLEuGT#KC=0;&ah+)xJ0|JYj90- z2YjGu(afdo3vau@9sI_ZdYWf$T-va0O(N0MQEVv{mhQ;KF3I0see>2%FX!lLzklYv zu)izVG+@kKg*bom%;ZV>Fp^t-&;Wl~IFkWQGrs z4(4+^KHq`Qx7+0aU?{5x+c|EpX+@`beLzWBg?JxwrZGNPc{g7J2nnCQn;#QjLrjaz zox0VKMz^5REzouN8hmZkVo9d}u5n?nkSR>P_~-m(Ki)^3|2TvX+3o3+n+OEN_+z+t zwElfZYbz`%<|Z)>A7>A;2e^-8j3wRU=x~+wW(>% zIXDO6{zF}5$3W^Q3+nYbIQOxZBQ?=KTtiNWEAD_nR<s=|;>4uha9 z*uy;9i!pH(1_dPyBCMj;i_Yu#%-6q;2%h9P40NTeT2gCe`Y8`_IGoEbP2} z=Rf@N`*%IF_=%-1RSq{gp{LM#gK_2ezPGwu&QgCq{KsFM{?1582YukXb3rQ4giwy+%GKv2Qk!#QW1$3+c=iI0Wfm&z>1CE! zmax6ta%Fj#yT-D?G6F{8`;no0Og#ZUuvn+TIdG|bMR-+mKpqHhkcY$DrEhw6xOd1; z!pEsS$>-rK@OAF>;J@=H!yl`sq0CbArDf7xvAfifyi0+e8oyBZRB3DIjjL`Q+AYQ)*@kV=lJ8UP* z72w2p;+O3QqKuJ*QwKeUMHHvf>C_9-=^%znh9Ji7sB#Ik){E~m>G}dxM35obM$bm#WCj!eas02pE^rR9PRV8Pm zqkl1L7^#e}P{S|aba{&E)Bh5-NJYm*%xDk zIB^1eeQZA`p{sx@&@{d@JQ#syWFSICVgkC2;3qQ7&tQRtexVn)D&umYErmb94oZ%k zLmrO3f@QTLk!nZtHQ|QS?(zax ze*saufVAMOE_IRmd3BBLdUdn<2zW$&nmf$B)+nTTPsZLYMLjcpk&M4P9F5G3q00oO z$wx*l)&!fHVzdwgLfo!m14Hr+_(%ME{B+E}!%z7?$t`BF^_wl0aC>M@ne8d|+)~G+ zFCCv4?(drD!Y`ajIE)?{iARyhMQemT|Nu8=)#Ij{Xi(ah4^GAgu!@Kg63dpz;U$g5lEMb9%RQg>uL`V?uMBaJ zwz8a+w_AMk*lpC^>{k1B@%G3MsAuE@o?lVFalIp+rv8ieNCVseKZu@goAnj$4c93S zX*$kv8%0|&pRkBe=C@gAQ**3~V!c$a^^4Rnwav3F_>kvu>*Kaj{(yC_?RDz+)Cv1( zo0mVvLBJj3s3F|qvBOCVdpVZd!gzu1_u-%Fkql{-?-t)9zW02L&!_w|t_q(#h7<_K zvG>)0Yjdt-;4xmQKs+Pd+q^%k7%o3t=fA~&kDvCR_IgKf>BbJ8()oM%_jp?5O&&c7 zzn4G3v;5Oe9|N{wx}uv*Nq6Ek4rt&MovM>Q<%CZBORQ)tojuW>y5)jgfJ-Nau-P(% zQ^3cOollmG8O9`)A9kZDLbmogAF{RccrjSK;>a*r;1aaAHA!XarTa z;ZR8`Ak1H6rT6vqdDuX`ez~T>B&@+w@pLWz`wm>adh3eY3o+l%9(>}HKOWrq+Qe44 z%OVD^YFlzE)%o`N^;d25ZhIfX-+ThOx1R1;-q3D-9oa*R0H8Np?gn{^uXA^*K=f6? z#A>HN{Awi+MJEe+XAbftb4+sLst^e?s8b@WUrQllU#Qh)nKr&56%7F3%DG0NvQJ|1 ziXY=+;#lSAxHw)@N@LiZepP%8|Gi3TY3hu8`2RBYCGc@nXP)({`lzlxs;bYb>Z@Aa z)%PW-TT;t{F4?kd>p%iu5{|F{CmD{6C9&oPD+gDS!3sGTLl${66T&3F84F`Th9M}7 zmnEARJTrs|*(G7K{xL9Ei8o8wBp`X;_o`c#GrPZEWLLe{uV1~c>i*vM{lDXVkK)NS z6uwjsXDkUk5}QF}A|eaSKtymgxs9Ldb}}1DJAVB$g0Ee!LcS@2-hvbU_*18hXv3g> z>6g^QzQakTkLh!4mG5EhahM-5p;F;s3^w?hXXkB?36F^j1)E^Od}?oYZ;lSJuHzB* zp%!#JVqIidJsOY9M_!E35iy|!P;L|}zvXPkEm~MBCtw0!L{~g@2rImc^oPe#Hn)fb z-I>lHH!lhg@jOZZu|739Ss`V2w^7#XMww_OrS1>KDswIbB)-=*FUy6|C8o8WDMJE#>tmHD6Nmr$bcAn+Tyl zip9YoX`Le*+?nxeJ5~W3$)G?E5x|5sKVQ2KJs#37-M;cxCcRNUc5LkF>FdV2E0I9^ zKs1^x>Y=mD(8}YpE%`(u-FFRr<<_1DzJH*v&=sl1KI8GUe)^4#TOp^%C9D0+f5Vu3 z1GSABXCBr+=k||2oIKpYPz7NReRKBa?KG9O6fIYLNj23wNA~RRJdm8)bI5ea{Q1Ba zq(jv&Ui$gXhX(H*`Fh~%(&3Rs(+TtOz;Wq^l^+f+?K!>Y?LFuA1QpfSE>yi8(LLtx zumc_SAmwK|Vgo@+-gII2U7N?_wXw4ra%*58a$`B9!O!7!)S=YvZhL)RJF2~?G1?+} z?CG)GYz*A0Ki8em*F7IQ8hbIu#2VL-5?>O-eRXMW01ZHn%mE!Y4dh|!43Gs{h}Av& zS#*%a6%pL%RmGaQ$6@C&SI4>N0;aG{P6dg zGM0A{e6CT$Oj(Z#WwgJ1s61b0$`Z)evIC|>xmqhSvpdiZcs3`Vt+?`Ej|*N>`8l!0 z>@WhZ@kH98Mbn4`Bl-hMC-Iq+ifIhwG@` zT4qKWdXzyBU`#XcRm$NCDe(t` z%m>Thw1pP!7aDGvY1+=gP}IyU+O!$nKDfJkbD|mw2P9-pYHh9Ut(8{B(wiJf7PV}0 zm$oB>LK`9>YOp%2QX5fSr7khoL)2(tI7D5M+o7U9sXv5vrgn$WuHE78AnqRAKn=AH zsAzDY+M&~%REWSa^@Px6rOQLq_RQrfwK=dUL{#luGwP^ux_EyTSY%8RoXn6#M$<&J z>0D93G+GthU~4+}q`MJ&)Ql-2OY%TZx5VQO9m=qOlYb2jzPS>)lU#+?632lloS4hk zrQk%>9ao+@^7+Y^axTVVX87DKT_?ZYwADtGUD;rRF3E06pSbXn%B`r3zfw{=L8w$XNNv^5&PioWmW+aKG#apv~r`p+4eE5oVfJh){5V6!a|>N zV&?R}u{PI1A8N?PaF-4fSKvgB2trOuz-x&F7)fB|fjJ?8J&tI2k_(7bN`kbELPIiE zsiq1jW^y>_oiQ>-tRTS{1z4X6t+?_bFO2w3WV`~xT39cKMXehj8a~qa zNKqAV##f0QtJ*=O#BkmOR;*G9bV0Hf8WUwhA0(hvIQep$a587KoWcs?$#uHnSj7!f zvP#bQ6H^sDC=4m4I3j*IB62w*mbr$di!?QCUs6{mijn3RX^xTR7=D^_gxlcCZ;rzo zxbpF{@Lr+N)!C5RL})karvP-}r!cHzBzYcK$xB^&w#s!)V%*GYd~&vHuFJI0wbXUG zi^*BgXxC)d6g25wNM)r=L|kNeU2G|2BB_BEE)x+3;;~F5xyZQmV!WCv_EsX*KBT5P zDDspTR*9m($x^~L$Dsud@!S+Q&%MT(IABs*fr=%H(ZXn9vM^OJ%@*bg^g;naijbwk z>4K>++4=ZEBPAPI%nb;1{i5z=SQ}ewWQJ}CXRi`6vlcCw44LH+va*Ub4C1+ADIpg^i1`*SLw(=4s#FO?9vrPqaNMIzkKXwp{;g)c1p+tP$958fDeD80as-H5P6^*GN&n3`gVk$A0IFdM*Fsq5t1g*m<0RpqF ztwPGKZlf%ejWVv0QZLF%1y2yqK#MaIapP%`l6%!itj{4kJahO_Y82JtuzK9woDJD( zAcK!>szRaj^(u3N!{L;j2}#e@B;q&f=&sC3XjDRz(v&nO9g)sSX6ab`*k6(9Koai5 z9KfP?*?_57@C_@(k|pRKL~I1WV0JqV=L;e8YX0=XD7P)>v>h?6H^p@{@T@kbjW-NQ*8#FZ18z| z+C!8ePZWN?4~_$aCY1(xzTG6xpXwfiJ`LLDpxKGF_f>KUuAC*8;L3j|mqg(b8(b2l zESVJ0t0S$0F)y9*2VWJa(();=+6ix*YLI0v*Cfo`%UE}L=9>z#$S4QjbiK3c%pJq* zPtT3!=5kNCo(LbwSycRDHpd9K<#diw*mO$mO-0guGCY!Hr$@16<)E5zSpAF0r8@mC_?(DF=TyY22=cX`QyEny*1^T| zzr`9O*anYfbN?8F-<&KWYIqQGBxrNH(vAwC*H5myjU4r=NzSWI9A=8p(woeRs~{zr6^&h_-SI4BH{{rn2PAhz%t8P| zk;wm|ABd~i#0kYFPACE=g#n6?+JY>hEDA`Bnvz^V(bD9D0J1-i(L$1{V%l?e5VX+I zNhM{6!|;6bCrgfOetawAd#c+v^J z7Ol~4i-7R|uiC!O&DrN1kMfU*kGda;&exvexSCv3_6mE&z0n(m{o?-UqqOb)$a0jP zwSCt0GV?P39{nD_EdJWf*2TJ1k9Mi`T0cL-9pKp#ofT9~O_pk1s7tW=gq`RLVTWpp z3%k*7{vF}Bf_a;`HTsh6CGLN6=77yFM8nbOW_lxUv5UONsW`%X#1*w{XLg#lo5zJ6 z;tr2R=ELDgbUWRQ2r6|*gr2(JM& z6F!bBe;|CkSgdtjz%>Nc0G>I81<;zq4~rXpr@$jxbbCC4991H65kr+!3rE``93Yic zydzcWtwuWfs1jwzd?%qsy(*&BD8`0mM0*jUVR3!bgG?!!=LA9GIw>l!h|cOmlHX^FUt~VFFR%(^f?DQ?ReWkPdS#rrxOUwOGr|pHB`gUhDwx5R8c4{kOhS1(IT2H z&K2q6WLIqw-TGAQ@joY1dwK?Pqff7%9`BM+A|cuXvCEl_^IL*q z95~G-7-8|4)A-O=n)oV!;RV50UWWx)8}>QEGZ5h!$N@0B;S2vaqG33i5Xu2Si@3rU z&;R^s;vF}?fSCge8GI=Z34o{&nIr0-o~hTwp11F2Dqcv8=xWrQTiJP(guX z&V3!D0i*{;1CxQNz+B)6?r3#nBG!Qxl!;hU@us63-;&kBQ7GYbG=?$4U8)-@a}G4> zK$DIs$DHGcHSx^~j!eUe_NQzT=EWDF4k zT8uH&a>M`mk}-ywCBD(c^FPz=&{d@y?|+PG6#S)rxzx6KD*!5W%Z{Bo^eOE`BRlu+ zJh+qDxy!PpRnqcyYfs*6M0S)wqD@R-V70OYe@%h5hPW=OHb@=pDJO*-DPJa9!kW=q z@4>_4(d|~Vb;r(KR;hK1NGM)Zi33&55hXZB+H#$}pfsBX7q2>(2mEVzfhla+-8WTrcI}7;E$$=k%BF}uPUI(U(sdvFS zxMS=^s{j1E)Mk8?@KHYh?$e4SOIUd~{>FoPsA4@m{%b!oi%EPOwC$V|&5dKFTFpeH zMf&68EuEQ2E3WAFmZ3~!%Rq~mi3G4-eLSAaM9Pbd^LV^B6Y0kl{nGf()Nt>P$j&}C z(>biyGHI5wYFl>gh95@DJ2<=5VlrE|^tYC!05^`&rywR`Wfe`S3$P^(s_J}arkG1~ zl{?W?=Rzml32px2-MxvSq3H1FFg-gwH%wE*!Z1Ay;h|oCWq5LIe38Bq%dCUaBHDKk zfuw6OEgyhhe#R(zE(2@|;r95iPW}%Q0oIJUr`9y~rq14yaPUqoo=iAmA>`s)T-th_ zeFj!`5TiOohJwoe|4`f;vV>UGt=7N=KC;$qU8m7sgkamz=stJh&)Rq0>HGA9gWINK zeka#)$!d>hLoC3Vf~j5A8-{4w*WJI`I#jcpWBHMe>h^-%I=H%_-lhfwA74?8G|`9GMGwbN^ytV%dpnc(48Bk2Ik`{Te8its8PPGnfZk{Y?%2tQ!` z#Jtv6zenOC{7v@cZ-#LC!2+Fx?tUsvE)J7{!eoeWhFI4!1UP4!06AkoG*bDnv9=BK zHV&@HP$4=|21a6QC7M}ln-kL7Ln6W!!``Ob5`3b~s^pC*u~Ny%Hb`Q{Y8OM}b^JpB z1|k?nwhL_Is*;~r=ZXEhmDI@%v>M~{36@AtmT(G|a1GW^!Y}-!$JzHg~F#pTd(duM%sybIS7feVe^;!IC zp=w#Ep03ghRWykkma0sc^=BfyVR*}AB8h<(HWP6T#KW0L+%UYgrn0@|NNZn+inq0s zCr-rUJn!NH{)BaoMGGwA*(r9OeT_A-V0a5=+QW%#G&7o+ggmUXnYqkDhM_V-h9>D{ zYwujLKWe6MS~00P?4 z;D35(@J7||vbSzr-QdyNIaBZOEjQa;FcH1|t$egO50_sW+|_gE>TSEDGO@YwBj}d9 zra!kDp74k9Oxv;#?fCXqg;*{y(>}wT!1Ii!!nC6?(?S>q8o`YO&KWwL0Kw1>#RPK) z-h_(ofkqSQW(sJmUC<~)G8!RlhSlLhaD@%thkgoN90ZzDOkP59UWY&soIv24iQoXJ znoJRg!w8Zfq6ml!%Oa}jhTZI*^`Y z&7d`^w^dCfIAT7EUiSS^q4g-*#y0Q9O_I^)F#aFGq-a8?;XG=ZG)OUYI2(c66jSZu0AwjGK z@!S*sv0nX34-&AZ;$CTsD@7sMg>S|VcLO&-Vsr(AGorQVpVN)-pBzy2 z-P{JC)|#+Q*dsh3n(ob`4f*4EVS7~Cx3##fUgsslT5QKXgA)e;gWH$u#5@m*DJTzi?fgOScHn3)aWn8fHLXVMh zzf`q4S*?g$A=ghruk+pu#JWT>^s& z1ahlVYP3M>h1tSir;ij&Wu+XeXS;GEg0ASXk?hvo7(c3vM@C~;X7}dy3)d*u#P(D z(JVTO7{n5N|NUgE;2ZVPFZy2d{o2R)NF;!7Q@$BH33)kIauYK~qVp0_u$SvAK#%Tb z-dHJ-_5>1vq)Med_@w#cDoS}FgtBS-g;?O}nXVj!1LrQN;*IR}jp#{=;O|aGY;I)+ z_F(1)seNFz&C?b3N_+0#cF#W|??2Qglik(Nr}ovSj{Mb48$Q7t{peF;Z6Qq)>@^I1 zZyfo}kKRL?s)iCPCG>Y#UVr}wCzjeN!(&W8izzFOo^HlUW(kk9L<3@qfYX!|MGaMc zz2+Nj;@W5vkw$?VkqC(>QOu(R!bXY4OFANfk^C|kb0sQ?$<8&B+Mha@Vp3_VRc zZxxMZGwUpz!buWuHL->vgZh4~zVU5z8?Vzk|2dOY&!W9q6a_9v^u>GQsg&BAjHLP~ z&Yl&$s(?%qY$#h39LO=wFq9Q*gnKPWw;)R~nnhVkOhltm70s%1Dov>Z))1G})2dmW z%sjrf0?5$uX3k8{G}4sKEKi7y_0!Zkm(vW!cUW-xI+}6eO|2`i=19HB;5T&BZJk>y ziTG}x+gB)ioEtA)&Gom)oY@&yqA3pfn4_=0x+$OP*zC<*wYqI6g~40GPxPs4k6aQ0 z0Eg*i-}y82PcXf-nko%?NwpJtY1aXr(TMm;5%HBGKB%xM2ehYRe3Sj~AV}Lte%w|o zo8n_8cg~D%Gou^L$gGtRLRqVPO9WjTK@m+=(4;b@(2Cnm)lW`LU<_2kB`zi)G#f|+ z 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

6Etd9slm~_6A(P~x1Ia@o`M)KJ-QuAq+ljJ~ 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 z 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