Fix tracking of SG's provisioned by Heat

Reasons:
 - Trove doesn't track security group that was created as
   a part of stack.
 - Trove should create two records for security group tracking:
   - security group;
   - security group association with an actual instance;

Changes:
 - Adding security groups registration right after stack creation.

Change-Id: I1f55c27ecbd5ad76c869eae7197b8c24720fc1e6
Closes-Bug: #1276228
This commit is contained in:
Denis Makogon 2014-07-01 11:12:01 +03:00
parent f2967bd915
commit 98f0fb6f78
1 changed files with 16 additions and 0 deletions

View File

@ -41,6 +41,8 @@ from trove.extensions.mysql import models as mysql_models
from trove.configuration.models import Configuration
from trove.extensions.security_group.models import SecurityGroup
from trove.extensions.security_group.models import SecurityGroupRule
from trove.extensions.security_group.models import (
SecurityGroupInstanceAssociation)
from swiftclient.client import ClientException
from trove.instance import models as inst_models
from trove.instance.models import BuiltInstance
@ -445,6 +447,20 @@ class FreshInstanceTasks(FreshInstance, NotifyMixin, ConfigurationMixin):
else:
self.update_db(compute_instance_id=instance_id)
if CONF.trove_security_groups_support:
resource = client.resources.get(stack.id, 'DatastoreSG')
name = "%s_%s" % (
CONF.trove_security_group_name_prefix, self.id)
description = _("Security Group for %s") % self.id
SecurityGroup.create(
id=resource.physical_resource_id,
name=name, description=description,
user=self.context.user,
tenant_id=self.context.tenant)
SecurityGroupInstanceAssociation.create(
security_group_id=resource.physical_resource_id,
instance_id=self.id)
except (TroveError, heat_exceptions.HTTPNotFound,
heat_exceptions.HTTPException) as e:
msg = "Error during creating stack for instance %s" % self.id