diff --git a/include/DispatchManager.h b/include/DispatchManager.h index 54631501ff..4eb2a7eb3e 100644 --- a/include/DispatchManager.h +++ b/include/DispatchManager.h @@ -46,6 +46,7 @@ public: { SUSPEND_SUCCESS,/**< Send by LCM when a VM is suspended*/ STOP_SUCCESS, /**< Send by LCM when a VM is stopped*/ + POWEROFF_SUCCESS, /**< Send by LCM when a VM is powered off */ DONE, /**< Send by LCM when a VM is shut down*/ FAILED, /**< Send by LCM when one of the execution steps fails*/ RESUBMIT, /**< Send by LCM when a VM is ready for resubmission*/ @@ -129,6 +130,15 @@ public: int shutdown ( int vid); + /** + * Powers off a VM. + * @param vid VirtualMachine identification + * @return 0 on success, -1 if the VM does not exits or -2 if the VM is + * in a wrong a state + */ + int poweroff ( + int vid); + /** * Holds a VM. * @param vid VirtualMachine identification @@ -317,6 +327,8 @@ private: void stop_success_action(int vid); + void poweroff_success_action(int vid); + void done_action(int vid); void failed_action(int vid); diff --git a/include/LifeCycleManager.h b/include/LifeCycleManager.h index 55664b63ca..5c280618aa 100644 --- a/include/LifeCycleManager.h +++ b/include/LifeCycleManager.h @@ -70,6 +70,7 @@ public: MIGRATE, /**< Sent by the DM to migrate a VM to other host */ LIVE_MIGRATE, /**< Sent by the DM to live-migrate a VM */ SHUTDOWN, /**< Sent by the DM to shutdown a running VM */ + POWEROFF, /**< Sent by the DM to power off a running VM */ RESTART, /**< Sent by the DM to restart a deployed VM */ DELETE, /**< Sent by the DM to delete a VM */ CLEAN, /**< Sent by the DM to cleanup a VM for resubmission*/ @@ -202,6 +203,8 @@ private: void shutdown_action(int vid); + void poweroff_action(int vid); + void failure_action(VirtualMachine * vm); void restart_action(int vid); diff --git a/include/TransferManager.h b/include/TransferManager.h index 6b08f3d73b..1b2b1265a6 100644 --- a/include/TransferManager.h +++ b/include/TransferManager.h @@ -63,15 +63,15 @@ public: * Triggers specific actions to the Information Manager. This function * wraps the ActionManager trigger function. * @param action the IM action - * @param vid VM unique id. This is the argument of the passed to the + * @param vid VM unique id. This is the argument of the passed to the * invoked action. */ virtual void trigger( Actions action, int vid); - + /** - * This functions starts the associated listener thread, and creates a + * This functions starts the associated listener thread, and creates a * new thread for the Information Manager. This thread will wait in * an action loop till it receives ACTION_FINALIZE. * @return 0 on success. @@ -80,12 +80,12 @@ public: /** * Loads Virtual Machine Manager Mads defined in configuration file - * @param uid of the user executing the driver. When uid is 0 the nebula + * @param uid of the user executing the driver. When uid is 0 the nebula * identity will be used. Otherwise the Mad will be loaded through the - * sudo application. + * sudo application. */ void load_mads(int uid); - + /** * Gets the thread identification. * @return pthread_t for the manager thread (that in the action loop). @@ -128,6 +128,15 @@ public: VirtualMachine * vm, const VectorAttribute * disk, ostream& xfr); + /** + * Inserts a transfer command in the xfs stream, for live migration + * + * @param vm The VM + * @param xfr Stream where the transfer command will be written + */ + void migrate_transfer_command( + VirtualMachine * vm, + ostream& xfr); private: /** @@ -144,7 +153,7 @@ private: * Pointer to the Host Pool, to access hosts */ HostPool * hpool; - + /** * Action engine for the Manager */ @@ -171,7 +180,7 @@ private: }; /** - * Returns a pointer to a Transfer Manager driver. The driver is + * Returns a pointer to a Transfer Manager driver. The driver is * searched by its name. * @param name the name of the driver * @return the TM driver owned by uid with attribute name equal to value @@ -184,9 +193,9 @@ private: return static_cast (MadManager::get(0,_name,name)); }; - + /** - * Returns a pointer to a Transfer Manager driver. The driver is + * Returns a pointer to a Transfer Manager driver. The driver is * searched by its name. * @return the TM driver for the Transfer Manager */ @@ -198,11 +207,11 @@ private: }; /** - * Function to execute the Manager action loop method within a new pthread + * Function to execute the Manager action loop method within a new pthread * (requires C linkage) */ - friend void * tm_action_loop(void *arg); - + friend void * tm_action_loop(void *arg); + /** * The action function executed when an action is triggered. * @param action the name of the action @@ -213,20 +222,20 @@ private: void * arg); /** - * This function starts the prolog sequence + * This function starts the prolog sequence */ void prolog_action(int vid); /** - * This function starts the prolog migration sequence + * This function starts the prolog migration sequence */ void prolog_migr_action(int vid); /** - * This function starts the prolog resume sequence + * This function starts the prolog resume sequence */ void prolog_resume_action(int vid); - + /** * This function starts the epilog sequence */ @@ -236,7 +245,7 @@ private: * This function starts the epilog_stop sequence */ void epilog_stop_action(int vid); - + /** * This function starts the epilog_delete sequence */ @@ -275,4 +284,3 @@ private: }; #endif /*TRANSFER_MANAGER_H*/ - diff --git a/include/VirtualMachine.h b/include/VirtualMachine.h index 8902f58913..5fe8533b5d 100644 --- a/include/VirtualMachine.h +++ b/include/VirtualMachine.h @@ -56,7 +56,8 @@ public: STOPPED = 4, SUSPENDED = 5, DONE = 6, - FAILED = 7 + FAILED = 7, + POWEROFF = 8 }; /** @@ -81,7 +82,8 @@ public: FAILURE = 14, CLEANUP = 15, UNKNOWN = 16, - HOTPLUG = 17 + HOTPLUG = 17, + SHUTDOWN_POWEROFF = 18 }; // ------------------------------------------------------------------------- diff --git a/install.sh b/install.sh index 43495d2b80..3b64117d22 100755 --- a/install.sh +++ b/install.sh @@ -27,33 +27,33 @@ # COMMAND LINE PARSING #------------------------------------------------------------------------------- usage() { - echo - echo "Usage: install.sh [-u install_user] [-g install_group] [-k keep conf]" - echo " [-d ONE_LOCATION] [-c occi|ec2] [-r] [-h]" - echo - echo "-u: user that will run opennebula, defaults to user executing install.sh" - echo "-g: group of the user that will run opennebula, defaults to user" - echo " executing install.sh" - echo "-k: keep configuration files of existing OpenNebula installation, useful" - echo " when upgrading. This flag should not be set when installing" - echo " OpenNebula for the first time" - echo "-d: target installation directory, if not defined it'd be root. Must be" - echo " an absolute path." - echo "-c: install client utilities: OpenNebula cli, occi and ec2 client files" - echo "-s: install OpenNebula Sunstone" - echo "-o: install OpenNebula Zones (OZones)" - echo "-r: remove Opennebula, only useful if -d was not specified, otherwise" - echo " rm -rf \$ONE_LOCATION would do the job" - echo "-l: creates symlinks instead of copying files, useful for development" - echo "-h: prints this help" +echo +echo "Usage: install.sh [-u install_user] [-g install_group] [-k keep conf]" +echo " [-d ONE_LOCATION] [-c occi|ec2] [-r] [-h]" +echo +echo "-u: user that will run opennebula, defaults to user executing install.sh" +echo "-g: group of the user that will run opennebula, defaults to user" +echo " executing install.sh" +echo "-k: keep configuration files of existing OpenNebula installation, useful" +echo " when upgrading. This flag should not be set when installing" +echo " OpenNebula for the first time" +echo "-d: target installation directory, if not defined it'd be root. Must be" +echo " an absolute path." +echo "-c: install client utilities: OpenNebula cli, occi and ec2 client files" +echo "-s: install OpenNebula Sunstone" +echo "-o: install OpenNebula Zones (OZones)" +echo "-r: remove Opennebula, only useful if -d was not specified, otherwise" +echo " rm -rf \$ONE_LOCATION would do the job" +echo "-l: creates symlinks instead of copying files, useful for development" +echo "-h: prints this help" } #------------------------------------------------------------------------------- TEMP_OPT=`getopt -o hkrlcsou:g:d: -n 'install.sh' -- "$@"` if [ $? != 0 ] ; then - usage - exit 1 +usage +exit 1 fi eval set -- "$TEMP_OPT" @@ -69,20 +69,20 @@ ONEADMIN_GROUP=`id -g` SRC_DIR=$PWD while true ; do - case "$1" in - -h) usage; exit 0;; - -k) INSTALL_ETC="no" ; shift ;; - -r) UNINSTALL="yes" ; shift ;; - -l) LINK="yes" ; shift ;; - -c) CLIENT="yes"; INSTALL_ETC="no" ; shift ;; - -s) SUNSTONE="yes"; shift ;; - -o) OZONES="yes"; shift ;; - -u) ONEADMIN_USER="$2" ; shift 2;; - -g) ONEADMIN_GROUP="$2"; shift 2;; - -d) ROOT="$2" ; shift 2 ;; - --) shift ; break ;; - *) usage; exit 1 ;; - esac +case "$1" in +-h) usage; exit 0;; +-k) INSTALL_ETC="no" ; shift ;; +-r) UNINSTALL="yes" ; shift ;; +-l) LINK="yes" ; shift ;; +-c) CLIENT="yes"; INSTALL_ETC="no" ; shift ;; +-s) SUNSTONE="yes"; shift ;; +-o) OZONES="yes"; shift ;; +-u) ONEADMIN_USER="$2" ; shift 2;; +-g) ONEADMIN_GROUP="$2"; shift 2;; +-d) ROOT="$2" ; shift 2 ;; +--) shift ; break ;; +*) usage; exit 1 ;; +esac done #------------------------------------------------------------------------------- @@ -92,293 +92,293 @@ done CONF_LOCATION="$HOME/.one" if [ -z "$ROOT" ] ; then - BIN_LOCATION="/usr/bin" - LIB_LOCATION="/usr/lib/one" - ETC_LOCATION="/etc/one" - LOG_LOCATION="/var/log/one" - VAR_LOCATION="/var/lib/one" - SUNSTONE_LOCATION="$LIB_LOCATION/sunstone" - OZONES_LOCATION="$LIB_LOCATION/ozones" - SYSTEM_DS_LOCATION="$VAR_LOCATION/datastores/0" - DEFAULT_DS_LOCATION="$VAR_LOCATION/datastores/1" - RUN_LOCATION="/var/run/one" - LOCK_LOCATION="/var/lock/one" - INCLUDE_LOCATION="/usr/include" - SHARE_LOCATION="/usr/share/one" - MAN_LOCATION="/usr/share/man/man1" +BIN_LOCATION="/usr/bin" +LIB_LOCATION="/usr/lib/one" +ETC_LOCATION="/etc/one" +LOG_LOCATION="/var/log/one" +VAR_LOCATION="/var/lib/one" +SUNSTONE_LOCATION="$LIB_LOCATION/sunstone" +OZONES_LOCATION="$LIB_LOCATION/ozones" +SYSTEM_DS_LOCATION="$VAR_LOCATION/datastores/0" +DEFAULT_DS_LOCATION="$VAR_LOCATION/datastores/1" +RUN_LOCATION="/var/run/one" +LOCK_LOCATION="/var/lock/one" +INCLUDE_LOCATION="/usr/include" +SHARE_LOCATION="/usr/share/one" +MAN_LOCATION="/usr/share/man/man1" - if [ "$CLIENT" = "yes" ]; then - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION" +if [ "$CLIENT" = "yes" ]; then +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION" - DELETE_DIRS="" +DELETE_DIRS="" - CHOWN_DIRS="" - elif [ "$SUNSTONE" = "yes" ]; then - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION \ - $SUNSTONE_LOCATION $ETC_LOCATION" +CHOWN_DIRS="" +elif [ "$SUNSTONE" = "yes" ]; then +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION \ + $SUNSTONE_LOCATION $ETC_LOCATION" - DELETE_DIRS="$MAKE_DIRS" +DELETE_DIRS="$MAKE_DIRS" - CHOWN_DIRS="" - elif [ "$OZONES" = "yes" ]; then - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION $OZONES_LOCATION \ - $ETC_LOCATION" +CHOWN_DIRS="" +elif [ "$OZONES" = "yes" ]; then +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION $OZONES_LOCATION \ + $ETC_LOCATION" - DELETE_DIRS="$MAKE_DIRS" +DELETE_DIRS="$MAKE_DIRS" - CHOWN_DIRS="" - else - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION $VAR_LOCATION \ - $INCLUDE_LOCATION $SHARE_LOCATION \ - $LOG_LOCATION $RUN_LOCATION $LOCK_LOCATION \ - $SYSTEM_DS_LOCATION $DEFAULT_DS_LOCATION $MAN_LOCATION" +CHOWN_DIRS="" +else +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION $VAR_LOCATION \ + $INCLUDE_LOCATION $SHARE_LOCATION \ + $LOG_LOCATION $RUN_LOCATION $LOCK_LOCATION \ + $SYSTEM_DS_LOCATION $DEFAULT_DS_LOCATION $MAN_LOCATION" - DELETE_DIRS="$LIB_LOCATION $ETC_LOCATION $LOG_LOCATION $VAR_LOCATION \ - $RUN_LOCATION $SHARE_DIRS" +DELETE_DIRS="$LIB_LOCATION $ETC_LOCATION $LOG_LOCATION $VAR_LOCATION \ + $RUN_LOCATION $SHARE_DIRS" - CHOWN_DIRS="$LOG_LOCATION $VAR_LOCATION $RUN_LOCATION $LOCK_LOCATION" - fi +CHOWN_DIRS="$LOG_LOCATION $VAR_LOCATION $RUN_LOCATION $LOCK_LOCATION" +fi else - BIN_LOCATION="$ROOT/bin" - LIB_LOCATION="$ROOT/lib" - ETC_LOCATION="$ROOT/etc" - VAR_LOCATION="$ROOT/var" - SUNSTONE_LOCATION="$LIB_LOCATION/sunstone" - OZONES_LOCATION="$LIB_LOCATION/ozones" - SYSTEM_DS_LOCATION="$VAR_LOCATION/datastores/0" - DEFAULT_DS_LOCATION="$VAR_LOCATION/datastores/1" - INCLUDE_LOCATION="$ROOT/include" - SHARE_LOCATION="$ROOT/share" - MAN_LOCATION="$ROOT/share/man/man1" +BIN_LOCATION="$ROOT/bin" +LIB_LOCATION="$ROOT/lib" +ETC_LOCATION="$ROOT/etc" +VAR_LOCATION="$ROOT/var" +SUNSTONE_LOCATION="$LIB_LOCATION/sunstone" +OZONES_LOCATION="$LIB_LOCATION/ozones" +SYSTEM_DS_LOCATION="$VAR_LOCATION/datastores/0" +DEFAULT_DS_LOCATION="$VAR_LOCATION/datastores/1" +INCLUDE_LOCATION="$ROOT/include" +SHARE_LOCATION="$ROOT/share" +MAN_LOCATION="$ROOT/share/man/man1" - if [ "$CLIENT" = "yes" ]; then - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION" +if [ "$CLIENT" = "yes" ]; then +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION" - DELETE_DIRS="$MAKE_DIRS" - elif [ "$SUNSTONE" = "yes" ]; then - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION \ - $SUNSTONE_LOCATION $ETC_LOCATION" +DELETE_DIRS="$MAKE_DIRS" +elif [ "$SUNSTONE" = "yes" ]; then +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION \ + $SUNSTONE_LOCATION $ETC_LOCATION" - DELETE_DIRS="$MAKE_DIRS" - elif [ "$OZONES" = "yes" ]; then - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION $OZONES_LOCATION \ - $ETC_LOCATION" +DELETE_DIRS="$MAKE_DIRS" +elif [ "$OZONES" = "yes" ]; then +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $VAR_LOCATION $OZONES_LOCATION \ + $ETC_LOCATION" - DELETE_DIRS="$MAKE_DIRS" - else - MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION $VAR_LOCATION \ - $INCLUDE_LOCATION $SHARE_LOCATION $SYSTEM_DS_LOCATION \ - $DEFAULT_DS_LOCATION $MAN_LOCATION $OZONES_LOCATION" +DELETE_DIRS="$MAKE_DIRS" +else +MAKE_DIRS="$BIN_LOCATION $LIB_LOCATION $ETC_LOCATION $VAR_LOCATION \ + $INCLUDE_LOCATION $SHARE_LOCATION $SYSTEM_DS_LOCATION \ + $DEFAULT_DS_LOCATION $MAN_LOCATION $OZONES_LOCATION" - DELETE_DIRS="$MAKE_DIRS" +DELETE_DIRS="$MAKE_DIRS" - CHOWN_DIRS="$ROOT" - fi +CHOWN_DIRS="$ROOT" +fi - CHOWN_DIRS="$ROOT" +CHOWN_DIRS="$ROOT" fi SHARE_DIRS="$SHARE_LOCATION/examples" ETC_DIRS="$ETC_LOCATION/im_ec2 \ - $ETC_LOCATION/vmm_ec2 \ - $ETC_LOCATION/vmm_exec \ - $ETC_LOCATION/hm \ - $ETC_LOCATION/auth \ - $ETC_LOCATION/auth/certificates \ - $ETC_LOCATION/ec2query_templates \ - $ETC_LOCATION/occi_templates \ - $ETC_LOCATION/cli" + $ETC_LOCATION/vmm_ec2 \ + $ETC_LOCATION/vmm_exec \ + $ETC_LOCATION/hm \ + $ETC_LOCATION/auth \ + $ETC_LOCATION/auth/certificates \ + $ETC_LOCATION/ec2query_templates \ + $ETC_LOCATION/occi_templates \ + $ETC_LOCATION/cli" LIB_DIRS="$LIB_LOCATION/ruby \ - $LIB_LOCATION/ruby/OpenNebula \ - $LIB_LOCATION/ruby/zona \ - $LIB_LOCATION/ruby/cloud/ \ - $LIB_LOCATION/ruby/cloud/econe \ - $LIB_LOCATION/ruby/cloud/econe/views \ - $LIB_LOCATION/ruby/cloud/occi \ - $LIB_LOCATION/ruby/cloud/marketplace \ - $LIB_LOCATION/ruby/cloud/CloudAuth \ - $LIB_LOCATION/ruby/onedb \ - $LIB_LOCATION/mads \ - $LIB_LOCATION/sh \ - $LIB_LOCATION/ruby/cli \ - $LIB_LOCATION/ruby/cli/one_helper" + $LIB_LOCATION/ruby/OpenNebula \ + $LIB_LOCATION/ruby/zona \ + $LIB_LOCATION/ruby/cloud/ \ + $LIB_LOCATION/ruby/cloud/econe \ + $LIB_LOCATION/ruby/cloud/econe/views \ + $LIB_LOCATION/ruby/cloud/occi \ + $LIB_LOCATION/ruby/cloud/marketplace \ + $LIB_LOCATION/ruby/cloud/CloudAuth \ + $LIB_LOCATION/ruby/onedb \ + $LIB_LOCATION/mads \ + $LIB_LOCATION/sh \ + $LIB_LOCATION/ruby/cli \ + $LIB_LOCATION/ruby/cli/one_helper" VAR_DIRS="$VAR_LOCATION/remotes \ - $VAR_LOCATION/remotes/im \ - $VAR_LOCATION/remotes/im/kvm.d \ - $VAR_LOCATION/remotes/im/xen.d \ - $VAR_LOCATION/remotes/im/vmware.d \ - $VAR_LOCATION/remotes/im/ganglia.d \ - $VAR_LOCATION/remotes/vmm \ - $VAR_LOCATION/remotes/vmm/kvm \ - $VAR_LOCATION/remotes/vmm/xen \ - $VAR_LOCATION/remotes/vmm/vmware \ - $VAR_LOCATION/remotes/vnm \ - $VAR_LOCATION/remotes/vnm/802.1Q \ - $VAR_LOCATION/remotes/vnm/dummy \ - $VAR_LOCATION/remotes/vnm/ebtables \ - $VAR_LOCATION/remotes/vnm/fw \ - $VAR_LOCATION/remotes/vnm/ovswitch \ - $VAR_LOCATION/remotes/vnm/vmware \ - $VAR_LOCATION/remotes/tm/ \ - $VAR_LOCATION/remotes/tm/dummy \ - $VAR_LOCATION/remotes/tm/shared \ - $VAR_LOCATION/remotes/tm/qcow2 \ - $VAR_LOCATION/remotes/tm/ssh \ - $VAR_LOCATION/remotes/tm/vmfs \ - $VAR_LOCATION/remotes/tm/iscsi \ - $VAR_LOCATION/remotes/tm/lvm \ - $VAR_LOCATION/remotes/hooks \ - $VAR_LOCATION/remotes/hooks/ft \ - $VAR_LOCATION/remotes/datastore \ - $VAR_LOCATION/remotes/datastore/dummy \ - $VAR_LOCATION/remotes/datastore/fs \ - $VAR_LOCATION/remotes/datastore/vmware \ - $VAR_LOCATION/remotes/datastore/vmfs \ - $VAR_LOCATION/remotes/datastore/iscsi \ - $VAR_LOCATION/remotes/datastore/lvm \ - $VAR_LOCATION/remotes/auth \ - $VAR_LOCATION/remotes/auth/plain \ - $VAR_LOCATION/remotes/auth/ssh \ - $VAR_LOCATION/remotes/auth/x509 \ - $VAR_LOCATION/remotes/auth/ldap \ - $VAR_LOCATION/remotes/auth/server_x509 \ - $VAR_LOCATION/remotes/auth/server_cipher \ - $VAR_LOCATION/remotes/auth/dummy" + $VAR_LOCATION/remotes/im \ + $VAR_LOCATION/remotes/im/kvm.d \ + $VAR_LOCATION/remotes/im/xen.d \ + $VAR_LOCATION/remotes/im/vmware.d \ + $VAR_LOCATION/remotes/im/ganglia.d \ + $VAR_LOCATION/remotes/vmm \ + $VAR_LOCATION/remotes/vmm/kvm \ + $VAR_LOCATION/remotes/vmm/xen \ + $VAR_LOCATION/remotes/vmm/vmware \ + $VAR_LOCATION/remotes/vnm \ + $VAR_LOCATION/remotes/vnm/802.1Q \ + $VAR_LOCATION/remotes/vnm/dummy \ + $VAR_LOCATION/remotes/vnm/ebtables \ + $VAR_LOCATION/remotes/vnm/fw \ + $VAR_LOCATION/remotes/vnm/ovswitch \ + $VAR_LOCATION/remotes/vnm/vmware \ + $VAR_LOCATION/remotes/tm/ \ + $VAR_LOCATION/remotes/tm/dummy \ + $VAR_LOCATION/remotes/tm/shared \ + $VAR_LOCATION/remotes/tm/qcow2 \ + $VAR_LOCATION/remotes/tm/ssh \ + $VAR_LOCATION/remotes/tm/vmfs \ + $VAR_LOCATION/remotes/tm/iscsi \ + $VAR_LOCATION/remotes/tm/lvm \ + $VAR_LOCATION/remotes/hooks \ + $VAR_LOCATION/remotes/hooks/ft \ + $VAR_LOCATION/remotes/datastore \ + $VAR_LOCATION/remotes/datastore/dummy \ + $VAR_LOCATION/remotes/datastore/fs \ + $VAR_LOCATION/remotes/datastore/vmware \ + $VAR_LOCATION/remotes/datastore/vmfs \ + $VAR_LOCATION/remotes/datastore/iscsi \ + $VAR_LOCATION/remotes/datastore/lvm \ + $VAR_LOCATION/remotes/auth \ + $VAR_LOCATION/remotes/auth/plain \ + $VAR_LOCATION/remotes/auth/ssh \ + $VAR_LOCATION/remotes/auth/x509 \ + $VAR_LOCATION/remotes/auth/ldap \ + $VAR_LOCATION/remotes/auth/server_x509 \ + $VAR_LOCATION/remotes/auth/server_cipher \ + $VAR_LOCATION/remotes/auth/dummy" SUNSTONE_DIRS="$SUNSTONE_LOCATION/routes \ - $SUNSTONE_LOCATION/models \ - $SUNSTONE_LOCATION/models/OpenNebulaJSON \ - $SUNSTONE_LOCATION/public \ - $SUNSTONE_LOCATION/public/js \ - $SUNSTONE_LOCATION/public/js/plugins \ - $SUNSTONE_LOCATION/public/js/user-plugins \ - $SUNSTONE_LOCATION/public/css \ - $SUNSTONE_LOCATION/public/locale \ - $SUNSTONE_LOCATION/public/locale/en_US \ - $SUNSTONE_LOCATION/public/locale/fa_IR \ - $SUNSTONE_LOCATION/public/locale/fr_FR \ - $SUNSTONE_LOCATION/public/locale/it_IT \ - $SUNSTONE_LOCATION/public/locale/pt_PT \ - $SUNSTONE_LOCATION/public/locale/ru \ - $SUNSTONE_LOCATION/public/locale/sk_SK \ - $SUNSTONE_LOCATION/public/locale/zh_TW \ - $SUNSTONE_LOCATION/public/vendor \ - $SUNSTONE_LOCATION/public/vendor/crypto-js \ - $SUNSTONE_LOCATION/public/vendor/explorercanvas \ - $SUNSTONE_LOCATION/public/vendor/jQueryLayout \ - $SUNSTONE_LOCATION/public/vendor/dataTables \ - $SUNSTONE_LOCATION/public/vendor/jQueryUI \ - $SUNSTONE_LOCATION/public/vendor/jQueryUI/images \ - $SUNSTONE_LOCATION/public/vendor/jQuery \ - $SUNSTONE_LOCATION/public/vendor/jGrowl \ - $SUNSTONE_LOCATION/public/vendor/flot \ - $SUNSTONE_LOCATION/public/vendor/fileuploader \ - $SUNSTONE_LOCATION/public/vendor/FontAwesome \ - $SUNSTONE_LOCATION/public/vendor/FontAwesome/css \ - $SUNSTONE_LOCATION/public/vendor/FontAwesome/font \ - $SUNSTONE_LOCATION/public/images \ - $SUNSTONE_LOCATION/views" + $SUNSTONE_LOCATION/models \ + $SUNSTONE_LOCATION/models/OpenNebulaJSON \ + $SUNSTONE_LOCATION/public \ + $SUNSTONE_LOCATION/public/js \ + $SUNSTONE_LOCATION/public/js/plugins \ + $SUNSTONE_LOCATION/public/js/user-plugins \ + $SUNSTONE_LOCATION/public/css \ + $SUNSTONE_LOCATION/public/locale \ + $SUNSTONE_LOCATION/public/locale/en_US \ + $SUNSTONE_LOCATION/public/locale/fa_IR \ + $SUNSTONE_LOCATION/public/locale/fr_FR \ + $SUNSTONE_LOCATION/public/locale/it_IT \ + $SUNSTONE_LOCATION/public/locale/pt_PT \ + $SUNSTONE_LOCATION/public/locale/ru_RU \ + $SUNSTONE_LOCATION/public/locale/sk_SK \ + $SUNSTONE_LOCATION/public/locale/zh_TW \ + $SUNSTONE_LOCATION/public/vendor \ + $SUNSTONE_LOCATION/public/vendor/crypto-js \ + $SUNSTONE_LOCATION/public/vendor/explorercanvas \ + $SUNSTONE_LOCATION/public/vendor/jQueryLayout \ + $SUNSTONE_LOCATION/public/vendor/dataTables \ + $SUNSTONE_LOCATION/public/vendor/jQueryUI \ + $SUNSTONE_LOCATION/public/vendor/jQueryUI/images \ + $SUNSTONE_LOCATION/public/vendor/jQuery \ + $SUNSTONE_LOCATION/public/vendor/jGrowl \ + $SUNSTONE_LOCATION/public/vendor/flot \ + $SUNSTONE_LOCATION/public/vendor/fileuploader \ + $SUNSTONE_LOCATION/public/vendor/FontAwesome \ + $SUNSTONE_LOCATION/public/vendor/FontAwesome/css \ + $SUNSTONE_LOCATION/public/vendor/FontAwesome/font \ + $SUNSTONE_LOCATION/public/images \ + $SUNSTONE_LOCATION/views" OZONES_DIRS="$OZONES_LOCATION/lib \ - $OZONES_LOCATION/lib/OZones \ - $OZONES_LOCATION/models \ - $OZONES_LOCATION/templates \ - $OZONES_LOCATION/public \ - $OZONES_LOCATION/public/vendor \ - $OZONES_LOCATION/public/vendor/crypto-js \ - $OZONES_LOCATION/public/vendor/jQuery \ - $OZONES_LOCATION/public/vendor/jQueryLayout \ - $OZONES_LOCATION/public/vendor/dataTables \ - $OZONES_LOCATION/public/vendor/jQueryUI \ - $OZONES_LOCATION/public/vendor/jQueryUI/images \ - $OZONES_LOCATION/public/vendor/jGrowl \ - $OZONES_LOCATION/public/vendor/FontAwesome \ - $OZONES_LOCATION/public/vendor/FontAwesome/css \ - $OZONES_LOCATION/public/vendor/FontAwesome/font \ - $OZONES_LOCATION/public/js \ - $OZONES_LOCATION/public/js/plugins \ - $OZONES_LOCATION/public/images \ - $OZONES_LOCATION/public/css" + $OZONES_LOCATION/lib/OZones \ + $OZONES_LOCATION/models \ + $OZONES_LOCATION/templates \ + $OZONES_LOCATION/public \ + $OZONES_LOCATION/public/vendor \ + $OZONES_LOCATION/public/vendor/crypto-js \ + $OZONES_LOCATION/public/vendor/jQuery \ + $OZONES_LOCATION/public/vendor/jQueryLayout \ + $OZONES_LOCATION/public/vendor/dataTables \ + $OZONES_LOCATION/public/vendor/jQueryUI \ + $OZONES_LOCATION/public/vendor/jQueryUI/images \ + $OZONES_LOCATION/public/vendor/jGrowl \ + $OZONES_LOCATION/public/vendor/FontAwesome \ + $OZONES_LOCATION/public/vendor/FontAwesome/css \ + $OZONES_LOCATION/public/vendor/FontAwesome/font \ + $OZONES_LOCATION/public/js \ + $OZONES_LOCATION/public/js/plugins \ + $OZONES_LOCATION/public/images \ + $OZONES_LOCATION/public/css" SELF_SERVICE_DIRS="\ - $LIB_LOCATION/ruby/cloud/occi/ui \ - $LIB_LOCATION/ruby/cloud/occi/ui/templates \ - $LIB_LOCATION/ruby/cloud/occi/ui/views \ - $LIB_LOCATION/ruby/cloud/occi/ui/public \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/css \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/customize \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/images \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/js \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/js/plugins \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/en_US \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/de \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/es_ES \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fa_IR \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_CA \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_FR \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/it_IT \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_BR \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_PT \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/sk_SK \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/zh_TW \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryLayout \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/dataTables \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI/images \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQuery \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jGrowl \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/flot \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/crypto-js \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/fileuploader \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/xml2json \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/css \ - $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/font" + $LIB_LOCATION/ruby/cloud/occi/ui \ + $LIB_LOCATION/ruby/cloud/occi/ui/templates \ + $LIB_LOCATION/ruby/cloud/occi/ui/views \ + $LIB_LOCATION/ruby/cloud/occi/ui/public \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/css \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/customize \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/images \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/js \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/js/plugins \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/en_US \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/de \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/es_ES \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fa_IR \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_CA \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_FR \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/it_IT \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_BR \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_PT \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/sk_SK \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/locale/zh_TW \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryLayout \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/dataTables \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI/images \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQuery \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jGrowl \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/flot \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/crypto-js \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/fileuploader \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/xml2json \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/css \ + $LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/font" OZONES_CLIENT_DIRS="$LIB_LOCATION/ruby \ - $LIB_LOCATION/ruby/OpenNebula \ - $LIB_LOCATION/ruby/cli \ - $LIB_LOCATION/ruby/cli/ozones_helper \ - $LIB_LOCATION/ruby/zona" + $LIB_LOCATION/ruby/OpenNebula \ + $LIB_LOCATION/ruby/cli \ + $LIB_LOCATION/ruby/cli/ozones_helper \ + $LIB_LOCATION/ruby/zona" LIB_ECO_CLIENT_DIRS="$LIB_LOCATION/ruby \ - $LIB_LOCATION/ruby/OpenNebula \ - $LIB_LOCATION/ruby/cloud/ \ - $LIB_LOCATION/ruby/cloud/econe" + $LIB_LOCATION/ruby/OpenNebula \ + $LIB_LOCATION/ruby/cloud/ \ + $LIB_LOCATION/ruby/cloud/econe" LIB_OCCI_CLIENT_DIRS="$LIB_LOCATION/ruby \ - $LIB_LOCATION/ruby/OpenNebula \ - $LIB_LOCATION/ruby/cloud/occi" + $LIB_LOCATION/ruby/OpenNebula \ + $LIB_LOCATION/ruby/cloud/occi" LIB_MARKET_CLIENT_DIRS="$LIB_LOCATION/ruby \ - $LIB_LOCATION/ruby/OpenNebula \ - $LIB_LOCATION/ruby/cloud/marketplace" + $LIB_LOCATION/ruby/OpenNebula \ + $LIB_LOCATION/ruby/cloud/marketplace" LIB_OCA_CLIENT_DIRS="$LIB_LOCATION/ruby \ - $LIB_LOCATION/ruby/OpenNebula" + $LIB_LOCATION/ruby/OpenNebula" LIB_CLI_CLIENT_DIRS="$LIB_LOCATION/ruby/cli \ - $LIB_LOCATION/ruby/cli/one_helper" + $LIB_LOCATION/ruby/cli/one_helper" CONF_CLI_DIRS="$ETC_LOCATION/cli" if [ "$CLIENT" = "yes" ]; then - MAKE_DIRS="$MAKE_DIRS $LIB_ECO_CLIENT_DIRS $LIB_OCCI_CLIENT_DIRS $LIB_MARKET_CLIENT_DIRS \ - $LIB_OCA_CLIENT_DIRS $LIB_CLI_CLIENT_DIRS $CONF_CLI_DIRS \ - $ETC_LOCATION $OZONES_CLIENT_DIRS $SELF_SERVICE_DIRS" +MAKE_DIRS="$MAKE_DIRS $LIB_ECO_CLIENT_DIRS $LIB_OCCI_CLIENT_DIRS $LIB_MARKET_CLIENT_DIRS \ + $LIB_OCA_CLIENT_DIRS $LIB_CLI_CLIENT_DIRS $CONF_CLI_DIRS \ + $ETC_LOCATION $OZONES_CLIENT_DIRS $SELF_SERVICE_DIRS" elif [ "$SUNSTONE" = "yes" ]; then - MAKE_DIRS="$MAKE_DIRS $SUNSTONE_DIRS $LIB_OCA_CLIENT_DIRS" +MAKE_DIRS="$MAKE_DIRS $SUNSTONE_DIRS $LIB_OCA_CLIENT_DIRS" elif [ "$OZONES" = "yes" ]; then - MAKE_DIRS="$MAKE_DIRS $OZONES_DIRS $OZONES_CLIENT_DIRS $LIB_OCA_CLIENT_DIRS" +MAKE_DIRS="$MAKE_DIRS $OZONES_DIRS $OZONES_CLIENT_DIRS $LIB_OCA_CLIENT_DIRS" else - MAKE_DIRS="$MAKE_DIRS $SHARE_DIRS $ETC_DIRS $LIB_DIRS $VAR_DIRS \ - $OZONES_DIRS $OZONES_CLIENT_DIRS $SUNSTONE_DIRS $SELF_SERVICE_DIRS" +MAKE_DIRS="$MAKE_DIRS $SHARE_DIRS $ETC_DIRS $LIB_DIRS $VAR_DIRS \ + $OZONES_DIRS $OZONES_CLIENT_DIRS $SUNSTONE_DIRS $SELF_SERVICE_DIRS" fi #------------------------------------------------------------------------------- @@ -387,221 +387,221 @@ fi #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- INSTALL_FILES=( - BIN_FILES:$BIN_LOCATION - INCLUDE_FILES:$INCLUDE_LOCATION - LIB_FILES:$LIB_LOCATION - RUBY_LIB_FILES:$LIB_LOCATION/ruby - RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula - MAD_RUBY_LIB_FILES:$LIB_LOCATION/ruby - MAD_RUBY_LIB_FILES:$VAR_LOCATION/remotes - MAD_SH_LIB_FILES:$LIB_LOCATION/sh - MAD_SH_LIB_FILES:$VAR_LOCATION/remotes - ONEDB_MIGRATOR_FILES:$LIB_LOCATION/ruby/onedb - MADS_LIB_FILES:$LIB_LOCATION/mads - IM_PROBES_FILES:$VAR_LOCATION/remotes/im - IM_PROBES_KVM_FILES:$VAR_LOCATION/remotes/im/kvm.d - IM_PROBES_XEN_FILES:$VAR_LOCATION/remotes/im/xen.d - IM_PROBES_VMWARE_FILES:$VAR_LOCATION/remotes/im/vmware.d - IM_PROBES_GANGLIA_FILES:$VAR_LOCATION/remotes/im/ganglia.d - AUTH_SSH_FILES:$VAR_LOCATION/remotes/auth/ssh - AUTH_X509_FILES:$VAR_LOCATION/remotes/auth/x509 - AUTH_LDAP_FILES:$VAR_LOCATION/remotes/auth/ldap - AUTH_SERVER_X509_FILES:$VAR_LOCATION/remotes/auth/server_x509 - AUTH_SERVER_CIPHER_FILES:$VAR_LOCATION/remotes/auth/server_cipher - AUTH_DUMMY_FILES:$VAR_LOCATION/remotes/auth/dummy - AUTH_PLAIN_FILES:$VAR_LOCATION/remotes/auth/plain - VMM_EXEC_KVM_SCRIPTS:$VAR_LOCATION/remotes/vmm/kvm - VMM_EXEC_XEN_SCRIPTS:$VAR_LOCATION/remotes/vmm/xen - VMM_EXEC_VMWARE_SCRIPTS:$VAR_LOCATION/remotes/vmm/vmware - TM_FILES:$VAR_LOCATION/remotes/tm - TM_SHARED_FILES:$VAR_LOCATION/remotes/tm/shared - TM_QCOW2_FILES:$VAR_LOCATION/remotes/tm/qcow2 - TM_SSH_FILES:$VAR_LOCATION/remotes/tm/ssh - TM_VMFS_FILES:$VAR_LOCATION/remotes/tm/vmfs - TM_ISCSI_FILES:$VAR_LOCATION/remotes/tm/iscsi - TM_LVM_FILES:$VAR_LOCATION/remotes/tm/lvm - TM_DUMMY_FILES:$VAR_LOCATION/remotes/tm/dummy - DATASTORE_DRIVER_COMMON_SCRIPTS:$VAR_LOCATION/remotes/datastore/ - DATASTORE_DRIVER_DUMMY_SCRIPTS:$VAR_LOCATION/remotes/datastore/dummy - DATASTORE_DRIVER_FS_SCRIPTS:$VAR_LOCATION/remotes/datastore/fs - DATASTORE_DRIVER_VMWARE_SCRIPTS:$VAR_LOCATION/remotes/datastore/vmware - DATASTORE_DRIVER_VMFS_SCRIPTS:$VAR_LOCATION/remotes/datastore/vmfs - DATASTORE_DRIVER_ISCSI_SCRIPTS:$VAR_LOCATION/remotes/datastore/iscsi - DATASTORE_DRIVER_LVM_SCRIPTS:$VAR_LOCATION/remotes/datastore/lvm - NETWORK_FILES:$VAR_LOCATION/remotes/vnm - NETWORK_8021Q_FILES:$VAR_LOCATION/remotes/vnm/802.1Q - NETWORK_DUMMY_FILES:$VAR_LOCATION/remotes/vnm/dummy - NETWORK_EBTABLES_FILES:$VAR_LOCATION/remotes/vnm/ebtables - NETWORK_FW_FILES:$VAR_LOCATION/remotes/vnm/fw - NETWORK_OVSWITCH_FILES:$VAR_LOCATION/remotes/vnm/ovswitch - NETWORK_VMWARE_FILES:$VAR_LOCATION/remotes/vnm/vmware - EXAMPLE_SHARE_FILES:$SHARE_LOCATION/examples - INSTALL_NOVNC_SHARE_FILE:$SHARE_LOCATION - INSTALL_GEMS_SHARE_FILE:$SHARE_LOCATION - HOOK_FT_FILES:$VAR_LOCATION/remotes/hooks/ft - COMMON_CLOUD_LIB_FILES:$LIB_LOCATION/ruby/cloud - CLOUD_AUTH_LIB_FILES:$LIB_LOCATION/ruby/cloud/CloudAuth - ECO_LIB_FILES:$LIB_LOCATION/ruby/cloud/econe - ECO_LIB_VIEW_FILES:$LIB_LOCATION/ruby/cloud/econe/views - ECO_BIN_FILES:$BIN_LOCATION - OCCI_LIB_FILES:$LIB_LOCATION/ruby/cloud/occi - OCCI_BIN_FILES:$BIN_LOCATION - MARKET_LIB_FILES:$LIB_LOCATION/ruby/cloud/marketplace - MARKET_BIN_FILES:$BIN_LOCATION - MAN_FILES:$MAN_LOCATION - CLI_LIB_FILES:$LIB_LOCATION/ruby/cli - ONE_CLI_LIB_FILES:$LIB_LOCATION/ruby/cli/one_helper +BIN_FILES:$BIN_LOCATION +INCLUDE_FILES:$INCLUDE_LOCATION +LIB_FILES:$LIB_LOCATION +RUBY_LIB_FILES:$LIB_LOCATION/ruby +RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula +MAD_RUBY_LIB_FILES:$LIB_LOCATION/ruby +MAD_RUBY_LIB_FILES:$VAR_LOCATION/remotes +MAD_SH_LIB_FILES:$LIB_LOCATION/sh +MAD_SH_LIB_FILES:$VAR_LOCATION/remotes +ONEDB_MIGRATOR_FILES:$LIB_LOCATION/ruby/onedb +MADS_LIB_FILES:$LIB_LOCATION/mads +IM_PROBES_FILES:$VAR_LOCATION/remotes/im +IM_PROBES_KVM_FILES:$VAR_LOCATION/remotes/im/kvm.d +IM_PROBES_XEN_FILES:$VAR_LOCATION/remotes/im/xen.d +IM_PROBES_VMWARE_FILES:$VAR_LOCATION/remotes/im/vmware.d +IM_PROBES_GANGLIA_FILES:$VAR_LOCATION/remotes/im/ganglia.d +AUTH_SSH_FILES:$VAR_LOCATION/remotes/auth/ssh +AUTH_X509_FILES:$VAR_LOCATION/remotes/auth/x509 +AUTH_LDAP_FILES:$VAR_LOCATION/remotes/auth/ldap +AUTH_SERVER_X509_FILES:$VAR_LOCATION/remotes/auth/server_x509 +AUTH_SERVER_CIPHER_FILES:$VAR_LOCATION/remotes/auth/server_cipher +AUTH_DUMMY_FILES:$VAR_LOCATION/remotes/auth/dummy +AUTH_PLAIN_FILES:$VAR_LOCATION/remotes/auth/plain +VMM_EXEC_KVM_SCRIPTS:$VAR_LOCATION/remotes/vmm/kvm +VMM_EXEC_XEN_SCRIPTS:$VAR_LOCATION/remotes/vmm/xen +VMM_EXEC_VMWARE_SCRIPTS:$VAR_LOCATION/remotes/vmm/vmware +TM_FILES:$VAR_LOCATION/remotes/tm +TM_SHARED_FILES:$VAR_LOCATION/remotes/tm/shared +TM_QCOW2_FILES:$VAR_LOCATION/remotes/tm/qcow2 +TM_SSH_FILES:$VAR_LOCATION/remotes/tm/ssh +TM_VMFS_FILES:$VAR_LOCATION/remotes/tm/vmfs +TM_ISCSI_FILES:$VAR_LOCATION/remotes/tm/iscsi +TM_LVM_FILES:$VAR_LOCATION/remotes/tm/lvm +TM_DUMMY_FILES:$VAR_LOCATION/remotes/tm/dummy +DATASTORE_DRIVER_COMMON_SCRIPTS:$VAR_LOCATION/remotes/datastore/ +DATASTORE_DRIVER_DUMMY_SCRIPTS:$VAR_LOCATION/remotes/datastore/dummy +DATASTORE_DRIVER_FS_SCRIPTS:$VAR_LOCATION/remotes/datastore/fs +DATASTORE_DRIVER_VMWARE_SCRIPTS:$VAR_LOCATION/remotes/datastore/vmware +DATASTORE_DRIVER_VMFS_SCRIPTS:$VAR_LOCATION/remotes/datastore/vmfs +DATASTORE_DRIVER_ISCSI_SCRIPTS:$VAR_LOCATION/remotes/datastore/iscsi +DATASTORE_DRIVER_LVM_SCRIPTS:$VAR_LOCATION/remotes/datastore/lvm +NETWORK_FILES:$VAR_LOCATION/remotes/vnm +NETWORK_8021Q_FILES:$VAR_LOCATION/remotes/vnm/802.1Q +NETWORK_DUMMY_FILES:$VAR_LOCATION/remotes/vnm/dummy +NETWORK_EBTABLES_FILES:$VAR_LOCATION/remotes/vnm/ebtables +NETWORK_FW_FILES:$VAR_LOCATION/remotes/vnm/fw +NETWORK_OVSWITCH_FILES:$VAR_LOCATION/remotes/vnm/ovswitch +NETWORK_VMWARE_FILES:$VAR_LOCATION/remotes/vnm/vmware +EXAMPLE_SHARE_FILES:$SHARE_LOCATION/examples +INSTALL_NOVNC_SHARE_FILE:$SHARE_LOCATION +INSTALL_GEMS_SHARE_FILE:$SHARE_LOCATION +HOOK_FT_FILES:$VAR_LOCATION/remotes/hooks/ft +COMMON_CLOUD_LIB_FILES:$LIB_LOCATION/ruby/cloud +CLOUD_AUTH_LIB_FILES:$LIB_LOCATION/ruby/cloud/CloudAuth +ECO_LIB_FILES:$LIB_LOCATION/ruby/cloud/econe +ECO_LIB_VIEW_FILES:$LIB_LOCATION/ruby/cloud/econe/views +ECO_BIN_FILES:$BIN_LOCATION +OCCI_LIB_FILES:$LIB_LOCATION/ruby/cloud/occi +OCCI_BIN_FILES:$BIN_LOCATION +MARKET_LIB_FILES:$LIB_LOCATION/ruby/cloud/marketplace +MARKET_BIN_FILES:$BIN_LOCATION +MAN_FILES:$MAN_LOCATION +CLI_LIB_FILES:$LIB_LOCATION/ruby/cli +ONE_CLI_LIB_FILES:$LIB_LOCATION/ruby/cli/one_helper ) INSTALL_CLIENT_FILES=( - COMMON_CLOUD_CLIENT_LIB_FILES:$LIB_LOCATION/ruby/cloud - ECO_LIB_CLIENT_FILES:$LIB_LOCATION/ruby/cloud/econe - ECO_BIN_CLIENT_FILES:$BIN_LOCATION - COMMON_CLOUD_CLIENT_LIB_FILES:$LIB_LOCATION/ruby/cloud - OCCI_LIB_CLIENT_FILES:$LIB_LOCATION/ruby/cloud/occi - OCCI_BIN_CLIENT_FILES:$BIN_LOCATION - MARKET_LIB_CLIENT_FILES:$LIB_LOCATION/ruby/cloud/marketplace - MARKET_BIN_CLIENT_FILES:$BIN_LOCATION - CLI_BIN_FILES:$BIN_LOCATION - CLI_LIB_FILES:$LIB_LOCATION/ruby/cli - ONE_CLI_LIB_FILES:$LIB_LOCATION/ruby/cli/one_helper - ETC_CLIENT_FILES:$ETC_LOCATION - OZONES_BIN_CLIENT_FILES:$BIN_LOCATION - OZONES_LIB_CLIENT_CLI_FILES:$LIB_LOCATION/ruby/cli - OZONES_LIB_CLIENT_CLI_HELPER_FILES:$LIB_LOCATION/ruby/cli/ozones_helper - OZONES_LIB_API_FILES:$LIB_LOCATION/ruby - OZONES_LIB_API_ZONA_FILES:$LIB_LOCATION/ruby/zona - CLI_CONF_FILES:$ETC_LOCATION/cli - OCA_LIB_FILES:$LIB_LOCATION/ruby - RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula +COMMON_CLOUD_CLIENT_LIB_FILES:$LIB_LOCATION/ruby/cloud +ECO_LIB_CLIENT_FILES:$LIB_LOCATION/ruby/cloud/econe +ECO_BIN_CLIENT_FILES:$BIN_LOCATION +COMMON_CLOUD_CLIENT_LIB_FILES:$LIB_LOCATION/ruby/cloud +OCCI_LIB_CLIENT_FILES:$LIB_LOCATION/ruby/cloud/occi +OCCI_BIN_CLIENT_FILES:$BIN_LOCATION +MARKET_LIB_CLIENT_FILES:$LIB_LOCATION/ruby/cloud/marketplace +MARKET_BIN_CLIENT_FILES:$BIN_LOCATION +CLI_BIN_FILES:$BIN_LOCATION +CLI_LIB_FILES:$LIB_LOCATION/ruby/cli +ONE_CLI_LIB_FILES:$LIB_LOCATION/ruby/cli/one_helper +ETC_CLIENT_FILES:$ETC_LOCATION +OZONES_BIN_CLIENT_FILES:$BIN_LOCATION +OZONES_LIB_CLIENT_CLI_FILES:$LIB_LOCATION/ruby/cli +OZONES_LIB_CLIENT_CLI_HELPER_FILES:$LIB_LOCATION/ruby/cli/ozones_helper +OZONES_LIB_API_FILES:$LIB_LOCATION/ruby +OZONES_LIB_API_ZONA_FILES:$LIB_LOCATION/ruby/zona +CLI_CONF_FILES:$ETC_LOCATION/cli +OCA_LIB_FILES:$LIB_LOCATION/ruby +RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula ) INSTALL_SUNSTONE_RUBY_FILES=( - RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula - OCA_LIB_FILES:$LIB_LOCATION/ruby +RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula +OCA_LIB_FILES:$LIB_LOCATION/ruby ) INSTALL_SUNSTONE_FILES=( - SUNSTONE_FILES:$SUNSTONE_LOCATION - SUNSTONE_BIN_FILES:$BIN_LOCATION - SUNSTONE_MODELS_FILES:$SUNSTONE_LOCATION/models - SUNSTONE_MODELS_JSON_FILES:$SUNSTONE_LOCATION/models/OpenNebulaJSON - SUNSTONE_VIEWS_FILES:$SUNSTONE_LOCATION/views - SUNSTONE_PUBLIC_JS_FILES:$SUNSTONE_LOCATION/public/js - SUNSTONE_PUBLIC_JS_PLUGINS_FILES:$SUNSTONE_LOCATION/public/js/plugins - SUNSTONE_PUBLIC_CSS_FILES:$SUNSTONE_LOCATION/public/css - SUNSTONE_PUBLIC_VENDOR_CRYPTOJS:$SUNSTONE_LOCATION/public/vendor/crypto-js - SUNSTONE_PUBLIC_VENDOR_EXPLORERCANVAS:$SUNSTONE_LOCATION/public/vendor/explorercanvas - SUNSTONE_PUBLIC_VENDOR_DATATABLES:$SUNSTONE_LOCATION/public/vendor/dataTables - SUNSTONE_PUBLIC_VENDOR_JGROWL:$SUNSTONE_LOCATION/public/vendor/jGrowl - SUNSTONE_PUBLIC_VENDOR_JQUERY:$SUNSTONE_LOCATION/public/vendor/jQuery - SUNSTONE_PUBLIC_VENDOR_JQUERYUI:$SUNSTONE_LOCATION/public/vendor/jQueryUI - SUNSTONE_PUBLIC_VENDOR_JQUERYUIIMAGES:$SUNSTONE_LOCATION/public/vendor/jQueryUI/images - SUNSTONE_PUBLIC_VENDOR_JQUERYLAYOUT:$SUNSTONE_LOCATION/public/vendor/jQueryLayout - SUNSTONE_PUBLIC_VENDOR_FLOT:$SUNSTONE_LOCATION/public/vendor/flot - SUNSTONE_PUBLIC_VENDOR_FILEUPLOADER:$SUNSTONE_LOCATION/public/vendor/fileuploader - SUNSTONE_PUBLIC_VENDOR_FONTAWESOME:$SUNSTONE_LOCATION/public/vendor/FontAwesome - SUNSTONE_PUBLIC_VENDOR_FONTAWESOME_FONT:$SUNSTONE_LOCATION/public/vendor/FontAwesome/font - SUNSTONE_PUBLIC_VENDOR_FONTAWESOME_CSS:$SUNSTONE_LOCATION/public/vendor/FontAwesome/css - SUNSTONE_PUBLIC_IMAGES_FILES:$SUNSTONE_LOCATION/public/images - SUNSTONE_PUBLIC_LOCALE_EN_US:$SUNSTONE_LOCATION/public/locale/en_US - SUNSTONE_PUBLIC_LOCALE_FA_IR:$SUNSTONE_LOCATION/public/locale/fa_IR - SUNSTONE_PUBLIC_LOCALE_FR_FR:$SUNSTONE_LOCATION/public/locale/fr_FR - SUNSTONE_PUBLIC_LOCALE_IT_IT:$SUNSTONE_LOCATION/public/locale/it_IT - SUNSTONE_PUBLIC_LOCALE_PT_PT:$SUNSTONE_LOCATION/public/locale/pt_PT - SUNSTONE_PUBLIC_LOCALE_RU:$SUNSTONE_LOCATION/public/locale/ru - SUNSTONE_PUBLIC_LOCALE_SK_SK:$SUNSTONE_LOCATION/public/locale/sk_SK - SUNSTONE_PUBLIC_LOCALE_ZH_TW:$SUNSTONE_LOCATION/public/locale/zh_TW +SUNSTONE_FILES:$SUNSTONE_LOCATION +SUNSTONE_BIN_FILES:$BIN_LOCATION +SUNSTONE_MODELS_FILES:$SUNSTONE_LOCATION/models +SUNSTONE_MODELS_JSON_FILES:$SUNSTONE_LOCATION/models/OpenNebulaJSON +SUNSTONE_VIEWS_FILES:$SUNSTONE_LOCATION/views +SUNSTONE_PUBLIC_JS_FILES:$SUNSTONE_LOCATION/public/js +SUNSTONE_PUBLIC_JS_PLUGINS_FILES:$SUNSTONE_LOCATION/public/js/plugins +SUNSTONE_PUBLIC_CSS_FILES:$SUNSTONE_LOCATION/public/css +SUNSTONE_PUBLIC_VENDOR_CRYPTOJS:$SUNSTONE_LOCATION/public/vendor/crypto-js +SUNSTONE_PUBLIC_VENDOR_EXPLORERCANVAS:$SUNSTONE_LOCATION/public/vendor/explorercanvas +SUNSTONE_PUBLIC_VENDOR_DATATABLES:$SUNSTONE_LOCATION/public/vendor/dataTables +SUNSTONE_PUBLIC_VENDOR_JGROWL:$SUNSTONE_LOCATION/public/vendor/jGrowl +SUNSTONE_PUBLIC_VENDOR_JQUERY:$SUNSTONE_LOCATION/public/vendor/jQuery +SUNSTONE_PUBLIC_VENDOR_JQUERYUI:$SUNSTONE_LOCATION/public/vendor/jQueryUI +SUNSTONE_PUBLIC_VENDOR_JQUERYUIIMAGES:$SUNSTONE_LOCATION/public/vendor/jQueryUI/images +SUNSTONE_PUBLIC_VENDOR_JQUERYLAYOUT:$SUNSTONE_LOCATION/public/vendor/jQueryLayout +SUNSTONE_PUBLIC_VENDOR_FLOT:$SUNSTONE_LOCATION/public/vendor/flot +SUNSTONE_PUBLIC_VENDOR_FILEUPLOADER:$SUNSTONE_LOCATION/public/vendor/fileuploader +SUNSTONE_PUBLIC_VENDOR_FONTAWESOME:$SUNSTONE_LOCATION/public/vendor/FontAwesome +SUNSTONE_PUBLIC_VENDOR_FONTAWESOME_FONT:$SUNSTONE_LOCATION/public/vendor/FontAwesome/font +SUNSTONE_PUBLIC_VENDOR_FONTAWESOME_CSS:$SUNSTONE_LOCATION/public/vendor/FontAwesome/css +SUNSTONE_PUBLIC_IMAGES_FILES:$SUNSTONE_LOCATION/public/images +SUNSTONE_PUBLIC_LOCALE_EN_US:$SUNSTONE_LOCATION/public/locale/en_US +SUNSTONE_PUBLIC_LOCALE_FA_IR:$SUNSTONE_LOCATION/public/locale/fa_IR +SUNSTONE_PUBLIC_LOCALE_FR_FR:$SUNSTONE_LOCATION/public/locale/fr_FR +SUNSTONE_PUBLIC_LOCALE_IT_IT:$SUNSTONE_LOCATION/public/locale/it_IT +SUNSTONE_PUBLIC_LOCALE_PT_PT:$SUNSTONE_LOCATION/public/locale/pt_PT +SUNSTONE_PUBLIC_LOCALE_RU_RU:$SUNSTONE_LOCATION/public/locale/ru_RU +SUNSTONE_PUBLIC_LOCALE_SK_SK:$SUNSTONE_LOCATION/public/locale/sk_SK +SUNSTONE_PUBLIC_LOCALE_ZH_TW:$SUNSTONE_LOCATION/public/locale/zh_TW ) INSTALL_SUNSTONE_ETC_FILES=( - SUNSTONE_ETC_FILES:$ETC_LOCATION +SUNSTONE_ETC_FILES:$ETC_LOCATION ) INSTALL_OZONES_RUBY_FILES=( - OZONES_RUBY_LIB_FILES:$LIB_LOCATION/ruby - RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula +OZONES_RUBY_LIB_FILES:$LIB_LOCATION/ruby +RUBY_OPENNEBULA_LIB_FILES:$LIB_LOCATION/ruby/OpenNebula ) INSTALL_OZONES_FILES=( - OZONES_FILES:$OZONES_LOCATION - OZONES_BIN_FILES:$BIN_LOCATION - OZONES_MODELS_FILES:$OZONES_LOCATION/models - OZONES_TEMPLATE_FILES:$OZONES_LOCATION/templates - OZONES_LIB_FILES:$OZONES_LOCATION/lib - OZONES_LIB_ZONE_FILES:$OZONES_LOCATION/lib/OZones - OZONES_PUBLIC_VENDOR_JQUERY:$OZONES_LOCATION/public/vendor/jQuery - OZONES_PUBLIC_VENDOR_DATATABLES:$OZONES_LOCATION/public/vendor/dataTables - OZONES_PUBLIC_VENDOR_CRYPTOJS:$OZONES_LOCATION/public/vendor/crypto-js - OZONES_PUBLIC_VENDOR_JGROWL:$OZONES_LOCATION/public/vendor/jGrowl - OZONES_PUBLIC_VENDOR_JQUERYUI:$OZONES_LOCATION/public/vendor/jQueryUI - OZONES_PUBLIC_VENDOR_JQUERYUIIMAGES:$OZONES_LOCATION/public/vendor/jQueryUI/images - OZONES_PUBLIC_VENDOR_JQUERYLAYOUT:$OZONES_LOCATION/public/vendor/jQueryLayout - OZONES_PUBLIC_VENDOR_FONTAWESOME:$OZONES_LOCATION/public/vendor/FontAwesome - OZONES_PUBLIC_VENDOR_FONTAWESOME_FONT:$OZONES_LOCATION/public/vendor/FontAwesome/font - OZONES_PUBLIC_VENDOR_FONTAWESOME_CSS:$OZONES_LOCATION/public/vendor/FontAwesome/css - OZONES_PUBLIC_JS_FILES:$OZONES_LOCATION/public/js - OZONES_PUBLIC_IMAGES_FILES:$OZONES_LOCATION/public/images - OZONES_PUBLIC_CSS_FILES:$OZONES_LOCATION/public/css - OZONES_PUBLIC_JS_PLUGINS_FILES:$OZONES_LOCATION/public/js/plugins - OZONES_BIN_CLIENT_FILES:$BIN_LOCATION - OZONES_LIB_CLIENT_CLI_FILES:$LIB_LOCATION/ruby/cli - OZONES_LIB_CLIENT_CLI_HELPER_FILES:$LIB_LOCATION/ruby/cli/ozones_helper - OZONES_LIB_API_FILES:$LIB_LOCATION/ruby - OZONES_LIB_API_ZONA_FILES:$LIB_LOCATION/ruby/zona +OZONES_FILES:$OZONES_LOCATION +OZONES_BIN_FILES:$BIN_LOCATION +OZONES_MODELS_FILES:$OZONES_LOCATION/models +OZONES_TEMPLATE_FILES:$OZONES_LOCATION/templates +OZONES_LIB_FILES:$OZONES_LOCATION/lib +OZONES_LIB_ZONE_FILES:$OZONES_LOCATION/lib/OZones +OZONES_PUBLIC_VENDOR_JQUERY:$OZONES_LOCATION/public/vendor/jQuery +OZONES_PUBLIC_VENDOR_DATATABLES:$OZONES_LOCATION/public/vendor/dataTables +OZONES_PUBLIC_VENDOR_CRYPTOJS:$OZONES_LOCATION/public/vendor/crypto-js +OZONES_PUBLIC_VENDOR_JGROWL:$OZONES_LOCATION/public/vendor/jGrowl +OZONES_PUBLIC_VENDOR_JQUERYUI:$OZONES_LOCATION/public/vendor/jQueryUI +OZONES_PUBLIC_VENDOR_JQUERYUIIMAGES:$OZONES_LOCATION/public/vendor/jQueryUI/images +OZONES_PUBLIC_VENDOR_JQUERYLAYOUT:$OZONES_LOCATION/public/vendor/jQueryLayout +OZONES_PUBLIC_VENDOR_FONTAWESOME:$OZONES_LOCATION/public/vendor/FontAwesome +OZONES_PUBLIC_VENDOR_FONTAWESOME_FONT:$OZONES_LOCATION/public/vendor/FontAwesome/font +OZONES_PUBLIC_VENDOR_FONTAWESOME_CSS:$OZONES_LOCATION/public/vendor/FontAwesome/css +OZONES_PUBLIC_JS_FILES:$OZONES_LOCATION/public/js +OZONES_PUBLIC_IMAGES_FILES:$OZONES_LOCATION/public/images +OZONES_PUBLIC_CSS_FILES:$OZONES_LOCATION/public/css +OZONES_PUBLIC_JS_PLUGINS_FILES:$OZONES_LOCATION/public/js/plugins +OZONES_BIN_CLIENT_FILES:$BIN_LOCATION +OZONES_LIB_CLIENT_CLI_FILES:$LIB_LOCATION/ruby/cli +OZONES_LIB_CLIENT_CLI_HELPER_FILES:$LIB_LOCATION/ruby/cli/ozones_helper +OZONES_LIB_API_FILES:$LIB_LOCATION/ruby +OZONES_LIB_API_ZONA_FILES:$LIB_LOCATION/ruby/zona ) INSTALL_OZONES_ETC_FILES=( - OZONES_ETC_FILES:$ETC_LOCATION +OZONES_ETC_FILES:$ETC_LOCATION ) INSTALL_SELF_SERVICE_FILES=( - SELF_SERVICE_TEMPLATE_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/templates - SELF_SERVICE_VIEWS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/views - SELF_SERVICE_PUBLIC_JS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/js - SELF_SERVICE_PUBLIC_JS_PLUGINS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/js/plugins - SELF_SERVICE_PUBLIC_CSS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/css - SELF_SERVICE_PUBLIC_CUSTOMIZE_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/customize - SELF_SERVICE_PUBLIC_VENDOR_DATATABLES:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/dataTables - SELF_SERVICE_PUBLIC_VENDOR_JGROWL:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jGrowl - SELF_SERVICE_PUBLIC_VENDOR_JQUERY:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQuery - SELF_SERVICE_PUBLIC_VENDOR_JQUERYUI:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI - SELF_SERVICE_PUBLIC_VENDOR_JQUERYUIIMAGES:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI/images - SELF_SERVICE_PUBLIC_VENDOR_JQUERYLAYOUT:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryLayout - SELF_SERVICE_PUBLIC_VENDOR_FLOT:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/flot - SELF_SERVICE_PUBLIC_VENDOR_CRYPTOJS:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/crypto-js - SELF_SERVICE_PUBLIC_VENDOR_FILEUPLOADER:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/fileuploader - SELF_SERVICE_PUBLIC_VENDOR_XML2JSON:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/xml2json - SELF_SERVICE_PUBLIC_VENDOR_FONTAWESOME:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome - SELF_SERVICE_PUBLIC_VENDOR_FONTAWESOME_CSS:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/css - SELF_SERVICE_PUBLIC_VENDOR_FONTAWESOME_FONT:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/font - SELF_SERVICE_PUBLIC_IMAGES_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/images - SELF_SERVICE_PUBLIC_LOCALE_EN_US:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/en_US - SELF_SERVICE_PUBLIC_LOCALE_DE:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/de - SELF_SERVICE_PUBLIC_LOCALE_ES_ES:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/es_ES - SELF_SERVICE_PUBLIC_LOCALE_FA_IR:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fa_IR - SELF_SERVICE_PUBLIC_LOCALE_FR_CA:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_CA - SELF_SERVICE_PUBLIC_LOCALE_FR_FR:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_FR - SELF_SERVICE_PUBLIC_LOCALE_IT_IT:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/it_IT - SELF_SERVICE_PUBLIC_LOCALE_PT_BR:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_BR - SELF_SERVICE_PUBLIC_LOCALE_PT_PT:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_PT - SELF_SERVICE_PUBLIC_LOCALE_SK_SK:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/sk_SK - SELF_SERVICE_PUBLIC_LOCALE_ZH_TW:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/zh_TW +SELF_SERVICE_TEMPLATE_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/templates +SELF_SERVICE_VIEWS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/views +SELF_SERVICE_PUBLIC_JS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/js +SELF_SERVICE_PUBLIC_JS_PLUGINS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/js/plugins +SELF_SERVICE_PUBLIC_CSS_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/css +SELF_SERVICE_PUBLIC_CUSTOMIZE_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/customize +SELF_SERVICE_PUBLIC_VENDOR_DATATABLES:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/dataTables +SELF_SERVICE_PUBLIC_VENDOR_JGROWL:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jGrowl +SELF_SERVICE_PUBLIC_VENDOR_JQUERY:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQuery +SELF_SERVICE_PUBLIC_VENDOR_JQUERYUI:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI +SELF_SERVICE_PUBLIC_VENDOR_JQUERYUIIMAGES:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryUI/images +SELF_SERVICE_PUBLIC_VENDOR_JQUERYLAYOUT:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/jQueryLayout +SELF_SERVICE_PUBLIC_VENDOR_FLOT:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/flot +SELF_SERVICE_PUBLIC_VENDOR_CRYPTOJS:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/crypto-js +SELF_SERVICE_PUBLIC_VENDOR_FILEUPLOADER:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/fileuploader +SELF_SERVICE_PUBLIC_VENDOR_XML2JSON:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/xml2json +SELF_SERVICE_PUBLIC_VENDOR_FONTAWESOME:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome +SELF_SERVICE_PUBLIC_VENDOR_FONTAWESOME_CSS:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/css +SELF_SERVICE_PUBLIC_VENDOR_FONTAWESOME_FONT:$LIB_LOCATION/ruby/cloud/occi/ui/public/vendor/FontAwesome/font +SELF_SERVICE_PUBLIC_IMAGES_FILES:$LIB_LOCATION/ruby/cloud/occi/ui/public/images +SELF_SERVICE_PUBLIC_LOCALE_EN_US:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/en_US +SELF_SERVICE_PUBLIC_LOCALE_DE:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/de +SELF_SERVICE_PUBLIC_LOCALE_ES_ES:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/es_ES +SELF_SERVICE_PUBLIC_LOCALE_FA_IR:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fa_IR +SELF_SERVICE_PUBLIC_LOCALE_FR_CA:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_CA +SELF_SERVICE_PUBLIC_LOCALE_FR_FR:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/fr_FR +SELF_SERVICE_PUBLIC_LOCALE_IT_IT:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/it_IT +SELF_SERVICE_PUBLIC_LOCALE_PT_BR:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_BR +SELF_SERVICE_PUBLIC_LOCALE_PT_PT:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/pt_PT +SELF_SERVICE_PUBLIC_LOCALE_SK_SK:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/sk_SK +SELF_SERVICE_PUBLIC_LOCALE_ZH_TW:$LIB_LOCATION/ruby/cloud/occi/ui/public/locale/zh_TW ) INSTALL_ETC_FILES=( - ETC_FILES:$ETC_LOCATION - VMWARE_ETC_FILES:$ETC_LOCATION - VMM_EC2_ETC_FILES:$ETC_LOCATION/vmm_ec2 - VMM_EXEC_ETC_FILES:$ETC_LOCATION/vmm_exec - IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2 - HM_ETC_FILES:$ETC_LOCATION/hm - AUTH_ETC_FILES:$ETC_LOCATION/auth - ECO_ETC_FILES:$ETC_LOCATION - ECO_ETC_TEMPLATE_FILES:$ETC_LOCATION/ec2query_templates - OCCI_ETC_FILES:$ETC_LOCATION - OCCI_ETC_TEMPLATE_FILES:$ETC_LOCATION/occi_templates - CLI_CONF_FILES:$ETC_LOCATION/cli +ETC_FILES:$ETC_LOCATION +VMWARE_ETC_FILES:$ETC_LOCATION +VMM_EC2_ETC_FILES:$ETC_LOCATION/vmm_ec2 +VMM_EXEC_ETC_FILES:$ETC_LOCATION/vmm_exec +IM_EC2_ETC_FILES:$ETC_LOCATION/im_ec2 +HM_ETC_FILES:$ETC_LOCATION/hm +AUTH_ETC_FILES:$ETC_LOCATION/auth +ECO_ETC_FILES:$ETC_LOCATION +ECO_ETC_TEMPLATE_FILES:$ETC_LOCATION/ec2query_templates +OCCI_ETC_FILES:$ETC_LOCATION +OCCI_ETC_TEMPLATE_FILES:$ETC_LOCATION/occi_templates +CLI_CONF_FILES:$ETC_LOCATION/cli ) #------------------------------------------------------------------------------- @@ -609,22 +609,22 @@ INSTALL_ETC_FILES=( #------------------------------------------------------------------------------- BIN_FILES="src/nebula/oned \ - src/scheduler/src/sched/mm_sched \ - src/cli/onevm \ - src/cli/oneacct \ - src/cli/onehost \ - src/cli/onevnet \ - src/cli/oneuser \ - src/cli/oneimage \ - src/cli/onegroup \ - src/cli/onetemplate \ - src/cli/oneacl \ - src/cli/onedatastore \ - src/cli/onecluster \ - src/onedb/onedb \ - src/onedb/onezonedb/onezonedb \ - src/mad/utils/tty_expect \ - share/scripts/one" + src/scheduler/src/sched/mm_sched \ + src/cli/onevm \ + src/cli/oneacct \ + src/cli/onehost \ + src/cli/onevnet \ + src/cli/oneuser \ + src/cli/oneimage \ + src/cli/onegroup \ + src/cli/onetemplate \ + src/cli/oneacl \ + src/cli/onedatastore \ + src/cli/onecluster \ + src/onedb/onedb \ + src/onedb/onezonedb/onezonedb \ + src/mad/utils/tty_expect \ + share/scripts/one" #------------------------------------------------------------------------------- # C/C++ OpenNebula API Library & Development files @@ -640,19 +640,19 @@ LIB_FILES="" #------------------------------------------------------------------------------- RUBY_LIB_FILES="src/mad/ruby/ActionManager.rb \ - src/mad/ruby/CommandManager.rb \ - src/mad/ruby/OpenNebulaDriver.rb \ - src/mad/ruby/VirtualMachineDriver.rb \ - src/mad/ruby/DriverExecHelper.rb \ - src/mad/ruby/ssh_stream.rb \ - src/vnm_mad/one_vnm.rb \ - src/mad/ruby/Ganglia.rb \ - src/oca/ruby/OpenNebula.rb \ - src/authm_mad/remotes/ssh/ssh_auth.rb \ - src/authm_mad/remotes/server_x509/server_x509_auth.rb \ - src/authm_mad/remotes/server_cipher/server_cipher_auth.rb \ - src/authm_mad/remotes/ldap/ldap_auth.rb \ - src/authm_mad/remotes/x509/x509_auth.rb" + src/mad/ruby/CommandManager.rb \ + src/mad/ruby/OpenNebulaDriver.rb \ + src/mad/ruby/VirtualMachineDriver.rb \ + src/mad/ruby/DriverExecHelper.rb \ + src/mad/ruby/ssh_stream.rb \ + src/vnm_mad/one_vnm.rb \ + src/mad/ruby/Ganglia.rb \ + src/oca/ruby/OpenNebula.rb \ + src/authm_mad/remotes/ssh/ssh_auth.rb \ + src/authm_mad/remotes/server_x509/server_x509_auth.rb \ + src/authm_mad/remotes/server_cipher/server_cipher_auth.rb \ + src/authm_mad/remotes/ldap/ldap_auth.rb \ + src/authm_mad/remotes/x509/x509_auth.rb" #----------------------------------------------------------------------------- # MAD Script library files, to be installed under $LIB_LOCATION/ @@ -27,5 +29,9 @@ <%= erb :_login_standard %> <% end %> + + diff --git a/src/tm/TransferManager.cc b/src/tm/TransferManager.cc index d31f81cd2e..43f1975242 100644 --- a/src/tm/TransferManager.cc +++ b/src/tm/TransferManager.cc @@ -224,8 +224,12 @@ int TransferManager::prolog_transfer_command( string format; string tm_mad; string ds_id; + string vm_ds_id; + int disk_index; + vm_ds_id = vm->get_ds_id(); + disk->vector_value("DISK_ID", disk_index); type = disk->vector_value("TYPE"); @@ -253,7 +257,7 @@ int TransferManager::prolog_transfer_command( << vm->get_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << disk_index << " " << vm->get_oid() << " " - << "0" + << vm_ds_id << endl; } else if ( type == "FS" ) @@ -279,7 +283,7 @@ int TransferManager::prolog_transfer_command( << vm->get_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << disk_index << " " << vm->get_oid() << " " - << "0" + << vm_ds_id << endl; } else @@ -386,8 +390,8 @@ void TransferManager::prolog_action(int vid) goto error_history; } - vm_tm_mad = vm->get_tm_mad(); - tm_md = get(); + vm_tm_mad = vm->get_tm_mad(); + tm_md = get(); if ( tm_md == 0 || vm_tm_mad.empty() ) { @@ -418,11 +422,11 @@ void TransferManager::prolog_action(int vid) continue; } - rc = prolog_transfer_command(vm, - disk, + rc = prolog_transfer_command(vm, + disk, vm_tm_mad, - opennebula_hostname, - xfr, + opennebula_hostname, + xfr, os); if ( rc != 0 ) { @@ -443,7 +447,7 @@ void TransferManager::prolog_action(int vid) if ( context_result ) { //CONTEXT tm_mad files hostname:remote_system_dir/disk.i vmid dsid(=0) - xfr << "CONTEXT " + xfr << "CONTEXT " << vm_tm_mad << " " << vm->get_context_file() << " "; @@ -452,10 +456,11 @@ void TransferManager::prolog_action(int vid) xfr << files << " "; } - xfr << vm->get_hostname() << ":" + xfr << vm->get_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << num << " " - << vm->get_oid() << " " - << "0" << endl; + << vm->get_oid() << " " + << vm->get_ds_id() + << endl; } xfr.close(); @@ -587,21 +592,21 @@ void TransferManager::prolog_migr_action(int vid) tm_mad = vm_tm_mad; ds_id = vm_ds_id; } - else + else { tm_mad = disk->vector_value("TM_MAD"); ds_id = disk->vector_value("DATASTORE_ID"); if ( tm_mad.empty() || ds_id.empty() ) { - continue; + continue; } } //MV tm_mad prev_host:remote_system_dir/disk.i host:remote_system_dir/disk.i vmid dsid xfr << "MV " << tm_mad << " " - << vm->get_previous_hostname() << ":" + << vm->get_previous_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << disk_id << " " << vm->get_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << disk_id << " " @@ -612,11 +617,11 @@ void TransferManager::prolog_migr_action(int vid) //MV tm_mad prev_host:remote_system_dir host:remote_system_dir VMID 0 xfr << "MV " << vm_tm_mad << " " - << vm->get_previous_hostname() << ":" + << vm->get_previous_hostname() << ":" << vm->get_remote_system_dir() << " " - << vm->get_hostname() << ":" + << vm->get_hostname() << ":" << vm->get_remote_system_dir() << " " - << vm->get_oid() << " " + << vm->get_oid() << " " << vm_ds_id << endl; xfr.close(); @@ -726,21 +731,21 @@ void TransferManager::prolog_resume_action(int vid) tm_mad = vm_tm_mad; ds_id = vm_ds_id; } - else + else { tm_mad = disk->vector_value("TM_MAD"); ds_id = disk->vector_value("DATASTORE_ID"); if ( tm_mad.empty() || ds_id.empty() ) { - continue; + continue; } } //MV tm_mad fe:system_dir/disk.i host:remote_system_dir/disk.i vmid dsid xfr << "MV " << tm_mad << " " - << nd.get_nebula_hostname() << ":" + << nd.get_nebula_hostname() << ":" << vm->get_system_dir() << "/disk." << disk_id << " " << vm->get_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << disk_id << " " @@ -755,7 +760,7 @@ void TransferManager::prolog_resume_action(int vid) << vm->get_hostname() << ":" << vm->get_remote_system_dir()<< " " << vm->get_oid() << " " << vm_ds_id << endl; - + xfr.close(); tm_md->transfer(vid,xfr_name); @@ -805,15 +810,15 @@ void TransferManager::epilog_transfer_command( tm_mad = vm->get_tm_mad(); ds_id = vm->get_ds_id(); } - else + else { save = disk->vector_value("SAVE"); tm_mad = disk->vector_value("TM_MAD"); ds_id = disk->vector_value("DATASTORE_ID"); - + if ( save.empty() || ds_id.empty() || tm_mad.empty() ) { - return; + return; } } @@ -858,7 +863,7 @@ void TransferManager::epilog_transfer_command( << vm->get_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << disk_index << " " << vm->get_oid() << " " - << ds_id + << ds_id << endl; } } @@ -935,12 +940,12 @@ void TransferManager::epilog_action(int vid) } //DELETE vm_tm_mad hostname:remote_system_dir vmid ds_id - xfr << "DELETE " + xfr << "DELETE " << vm_tm_mad << " " << vm->get_hostname() << ":" << vm->get_remote_system_dir() << " " << vm->get_oid() << " " << vm_ds_id << endl; - + xfr.close(); tm_md->transfer(vid,xfr_name); @@ -1049,14 +1054,14 @@ void TransferManager::epilog_stop_action(int vid) tm_mad = vm_tm_mad; ds_id = vm_ds_id; } - else + else { tm_mad = disk->vector_value("TM_MAD"); ds_id = disk->vector_value("DATASTORE_ID"); if ( tm_mad.empty() || ds_id.empty() ) { - continue; + continue; } } @@ -1065,7 +1070,7 @@ void TransferManager::epilog_stop_action(int vid) << tm_mad << " " << vm->get_hostname() << ":" << vm->get_remote_system_dir() << "/disk." << disk_id << " " - << nd.get_nebula_hostname() << ":" + << nd.get_nebula_hostname() << ":" << vm->get_system_dir() << "/disk." << disk_id << " " << vm->get_oid() << " " << ds_id << endl; @@ -1188,14 +1193,14 @@ void TransferManager::epilog_delete_action(bool local, int vid) tm_mad = vm_tm_mad; ds_id = vm_ds_id; } - else + else { tm_mad = disk->vector_value("TM_MAD"); ds_id = disk->vector_value("DATASTORE_ID"); if ( tm_mad.empty() || ds_id.empty() ) { - continue; + continue; } } @@ -1260,7 +1265,7 @@ error_drivers: error_file: os.str(""); os << "epilog_delete, could not open file: " << xfr_name; - os << ". You may need to manually clean " << vm->get_hostname() + os << ". You may need to manually clean " << vm->get_hostname() << ":" << vm->get_remote_system_dir(); goto error_common; @@ -1350,14 +1355,14 @@ void TransferManager::epilog_delete_previous_action(int vid) tm_mad = vm_tm_mad; ds_id = vm_ds_id; } - else + else { tm_mad = disk->vector_value("TM_MAD"); ds_id = disk->vector_value("DATASTORE_ID"); if ( tm_mad.empty() || ds_id.empty() ) { - continue; + continue; } } @@ -1371,12 +1376,12 @@ void TransferManager::epilog_delete_previous_action(int vid) } //DELTE vm_tm_mad prev_host:remote_system_dir vmid ds_id(=0) - xfr << "DELETE " + xfr << "DELETE " << vm_tm_mad << " " << vm->get_previous_hostname() <<":"<< vm->get_remote_system_dir() << " " << vm->get_oid() << " " << vm_ds_id << endl; - + xfr.close(); tm_md->transfer(vid,xfr_name); @@ -1397,7 +1402,7 @@ error_drivers: error_file: os.str(""); os << "epilog_delete_previous, could not open file: " << xfr_name; - os << ". You may need to manually clean " << vm->get_previous_hostname() + os << ". You may need to manually clean " << vm->get_previous_hostname() << ":" << vm->get_remote_system_dir(); goto error_common; @@ -1442,7 +1447,7 @@ void TransferManager::driver_cancel_action(int vid) // ------------------------------------------------------------------------ // Cancel the current operation // ------------------------------------------------------------------------ - + tm_md->driver_cancel(vid); vm->unlock(); @@ -1457,6 +1462,25 @@ void TransferManager::checkpoint_action(int vid) } +/* -------------------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ + +void TransferManager::migrate_transfer_command( + VirtualMachine * vm, + ostream& xfr) +{ + // tm_mad SOURCE DST remote_system_dir vmid dsid + + xfr << "MIGRATE " //TM action PRE or POST to be completed by VMM driver + << vm->get_tm_mad() << " " + << vm->get_hostname() << " " + << vm->get_previous_hostname() << " " + << vm->get_remote_system_dir() << " " + << vm->get_oid() << " " + << vm->get_ds_id() + << endl; +} + /* ************************************************************************** */ /* MAD Loading */ /* ************************************************************************** */ diff --git a/src/tm/TransferManagerDriver.cc b/src/tm/TransferManagerDriver.cc index f50388ec7b..dbabe4e9da 100644 --- a/src/tm/TransferManagerDriver.cc +++ b/src/tm/TransferManagerDriver.cc @@ -96,8 +96,7 @@ void TransferManagerDriver::protocol( return; } - if ( vm->get_lcm_state() == VirtualMachine::CLEANUP || - vm->get_lcm_state() == VirtualMachine::FAILURE || + if ( vm->get_lcm_state() == VirtualMachine::FAILURE || vm->get_lcm_state() == VirtualMachine::LCM_INIT ) { os.str(""); @@ -128,6 +127,7 @@ void TransferManagerDriver::protocol( case VirtualMachine::EPILOG: case VirtualMachine::EPILOG_STOP: + case VirtualMachine::CLEANUP: lcm_action = LifeCycleManager::EPILOG_SUCCESS; break; @@ -143,7 +143,7 @@ void TransferManagerDriver::protocol( os.str(""); os << "Error executing image transfer script"; - + if (!info.empty() && info[0] != '-') { os << ": " << info; @@ -151,7 +151,7 @@ void TransferManagerDriver::protocol( vm->set_template_error_message(os.str()); vmpool->update(vm); } - + vm->log("TM",Log::ERROR,os); switch (vm->get_lcm_state()) @@ -164,6 +164,7 @@ void TransferManagerDriver::protocol( case VirtualMachine::EPILOG: case VirtualMachine::EPILOG_STOP: + case VirtualMachine::CLEANUP: lcm_action = LifeCycleManager::EPILOG_FAILURE; break; diff --git a/src/tm_mad/common/postmigrate b/src/tm_mad/common/postmigrate new file mode 100755 index 0000000000..9e94890d9b --- /dev/null +++ b/src/tm_mad/common/postmigrate @@ -0,0 +1,29 @@ +#!/bin/bash + +# -------------------------------------------------------------------------- # +# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); you may # +# not use this file except in compliance with the License. You may obtain # +# a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +#--------------------------------------------------------------------------- # +# POSTMIGRATE SOURCE DST remote_system_dir vmid dsid template +# - SOURCE is the host where the VM is running +# - DST is the host where the VM is to be migrated +# - remote_system_dir is the path for the VM home in the system datastore +# - vmid is the id of the VM +# - dsid is the target datastore +# - template is the template of the VM in XML and base64 encoded + +# To access the vm_template you can use the xpath.rb utility. Check the +# datastore drivers for an example. + +exit 0 diff --git a/src/tm_mad/common/premigrate b/src/tm_mad/common/premigrate new file mode 100755 index 0000000000..bab383dbef --- /dev/null +++ b/src/tm_mad/common/premigrate @@ -0,0 +1,29 @@ +#!/bin/bash + +# -------------------------------------------------------------------------- # +# Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) # +# # +# Licensed under the Apache License, Version 2.0 (the "License"); you may # +# not use this file except in compliance with the License. You may obtain # +# a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, software # +# distributed under the License is distributed on an "AS IS" BASIS, # +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # +# See the License for the specific language governing permissions and # +# limitations under the License. # +#--------------------------------------------------------------------------- # +# PREMIGRATE SOURCE DST remote_system_dir vmid dsid template +# - SOURCE is the host where the VM is running +# - DST is the host where the VM is to be migrated +# - remote_system_dir is the path for the VM home in the system datastore +# - vmid is the id of the VM +# - dsid is the target datastore +# - template is the template of the VM in XML and base64 encoded + +# To access the vm_template you can use the xpath.rb utility. Check the +# datastore drivers for an example. + +exit 0 diff --git a/src/tm_mad/dummy/postmigrate b/src/tm_mad/dummy/postmigrate new file mode 120000 index 0000000000..300563f2ad --- /dev/null +++ b/src/tm_mad/dummy/postmigrate @@ -0,0 +1 @@ +../common/dummy.sh \ No newline at end of file diff --git a/src/tm_mad/dummy/premigrate b/src/tm_mad/dummy/premigrate new file mode 120000 index 0000000000..300563f2ad --- /dev/null +++ b/src/tm_mad/dummy/premigrate @@ -0,0 +1 @@ +../common/dummy.sh \ No newline at end of file diff --git a/src/tm_mad/iscsi/postmigrate b/src/tm_mad/iscsi/postmigrate new file mode 120000 index 0000000000..d580dd8260 --- /dev/null +++ b/src/tm_mad/iscsi/postmigrate @@ -0,0 +1 @@ +../common/postmigrate \ No newline at end of file diff --git a/src/tm_mad/iscsi/premigrate b/src/tm_mad/iscsi/premigrate new file mode 120000 index 0000000000..0e108a8a26 --- /dev/null +++ b/src/tm_mad/iscsi/premigrate @@ -0,0 +1 @@ +../common/premigrate \ No newline at end of file diff --git a/src/tm_mad/lvm/postmigrate b/src/tm_mad/lvm/postmigrate new file mode 120000 index 0000000000..d580dd8260 --- /dev/null +++ b/src/tm_mad/lvm/postmigrate @@ -0,0 +1 @@ +../common/postmigrate \ No newline at end of file diff --git a/src/tm_mad/lvm/premigrate b/src/tm_mad/lvm/premigrate new file mode 120000 index 0000000000..0e108a8a26 --- /dev/null +++ b/src/tm_mad/lvm/premigrate @@ -0,0 +1 @@ +../common/premigrate \ No newline at end of file diff --git a/src/tm_mad/qcow2/postmigrate b/src/tm_mad/qcow2/postmigrate new file mode 120000 index 0000000000..d580dd8260 --- /dev/null +++ b/src/tm_mad/qcow2/postmigrate @@ -0,0 +1 @@ +../common/postmigrate \ No newline at end of file diff --git a/src/tm_mad/qcow2/premigrate b/src/tm_mad/qcow2/premigrate new file mode 120000 index 0000000000..0e108a8a26 --- /dev/null +++ b/src/tm_mad/qcow2/premigrate @@ -0,0 +1 @@ +../common/premigrate \ No newline at end of file diff --git a/src/tm_mad/shared/postmigrate b/src/tm_mad/shared/postmigrate new file mode 120000 index 0000000000..d580dd8260 --- /dev/null +++ b/src/tm_mad/shared/postmigrate @@ -0,0 +1 @@ +../common/postmigrate \ No newline at end of file diff --git a/src/tm_mad/shared/premigrate b/src/tm_mad/shared/premigrate new file mode 120000 index 0000000000..0e108a8a26 --- /dev/null +++ b/src/tm_mad/shared/premigrate @@ -0,0 +1 @@ +../common/premigrate \ No newline at end of file diff --git a/src/tm_mad/ssh/postmigrate b/src/tm_mad/ssh/postmigrate new file mode 120000 index 0000000000..d580dd8260 --- /dev/null +++ b/src/tm_mad/ssh/postmigrate @@ -0,0 +1 @@ +../common/postmigrate \ No newline at end of file diff --git a/src/tm_mad/ssh/premigrate b/src/tm_mad/ssh/premigrate new file mode 120000 index 0000000000..0e108a8a26 --- /dev/null +++ b/src/tm_mad/ssh/premigrate @@ -0,0 +1 @@ +../common/premigrate \ No newline at end of file diff --git a/src/tm_mad/vmware/postmigrate b/src/tm_mad/vmware/postmigrate new file mode 120000 index 0000000000..d580dd8260 --- /dev/null +++ b/src/tm_mad/vmware/postmigrate @@ -0,0 +1 @@ +../common/postmigrate \ No newline at end of file diff --git a/src/tm_mad/vmware/premigrate b/src/tm_mad/vmware/premigrate new file mode 120000 index 0000000000..0e108a8a26 --- /dev/null +++ b/src/tm_mad/vmware/premigrate @@ -0,0 +1 @@ +../common/premigrate \ No newline at end of file diff --git a/src/vmm/VirtualMachineManager.cc b/src/vmm/VirtualMachineManager.cc index 7a13d15444..e656c91ad8 100644 --- a/src/vmm/VirtualMachineManager.cc +++ b/src/vmm/VirtualMachineManager.cc @@ -337,13 +337,20 @@ string * VirtualMachineManager::format_message( if ( !tm_command.empty() ) { - oss << "" - << ""<< disk_target_path << ""; + oss << ""; } else { - oss << "" - << ""; + oss << ""; + } + + if ( !disk_target_path.empty() ) + { + oss << ""<< disk_target_path << ""; + } + else + { + oss << ""; } oss << tmpl @@ -954,6 +961,8 @@ void VirtualMachineManager::migrate_action( goto error_previous_history; } + Nebula::instance().get_tm()->migrate_transfer_command(vm, os); + // Invoke driver method drv_msg = format_message( vm->get_previous_hostname(), @@ -964,7 +973,7 @@ void VirtualMachineManager::migrate_action( "", "", "", - "", + os.str(), "", vm->to_xml(vm_tmpl)); diff --git a/src/vmm_mad/exec/one_vmm_exec b/src/vmm_mad/exec/one_vmm_exec index 3246945e5c..004f93135f 100755 --- a/src/vmm_mad/exec/one_vmm_exec +++ b/src/vmm_mad/exec/one_vmm_exec @@ -34,5 +34,7 @@ export_rc_vars $DRIVERRC # Go to ONE_LOCATION cd $VAR_LOCATION +LOG_FILE=one_vmm_${BASH_ARGV##* } + # Execute the actual MAD execute_mad $* diff --git a/src/vmm_mad/exec/one_vmm_exec.rb b/src/vmm_mad/exec/one_vmm_exec.rb index 943ee34932..9dd1881578 100755 --- a/src/vmm_mad/exec/one_vmm_exec.rb +++ b/src/vmm_mad/exec/one_vmm_exec.rb @@ -75,6 +75,9 @@ class VmmAction get_data(:disk_target_path) get_data(:tm_command) + # VM template + @data[:vm] = Base64.encode64(@xml_data.elements['VM'].to_s).delete("\n") + # Initialize streams and vnm @ssh_src = @vmm.get_ssh_stream(action, @data[:host], @id) @vnm_src = VirtualNetworkDriver.new(@data[:net_drv], @@ -254,15 +257,9 @@ class ExecDriver < VirtualMachineDriver # @param[String] id of the VM to log messages # @return [SshStreamCommand] def get_ssh_stream(aname, host, id) - stream = nil - - if not action_is_local?(aname) - stream = SshStreamCommand.new(host, - @remote_scripts_base_path, - log_method(id), nil, @shell) - else - return nil - end + SshStreamCommand.new(host, + @remote_scripts_base_path, + log_method(id), nil, @shell) end #--------------------------------------------------------------------------- @@ -438,9 +435,20 @@ class ExecDriver < VirtualMachineDriver # MIGRATE (live) action, migrates a VM to another host creating network # def migrate(id, drv_message) - action=VmmAction.new(self, id, :migrate, drv_message) + action = VmmAction.new(self, id, :migrate, drv_message) + pre = "PRE" + post = "POST" + + pre << action.data[:tm_command] << " " << action.data[:vm] + post << action.data[:tm_command] << " " << action.data[:vm] steps=[ + # Execute a pre-migrate TM setup + { + :driver => :tm, + :action => :tm_premigrate, + :parameters => pre.split + }, # Execute pre-boot networking setup on migrating host { :driver => :vnm, @@ -466,6 +474,12 @@ class ExecDriver < VirtualMachineDriver :destination => :true #TODO :fail_action what to do here? cancel VM? }, + { + :driver => :tm, + :action => :tm_postmigrate, + :parameters => post.split + #TODO :fail_action what to do here? cancel VM? + }, ] action.run(steps) diff --git a/src/vmm_mad/remotes/kvm/deploy b/src/vmm_mad/remotes/kvm/deploy index eb24307b4a..57ed8ac409 100755 --- a/src/vmm_mad/remotes/kvm/deploy +++ b/src/vmm_mad/remotes/kvm/deploy @@ -24,6 +24,8 @@ domain=$1 mkdir -p `dirname $domain` cat > $domain +virsh --connect $LIBVIRT_URI undefine $domain + data=`virsh --connect $LIBVIRT_URI create $domain` if [ "x$?" = "x0" ]; then diff --git a/src/vmm_mad/remotes/poll_xen_kvm.rb b/src/vmm_mad/remotes/poll_xen_kvm.rb index 5ed85045e2..a182b0c58a 100755 --- a/src/vmm_mad/remotes/poll_xen_kvm.rb +++ b/src/vmm_mad/remotes/poll_xen_kvm.rb @@ -335,10 +335,12 @@ end def print_all_vm_info(hypervisor) require 'yaml' require 'base64' + require 'zlib' vms=hypervisor.get_all_vm_info - puts Base64.encode64(vms.to_yaml).delete("\n") + compressed=Zlib::Deflate.deflate(vms.to_yaml) + puts Base64.encode64(compressed).delete("\n") end hypervisor=select_hypervisor