cloudstore-developers
Changes
bin/config.aws.ini 0(+0 -0)
bin/config.openstack.ini 33(+33 -0)
bin/README.md 7(+7 -0)
bin/run.py 11(+9 -2)
cloudscale/deployment_scripts/config.py 57(+56 -1)
cloudscale/deployment_scripts/logger.py 12(+0 -12)
cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_balancer_instance.py 21(+3 -18)
cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mongodb_instances.py 62(+17 -45)
cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mysql_instances.py 47(+8 -39)
cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_showcase_instances.py 43(+5 -38)
Details
bin/config.openstack.ini 33(+33 -0)
diff --git a/bin/config.openstack.ini b/bin/config.openstack.ini
new file mode 100644
index 0000000..7fa9a38
--- /dev/null
+++ b/bin/config.openstack.ini
@@ -0,0 +1,33 @@
+[OPENSTACK]
+username = <your username>
+password = <your password>
+tenant_name = cloudscale
+auth_url = http://localhost:5000/v2.0
+key_name = key-pair
+key_pair = key_pair
+
+[APPLICATION]
+num_instances = 2
+image_name = Ubuntu 14.04
+image_username = xlab
+instance_type = 2GB-2CPU-10GB
+
+[DATABASE]
+database_type = mysql
+database_name = tpcw
+database_user = root
+database_pass = password
+instance_type = flavor 2
+num_replicas = 5
+connection_pool_size = 200
+
+[MYSQL]
+setup_type = master-slave
+dump_url = http://cloudscale.xlab.si/showcase/dumps/rds-tpcw-dump-latest.sql
+image_name = mysql-master-slave
+showcase_url = http://cloudscale.xlab.si/showcase/builds/showcaseV3-sql.war
+
+[MONGODB]
+dump_url = http://cloudscale.xlab.si/showcase/dumps/mongo-dump-tpcw-latest.tar.gz
+image_name = cloudscale-db-mongo-image
+showcase_url = http://cloudscale.xlab.si/showcase/builds/showcaseV3-nosql.war
bin/README.md 7(+7 -0)
diff --git a/bin/README.md b/bin/README.md
new file mode 100644
index 0000000..0f70731
--- /dev/null
+++ b/bin/README.md
@@ -0,0 +1,7 @@
+Edit config.aws.ini if you want to deploy showcase on AWS and then run:
+
+$ python run.py aws config.aws.ini
+
+Edit config.openstack.ini if you want to deploy showcase on Openstack and then run:
+
+$ python run.py openstack config.openstack.ini
\ No newline at end of file
bin/run.py 11(+9 -2)
diff --git a/bin/run.py b/bin/run.py
index 201e158..d7ac0a2 100644
--- a/bin/run.py
+++ b/bin/run.py
@@ -1,14 +1,21 @@
+import logging
import os
import uuid
import sys
from cloudscale.deployment_scripts import deploy
from cloudscale.deployment_scripts.logger import Logger
+class MyLogger(Logger):
+
+ def log(self, msg, level=logging.INFO, append_to_last=False, fin=False):
+ print msg
+
if __name__ == "__main__":
if len(sys.argv) == 3:
config_path = sys.argv[2]
infrastructure = sys.argv[1]
- logger = Logger()
- deploy(infrastructure, config_path, os.path.abspath(os.path.dirname(__file__)), logger)
+ logger = MyLogger()
+ url = deploy(infrastructure, config_path, os.path.abspath(os.path.dirname(__file__)), logger)
+ print "Showcase is deployed on %s" % url
else:
print """Usage: python run.py <aws|openstack> <path_to_config>"""
\ No newline at end of file
diff --git a/cloudscale/deployment_scripts/__init__.py b/cloudscale/deployment_scripts/__init__.py
index 21c645b..da59192 100644
--- a/cloudscale/deployment_scripts/__init__.py
+++ b/cloudscale/deployment_scripts/__init__.py
@@ -9,7 +9,7 @@ from cloudscale.deployment_scripts.scripts.infrastructure.openstack import opens
def deploy(infrastructure, config_path, results_dir, logger):
config = Config(infrastructure, results_dir, config_path)
_setup_backend(config, logger)
- _setup_frontend(config, logger)
+ return _setup_frontend(config, logger)
def _setup_backend(config, logger):
backend = Backend(config, logger)
@@ -33,4 +33,5 @@ def _setup_frontend(config, logger):
elif config.provider == 'openstack':
showcase_url = frontend.setup_openstack_frontend()
- logger.log('You can view your showcase on <a href="http://%s/showcase-1-a">http://%s/showcase-1-a</a>' % (showcase_url, showcase_url), fin=True)
+ return showcase_url
+
cloudscale/deployment_scripts/config.py 57(+56 -1)
diff --git a/cloudscale/deployment_scripts/config.py b/cloudscale/deployment_scripts/config.py
index 5007668..24ceb86 100644
--- a/cloudscale/deployment_scripts/config.py
+++ b/cloudscale/deployment_scripts/config.py
@@ -1,6 +1,7 @@
+import novaclient
from cloudscale.deployment_scripts.scripts import read_config, create_user_path
-class Setup:
+class AWSConfig:
def __init__(self, config, logger):
self.logger = logger
@@ -35,6 +36,60 @@ class Setup:
self.rds_master_identifier = self.cfg.get('RDS', 'master_identifier')
self.rds_replica_identifier = self.cfg.get('RDS', 'replica_identifier')
+class OpenstackConfig:
+ def __init__(self, config, logger):
+ self.logger = logger
+ self.config = config
+ self.cfg = config.cfg
+
+ self.read_config()
+
+ self.nc = novaclient.Client(self.user, self.pwd, self.tenant, auth_url=self.url)
+
+ def read_config(self):
+ self.user = self.cfg.get('OPENSTACK', 'username')
+ self.pwd = self.cfg.get('OPENSTACK', 'password')
+ self.url = self.cfg.get('OPENSTACK', 'auth_url')
+ self.tenant = self.cfg.get('OPENSTACK', 'tenant_name')
+ self.image_name = self.cfg.get('APPLICATION', 'image_name')
+ self.remote_user = self.cfg.get('APPLICATION', 'image_username')
+
+ self.instance_type = self.cfg.get('APPLICATION', 'instance_type')
+
+ self.num_instances = self.cfg.get('APPLICATION', 'num_instances')
+ self.key_name = self.cfg.get('OPENSTACK', 'key_name')
+ self.key_pair = self.cfg.get('OPENSTACK', 'key_pair')
+
+ self.database_type = self.cfg.get('DATABASE', 'database_type').lower()
+ self.database_instance_type = self.cfg.get('DATABASE', 'instance_type')
+ self.database_num_replicas = self.cfg.get('DATABASE', 'num_replicas')
+ self.database_name = self.cfg.get('DATABASE', 'database_name')
+ self.database_user = self.cfg.get('DATABASE', 'database_user')
+ self.database_pass = self.cfg.get('DATABASE', 'database_pass')
+ self.connection_pool_size = self.cfg.get('DATABASE', 'connection_pool_size')
+ self.mongo_image_name = self.cfg.get('MONGODB', 'image_name')
+ self.mysql_setup_type = self.cfg.get('MYSQL', 'setup_type')
+ self.mysql_image_name = self.cfg.get('MYSQL', 'image_name')
+ self.showcase_url = self.get_showcase_url()
+ self.dump_url = self.get_dump_url()
+
+
+ def get_dump_url(self):
+ if self.database_type == 'mysql':
+ return self.cfg.get('MYSQL', 'dump_url')
+ elif self.database_type == 'mongodb' or self.database_type == 'mongo':
+ return self.cfg.get('MONGODB', 'dump_url')
+ else:
+ raise Exception("Wrong database type!")
+
+ def get_showcase_url(self):
+ if self.database_type == 'mysql':
+ return self.cfg.get('MYSQL', 'showcase_url')
+ elif self.database_type == 'mongodb' or self.database_type == 'mongo':
+ return self.cfg.get('MONGODB', 'showcase_url')
+ else:
+ raise Exception("Wrong database type!")
+
class Config:
diff --git a/cloudscale/deployment_scripts/frontend.py b/cloudscale/deployment_scripts/frontend.py
index 0a93b2d..c0da0a7 100644
--- a/cloudscale/deployment_scripts/frontend.py
+++ b/cloudscale/deployment_scripts/frontend.py
@@ -1,6 +1,6 @@
import os
import time
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts.infrastructure.aws import aws_create_keypair
from cloudscale.deployment_scripts.scripts.infrastructure.aws import aws_create_instance
from cloudscale.deployment_scripts.scripts.infrastructure.aws import aws_create_loadbalancer
@@ -12,10 +12,10 @@ from cloudscale.deployment_scripts.scripts.infrastructure.openstack import opens
-class Frontend(Setup):
+class Frontend(AWSConfig):
def __init__(self, config, logger):
- Setup.__init__(self, config, logger)
+ AWSConfig.__init__(self, config, logger)
self.instance_ids = []
self.ip_addresses = []
cloudscale/deployment_scripts/logger.py 12(+0 -12)
diff --git a/cloudscale/deployment_scripts/logger.py b/cloudscale/deployment_scripts/logger.py
index 020fbc7..a31453e 100644
--- a/cloudscale/deployment_scripts/logger.py
+++ b/cloudscale/deployment_scripts/logger.py
@@ -5,17 +5,5 @@ class Logger:
def __init__(self):
pass
- def info(self, msg):
- logging.info(msg)
-
def log(self, msg, level=logging.INFO, append_to_last=False, fin=False):
logging.log(level, msg)
-
- def debug(self, msg):
- logging.debug(msg)
-
- def error(self, msg):
- logging.error(msg)
-
- def warning(self, msg):
- logging.warning(msg)
\ No newline at end of file
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_ami.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_ami.py
index 3c7828d..f1e9da4 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_ami.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_ami.py
@@ -2,13 +2,13 @@
import boto.ec2
import time
import sys
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class EC2CreateAMI(Setup):
+class EC2CreateAMI(AWSConfig):
def __init__(self, config, logger):
- Setup.__init__(self, config, logger)
+ AWSConfig.__init__(self, config, logger)
self.conn = boto.ec2.connect_to_region(self.region,
aws_access_key_id=self.access_key,
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
index 7cf91f3..c318332 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
@@ -7,14 +7,14 @@ import boto.ec2.cloudwatch
from boto.ec2.cloudwatch import MetricAlarm
import sys
from boto.ec2.autoscale.tag import Tag
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class Autoscalability(Setup):
+class Autoscalability(AWSConfig):
def __init__(self, config, logger):
- Setup.__init__(self, config, logger)
+ AWSConfig.__init__(self, config, logger)
self.as_ami_id = self.cfg.get('infrastructure', 'ami_id')
def create(self):
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
index d69a5cc..10776f1 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
@@ -5,14 +5,14 @@ import time
import paramiko
import sys, os
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class CreateEC2Instance(Setup):
+class CreateEC2Instance(AWSConfig):
def __init__(self, config, logger):
- Setup.__init__(self, config, logger)
+ AWSConfig.__init__(self, config, logger)
self.conn = boto.ec2.connect_to_region(
self.region,
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_keypair.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_keypair.py
index a296b64..1fae129 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_keypair.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_keypair.py
@@ -2,14 +2,14 @@ from boto import ec2
import os
from boto.exception import EC2ResponseError
import sys
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class CreateKeyPair(Setup):
+class CreateKeyPair(AWSConfig):
def __init__(self, user_path, config, logger):
- Setup.__init__(self, config, logger)
+ AWSConfig.__init__(self, config, logger)
self.user_path = user_path
def create(self):
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_loadbalancer.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_loadbalancer.py
index f144fc7..f2fe01b 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_loadbalancer.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_loadbalancer.py
@@ -2,14 +2,14 @@ from boto import ec2
from boto.exception import BotoServerError
import sys
import time
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class CreateLoadbalancer(Setup):
+class CreateLoadbalancer(AWSConfig):
def __init__(self, config, logger):
- Setup.__init__(self, config, logger)
+ AWSConfig.__init__(self, config, logger)
def create(self, instances):
self.instances = instances
@@ -36,7 +36,6 @@ class CreateLoadbalancer(Setup):
lb = []
i+=1
- time.sleep(10)
lb = conn.create_load_balancer(lb_name, zones, ports)
self.attach_instances(lb)
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_remove_all.py b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_remove_all.py
index efc5d5c..ba03057 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_remove_all.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_remove_all.py
@@ -9,13 +9,13 @@ from boto.exception import BotoServerError
from boto.ec2.cloudwatch import MetricAlarm
import time
import sys
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class RemoveAll(Setup):
+class RemoveAll(AWSConfig):
def __init__(self, cfg, logger):
- Setup.__init__(self, cfg, logger)
+ AWSConfig.__init__(self, cfg, logger)
self.conn_ec2 = boto.ec2.connect_to_region(self.region,
aws_access_key_id=self.access_key,
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_balancer_instance.py b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_balancer_instance.py
index c4fa133..ccc6791 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_balancer_instance.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_balancer_instance.py
@@ -3,30 +3,15 @@ import os
from novaclient.v2 import client as novaclient
import time
import sys
+from cloudscale.deployment_scripts.config import OpenstackConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class CreateInstance:
+class CreateInstance(OpenstackConfig):
def __init__(self, config, logger):
- self.cfg = config.cfg
- self.config = config
- self.logger = logger
-
- self.user = self.cfg.get('OPENSTACK', 'username')
- self.pwd = self.cfg.get('OPENSTACK', 'password')
- self.url = self.cfg.get('OPENSTACK', 'auth_url')
- self.tenant = self.cfg.get('OPENSTACK', 'tenant_name')
-
- self.image_name = self.cfg.get('OPENSTACK', 'image_name')
-
- self.instance_type = self.cfg.get('OPENSTACK', 'instance_type')
+ OpenstackConfig.__init__(self, config, logger)
self.instance_name = 'cloudscale-lb'
- self.num_instances = self.config.fr.get('num_instances')
- self.key_name = self.cfg.get('OPENSTACK', 'key_name')
- self.key_pair = self.cfg.get('OPENSTACK', 'key_pair')
-
- self.database_type = self.cfg.get('OPENSTACK', 'database_type').lower()
self.nc = novaclient.Client(self.user, self.pwd, self.tenant, auth_url=self.url)
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mongodb_instances.py b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mongodb_instances.py
index 274b968..34c2916 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mongodb_instances.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mongodb_instances.py
@@ -2,46 +2,19 @@ import os
from novaclient.v2 import client as novaclient
import time
import paramiko
+from cloudscale.deployment_scripts.config import OpenstackConfig
-class ConfigureMongodb:
- def __init__(self, config, logger):
- self.cfg = config.cfg
- self.config = config
- self.logger = logger
-
- self.user = self.cfg.get('OPENSTACK', 'username')
- self.pwd = self.cfg.get('OPENSTACK', 'password')
- self.url = self.cfg.get('OPENSTACK', 'auth_url')
- self.tenant = self.cfg.get('OPENSTACK', 'tenant_name')
-
- self.image_name = self.cfg.get('OPENSTACK', 'image_name')
+class ConfigureMongodb(OpenstackConfig):
- self.instance_type = self.cfg.get('MONGODB', 'instance_type')
+ def __init__(self, config, logger):
+ OpenstackConfig.__init__(self, config, logger)
self.instance_name = 'cloudscale-db-mongo'
- self.num_replicas = self.cfg.get('MONGODB', 'num_replicas')
-
- self.key_name = self.cfg.get('OPENSTACK', 'key_name')
- self.key_pair = self.cfg.get('OPENSTACK', 'key_pair')
-
- self.mongodb_image_name = "cloudscale-db-mongo-image"
-
- self.database_name = self.cfg.get('MONGODB', 'database_name')
- self.database_user = self.cfg.get('MONGODB', 'database_user')
- self.database_pass = self.cfg.get('MONGODB', 'database_pass')
-
- self.generate_dump_path = self.cfg.get('MONGODB', 'generate_dump_path')
-
- self.database_type = self.cfg.get('OPENSTACK', 'database_type').lower()
-
- self.remote_user = self.cfg.get('OPENSTACK', 'image_username')
-
- self.nc = novaclient.Client(self.user, self.pwd, self.tenant, auth_url=self.url)
self.logger.log("Creating database instances:")
images = self.nc.images.list()
for image in images:
- if image.name == self.mongodb_image_name:
+ if image.name == self.mongo_image_name:
self.logger.log('Image already exists.')
break
else:
@@ -51,9 +24,9 @@ class ConfigureMongodb:
USERNAME=%s
""" % self.remote_user + open(self.file_path + '/install-mongodb.sh', 'r').read()
- server_id = self.create_instance(userdata=userdata)
+ server_id = self.create_instance(image_name=self.mongo_image_name, userdata=userdata)
self.wait_powered_off(server_id)
- self.create_image(server_id, self.mongodb_image_name)
+ self.create_image(server_id, self.mongo_image_name)
self.delete_instance(server_id)
self.logger.log("Done creating database image")
@@ -69,16 +42,13 @@ USERNAME=%s
server = self.nc.servers.get(server_id)
server.delete()
- def create_instance(self, image_name=None, userdata=None, wait_on_active_status=True):
- if image_name is None:
- image_name = self.image_name
-
+ def create_instance(self, image_name, userdata=None, wait_on_active_status=True):
for f in self.nc.flavors.list():
- if f.name == self.instance_type:
+ if f.name == self.database_instance_type:
flavor = f
break
else:
- self.logger.log("Instance flavor '%s' not found!" % self.instance_type)
+ self.logger.log("Instance flavor '%s' not found!" % self.database_instance_type)
return False
for img in self.nc.images.list():
@@ -89,7 +59,7 @@ USERNAME=%s
self.logger.log("Image '%s' not found!" % image_name)
return False
- server_id = self.nc.servers.create(self.instance_name, image, flavor, key_name=self.key_name, userdata=userdata).id
+ server_id = self.nc.servers.create(self.database_instance_type, image, flavor, key_name=self.key_name, userdata=userdata).id
if wait_on_active_status and not self.wait_active(server_id):
return False
@@ -160,10 +130,10 @@ USERNAME=%s
def create_database_instances(self):
database_server_ids = []
- for i in range(int(self.num_replicas)):
+ for i in range(int(self.database_num_replicas)):
self.logger.log("Creating database instance %s ..." % (i + 1))
database_server_ids.append(
- self.create_instance(image_name=self.mongodb_image_name, wait_on_active_status=False)
+ self.create_instance(image_name=self.mongo_image_name, wait_on_active_status=False)
)
self.wait_all_instances_active(database_server_ids)
@@ -182,7 +152,8 @@ USERNAME=%s
scp = paramiko.SFTPClient.from_transport(ssh.get_transport())
self.logger.log("Uploading mysql dump")
- scp.put(self.generate_dump_path, 'dump.sql')
+ cmd = "wget -T90 -q %s -O dump.sql" % self.dump_url
+ ssh.exec_command(cmd)
ssh.exec_command("sudo mv dump.sql /root/dump.sql")
@@ -264,7 +235,8 @@ sudo mongod --configsvr --dbpath /data/configdb --port 27019 --syslog --fork""")
scp = paramiko.SFTPClient.from_transport(ssh.get_transport())
self.logger.log("Uploading mongo dump")
- scp.put(self.generate_dump_path, 'dump.tar.gz')
+ cmd = "wget -T90 -q %s -O dump.tar.gz" % self.dump_url
+ self.ssh_execute_command(ssh, cmd)
self.logger.log("Extracting mongo dump")
self.ssh_execute_command(ssh, "mkdir dump; tar xf dump.tar.gz -C dump")
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mysql_instances.py b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mysql_instances.py
index 3232e67..5096781 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mysql_instances.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_mysql_instances.py
@@ -4,58 +4,27 @@ import time
import paramiko
import select
import sys
+from cloudscale.deployment_scripts.config import OpenstackConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class ConfigureMySQL:
+class ConfigureMySQL(OpenstackConfig):
def __init__(self, config, logger):
- self.cfg = config.cfg
- self.config = config
- self.logger = logger
-
- self.user = self.cfg.get('OPENSTACK', 'username')
- self.pwd = self.cfg.get('OPENSTACK', 'password')
- self.url = self.cfg.get('OPENSTACK', 'auth_url')
- self.tenant = self.cfg.get('OPENSTACK', 'tenant_name')
-
-
-
- self.instance_type = self.cfg.get('MYSQL', 'instance_type')
- self.instance_name = 'cloudscale-db'
+ OpenstackConfig.__init__(config, logger)
self.master_instance_name = 'cloudscale-db-master'
- self.num_replicas = self.cfg.get('MYSQL', 'num_replicas')
-
- self.key_name = self.cfg.get('OPENSTACK', 'key_name')
- self.key_pair = self.cfg.get('OPENSTACK', 'key_pair')
self.galera_image_name = "cloudscale-db-image"
- self.database_name = self.cfg.get('MYSQL', 'database_name')
- self.database_user = self.cfg.get('MYSQL', 'database_user')
- self.database_pass = self.cfg.get('MYSQL', 'database_pass')
-
- self.generate_dump_path = self.cfg.get('MYSQL', 'generate_dump_path')
-
- self.database_type = self.cfg.get('OPENSTACK', 'database_type').lower()
-
-
-
- self.nc = novaclient.Client(self.user, self.pwd, self.tenant, auth_url=self.url)
-
-
-
self.logger.log("Creating database instances:")
self.file_path = os.path.dirname(__file__) + "/../../software"
- if self.config.db.get('setup_type') == 'master-slave':
- self.image_name = self.cfg.get('MYSQL', 'image_name')
- self.remote_user = self.cfg.get('MYSQL', 'image_username')
+ if self.mysql_setup_type == 'master-slave':
self.create_master_slave()
- elif self.config.db.get('setup_type') == 'master-master':
- self.image_name = self.cfg.get('OPENSTACK', 'image_name')
- self.remote_user = self.cfg.get('OPENSTACK', 'image_username')
+ elif self.mysql_setup_type == 'master-master':
self.create_master_master()
+ else:
+ raise Exception("Wrong MYSQL setup type!")
def create_master_master(self):
@@ -95,7 +64,7 @@ echo '
def create_master_slave(self):
master_ip, master_private_ip = self.create_master()
- slaves = self.create_slave(master_private_ip, int(self.num_replicas)-1)
+ slaves = self.create_slave(master_private_ip, int(self.database_num_replicas)-1)
self.upload_mysql_dump(master_ip)
ssh = self.ssh_to_instance(master_ip)
_ ,stdout, _ = ssh.exec_command("mysql -u root -ppassword -D tpcw < ~/dump.sql")
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_showcase_instances.py b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_showcase_instances.py
index 8c8c4e9..f7773e9 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_showcase_instances.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_create_showcase_instances.py
@@ -4,63 +4,30 @@ from novaclient.v2 import client as novaclient
import time
import paramiko
import select
+from cloudscale.deployment_scripts.config import OpenstackConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
from cloudscale.deployment_scripts.scripts.software import deploy_showcase
-class CreateInstance:
+class CreateInstance(OpenstackConfig):
def __init__(self, config, logger):
+ OpenstackConfig.__init__(self, config, logger)
self.mvn_path = '/usr/bin/mvn'
- self.cfg = config.cfg
- self.config = config
- self.logger = logger
-
self.file_path = "/".join(os.path.abspath(__file__).split('/')[:-1])
- self.remote_user = self.cfg.get('OPENSTACK', 'remote_user')
- self.key_pair = self.cfg.get('OPENSTACK', 'key_pair')
- self.remote_deploy_path = self.cfg.get('software', 'remote_deploy_path')
-
- self.user = self.cfg.get('OPENSTACK', 'username')
- self.pwd = self.cfg.get('OPENSTACK', 'password')
- self.url = self.cfg.get('OPENSTACK', 'auth_url')
- self.tenant = self.cfg.get('OPENSTACK', 'tenant_name')
- self.db_num_instances = self.cfg.get('MYSQL', 'num_replicas')
- self.image_name = self.cfg.get('OPENSTACK', 'image_name')
+ self.remote_deploy_path = self.cfg.get('software', 'remote_deploy_path')
- self.instance_type = self.cfg.get('OPENSTACK', 'instance_type')
self.instance_name = 'cloudscale-sc'
- self.key_name = self.cfg.get('OPENSTACK', 'key_name')
- self.key_pair = self.cfg.get('OPENSTACK', 'key_pair')
-
self.showcase_image_name = "cloudscale-sc-image"
- self.database_name = self.cfg.get('MYSQL', 'database_name')
- self.database_user = self.cfg.get('MYSQL', 'database_user')
- self.database_pass = self.cfg.get('MYSQL', 'database_pass')
-
- self.connection_pool_size = self.cfg.get('MYSQL', 'connection_pool_size')
-
- self.database_type = self.cfg.get('OPENSTACK', 'database_type').lower()
- self.showcase_location = self.cfg.get('MYSQL', 'showcase_war_url')
+ self.showcase_location = self.showcase_url
self.deploy_name = "showcase-1-a"
if self.database_type != 'mysql':
self.deploy_name="showcase-1-b"
- self.showcase_location = self.cfg.get('MONGODB', 'showcase_war_url')
self.showcase_image_name = "cloudscale-sc-mongo-image"
- self.database_name = self.cfg.get('MONGODB', 'database_name')
- self.database_user = self.cfg.get('MONGODB', 'database_user')
- self.database_pass = self.cfg.get('MONGODB', 'database_pass')
-
-
- self.remote_user = self.cfg.get('OPENSTACK', 'image_username')
-
- self.num_instances = self.config.fr.get('num_instances')
-
- self.nc = novaclient.Client(self.user, self.pwd, self.tenant, auth_url=self.url)
self.delete_image(self.showcase_image_name)
self.logger.log("Creating showcase instance image:")
images = self.nc.images.list()
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_remove_all.py b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_remove_all.py
index ed91150..4edecb0 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_remove_all.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack_remove_all.py
@@ -4,28 +4,13 @@ import time
from novaclient.v2 import client as novaclient
import sys
+from cloudscale.deployment_scripts.config import OpenstackConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class RemoveAll:
+class RemoveAll(OpenstackConfig):
def __init__(self, config, logger):
- self.cfg = config.cfg
- self.config = config
- self.logger = logger
-
- self.user = self.cfg.get('OPENSTACK', 'username')
- self.pwd = self.cfg.get('OPENSTACK', 'password')
- self.url = self.cfg.get('OPENSTACK', 'auth_url')
- self.tenant = self.cfg.get('OPENSTACK', 'tenant_name')
-
- self.image_name = self.cfg.get('OPENSTACK', 'image_name')
- self.instance_type = self.cfg.get('OPENSTACK', 'instance_type')
- self.instance_name = 'cloudscale'
- self.key_name = self.cfg.get('OPENSTACK', 'key_name')
- self.key_pair = self.cfg.get('OPENSTACK', 'key_pair')
-
- self.nc = novaclient.Client(self.user, self.pwd, self.tenant, auth_url=self.url)
-
+ OpenstackConfig.__init__(self, config, logger)
self.logger.log("Cleaning:")
self.remove_openstack_instances()
# TODO: remove images
diff --git a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack-create-instance.py b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack-create-instance.py
index 8260b90..8b53320 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack-create-instance.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/openstack/openstack-create-instance.py
@@ -1,17 +1,14 @@
from novaclient.v2 import client as novaclient
import sys
+from cloudscale.deployment_scripts.config import OpenstackConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class CreateInstance:
+class CreateInstance(OpenstackConfig):
+
+ def __init__(self, config, logger):
+ OpenstackConfig.__init__(self, config, logger)
- def __init__(self, cfg):
- self.cfg = cfg
- self.user = cfg.get('OPENSTACK', 'username')
- self.pwd = cfg.get('OPENSTACK', 'password')
- self.url = cfg.get('OPENSTACK', 'auth_url')
- self.tenant = cfg.get('OPENSTACK', 'tenant_name')
- self.image_name = cfg.get('OPENSTACK', 'image_name')
server = self.create_instance()
print [s['addr'] for s in server.addresses[self.tenant] if s['OS-EXT-IPS:type'] == 'floating'][0]
@@ -27,4 +24,4 @@ class CreateInstance:
if __name__ == '__main__':
check_args(2, "<output_dir> <config_path>")
path, cfg, logger = get_cfg_logger(sys.argv[1], sys.argv[2])
- CreateInstance(cfg)
\ No newline at end of file
+ CreateInstance(cfg, logger)
\ No newline at end of file
diff --git a/cloudscale/deployment_scripts/scripts/platform/aws/configure_rds.py b/cloudscale/deployment_scripts/scripts/platform/aws/configure_rds.py
index 2354323..a01e546 100644
--- a/cloudscale/deployment_scripts/scripts/platform/aws/configure_rds.py
+++ b/cloudscale/deployment_scripts/scripts/platform/aws/configure_rds.py
@@ -6,14 +6,14 @@ import time
import subprocess
import os
import sys
-from cloudscale.deployment_scripts.config import Setup
+from cloudscale.deployment_scripts.config import AWSConfig
from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
-class ConfigureRDS(Setup):
+class ConfigureRDS(AWSConfig):
def __init__(self, config, logger):
- Setup.__init__(self, config, logger)
+ AWSConfig.__init__(self, config, logger)
self.conn = boto.rds.connect_to_region(self.region,
aws_access_key_id=self.access_key,