Skip to content

Commit

Permalink
Provide a method for looking up resources by name+type
Browse files Browse the repository at this point in the history
  • Loading branch information
edolstra committed Nov 12, 2013
1 parent e91d56f commit e937ffd
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
13 changes: 2 additions & 11 deletions nixops/backends/ec2.py
Original file line number Diff line number Diff line change
Expand Up @@ -815,12 +815,7 @@ def create(self, defn, check, allow_reboot, allow_recreate):
# Assign the elastic IP. If necessary, dereference the resource.
elastic_ipv4 = defn.elastic_ipv4
if elastic_ipv4.startswith("res-"):
res_name = elastic_ipv4[4:]
res = self.depl.active_resources.get(res_name, None)
if not res:
raise Exception("resource ‘{0}’ does not exist".format(res_name))
if not isinstance(res, ElasticIPState):
raise Exception("resource ‘{0}’ is not an elastic IP address".format(res_name))
res = self.depl.get_typed_resource(elastic_ipv4[4:], "elastic-ip")
elastic_ipv4 = res.public_ipv4
self.assign_elastic_ip(elastic_ipv4, instance, check)

Expand Down Expand Up @@ -887,11 +882,7 @@ def create(self, defn, check, allow_reboot, allow_recreate):

elif v['disk'].startswith("res-"):
res_name = v['disk'][4:]
res = self.depl.active_resources.get(res_name, None)
if not res:
raise Exception("resource ‘{0}’ does not exist".format(res_name))
if not isinstance(res, EBSVolumeState):
raise Exception("resource ‘{0}’ is not an EBS volume".format(res_name))
res = self.depl.get_typed_resource(res_name, "ebs-volume")
if res.state != self.UP:
raise Exception("EBS volume ‘{0}’ has not been created yet".format(res_name))
assert res.volume_id
Expand Down
9 changes: 9 additions & 0 deletions nixops/deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,15 @@ def active_resources(self):
return {n: r for n, r in self.resources.items() if not r.obsolete}


def get_typed_resource(self, name, type):
res = self.active_resources.get(name, None)
if not res:
raise Exception("resource ‘{0}’ does not exist".format(name))
if res.get_type() != type:
raise Exception("resource ‘{0}’ is not of type ‘{1}’".format(name, type))
return res


def _set_attrs(self, attrs):
"""Update deployment attributes in the state file."""
with self._db:
Expand Down

0 comments on commit e937ffd

Please sign in to comment.