796a0b2c9d
Adds a support for Nova Network if Neutron is not present in the current OpenStack deployment. Supporting the Nova Network requires modifications in three different parts of generated Heat Stack: 1) Generated Security Groups and their rules should be of type 'AWS::EC2::SecurityGroup', not 'OS::Neutron::SecurityGroup' 2) Security Group assignments should go to security_groups property of Instance resource, not the network port (as port concept is not present when using NovaNetwork) 3) FloatingIP should be of type OS::Nova::FloatingIP and should be associated with an Instance by OS::Nova::FloatingIPAssociation resource. To achieve p1 a SecurityGroupManager class of Core Library is made abstract and is inherited by two concrete implementations: NeutronSecurityGroupManager (containing the old MuranoPL code which generated templates based on OS::Neutron::SecurityGroup) and a new AwsSecurityGroupManager, which generates AWS-compliant firewall rules which are consumed by NovaNetwork. The particular concreate instance of this class is generated by the default network of environment: Network class has got a new method called generateSecurityGroupManager which returns an appropriate implementation. For pp 2-3 a new inheritor of Network class has been added to the Core Library: an io.murano.resources.NovaNetwork. It generates FloatingIP association resources if needed and returns a securityGroupName object as one of the outputs of its joinInstance methods. The Instance class has been modified to properly handle these types of outputs. The instance of the NovaNetwork class is generated at the API side when a new Environment is created and a is assigned to the defaultNetworks.environment property of the environment if the neutron is not defined in keystone. Also this change moves the auth_utils module from engine to common, as Keystone Client it contains is now used by the API process as well. This changed is based on some of the code from the outdated changeset I6f4b7908bd4bbcd375f64705c7dd06e3954f1ec7 Co-Authored-By: Alexander Tivelkov <ativelkov@mirantis.com> Co-Authored-By: Stan Lagun <slagun@mirantis.com> DocImpact Change-Id: I4c48f33de100a5730ba1d086540d0d99e8fbf9b1 Implements-Blueprint: nova-network-support
27 lines
626 B
YAML
27 lines
626 B
YAML
Namespaces:
|
|
=: io.murano.system
|
|
std: io.murano
|
|
|
|
Name: SecurityGroupManager
|
|
|
|
Properties:
|
|
environment:
|
|
Contract: $.class(std:Environment).notNull()
|
|
|
|
defaultGroupName:
|
|
Contract: $.string()
|
|
Default: format('MuranoSecurityGroup-{0}', $.environment.name)
|
|
|
|
Methods:
|
|
addGroupIngress:
|
|
Arguments:
|
|
- rules:
|
|
Contract:
|
|
- FromPort: $.int().notNull()
|
|
ToPort: $.int().notNull()
|
|
IpProtocol: $.string().notNull()
|
|
External: $.bool().notNull()
|
|
- groupName:
|
|
Contract: $.string().notNull()
|
|
Default: $this.defaultGroupName
|