)]}'
{"etc/tacker/tacker.conf":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"# service_plugins \u003d"},{"line_number":63,"context_line":"# Example: service_plugins \u003d router,firewall,lbaas,vpnaas,metering"},{"line_number":64,"context_line":"#service_plugins \u003d tacker.vm.plugin.VNFMPlugin"},{"line_number":65,"context_line":"#service_plugins \u003d tacker.services.nfvo.nfvo_plugin.NfvoPlugin"},{"line_number":66,"context_line":"service_plugins \u003d vnfm,nfvo"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Paste configuration file"}],"source_content_type":"text/plain","patch_set":4,"id":"7af24918_84ae1f96","line":65,"range":{"start_line":65,"start_character":1,"end_line":65,"end_character":16},"updated":"2016-03-03 02:40:38.000000000","message":"no need to keep above two lines","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"# service_plugins \u003d"},{"line_number":63,"context_line":"# Example: service_plugins \u003d router,firewall,lbaas,vpnaas,metering"},{"line_number":64,"context_line":"#service_plugins \u003d tacker.vm.plugin.VNFMPlugin"},{"line_number":65,"context_line":"#service_plugins \u003d tacker.services.nfvo.nfvo_plugin.NfvoPlugin"},{"line_number":66,"context_line":"service_plugins \u003d vnfm,nfvo"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Paste configuration file"}],"source_content_type":"text/plain","patch_set":4,"id":"5aef4532_4018e784","line":65,"range":{"start_line":65,"start_character":1,"end_line":65,"end_character":16},"in_reply_to":"7af24918_84ae1f96","updated":"2016-03-07 22:19:01.000000000","message":"Done","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# Example: service_plugins \u003d router,firewall,lbaas,vpnaas,metering"},{"line_number":64,"context_line":"#service_plugins \u003d tacker.vm.plugin.VNFMPlugin"},{"line_number":65,"context_line":"#service_plugins \u003d tacker.services.nfvo.nfvo_plugin.NfvoPlugin"},{"line_number":66,"context_line":"service_plugins \u003d vnfm,nfvo"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Paste configuration file"},{"line_number":69,"context_line":"# api_paste_config \u003d api-paste.ini"}],"source_content_type":"text/plain","patch_set":4,"id":"7af24918_c494a744","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":15},"updated":"2016-03-03 02:40:38.000000000","message":"comment it to indicate it is default","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"# Example: service_plugins \u003d router,firewall,lbaas,vpnaas,metering"},{"line_number":64,"context_line":"#service_plugins \u003d tacker.vm.plugin.VNFMPlugin"},{"line_number":65,"context_line":"#service_plugins \u003d tacker.services.nfvo.nfvo_plugin.NfvoPlugin"},{"line_number":66,"context_line":"service_plugins \u003d vnfm,nfvo"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Paste configuration file"},{"line_number":69,"context_line":"# api_paste_config \u003d api-paste.ini"}],"source_content_type":"text/plain","patch_set":4,"id":"5aef4532_201ddb73","line":66,"range":{"start_line":66,"start_character":0,"end_line":66,"end_character":15},"in_reply_to":"7af24918_c494a744","updated":"2016-03-07 22:19:01.000000000","message":"This is not default. These are the actual plugins to be loaded from service_plugins namespace for Tacker VNFM and NFVO APIs. They are not commented because these two plugins are the minimum two reference plugins that are required to run the Tacker server APIs (unlike Neutron).","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":398,"context_line":"# monitor_driver \u003d ping, http_ping"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"[nfvo]"},{"line_number":401,"context_line":"#Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":402,"context_line":"vim_drivers \u003d openstack"},{"line_number":403,"context_line":"#Default VIM placement if vim id is not provided"},{"line_number":404,"context_line":"default_vim \u003d VIM0"}],"source_content_type":"text/plain","patch_set":4,"id":"7af24918_e4d0c321","line":401,"range":{"start_line":401,"start_character":1,"end_line":401,"end_character":10},"updated":"2016-03-03 02:40:38.000000000","message":"add space after #","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":398,"context_line":"# monitor_driver \u003d ping, http_ping"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"[nfvo]"},{"line_number":401,"context_line":"#Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":402,"context_line":"vim_drivers \u003d openstack"},{"line_number":403,"context_line":"#Default VIM placement if vim id is not provided"},{"line_number":404,"context_line":"default_vim \u003d VIM0"}],"source_content_type":"text/plain","patch_set":4,"id":"5aef4532_c00cf744","line":401,"range":{"start_line":401,"start_character":1,"end_line":401,"end_character":10},"in_reply_to":"7af24918_e4d0c321","updated":"2016-03-07 22:19:01.000000000","message":"Done","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":399,"context_line":""},{"line_number":400,"context_line":"[nfvo]"},{"line_number":401,"context_line":"#Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":402,"context_line":"vim_drivers \u003d openstack"},{"line_number":403,"context_line":"#Default VIM placement if vim id is not provided"},{"line_number":404,"context_line":"default_vim \u003d VIM0"},{"line_number":405,"context_line":""}],"source_content_type":"text/plain","patch_set":4,"id":"7af24918_64a313b3","line":402,"range":{"start_line":402,"start_character":0,"end_line":402,"end_character":11},"updated":"2016-03-03 02:40:38.000000000","message":"If it is the default value, comment it so show it is a default one.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":399,"context_line":""},{"line_number":400,"context_line":"[nfvo]"},{"line_number":401,"context_line":"#Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":402,"context_line":"vim_drivers \u003d openstack"},{"line_number":403,"context_line":"#Default VIM placement if vim id is not provided"},{"line_number":404,"context_line":"default_vim \u003d VIM0"},{"line_number":405,"context_line":""}],"source_content_type":"text/plain","patch_set":4,"id":"5aef4532_a009eb33","line":402,"range":{"start_line":402,"start_character":0,"end_line":402,"end_character":11},"in_reply_to":"7af24918_64a313b3","updated":"2016-03-07 22:19:01.000000000","message":"Done","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":401,"context_line":"#Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":402,"context_line":"vim_drivers \u003d openstack"},{"line_number":403,"context_line":"#Default VIM placement if vim id is not provided"},{"line_number":404,"context_line":"default_vim \u003d VIM0"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"[vim_keys]"},{"line_number":407,"context_line":"openstack \u003d /etc/keystone/fernet_keys"}],"source_content_type":"text/plain","patch_set":4,"id":"7af24918_64bcb3dc","line":404,"updated":"2016-03-03 02:40:38.000000000","message":"I am concerned this config item. I think we can extend vim API so that admin can create a VIM and specify it to default one.\n\ndo it via config file is not SCM friendly.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":401,"context_line":"#Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":402,"context_line":"vim_drivers \u003d openstack"},{"line_number":403,"context_line":"#Default VIM placement if vim id is not provided"},{"line_number":404,"context_line":"default_vim \u003d VIM0"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"[vim_keys]"},{"line_number":407,"context_line":"openstack \u003d /etc/keystone/fernet_keys"}],"source_content_type":"text/plain","patch_set":4,"id":"5aef4532_be92ac55","line":404,"in_reply_to":"7af24918_64bcb3dc","updated":"2016-03-07 22:19:01.000000000","message":"What is SCM?\nIf storing default VIM in configuration file is not fine, then we will need a way to store certain VIM as default through API and DB. This will change the db model for VIM. Can be taken up as a RFE if this is required.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":396,"context_line":"# Specify drivers for monitoring"},{"line_number":397,"context_line":"# monitor_driver \u003d ping, http_ping"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"[nfvo]"},{"line_number":400,"context_line":"# Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":401,"context_line":"#Default VIM driver is OpenStack"},{"line_number":402,"context_line":"#vim_drivers \u003d openstack"}],"source_content_type":"text/plain","patch_set":5,"id":"3afc51ec_a7d9b385","line":399,"updated":"2016-03-15 01:36:43.000000000","message":"nfvo is a broad team. Can we further subclass this to something specific to vim like,\n\n[nfvo_vim]","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":396,"context_line":"# Specify drivers for monitoring"},{"line_number":397,"context_line":"# monitor_driver \u003d ping, http_ping"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"[nfvo]"},{"line_number":400,"context_line":"# Supported VIM drivers, resource orchestration controllers such as OpenStack, kvm"},{"line_number":401,"context_line":"#Default VIM driver is OpenStack"},{"line_number":402,"context_line":"#vim_drivers \u003d openstack"}],"source_content_type":"text/plain","patch_set":5,"id":"3afc51ec_7b58e232","line":399,"in_reply_to":"3afc51ec_a7d9b385","updated":"2016-03-15 03:16:04.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/common/clients.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        return heatclient.Client(\u00271\u0027, endpoint\u003dendpoint, session\u003dself.session)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @property"},{"line_number":36,"context_line":"    def session(self):"},{"line_number":37,"context_line":"        return self.keystone.session"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_675e8b77","line":36,"updated":"2016-03-15 01:36:43.000000000","message":"would it make sense to name as \"keystone_session\" as there are lots of references to \"session\" in the wsgi context object.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        return heatclient.Client(\u00271\u0027, endpoint\u003dendpoint, session\u003dself.session)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @property"},{"line_number":36,"context_line":"    def session(self):"},{"line_number":37,"context_line":"        return self.keystone.session"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_fb4cf271","line":36,"in_reply_to":"3afc51ec_675e8b77","updated":"2016-03-15 03:16:04.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/db/migration/alembic_migrations/versions/11702d4ad638_multisite_vim.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":51,"context_line":"        sa.UniqueConstraint(\u0027auth_url\u0027)"},{"line_number":52,"context_line":"    )"},{"line_number":53,"context_line":"    op.add_column(u\u0027devices\u0027, sa.Column(\u0027vim_id\u0027, sa.String(length\u003d36),"},{"line_number":54,"context_line":"                                        nullable\u003dTrue))"},{"line_number":55,"context_line":"    op.create_foreign_key(None, \u0027devices\u0027, \u0027vims\u0027, [\u0027vim_id\u0027], [\u0027id\u0027])"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_440b778e","line":53,"range":{"start_line":53,"start_character":27,"end_line":53,"end_character":29},"updated":"2016-03-03 02:40:38.000000000","message":"where is the region?","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"},{"line_number":51,"context_line":"        sa.UniqueConstraint(\u0027auth_url\u0027)"},{"line_number":52,"context_line":"    )"},{"line_number":53,"context_line":"    op.add_column(u\u0027devices\u0027, sa.Column(\u0027vim_id\u0027, sa.String(length\u003d36),"},{"line_number":54,"context_line":"                                        nullable\u003dTrue))"},{"line_number":55,"context_line":"    op.create_foreign_key(None, \u0027devices\u0027, \u0027vims\u0027, [\u0027vim_id\u0027], [\u0027id\u0027])"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_7e87840f","line":53,"range":{"start_line":53,"start_character":27,"end_line":53,"end_character":29},"in_reply_to":"7af24918_440b778e","updated":"2016-03-07 22:19:01.000000000","message":"region will be stored in device_attributes if specified","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2016 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_47ef0f87","line":1,"updated":"2016-03-15 01:36:43.000000000","message":"Please your employer name in the Copyright.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":35,"context_line":"        sa.Column(\u0027type\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":36,"context_line":"        sa.Column(\u0027tenant_id\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027name\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":38,"context_line":"        sa.Column(\u0027description\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":39,"context_line":"        sa.Column(\u0027placement_attr\u0027, sa.PickleType(), nullable\u003dTrue),"},{"line_number":40,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_ed8a83be","line":37,"range":{"start_line":37,"start_character":23,"end_line":37,"end_character":25},"updated":"2016-03-09 02:49:41.000000000","message":"if name is not unique, the default_vim in tacker.conf will be dangerous? what if user create two VIM0?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        sa.Column(\u0027id\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":35,"context_line":"        sa.Column(\u0027type\u0027, sa.String(length\u003d255), nullable\u003dFalse),"},{"line_number":36,"context_line":"        sa.Column(\u0027tenant_id\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":37,"context_line":"        sa.Column(\u0027name\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":38,"context_line":"        sa.Column(\u0027description\u0027, sa.String(length\u003d255), nullable\u003dTrue),"},{"line_number":39,"context_line":"        sa.Column(\u0027placement_attr\u0027, sa.PickleType(), nullable\u003dTrue),"},{"line_number":40,"context_line":"        sa.PrimaryKeyConstraint(\u0027id\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_b12291ff","line":37,"range":{"start_line":37,"start_character":23,"end_line":37,"end_character":25},"in_reply_to":"5aef4532_ed8a83be","updated":"2016-03-15 03:16:04.000000000","message":"if user creates 2 VIMs with same name but different auth_urls, and then deploys vnf on default VIM, exception will be thrown. if user tries to create 2 VIMs with same name and same auth url, the operation will fail because of the unique constraint on auth_url","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/db/nfvo/nfvo_db.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                   primary_key\u003dTrue,"},{"line_number":41,"context_line":"                   default\u003duuidutils.generate_uuid)"},{"line_number":42,"context_line":"    type \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":43,"context_line":"    tenant_id \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":44,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":45,"context_line":"    description \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":46,"context_line":"    placement_attr \u003d sa.Column(sa.PickleType, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_47326f11","line":43,"updated":"2016-03-15 01:36:43.000000000","message":"Is this the tenant_id of the remote VIM (like \"nfv-tenant\") or is this capturing the tenant_id of the API vim-create API call?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                   primary_key\u003dTrue,"},{"line_number":41,"context_line":"                   default\u003duuidutils.generate_uuid)"},{"line_number":42,"context_line":"    type \u003d sa.Column(sa.String(255), nullable\u003dFalse)"},{"line_number":43,"context_line":"    tenant_id \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":44,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":45,"context_line":"    description \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":46,"context_line":"    placement_attr \u003d sa.Column(sa.PickleType, nullable\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_bbb0aa44","line":43,"in_reply_to":"3afc51ec_47326f11","updated":"2016-03-15 03:16:04.000000000","message":"tenant_id refers to the tenant id which made the vim create API call","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    tenant_id \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":44,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":45,"context_line":"    description \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":46,"context_line":"    placement_attr \u003d sa.Column(sa.PickleType, nullable\u003dTrue)"},{"line_number":47,"context_line":"    vim_auth \u003d orm.relationship(\u0027VimAuth\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_0a1fce5f","line":46,"updated":"2016-03-15 01:36:43.000000000","message":"Is this used to store a dict of attr related to remote VIM  - url, user, pw, etc. ? The word \"placement\" has lots of meaning in NFVO. Consider naming something bit more specific.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    tenant_id \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":44,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":45,"context_line":"    description \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":46,"context_line":"    placement_attr \u003d sa.Column(sa.PickleType, nullable\u003dTrue)"},{"line_number":47,"context_line":"    vim_auth \u003d orm.relationship(\u0027VimAuth\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_dbbad609","line":46,"in_reply_to":"3afc51ec_0a1fce5f","updated":"2016-03-15 03:16:04.000000000","message":"placement_attr stores the regions/AZ discovered on remote VIM. Url, user, pw, etc. are stored in auth_attr. regions/AZ are called out as segregation methods in openstack docs. will segregation_attr be better?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"40f76186ec0aa870768c9a2205965893060db4ff","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    tenant_id \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":44,"context_line":"    name \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":45,"context_line":"    description \u003d sa.Column(sa.String(255), nullable\u003dTrue)"},{"line_number":46,"context_line":"    placement_attr \u003d sa.Column(sa.PickleType, nullable\u003dTrue)"},{"line_number":47,"context_line":"    vim_auth \u003d orm.relationship(\u0027VimAuth\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_ec755bfa","line":46,"in_reply_to":"3afc51ec_dbbad609","updated":"2016-03-15 05:01:22.000000000","message":"segregation_attr is even worse :(\n\nNow that you explain the contents - I\u0027d stick with placement_attr.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":9375,"name":"Stephen Wong","email":"stephen.kf.wong@gmail.com","username":"s3wong"},"change_message_id":"637cea7d26d94eaee9b7c1e4454f220c2695e79f","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                raise nfvo.VimInUseException(vim_id\u003dvim_id)"},{"line_number":135,"context_line":"        return devices_db"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def get_vim_delete(self, context, vim_id):"},{"line_number":138,"context_line":"        if not self.is_vim_still_in_use(context, vim_id):"},{"line_number":139,"context_line":"            return self.get_vim(context, vim_id)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da0c15f0_aa5ff63f","line":137,"updated":"2016-03-27 06:01:54.000000000","message":"What is \"get_vim_delete\"? get VIM that is deleted, or delete that VIM after getting it? Looking at the code, it seems like you are doing a check on whether the VIM is in use, so my guess is this method is for people to do a check on whether the VIM is in use, then if get_vim_delete returns, then the user can safely delete it?\n\nWouldn\u0027t it make sense to do this in one operation (check if it isn\u0027t in use, then just delete it)?","commit_id":"2001c8767e628d9d2a4102e413845fcc01dd1e3d"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"a0139c2b4e555b3c0f0d378948d1fc11af39f27a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                raise nfvo.VimInUseException(vim_id\u003dvim_id)"},{"line_number":135,"context_line":"        return devices_db"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def get_vim_delete(self, context, vim_id):"},{"line_number":138,"context_line":"        if not self.is_vim_still_in_use(context, vim_id):"},{"line_number":139,"context_line":"            return self.get_vim(context, vim_id)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da0c15f0_9e618bab","line":137,"in_reply_to":"da0c15f0_aa5ff63f","updated":"2016-03-27 20:24:56.000000000","message":"the reason behind splitting it to 2 operations is because there is a driver operation to be performed before doing a safe delete of vim from DB. Once that is executed, only then the vim will be removed from db. If the 2 operations (VIM in use and safe delete are combined), assuming the driver operation succeeded but the vim in use/safe delete in DB errored out, then the system goes to an inconsistent state for that vim obj where the driver operation succeeded but the db operation failed. I will move this get_vim_delete logic to plugin itself as it would help understand the flow better.","commit_id":"2001c8767e628d9d2a4102e413845fcc01dd1e3d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"abb90bebe11460fdbf05ceaff5c457c02a0a2355","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                    vim_db \u003d ("},{"line_number":154,"context_line":"                        self._model_query(context, Vim)."},{"line_number":155,"context_line":"                        filter(Vim.id \u003d\u003d vim_id)."},{"line_number":156,"context_line":"                        with_lockmode(\u0027update\u0027).one())"},{"line_number":157,"context_line":"                except orm_exc.NoResultFound:"},{"line_number":158,"context_line":"                    raise nfvo.VimNotFound(vim_id\u003dvim_id)"},{"line_number":159,"context_line":"        vim_obj \u003d self._make_vim_dict(vim_db)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da0c15f0_e22c614c","line":156,"range":{"start_line":156,"start_character":39,"end_line":156,"end_character":45},"updated":"2016-03-28 06:59:32.000000000","message":"if get_vim_update is not in the same transaction with its caller,  the update locker does not work at all.","commit_id":"2001c8767e628d9d2a4102e413845fcc01dd1e3d"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"0204ab5b3c29d6ea073a00a4969e7be23d952185","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    vim_db \u003d ("},{"line_number":150,"context_line":"                        self._model_query(context, Vim)."},{"line_number":151,"context_line":"                        filter(Vim.id \u003d\u003d vim_id)."},{"line_number":152,"context_line":"                        with_lockmode(\u0027update\u0027).one())"},{"line_number":153,"context_line":"                except orm_exc.NoResultFound:"},{"line_number":154,"context_line":"                    raise nfvo.VimNotFound(vim_id\u003dvim_id)"},{"line_number":155,"context_line":"        vim_obj \u003d self._make_vim_dict(vim_db)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da0c15f0_e2baa1e0","line":152,"range":{"start_line":152,"start_character":39,"end_line":152,"end_character":45},"updated":"2016-03-28 07:00:57.000000000","message":"the update locker does not work if it is not in the same transaction with its caller.","commit_id":"a5d897f4f198ea0e7bf9d17084459895d0043009"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7e262278ab942bae6200debfe210c0856c04466e","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                    vim_db \u003d ("},{"line_number":150,"context_line":"                        self._model_query(context, Vim)."},{"line_number":151,"context_line":"                        filter(Vim.id \u003d\u003d vim_id)."},{"line_number":152,"context_line":"                        with_lockmode(\u0027update\u0027).one())"},{"line_number":153,"context_line":"                except orm_exc.NoResultFound:"},{"line_number":154,"context_line":"                    raise nfvo.VimNotFound(vim_id\u003dvim_id)"},{"line_number":155,"context_line":"        vim_obj \u003d self._make_vim_dict(vim_db)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba0121b8_d8ba4d6e","line":152,"range":{"start_line":152,"start_character":39,"end_line":152,"end_character":45},"in_reply_to":"da0c15f0_e2baa1e0","updated":"2016-03-28 19:15:00.000000000","message":"yes, fixed it. thanks","commit_id":"a5d897f4f198ea0e7bf9d17084459895d0043009"}],"tacker/extensions/nfvo.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class VimInUseException(exceptions.TackerException):"},{"line_number":37,"context_line":"    message \u003d _(\"VIM %(vim_id)s is still in use by device %(device_id)s\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class VimDefaultIdException(exceptions.TackerException):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_4467f74c","line":37,"range":{"start_line":37,"start_character":51,"end_line":37,"end_character":57},"updated":"2016-03-03 02:40:38.000000000","message":"no device any more, use VNF","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class VimInUseException(exceptions.TackerException):"},{"line_number":37,"context_line":"    message \u003d _(\"VIM %(vim_id)s is still in use by device %(device_id)s\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class VimDefaultIdException(exceptions.TackerException):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_be790c32","line":37,"range":{"start_line":37,"start_character":51,"end_line":37,"end_character":57},"in_reply_to":"7af24918_4467f74c","updated":"2016-03-07 22:19:01.000000000","message":"Done","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":72,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":73,"context_line":"        },"},{"line_number":74,"context_line":"        \u0027auth_url\u0027: {"},{"line_number":75,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":76,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":77,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_a4819bc5","line":74,"range":{"start_line":74,"start_character":20,"end_line":74,"end_character":21},"updated":"2016-03-03 02:40:38.000000000","message":"add \u0027required\u0027","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":72,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":73,"context_line":"        },"},{"line_number":74,"context_line":"        \u0027auth_url\u0027: {"},{"line_number":75,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":76,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":77,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_9ee8907e","line":74,"range":{"start_line":74,"start_character":20,"end_line":74,"end_character":21},"in_reply_to":"7af24918_a4819bc5","updated":"2016-03-07 22:19:01.000000000","message":"there is no default value for auth_url which implies it is required.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        \u0027placement_attr\u0027: {"},{"line_number":102,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":103,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":104,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"},{"line_number":105,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":106,"context_line":"            \u0027default\u0027: None,"},{"line_number":107,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_241f4bb8","line":104,"range":{"start_line":104,"start_character":31,"end_line":104,"end_character":45},"updated":"2016-03-03 02:40:38.000000000","message":"no need validate for readonly attr","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        \u0027placement_attr\u0027: {"},{"line_number":102,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":103,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":104,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"},{"line_number":105,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":106,"context_line":"            \u0027default\u0027: None,"},{"line_number":107,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_3e9a1c15","line":104,"range":{"start_line":104,"start_character":31,"end_line":104,"end_character":45},"in_reply_to":"7af24918_241f4bb8","updated":"2016-03-07 22:19:01.000000000","message":"Done","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3afc51ec_857d8f70","updated":"2016-03-15 01:36:43.000000000","message":"IMPORTANT NOTE: Reviews in this file is the highest priority to finalize the tackerclient changes.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_65a963df","line":85,"updated":"2016-03-15 01:36:43.000000000","message":"can you give a sample for the dict passed in this attr?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"491d94bf365917a68012a56c0c801502a4eeb4cf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_27060c86","line":85,"in_reply_to":"1af94dfe_d2b11f91","updated":"2016-03-18 06:55:42.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"1ef705e1c8a4fa264b3781aa6ba70a46fcf465d7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_d2b11f91","line":85,"in_reply_to":"1af94dfe_e4c75910","updated":"2016-03-17 09:02:11.000000000","message":"It will be good if we accommodate both id \u0026 name perhaps using a dict\n\nvim_project: { id: 343324, name: \"nfv-tenant\" }\n\nAgain, once we add support for [1] this will just become the default tenant used for this vim if it is not specified during vnf-create.\n\n[1] https://bugs.launchpad.net/tacker/+bug/1554287","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"37de5892a68fe0a736a513bba77d8a020b99c5cf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_e4c75910","line":85,"in_reply_to":"1af94dfe_e5ce6e82","updated":"2016-03-16 17:34:58.000000000","message":"1)Done\n2) the user can provide tenant name or tenant id. do you think we should support 2 new attributes like:\nvim_tenant_name/vim_tenant_id ?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"3a734363baedbe65162488754825e90cb22b6073","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_e5ce6e82","line":85,"in_reply_to":"3afc51ec_0f67d94d","updated":"2016-03-15 20:21:07.000000000","message":"As you might have realized I\u0027m zooming in the API we are exposing. IMO config-file input on the client side is just a convenience feature. Given auth_url is seperate I\u0027d suggest following changes to the *API*:\n\n1) Rename auth_attr to auth_creds\n2) Move out tenant_name into separate, meaningful one that doesn\u0027t conflict with L66 above. Perhaps \"placement_tenant\" ?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"40f76186ec0aa870768c9a2205965893060db4ff","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_ccf7bf57","line":85,"in_reply_to":"3afc51ec_3bbbfae6","updated":"2016-03-15 05:01:22.000000000","message":"I\u0027m quite conflicted on this approach of bundling attributes like this. \n\nDo you see any issue in making bit more granular RESOURCE_ATTRIBUTE_MAP entries like,\n\nvim_auth_url : string\nvim_auth_creds : { username, password }\nvim_project: string","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_3bbbfae6","line":85,"in_reply_to":"3afc51ec_65a963df","updated":"2016-03-15 03:16:04.000000000","message":"auth_url: http://10.10.10.13:5000\nusername: nfv_user\npassword: tacker_pw\ntenant_name: nfv","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"c26d1ab9dd4f88471b585567482fcee3de7d4597","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":83,"context_line":"            \u0027is_visible\u0027: True"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"        \u0027auth_attr\u0027: {"},{"line_number":86,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":87,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":88,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_nodata\u0027: None},"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_0f67d94d","line":85,"in_reply_to":"3afc51ec_ccf7bf57","updated":"2016-03-15 05:53:41.000000000","message":"auth_url is already called out as a separate attribute. see L79. the dict pasted here was the config input provided for vim-register. auth_attr contains just username, password and tenant_name/project_name similar to:\n\nauth_attr: { username: \u0027xyz\u0027, password: \u0027abc\u0027, tenant_name: \u0027nfv\u0027}","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":103,"context_line":"            \u0027default\u0027: \u0027\u0027,"},{"line_number":104,"context_line":"        },"},{"line_number":105,"context_line":"        \u0027placement_attr\u0027: {"},{"line_number":106,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":107,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":108,"context_line":"            \u0027is_visible\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_cade866c","line":105,"updated":"2016-03-15 01:36:43.000000000","message":"again, consider naming with bit more reduced scope (or meaning) than placement_attr.\n\nAlso, can you give a sample for the dict passed in this attr?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"40f76186ec0aa870768c9a2205965893060db4ff","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":103,"context_line":"            \u0027default\u0027: \u0027\u0027,"},{"line_number":104,"context_line":"        },"},{"line_number":105,"context_line":"        \u0027placement_attr\u0027: {"},{"line_number":106,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":107,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":108,"context_line":"            \u0027is_visible\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_0c9c070e","line":105,"in_reply_to":"3afc51ec_5be1a6fd","updated":"2016-03-15 05:01:22.000000000","message":"This one looks fine to me.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":103,"context_line":"            \u0027default\u0027: \u0027\u0027,"},{"line_number":104,"context_line":"        },"},{"line_number":105,"context_line":"        \u0027placement_attr\u0027: {"},{"line_number":106,"context_line":"            \u0027allow_post\u0027: False,"},{"line_number":107,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":108,"context_line":"            \u0027is_visible\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_5be1a6fd","line":105,"in_reply_to":"3afc51ec_cade866c","updated":"2016-03-15 03:16:04.000000000","message":"\u0027placement_attr\u0027: {\u0027regions\u0027: [\u0027RegionOne\u0027]}","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/extensions/vnfm.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":221,"context_line":"            \u0027default\u0027: \u0027\u0027,"},{"line_number":222,"context_line":"        },"},{"line_number":223,"context_line":"        \u0027name\u0027: {"},{"line_number":224,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":225,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":226,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_24a90b25","line":223,"range":{"start_line":223,"start_character":16,"end_line":223,"end_character":17},"updated":"2016-03-03 02:40:38.000000000","message":"lacking region name?","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":221,"context_line":"            \u0027default\u0027: \u0027\u0027,"},{"line_number":222,"context_line":"        },"},{"line_number":223,"context_line":"        \u0027name\u0027: {"},{"line_number":224,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":225,"context_line":"            \u0027allow_put\u0027: True,"},{"line_number":226,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_7e72e4e6","line":223,"range":{"start_line":223,"start_character":16,"end_line":223,"end_character":17},"in_reply_to":"7af24918_24a90b25","updated":"2016-03-07 22:19:01.000000000","message":"region name gets added to device attributes if specified?","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        },"},{"line_number":249,"context_line":"        \u0027attributes\u0027: {"},{"line_number":250,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":251,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":252,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_none\u0027: None},"},{"line_number":253,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":254,"context_line":"            \u0027default\u0027: {},"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_449c170f","line":251,"range":{"start_line":251,"start_character":25,"end_line":251,"end_character":30},"updated":"2016-03-03 02:40:38.000000000","message":"are u sure you need to change it? If you are, we can change it in another patch.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        },"},{"line_number":249,"context_line":"        \u0027attributes\u0027: {"},{"line_number":250,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":251,"context_line":"            \u0027allow_put\u0027: False,"},{"line_number":252,"context_line":"            \u0027validate\u0027: {\u0027type:dict_or_none\u0027: None},"},{"line_number":253,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":254,"context_line":"            \u0027default\u0027: {},"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_fea7144d","line":251,"range":{"start_line":251,"start_character":25,"end_line":251,"end_character":30},"in_reply_to":"7af24918_449c170f","updated":"2016-03-07 22:19:01.000000000","message":"no, this is not changed, will remove it.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"1ef705e1c8a4fa264b3781aa6ba70a46fcf465d7","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":220,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":221,"context_line":"            \u0027default\u0027: \u0027\u0027,"},{"line_number":222,"context_line":"        },"},{"line_number":223,"context_line":"        \u0027name\u0027: {"},{"line_number":224,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":225,"context_line":"            \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_95278163","line":222,"updated":"2016-03-17 09:02:11.000000000","message":"How is vim-region captured in the vnf-create call ? Assuming it is carried using the catch-all \u0027attributes\u0027 in L249 below, we should move that into a separate attr in this API. Perhaps introduce a placement_attr dict similar to vim-response attr with the same name ?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"491d94bf365917a68012a56c0c801502a4eeb4cf","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            \u0027validate\u0027: {\u0027type:string\u0027: None},"},{"line_number":220,"context_line":"            \u0027is_visible\u0027: True,"},{"line_number":221,"context_line":"            \u0027default\u0027: \u0027\u0027,"},{"line_number":222,"context_line":"        },"},{"line_number":223,"context_line":"        \u0027name\u0027: {"},{"line_number":224,"context_line":"            \u0027allow_post\u0027: True,"},{"line_number":225,"context_line":"            \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_c7eda8b8","line":222,"in_reply_to":"1af94dfe_95278163","updated":"2016-03-18 06:55:42.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/manager.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        self.service_plugins \u003d {}"},{"line_number":101,"context_line":"        self._load_service_plugins()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @staticmethod"},{"line_number":104,"context_line":"    def load_class_for_provider(namespace, plugin_provider):"},{"line_number":105,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_64331315","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":17},"updated":"2016-03-03 02:40:38.000000000","message":"I think we can do it in another patch.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        self.service_plugins \u003d {}"},{"line_number":101,"context_line":"        self._load_service_plugins()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @staticmethod"},{"line_number":104,"context_line":"    def load_class_for_provider(namespace, plugin_provider):"},{"line_number":105,"context_line":"        \"\"\"Loads plugin using alias or class name"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_1e82c094","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":17},"in_reply_to":"7af24918_64331315","updated":"2016-03-07 22:19:01.000000000","message":"sure i can submit a separate patch for these changes","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"}],"tacker/nfvo/drivers/vim/openstack_driver.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"eeaa034e5c90c2a2107e4b6943355848f58c9e71","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @log.log"},{"line_number":166,"context_line":"    def encode_vim_auth(self, vim_id, auth):"},{"line_number":167,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_3ac7f646","line":166,"range":{"start_line":166,"start_character":23,"end_line":166,"end_character":24},"updated":"2016-03-21 05:13:26.000000000","message":"It is not scale friendly. for example I have tacker cluster with two tacker API, each one on each node.\n\nclient registers VIM0, for which the fernet key is stored on node1\n\nclient creates vnf, which is received on node2, where there is no fernet key stored.\n\nwhat will happen then?","commit_id":"92c2afbbe9c50c868d3a430d8cee7090555e138a"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"618071970a29c4766cbea560d5caaaf5c0ae7c1f","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @log.log"},{"line_number":166,"context_line":"    def encode_vim_auth(self, vim_id, auth):"},{"line_number":167,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_f52aafe6","line":166,"range":{"start_line":166,"start_character":23,"end_line":166,"end_character":24},"in_reply_to":"fa0719c6_15b003f4","updated":"2016-03-21 15:54:53.000000000","message":"right now we do not support tacker api clustering, this is a good approach to go or just let keystone handle all these steps if keystone federation is supported across nodes","commit_id":"92c2afbbe9c50c868d3a430d8cee7090555e138a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"34858685e2f5e5f1631a2243215949954d6817c7","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @log.log"},{"line_number":166,"context_line":"    def encode_vim_auth(self, vim_id, auth):"},{"line_number":167,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_3520a79b","line":166,"range":{"start_line":166,"start_character":23,"end_line":166,"end_character":24},"in_reply_to":"fa0719c6_3ac7f646","updated":"2016-03-21 05:56:54.000000000","message":"This is a valid concern.","commit_id":"92c2afbbe9c50c868d3a430d8cee7090555e138a"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"528c5764ab2c83550627fcaefaabe9c32b5ea8ca","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @log.log"},{"line_number":166,"context_line":"    def encode_vim_auth(self, vim_id, auth):"},{"line_number":167,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_7a4b2eb1","line":166,"range":{"start_line":166,"start_character":23,"end_line":166,"end_character":24},"in_reply_to":"fa0719c6_3ac7f646","updated":"2016-03-21 05:31:22.000000000","message":"the tacker server stores fernet keys for all VIMs (node1, node2, etc.) locally. When the client creates vnf for node 2, the key is 1st decrypted locally and only then instantiated on node2.","commit_id":"92c2afbbe9c50c868d3a430d8cee7090555e138a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"34858685e2f5e5f1631a2243215949954d6817c7","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @log.log"},{"line_number":166,"context_line":"    def encode_vim_auth(self, vim_id, auth):"},{"line_number":167,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_d59fabb2","line":166,"range":{"start_line":166,"start_character":23,"end_line":166,"end_character":24},"in_reply_to":"fa0719c6_7a4b2eb1","updated":"2016-03-21 05:56:54.000000000","message":"Yong Sheng is pointing to a case where two tacker API servers are running in two different servers for load balancing purposes. \n\nThere could be a case where vim-register API for VIM2 got handled by tacker-api-node-1 and vnf-create API on VIM2 got handled by tacker-api-node-2 - fernet keys for VIM2 won\u0027t be there in tacker-api-node-2.\n\nBTW, what is the downside of storing fernet keys in the db ?","commit_id":"92c2afbbe9c50c868d3a430d8cee7090555e138a"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"25bb9493ac639165c9c000e5aa52fae1febf4849","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @log.log"},{"line_number":166,"context_line":"    def encode_vim_auth(self, vim_id, auth):"},{"line_number":167,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_d5edeb26","line":166,"range":{"start_line":166,"start_character":23,"end_line":166,"end_character":24},"in_reply_to":"fa0719c6_d59fabb2","updated":"2016-03-21 06:03:58.000000000","message":"i understand it now.\n\nthe downside of storing keys in db is that the key to decrypt and the encrypted password are stored together in the same db. Password is then easy to decrypt since key and pw are residing together if db gets compromised. we can as well store it as plain text.","commit_id":"92c2afbbe9c50c868d3a430d8cee7090555e138a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"59931a6a05fb5e452506b3606e79d92c7d6c52b9","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @log.log"},{"line_number":166,"context_line":"    def encode_vim_auth(self, vim_id, auth):"},{"line_number":167,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_15b003f4","line":166,"range":{"start_line":166,"start_character":23,"end_line":166,"end_character":24},"in_reply_to":"fa0719c6_d5edeb26","updated":"2016-03-21 06:25:20.000000000","message":"Read [1] and [2]. The takeway is it is upto the service to keep the fernet key stores in sync. Perhaps we need an rsync across tacker nodes to keep the keys in sync or, for now, not support more than one tacker API server (yeah, it is bad). Thoughts?\n\n\n[1] http://docs.openstack.org/admin-guide-cloud/keystone_fernet_token_faq.html#how-do-i-add-new-keystone-nodes-to-a-deployment\n\n[2] http://docs.openstack.org/admin-guide-cloud/keystone_fernet_token_faq.html#how-should-i-approach-key-distribution","commit_id":"92c2afbbe9c50c868d3a430d8cee7090555e138a"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"02ed4ddc935546d79dd19c10852a1d0e5aa9ebaa","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"OPTS \u003d [cfg.StrOpt(\u0027openstack\u0027, default\u003d\u0027/etc/keystone/fernet_keys\u0027,"},{"line_number":32,"context_line":"                   help\u003d\u0027Dir.path to store fernet keys.\u0027)]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027vim_keys\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da0c15f0_61506e5f","line":31,"range":{"start_line":31,"start_character":41,"end_line":31,"end_character":66},"updated":"2016-03-26 00:04:44.000000000","message":"The fernet keys are created and owned by tacker. However, we don\u0027t have control over where keystone is deployed. It could be even on a different server than where tacker service is installed. If we \"create\" fernet keys, we need to own it. \n\nI\u0027d suggest we store this in a default path like \"/etc/tacker/vim/fernet_keys\"","commit_id":"3f57e39758d04b6102ea420329777b51ae2aad22"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"b5df3370c2f742c043c5d0bf3c930cba8bb165b2","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"OPTS \u003d [cfg.StrOpt(\u0027openstack\u0027, default\u003d\u0027/etc/keystone/fernet_keys\u0027,"},{"line_number":32,"context_line":"                   help\u003d\u0027Dir.path to store fernet keys.\u0027)]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027vim_keys\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da0c15f0_e1347efc","line":31,"range":{"start_line":31,"start_character":41,"end_line":31,"end_character":66},"in_reply_to":"da0c15f0_61506e5f","updated":"2016-03-26 00:13:28.000000000","message":"Done","commit_id":"3f57e39758d04b6102ea420329777b51ae2aad22"}],"tacker/nfvo/nfvo_plugin.py":[{"author":{"_account_id":9375,"name":"Stephen Wong","email":"stephen.kf.wong@gmail.com","username":"s3wong"},"change_message_id":"637cea7d26d94eaee9b7c1e4454f220c2695e79f","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @log.log"},{"line_number":83,"context_line":"    def delete_vim(self, context, vim_id):"},{"line_number":84,"context_line":"        vim_obj \u003d self.get_vim_delete(context, vim_id)"},{"line_number":85,"context_line":"        self._vim_drivers.invoke(vim_obj[\u0027type\u0027], \u0027deregister_vim\u0027,"},{"line_number":86,"context_line":"                                 vim_id\u003dvim_id)"},{"line_number":87,"context_line":"        super(NfvoPlugin, self).delete_vim(context, vim_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da0c15f0_99ac0e37","line":84,"updated":"2016-03-27 06:01:54.000000000","message":"going back to the question I asked earlier... if VIM is in use, then vim_obj would be None, so accessing vim_obj[\u0027type\u0027] directly below would cause an exception?\n\nGiven the context of how get_vim_delete is used, would it be better if VIM about to be deleted be marked \u0027to_be_deleted\u0027 which would reject anyone using that VIM?","commit_id":"2001c8767e628d9d2a4102e413845fcc01dd1e3d"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"a0139c2b4e555b3c0f0d378948d1fc11af39f27a","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @log.log"},{"line_number":83,"context_line":"    def delete_vim(self, context, vim_id):"},{"line_number":84,"context_line":"        vim_obj \u003d self.get_vim_delete(context, vim_id)"},{"line_number":85,"context_line":"        self._vim_drivers.invoke(vim_obj[\u0027type\u0027], \u0027deregister_vim\u0027,"},{"line_number":86,"context_line":"                                 vim_id\u003dvim_id)"},{"line_number":87,"context_line":"        super(NfvoPlugin, self).delete_vim(context, vim_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da0c15f0_3e731f82","line":84,"in_reply_to":"da0c15f0_99ac0e37","updated":"2016-03-27 20:24:56.000000000","message":"we do not maintain the status of VIM currently. To answer your question regarding vim_obj[\u0027type\u0027] raising exception, if VIM is in use, the operation itself exits out without going through the rest of flow. See vim_db L34 where it raises an exception if the device is still in use","commit_id":"2001c8767e628d9d2a4102e413845fcc01dd1e3d"}],"tacker/services/nfvo/__init__.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"1ef705e1c8a4fa264b3781aa6ba70a46fcf465d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1af94dfe_d20d9f3f","updated":"2016-03-17 09:02:11.000000000","message":"The choice of this dir name seems a bit odd. \"services\" is a broad term. Currently, we have \"tacker/vm\" for vnfm related things. Assuming we will refactor that to \"tacker/vnfm\" it would make sense remove tacker/services and bring nfvo to the top level like \"tacker/nfvo\"","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"491d94bf365917a68012a56c0c801502a4eeb4cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1af94dfe_a7417cab","in_reply_to":"1af94dfe_d20d9f3f","updated":"2016-03-18 06:55:42.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/services/nfvo/drivers/vim/openstack_driver.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"OPTS \u003d [cfg.StrOpt(\u0027openstack\u0027, default\u003d\u0027/etc/keystone/fernet_keys\u0027,"},{"line_number":32,"context_line":"                   help\u003d\u0027Dir.path to store fernet keys.\u0027)]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027vim_keys\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_5f2ea443","line":31,"range":{"start_line":31,"start_character":46,"end_line":31,"end_character":54},"updated":"2016-03-03 02:40:38.000000000","message":"it is too bad, it will limit the scale.","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":"CONF \u003d cfg.CONF"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"OPTS \u003d [cfg.StrOpt(\u0027openstack\u0027, default\u003d\u0027/etc/keystone/fernet_keys\u0027,"},{"line_number":32,"context_line":"                   help\u003d\u0027Dir.path to store fernet keys.\u0027)]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027vim_keys\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_b9792632","line":31,"range":{"start_line":31,"start_character":46,"end_line":31,"end_character":54},"in_reply_to":"7af24918_5f2ea443","updated":"2016-03-07 22:19:01.000000000","message":"did you mean scale as limit on the number of keys stored in file system? can you please elaborate?\n\nstoring in keystone/fernet_keys path was influenced from keystone project itself for storing fernet tokens [1]. The path is basically root privileged and strictly admin accessible. I\u0027m open to ideas. \n\n[1] https://github.com/openstack/keystone/blob/master/keystone/common/config.py#L269","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3afc51ec_2abe0ad4","updated":"2016-03-15 01:36:43.000000000","message":"General comment - even though this is under nfvo/drivers/vim, I anticipate this code will evolve in the future into a common \"openstack-driver\" that would be used across Tacker including from VNFM \"drivers\". Would it make sense to consolidate all API calls going out of Taker into other openstack API endpoints consolidated into one uber openstack driver? For e.g. tacker/common/client.py comes to my mind.\n\nAgain, this need not happen in this patchset but something to keep in mind and be opportunistic to see if we can continue to consolidate.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3afc51ec_5bb886e5","in_reply_to":"3afc51ec_2abe0ad4","updated":"2016-03-15 03:16:04.000000000","message":"tacker/common/client.py has been refactored to remove the conf values for all the clients and keep the file thin. i believe that client file needs to be realigned with openstack_driver. we could take this up as refactoring RFE in newton cycle.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return vim_obj"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @log.log"},{"line_number":113,"context_line":"    def register(self, vim_obj):"},{"line_number":114,"context_line":"        \"\"\"Validate and register VIM"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        Store VIM information in Tacker for"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_ca96864b","line":113,"updated":"2016-03-15 01:36:43.000000000","message":"With the above general comment in mind.. please name this as \"vim_register\"","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        return vim_obj"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    @log.log"},{"line_number":113,"context_line":"    def register(self, vim_obj):"},{"line_number":114,"context_line":"        \"\"\"Validate and register VIM"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        Store VIM information in Tacker for"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_db45b6b3","line":113,"in_reply_to":"3afc51ec_ca96864b","updated":"2016-03-15 03:16:04.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        return vim_info"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    @log.log"},{"line_number":126,"context_line":"    def deregister(self, vim_id):"},{"line_number":127,"context_line":"        \"\"\"Deregister VIM from NFVO"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        Delete VIM keys from file system"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_ca7de61d","line":126,"updated":"2016-03-15 01:36:43.000000000","message":"vim_deregister","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        return vim_info"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    @log.log"},{"line_number":126,"context_line":"    def deregister(self, vim_id):"},{"line_number":127,"context_line":"        \"\"\"Deregister VIM from NFVO"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        Delete VIM keys from file system"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_3b13fab9","line":126,"in_reply_to":"3afc51ec_ca7de61d","updated":"2016-03-15 03:16:04.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        return self.delete_auth(vim_id)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @log.log"},{"line_number":134,"context_line":"    def delete_auth(self, vim_id):"},{"line_number":135,"context_line":"        \"\"\"Delete vim information"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"         Delete vim key stored in file system"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_0aafce81","line":134,"updated":"2016-03-15 01:36:43.000000000","message":"delete_vim_auth ?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        return self.delete_auth(vim_id)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @log.log"},{"line_number":134,"context_line":"    def delete_auth(self, vim_id):"},{"line_number":135,"context_line":"        \"\"\"Delete vim information"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"         Delete vim key stored in file system"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_1b16fea6","line":134,"in_reply_to":"3afc51ec_0aafce81","updated":"2016-03-15 03:16:04.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        except OSError:"},{"line_number":145,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def encode_auth(self, vim_id, auth):"},{"line_number":148,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_aa9fba4e","line":147,"updated":"2016-03-15 01:36:43.000000000","message":"encode_vim_auth ?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        except OSError:"},{"line_number":145,"context_line":"            LOG.warn(_(\u0027VIM key deletion unsuccessful for vim %s\u0027), vim_id)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def encode_auth(self, vim_id, auth):"},{"line_number":148,"context_line":"        \"\"\"Encode VIM credentials"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"         Store VIM auth using fernet key encryption"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_7b0d828f","line":147,"in_reply_to":"3afc51ec_aa9fba4e","updated":"2016-03-15 03:16:04.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/services/nfvo/nfvo_plugin.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    OPTS \u003d ["},{"line_number":41,"context_line":"        cfg.MultiStrOpt("},{"line_number":42,"context_line":"            \u0027vim_drivers\u0027, default\u003d\u0027openstack\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027VIM driver for launching VNFs\u0027)),"},{"line_number":44,"context_line":"    ]"},{"line_number":45,"context_line":"    cfg.CONF.register_opts(OPTS, \u0027nfvo\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_bf71a878","line":42,"range":{"start_line":42,"start_character":34,"end_line":42,"end_character":36},"updated":"2016-03-03 02:40:38.000000000","message":"user list?","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    OPTS \u003d ["},{"line_number":41,"context_line":"        cfg.MultiStrOpt("},{"line_number":42,"context_line":"            \u0027vim_drivers\u0027, default\u003d\u0027openstack\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027VIM driver for launching VNFs\u0027)),"},{"line_number":44,"context_line":"    ]"},{"line_number":45,"context_line":"    cfg.CONF.register_opts(OPTS, \u0027nfvo\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_39bb56c6","line":42,"range":{"start_line":42,"start_character":34,"end_line":42,"end_character":36},"in_reply_to":"7af24918_bf71a878","updated":"2016-03-07 22:19:01.000000000","message":"can you please elaborate?","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"4a1f7c1edd1621fcd288823cad9d9ee4fe5adbab","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    OPTS \u003d ["},{"line_number":41,"context_line":"        cfg.MultiStrOpt("},{"line_number":42,"context_line":"            \u0027vim_drivers\u0027, default\u003d\u0027openstack\u0027,"},{"line_number":43,"context_line":"            help\u003d_(\u0027VIM driver for launching VNFs\u0027)),"},{"line_number":44,"context_line":"    ]"},{"line_number":45,"context_line":"    cfg.CONF.register_opts(OPTS, \u0027nfvo\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_2dc62b48","line":42,"range":{"start_line":42,"start_character":34,"end_line":42,"end_character":36},"in_reply_to":"7af24918_bf71a878","updated":"2016-03-09 02:10:00.000000000","message":"cfg.ListOpt","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self):"},{"line_number":48,"context_line":"        super(NfvoPlugin, self).__init__()"},{"line_number":49,"context_line":"        self._vim_driver \u003d driver_manager.DriverManager("},{"line_number":50,"context_line":"            \u0027tacker.nfvo.vim.drivers\u0027,"},{"line_number":51,"context_line":"            cfg.CONF.nfvo.vim_drivers)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_5003500d","line":49,"range":{"start_line":49,"start_character":13,"end_line":49,"end_character":24},"updated":"2016-03-09 02:49:41.000000000","message":"_vim_drivers since the configure item is vim_drivers?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self):"},{"line_number":48,"context_line":"        super(NfvoPlugin, self).__init__()"},{"line_number":49,"context_line":"        self._vim_driver \u003d driver_manager.DriverManager("},{"line_number":50,"context_line":"            \u0027tacker.nfvo.vim.drivers\u0027,"},{"line_number":51,"context_line":"            cfg.CONF.nfvo.vim_drivers)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_11226500","line":49,"range":{"start_line":49,"start_character":13,"end_line":49,"end_character":24},"in_reply_to":"5aef4532_5003500d","updated":"2016-03-15 03:16:04.000000000","message":"Done","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        vim_type \u003d vim[\u0027vim\u0027][\u0027type\u0027]"},{"line_number":57,"context_line":"        vim[\u0027vim\u0027][\u0027id\u0027] \u003d str(uuid.uuid4())"},{"line_number":58,"context_line":"        vim_data \u003d self._vim_driver.invoke("},{"line_number":59,"context_line":"            vim_type, \u0027register\u0027, vim_obj\u003dvim[\u0027vim\u0027])"},{"line_number":60,"context_line":"        res \u003d super(NfvoPlugin, self).create_vim(context, vim_data)"},{"line_number":61,"context_line":"        return res"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_4d1c5777","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":20},"updated":"2016-03-09 02:49:41.000000000","message":"I think we should choose vim_driver via vim_type.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        vim_type \u003d vim[\u0027vim\u0027][\u0027type\u0027]"},{"line_number":57,"context_line":"        vim[\u0027vim\u0027][\u0027id\u0027] \u003d str(uuid.uuid4())"},{"line_number":58,"context_line":"        vim_data \u003d self._vim_driver.invoke("},{"line_number":59,"context_line":"            vim_type, \u0027register\u0027, vim_obj\u003dvim[\u0027vim\u0027])"},{"line_number":60,"context_line":"        res \u003d super(NfvoPlugin, self).create_vim(context, vim_data)"},{"line_number":61,"context_line":"        return res"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_718769d7","line":59,"range":{"start_line":59,"start_character":12,"end_line":59,"end_character":20},"in_reply_to":"5aef4532_4d1c5777","updated":"2016-03-15 03:16:04.000000000","message":"yes","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        vim[\u0027vim\u0027][\u0027id\u0027] \u003d str(uuid.uuid4())"},{"line_number":58,"context_line":"        vim_data \u003d self._vim_driver.invoke("},{"line_number":59,"context_line":"            vim_type, \u0027register\u0027, vim_obj\u003dvim[\u0027vim\u0027])"},{"line_number":60,"context_line":"        res \u003d super(NfvoPlugin, self).create_vim(context, vim_data)"},{"line_number":61,"context_line":"        return res"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @log.log"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_704e4c70","line":60,"range":{"start_line":60,"start_character":38,"end_line":60,"end_character":48},"updated":"2016-03-09 02:49:41.000000000","message":"what if super.create_vim failed, but vim_dirver.invoke succeed?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        vim[\u0027vim\u0027][\u0027id\u0027] \u003d str(uuid.uuid4())"},{"line_number":58,"context_line":"        vim_data \u003d self._vim_driver.invoke("},{"line_number":59,"context_line":"            vim_type, \u0027register\u0027, vim_obj\u003dvim[\u0027vim\u0027])"},{"line_number":60,"context_line":"        res \u003d super(NfvoPlugin, self).create_vim(context, vim_data)"},{"line_number":61,"context_line":"        return res"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @log.log"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_51618d38","line":60,"range":{"start_line":60,"start_character":38,"end_line":60,"end_character":48},"in_reply_to":"5aef4532_704e4c70","updated":"2016-03-15 03:16:04.000000000","message":"vim-register will fail for this case","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @log.log"},{"line_number":64,"context_line":"    def update_vim(self, context, vim_id, vim):"},{"line_number":65,"context_line":"        vim_obj \u003d self.get_vim_update(context, vim_id)"},{"line_number":66,"context_line":"        utils.deep_update(vim_obj, vim[\u0027vim\u0027])"},{"line_number":67,"context_line":"        vim_type \u003d vim_obj[\u0027type\u0027]"},{"line_number":68,"context_line":"        self._vim_driver.invoke(vim_type, \u0027register\u0027, vim_obj\u003dvim_obj)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_f069bcbf","line":65,"range":{"start_line":65,"start_character":23,"end_line":65,"end_character":37},"updated":"2016-03-09 02:49:41.000000000","message":"are u sure we use get_vim_update not get_vim?\nwhat is the difference?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @log.log"},{"line_number":64,"context_line":"    def update_vim(self, context, vim_id, vim):"},{"line_number":65,"context_line":"        vim_obj \u003d self.get_vim_update(context, vim_id)"},{"line_number":66,"context_line":"        utils.deep_update(vim_obj, vim[\u0027vim\u0027])"},{"line_number":67,"context_line":"        vim_type \u003d vim_obj[\u0027type\u0027]"},{"line_number":68,"context_line":"        self._vim_driver.invoke(vim_type, \u0027register\u0027, vim_obj\u003dvim_obj)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_91d2f5d0","line":65,"range":{"start_line":65,"start_character":23,"end_line":65,"end_character":37},"in_reply_to":"5aef4532_f069bcbf","updated":"2016-03-15 03:16:04.000000000","message":"see nfvo_db.py L140-L143. This will basically lock the row for update","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        utils.deep_update(vim_obj, vim[\u0027vim\u0027])"},{"line_number":67,"context_line":"        vim_type \u003d vim_obj[\u0027type\u0027]"},{"line_number":68,"context_line":"        self._vim_driver.invoke(vim_type, \u0027register\u0027, vim_obj\u003dvim_obj)"},{"line_number":69,"context_line":"        return super(NfvoPlugin, self).update_vim(context, vim_id, vim_obj)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @log.log"},{"line_number":72,"context_line":"    def delete_vim(self, context, vim_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_d03da0bc","line":69,"range":{"start_line":69,"start_character":32,"end_line":69,"end_character":33},"updated":"2016-03-09 02:49:41.000000000","message":"bind this two steps together.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        utils.deep_update(vim_obj, vim[\u0027vim\u0027])"},{"line_number":67,"context_line":"        vim_type \u003d vim_obj[\u0027type\u0027]"},{"line_number":68,"context_line":"        self._vim_driver.invoke(vim_type, \u0027register\u0027, vim_obj\u003dvim_obj)"},{"line_number":69,"context_line":"        return super(NfvoPlugin, self).update_vim(context, vim_id, vim_obj)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @log.log"},{"line_number":72,"context_line":"    def delete_vim(self, context, vim_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_31f20170","line":69,"range":{"start_line":69,"start_character":32,"end_line":69,"end_character":33},"in_reply_to":"5aef4532_d03da0bc","updated":"2016-03-15 03:16:04.000000000","message":"can you please explain?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def delete_vim(self, context, vim_id):"},{"line_number":73,"context_line":"        vim_obj \u003d self.get_vim(context, vim_id)"},{"line_number":74,"context_line":"        self._vim_driver.invoke(vim_obj[\u0027type\u0027], \u0027delete_auth\u0027, vim_id\u003dvim_id)"},{"line_number":75,"context_line":"        super(NfvoPlugin, self).delete_vim(context, vim_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_f0425c3d","line":75,"range":{"start_line":75,"start_character":43,"end_line":75,"end_character":50},"updated":"2016-03-09 02:49:41.000000000","message":"bind this two steps together.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def delete_vim(self, context, vim_id):"},{"line_number":73,"context_line":"        vim_obj \u003d self.get_vim(context, vim_id)"},{"line_number":74,"context_line":"        self._vim_driver.invoke(vim_obj[\u0027type\u0027], \u0027delete_auth\u0027, vim_id\u003dvim_id)"},{"line_number":75,"context_line":"        super(NfvoPlugin, self).delete_vim(context, vim_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_51efcd86","line":75,"range":{"start_line":75,"start_character":43,"end_line":75,"end_character":50},"in_reply_to":"5aef4532_f0425c3d","updated":"2016-03-15 03:16:04.000000000","message":"can you please explain?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/vm/infra_drivers/heat/heat.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"e31b61ec6d9dc18520bcd500e3b30344cd22c21e","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                port_dict \u003d {"},{"line_number":148,"context_line":"                    \u0027type\u0027: \u0027OS::Neutron::Port\u0027,"},{"line_number":149,"context_line":"                    \u0027properties\u0027: {"},{"line_number":150,"context_line":"                        \u0027value_specs\u0027: {"},{"line_number":151,"context_line":"                            \u0027port_security_enabled\u0027: False"},{"line_number":152,"context_line":"                        }"},{"line_number":153,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_ffecd0f4","line":150,"range":{"start_line":150,"start_character":25,"end_line":150,"end_character":36},"updated":"2016-03-03 02:40:38.000000000","message":"put this in another patch","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"f10af37b5e0da168b439350d6513d45c92c1529f","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                port_dict \u003d {"},{"line_number":148,"context_line":"                    \u0027type\u0027: \u0027OS::Neutron::Port\u0027,"},{"line_number":149,"context_line":"                    \u0027properties\u0027: {"},{"line_number":150,"context_line":"                        \u0027value_specs\u0027: {"},{"line_number":151,"context_line":"                            \u0027port_security_enabled\u0027: False"},{"line_number":152,"context_line":"                        }"},{"line_number":153,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_79b5decb","line":150,"range":{"start_line":150,"start_character":25,"end_line":150,"end_character":36},"in_reply_to":"7af24918_ffecd0f4","updated":"2016-03-07 22:19:01.000000000","message":"Done","commit_id":"76e6afde2b7b92a5262baa6b288a63b750f8bcc4"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            raise vnfm.ParamYAMLInputMissing()"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @log.log"},{"line_number":141,"context_line":"    def _process_vdu_network_interfaces(self, vdu_id, vdu_dict, properties,"},{"line_number":142,"context_line":"                                        template_dict,"},{"line_number":143,"context_line":"                                        is_port_security_supported):"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_b0a6140e","line":141,"range":{"start_line":141,"start_character":40,"end_line":141,"end_character":44},"updated":"2016-03-09 02:49:41.000000000","message":"put these changes into independent patch and create some tests.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            raise vnfm.ParamYAMLInputMissing()"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @log.log"},{"line_number":141,"context_line":"    def _process_vdu_network_interfaces(self, vdu_id, vdu_dict, properties,"},{"line_number":142,"context_line":"                                        template_dict,"},{"line_number":143,"context_line":"                                        is_port_security_supported):"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_6ab492d0","line":141,"range":{"start_line":141,"start_character":40,"end_line":141,"end_character":44},"in_reply_to":"5aef4532_b0a6140e","updated":"2016-03-15 01:36:43.000000000","message":"+1 \n\nThis seems unrelated to this patchset. Looking at L231 below looks there is more to this. Are you trying to handle different version of remote heat-engines? If yes, can this be made a bit explicit?\n\nFor e.g. remote vim version can be capture during the initial vim-register and use that version to explicitly handle such deviations. This will pay off in the maintenance of this code by other developers after this patchset merges and who tries to handle HOT tempalte deviations.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            raise vnfm.ParamYAMLInputMissing()"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @log.log"},{"line_number":141,"context_line":"    def _process_vdu_network_interfaces(self, vdu_id, vdu_dict, properties,"},{"line_number":142,"context_line":"                                        template_dict,"},{"line_number":143,"context_line":"                                        is_port_security_supported):"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_b18571ae","line":141,"range":{"start_line":141,"start_character":40,"end_line":141,"end_character":44},"in_reply_to":"5aef4532_b0a6140e","updated":"2016-03-15 03:16:04.000000000","message":"yes, next patchset will have tests, and will remove WIP","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"1ef705e1c8a4fa264b3781aa6ba70a46fcf465d7","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def create_wait(self, plugin, context, device_dict, device_id, auth_attr):"},{"line_number":337,"context_line":"        device_attr \u003d device_dict[\u0027attributes\u0027]"},{"line_number":338,"context_line":"        heatclient_ \u003d HeatClient(auth_attr, device_attr.get("},{"line_number":339,"context_line":"            \u0027region_name\u0027, None))"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        stack \u003d heatclient_.get(device_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_353b0d9e","line":338,"updated":"2016-03-17 09:02:11.000000000","message":"I see each CRUD call (including L382, L422, L426, L431) create HeatClient object - which in turn creates a keystone session and a heatclient obj and it gets destroyed at the end of those each methods. On a busy time period, that\u0027s lots of unwanted roundtrip to possibly the same keystone \u0026 heat-server. \n\nConsider introducing a ClientConnection pool - perhaps using a factory design pattern to create those keystone/heatclient sessions only if not already available in the pool.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"491d94bf365917a68012a56c0c801502a4eeb4cf","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def create_wait(self, plugin, context, device_dict, device_id, auth_attr):"},{"line_number":337,"context_line":"        device_attr \u003d device_dict[\u0027attributes\u0027]"},{"line_number":338,"context_line":"        heatclient_ \u003d HeatClient(auth_attr, device_attr.get("},{"line_number":339,"context_line":"            \u0027region_name\u0027, None))"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"        stack \u003d heatclient_.get(device_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_c71be8c8","line":338,"in_reply_to":"1af94dfe_353b0d9e","updated":"2016-03-18 06:55:42.000000000","message":"sure, i will create a RFE for this","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/vm/keystone.py":[{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Keystone(object):"},{"line_number":33,"context_line":"    \"\"\"Keystone Plugin for OpenStack VIM"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Handles identity operations for a given OpenStack"},{"line_number":36,"context_line":"    instance such as version, session and client"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_ca032641","line":33,"updated":"2016-03-15 01:36:43.000000000","message":"Why are you calling this a keystone plugin ? Are you anticipating other auth subsystems beyond keystone ? Unlikely IMO.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class Keystone(object):"},{"line_number":33,"context_line":"    \"\"\"Keystone Plugin for OpenStack VIM"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Handles identity operations for a given OpenStack"},{"line_number":36,"context_line":"    instance such as version, session and client"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_3b2c9a01","line":33,"in_reply_to":"3afc51ec_ca032641","updated":"2016-03-15 03:16:04.000000000","message":"will remove the \u0027plugin\u0027 phrase","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/vm/plugin.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                   \u0027instance tacker plugin will use\u0027)),"},{"line_number":51,"context_line":"        cfg.IntOpt(\u0027boot_wait\u0027, default\u003d30,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Time interval to wait for VM to boot\u0027)),"},{"line_number":53,"context_line":"        cfg.StrOpt(\u0027default_vim\u0027, default\u003d\u0027\u0027, help\u003d_(\u0027Default VIM for VNF \u0027"},{"line_number":54,"context_line":"                                                     \u0027placement if VIM id is \u0027"},{"line_number":55,"context_line":"                                                     \u0027not provided by the \u0027"},{"line_number":56,"context_line":"                                                     \u0027user\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_f0cffc7c","line":53,"range":{"start_line":53,"start_character":20,"end_line":53,"end_character":31},"updated":"2016-03-09 02:49:41.000000000","message":"where are u using it?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                   \u0027instance tacker plugin will use\u0027)),"},{"line_number":51,"context_line":"        cfg.IntOpt(\u0027boot_wait\u0027, default\u003d30,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Time interval to wait for VM to boot\u0027)),"},{"line_number":53,"context_line":"        cfg.StrOpt(\u0027default_vim\u0027, default\u003d\u0027\u0027, help\u003d_(\u0027Default VIM for VNF \u0027"},{"line_number":54,"context_line":"                                                     \u0027placement if VIM id is \u0027"},{"line_number":55,"context_line":"                                                     \u0027not provided by the \u0027"},{"line_number":56,"context_line":"                                                     \u0027user\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_6a481288","line":53,"range":{"start_line":53,"start_character":20,"end_line":53,"end_character":31},"in_reply_to":"5aef4532_f0cffc7c","updated":"2016-03-15 01:36:43.000000000","message":"This seems to already taken care in tacker/vm/vim_con.py so, this can be removed from here ?","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                   \u0027instance tacker plugin will use\u0027)),"},{"line_number":51,"context_line":"        cfg.IntOpt(\u0027boot_wait\u0027, default\u003d30,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Time interval to wait for VM to boot\u0027)),"},{"line_number":53,"context_line":"        cfg.StrOpt(\u0027default_vim\u0027, default\u003d\u0027\u0027, help\u003d_(\u0027Default VIM for VNF \u0027"},{"line_number":54,"context_line":"                                                     \u0027placement if VIM id is \u0027"},{"line_number":55,"context_line":"                                                     \u0027not provided by the \u0027"},{"line_number":56,"context_line":"                                                     \u0027user\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_119545dd","line":53,"range":{"start_line":53,"start_character":20,"end_line":53,"end_character":31},"in_reply_to":"5aef4532_f0cffc7c","updated":"2016-03-15 03:16:04.000000000","message":"this is not used anymore, will remove it","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def get_vim(self, context, device):"},{"line_number":247,"context_line":"        device_attr \u003d device[\u0027attributes\u0027]"},{"line_number":248,"context_line":"        vim_res \u003d self.vim_client.get_vim(context, device[\u0027vim_id\u0027],"},{"line_number":249,"context_line":"                                          device_attr.get(\u0027region_name\u0027, None))"},{"line_number":250,"context_line":"        device_attr[\u0027vim_name\u0027] \u003d vim_res[\u0027vim_name\u0027]"},{"line_number":251,"context_line":"        device[\u0027vim_id\u0027] \u003d vim_res[\u0027vim_id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_70892c26","line":248,"range":{"start_line":248,"start_character":41,"end_line":248,"end_character":42},"updated":"2016-03-09 02:49:41.000000000","message":"device[\u0027vim_id\u0027] can be none.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def get_vim(self, context, device):"},{"line_number":247,"context_line":"        device_attr \u003d device[\u0027attributes\u0027]"},{"line_number":248,"context_line":"        vim_res \u003d self.vim_client.get_vim(context, device[\u0027vim_id\u0027],"},{"line_number":249,"context_line":"                                          device_attr.get(\u0027region_name\u0027, None))"},{"line_number":250,"context_line":"        device_attr[\u0027vim_name\u0027] \u003d vim_res[\u0027vim_name\u0027]"},{"line_number":251,"context_line":"        device[\u0027vim_id\u0027] \u003d vim_res[\u0027vim_id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_607151e0","line":248,"range":{"start_line":248,"start_character":41,"end_line":248,"end_character":42},"in_reply_to":"5aef4532_70892c26","updated":"2016-03-15 03:16:04.000000000","message":"the vim_id will be empty and not None as default.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"}],"tacker/vm/vim_con.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"ffb44693133400d6ecac1198dc27c6a69a18e1ef","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"OPTS \u003d ["},{"line_number":30,"context_line":"    cfg.StrOpt("},{"line_number":31,"context_line":"        \u0027default_vim\u0027, help\u003d_(\u0027Default VIM for launching VNFs\u0027))"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027nfvo\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5aef4532_d0500061","line":31,"range":{"start_line":31,"start_character":31,"end_line":31,"end_character":38},"updated":"2016-03-09 02:49:41.000000000","message":"how about this: not explicit default vim. the default VIM is implicitly the local openstack on which the tacker API is installed.\n\nThis solved:\n1. the explicit default name problem, where we need a unique vim name, and need admin to create this name according to tacker.conf\n2. in only one openstack deployment, I mean non-multi-site vim deployment, the tacker nfvo just works after it is installed on enviroment \u0027keystone, nova, glance, neutorn, tacker, heat\u0027.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"OPTS \u003d ["},{"line_number":30,"context_line":"    cfg.StrOpt("},{"line_number":31,"context_line":"        \u0027default_vim\u0027, help\u003d_(\u0027Default VIM for launching VNFs\u0027))"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027nfvo\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_7b8462d3","line":31,"range":{"start_line":31,"start_character":31,"end_line":31,"end_character":38},"in_reply_to":"3afc51ec_aa217ab6","updated":"2016-03-15 03:16:04.000000000","message":"1. right now the vnf create call fails if more than one VIM exists with same default VIM name\n2. yes","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"e4313d22ec1200f961cb74e9f83e0c54576d8642","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"OPTS \u003d ["},{"line_number":30,"context_line":"    cfg.StrOpt("},{"line_number":31,"context_line":"        \u0027default_vim\u0027, help\u003d_(\u0027Default VIM for launching VNFs\u0027))"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027nfvo\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_aa217ab6","line":31,"range":{"start_line":31,"start_character":31,"end_line":31,"end_character":38},"in_reply_to":"5aef4532_d0500061","updated":"2016-03-15 01:36:43.000000000","message":"I guess that is the idea with \u0027default_vim\u0027, that it will point to the local openstack in a non-multisite deployment. \n\nFew questions:\n\n1) Can the default_vim be either a name or vim uuid? If yes, we just need to either make vim-name unique in the db or fail the call if there are multiple vim entries for the same name. I would same it is simpler to just make vim name unique.\n\n2) This patchset is missing tacker/devstack changes to automatically set \u0027default_vim\u0027 in tacker.conf. This also explains the dsvm functional gate failing [1]. Are you planning to add it soon? \n\n[1] http://logs.openstack.org/96/285096/5/check/gate-tacker-dsvm-functional/46c9cc8/console.html.gz","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"7ccdce1419fb3b1d51bc8faf164f15051586c617","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"OPTS \u003d ["},{"line_number":30,"context_line":"    cfg.StrOpt("},{"line_number":31,"context_line":"        \u0027default_vim\u0027, help\u003d_(\u0027Default VIM for launching VNFs\u0027))"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":"cfg.CONF.register_opts(OPTS, \u0027nfvo\u0027)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_1b08be90","line":31,"range":{"start_line":31,"start_character":31,"end_line":31,"end_character":38},"in_reply_to":"5aef4532_d0500061","updated":"2016-03-15 03:16:04.000000000","message":"agree with your suggestion. however, even with local openstack, we want to treat it as a VIM which user explicitly registers with the desired tenant, username and password. that way tacker service is not bound to local openstack and can simply run as a controller service on a separate node.\nReg. point 1, already explained in 11702d4ad638_multisite_vim.py. please refer to the response.","commit_id":"2a2e4f876e91f3fc64d6479435973cb6c4bdd8fb"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"782b1b5dbe6fb7428b639013fa1d9e240872391b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fa0719c6_da48858a","updated":"2016-03-20 02:55:28.000000000","message":"nit: \"vim_con\" stands for vim connection? It would make sense to name this file \"vim_client.py\" :)","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"144fc2913ce04cde761f44f93d6552c4bb77c136","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fa0719c6_1d3e77b8","in_reply_to":"fa0719c6_da48858a","updated":"2016-03-20 03:48:24.000000000","message":"Done","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"782b1b5dbe6fb7428b639013fa1d9e240872391b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            vim_name \u003d cfg.CONF.nfvo_vim.default_vim"},{"line_number":50,"context_line":"            if not vim_name:"},{"line_number":51,"context_line":"                raise nfvo.VimDefaultIdException("},{"line_number":52,"context_line":"                    message\u003d\u0027Default VIM ID is not set\u0027)"},{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                vim_info \u003d nfvo_plugin.get_vim_by_name(context, vim_name)"},{"line_number":55,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_fa6c690a","line":52,"range":{"start_line":52,"start_character":29,"end_line":52,"end_character":54},"updated":"2016-03-20 02:55:28.000000000","message":"For the folks who are using Tacker this might trip them when they try Mitaka version as this sort of became a mandatory setting. To reduce some heartburn lets make this error message a bit more self-explanatory, something like,\n\n\"Default VIM is not specified. Either specify a valid VIM in the VNF create or set default VIM in tacker.conf\"\n\nAny variation of this would work.","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"144fc2913ce04cde761f44f93d6552c4bb77c136","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            vim_name \u003d cfg.CONF.nfvo_vim.default_vim"},{"line_number":50,"context_line":"            if not vim_name:"},{"line_number":51,"context_line":"                raise nfvo.VimDefaultIdException("},{"line_number":52,"context_line":"                    message\u003d\u0027Default VIM ID is not set\u0027)"},{"line_number":53,"context_line":"            try:"},{"line_number":54,"context_line":"                vim_info \u003d nfvo_plugin.get_vim_by_name(context, vim_name)"},{"line_number":55,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_fd562305","line":52,"range":{"start_line":52,"start_character":29,"end_line":52,"end_character":54},"in_reply_to":"fa0719c6_fa6c690a","updated":"2016-03-20 03:48:24.000000000","message":"Done","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"782b1b5dbe6fb7428b639013fa1d9e240872391b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                vim_info \u003d nfvo_plugin.get_vim_by_name(context, vim_name)"},{"line_number":55,"context_line":"            except Exception:"},{"line_number":56,"context_line":"                    raise nfvo.VimDefaultIdException("},{"line_number":57,"context_line":"                        message\u003d\u0027Default VIM not found.Unknown VIM id\u0027)"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            try:"},{"line_number":60,"context_line":"                vim_info \u003d nfvo_plugin.get_vim(context, vim_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_3a7701d6","line":57,"range":{"start_line":57,"start_character":33,"end_line":57,"end_character":69},"updated":"2016-03-20 02:55:28.000000000","message":"Is it possible to show the actual vim_name in this exception so that it can get displayed in the front-end? Something like this...\n\n(\"Default VIM name %s is invalid. Please specify a valid default VIM in tacker.conf\", vim_name)","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"144fc2913ce04cde761f44f93d6552c4bb77c136","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                vim_info \u003d nfvo_plugin.get_vim_by_name(context, vim_name)"},{"line_number":55,"context_line":"            except Exception:"},{"line_number":56,"context_line":"                    raise nfvo.VimDefaultIdException("},{"line_number":57,"context_line":"                        message\u003d\u0027Default VIM not found.Unknown VIM id\u0027)"},{"line_number":58,"context_line":"        else:"},{"line_number":59,"context_line":"            try:"},{"line_number":60,"context_line":"                vim_info \u003d nfvo_plugin.get_vim(context, vim_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_dd5b5f2d","line":57,"range":{"start_line":57,"start_character":33,"end_line":57,"end_character":69},"in_reply_to":"fa0719c6_3a7701d6","updated":"2016-03-20 03:48:24.000000000","message":"Done","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"},{"author":{"_account_id":13380,"name":"Sridhar Ramaswamy","email":"srics.r@gmail.com","username":"srics-r"},"change_message_id":"782b1b5dbe6fb7428b639013fa1d9e240872391b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                vim_info \u003d nfvo_plugin.get_vim(context, vim_id)"},{"line_number":61,"context_line":"            except Exception:"},{"line_number":62,"context_line":"                raise nfvo.VimNotFoundException("},{"line_number":63,"context_line":"                    message\u003d\u0027Unable to find VIM id\u0027)"},{"line_number":64,"context_line":"        LOG.debug(_(\u0027VIM info found for vim id %s\u0027), vim_id)"},{"line_number":65,"context_line":"        if region_name and not self.region_valid(vim_info[\u0027placement_attr\u0027]"},{"line_number":66,"context_line":"                                                 [\u0027regions\u0027], region_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_9a4e0d95","line":63,"range":{"start_line":63,"start_character":29,"end_line":63,"end_character":50},"updated":"2016-03-20 02:55:28.000000000","message":"I\u0027d suggest something like this,\n\n(\"Specified VIM id %s is invalid. Please verify and pass a valid VIM id\", vim_id)","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"},{"author":{"_account_id":13485,"name":"Sripriya Seetharam","email":"sseetha@brocade.com","username":"Sripriya"},"change_message_id":"144fc2913ce04cde761f44f93d6552c4bb77c136","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                vim_info \u003d nfvo_plugin.get_vim(context, vim_id)"},{"line_number":61,"context_line":"            except Exception:"},{"line_number":62,"context_line":"                raise nfvo.VimNotFoundException("},{"line_number":63,"context_line":"                    message\u003d\u0027Unable to find VIM id\u0027)"},{"line_number":64,"context_line":"        LOG.debug(_(\u0027VIM info found for vim id %s\u0027), vim_id)"},{"line_number":65,"context_line":"        if region_name and not self.region_valid(vim_info[\u0027placement_attr\u0027]"},{"line_number":66,"context_line":"                                                 [\u0027regions\u0027], region_name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa0719c6_3d41bb3a","line":63,"range":{"start_line":63,"start_character":29,"end_line":63,"end_character":50},"in_reply_to":"fa0719c6_9a4e0d95","updated":"2016-03-20 03:48:24.000000000","message":"Done","commit_id":"1c661f4105d173bc4f4671afb1acabbd65f0c535"}]}
