heat/heat/engine/resources/vpc.py
Sergey Kraynev a787e7b5d1 Remove unused logger
There are a lot of files contain import logging which is used for
creating logger object. However in some files we only have definition of
logger without using him. In this patch all unused loggers and imports
are deleted.

Change-Id: Iedba6d40850cb050c5c25d9b8a6a1d7128fd4bee
2014-04-25 08:57:52 +00:00

134 lines
4.4 KiB
Python

#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from heat.common import exception
from heat.engine import clients
from heat.engine import constraints
from heat.engine import properties
from heat.engine import resource
from heat.engine.resources.neutron import neutron
class VPC(resource.Resource):
PROPERTIES = (
CIDR_BLOCK, INSTANCE_TENANCY, TAGS,
) = (
'CidrBlock', 'InstanceTenancy', 'Tags',
)
_TAG_KEYS = (
TAG_KEY, TAG_VALUE,
) = (
'Key', 'Value',
)
properties_schema = {
CIDR_BLOCK: properties.Schema(
properties.Schema.STRING,
_('CIDR block to apply to the VPC.')
),
INSTANCE_TENANCY: properties.Schema(
properties.Schema.STRING,
_('Allowed tenancy of instances launched in the VPC. default - '
'any tenancy; dedicated - instance will be dedicated, '
'regardless of the tenancy option specified at instance '
'launch.'),
default='default',
constraints=[
constraints.AllowedValues(['default', 'dedicated']),
],
implemented=False
),
TAGS: properties.Schema(
properties.Schema.LIST,
schema=properties.Schema(
properties.Schema.MAP,
_('List of tags to attach to the instance.'),
schema={
TAG_KEY: properties.Schema(
properties.Schema.STRING,
required=True
),
TAG_VALUE: properties.Schema(
properties.Schema.STRING,
required=True
),
},
implemented=False,
)
),
}
def handle_create(self):
client = self.neutron()
# The VPC's net and router are associated by having identical names.
net_props = {'name': self.physical_resource_name()}
router_props = {'name': self.physical_resource_name()}
net = client.create_network({'network': net_props})['network']
client.create_router({'router': router_props})['router']
self.resource_id_set(net['id'])
@staticmethod
def network_for_vpc(client, network_id):
return client.show_network(network_id)['network']
@staticmethod
def router_for_vpc(client, network_id):
# first get the neutron net
net = VPC.network_for_vpc(client, network_id)
# then find a router with the same name
routers = client.list_routers(name=net['name'])['routers']
if len(routers) == 0:
# There may be no router if the net was created manually
# instead of in another stack.
return None
if len(routers) > 1:
raise exception.Error(
_('Multiple routers found with name %s') % net['name'])
return routers[0]
def check_create_complete(self, *args):
net = self.network_for_vpc(self.neutron(), self.resource_id)
if not neutron.NeutronResource.is_built(net):
return False
router = self.router_for_vpc(self.neutron(), self.resource_id)
return neutron.NeutronResource.is_built(router)
def handle_delete(self):
from neutronclient.common.exceptions import NeutronClientException
client = self.neutron()
router = self.router_for_vpc(client, self.resource_id)
try:
client.delete_router(router['id'])
except NeutronClientException as ex:
if ex.status_code != 404:
raise ex
try:
client.delete_network(self.resource_id)
except NeutronClientException as ex:
if ex.status_code != 404:
raise ex
def resource_mapping():
if clients.neutronclient is None:
return {}
return {
'AWS::EC2::VPC': VPC,
}