[openstack-dev] "list=true" issue with the python client.- help

Henry Gessau gessau at cisco.com
Tue Jun 18 00:24:16 UTC 2013


I have commented on the review with what I think the error is.

On Mon, Jun 17, at 6:16 pm Vasudevan, Swaminathan (PNB Roseville)
(swaminathan.vasudevan at hp.com) wrote:
>
> Hi Folks,
>
> I need some help to resolve the issue high lighted below.
>
> I have configured for an attribute to accept a "list".
>
> But for some reason, the "list=true" pops up as a value.
>
>  
>
> Can anyone suggest what might be wrong.
>
> Here is the code. ( Look for the vpnconnection.py)
>
>  
>
> https://review.openstack.org/#/c/29811/
>
>  
>
>  
>
> Here is the command that I issued:
>
>  
>
> quantum  vpn-connection-create --name myconnection --peer_address
> 10.20.0.30 --peer_id 10.20.0.30 ----psk "abcd" --vpnservice_id myvpn
> --ikepolicy_id ikepolicy1 --ipsecpolicy_id ipsecpolicy1 --peer_cidrs
> list=true 10.1.0.0/24 10.2.0.0/24
>
>  
>
> Used PDB to see what is happening inside.
>
>  
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(331)get_data()
>
> -> quantum_client = self.get_client()
>
> (Pdb) p parsed_args
>
> Namespace(admin_state_down=True, columns=[], description=None,
> dpd_action='hold', dpd_interval='30', dpd_timeout='120',
> formatter='table', ikepolicy_id='ikepolicy1', initiator='bi-directional',
> ipsecpolicy_id='ipsecpolicy1', mtu='1500', name='myconnection',
> peer_address='10.20.0.30', peer_cidrs=['list=true'], peer_id='10.20.0.30',
> prefix='', psk=None, request_format='json', tenant_id=None, variables=[],
> vpnservice_id='myvpn')
>
> (Pdb) quit
>
> (Pdb) n
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(332)get_data()
>
> -> quantum_client.format = parsed_args.request_format
>
> (Pdb) n
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(333)get_data()
>
> -> _extra_values = parse_args_to_dict(self.values_specs)
>
> (Pdb) p quantum_client.format
>
> 'json'
>
> (Pdb) n
>
> AttributeError: "'Namespace' object has no attribute ''"
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(333)get_data()
>
> -> _extra_values = parse_args_to_dict(self.values_specs)
>
> (Pdb) p _extra_values
>
> *** NameError: NameError("name '_extra_values' is not defined",)
>
> (Pdb)
>
> NOTE: Extra values does not return a valid value. But in the case of the
> subnet, when I ran the debugger it was returning a valid list.
>
>  
>
> But in the case of the subnet, extra values returns the list.
>
> See the debug message below.
>
>  
>
> guest at swaminathan-virtual-machine-rest:~/devstack$ quantum subnet-create
> net1 40.0.0.0/24 --dns_nameservers list=true 8.8.8.7 8.8.8.8
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(330)get_data()
>
> -> self.log.debug('get_data(%s)' % parsed_args)
>
> (Pdb) p parsed_args
>
> Namespace(allocation_pools=None, cidr='40.0.0.0/24', columns=[],
> disable_dhcp=False, dns_nameservers=None, formatter='table', gateway=None,
> host_routes=None, ip_version=4, name=None, network_id='net1',
> no_gateway=False, prefix='', request_format='json', tenant_id=None,
> variables=[])
>
> (Pdb) l
>
> 325          self.add_known_arguments(parser)
>
> 326          return parser
>
> 327 
>
> 328      def get_data(self, parsed_args):
>
> 329          pdb.set_trace()
>
> 330  ->             self.log.debug('get_data(%s)' % parsed_args)
>
> 331           quantum_client = self.get_client()
>
> 332          quantum_client.format = parsed_args.request_format
>
> 333          _extra_values = parse_args_to_dict(self.values_specs)
>
> 334          _merge_args(self, parsed_args, _extra_values,
>
> 335                      self.values_specs)
>
> (Pdb) n
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(331)get_data()
>
> -> quantum_client = self.get_client()
>
> (Pdb) n
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(332)get_data()
>
> -> quantum_client.format = parsed_args.request_format
>
> (Pdb) n
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(333)get_data()
>
> -> _extra_values = parse_args_to_dict(self.values_specs)
>
> (Pdb) n
>
> > /opt/stack/python-quantumclient/quantumclient/quantum/v2_0/__init__.py(334)get_data()
>
> -> _merge_args(self, parsed_args, _extra_values,
>
> (Pdb) p _extra_values
>
> {'dns_nameservers': ['8.8.8.7', '8.8.8.8']}
>
> (Pdb)
>
>  
>
> Just for your info.
>
>  
>
> This is how I have coded in my "vpnconnection".
>
>  
>
> parser.add_argument(
>
>             '--peer_cidrs', metavar='PEER_CIDRS',
>
>             action='append', dest='peer_cidrs',
>
>             help='set the remote subnet(s) in CIDR format')
>
>  
>
>     def args2body(self, parsed_args):
>
>         pdb.set_trace()
>
>         _vpnservice_id = quantumv20.find_resourceid_by_name_or_id(
>
>             self.get_client(), 'vpnservice',
>
>             parsed_args.vpnservice_id)
>
>         _ikepolicy_id = quantumv20.find_resourceid_by_name_or_id(
>
>             self.get_client(), 'ikepolicy',
>
>             parsed_args.ikepolicy_id)
>
>         _ipsecpolicy_id = quantumv20.find_resourceid_by_name_or_id(
>
>             self.get_client(), 'ipsecpolicy',
>
>             parsed_args.ipsecpolicy_id)
>
>         body = {
>
>             'vpnconnection': {
>
>                             'vpnservice_id': _vpnservice_id,
>
>                             'ikepolicy_id': _ikepolicy_id,
>
>                             'ipsecpolicy_id': _ipsecpolicy_id,
>
>                             'name': parsed_args.name,
>
>                             'peer_address': parsed_args.peer_address,
>
>                             'peer_id': parsed_args.peer_id,
>
>                             'mtu': parsed_args.mtu,
>
>                             'description': parsed_args.description,
>
>                             'dpd_action': parsed_args.dpd_action,
>
>                             'dpd_interval': parsed_args.dpd_interval,
>
>                             'dpd_timeout': parsed_args.dpd_timeout,
>
>                             'psk': parsed_args.psk,
>
>                             'admin_state_up': parsed_args.admin_state_down,
>
>                             },
>
>             }
>
>         pdb.set_trace()
>
>         if parsed_args.peer_cidrs:
>
>             body['vpnconnection']['peer_cidrs'] = parsed_args.peer_cidrs
>
>         pdb.set_trace()
>
>         return body
>
>  
>
> Thanks
>
>  
>
>  
>
>  
>
> Swaminathan Vasudevan
>
> Systems Software Engineer (TC)
>
>  
>
>  
>
> HP Networking
>
> Hewlett-Packard
>
> 8000 Foothills Blvd
>
> M/S 5541
>
> Roseville, CA - 95747
>
> tel: 916.785.0937
>
> fax: 916.785.1815
>
> email: swaminathan.vasudevan at hp.com
>
>  
>
>  
>
> -----Original Message-----
> From: Nachi Ueno [mailto:nachi at ntti3.com]
> Sent: Wednesday, June 12, 2013 9:08 PM
> To: Vasudevan, Swaminathan (PNB Roseville)
> Subject: Re: Change in openstack/quantum[master]: blueprint
> VPNaaS-Python-API VPNaaS DataModel/Plugin
>
>  
>
> Hi Swami
>
>  
>
> Dest is destination argument
>
>  
>
> In this case,
>
> https://github.com/openstack/python-quantumclient/blob/master/quantumclient/quantum/v2_0/subnet.py#L115
>
>  
>
> parameters go to  parsed_args.dns_nameservers
>
> https://github.com/openstack/python-quantumclient/blob/master/quantumclient/quantum/v2_0/subnet.py#L156
>
>  
>
> so here is some debug tips
>
>  
>
> 1. use --verbose option on cli
>
>  
>
> quantum -verbose commands
>
> You can see the api request and response.
>
>  
>
> 2. Use pdb to check the value is  set or not.
>
>  
>
> Best
>
> Nachi
>
>  
>
>  
>
>  
>
>  
>
> 2013/6/12 Vasudevan, Swaminathan (PNB Roseville)
> <swaminathan.vasudevan at hp.com>:
>
> > Hi Nachi,
>
> > 
>
> > For some reason "list=true" does not work when I pass a list for the
>
> > vpnconnection.
>
> > 
>
> > 
>
> > 
>
> > parser.add_argument(
>
> > 
>
> >             '--peer_cidrs', metavar='PEER_CIDR',
>
> > 
>
> >             action='append', dest='peer_cidrs',
>
> > 
>
> >             help='set the remote subnet(s) in CIDR format')
>
> > 
>
> > 
>
> > 
>
> > Nachi: What does the "dest=" mean.
>
> > 
>
> > 
>
> > 
>
> > Is there anything else required in the client side to accept the list.
>
> > 
>
> > 
>
> > 
>
> > The "list=true" command works for the example that you provided (for
>
> > subnet).
>
> > 
>
> > 
>
> > 
>
> > Thanks.
>
> > 
>
> > 
>
> > 
>
> > Swaminathan Vasudevan
>
> > 
>
> > Systems Software Engineer (TC)
>
> > 
>
> > 
>
> > 
>
> > 
>
> > 
>
> > HP Networking
>
> > 
>
> > Hewlett-Packard
>
> > 
>
> > 8000 Foothills Blvd
>
> > 
>
> > M/S 5541
>
> > 
>
> > Roseville, CA - 95747
>
> > 
>
> > tel: 916.785.0937
>
> > 
>
> > fax: 916.785.1815
>
> > 
>
> > email: swaminathan.vasudevan at hp.com
>
> > 
>
> > 
>
> > 
>
> > 
>
> > 
>
> > -----Original Message-----
>
> > 
>
> > From: Nachi Ueno [mailto:nachi at ntti3.com]
>
> > 
>
> > Sent: Wednesday, June 12, 2013 2:52 PM
>
> > 
>
> > To: Vasudevan, Swaminathan (PNB Roseville)
>
> > 
>
> > Subject: Re: Change in openstack/quantum[master]: blueprint
>
> > VPNaaS-Python-API VPNaaS DataModel/Plugin
>
> > 
>
> > 
>
> > 
>
> > Hi Swami
>
> > 
>
> > 
>
> > 
>
> > It should be as follows
>
> > 
>
> > 
>
> > 
>
> > quantum vpn-connection-create --name myconnection --peer_id 10.20.0.30
>
> > 
>
> > --peer_address 10.20.0.30 --peer_cidrs  list=true 10.1.0.0/24
>
> > 
>
> > 10.2.0.0/24 10.3.0.0/24 --psk abcd myvpn ikepolicy1 ipsecpolicy1
>
> > 
>
> > 
>
> > 
>
> > (see this example)
>
> > 
>
> > quantum subnet-create test-net1 40.0.0.0/24 --dns_nameservers
>
> > 
>
> > list=true 8.8.8.7 8.8.8.8
>
> > 
>
> > https://github.com/openstack/quantum/blob/master/quantum/api/v2/attributes.py#L608
>
> > 
>
> > 
>
> > 
>
> > I said string_list is good, however cidr_list is more better.
>
> > 
>
> > so could you implement type:cidr_list ?
>
> > 
>
> > 
>
> > 
>
> > (list version of this validator)
>
> > 
>
> > https://github.com/openstack/quantum/blob/master/quantum/api/v2/attributes.py#L246
>
> > 
>
> > 
>
> > 
>
> > Thanks
>
> > 
>
> > Nachi
>
> > 
>
> > 
>
> > 
>
> > 2013/6/12 Vasudevan, Swaminathan (PNB Roseville)
>
> > <swaminathan.vasudevan at hp.com>:
>
> > 
>
> >> Hi Nachi,
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> With the "string_list" type validate both  the inputs are valid.
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> Which one do you think will be the right way of setting the peer_cidrs.
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> guest at swaminathan-virtual-machine-rest:~/devstack$ quantum
>
> > 
>
> >> vpn-connection-create --name myconnection --peer_id 10.20.0.30
>
> > 
>
> >> --peer_address 10.20.0.30 --peer_cidrs "['10.1.0.0/24', '10.2.0.0/24',
>
> > 
>
> >> '10.3.0.0/24']" --psk abcd myvpn ikepolicy1 ipsecpolicy1
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> guest at swaminathan-virtual-machine-rest:~/devstack$ quantum
>
> > 
>
> >> vpn-connection-create --name myconnection --peer_id 10.20.0.30
>
> > 
>
> >> --peer_address 10.20.0.30 --peer_cidrs "[10.1.0.0/24, 10.2.0.0/24,
>
> > 
>
> >> 10.3.0.0/24]" --psk abcd myvpn ikepolicy1 ipsecpolicy1
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> Thanks.
>
> > 
>
> >> 
>
> > 
>
> >> Swaminathan Vasudevan
>
> > 
>
> >> 
>
> > 
>
> >> Systems Software Engineer (TC)
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> HP Networking
>
> > 
>
> >> 
>
> > 
>
> >> Hewlett-Packard
>
> > 
>
> >> 
>
> > 
>
> >> 8000 Foothills Blvd
>
> > 
>
> >> 
>
> > 
>
> >> M/S 5541
>
> > 
>
> >> 
>
> > 
>
> >> Roseville, CA - 95747
>
> > 
>
> >> 
>
> > 
>
> >> tel: 916.785.0937
>
> > 
>
> >> 
>
> > 
>
> >> fax: 916.785.1815
>
> > 
>
> >> 
>
> > 
>
> >> email: swaminathan.vasudevan at hp.com
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> -----Original Message-----
>
> > 
>
> >> From: Nachi Ueno [mailto:nachi at ntti3.com]
>
> > 
>
> >> Sent: Wednesday, June 12, 2013 10:09 AM
>
> > 
>
> >> To: Vasudevan, Swaminathan (PNB Roseville)
>
> > 
>
> >> Subject: Re: Change in openstack/quantum[master]: blueprint
>
> > 
>
> >> VPNaaS-Python-API VPNaaS DataModel/Plugin
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> Hi Swami
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> +1 for  new type:string_list
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> Ps. Could you reply on gerrit for review comment?
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> 
>
> > 
>
> >> Thanks
>
> > 
>
> >> 
>
> > 
>
> >> Nachi
>
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20130617/b5c29aed/attachment-0001.html>


More information about the OpenStack-dev mailing list