diff --git a/doc/source/appdev-guide/murano_pl/core_lib.rst b/doc/source/appdev-guide/murano_pl/core_lib.rst index e84ec5ee3..20ee60a4c 100644 --- a/doc/source/appdev-guide/murano_pl/core_lib.rst +++ b/doc/source/appdev-guide/murano_pl/core_lib.rst @@ -215,7 +215,8 @@ deploying, joining to the network, applying security group, and deleting. ``io.murano.system.Agent``. - ``Runtime`` * - ``ipAddresses`` - - A list of all IP addresses assigned to an instance. + - A list of all IP addresses assigned to an instance. Floating ip address + is placed in the list tail if present. - ``Out`` * - ``networks`` - Specifies the networks that an instance will be joined to. diff --git a/meta/io.murano/Classes/resources/Instance.yaml b/meta/io.murano/Classes/resources/Instance.yaml index 3a5c5402f..dcede2780 100644 --- a/meta/io.murano/Classes/resources/Instance.yaml +++ b/meta/io.murano/Classes/resources/Instance.yaml @@ -153,10 +153,6 @@ Methods: properties: $properties outputs: - format('{0}-assigned-ips', $.name): - description: format('Network IPs assigned to {0} instance', $.name) - value: - get_attr: [ $.name, networks ] format('{0}-id', $.name): description: format('ID of {0} instance', $.name) value: @@ -175,8 +171,6 @@ Methods: - $region: $.getRegion() - $region.stack.push() - $outputs: $region.stack.output() - - $netIdToIpsMap: $outputs.get(format('{0}-assigned-ips', $this.name)) - - $.ipAddresses: $netIdToIpsMap.values().flatten().distinct() - $.openstackId: $outputs.get(format('{0}-id', $this.name)) - If: $._floatingIpOutputName != null Then: @@ -185,8 +179,12 @@ Methods: Then: $.setAttr(fipAssigned, true) - $._environment.instanceNotifier.trackCloudInstance($this) - $.joinedNetworks: $this.joinedNetworks.distinct().select({ - 'network' => $['network'], - 'ipList' => $['network'].getInstanceIpList($this)}) + network => $.network, + ipList => $.network.getInstanceIpList($this)}) + - $.ipAddresses: $this.joinedNetworks.selectMany($.ipList).where($ != $this.floatingIpAddress).distinct() + - If: $.floatingIpAddress != null + Then: + - $.ipAddresses: $.ipAddresses.append($.floatingIpAddress) deploy: Body: @@ -320,7 +318,6 @@ Methods: - $._environment.instanceNotifier.untrackCloudInstance($this) - $outputsToDelete: list( - '{0}-assigned-ips'.format($.name), '{0}-id'.format($.name)).concat($.getAttr(instanceOutputs, [])) - $template.outputs: $template.outputs.deleteAll($outputsToDelete) diff --git a/meta/io.murano/Classes/resources/NovaNetwork.yaml b/meta/io.murano/Classes/resources/NovaNetwork.yaml index 95471eee0..3514d6e03 100644 --- a/meta/io.murano/Classes/resources/NovaNetwork.yaml +++ b/meta/io.murano/Classes/resources/NovaNetwork.yaml @@ -37,6 +37,7 @@ Methods: - $instanceFipOutput: null - $instanceResources: [] - $instanceOutputs: [] + - $instanceNetworkOutput: format('{0}-assigned-ips', $instance.name) - If: $assignFloatingIp Then: - $instanceFipOutput: $instance.name + '-floatingIPaddress' @@ -57,8 +58,12 @@ Methods: value: get_attr: [$fipName, ip] description: format('Floating IP of {0}', $instance.name) + $instanceNetworkOutput: + description: format('Network IPs assigned to {0} instance', $instance.name) + value: + get_attr: [ $instance.name, networks ] - $instanceResources: [$fipName, $fipName + 'Assignment'] - - $instanceOutputs: [$instanceFipOutput] + - $instanceOutputs: [$instanceFipOutput, $instanceNetworkOutput] - Return: template: $template secGroupName: @@ -83,4 +88,6 @@ Methods: - instance: Contract: $.class(Instance).notNull() Body: - - Return: $instance.ipAddresses + - Return: $instance.getRegion().stack.output().get( + format('{0}-assigned-ips', $instance.name) + ).values().flatten().distinct()