예제 #1
0
파일: port.py 프로젝트: rmery/heat
    def handle_create(self):
        props = self.prepare_properties(self.properties, self.physical_resource_name())
        neutron_utils.resolve_network(self.neutron(), props, self.NETWORK, "network_id")
        self._prepare_list_properties(props)

        port = self.neutron().create_port({"port": props})["port"]
        self.resource_id_set(port["id"])
예제 #2
0
    def handle_update(self, json_snippet, tmpl_diff, prop_diff):
        props = self.prepare_update_properties(json_snippet)
        connections = props.pop(self.CONNECTIONS)

        if self.DEVICES in prop_diff:
            self.handle_delete()
            self.properties.data.update(props)
            self.handle_create()
            return
        else:
            props.pop(self.DEVICES, None)

        if self.NAME in prop_diff:
            self.neutron().update_network_gateway(self.resource_id,
                                                  {'network_gateway': props})

        if self.CONNECTIONS in prop_diff:
            for connection in self.properties[self.CONNECTIONS]:
                try:
                    neutron_utils.resolve_network(self.neutron(), connection,
                                                  self.NETWORK, 'network_id')
                    if self.NETWORK in connection.keys():
                        connection.pop(self.NETWORK)
                    self.neutron().disconnect_network_gateway(
                        self.resource_id, connection)
                except NeutronClientException as ex:
                    self._handle_not_found_exception(ex)
            for connection in connections:
                neutron_utils.resolve_network(self.neutron(), connection,
                                              self.NETWORK, 'network_id')
                if self.NETWORK in connection.keys():
                    connection.pop(self.NETWORK)
                self.neutron().connect_network_gateway(self.resource_id,
                                                       connection)
예제 #3
0
    def handle_create(self):
        props = self.prepare_properties(self.properties,
                                        self.physical_resource_name())
        neutron_utils.resolve_network(self.neutron(), props, self.NETWORK,
                                      'network_id')
        self._null_gateway_ip(props)

        subnet = self.neutron().create_subnet({'subnet': props})['subnet']
        self.resource_id_set(subnet['id'])
예제 #4
0
 def handle_create(self):
     props = self.prepare_properties(self.properties,
                                     self.physical_resource_name())
     neutron_utils.resolve_network(self.neutron(), props,
                                   self.FLOATING_NETWORK,
                                   'floating_network_id')
     fip = self.neutron().create_floatingip({'floatingip':
                                             props})['floatingip']
     self.resource_id_set(fip['id'])
예제 #5
0
파일: subnet.py 프로젝트: mahak/heat
    def handle_create(self):
        props = self.prepare_properties(
            self.properties,
            self.physical_resource_name())
        neutron_utils.resolve_network(
            self.neutron(), props, self.NETWORK, 'network_id')
        self._null_gateway_ip(props)

        subnet = self.neutron().create_subnet({'subnet': props})['subnet']
        self.resource_id_set(subnet['id'])
예제 #6
0
파일: router.py 프로젝트: B-Rich/heat
 def prepare_properties(self, properties, name):
     props = super(Router, self).prepare_properties(properties, name)
     gateway = props.get(self.EXTERNAL_GATEWAY)
     if gateway:
         neutron_utils.resolve_network(
             self.neutron(), gateway,
             self.EXTERNAL_GATEWAY_NETWORK, 'network_id')
         if gateway[self.EXTERNAL_GATEWAY_ENABLE_SNAT] is None:
             del gateway[self.EXTERNAL_GATEWAY_ENABLE_SNAT]
     return props
예제 #7
0
 def prepare_properties(self, properties, name):
     props = super(Router, self).prepare_properties(properties, name)
     gateway = props.get(self.EXTERNAL_GATEWAY)
     if gateway:
         neutron_utils.resolve_network(self.neutron(), gateway,
                                       self.EXTERNAL_GATEWAY_NETWORK,
                                       'network_id')
         if gateway[self.EXTERNAL_GATEWAY_ENABLE_SNAT] is None:
             del gateway[self.EXTERNAL_GATEWAY_ENABLE_SNAT]
     return props
예제 #8
0
파일: floatingip.py 프로젝트: B-Rich/heat
 def handle_create(self):
     props = self.prepare_properties(
         self.properties,
         self.physical_resource_name())
     neutron_utils.resolve_network(
         self.neutron(), props, self.FLOATING_NETWORK,
         'floating_network_id')
     fip = self.neutron().create_floatingip({
         'floatingip': props})['floatingip']
     self.resource_id_set(fip['id'])
예제 #9
0
파일: port.py 프로젝트: carrierstack/heat
    def handle_create(self):
        props = self.prepare_properties(self.properties,
                                        self.physical_resource_name())
        neutron_utils.resolve_network(self.neutron(), props, self.NETWORK,
                                      'network_id')
        self._prepare_list_properties(props)

        if not props['fixed_ips']:
            del (props['fixed_ips'])

        port = self.neutron().create_port({'port': props})['port']
        self.resource_id_set(port['id'])
예제 #10
0
파일: port.py 프로젝트: B-Rich/heat
    def handle_create(self):
        props = self.prepare_properties(
            self.properties,
            self.physical_resource_name())
        neutron_utils.resolve_network(self.neutron(),
                                      props, self.NETWORK, 'network_id')
        self._prepare_list_properties(props)

        if not props['fixed_ips']:
            del(props['fixed_ips'])

        port = self.neutron().create_port({'port': props})['port']
        self.resource_id_set(port['id'])
예제 #11
0
    def handle_create(self):
        props = self.prepare_properties(self.properties,
                                        self.physical_resource_name())

        connections = props.pop(self.CONNECTIONS)
        ret = self.neutron().create_network_gateway({'network_gateway':
                                                     props})['network_gateway']

        for connection in connections:
            neutron_utils.resolve_network(self.neutron(), connection,
                                          self.NETWORK, 'network_id')
            if self.NETWORK in connection.keys():
                connection.pop(self.NETWORK)
            self.neutron().connect_network_gateway(ret['id'], connection)

        self.resource_id_set(ret['id'])
예제 #12
0
 def handle_create(self):
     router_id = self.properties.get(self.ROUTER_ID)
     network_id = neutron_utils.resolve_network(self.neutron(),
                                                dict(self.properties),
                                                self.NETWORK, 'network_id')
     self.neutron().add_gateway_router(router_id,
                                       {'network_id': network_id})
     self.resource_id_set('%s:%s' % (router_id, network_id))
예제 #13
0
파일: router.py 프로젝트: B-Rich/heat
 def handle_create(self):
     router_id = self.properties.get(self.ROUTER_ID)
     network_id = neutron_utils.resolve_network(
         self.neutron(), dict(self.properties), self.NETWORK,
         'network_id')
     self.neutron().add_gateway_router(
         router_id,
         {'network_id': network_id})
     self.resource_id_set('%s:%s' % (router_id, network_id))
예제 #14
0
    def handle_create(self):
        props = self.prepare_properties(
            self.properties,
            self.physical_resource_name())

        connections = props.pop(self.CONNECTIONS)
        ret = self.neutron().create_network_gateway(
            {'network_gateway': props})['network_gateway']

        for connection in connections:
            neutron_utils.resolve_network(
                self.neutron(), connection, self.NETWORK, 'network_id')
            if self.NETWORK in connection.keys():
                connection.pop(self.NETWORK)
            self.neutron().connect_network_gateway(
                ret['id'], connection
            )

        self.resource_id_set(ret['id'])
예제 #15
0
    def handle_delete(self):
        if not self.resource_id:
            return
        client = self.neutron()

        connections = self.properties[self.CONNECTIONS]
        for connection in connections:
            try:
                neutron_utils.resolve_network(self.neutron(), connection,
                                              self.NETWORK, 'network_id')
                if self.NETWORK in connection.keys():
                    connection.pop(self.NETWORK)
                client.disconnect_network_gateway(self.resource_id, connection)
            except NeutronClientException as ex:
                self._handle_not_found_exception(ex)

        try:
            client.delete_network_gateway(self.resource_id)
        except NeutronClientException as ex:
            self._handle_not_found_exception(ex)
        else:
            return self._delete_task()
예제 #16
0
    def handle_update(self, json_snippet, tmpl_diff, prop_diff):
        props = self.prepare_update_properties(json_snippet)
        connections = props.pop(self.CONNECTIONS)

        if self.DEVICES in prop_diff:
            self.handle_delete()
            self.properties.data.update(props)
            self.handle_create()
            return
        else:
            props.pop(self.DEVICES, None)

        if self.NAME in prop_diff:
            self.neutron().update_network_gateway(
                self.resource_id, {'network_gateway': props})

        if self.CONNECTIONS in prop_diff:
            for connection in self.properties[self.CONNECTIONS]:
                try:
                    neutron_utils.resolve_network(
                        self.neutron(), connection, self.NETWORK, 'network_id')
                    if self.NETWORK in connection.keys():
                        connection.pop(self.NETWORK)
                    self.neutron().disconnect_network_gateway(
                        self.resource_id, connection
                    )
                except NeutronClientException as ex:
                    self._handle_not_found_exception(ex)
            for connection in connections:
                neutron_utils.resolve_network(
                    self.neutron(), connection, self.NETWORK, 'network_id')
                if self.NETWORK in connection.keys():
                    connection.pop(self.NETWORK)
                self.neutron().connect_network_gateway(
                    self.resource_id, connection
                )
예제 #17
0
    def handle_delete(self):
        if not self.resource_id:
            return
        client = self.neutron()

        connections = self.properties[self.CONNECTIONS]
        for connection in connections:
            try:
                neutron_utils.resolve_network(
                    self.neutron(), connection, self.NETWORK, 'network_id')
                if self.NETWORK in connection.keys():
                    connection.pop(self.NETWORK)
                client.disconnect_network_gateway(
                    self.resource_id, connection
                )
            except NeutronClientException as ex:
                self._handle_not_found_exception(ex)

        try:
            client.delete_network_gateway(self.resource_id)
        except NeutronClientException as ex:
            self._handle_not_found_exception(ex)
        else:
            return self._delete_task()