mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	Merging awsapi-setup to master
This commit is contained in:
		
							parent
							
								
									f1fae9d57f
								
							
						
					
					
						commit
						9aaaab0ebe
					
				
							
								
								
									
										27
									
								
								awsapi-setup/db/mysql/cloudbridge_bucketpolicy.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								awsapi-setup/db/mysql/cloudbridge_bucketpolicy.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,27 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| -- This file (and cloudbridge_policy_alter.sql) can be applied to an existing cloudbridge  | ||||
| -- database.   It is used to manage defined bucket access policies. | ||||
| -- | ||||
| SET foreign_key_checks = 0; | ||||
| 
 | ||||
| DROP TABLE IF EXISTS bucket_policies; | ||||
| 
 | ||||
| -- 1) Amazon S3 only allows one policy to be defined for a bucket. | ||||
| -- 2) The maximum size of a policy is 20 KB. | ||||
| -- 3) A bucket policy has to be able to exist even before the bucket itself (e.g., to | ||||
| --    support "CreateBucket" actions). | ||||
| -- | ||||
| CREATE TABLE bucket_policies ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	BucketName VARCHAR(64) NOT NULL, | ||||
| 	OwnerCanonicalID VARCHAR(150) NOT NULL, | ||||
| 	 | ||||
| 	Policy VARCHAR(20000) NOT NULL,  -- policies are written in JSON  | ||||
| 
 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| SET foreign_key_checks = 1; | ||||
| 
 | ||||
							
								
								
									
										12
									
								
								awsapi-setup/db/mysql/cloudbridge_db.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								awsapi-setup/db/mysql/cloudbridge_db.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ANSI'; | ||||
| 
 | ||||
| DROP DATABASE IF EXISTS cloudbridge; | ||||
| CREATE DATABASE cloudbridge; | ||||
|    | ||||
| GRANT ALL ON cloudbridge.* to cloud@`localhost` identified by 'cloud'; | ||||
| GRANT ALL ON cloudbridge.* to cloud@`%` identified by 'cloud'; | ||||
| 
 | ||||
| GRANT process ON *.* TO `cloud`@`localhost`; | ||||
| GRANT process ON *.* TO `cloud`@`%`; | ||||
| 
 | ||||
| COMMIT; | ||||
							
								
								
									
										47
									
								
								awsapi-setup/db/mysql/cloudbridge_index.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								awsapi-setup/db/mysql/cloudbridge_index.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| ALTER TABLE shost ADD UNIQUE shost_uq_host(Host, HostType, ExportRoot); | ||||
| ALTER TABLE shost ADD CONSTRAINT FOREIGN KEY shost_fk_mhost_id(MHostID) REFERENCES mhost(ID); | ||||
| ALTER TABLE shost ADD INDEX shost_idx_mhost_id(MHostID); | ||||
| 
 | ||||
| ALTER TABLE sbucket ADD UNIQUE sbucket_uq_name(Name); | ||||
| ALTER TABLE sbucket ADD CONSTRAINT FOREIGN KEY sbucket_fk_shost_id(SHostID) REFERENCES shost(ID); | ||||
| ALTER TABLE sbucket ADD INDEX sbucket_idx_shost_id(SHostID); | ||||
| ALTER TABLE sbucket ADD INDEX sbucket_idx_owner_cid(OwnerCanonicalID); | ||||
| ALTER TABLE sbucket ADD INDEX sbucket_idx_create_time(CreateTime); | ||||
| 
 | ||||
| ALTER TABLE sobject ADD CONSTRAINT FOREIGN KEY sobject_fk_sbuckt_id(SBucketID) REFERENCES sbucket(ID) ON DELETE CASCADE; | ||||
| ALTER TABLE sobject ADD INDEX sobject_idx_bucket_id(SBucketID); | ||||
| ALTER TABLE sobject ADD INDEX sobject_idx_owner_cid(OwnerCanonicalID); | ||||
| ALTER TABLE sobject ADD UNIQUE sobject_uq_sbucket_id_name_key(SBucketID, NameKey); | ||||
| ALTER TABLE sobject ADD INDEX sobject_idx_create_time(CreateTime); | ||||
| 
 | ||||
| ALTER TABLE sobject_item ADD CONSTRAINT FOREIGN KEY sobject_item_fk_object_id(SObjectID) REFERENCES sobject(ID) ON DELETE CASCADE; | ||||
| ALTER TABLE sobject_item ADD INDEX sobject_item_idx_object_id(SObjectID); | ||||
| ALTER TABLE sobject_item ADD UNIQUE sobject_item_uq_sobject_id_version(SObjectID, Version); | ||||
| ALTER TABLE sobject_item ADD INDEX sobject_item_idx_create_time(CreateTime); | ||||
| ALTER TABLE sobject_item ADD INDEX sobject_item_idx_modify_time(LastModifiedTime); | ||||
| ALTER TABLE sobject_item ADD INDEX sobject_item_idx_access_time(LastAccessTime); | ||||
| ALTER TABLE sobject_item ADD INDEX sobject_item_idx_stored_size(StoredSize); | ||||
| 
 | ||||
| ALTER TABLE meta ADD UNIQUE meta_uq_target_name(Target, TargetID, Name); | ||||
| ALTER TABLE meta ADD INDEX meta_idx_target(Target, TargetID); | ||||
| 
 | ||||
| ALTER TABLE usercredentials ADD UNIQUE usercredentials_mappings1(AccessKey); | ||||
| ALTER TABLE usercredentials ADD UNIQUE usercredentials_mappings2(CertUniqueId); | ||||
| ALTER TABLE usercredentials ADD INDEX usercredentials_idx_access(AccessKey); | ||||
| ALTER TABLE usercredentials ADD INDEX usercredentials_idx_cert(CertUniqueId); | ||||
| 
 | ||||
| ALTER TABLE acl ADD INDEX acl_idx_target(Target, TargetID); | ||||
| ALTER TABLE acl ADD INDEX acl_idx_modify_time(LastModifiedTime); | ||||
| 
 | ||||
| ALTER TABLE mhost ADD UNIQUE mhost_uq_host(Host); | ||||
| ALTER TABLE mhost ADD INDEX mhost_idx_mhost_key(MHostKey); | ||||
| ALTER TABLE mhost ADD INDEX mhost_idx_heartbeat_time(LastHeartbeatTime); | ||||
| 
 | ||||
| ALTER TABLE mhost_mount ADD UNIQUE mhost_mnt_uq_mhost_shost(MHostID, SHostID); | ||||
| ALTER TABLE mhost_mount ADD CONSTRAINT FOREIGN KEY mhost_mnt_fk_mhost_id(MHostID) REFERENCES mhost(ID) ON DELETE CASCADE; | ||||
| ALTER TABLE mhost_mount ADD CONSTRAINT FOREIGN KEY mhost_mnt_fk_shost_id(SHostID) REFERENCES shost(ID) ON DELETE CASCADE; | ||||
| ALTER TABLE mhost_mount ADD INDEX mhost_mnt_idx_mhost_id(MHostID); | ||||
| ALTER TABLE mhost_mount ADD INDEX mhost_mnt_idx_shost_id(SHostID); | ||||
| ALTER TABLE mhost_mount ADD INDEX mhost_mnt_idx_mount_time(LastMountTime); | ||||
							
								
								
									
										60
									
								
								awsapi-setup/db/mysql/cloudbridge_multipart.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								awsapi-setup/db/mysql/cloudbridge_multipart.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| -- This file can be applied to an existing cloudbridge database.   It is used | ||||
| -- to keep track of in progress multipart file uploads. | ||||
| -- | ||||
| SET foreign_key_checks = 0; | ||||
| 
 | ||||
| DROP TABLE IF EXISTS multipart_uploads; | ||||
| DROP TABLE IF EXISTS multipart_meta; | ||||
| DROP TABLE IF EXISTS multipart_parts; | ||||
| 
 | ||||
| -- We need to keep track of the multipart uploads and all the parts of each upload until they | ||||
| -- are completed or aborted. | ||||
| -- The AccessKey is where we store the AWS account id | ||||
| -- | ||||
| CREATE TABLE multipart_uploads ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	AccessKey  VARCHAR(150) NOT NULL,  -- this is the initiator of the request | ||||
| 	BucketName VARCHAR(64)  NOT NULL, | ||||
| 	NameKey    VARCHAR(255) NOT NULL, | ||||
| 	x_amz_acl  VARCHAR(64)  NULL, | ||||
| 	 | ||||
| 	CreateTime DATETIME, | ||||
| 
 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| -- We need to store all the meta data for an object being mutlipart uploaded  | ||||
| -- UploadID is a foreign key to an entry in the mutipart_uploads table | ||||
| -- | ||||
| CREATE TABLE multipart_meta ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	UploadID BIGINT NOT NULL,   | ||||
| 	Name  VARCHAR(64) NOT NULL, | ||||
| 	Value VARCHAR(256), | ||||
| 	 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| -- Each part of a multipart upload gets a row in this table | ||||
| -- UploadId is a foreign key to an entry in the mutipart_uploads table | ||||
| -- | ||||
| CREATE TABLE multipart_parts ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	UploadID BIGINT NOT NULL,   | ||||
| 	partNumber INT NOT NULL, | ||||
| 	MD5 VARCHAR(128), | ||||
|  	StoredPath VARCHAR(256),					-- relative to mount point of the root | ||||
|  	StoredSize BIGINT NOT NULL DEFAULT 0, | ||||
| 	 | ||||
| 	CreateTime DATETIME, | ||||
| 	 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| SET foreign_key_checks = 1; | ||||
| 
 | ||||
							
								
								
									
										5
									
								
								awsapi-setup/db/mysql/cloudbridge_multipart_alter.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								awsapi-setup/db/mysql/cloudbridge_multipart_alter.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| ALTER TABLE multipart_meta ADD CONSTRAINT FOREIGN KEY meta_uploads_id(UploadID) REFERENCES multipart_uploads(ID) ON DELETE CASCADE; | ||||
| ALTER TABLE multipart_parts ADD CONSTRAINT FOREIGN KEY part_uploads_id(UploadID) REFERENCES multipart_uploads(ID) ON DELETE CASCADE; | ||||
| ALTER TABLE multipart_parts ADD UNIQUE part_uploads_number(UploadId, partNumber); | ||||
							
								
								
									
										22
									
								
								awsapi-setup/db/mysql/cloudbridge_offering.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								awsapi-setup/db/mysql/cloudbridge_offering.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| -- This file (and cloudbridge_offering_alter.sql) can be applied to an existing cloudbridge  | ||||
| -- database.   It is used to manage the mappings from the Amazon EC2 offering strings to  | ||||
| -- cloudstack service offering identifers. | ||||
| -- | ||||
| SET foreign_key_checks = 0; | ||||
| 
 | ||||
| DROP TABLE IF EXISTS offering_bundle; | ||||
| 
 | ||||
| -- AmazonEC2Offering  - string name of an EC2 AMI capability (e.g. "m1.small") | ||||
| -- CloudStackOffering - string name of the cloud stack service offering identifer (e.g. "1" ) | ||||
| -- | ||||
| CREATE TABLE offering_bundle ( | ||||
| 	ID                 INTEGER NOT NULL AUTO_INCREMENT, | ||||
| 	AmazonEC2Offering  VARCHAR(100) NOT NULL, | ||||
| 	CloudStackOffering VARCHAR(20)  NOT NULL, | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| SET foreign_key_checks = 1; | ||||
| 
 | ||||
							
								
								
									
										3
									
								
								awsapi-setup/db/mysql/cloudbridge_offering_alter.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								awsapi-setup/db/mysql/cloudbridge_offering_alter.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| ALTER TABLE offering_bundle ADD UNIQUE one_offering (AmazonEC2Offering); | ||||
							
								
								
									
										3
									
								
								awsapi-setup/db/mysql/cloudbridge_policy_alter.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								awsapi-setup/db/mysql/cloudbridge_policy_alter.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| ALTER TABLE bucket_policies ADD UNIQUE one_policy_per_bucket(BucketName); | ||||
							
								
								
									
										144
									
								
								awsapi-setup/db/mysql/cloudbridge_schema.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								awsapi-setup/db/mysql/cloudbridge_schema.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,144 @@ | ||||
| USE cloudbridge; | ||||
| 
 | ||||
| SET foreign_key_checks = 0; | ||||
| 
 | ||||
| DROP TABLE IF EXISTS shost; | ||||
| DROP TABLE IF EXISTS mhost; | ||||
| DROP TABLE IF EXISTS mhost_mount; | ||||
| DROP TABLE IF EXISTS sbucket; | ||||
| DROP TABLE IF EXISTS sobject; | ||||
| DROP TABLE IF EXISTS sobject_item; | ||||
| DROP TABLE IF EXISTS meta; | ||||
| DROP TABLE IF EXISTS acl; | ||||
| DROP TABLE IF EXISTS usercredentials; | ||||
| 
 | ||||
| -- storage host | ||||
| CREATE TABLE shost (							 | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	Host VARCHAR(128) NOT NULL, | ||||
| 	HostType INT NOT NULL DEFAULT 0, 	-- 0 : local, 1 : nfs | ||||
| 	ExportRoot VARCHAR(128) NOT NULL, | ||||
| 	 | ||||
| 	MHostID BIGINT,						-- when host type is local, MHostID points to its owner management host												 | ||||
| 	 | ||||
| 	UserOnHost VARCHAR(64), | ||||
| 	UserPassword VARCHAR(128), | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| -- management host | ||||
| CREATE TABLE mhost ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	MHostKey VARCHAR(128) NOT NULL, 	-- host key could be derived from MAC address or named configuration value | ||||
| 	Host VARCHAR(128),					-- public host address for redirecting request from/to  | ||||
| 	 | ||||
| 	Version VARCHAR(64), | ||||
| 	LastHeartbeatTime DATETIME, | ||||
| 	 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| CREATE TABLE mhost_mount ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	MHostID BIGINT NOT NULL, | ||||
| 	SHostID BIGINT NOT NULL, | ||||
| 
 | ||||
| 	MountPath VARCHAR(256),				-- local mount path | ||||
| 	LastMountTime DATETIME,				-- null : unmounted, otherwise the mount location | ||||
| 	 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| CREATE TABLE sbucket ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	Name VARCHAR(64) NOT NULL, | ||||
| 	OwnerCanonicalID VARCHAR(150) NOT NULL, | ||||
| 	 | ||||
| 	SHostID BIGINT, | ||||
| 	 | ||||
| 	CreateTime DATETIME, | ||||
| 	 | ||||
| 	VersioningStatus INT NOT NULL DEFAULT 0,  -- 0 : initial not set, 1 : enabled, 2 : suspended  | ||||
| 	 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| CREATE TABLE sobject ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	SBucketID BIGINT NOT NULL, | ||||
| 	NameKey VARCHAR(255) NOT NULL, | ||||
| 	 | ||||
| 	OwnerCanonicalID VARCHAR(150) NOT NULL, | ||||
| 	NextSequence INT NOT NULL DEFAULT 1, | ||||
| 	DeletionMark VARCHAR (150),  | ||||
|  	 | ||||
|  	CreateTime DATETIME, | ||||
|  	 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| CREATE TABLE sobject_item ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	SObjectID BIGINT NOT NULL, | ||||
|  	Version VARCHAR(64), | ||||
|  	 | ||||
|  	MD5 VARCHAR(128), | ||||
|  	StoredPath VARCHAR(256),					-- relative to mount point of the root | ||||
|  	StoredSize BIGINT NOT NULL DEFAULT 0, | ||||
|  	 | ||||
|  	CreateTime DATETIME, | ||||
|  	LastModifiedTime DATETIME, | ||||
|  	LastAccessTime DATETIME, | ||||
|  	 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| CREATE TABLE meta ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	Target VARCHAR(64) NOT NULL, | ||||
| 	TargetID BIGINT NOT NULL, | ||||
| 
 | ||||
| 	Name VARCHAR(64) NOT NULL, | ||||
| 	Value VARCHAR(256), | ||||
| 
 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| CREATE TABLE acl ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	Target VARCHAR(64) NOT NULL, | ||||
| 	TargetID BIGINT NOT NULL, | ||||
| 	 | ||||
| 	GranteeType INT NOT NULL DEFAULT 0,			-- 0 : Cloud service user, 1 : Cloud user community, 2: Public user community | ||||
| 	GranteeCanonicalID VARCHAR(150),            -- make it big enought to hold a Cloud API access key | ||||
| 	 | ||||
| 	Permission INT NOT NULL DEFAULT 0,			-- 0 : no permission, 1 : read, 2 : write, 4 : read_acl, 8 : write_acl  | ||||
| 	GrantOrder INT NOT NULL DEFAULT 0,  | ||||
| 	 | ||||
| 	CreateTime DATETIME, | ||||
| 	LastModifiedTime DATETIME, | ||||
| 
 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| -- each account has to have a separate <AccessKey,SecretKey> | ||||
| -- each account has to have a separate <CertUniqueID,AccessKey> mappings | ||||
| CREATE TABLE usercredentials ( | ||||
| 	ID BIGINT NOT NULL AUTO_INCREMENT, | ||||
| 	 | ||||
| 	AccessKey VARCHAR(150) NOT NULL, | ||||
| 	SecretKey VARCHAR(150) NOT NULL, | ||||
| 	CertUniqueId VARCHAR(200), | ||||
| 
 | ||||
| 	PRIMARY KEY(ID) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| 
 | ||||
| SET foreign_key_checks = 1; | ||||
| 
 | ||||
							
								
								
									
										59
									
								
								awsapi-setup/db/mysql/deploy-db-bridge.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								awsapi-setup/db/mysql/deploy-db-bridge.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| #!/usr/bin/env bash | ||||
| # deploy-db-bridge.sh -- deploys the cloudbridge database configuration. | ||||
| # | ||||
| # set -x | ||||
| 
 | ||||
| if [ ! -f cloudbridge_db.sql ]; then | ||||
|   printf "Error: Unable to find cloudbridge_db.sql\n" | ||||
|   exit 4 | ||||
| fi | ||||
| 
 | ||||
| if [ ! -f cloudbridge_schema.sql ]; then | ||||
|   printf "Error: Unable to find cloudbridge_schema.sql\n" | ||||
|   exit 5 | ||||
| fi | ||||
| 
 | ||||
| if [ ! -f cloudbridge_index.sql ]; then | ||||
|   printf "Error: Unable to find cloudbridge_index.sql\n" | ||||
|   exit 6; | ||||
| fi | ||||
| 
 | ||||
| echo "Recreating Database." | ||||
| mysql --user=root --password=$1 < cloudbridge_db.sql > /dev/null 2>/dev/null | ||||
| mysqlout=$? | ||||
| if [ $mysqlout -eq 1 ]; then | ||||
|   printf "Please enter root password for MySQL.\n"  | ||||
|   mysql --user=root --password < cloudbridge_db.sql | ||||
|   if [ $? -ne 0 ]; then | ||||
|     printf "Error: Cannot execute cloudbridge_db.sql\n" | ||||
|     exit 10 | ||||
|   fi | ||||
| elif [ $mysqlout -ne 0 ]; then | ||||
|   printf "Error: Cannot execute cloudbridge_db.sql\n" | ||||
|   exit 11 | ||||
| fi | ||||
| 
 | ||||
| mysql --user=cloud --password=cloud < cloudbridge_schema.sql | ||||
| if [ $? -ne 0 ]; then | ||||
|   printf "Error: Cannot execute cloudbridge_schema.sql\n" | ||||
|   exit 11 | ||||
| fi | ||||
| 
 | ||||
| mysql --user=cloud --password=cloud < cloudbridge_multipart.sql | ||||
| if [ $? -ne 0 ] | ||||
| then | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| echo "Creating Indice and Foreign Keys" | ||||
| mysql --user=cloud --password=cloud < cloudbridge_index.sql | ||||
| if [ $? -ne 0 ]; then | ||||
|   printf "Error: Cannot execute cloudbridge_index.sql\n" | ||||
|   exit 13 | ||||
| fi | ||||
| 
 | ||||
| mysql --user=cloud --password=cloud < cloudbridge_multipart_alter.sql | ||||
| mysql --user=cloud --password=cloud < cloudbridge_bucketpolicy.sql | ||||
| mysql --user=cloud --password=cloud < cloudbridge_policy_alter.sql | ||||
| mysql --user=cloud --password=cloud < cloudbridge_offering.sql | ||||
| mysql --user=cloud --password=cloud < cloudbridge_offering_alter.sql | ||||
							
								
								
									
										9
									
								
								awsapi-setup/db/mysql/init_db.bat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								awsapi-setup/db/mysql/init_db.bat
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| mysql --user=root --password < cloudbridge_db.sql | ||||
| mysql --user=root --password < cloudbridge_schema.sql | ||||
| mysql --user=root --password < cloudbridge_multipart.sql | ||||
| mysql --user=root --password < cloudbridge_index.sql | ||||
| mysql --user=root --password < cloudbridge_multipart_alter.sql | ||||
| mysql --user=root --password < cloudbridge_bucketpolicy.sql | ||||
| mysql --user=root --password < cloudbridge_policy_alter.sql | ||||
| mysql --user=root --password < cloudbridge_offering.sql | ||||
| mysql --user=root --password < cloudbridge_offering_alter.sql | ||||
							
								
								
									
										228
									
								
								awsapi-setup/init/debian/cloud-bridge
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										228
									
								
								awsapi-setup/init/debian/cloud-bridge
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,228 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # /etc/init.d/tomcat6 -- startup script for the Tomcat 6 servlet engine | ||||
| # | ||||
| # Written by Miquel van Smoorenburg <miquels@cistron.nl>. | ||||
| # Modified for Debian GNU/Linux	by Ian Murdock <imurdock@gnu.ai.mit.edu>. | ||||
| # Modified for Tomcat by Stefan Gybas <sgybas@debian.org>. | ||||
| # Modified for Tomcat6 by Thierry Carrez <thierry.carrez@ubuntu.com>. | ||||
| # Modified for VMOps by Manuel Amador (Rudd-O) <manuel@vmops.com> | ||||
| # | ||||
| ### BEGIN INIT INFO | ||||
| # Provides:          tomcat-vmops | ||||
| # Required-Start:    $local_fs $remote_fs $network | ||||
| # Required-Stop:     $local_fs $remote_fs $network | ||||
| # Should-Start:      $named | ||||
| # Should-Stop:       $named | ||||
| # Default-Start:     2 3 4 5 | ||||
| # Default-Stop:      0 1 6 | ||||
| # Short-Description: Start Tomcat (CloudStack). | ||||
| # Description:       Start the Tomcat servlet engine that runs the CloudStack Management Server. | ||||
| ### END INIT INFO | ||||
| 
 | ||||
| PATH=/bin:/usr/bin:/sbin:/usr/sbin | ||||
| NAME=cloud-bridge | ||||
| DESC="CloudStack-specific Tomcat servlet engine" | ||||
| DAEMON=/usr/bin/jsvc | ||||
| CATALINA_BASE=/usr/share/cloud/bridge | ||||
| CATALINA_HOME=/usr/share/tomcat6 | ||||
| DEFAULT=$CATALINA_BASE/conf/tomcat6.conf | ||||
| JVM_TMP=/tmp/$NAME-temp | ||||
| 
 | ||||
| if [ `id -u` -ne 0 ]; then | ||||
| 	echo "You need root privileges to run this script" | ||||
| 	exit 1 | ||||
| fi | ||||
|   | ||||
| # Make sure tomcat is started with system locale | ||||
| if [ -r /etc/default/locale ]; then | ||||
| 	. /etc/default/locale | ||||
| 	export LANG | ||||
| fi | ||||
| 
 | ||||
| . /lib/lsb/init-functions | ||||
| . /etc/default/rcS | ||||
| 
 | ||||
| 
 | ||||
| # The following variables can be overwritten in $DEFAULT | ||||
| 
 | ||||
| # Run Tomcat 6 as this user ID | ||||
| TOMCAT6_USER=tomcat6 | ||||
| 
 | ||||
| # The first existing directory is used for JAVA_HOME (if JAVA_HOME is not | ||||
| # defined in $DEFAULT) | ||||
| JDK_DIRS="/usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm" | ||||
| 
 | ||||
| # Look for the right JVM to use | ||||
| for jdir in $JDK_DIRS; do | ||||
|     if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then | ||||
| 	JAVA_HOME="$jdir" | ||||
|     fi | ||||
| done | ||||
| export JAVA_HOME | ||||
| 
 | ||||
| 
 | ||||
| # Use the Java security manager? (yes/no) | ||||
| TOMCAT6_SECURITY=no | ||||
| 
 | ||||
| # Default Java options | ||||
| # Set java.awt.headless=true if JAVA_OPTS is not set so the | ||||
| # Xalan XSL transformer can work without X11 display on JDK 1.4+ | ||||
| # It also looks like the default heap size of 64M is not enough for most cases | ||||
| # so the maximum heap size is set to 128M | ||||
| if [ -z "$JAVA_OPTS" ]; then | ||||
| 	JAVA_OPTS="-Djava.awt.headless=true -Xmx128M" | ||||
| fi | ||||
| 
 | ||||
| # End of variables that can be overwritten in $DEFAULT | ||||
| 
 | ||||
| # overwrite settings from default file | ||||
| if [ -f "$DEFAULT" ]; then | ||||
| 	. "$DEFAULT" | ||||
| fi | ||||
| 
 | ||||
| if [ ! -f "$CATALINA_HOME/bin/bootstrap.jar" ]; then | ||||
| 	log_failure_msg "$NAME is not installed" | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| [ -f "$DAEMON" ] || exit 0 | ||||
| 
 | ||||
| POLICY_CACHE="$CATALINA_BASE/work/catalina.policy" | ||||
| 
 | ||||
| JAVA_OPTS="$JAVA_OPTS -Djava.endorsed.dirs=$CATALINA_HOME/endorsed -Dcatalina.base=$CATALINA_BASE -Dcatalina.home=$CATALINA_HOME -Djava.io.tmpdir=$JVM_TMP" | ||||
| 
 | ||||
| # Set the JSP compiler if set in the tomcat6.default file | ||||
| if [ -n "$JSP_COMPILER" ]; then | ||||
| 	JAVA_OPTS="$JAVA_OPTS -Dbuild.compiler=$JSP_COMPILER" | ||||
| fi | ||||
| 
 | ||||
| if [ "$TOMCAT6_SECURITY" = "yes" ]; then | ||||
| 	JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy=$POLICY_CACHE" | ||||
| fi | ||||
| 
 | ||||
| # Set juli LogManager if logging.properties is provided | ||||
| if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then | ||||
|   JAVA_OPTS="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties" | ||||
| fi | ||||
| 
 | ||||
| # Define other required variables | ||||
| CATALINA_PID="/var/run/$NAME.pid" | ||||
| BOOTSTRAP_CLASS=org.apache.catalina.startup.Bootstrap | ||||
| JSVC_CLASSPATH="/usr/share/java/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar" | ||||
| JSVC_CLASSPATH=$CLASSPATH:$JSVC_CLASSPATH | ||||
| 
 | ||||
| # Look for Java Secure Sockets Extension (JSSE) JARs | ||||
| if [ -z "${JSSE_HOME}" -a -r "${JAVA_HOME}/jre/lib/jsse.jar" ]; then | ||||
|     JSSE_HOME="${JAVA_HOME}/jre/" | ||||
| fi | ||||
| export JSSE_HOME | ||||
| 
 | ||||
| case "$1" in | ||||
|   start) | ||||
| 	if [ -z "$JAVA_HOME" ]; then | ||||
| 		log_failure_msg "no JDK found - please set JAVA_HOME" | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 
 | ||||
| 	if [ ! -d "$CATALINA_BASE/conf" ]; then | ||||
| 		log_failure_msg "invalid CATALINA_BASE: $CATALINA_BASE" | ||||
| 		exit 1 | ||||
| 	fi | ||||
| 
 | ||||
| 	log_daemon_msg "Starting $DESC" "$NAME" | ||||
| 	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ | ||||
| 		--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ | ||||
| 		>/dev/null; then | ||||
| 
 | ||||
| 		# Regenerate POLICY_CACHE file | ||||
| 		umask 022 | ||||
| 		echo "// AUTO-GENERATED FILE from /etc/tomcat6/policy.d/" \ | ||||
| 			> "$POLICY_CACHE" | ||||
| 		echo ""  >> "$POLICY_CACHE" | ||||
| 		if ls $CATALINA_BASE/conf/policy.d/*.policy > /dev/null 2>&1 ; then | ||||
| 		cat $CATALINA_BASE/conf/policy.d/*.policy \ | ||||
| 			>> "$POLICY_CACHE" | ||||
| 		fi | ||||
| 
 | ||||
| 		# Remove / recreate JVM_TMP directory | ||||
| 		rm -rf "$JVM_TMP" | ||||
| 		mkdir "$JVM_TMP" || { | ||||
| 			log_failure_msg "could not create JVM temporary directory" | ||||
| 			exit 1 | ||||
| 		} | ||||
| 		chown $TOMCAT6_USER "$JVM_TMP" | ||||
| 		cd "$JVM_TMP" | ||||
| 
 | ||||
| 
 | ||||
| 		# fix storage issues on nfs mounts | ||||
| 		umask 000 | ||||
| 		$DAEMON -user "$TOMCAT6_USER" -cp "$JSVC_CLASSPATH" \ | ||||
| 		    -outfile SYSLOG -errfile SYSLOG \ | ||||
| 		    -pidfile "$CATALINA_PID" $JAVA_OPTS "$BOOTSTRAP_CLASS" | ||||
| 
 | ||||
| 		sleep 5 | ||||
|         	if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ | ||||
| 			--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ | ||||
| 			>/dev/null; then | ||||
| 			log_end_msg 1 | ||||
| 		else | ||||
| 			log_end_msg 0 | ||||
| 		fi | ||||
| 	else | ||||
| 	        log_progress_msg "(already running)" | ||||
| 		log_end_msg 0 | ||||
| 	fi | ||||
| 	;; | ||||
|   stop) | ||||
| 	log_daemon_msg "Stopping $DESC" "$NAME" | ||||
|         if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ | ||||
| 		--user "$TOMCAT6_USER" --startas "$JAVA_HOME/bin/java" \ | ||||
| 		>/dev/null; then | ||||
| 		log_progress_msg "(not running)" | ||||
| 	else | ||||
| 		$DAEMON -cp "$JSVC_CLASSPATH" -pidfile "$CATALINA_PID" \ | ||||
| 		     -stop "$BOOTSTRAP_CLASS" | ||||
| 	fi | ||||
| 	rm -rf "$JVM_TMP" | ||||
| 	log_end_msg 0 | ||||
| 	;; | ||||
|    status) | ||||
|         if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ | ||||
| 		--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ | ||||
| 		>/dev/null; then | ||||
| 
 | ||||
| 		if [ -f "$CATALINA_PID" ]; then | ||||
| 		    log_success_msg "$DESC is not running, but pid file exists." | ||||
| 			exit 1 | ||||
| 		else | ||||
| 		    log_success_msg "$DESC is not running." | ||||
| 			exit 3 | ||||
| 		fi | ||||
| 	else | ||||
| 		log_success_msg "$DESC is running with pid `cat $CATALINA_PID`" | ||||
| 	fi | ||||
|         ;; | ||||
|   restart|force-reload) | ||||
|         if start-stop-daemon --test --stop --pidfile "$CATALINA_PID" \ | ||||
| 		--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ | ||||
| 		>/dev/null; then | ||||
| 		$0 stop | ||||
| 		sleep 1 | ||||
| 	fi | ||||
| 	$0 start | ||||
| 	;; | ||||
|   try-restart) | ||||
|         if start-stop-daemon --test --start --pidfile "$CATALINA_PID" \ | ||||
| 		--user $TOMCAT6_USER --startas "$JAVA_HOME/bin/java" \ | ||||
| 		>/dev/null; then | ||||
| 		$0 start | ||||
| 	fi | ||||
|         ;; | ||||
|   *) | ||||
| 	log_success_msg "Usage: $0 {start|stop|restart|try-restart|force-reload|status}" | ||||
| 	exit 1 | ||||
| 	;; | ||||
| esac | ||||
| 
 | ||||
| exit 0 | ||||
							
								
								
									
										283
									
								
								awsapi-setup/init/rpm/cloud-bridge
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										283
									
								
								awsapi-setup/init/rpm/cloud-bridge
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,283 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # tomcat6      This shell script takes care of starting and stopping Tomcat | ||||
| # | ||||
| # chkconfig: - 80 20 | ||||
| # | ||||
| ### BEGIN INIT INFO | ||||
| # Provides: tomcat6 | ||||
| # Required-Start: $network $syslog | ||||
| # Required-Stop: $network $syslog | ||||
| # Default-Start: | ||||
| # Default-Stop: | ||||
| # Description: Release implementation for Servlet 2.5 and JSP 2.1 | ||||
| # Short-Description: start and stop tomcat | ||||
| ### END INIT INFO | ||||
| # | ||||
| # - originally written by Henri Gomez, Keith Irwin, and Nicolas Mailhot | ||||
| # - heavily rewritten by Deepak Bhole and Jason Corley | ||||
| # | ||||
| 
 | ||||
| ## Source function library. | ||||
| #. /etc/rc.d/init.d/functions | ||||
| # Source LSB function library. | ||||
| export NAME=cloud-bridge | ||||
| DESC="CloudStack-specific Tomcat servlet engine" | ||||
| export CATALINA_BASE=/usr/share/cloud/bridge | ||||
| DEFAULT=$CATALINA_BASE/conf/tomcat6.conf | ||||
| TOMCAT_USER="cloud" | ||||
| export TOMCAT_LOG="${TOMCAT_LOG:-/var/log/tomcat6/catalina.out}" | ||||
| export TOMCAT_CFG=$DEFAULT | ||||
| if [ -r "$TOMCAT_CFG" ]; then | ||||
|     . $TOMCAT_CFG | ||||
| fi | ||||
| 
 | ||||
| if [ -r /lib/lsb/init-functions ]; then | ||||
|     . /lib/lsb/init-functions | ||||
| else | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| DISTRIB_ID=`lsb_release -i -s 2>/dev/null` | ||||
| 
 | ||||
| # For SELinux we need to use 'runuser' not 'su' | ||||
| if [ -x "/sbin/runuser" ]; then | ||||
|     SU="/sbin/runuser -m" | ||||
| else | ||||
|     SU="/bin/su -m" | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| # Get instance specific config file | ||||
| if [ -r "/etc/sysconfig/${NAME}" ]; then | ||||
|     . /etc/sysconfig/${NAME} | ||||
| fi | ||||
| 
 | ||||
| 
 | ||||
| # Path to the tomcat launch script | ||||
| TOMCAT_SCRIPT="/usr/sbin/tomcat6" | ||||
| 
 | ||||
| # Tomcat program name | ||||
| TOMCAT_PROG="${NAME}" | ||||
|          | ||||
| 
 | ||||
| RETVAL="0" | ||||
| 
 | ||||
| # Look for open ports, as the function name might imply | ||||
| function findFreePorts() { | ||||
|     local isSet1="false" | ||||
|     local isSet2="false" | ||||
|     local isSet3="false" | ||||
|     local lower="8000" | ||||
|     randomPort1="0" | ||||
|     randomPort2="0" | ||||
|     randomPort3="0" | ||||
|     local -a listeners="( $( | ||||
|                         netstat -ntl | \ | ||||
|                         awk '/^tcp/ {gsub("(.)*:", "", $4); print $4}' | ||||
|                     ) )" | ||||
|     while [ "$isSet1" = "false" ] || \ | ||||
|           [ "$isSet2" = "false" ] || \ | ||||
|           [ "$isSet3" = "false" ]; do | ||||
|         let port="${lower}+${RANDOM:0:4}" | ||||
|         if [ -z `expr " ${listeners[*]} " : ".*\( $port \).*"` ]; then | ||||
|             if [ "$isSet1" = "false" ]; then | ||||
|                 export randomPort1="$port" | ||||
|                 isSet1="true" | ||||
|             elif [ "$isSet2" = "false" ]; then | ||||
|                 export randomPort2="$port" | ||||
|                 isSet2="true" | ||||
|             elif [ "$isSet3" = "false" ]; then | ||||
|                 export randomPort3="$port" | ||||
|                 isSet3="true" | ||||
|             fi | ||||
|         fi | ||||
|     done | ||||
| } | ||||
| 
 | ||||
| function makeHomeDir() { | ||||
|     if [ ! -d "$CATALINA_HOME" ]; then | ||||
|         echo "$CATALINA_HOME does not exist, creating" | ||||
|         if [ ! -d "/usr/share/${NAME}" ]; then | ||||
|             mkdir /usr/share/${NAME} | ||||
|             cp -pLR /usr/share/tomcat6/* /usr/share/${NAME} | ||||
|         fi | ||||
|         mkdir -p /var/log/${NAME} \ | ||||
|                  /var/cache/${NAME} \ | ||||
|                  /var/tmp/${NAME} | ||||
|         ln -fs /var/cache/${NAME} ${CATALINA_HOME}/work | ||||
|         ln -fs /var/tmp/${NAME} ${CATALINA_HOME}/temp | ||||
|         cp -pLR /usr/share/${NAME}/bin $CATALINA_HOME | ||||
|         cp -pLR /usr/share/${NAME}/conf $CATALINA_HOME | ||||
|         ln -fs /usr/share/java/tomcat6 ${CATALINA_HOME}/lib | ||||
|         ln -fs /usr/share/tomcat6/webapps ${CATALINA_HOME}/webapps | ||||
|         chown ${TOMCAT_USER}:${TOMCAT_USER} /var/log/${NAME} | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| function parseOptions() { | ||||
|     options="" | ||||
|     options="$options $( | ||||
|                  awk '!/^#/ && !/^$/ { ORS=" "; print "export ", $0, ";" }' \ | ||||
|                  $TOMCAT_CFG | ||||
|              )" | ||||
|     if [ -r "/etc/sysconfig/${NAME}" ]; then | ||||
|         options="$options $( | ||||
|                      awk '!/^#/ && !/^$/ { ORS=" ";  | ||||
|                                            print "export ", $0, ";" }' \ | ||||
|                      /etc/sysconfig/${NAME} | ||||
|                  )" | ||||
|     fi | ||||
|     TOMCAT_SCRIPT="$options ${TOMCAT_SCRIPT}" | ||||
| } | ||||
| 
 | ||||
| # See how we were called. | ||||
| function start() { | ||||
|     echo -n "Starting ${TOMCAT_PROG}: " | ||||
|     if [ -f "/var/lock/subsys/${NAME}" ] ; then | ||||
|         if [ -f "/var/run/${NAME}.pid" ]; then | ||||
|             read kpid < /var/run/${NAME}.pid | ||||
| #           if checkpid $kpid 2>&1; then | ||||
|             if [ -d "/proc/${kpid}" ]; then | ||||
|                 log_success_msg | ||||
|                 if [ "$DISTRIB_ID" = "MandrivaLinux" ]; then | ||||
|                     echo | ||||
|                 fi | ||||
|                 return 0 | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
|     # fix permissions on the log and pid files | ||||
|     export CATALINA_PID="/var/run/${NAME}.pid" | ||||
|     touch $CATALINA_PID | ||||
|     chown ${TOMCAT_USER}:${TOMCAT_USER} $CATALINA_PID | ||||
|     touch $TOMCAT_LOG | ||||
|     chown ${TOMCAT_USER}:${TOMCAT_USER} $TOMCAT_LOG | ||||
|     if [ "$CATALINA_HOME" != "/usr/share/tomcat6" ]; then | ||||
|         # Create a tomcat directory if it doesn't exist | ||||
|         makeHomeDir | ||||
|         # If CATALINA_HOME doesn't exist modify port number so that | ||||
|         # multiple instances don't interfere with each other | ||||
|         findFreePorts | ||||
|         sed -i -e "s/8005/${randomPort1}/g" -e "s/8080/${CONNECTOR_PORT}/g" \ | ||||
|             -e "s/8009/${randomPort2}/g" -e "s/8443/${randomPort3}/g" \ | ||||
|             ${CATALINA_HOME}/conf/server.xml | ||||
|     fi | ||||
|     parseOptions | ||||
|     if [ "$SECURITY_MANAGER" = "true" ]; then | ||||
|         $SU $TOMCAT_USER -c "${TOMCAT_SCRIPT} start-security" \ | ||||
|             >> $TOMCAT_LOG 2>&1 | ||||
|     else | ||||
|         $SU $TOMCAT_USER -c "${TOMCAT_SCRIPT} start" >> $TOMCAT_LOG 2>&1 | ||||
|     fi | ||||
|     RETVAL="$?" | ||||
|     if [ "$RETVAL" -eq 0 ]; then  | ||||
|         log_success_msg | ||||
|         touch /var/lock/subsys/${NAME} | ||||
|     else | ||||
|         log_failure_msg | ||||
|     fi | ||||
|     if [ "$DISTRIB_ID" = "MandrivaLinux" ]; then | ||||
|         echo | ||||
|     fi | ||||
|     return $RETVAL | ||||
| } | ||||
| 
 | ||||
| function stop() { | ||||
|     RETVAL="0" | ||||
|     echo -n "Stopping ${TOMCAT_PROG}: " | ||||
|     if [ -f "/var/lock/subsys/${NAME}" ]; then | ||||
|         parseOptions | ||||
|         $SU $TOMCAT_USER -c "${TOMCAT_SCRIPT} stop" >> $TOMCAT_LOG 2>&1 | ||||
|         RETVAL="$?" | ||||
|         if [ "$RETVAL" -eq "0" ]; then | ||||
|             count="0" | ||||
|             if [ -f "/var/run/${NAME}.pid" ]; then | ||||
|                 read kpid < /var/run/${NAME}.pid | ||||
|                 until [ "$(ps --pid $kpid | grep -c $kpid)" -eq "0" ] || \ | ||||
|                       [ "$count" -gt "$SHUTDOWN_WAIT" ]; do | ||||
|                     if [ "$SHUTDOWN_VERBOSE" = "true" ]; then | ||||
|                         echo "waiting for processes $kpid to exit" | ||||
|                     fi | ||||
|                     sleep 1 | ||||
|                     let count="${count}+1" | ||||
|                 done | ||||
|                 if [ "$count" -gt "$SHUTDOWN_WAIT" ]; then | ||||
|                     if [ "$SHUTDOWN_VERBOSE" = "true" ]; then | ||||
|                         echo "killing processes which didn't stop after $SHUTDOWN_WAIT seconds" | ||||
|                     fi | ||||
|                     kill -9 $kpid | ||||
|                 fi | ||||
|                 log_success_msg | ||||
|             fi | ||||
|             rm -f /var/lock/subsys/${NAME} /var/run/${NAME}.pid | ||||
|         else | ||||
|             log_failure_msg | ||||
|         fi | ||||
|     else | ||||
|         log_success_msg | ||||
|     fi | ||||
|     if [ "$DISTRIB_ID" = "MandrivaLinux" ]; then | ||||
|         echo | ||||
|     fi | ||||
|     return $RETVAL | ||||
| } | ||||
| 
 | ||||
| # See how we were called. | ||||
| case "$1" in | ||||
|     start) | ||||
|         start | ||||
|         ;; | ||||
|     stop) | ||||
|         stop | ||||
|         ;; | ||||
|     restart) | ||||
|         stop | ||||
|         start | ||||
|         ;; | ||||
|     condrestart|try-restart) | ||||
|         if [ -f "/var/run/${NAME}.pid" ]; then | ||||
|             stop | ||||
|             start | ||||
|         fi | ||||
|         ;; | ||||
|     reload) | ||||
|         RETVAL="3" | ||||
|         ;; | ||||
|     force-reload) | ||||
|         if [ -f "/var/run/${NAME}.pid" ]; then | ||||
|             stop | ||||
|             start | ||||
|         fi | ||||
|         ;; | ||||
|     status) | ||||
|         if [ -f "/var/run/${NAME}.pid" ]; then | ||||
| #           status ${NAME} | ||||
| #           RETVAL="$?" | ||||
|             read kpid < /var/run/${NAME}.pid | ||||
|             if [ -d "/proc/${kpid}" ]; then | ||||
|                 echo "${NAME} (pid ${kpid}) is running..." | ||||
|                 RETVAL="0" | ||||
|             fi | ||||
|         else | ||||
|             pid="$(/usr/bin/pgrep -d , -u ${TOMCAT_USER} -G ${TOMCAT_USER} java)" | ||||
|             if [ -z "$pid" ]; then | ||||
| #               status ${NAME} | ||||
| #               RETVAL="$?" | ||||
|                 echo "${NAME} is stopped" | ||||
|                 RETVAL="3" | ||||
|             else | ||||
|                 echo "${NAME} (pid $pid) is running..." | ||||
|                 RETVAL="0" | ||||
|             fi | ||||
|         fi | ||||
|         ;; | ||||
|     version) | ||||
|         ${TOMCAT_SCRIPT} version | ||||
|         ;; | ||||
|     *) | ||||
|         echo "Usage: $0 {start|stop|restart|condrestart|try-restart|reload|force-reload|status|version}" | ||||
|         RETVAL="2" | ||||
| esac | ||||
| 
 | ||||
| exit $RETVAL | ||||
							
								
								
									
										126
									
								
								awsapi-setup/setup/cloud-setup-bridge
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								awsapi-setup/setup/cloud-setup-bridge
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,126 @@ | ||||
| #!/bin/bash | ||||
| # | ||||
| # Cloud.com Bridge setup script. | ||||
| # | ||||
| 
 | ||||
| settingsFile="/usr/share/cloud/bridge/conf/ec2-service.properties" | ||||
| 
 | ||||
| function readCurrentSettings () { | ||||
| 	readVar managementServer | ||||
| 	readVar cloudAPIPort | ||||
|     readVar cloudstackVersion | ||||
| 	readVar WSDLVersion | ||||
| 	readVar keystore | ||||
| 	readVar keystorePass | ||||
| 	readVar m1.small.serviceId | ||||
|  	readVar m1.large.serviceId | ||||
| 	readVar m1.xlarge.serviceId | ||||
| 	readVar c1.medium.serviceId | ||||
| 	readVar c1.xlarge.serviceId | ||||
| 	readVar m2.xlarge.serviceId | ||||
| 	readVar m2.2xlarge.serviceId | ||||
| 	readVar m2.4xlarge.serviceId | ||||
| 	readVar cc1.4xlarge.serviceId | ||||
| 	readVar dbHost | ||||
| 	readVar dbName | ||||
| 	readVar dbUser | ||||
| 	readVar dbPassword | ||||
| } | ||||
| 
 | ||||
| function readVar () { | ||||
| 	local _pointer=$(sub "$1") | ||||
| 	local _tmp="`cat $settingsFile|grep \"$1=\"|awk -F= '{print $2}'|tr -d '\r'`" | ||||
| 	eval $_pointer="$_tmp" | ||||
| } | ||||
| 
 | ||||
| function readValue () { | ||||
| 	local _value | ||||
| 	local _tmp | ||||
| 	local _pointer=$(sub "$2") | ||||
| 	eval _value="\$$_pointer" | ||||
| 	printf "%s [%s]: " "$1" "$_value" | ||||
| 	read -e _tmp | ||||
| 
 | ||||
| 	if [ "$_tmp" != "" ] | ||||
| 	then | ||||
| 		eval $_pointer="$_tmp" | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| function getNewValues () { | ||||
| 	readValue "Management server hostname or IP" managementServer | ||||
| 	readValue "Management server port" cloudAPIPort  | ||||
| 
 | ||||
| 	readValue "Service offering ID for m1.small" m1.small.serviceId | ||||
| 	readValue "Service offering ID for m1.large" m1.large.serviceId | ||||
| 	readValue "Service offering ID for m1.xlarge" m1.xlarge.serviceId | ||||
| 
 | ||||
| 	readValue "Service offering ID for c1.medium" c1.medium.serviceId | ||||
| 	readValue "Service offering ID for c1.xlarge" c1.xlarge.serviceId | ||||
| 
 | ||||
| 	readValue "Service offering ID for m2.xlarge" m2.xlarge.serviceId | ||||
| 	readValue "Service offering ID for m2.2xlarge" m2.2xlarge.serviceId | ||||
| 	readValue "Service offering ID for m2.4xlarge" m2.4xlarge.serviceId | ||||
| 	readValue "Service offering ID for cc1.4xlarge" cc1.4xlarge.serviceId | ||||
| } | ||||
| 
 | ||||
| function sub () { | ||||
| 	echo "$1" | awk '{gsub(/\./, "_", $0); print $0}'	 | ||||
| } | ||||
| 
 | ||||
| function saveValue () { | ||||
| 	local _pointer=$(sub "$1") | ||||
| 	local _value | ||||
| 	eval _value="\$$_pointer" | ||||
| 	echo "$1=$_value" >> $settingsFile | ||||
| } | ||||
| 
 | ||||
| function saveValues () { | ||||
| 	cat /dev/null > $settingsFile | ||||
| 	saveValue managementServer | ||||
| 	saveValue cloudAPIPort | ||||
| 	saveValue cloudstackVersion | ||||
| 	saveValue WSDLVersion | ||||
| 	saveValue keystore | ||||
| 	saveValue keystorePass | ||||
| 	saveValue m1.small.serviceId | ||||
|  	saveValue m1.large.serviceId | ||||
| 	saveValue m1.xlarge.serviceId | ||||
| 	saveValue c1.medium.serviceId | ||||
| 	saveValue c1.xlarge.serviceId | ||||
| 	saveValue m2.xlarge.serviceId | ||||
| 	saveValue m2.2xlarge.serviceId | ||||
| 	saveValue m2.4xlarge.serviceId | ||||
| 	saveValue cc1.4xlarge.serviceId | ||||
| 	saveValue dbHost | ||||
| 	saveValue dbName | ||||
| 	saveValue dbUser | ||||
| 	saveValue dbPassword | ||||
| } | ||||
| 
 | ||||
| echo "Welcome to the CloudBridge setup." | ||||
| 
 | ||||
| 
 | ||||
| if [ ! -e $settingsFile ] | ||||
| then  | ||||
|     settingsFile=$1 | ||||
|     if [ ! -e $settingsFile ] | ||||
|     then | ||||
| 	echo "Error: Settings file not found." | ||||
| 	exit 1 | ||||
|     fi | ||||
| fi | ||||
| if [ ! -w $settingsFile ] | ||||
| then  | ||||
| 	echo "Error: Insufficient permissions. Run as super-user." | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| readCurrentSettings | ||||
| 
 | ||||
| printf "Enter suitable values or press enter for default. \n\n" | ||||
| 
 | ||||
| getNewValues | ||||
| saveValues | ||||
| 
 | ||||
| printf "\nValues saved. Restart the cloud-bridge service for the changes to become active.\n\n" | ||||
							
								
								
									
										76
									
								
								awsapi-setup/setup/cloudstack-aws-api-register
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								awsapi-setup/setup/cloudstack-aws-api-register
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | ||||
| #!/cygdrive/c/python26/python | ||||
| 
 | ||||
| import base64 | ||||
| import hmac | ||||
| import os | ||||
| import sys | ||||
| import urllib2 | ||||
| import urllib | ||||
| import httplib | ||||
| from datetime import datetime | ||||
| from optparse import OptionParser | ||||
| from urlparse import urlparse | ||||
| 
 | ||||
| try: | ||||
|     from hashlib import sha1 as sha | ||||
| except ImportError: | ||||
|     import sha | ||||
| 
 | ||||
| def get_signature(key, url, query):     | ||||
|     netloc, path = urlparse(url)[1:3] | ||||
|     return urllib.quote_plus(base64.b64encode( | ||||
|             hmac.new(key, '\n'.join(['GET', netloc, path, query]), sha).digest())) | ||||
| 
 | ||||
| def get_url(url, api_key, secret_key, action, query): | ||||
|     amzn_string = 'AWSAccessKeyId=' + api_key + '&Action=' + action + '&SignatureMethod=HmacSHA1' | ||||
|     amzn_string += '&SignatureVersion=2&Timestamp='+ datetime.now().isoformat()[:19] +'Z&Version=2010-11-15' | ||||
|     query = amzn_string + '&' + query | ||||
|     url = url + '?' + query + '&Signature=' + get_signature(secret_key, url, query) | ||||
|     try: | ||||
|         urllib2.urlopen(url) | ||||
| 	if action == 'SetCertificate': | ||||
| 		print 'User registration is successful!' | ||||
| 	return True | ||||
|     except urllib2.HTTPError, e: | ||||
| 		print  'User registration failed with http error code:' , e.code | ||||
| 		return False | ||||
|     except urllib2.URLError, e:     | ||||
| 		print 'User registration failed with error: ' , e.reason | ||||
| 		return False | ||||
|     | ||||
| 
 | ||||
| def register(url, api_key, secret_key, cert): | ||||
|     # Register API keys | ||||
|     query = 'accesskey=' + api_key + '&secretkey=' + secret_key | ||||
|     result = get_url(url, api_key, secret_key, 'SetUserKeys', query) | ||||
| 
 | ||||
|     if result == True: | ||||
| 	    # Tie Certifcate to API keys | ||||
| 	    query = 'cert=' + urllib.quote_plus(cert) | ||||
| 	    get_url(url, api_key, secret_key, 'SetCertificate', query) | ||||
| 
 | ||||
| 
 | ||||
| def get_opts(): | ||||
|     parser = OptionParser() | ||||
|     parser.add_option('-a', '--apikey')  | ||||
|     parser.add_option('-s', '--secretkey')  | ||||
|     parser.add_option('-c', '--cert', help='Name of a file containing an X.509 certificate')  | ||||
|     parser.add_option('-u', '--url', help='CloudStack AWSAPI URL, eg. http://cloudstack.host:8080/awsapi')  | ||||
|     (options, args) = parser.parse_args() | ||||
|     if None in [options.apikey, options.secretkey, options.cert, options.url]: | ||||
|         print 'Error: Missing argument\n' | ||||
|         parser.print_help() | ||||
|         sys.exit(1) | ||||
|     return options | ||||
| 
 | ||||
| def validate_opts(options): | ||||
|     if not os.path.isfile(options.cert): | ||||
|         print 'Error reading file: ' + options.cert   | ||||
|         sys.exit(1) | ||||
|     f = open(options.cert)  | ||||
|     options.cert = f.read() | ||||
|     return options | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     opts = validate_opts(get_opts()) | ||||
|     register(opts.url, opts.apikey, opts.secretkey, opts.cert) | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user