<div dir="ltr">Hi all,<div><br></div><div style>I have some questions regarding the integration of Quantum in Heat:</div><div style>- I haven't found a way to attach an instance resource to a Quantum port that already exists. Is it possible?<br>
</div><div style>- When I create a Quantum port in my template and binds the instance to that port, why does Heat still create an additional port to the tenant-owned network?</div><div style><br></div><div style>I have created a very simple template to test:</div>
<div style><br></div><div style><div>{</div><div> "AWSTemplateFormatVersion" : "2010-09-09",</div><div><br></div><div> "Description" : "Test creation of Quantum resources with a very simple instance",</div>
<div><br></div><div> "Parameters" : {</div><div><br></div><div> "KeyName" : {</div><div> "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances",</div>
<div> "Type" : "String"</div><div> },</div><div><br></div><div> "NetworkUuid" : {</div><div> "Description" : "Network UUID",</div><div> "Type" : "String"</div>
<div> },</div><div><br></div><div> "SubnetUuid" : {</div><div> "Description" : "Network UUID",</div><div> "Type" : "String"</div><div> }</div><div> },</div>
<div><br></div><div> "Resources" : {</div><div> "QuantumPort": {</div><div> "Type": "OS::Quantum::Port",</div><div> "Properties": {</div><div> "network_id": { "Ref" : "NetworkUuid" },</div>
<div> "device_id": { "Ref": "CirrosInstance" },</div><div> "fixed_ips": [{</div><div> "subnet_id": { "Ref" : "SubnetUuid" },</div>
<div> "ip_address": "10.0.0.100"</div><div> }]</div><div> }</div><div> },</div><div><br></div><div> "DefaultSecurityGroup" : {</div><div> "Type" : "AWS::EC2::SecurityGroup",</div>
<div> "Properties" : {</div><div> "GroupDescription" : "Enable ICMP plus SSH access",</div><div> "SecurityGroupIngress" : [</div><div> {"IpProtocol" : "icmp", "FromPort" : "-1", "ToPort" : "-1", "CidrIp" : "<a href="http://0.0.0.0/0">0.0.0.0/0</a>"},</div>
<div> {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "<a href="http://0.0.0.0/0">0.0.0.0/0</a>"}</div><div> ]</div>
<div> }</div><div> },</div><div><br></div><div> "CirrosInstance": {</div><div> "Type": "AWS::EC2::Instance",</div><div> "Properties": {</div><div> "ImageId" : "cirros-0.3.0-x86_64-uec",</div>
<div> "InstanceType" : "m1.nano",</div><div> "KeyName" : { "Ref" : "KeyName" },</div><div> "SecurityGroups" : [ {"Ref" : "DefaultSecurityGroup"} ]</div>
<div> }</div><div> }</div><div> },</div><div><br></div><div> "Outputs" : {</div><div> "InstanceIPAddress" : {</div><div> "Value" : { "Fn::GetAtt" : ["CirrosInstance", "PrivateIp"] },</div>
<div> "Description": "Private IP address of the instance"</div><div> }</div><div> }</div><div>}</div><div><br></div></div><div style>For my tests, I use devstack and the Open vSwitch plugin. After the stack is created, the instance is up and running but it is connected to 2 ports:<br>
</div><div style><br></div><div style><div style><div>$ heat stack-show cirros<br></div></div><div style><div>+----------------------+-----------------------------------------------------------------------------------------------------------------+</div>
<div>| Property | Value |</div><div>+----------------------+-----------------------------------------------------------------------------------------------------------------+</div>
<div>| capabilities | [] |</div><div>| creation_time | 2013-02-05T09:11:39Z |</div>
<div>| description | Test creation of Quantum resources with a very simple |</div><div>| | instance |</div>
<div>| disable_rollback | True |</div><div>| id | 8c161ed2-691e-42e8-a872-e90f26a83ac5 |</div>
<div>| links | <a href="http://192.168.1.94:8004/v1/bc7d29521a444d59b1d68f1e0a81ce90/stacks/cirros/8c161ed2-691e-42e8-a872-e90f26a83ac5">http://192.168.1.94:8004/v1/bc7d29521a444d59b1d68f1e0a81ce90/stacks/cirros/8c161ed2-691e-42e8-a872-e90f26a83ac5</a> |</div>
<div>| notification_topics | [] |</div><div>| outputs | [ |</div>
<div>| | { |</div><div>| | "output_value": "10.0.0.3", |</div>
<div>| | "description": "Private IP address of the instance", |</div><div>| | "output_key": "InstanceIPAddress" |</div>
<div>| | } |</div><div>| | ] |</div>
<div>| parameters | { |</div><div>| | "NetworkUuid": "e5b6584f-9ca8-4219-b2d4-1a2f56a502fe", |</div>
<div>| | "SubnetUuid": "1aa32a3e-ec28-44aa-867c-fcb4f774fa43", |</div><div>| | "AWS::StackName": "cirros", |</div>
<div>| | "KeyName": "test", |</div><div>| | "AWS::Region": "ap-southeast-1" |</div>
<div>| | } |</div><div>| stack_name | cirros |</div>
<div>| stack_status | CREATE_COMPLETE |</div><div>| stack_status_reason | Stack successfully created |</div>
<div>| template_description | Test creation of Quantum resources with a very simple |</div><div>| | instance |</div>
<div>| timeout_mins | 60 |</div><div>| updated_time | 2013-02-05T09:12:02Z |</div>
<div>+----------------------+-----------------------------------------------------------------------------------------------------------------+</div><div>$ nova show cirros.CirrosInstance<br></div></div><div><div>+-------------------------------------+----------------------------------------------------------------+</div>
<div>| Property | Value |</div><div>+-------------------------------------+----------------------------------------------------------------+</div>
<div>| OS-DCF:diskConfig | MANUAL |</div><div>| OS-EXT-SRV-ATTR:host | controller |</div>
<div>| OS-EXT-SRV-ATTR:hypervisor_hostname | controller |</div><div>| OS-EXT-SRV-ATTR:instance_name | instance-00000015 |</div>
<div>| OS-EXT-STS:power_state | 1 |</div><div>| OS-EXT-STS:task_state | None |</div>
<div>| OS-EXT-STS:vm_state | active |</div><div>| accessIPv4 | |</div>
<div>| accessIPv6 | |</div><div>| config_drive | |</div>
<div>| created | 2013-02-05T09:11:43Z |</div><div>| flavor | m1.nano (42) |</div>
<div>| hostId | 495aafe7667bb70bb90e80cbfff9921d2929d909bef01bb93189b631 |</div><div>| id | 46f1542b-3c4c-4849-bf05-488aba266e06 |</div>
<div>| image | cirros-0.3.0-x86_64-uec (3fecb845-3833-4731-beb6-cee4b6aca969) |</div><div>| key_name | test |</div>
<div>| metadata | {} |</div><div>| name | cirros.CirrosInstance |</div>
<div>| private network | 10.0.0.3, 10.0.0.100 |</div><div>| progress | 0 |</div>
<div>| security_groups | [{u'name': u'cirros.DefaultSecurityGroup'}] |</div><div>| status | ACTIVE |</div>
<div>| tenant_id | bc7d29521a444d59b1d68f1e0a81ce90 |</div><div>| updated | 2013-02-05T09:12:00Z |</div>
<div>| user_id | b8827fae4f7c4a0194b77ea3784d25d7 |</div><div>+-------------------------------------+----------------------------------------------------------------+</div>
</div><div><br></div><div style>And the port created by the heat template is in DOWN state:</div><div style><br></div><div><div>$ quantum port-show e22bda12-e062-4c13-ad99-85f0ea994e9e</div><div>+----------------------+-----------------------------------------------------------------------------------+</div>
<div>| Field | Value |</div><div>+----------------------+-----------------------------------------------------------------------------------+</div>
<div>| admin_state_up | True |</div><div>| binding:capabilities | {"port_filter": false} |</div>
<div>| binding:vif_type | ovs |</div><div>| device_id | 46f1542b-3c4c-4849-bf05-488aba266e06 |</div>
<div>| device_owner | |</div><div>| fixed_ips | {"subnet_id": "1aa32a3e-ec28-44aa-867c-fcb4f774fa43", "ip_address": "10.0.0.100"} |</div>
<div>| id | e22bda12-e062-4c13-ad99-85f0ea994e9e |</div><div>| mac_address | fa:16:3e:04:8a:56 |</div>
<div>| name | QuantumPort |</div><div>| network_id | e5b6584f-9ca8-4219-b2d4-1a2f56a502fe |</div>
<div>| status | DOWN |</div><div>| tenant_id | bc7d29521a444d59b1d68f1e0a81ce90 |</div>
<div>+----------------------+-----------------------------------------------------------------------------------+</div></div><div><br></div><div style>Thanks in advance for the answers,</div><div><br></div><div style>Simon</div>
</div></div>