cloudstore-developers

Fixes

3/17/2015 12:35:06 PM

Details

diff --git a/bin/config.ini.example b/bin/config.ini.example
index e23efa0..b55eda0 100644
--- a/bin/config.ini.example
+++ b/bin/config.ini.example
@@ -29,6 +29,7 @@ ami_id = ami-4d5bd93a
 is_autoscalable = no
 cooldown = 300
 remote_user = ubuntu
+instances_identifier = cloudscale
 
 [OPENSTACK]
 username =
diff --git a/cloudscale/deployment_scripts/frontend.py b/cloudscale/deployment_scripts/frontend.py
index b08e01d..e27451d 100644
--- a/cloudscale/deployment_scripts/frontend.py
+++ b/cloudscale/deployment_scripts/frontend.py
@@ -16,6 +16,7 @@ class Frontend:
     def __init__(self, config, logger):
         self.config = config
         self.logger=logger
+        self.instance_ids = []
 
     def setup_aws_frontend(self):
         self.logger=self.logger
@@ -48,15 +49,12 @@ class Frontend:
             i = aws_create_instance.CreateEC2Instance(cfg=self.config.cfg, logger=self.logger)
             ip_addresses = []
             num_instances = int(self.cfg.get('COMMON', 'num_instances'))
-            for _ in xrange(num_instances):
-                instance = i.create()
-                instances.append(instance)
+            instances = i.create_all(num_instances)
+            for instance in instances:
                 ip_addresses.append(instance.ip_address)
 
             self.config.save('infrastructure', 'ip_address', ','.join(ip_addresses))
 
-
-
             self.ip_addresses = self.cfg.get('infrastructure', 'ip_address').split(",")
             loadbalancer = None
             if len(instances) > 1:
@@ -70,6 +68,7 @@ class Frontend:
             deploy_showcase.DeploySoftware(self)
 
             showcase_url = loadbalancer.dns_name if loadbalancer else instances[0].ip_address
+            self.logger.log("Instance ids: %s" % ",".join([instance.id for instance in instances]))
 
         elif self.cfg.get('EC2', 'is_autoscalable') == 'yes':
             i = aws_create_instance.CreateEC2Instance(cfg=self.config.cfg, logger=self.logger)
diff --git a/cloudscale/deployment_scripts/logger.py b/cloudscale/deployment_scripts/logger.py
index aa5046e..020fbc7 100644
--- a/cloudscale/deployment_scripts/logger.py
+++ b/cloudscale/deployment_scripts/logger.py
@@ -1,5 +1,5 @@
 import logging
-logging.basicConfig(filename='deployment_scripts.log')
+logging.basicConfig(filename='deployment_scripts.log', level=logging.INFO)
 
 class Logger:
     def __init__(self):
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 e5546ac..caa6a78 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_autoscalability.py
@@ -6,6 +6,7 @@ from boto.ec2.autoscale import ScalingPolicy
 import boto.ec2.cloudwatch
 from boto.ec2.cloudwatch import MetricAlarm
 import sys
+from boto.ec2.autoscale.tag import Tag
 from cloudscale.deployment_scripts.scripts import check_args, get_cfg_logger
 
 
@@ -91,7 +92,8 @@ class Autoscalability:
                                  ['http'],
                                  None,
                                  self.cfg.get('EC2', 'instance_type'),
-				instance_monitoring=True)
+                                 instance_monitoring=True
+            )
 
             self.conn.create_launch_configuration(lc)
             return lc
@@ -105,10 +107,20 @@ class Autoscalability:
         self.logger.log("Creating autoscalability group ...")
 
         try:
+            tag = Tag(
+                key='Name',
+                value = self.cfg.get('EC2', 'instances_identifier'),
+                propagate_at_launch=True,
+                resource_id='cloudscale-as'
+            )
             ag = AutoScalingGroup(group_name='cloudscale-as',
                               load_balancers=[lb_name],
                               availability_zones=self.cfg.get('EC2', 'availability_zones').split(","),
-                              launch_config=lc, min_size=1, max_size=10, connection=self.conn)
+                              launch_config=lc,
+                              min_size=1,
+                              max_size=10,
+                              connection=self.conn,
+                              tags=[tag])
             self.conn.create_auto_scaling_group(ag)
         except boto.exception.BotoServerError as e:
             if e.error_code != 'AlreadyExists':
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 5187808..43ab768 100644
--- a/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
+++ b/cloudscale/deployment_scripts/scripts/infrastructure/aws/aws_create_instance.py
@@ -26,9 +26,30 @@ class CreateEC2Instance:
         self.create_security_groups()
         instance = self.create_instance()
         #self.write_config(instance)
-        self.logger.log(instance.id)
+
         return instance
 
+    def create_all(self, num_instances):
+        res = self.conn.run_instances(
+            self.cfg.get('EC2', 'ami_id'),
+            max_count=num_instances,
+            key_name=self.key_name,
+            instance_type=self.cfg.get('EC2','instance_type'),
+            security_groups=['http', 'ssh'],
+            monitoring_enabled=True,
+            placement=self.cfg.get('EC2', 'availability_zones').split(',')[0]
+        )
+
+        instance_ids = []
+        for instance in res.instances:
+            self.wait_available(instance)
+            instance_ids.append(instance.id)
+
+        instances = self.conn.get_all_instances(instance_ids)[0].instances
+        self.conn.create_tags(instance_ids, {'Name': 'cloudscale'})
+
+        return instances
+
     def create_security_groups(self):
         self.logger.log("Creating security groups http and ssh ...")
         self.create_security_group('http', 'Security group for HTTP protocol', '80', '0.0.0.0/0')
@@ -49,11 +70,13 @@ class CreateEC2Instance:
             key_name=self.key_name,
             instance_type=self.cfg.get('EC2','instance_type'),
             security_groups=['http', 'ssh'],
+            monitoring_enabled=True,
             placement=self.cfg.get('EC2', 'availability_zones').split(',')[0]
         )
         self.wait_available(res.instances[0])
 
         instance = self.conn.get_all_instances([res.instances[0].id])[0].instances[0]
+        self.conn.create_tags([instance.id], {'Name': 'cloudscale'})
         self.conn.monitor_instances([instance.id])
         return instance
 
diff --git a/dist/cloudscale-deployment-scripts-0.1.0.tar.gz b/dist/cloudscale-deployment-scripts-0.1.0.tar.gz
index b4bd964..0d59039 100644
Binary files a/dist/cloudscale-deployment-scripts-0.1.0.tar.gz and b/dist/cloudscale-deployment-scripts-0.1.0.tar.gz differ