deb-murano/meta/io.murano/Classes/system/NeutronSecurityGroupManager.yaml
Dmytro Dovbii 186612daf7 [Core-Library] Add ability to specify direction and ethetype for groups
Previously there was no way to specify in which direction security rule
should be applied, only ingress was supported. Also it was impossible
to create IPv6 rules.
This patch added ability to specify direction and ethertype for
Neutron security groups and direction - for AWS security groups

Change-Id: Iba5be7a8a94c34eab3e0e06f95e5358a84a5dd7b
Closes-Bug: #1532317
2016-01-22 13:10:03 +00:00

103 lines
3.3 KiB
YAML

# 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.
Namespaces:
=: io.murano.system
std: io.murano
Name: NeutronSecurityGroupManager
Extends: SecurityGroupManager
Methods:
addGroupIngress:
Arguments:
- rules:
Contract:
- FromPort: $.int().notNull()
ToPort: $.int().notNull()
IpProtocol: $.string().notNull()
External: $.bool().notNull()
Ethertype: $.string().check($ in list(null, 'IPv4', 'IPv6'))
- groupName:
Contract: $.string().notNull()
Default: $this.defaultGroupName
Body:
- $._addGroup(ingress, $rules, $groupName)
addGroupEgress:
Arguments:
- rules:
Contract:
- FromPort: $.int().notNull()
ToPort: $.int().notNull()
IpProtocol: $.string().notNull()
External: $.bool().notNull()
Ethertype: $.string().check($ in list(null, 'IPv4', 'IPv6'))
- groupName:
Contract: $.string().notNull()
Default: $this.defaultGroupName
Body:
- $._addGroup(egress, $rules, $groupName)
_addGroup:
Arguments:
- direction:
Contract: $.string().notNull().check($ in list(ingress, egress))
- rules:
Contract:
- FromPort: $.int().notNull()
ToPort: $.int().notNull()
IpProtocol: $.string().notNull()
External: $.bool().notNull()
Ethertype: $.string().check($ in list(null, 'IPv4', 'IPv6'))
- groupName:
Contract: $.string().notNull()
Body:
- $ext_keys:
true:
ext_key: remote_ip_prefix
ext_val: '0.0.0.0/0'
false:
ext_key: remote_mode
ext_val: remote_group_id
- $stack: $.environment.stack
- $template:
resources:
$groupName:
type: 'OS::Neutron::SecurityGroup'
properties:
description: format('Composite security group of Murano environment {0}', $.environment.name)
rules:
- port_range_min: null
port_range_max: null
protocol: icmp
remote_ip_prefix: '0.0.0.0/0'
- $.environment.stack.updateTemplate($template)
- $rulesList: $rules.select(dict(
port_range_min => $.FromPort,
port_range_max => $.ToPort,
protocol => $.IpProtocol,
ethertype => $.get(Ethertype, IPv4),
$ext_keys.get($.External).ext_key => $ext_keys.get($.External).ext_val,
direction => $direction
))
- $template:
resources:
$groupName:
type: 'OS::Neutron::SecurityGroup'
properties:
rules: $rulesList
- $.environment.stack.updateTemplate($template)