Skip to content

Commit

Permalink
resolve security group IDs
Browse files Browse the repository at this point in the history
  • Loading branch information
hjacobs committed Apr 9, 2015
1 parent 8ce53e3 commit 7c8372c
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 25 deletions.
27 changes: 5 additions & 22 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,46 +52,28 @@ Senza Definition
Type: Senza::TaupageAutoScalingGroup
InstanceType: t2.micro
SecurityGroups:
- sg-123456
- app-kio
ElasticLoadBalancer: AppLoadBalancer
TaupageConfig:
runtime: Docker
source: stups/kio:{{Arguments.ImageVersion}}
ports:
8080: 8080
notify_cfn:
stack: "{{SenzaInfo.StackName}}-{{SenzaInfo.StackVersion}}"
resource: "AppServer"
environment:
HTTP_CORS_ORIGIN: "*.example.com"
PGSSLMODE: verify-full
DB_SUBNAME: "//kio.example.eu-west-1.rds.amazonaws.com:5432/kio?ssl=true"
DB_USER: kio
DB_PASSWORD: aws:kms:abcdef1234567890abcdef=
AutoScaling:
Minimum: 2
Maximum: 10
MetricType: CPU
ScaleUpThreshold: 70
ScaleDownThreshold: 40
# creates an ELB entry and Route53 domains to this ELB
- AppLoadBalancer:
Type: Senza::ElasticLoadBalancer
Type: Senza::WeightedDnsElasticLoadBalancer
HTTPPort: 8080
SSLCertificateId: arn:aws:iam::1234567890:server-certificate/kio-example-com
SSLCertificateId: kio-example-com
HealthCheckPath: /ui/
SecurityGroups:
- sg-123456
Domains:
MainDomain:
Type: weighted
Zone: example.com
Subdomain: kio
VersionDomain:
Type: standalone
Zone: example.com
Subdomain: kio-{{SenzaInfo.StackVersion}}
- app-kio-lb
# just plain Cloud Formation definitions are fully supported:
Outputs:
Expand All @@ -117,6 +99,7 @@ Components
* Senza::AutoScalingGroup
* Senza::TaupageAutoScalingGroup
* Senza::ElasticLoadBalancer
* Senza::WeightedDnsElasticLoadBalancer

Unit Tests
==========
Expand Down
2 changes: 1 addition & 1 deletion senza/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.8'
__version__ = '0.10'
26 changes: 24 additions & 2 deletions senza/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,27 @@ def component_auto_scaling_group_metric_cpu(asg_name, definition, configuration,
}


def get_security_group(region: str, sg_name: str):
conn = boto.ec2.connect_to_region(region)
all_security_groups = conn.get_all_security_groups()
for _sg in all_security_groups:
if _sg.name == sg_name:
return _sg


def resolve_security_groups(security_groups: list, region: str):
result = []
for id_or_name in security_groups:
if id_or_name.startswith('sg-'):
result.append(id_or_name)
else:
sg = get_security_group(region, id_or_name)
if sg:
result.append(sg.id)

return result


def component_auto_scaling_group(definition, configuration, args, info):
definition = ensure_keys(definition, "Resources")

Expand All @@ -226,7 +247,8 @@ def component_auto_scaling_group(definition, configuration, args, info):
definition["Resources"][config_name]["Properties"]["IamInstanceProfile"] = configuration["IamInstanceProfile"]

if "SecurityGroups" in configuration:
definition["Resources"][config_name]["Properties"]["SecurityGroups"] = configuration["SecurityGroups"]
definition["Resources"][config_name]["Properties"]["SecurityGroups"] =\
resolve_security_groups(configuration["SecurityGroups"], args.region)

if "UserData" in configuration:
definition["Resources"][config_name]["Properties"]["UserData"] = {
Expand Down Expand Up @@ -433,7 +455,7 @@ def component_load_balancer(definition, configuration, args, info):
],
"CrossZone": "true",
"LoadBalancerName": "{0}-{1}".format(info["StackName"], info["StackVersion"]),
"SecurityGroups": [] if "SecurityGroups" not in configuration else configuration["SecurityGroups"],
"SecurityGroups": resolve_security_groups(configuration["SecurityGroups"], args.region),
"Tags": [
# Tag "Name"
{
Expand Down

0 comments on commit 7c8372c

Please sign in to comment.