)]}'
{"octavia/api/drivers/amphora_driver/v1/driver.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c483008649ef20369f921d1946e0e5e246cb3be3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    # once octavia is transitioned to use octavia_lib"},{"line_number":84,"context_line":"    def loadbalancer_create(self, loadbalancer):"},{"line_number":85,"context_line":"        if loadbalancer.flavor \u003d\u003d driver_dm.Unset:"},{"line_number":86,"context_line":"            loadbalancer.flavor \u003d None"},{"line_number":87,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: loadbalancer.loadbalancer_id,"},{"line_number":88,"context_line":"                   consts.FLAVOR: loadbalancer.flavor,"},{"line_number":89,"context_line":"                   consts.AVAILABILITY_ZONE: loadbalancer.availability_zone}"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_23733250","line":86,"updated":"2019-11-22 06:38:29.000000000","message":"Do we need something like the above two lines for AZ as well? I might assume so?","commit_id":"520d5963f8f42cdd3e1fe4d344d22d38d66374c6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            loadbalancer.availability_zone \u003d None"},{"line_number":89,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: loadbalancer.loadbalancer_id,"},{"line_number":90,"context_line":"                   consts.FLAVOR: loadbalancer.flavor,"},{"line_number":91,"context_line":"                   consts.AVAILABILITY_ZONE: loadbalancer.availability_zone}"},{"line_number":92,"context_line":"        self.client.cast({}, \u0027create_load_balancer\u0027, **payload)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def loadbalancer_delete(self, loadbalancer, cascade\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_a3285b97","line":91,"updated":"2019-12-13 20:40:18.000000000","message":"Probably could have simplified this by adding the AZ to the flavor definition passed to the backend.\nWe want AZ in flavors anyway.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fcc4c5870ab148caf22e9a0e2ae4a6be511ef3ab","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            loadbalancer.availability_zone \u003d None"},{"line_number":89,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: loadbalancer.loadbalancer_id,"},{"line_number":90,"context_line":"                   consts.FLAVOR: loadbalancer.flavor,"},{"line_number":91,"context_line":"                   consts.AVAILABILITY_ZONE: loadbalancer.availability_zone}"},{"line_number":92,"context_line":"        self.client.cast({}, \u0027create_load_balancer\u0027, **payload)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def loadbalancer_delete(self, loadbalancer, cascade\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_285bbc22","line":91,"in_reply_to":"3fa7e38b_0799381d","updated":"2019-12-17 18:11:19.000000000","message":"Well, we should be able to apply these settings in the flavor as well, so I don\u0027t see it as distinct really.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            loadbalancer.availability_zone \u003d None"},{"line_number":89,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: loadbalancer.loadbalancer_id,"},{"line_number":90,"context_line":"                   consts.FLAVOR: loadbalancer.flavor,"},{"line_number":91,"context_line":"                   consts.AVAILABILITY_ZONE: loadbalancer.availability_zone}"},{"line_number":92,"context_line":"        self.client.cast({}, \u0027create_load_balancer\u0027, **payload)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def loadbalancer_delete(self, loadbalancer, cascade\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_0799381d","line":91,"in_reply_to":"3fa7e38b_a3285b97","updated":"2019-12-13 22:22:52.000000000","message":"Ehhh, but it *isn\u0027t* flavor though -- it\u0027s a totally distinct feature? :/\nIt\u0027s definitely similar, but it seems like it\u0027d be weird precedent to just shove something in an existing structure that\u0027s only tangentially related, just because it\u0027s \"simpler\".","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/api/drivers/amphora_driver/v2/driver.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            loadbalancer.availability_zone \u003d None"},{"line_number":91,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: loadbalancer.loadbalancer_id,"},{"line_number":92,"context_line":"                   consts.FLAVOR: loadbalancer.flavor,"},{"line_number":93,"context_line":"                   consts.AVAILABILITY_ZONE: loadbalancer.availability_zone}"},{"line_number":94,"context_line":"        self.client.cast({}, \u0027create_load_balancer\u0027, **payload)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def loadbalancer_delete(self, loadbalancer, cascade\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_c32317ba","line":93,"updated":"2019-12-13 20:40:18.000000000","message":"Probably could have simplified this by adding the AZ to the flavor definition passed to the backend.\nWe want AZ in flavors anyway.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            loadbalancer.availability_zone \u003d None"},{"line_number":91,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: loadbalancer.loadbalancer_id,"},{"line_number":92,"context_line":"                   consts.FLAVOR: loadbalancer.flavor,"},{"line_number":93,"context_line":"                   consts.AVAILABILITY_ZONE: loadbalancer.availability_zone}"},{"line_number":94,"context_line":"        self.client.cast({}, \u0027create_load_balancer\u0027, **payload)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def loadbalancer_delete(self, loadbalancer, cascade\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_279eb406","line":93,"in_reply_to":"3fa7e38b_c32317ba","updated":"2019-12-13 22:22:52.000000000","message":"See comments on v1 -- let\u0027s have the conversation in one place.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/api/v2/controllers/load_balancer.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d1c7c2f44dfe03a020ae0cff3c6a9fd53c128454","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                az \u003d self.repositories.availability_zone.get("},{"line_number":337,"context_line":"                    lock_session, name\u003dlb_dict[\u0027availability_zone\u0027])"},{"line_number":338,"context_line":"                az_repository \u003d self.repositories.availability_zone"},{"line_number":339,"context_line":"                az_dict \u003d ("},{"line_number":340,"context_line":"                    az_repository.get_availability_zone_metadata_dict("},{"line_number":341,"context_line":"                        lock_session, az.name))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_1d31b5ed","line":338,"updated":"2019-11-22 00:17:12.000000000","message":"nit: you could move this up and use the alias for both calls.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"3c181c3eed512b2aba7853e2c20a8af7f5278794","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                az \u003d self.repositories.availability_zone.get("},{"line_number":337,"context_line":"                    lock_session, name\u003dlb_dict[\u0027availability_zone\u0027])"},{"line_number":338,"context_line":"                az_repository \u003d self.repositories.availability_zone"},{"line_number":339,"context_line":"                az_dict \u003d ("},{"line_number":340,"context_line":"                    az_repository.get_availability_zone_metadata_dict("},{"line_number":341,"context_line":"                        lock_session, az.name))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_886ec593","line":338,"in_reply_to":"3fa7e38b_1d31b5ed","updated":"2019-12-05 05:57:20.000000000","message":"Done","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88712b2156d96f73493f8276e1de0ccb5ff6daad","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                az \u003d self.repositories.availability_zone.get("},{"line_number":337,"context_line":"                    lock_session, name\u003dlb_dict[\u0027availability_zone\u0027])"},{"line_number":338,"context_line":"                az_repository \u003d self.repositories.availability_zone"},{"line_number":339,"context_line":"                az_dict \u003d ("},{"line_number":340,"context_line":"                    az_repository.get_availability_zone_metadata_dict("},{"line_number":341,"context_line":"                        lock_session, az.name))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_033156a2","line":338,"in_reply_to":"3fa7e38b_1d31b5ed","updated":"2019-11-22 06:26:12.000000000","message":"personally I prefer less aliases in general :D\nremoved it and just fixed the resulting pep8 longness below","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                raise exceptions.DisabledOption(option\u003d\u0027flavor\u0027,"},{"line_number":329,"context_line":"                                                value\u003dload_balancer.flavor_id)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _apply_az_to_lb_dict(self, lock_session, driver, lb_dict):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        az_dict \u003d {}"},{"line_number":334,"context_line":"        if \u0027availability_zone\u0027 in lb_dict:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_047e161b","line":331,"updated":"2019-12-13 20:40:18.000000000","message":"This name doesn\u0027t make sense, you aren\u0027t applying the AZ to the LB dict here.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                raise exceptions.DisabledOption(option\u003d\u0027flavor\u0027,"},{"line_number":329,"context_line":"                                                value\u003dload_balancer.flavor_id)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _apply_az_to_lb_dict(self, lock_session, driver, lb_dict):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        az_dict \u003d {}"},{"line_number":334,"context_line":"        if \u0027availability_zone\u0027 in lb_dict:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_47b89077","line":331,"in_reply_to":"3fa7e38b_047e161b","updated":"2019-12-13 22:22:52.000000000","message":"Yes, I noticed this previously and agree, except... It\u0027s a literal copy/paste from the flavor function of the same name, which ALSO doesn\u0027t really apply anything to the flavor dict... So I opted to let it stay as-is for consistency. Maybe we should just change both in this patch? I\u0027d often rather things be consistent even if it\u0027s kinda weird...","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"eac8392a7c47fbe1989c897670736688f493695b","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                raise exceptions.DisabledOption(option\u003d\u0027flavor\u0027,"},{"line_number":329,"context_line":"                                                value\u003dload_balancer.flavor_id)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _apply_az_to_lb_dict(self, lock_session, driver, lb_dict):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        az_dict \u003d {}"},{"line_number":334,"context_line":"        if \u0027availability_zone\u0027 in lb_dict:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_8a70cf0b","line":331,"in_reply_to":"3fa7e38b_2aff5b67","updated":"2019-12-13 23:48:58.000000000","message":"Done","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"20da998bc56bbe605f503fc2522deb6bcdd6210d","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                raise exceptions.DisabledOption(option\u003d\u0027flavor\u0027,"},{"line_number":329,"context_line":"                                                value\u003dload_balancer.flavor_id)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    def _apply_az_to_lb_dict(self, lock_session, driver, lb_dict):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        az_dict \u003d {}"},{"line_number":334,"context_line":"        if \u0027availability_zone\u0027 in lb_dict:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_2aff5b67","line":331,"in_reply_to":"3fa7e38b_47b89077","updated":"2019-12-13 22:42:31.000000000","message":"Ah, nevermind, I finally see where it was applying on the other one. I\u0027ll see about fixing this..","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":331,"context_line":"    def _apply_az_to_lb_dict(self, lock_session, driver, lb_dict):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        az_dict \u003d {}"},{"line_number":334,"context_line":"        if \u0027availability_zone\u0027 in lb_dict:"},{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                az \u003d self.repositories.availability_zone.get("},{"line_number":337,"context_line":"                    lock_session, name\u003dlb_dict[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_24831206","line":334,"updated":"2019-12-13 20:40:18.000000000","message":"What happens when the driver does not support AZ?\nFor flavors we do a validation step. If this was integrated with flavors it might be able to be combined into one validation.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":331,"context_line":"    def _apply_az_to_lb_dict(self, lock_session, driver, lb_dict):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        az_dict \u003d {}"},{"line_number":334,"context_line":"        if \u0027availability_zone\u0027 in lb_dict:"},{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                az \u003d self.repositories.availability_zone.get("},{"line_number":337,"context_line":"                    lock_session, name\u003dlb_dict[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_87a5284b","line":334,"in_reply_to":"3fa7e38b_24831206","updated":"2019-12-13 22:22:52.000000000","message":"Hmm yeah, I guess it would be better to do all AZ validation (including this and the validation of the AZ itself that\u0027s currently on line 383) AFTER we verify that the provider even supports this feature, because if it doesn\u0027t it needs to return a 400 anyway.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"eac8392a7c47fbe1989c897670736688f493695b","unresolved":false,"context_lines":[{"line_number":331,"context_line":"    def _apply_az_to_lb_dict(self, lock_session, driver, lb_dict):"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        az_dict \u003d {}"},{"line_number":334,"context_line":"        if \u0027availability_zone\u0027 in lb_dict:"},{"line_number":335,"context_line":"            try:"},{"line_number":336,"context_line":"                az \u003d self.repositories.availability_zone.get("},{"line_number":337,"context_line":"                    lock_session, name\u003dlb_dict[\u0027availability_zone\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_6a61d338","line":334,"in_reply_to":"3fa7e38b_87a5284b","updated":"2019-12-13 23:48:58.000000000","message":"Done -- added the validate step after the dict is retrieved (the way flavor does it).","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        return az_dict"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _validate_availability_zone(self, session, load_balancer):"},{"line_number":349,"context_line":"        if not isinstance(load_balancer.availability_zone, wtypes.UnsetType):"},{"line_number":350,"context_line":"            az \u003d self.repositories.availability_zone.get("},{"line_number":351,"context_line":"                session, name\u003dload_balancer.availability_zone)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_9e5d7417","line":348,"updated":"2019-12-13 20:40:18.000000000","message":"This should also make sure the AZ settings don\u0027t conflict with the AZ and boot network settings in the flavor definition.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        return az_dict"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _validate_availability_zone(self, session, load_balancer):"},{"line_number":349,"context_line":"        if not isinstance(load_balancer.availability_zone, wtypes.UnsetType):"},{"line_number":350,"context_line":"            az \u003d self.repositories.availability_zone.get("},{"line_number":351,"context_line":"                session, name\u003dload_balancer.availability_zone)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_475df052","line":348,"in_reply_to":"3fa7e38b_9e5d7417","updated":"2019-12-13 22:22:52.000000000","message":"How would they conflict? The settings in the AZ profile are just an overlay on the default settings -- there\u0027s no validation to be done with the combinations that I\u0027m aware of? Can you give me an example of the kind of thing you\u0027re thinking?","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        self._validate_flavor(context.session, load_balancer)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        self._validate_availability_zone(context.session, load_balancer)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        provider \u003d self._get_provider(context.session, load_balancer)"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_0767f826","line":383,"updated":"2019-12-13 22:22:52.000000000","message":"This should probably happen after we ensure the driver even supports AZs?","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"eac8392a7c47fbe1989c897670736688f493695b","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        self._validate_flavor(context.session, load_balancer)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        self._validate_availability_zone(context.session, load_balancer)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        provider \u003d self._get_provider(context.session, load_balancer)"},{"line_number":386,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_0a561f60","line":383,"in_reply_to":"3fa7e38b_0767f826","updated":"2019-12-13 23:48:58.000000000","message":"ah I see, needs to be two steps because it\u0027s technically validating different things, and this order is fine","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            # flavor dict instead of just the flavor_id we store in the DB."},{"line_number":426,"context_line":"            lb_dict[\u0027flavor\u0027] \u003d flavor_dict"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"            lb_dict[\u0027availability_zone\u0027] \u003d az_dict"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"            # See if the provider driver wants to create the VIP port"},{"line_number":431,"context_line":"            octavia_owned \u003d False"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_1ec6649d","line":428,"updated":"2019-12-13 20:40:18.000000000","message":"You need to update the driver development guide.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"eac8392a7c47fbe1989c897670736688f493695b","unresolved":false,"context_lines":[{"line_number":425,"context_line":"            # flavor dict instead of just the flavor_id we store in the DB."},{"line_number":426,"context_line":"            lb_dict[\u0027flavor\u0027] \u003d flavor_dict"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"            lb_dict[\u0027availability_zone\u0027] \u003d az_dict"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"            # See if the provider driver wants to create the VIP port"},{"line_number":431,"context_line":"            octavia_owned \u003d False"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_ea4ce3ca","line":428,"in_reply_to":"3fa7e38b_1ec6649d","updated":"2019-12-13 23:48:58.000000000","message":"Done","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/api/v2/types/load_balancer.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d1c7c2f44dfe03a020ae0cff3c6a9fd53c128454","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    provider \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d64))"},{"line_number":124,"context_line":"    tags \u003d wtypes.wsattr(wtypes.ArrayType(wtypes.StringType(max_length\u003d255)))"},{"line_number":125,"context_line":"    flavor_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":126,"context_line":"    availability_zone \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class LoadBalancerRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_9d528511","line":126,"range":{"start_line":126,"start_character":38,"end_line":126,"end_character":57},"updated":"2019-11-22 00:17:12.000000000","message":"This must have a max_length parameter.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"3c181c3eed512b2aba7853e2c20a8af7f5278794","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    provider \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d64))"},{"line_number":124,"context_line":"    tags \u003d wtypes.wsattr(wtypes.ArrayType(wtypes.StringType(max_length\u003d255)))"},{"line_number":125,"context_line":"    flavor_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":126,"context_line":"    availability_zone \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class LoadBalancerRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_2869d18a","line":126,"range":{"start_line":126,"start_character":38,"end_line":126,"end_character":57},"in_reply_to":"3fa7e38b_9d528511","updated":"2019-12-05 05:57:20.000000000","message":"Done","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88712b2156d96f73493f8276e1de0ccb5ff6daad","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    provider \u003d wtypes.wsattr(wtypes.StringType(max_length\u003d64))"},{"line_number":124,"context_line":"    tags \u003d wtypes.wsattr(wtypes.ArrayType(wtypes.StringType(max_length\u003d255)))"},{"line_number":125,"context_line":"    flavor_id \u003d wtypes.wsattr(wtypes.UuidType())"},{"line_number":126,"context_line":"    availability_zone \u003d wtypes.wsattr(wtypes.StringType())"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class LoadBalancerRootPOST(types.BaseType):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a323a257","line":126,"range":{"start_line":126,"start_character":38,"end_line":126,"end_character":57},"in_reply_to":"3fa7e38b_9d528511","updated":"2019-11-22 06:26:12.000000000","message":"Done. Updated to 255 per the db migration.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"}],"octavia/compute/drivers/nova_driver.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":100,"context_line":"              image_id\u003dNone, image_tag\u003dNone, image_owner\u003dNone,"},{"line_number":101,"context_line":"              key_name\u003dNone, sec_groups\u003dNone, network_ids\u003dNone,"},{"line_number":102,"context_line":"              port_ids\u003dNone, config_drive_files\u003dNone, user_data\u003dNone,"},{"line_number":103,"context_line":"              server_group_id\u003dNone, availability_zone\u003dNone):"},{"line_number":104,"context_line":"        \u0027\u0027\u0027Create a new virtual machine."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param name: optional name for amphora"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_84b2064a","line":103,"updated":"2019-12-13 20:40:18.000000000","message":"This is going to be annoying because nova slams in some default AZ. So we are tracking it as None/Null here, but magically nova will put in \"nova\".\n| OS-EXT-AZ:availability_zone         | nova\nAt a minimum I think we need to call this out in the release notes. We are going to get support questions of why the Octavia API says one thing and nova another.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":100,"context_line":"              image_id\u003dNone, image_tag\u003dNone, image_owner\u003dNone,"},{"line_number":101,"context_line":"              key_name\u003dNone, sec_groups\u003dNone, network_ids\u003dNone,"},{"line_number":102,"context_line":"              port_ids\u003dNone, config_drive_files\u003dNone, user_data\u003dNone,"},{"line_number":103,"context_line":"              server_group_id\u003dNone, availability_zone\u003dNone):"},{"line_number":104,"context_line":"        \u0027\u0027\u0027Create a new virtual machine."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param name: optional name for amphora"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_877a08b9","line":103,"in_reply_to":"3fa7e38b_84b2064a","updated":"2019-12-13 22:22:52.000000000","message":"Well, if the field was actually for the name of the nova AZ, then we could simply update it after boot. However, it\u0027s not directly related to the nova AZ -- the field we expose to the user is a LB AZ. It\u0027s a different thing. I am not super concerned about this. We can still make a note explicitly mentioning that there\u0027s no guaranteed correlation between LB AZ and Nova AZ, only possibly coincidentally depending on deployments...","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/controller/housekeeping/house_keeping.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"ee2ecf98f8f89a39e3afcbd33385191944175a2d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            conf_spare_cnt \u003d CONF.house_keeping.spare_amphora_pool_size"},{"line_number":50,"context_line":"            LOG.debug(\"Required Spare Amphora count : %d\", conf_spare_cnt)"},{"line_number":51,"context_line":"            availability_zones, links \u003d self.az_repo.get_all(session)"},{"line_number":52,"context_line":"            availability_zones \u003d [az.name for az in availability_zones]"},{"line_number":53,"context_line":"            if not availability_zones:"},{"line_number":54,"context_line":"                availability_zones \u003d [CONF.nova.availability_zone]"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_40d46bea","line":52,"updated":"2019-12-06 02:26:57.000000000","message":"This should be a set, not a list.","commit_id":"c39a1016b41a9ebef5534988e2dad3df6299b3e1"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"ee2ecf98f8f89a39e3afcbd33385191944175a2d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            availability_zones, links \u003d self.az_repo.get_all(session)"},{"line_number":52,"context_line":"            availability_zones \u003d [az.name for az in availability_zones]"},{"line_number":53,"context_line":"            if not availability_zones:"},{"line_number":54,"context_line":"                availability_zones \u003d [CONF.nova.availability_zone]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"            for az_name in availability_zones:"},{"line_number":57,"context_line":"                curr_spare_cnt \u003d self.amp_repo.get_spare_amphora_count("}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_c007fb6f","line":54,"updated":"2019-12-06 02:26:57.000000000","message":"Actually, I think we want to add this to the set (see above comment) even if there are AZs defined, as this would be the default one if the user doesn\u0027t specify, and may be different.","commit_id":"c39a1016b41a9ebef5534988e2dad3df6299b3e1"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"ee2ecf98f8f89a39e3afcbd33385191944175a2d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            if not availability_zones:"},{"line_number":54,"context_line":"                availability_zones \u003d [CONF.nova.availability_zone]"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"            for az_name in availability_zones:"},{"line_number":57,"context_line":"                curr_spare_cnt \u003d self.amp_repo.get_spare_amphora_count("},{"line_number":58,"context_line":"                    session, availability_zone\u003daz_name)"},{"line_number":59,"context_line":"                LOG.debug(\"Current Spare Amphora count for AZ %s: %d\","}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_603f2722","line":56,"updated":"2019-12-06 02:26:57.000000000","message":"Somehow I didn\u0027t need to change the logic here before when I did this... I need to figure out why, and how this works in my other patch. I\u0027m not actually sure this is *wrong*, I just need to understand the difference. It\u0027s possibly my approach was incorrect, as this seems sane to me.","commit_id":"c39a1016b41a9ebef5534988e2dad3df6299b3e1"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"9768448de4fc75dc3c1636d73038ca51dc176454","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            availability_zones, links \u003d self.az_repo.get_all(session)"},{"line_number":52,"context_line":"            availability_zones \u003d [az.name for az in availability_zones]"},{"line_number":53,"context_line":"            # If no AZs objects then build in the configured AZ (even if None)"},{"line_number":54,"context_line":"            # Also if configured AZ is not None then also build in there"},{"line_number":55,"context_line":"            # as could be different to the current AZs objects."},{"line_number":56,"context_line":"            if CONF.nova.availability_zone or not availability_zones:"},{"line_number":57,"context_line":"                availability_zones.append(CONF.nova.availability_zone)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_d5c57491","line":54,"updated":"2019-12-06 12:11:33.000000000","message":"I don\u0027t know that it\u0027s a valid configuration to not have a default AZ? But ... maybe? I guess we can code for that. I don\u0027t know what passing an explicit None to nova will do though. :/","commit_id":"5bacc06bbb2351caee55c109eeb6e850a680114b"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"f4867a4153e42d034d816880be4f55c69c5fee28","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            availability_zones, links \u003d self.az_repo.get_all(session)"},{"line_number":52,"context_line":"            availability_zones \u003d [az.name for az in availability_zones]"},{"line_number":53,"context_line":"            # If no AZs objects then build in the configured AZ (even if None)"},{"line_number":54,"context_line":"            # Also if configured AZ is not None then also build in there"},{"line_number":55,"context_line":"            # as could be different to the current AZs objects."},{"line_number":56,"context_line":"            if CONF.nova.availability_zone or not availability_zones:"},{"line_number":57,"context_line":"                availability_zones.append(CONF.nova.availability_zone)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_6d7ce970","line":54,"in_reply_to":"3fa7e38b_d5c57491","updated":"2019-12-08 23:55:57.000000000","message":"Yeah it is valid (and the default) no AZ just means let the nova scheduler decide","commit_id":"5bacc06bbb2351caee55c109eeb6e850a680114b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"9768448de4fc75dc3c1636d73038ca51dc176454","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            if CONF.nova.availability_zone or not availability_zones:"},{"line_number":57,"context_line":"                availability_zones.append(CONF.nova.availability_zone)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"            for az_name in set(availability_zones):"},{"line_number":60,"context_line":"                curr_spare_cnt \u003d self.amp_repo.get_spare_amphora_count("},{"line_number":61,"context_line":"                    session, availability_zone\u003daz_name)"},{"line_number":62,"context_line":"                LOG.debug(\"Current Spare Amphora count for AZ %s: %d\","}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_75b60028","line":59,"updated":"2019-12-06 12:11:33.000000000","message":"Ok, I mean, you could have just made it a set to begin with, and .add() the one on 57 :D","commit_id":"5bacc06bbb2351caee55c109eeb6e850a680114b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"            conf_spare_cnt \u003d CONF.house_keeping.spare_amphora_pool_size"},{"line_number":50,"context_line":"            LOG.debug(\"Required Spare Amphora count : %d\", conf_spare_cnt)"},{"line_number":51,"context_line":"            availability_zones, links \u003d self.az_repo.get_all(session)"},{"line_number":52,"context_line":"            availability_zones \u003d [az.name for az in availability_zones]"},{"line_number":53,"context_line":"            # If no AZs objects then build in the configured AZ (even if None)"},{"line_number":54,"context_line":"            # Also if configured AZ is not None then also build in there"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_4425ee15","line":51,"updated":"2019-12-13 20:40:18.000000000","message":"What if they are not enabled?","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"            conf_spare_cnt \u003d CONF.house_keeping.spare_amphora_pool_size"},{"line_number":50,"context_line":"            LOG.debug(\"Required Spare Amphora count : %d\", conf_spare_cnt)"},{"line_number":51,"context_line":"            availability_zones, links \u003d self.az_repo.get_all(session)"},{"line_number":52,"context_line":"            availability_zones \u003d [az.name for az in availability_zones]"},{"line_number":53,"context_line":"            # If no AZs objects then build in the configured AZ (even if None)"},{"line_number":54,"context_line":"            # Also if configured AZ is not None then also build in there"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_6a2793b7","line":51,"in_reply_to":"3fa7e38b_4425ee15","updated":"2019-12-13 22:22:52.000000000","message":"Ah, I forgot AZs were a thing that could be enabled/disabled.\nSo, we need to account for that.\nAlso ... I\u0027m pretty sure this is entirely wrong. This is the name of the \"availability_zone\" -- we have to pull the profile for the AZ, and get the name of the nova AZ from *that*. This is probably only working because I am guessing in testing we\u0027re naming the AZ the same in Octavia as the name of the AZ in Nova. T_T\nAssuming we\u0027re properly backreffing it on the model, we can just do \"az.availability_zone_profile.availability_zone_data.get(constants.COMPUTE_ZONE)\" below? Keeping in mind that \"housekeeping\" is explicitly assumed to be part of the \"amphora\" driver only, so we can assume its AZ schema.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"eac8392a7c47fbe1989c897670736688f493695b","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"            conf_spare_cnt \u003d CONF.house_keeping.spare_amphora_pool_size"},{"line_number":50,"context_line":"            LOG.debug(\"Required Spare Amphora count : %d\", conf_spare_cnt)"},{"line_number":51,"context_line":"            availability_zones, links \u003d self.az_repo.get_all(session)"},{"line_number":52,"context_line":"            availability_zones \u003d [az.name for az in availability_zones]"},{"line_number":53,"context_line":"            # If no AZs objects then build in the configured AZ (even if None)"},{"line_number":54,"context_line":"            # Also if configured AZ is not None then also build in there"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_cdbfc1fb","line":51,"in_reply_to":"3fa7e38b_6a2793b7","updated":"2019-12-13 23:48:58.000000000","message":"Done","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"209289b937220e5cb822af76d4ef88bcad4c5b38","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                                                             enabled\u003dTrue)"},{"line_number":54,"context_line":"            compute_zones \u003d set()"},{"line_number":55,"context_line":"            for az in availability_zones:"},{"line_number":56,"context_line":"                az_meta \u003d self.az_repo.get_availability_zone_metadata_dict("},{"line_number":57,"context_line":"                    session, az.name)"},{"line_number":58,"context_line":"                compute_zones.add(az_meta.get(constants.COMPUTE_ZONE))"},{"line_number":59,"context_line":"            # If no AZs objects then build in the configured AZ (even if None)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa7e38b_02cee28e","line":56,"updated":"2019-12-17 14:08:40.000000000","message":"So the thing that concerns me about doing it this way is that this method does a whole new DB call, whereas if we were able to get it from the AZ object ref, it might already be filled (assuming we did a * join). The housekeeping process isn\u0027t exactly *heavyweight* though, and this runs max once every few seconds (default is like 30? lol) so maybe it\u0027s fine...","commit_id":"3cce347129fe51c219d9630a96b568633eef0098"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fcc4c5870ab148caf22e9a0e2ae4a6be511ef3ab","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                                                             enabled\u003dTrue)"},{"line_number":54,"context_line":"            compute_zones \u003d set()"},{"line_number":55,"context_line":"            for az in availability_zones:"},{"line_number":56,"context_line":"                az_meta \u003d self.az_repo.get_availability_zone_metadata_dict("},{"line_number":57,"context_line":"                    session, az.name)"},{"line_number":58,"context_line":"                compute_zones.add(az_meta.get(constants.COMPUTE_ZONE))"},{"line_number":59,"context_line":"            # If no AZs objects then build in the configured AZ (even if None)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa7e38b_e82da445","line":56,"in_reply_to":"3fa7e38b_02cee28e","updated":"2019-12-17 18:11:19.000000000","message":"Yeah, this is a periodic job async to anything time sensitive, so I don\u0027t think it matters much, but could be optimized in the future.","commit_id":"3cce347129fe51c219d9630a96b568633eef0098"}],"octavia/controller/worker/v1/controller_worker.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d1c7c2f44dfe03a020ae0cff3c6a9fd53c128454","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                 constants.BUILD_TYPE_PRIORITY:"},{"line_number":331,"context_line":"                 constants.LB_CREATE_NORMAL_PRIORITY,"},{"line_number":332,"context_line":"                 constants.FLAVOR: flavor,"},{"line_number":333,"context_line":"                 constants.AVAILABILITY_ZONE: availability_zone}"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        topology \u003d lb.topology"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_dd9a3dc3","line":333,"updated":"2019-11-22 00:17:12.000000000","message":"nit: You might consider renaming this to be AVAILABILITY_ZONE_DATA so it\u0027s less confusing that this isn\u0027t just a name.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88712b2156d96f73493f8276e1de0ccb5ff6daad","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                 constants.BUILD_TYPE_PRIORITY:"},{"line_number":331,"context_line":"                 constants.LB_CREATE_NORMAL_PRIORITY,"},{"line_number":332,"context_line":"                 constants.FLAVOR: flavor,"},{"line_number":333,"context_line":"                 constants.AVAILABILITY_ZONE: availability_zone}"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        topology \u003d lb.topology"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c326de67","line":333,"in_reply_to":"3fa7e38b_dd9a3dc3","updated":"2019-11-22 06:26:12.000000000","message":"AVAILABILITY_ZONE_DATA is already a keyword used elsewhere -- or do you mean actually change the stored keyword here? Maybe a new one \"AVAILABILITY_ZONE_NAME\" would be good, but we\u0027d have to update the signatures of all the flow/task stuff to use `availability_zone_name` instead of `availability_zone`.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":859,"context_line":"                self._az_repo.get_availability_zone_metadata_dict("},{"line_number":860,"context_line":"                    db_apis.get_session(), lb.availability_zone))"},{"line_number":861,"context_line":"        else:"},{"line_number":862,"context_line":"            stored_params[constants.AVAILABILITY_ZONE] \u003d {}"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"        failover_amphora_tf \u003d self._taskflow_load("},{"line_number":865,"context_line":"            self._amphora_flows.get_failover_flow("}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_fe9b4860","line":862,"range":{"start_line":862,"start_character":57,"end_line":862,"end_character":59},"updated":"2019-12-13 20:40:18.000000000","message":"You are storing None above on create_load_balancer, we should be consistent.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"eac8392a7c47fbe1989c897670736688f493695b","unresolved":false,"context_lines":[{"line_number":859,"context_line":"                self._az_repo.get_availability_zone_metadata_dict("},{"line_number":860,"context_line":"                    db_apis.get_session(), lb.availability_zone))"},{"line_number":861,"context_line":"        else:"},{"line_number":862,"context_line":"            stored_params[constants.AVAILABILITY_ZONE] \u003d {}"},{"line_number":863,"context_line":""},{"line_number":864,"context_line":"        failover_amphora_tf \u003d self._taskflow_load("},{"line_number":865,"context_line":"            self._amphora_flows.get_failover_flow("}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_4d3191bb","line":862,"range":{"start_line":862,"start_character":57,"end_line":862,"end_character":59},"in_reply_to":"3fa7e38b_fe9b4860","updated":"2019-12-13 23:48:58.000000000","message":"This is literally copy/pasted from flavors -- does the same apply there? Should we fix both now?","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/controller/worker/v1/flows/amphora_flows.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d1c7c2f44dfe03a020ae0cff3c6a9fd53c128454","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                        constants.AVAILABILITY_ZONE,"},{"line_number":162,"context_line":"                    ),"},{"line_number":163,"context_line":"                    provides\u003dconstants.COMPUTE_ID))"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            if require_server_group_id_condition:"},{"line_number":166,"context_line":"                create_amp_for_lb_subflow.add(compute_tasks.ComputeCreate("},{"line_number":167,"context_line":"                    name\u003dsf_name + \u0027-\u0027 + constants.COMPUTE_CREATE,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_1d8d357b","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":13},"updated":"2019-11-22 00:17:12.000000000","message":"nit: the SSH driver never seems to die....","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88712b2156d96f73493f8276e1de0ccb5ff6daad","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                        constants.AVAILABILITY_ZONE,"},{"line_number":162,"context_line":"                    ),"},{"line_number":163,"context_line":"                    provides\u003dconstants.COMPUTE_ID))"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            if require_server_group_id_condition:"},{"line_number":166,"context_line":"                create_amp_for_lb_subflow.add(compute_tasks.ComputeCreate("},{"line_number":167,"context_line":"                    name\u003dsf_name + \u0027-\u0027 + constants.COMPUTE_CREATE,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_831c6613","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":13},"in_reply_to":"3fa7e38b_1d8d357b","updated":"2019-11-22 06:26:12.000000000","message":"Was this whole section only for the SSH driver? lol","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                          constants.BUILD_TYPE_PRIORITY, constants.FLAVOR,"},{"line_number":59,"context_line":"                          constants.AVAILABILITY_ZONE),"},{"line_number":60,"context_line":"                provides\u003dconstants.COMPUTE_ID))"},{"line_number":61,"context_line":"        else:"},{"line_number":62,"context_line":"            create_amphora_flow.add(compute_tasks.ComputeCreate("},{"line_number":63,"context_line":"                requires\u003d(constants.AMPHORA_ID, constants.BUILD_TYPE_PRIORITY,"},{"line_number":64,"context_line":"                          constants.FLAVOR, constants.AVAILABILITY_ZONE),"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_64e82a15","line":61,"updated":"2019-12-13 20:40:18.000000000","message":"Long live SSH driver cruft!","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/controller/worker/v1/tasks/compute_tasks.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88712b2156d96f73493f8276e1de0ccb5ff6daad","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        key_name \u003d CONF.controller_worker.amp_ssh_key_name"},{"line_number":69,"context_line":"        # TODO(rm_work): amp_ssh_access_allowed is deprecated in Pike."},{"line_number":70,"context_line":"        # Remove the following two lines in the S release."},{"line_number":71,"context_line":"        ssh_access \u003d CONF.controller_worker.amp_ssh_access_allowed"},{"line_number":72,"context_line":"        key_name \u003d None if not ssh_access else key_name"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Apply an Octavia flavor customizations"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_c3db3e4b","line":71,"updated":"2019-11-22 06:26:12.000000000","message":"Also finally removing these lines as we\u0027re in the file anyway and it keeps not being done, lol","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d1c7c2f44dfe03a020ae0cff3c6a9fd53c128454","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                constants.COMPUTE_ZONE)"},{"line_number":87,"context_line":"            # TODO(sorrison) network ID based on AZ"},{"line_number":88,"context_line":"            # network_ids \u003d availability_zone.get()"},{"line_number":89,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            amp_availability_zone \u003d None"},{"line_number":92,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_bd6e61c5","line":89,"updated":"2019-11-22 00:17:12.000000000","message":"This should be\nIF AZ.MANAGEMENT_NETWORK network_ids\u003dAZ.MANAGEMENT_NETWORK\nELSE CONF.controller_worker.amp_boot_network_list[:]\nSo I would just move network_ids above the else and override if the AZ has one.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88712b2156d96f73493f8276e1de0ccb5ff6daad","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                constants.COMPUTE_ZONE)"},{"line_number":87,"context_line":"            # TODO(sorrison) network ID based on AZ"},{"line_number":88,"context_line":"            # network_ids \u003d availability_zone.get()"},{"line_number":89,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            amp_availability_zone \u003d None"},{"line_number":92,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a3d88251","line":89,"in_reply_to":"3fa7e38b_bd6e61c5","updated":"2019-11-22 06:26:12.000000000","message":"Yeah, cleaned this up a bit and made it actually do the thing.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"}],"octavia/controller/worker/v2/tasks/compute_tasks.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d1c7c2f44dfe03a020ae0cff3c6a9fd53c128454","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                constants.COMPUTE_ZONE)"},{"line_number":87,"context_line":"            # TODO(sorrison) network ID based on AZ"},{"line_number":88,"context_line":"            # network_ids \u003d availability_zone.get()"},{"line_number":89,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            amp_availability_zone \u003d None"},{"line_number":92,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_5ddc0d73","line":89,"updated":"2019-11-22 00:17:12.000000000","message":"This should be\nIF AZ.MANAGEMENT_NETWORK network_ids\u003dAZ.MANAGEMENT_NETWORK\nELSE CONF.controller_worker.amp_boot_network_list[:]\nSo I would just move network_ids above the else and override if the AZ has one.","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"88712b2156d96f73493f8276e1de0ccb5ff6daad","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                constants.COMPUTE_ZONE)"},{"line_number":87,"context_line":"            # TODO(sorrison) network ID based on AZ"},{"line_number":88,"context_line":"            # network_ids \u003d availability_zone.get()"},{"line_number":89,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"},{"line_number":90,"context_line":"        else:"},{"line_number":91,"context_line":"            amp_availability_zone \u003d None"},{"line_number":92,"context_line":"            network_ids \u003d CONF.controller_worker.amp_boot_network_list[:]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_63e60a19","line":89,"in_reply_to":"3fa7e38b_5ddc0d73","updated":"2019-11-22 06:26:12.000000000","message":"same as other file, yep","commit_id":"cf67143c24c6e32e4b11fd36a18a0bc5dae22827"}],"octavia/db/repositories.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"808a5fcec556d1e51e58eda462ffd5a712de2758","unresolved":false,"context_lines":[{"line_number":1956,"context_line":"        :raises: sqlalchemy.orm.exc.NoResultFound"},{"line_number":1957,"context_line":"        \"\"\""},{"line_number":1958,"context_line":"        (serial_session.query(models.LoadBalancer)."},{"line_number":1959,"context_line":"         filter(models.LoadBalancer.availability_zone_name \u003d\u003d filters[\u0027name\u0027])."},{"line_number":1960,"context_line":"         filter(models.LoadBalancer.provisioning_status \u003d\u003d consts.DELETED)."},{"line_number":1961,"context_line":"         update({models.LoadBalancer.availability_zone_name: consts.NIL_UUID},"},{"line_number":1962,"context_line":"                synchronize_session\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_50d2ef35","line":1959,"updated":"2019-11-18 20:17:02.000000000","message":"Ah, this just needs to be models.LoadBalancer.availability_zone","commit_id":"e5c55a54d56171926784ebef27203e064320764c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"808a5fcec556d1e51e58eda462ffd5a712de2758","unresolved":false,"context_lines":[{"line_number":1958,"context_line":"        (serial_session.query(models.LoadBalancer)."},{"line_number":1959,"context_line":"         filter(models.LoadBalancer.availability_zone_name \u003d\u003d filters[\u0027name\u0027])."},{"line_number":1960,"context_line":"         filter(models.LoadBalancer.provisioning_status \u003d\u003d consts.DELETED)."},{"line_number":1961,"context_line":"         update({models.LoadBalancer.availability_zone_name: consts.NIL_UUID},"},{"line_number":1962,"context_line":"                synchronize_session\u003dFalse))"},{"line_number":1963,"context_line":"        availability_zone \u003d ("},{"line_number":1964,"context_line":"            serial_session.query(self.model_class).filter_by(**filters).one())"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_70d7eb24","line":1961,"updated":"2019-11-18 20:17:02.000000000","message":"same","commit_id":"e5c55a54d56171926784ebef27203e064320764c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"ee2ecf98f8f89a39e3afcbd33385191944175a2d","unresolved":false,"context_lines":[{"line_number":1968,"context_line":"        :raises: sqlalchemy.orm.exc.NoResultFound"},{"line_number":1969,"context_line":"        \"\"\""},{"line_number":1970,"context_line":"        (serial_session.query(models.LoadBalancer)."},{"line_number":1971,"context_line":"         filter(models.LoadBalancer.availability_zone \u003d\u003d filters[\u0027name\u0027])."},{"line_number":1972,"context_line":"         filter(models.LoadBalancer.provisioning_status \u003d\u003d consts.DELETED)."},{"line_number":1973,"context_line":"         update({models.LoadBalancer.availability_zone: consts.NIL_UUID},"},{"line_number":1974,"context_line":"                synchronize_session\u003dFalse))"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_c055bb53","line":1971,"range":{"start_line":1971,"start_character":65,"end_line":1971,"end_character":71},"updated":"2019-12-06 02:26:57.000000000","message":"Is there a constant for this?","commit_id":"c39a1016b41a9ebef5534988e2dad3df6299b3e1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"        }"},{"line_number":1194,"context_line":"        if availability_zone:"},{"line_number":1195,"context_line":"            LOG.debug(\"Filtering amps by zone: %s\", availability_zone)"},{"line_number":1196,"context_line":"            filters[\u0027cached_zone\u0027] \u003d availability_zone"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":1199,"context_line":"            amp \u003d session.query(self.model_class).with_for_update().filter_by("}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_c4ca3e46","line":1196,"updated":"2019-12-13 20:40:18.000000000","message":"So this could place it in the wrong AZ if it has changed since we \"cached\" it.\nAt a minimum this should be included in the release notes.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":1193,"context_line":"        }"},{"line_number":1194,"context_line":"        if availability_zone:"},{"line_number":1195,"context_line":"            LOG.debug(\"Filtering amps by zone: %s\", availability_zone)"},{"line_number":1196,"context_line":"            filters[\u0027cached_zone\u0027] \u003d availability_zone"},{"line_number":1197,"context_line":""},{"line_number":1198,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":1199,"context_line":"            amp \u003d session.query(self.model_class).with_for_update().filter_by("}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_8a8bef67","line":1196,"in_reply_to":"3fa7e38b_c4ca3e46","updated":"2019-12-13 22:22:52.000000000","message":"So, I realize \"cached\" was added to the name but ... How the heck would an amp change AZs. T_T\nYeah, I guess maybe for some different provider that doesn\u0027t exist yet, this could be possible? :/\nI guess a release note is fine.","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/tests/functional/api/v2/test_load_balancer.py":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"fb2b34f983f2c875eee082fe428d795b7c215d82","unresolved":false,"context_lines":[{"line_number":2575,"context_line":"            \u0027flavor_id\u0027: None,"},{"line_number":2576,"context_line":"            \u0027provider\u0027: \u0027noop_driver\u0027,"},{"line_number":2577,"context_line":"            \u0027tags\u0027: [],"},{"line_number":2578,"context_line":"            \u0027availability_zone\u0027: None,"},{"line_number":2579,"context_line":"        }"},{"line_number":2580,"context_line":"        expected_lb.update(create_lb)"},{"line_number":2581,"context_line":"        expected_lb[\u0027listeners\u0027] \u003d expected_listeners"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_3592c84c","line":2578,"range":{"start_line":2578,"start_character":13,"end_line":2578,"end_character":30},"updated":"2019-12-06 12:36:23.000000000","message":"nit: already added in the same dict on line 2565","commit_id":"5bacc06bbb2351caee55c109eeb6e850a680114b"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c3f6e9d7a47cc5af6d9ac05fcdb84d28165e77c1","unresolved":false,"context_lines":[{"line_number":2575,"context_line":"            \u0027flavor_id\u0027: None,"},{"line_number":2576,"context_line":"            \u0027provider\u0027: \u0027noop_driver\u0027,"},{"line_number":2577,"context_line":"            \u0027tags\u0027: [],"},{"line_number":2578,"context_line":"            \u0027availability_zone\u0027: None,"},{"line_number":2579,"context_line":"        }"},{"line_number":2580,"context_line":"        expected_lb.update(create_lb)"},{"line_number":2581,"context_line":"        expected_lb[\u0027listeners\u0027] \u003d expected_listeners"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_f0cafb6b","line":2578,"range":{"start_line":2578,"start_character":13,"end_line":2578,"end_character":30},"in_reply_to":"3fa7e38b_3592c84c","updated":"2019-12-06 16:57:27.000000000","message":"Ah yeah, guessing this was a rebase issue","commit_id":"5bacc06bbb2351caee55c109eeb6e850a680114b"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"f4867a4153e42d034d816880be4f55c69c5fee28","unresolved":false,"context_lines":[{"line_number":2575,"context_line":"            \u0027flavor_id\u0027: None,"},{"line_number":2576,"context_line":"            \u0027provider\u0027: \u0027noop_driver\u0027,"},{"line_number":2577,"context_line":"            \u0027tags\u0027: [],"},{"line_number":2578,"context_line":"            \u0027availability_zone\u0027: None,"},{"line_number":2579,"context_line":"        }"},{"line_number":2580,"context_line":"        expected_lb.update(create_lb)"},{"line_number":2581,"context_line":"        expected_lb[\u0027listeners\u0027] \u003d expected_listeners"}],"source_content_type":"text/x-python","patch_set":19,"id":"3fa7e38b_2d9271a0","line":2578,"range":{"start_line":2578,"start_character":13,"end_line":2578,"end_character":30},"in_reply_to":"3fa7e38b_f0cafb6b","updated":"2019-12-08 23:55:57.000000000","message":"Done","commit_id":"5bacc06bbb2351caee55c109eeb6e850a680114b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"d9586040dacc6f73a1fe1165cc45a6374979fbd2","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"        self.assertEqual(\u0027noop_driver\u0027, api_lb.get(\u0027provider\u0027))"},{"line_number":1032,"context_line":"        self.assertEqual(test_flavor_id, api_lb.get(\u0027flavor_id\u0027))"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"    def test_create_with_availability_zone(self, **optionals):"},{"line_number":1035,"context_line":"        zone_name \u003d \u0027nova\u0027"},{"line_number":1036,"context_line":"        azp \u003d self.create_availability_zone_profile("},{"line_number":1037,"context_line":"            \u0027test1\u0027, \u0027noop_driver\u0027, \u0027{\"compute_zone\": \"%s\"}\u0027 % zone_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_2498f267","line":1034,"updated":"2019-12-13 20:40:18.000000000","message":"How about a test for drivers that do not support AZs?","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"39bc2b04c0018dc95ca4ceed8b6374b3c90463a2","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"        self.assertEqual(\u0027noop_driver\u0027, api_lb.get(\u0027provider\u0027))"},{"line_number":1032,"context_line":"        self.assertEqual(test_flavor_id, api_lb.get(\u0027flavor_id\u0027))"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"    def test_create_with_availability_zone(self, **optionals):"},{"line_number":1035,"context_line":"        zone_name \u003d \u0027nova\u0027"},{"line_number":1036,"context_line":"        azp \u003d self.create_availability_zone_profile("},{"line_number":1037,"context_line":"            \u0027test1\u0027, \u0027noop_driver\u0027, \u0027{\"compute_zone\": \"%s\"}\u0027 % zone_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_aadd8b6e","line":1034,"in_reply_to":"3fa7e38b_2498f267","updated":"2019-12-13 22:22:52.000000000","message":"+1","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"eac8392a7c47fbe1989c897670736688f493695b","unresolved":false,"context_lines":[{"line_number":1031,"context_line":"        self.assertEqual(\u0027noop_driver\u0027, api_lb.get(\u0027provider\u0027))"},{"line_number":1032,"context_line":"        self.assertEqual(test_flavor_id, api_lb.get(\u0027flavor_id\u0027))"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"    def test_create_with_availability_zone(self, **optionals):"},{"line_number":1035,"context_line":"        zone_name \u003d \u0027nova\u0027"},{"line_number":1036,"context_line":"        azp \u003d self.create_availability_zone_profile("},{"line_number":1037,"context_line":"            \u0027test1\u0027, \u0027noop_driver\u0027, \u0027{\"compute_zone\": \"%s\"}\u0027 % zone_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_ad6e0562","line":1034,"in_reply_to":"3fa7e38b_aadd8b6e","updated":"2019-12-13 23:48:58.000000000","message":"Done. This actually caught a bug, I think?","commit_id":"464ae2531a50f56fe361ede8fd5b319436ef2eff"}],"octavia/tests/unit/api/drivers/amphora_driver/v1/test_amphora_driver.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"808a5fcec556d1e51e58eda462ffd5a712de2758","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            loadbalancer_id\u003dself.sample_data.lb_id)"},{"line_number":63,"context_line":"        self.amp_driver.loadbalancer_create(provider_lb)"},{"line_number":64,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: self.sample_data.lb_id,"},{"line_number":65,"context_line":"                   consts.FLAVOR: None, consts.AVAILABILITY_ZONE: None}"},{"line_number":66,"context_line":"        mock_cast.assert_called_with({}, \u0027create_load_balancer\u0027, **payload)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @mock.patch(\u0027oslo_messaging.RPCClient.cast\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_708e0b2f","line":65,"updated":"2019-11-18 20:17:02.000000000","message":"Needs to be wsme-unset. Also, need this change for v2.","commit_id":"e5c55a54d56171926784ebef27203e064320764c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"38e33afa9789a3771084f0efbd1c035fc76a11d4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            loadbalancer_id\u003dself.sample_data.lb_id)"},{"line_number":63,"context_line":"        self.amp_driver.loadbalancer_create(provider_lb)"},{"line_number":64,"context_line":"        payload \u003d {consts.LOAD_BALANCER_ID: self.sample_data.lb_id,"},{"line_number":65,"context_line":"                   consts.FLAVOR: None, consts.AVAILABILITY_ZONE: None}"},{"line_number":66,"context_line":"        mock_cast.assert_called_with({}, \u0027create_load_balancer\u0027, **payload)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @mock.patch(\u0027oslo_messaging.RPCClient.cast\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_a3b75f21","line":65,"in_reply_to":"3fa7e38b_708e0b2f","updated":"2019-11-18 21:23:32.000000000","message":"Erk, nope, wrong one. octavia-lib data-models unset","commit_id":"e5c55a54d56171926784ebef27203e064320764c"}]}
