{"action":"created","issue":{"url":"https://api.github.com/repos/saltstack/salt/issues/21391","labels_url":"https://api.github.com/repos/saltstack/salt/issues/21391/labels{/name}","comments_url":"https://api.github.com/repos/saltstack/salt/issues/21391/comments","events_url":"https://api.github.com/repos/saltstack/salt/issues/21391/events","html_url":"https://github.com/saltstack/salt/issues/21391","id":60162422,"number":21391,"title":"Recursive pillar merge breaks when None is merged with dict","user":{"login":"ryan-lane","id":1538354,"avatar_url":"https://avatars.githubusercontent.com/u/1538354?v=3","gravatar_id":"","url":"https://api.github.com/users/ryan-lane","html_url":"https://github.com/ryan-lane","followers_url":"https://api.github.com/users/ryan-lane/followers","following_url":"https://api.github.com/users/ryan-lane/following{/other_user}","gists_url":"https://api.github.com/users/ryan-lane/gists{/gist_id}","starred_url":"https://api.github.com/users/ryan-lane/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryan-lane/subscriptions","organizations_url":"https://api.github.com/users/ryan-lane/orgs","repos_url":"https://api.github.com/users/ryan-lane/repos","events_url":"https://api.github.com/users/ryan-lane/events{/privacy}","received_events_url":"https://api.github.com/users/ryan-lane/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/saltstack/salt/labels/Bug","name":"Bug","color":"e11d21"},{"url":"https://api.github.com/repos/saltstack/salt/labels/Core","name":"Core","color":"fef2c0"},{"url":"https://api.github.com/repos/saltstack/salt/labels/Fixed%20Pending%20Verification","name":"Fixed Pending Verification","color":"d4c5f9"},{"url":"https://api.github.com/repos/saltstack/salt/labels/High%20Severity","name":"High Severity","color":"ff9143"},{"url":"https://api.github.com/repos/saltstack/salt/labels/P3","name":"P3","color":"0a3d77"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/saltstack/salt/milestones/13","html_url":"https://github.com/saltstack/salt/milestones/Approved","labels_url":"https://api.github.com/repos/saltstack/salt/milestones/13/labels","id":9265,"number":13,"title":"Approved","description":"All issues that are ready to be worked on, both bugs and features.","creator":{"login":"thatch45","id":507599,"avatar_url":"https://avatars.githubusercontent.com/u/507599?v=3","gravatar_id":"","url":"https://api.github.com/users/thatch45","html_url":"https://github.com/thatch45","followers_url":"https://api.github.com/users/thatch45/followers","following_url":"https://api.github.com/users/thatch45/following{/other_user}","gists_url":"https://api.github.com/users/thatch45/gists{/gist_id}","starred_url":"https://api.github.com/users/thatch45/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thatch45/subscriptions","organizations_url":"https://api.github.com/users/thatch45/orgs","repos_url":"https://api.github.com/users/thatch45/repos","events_url":"https://api.github.com/users/thatch45/events{/privacy}","received_events_url":"https://api.github.com/users/thatch45/received_events","type":"User","site_admin":false},"open_issues":2385,"closed_issues":2216,"state":"open","created_at":"2011-05-14T04:00:56Z","updated_at":"2015-06-24T23:50:55Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2015-03-06T21:38:13Z","updated_at":"2015-06-24T23:52:50Z","closed_at":null,"body":"pillarA.sls:\r\n```yaml\r\ntest:\r\n```\r\npillarB.sls:\r\n```yaml\r\ntest:\r\n  me\r\n```\r\n\r\ntop.sls:\r\n```yaml\r\nbase:\r\n  '*':\r\n    - pillarA\r\n    - pillarB\r\n```\r\n\r\nStacktrace:\r\n```python\r\nTraceback (most recent call last):\r\n  File \"/usr/local/bin/salt-call\", line 10, in <module>\r\n    execfile(__file__)\r\n  File \"/srv/salt/venv/src/salt/scripts/salt-call\", line 11, in <module>\r\n    salt_call()\r\n  File \"/srv/salt/venv/src/salt/salt/scripts.py\", line 122, in salt_call\r\n    client.run()\r\n  File \"/srv/salt/venv/src/salt/salt/cli/__init__.py\", line 409, in run\r\n    caller = salt.cli.caller.Caller.factory(self.config)\r\n  File \"/srv/salt/venv/src/salt/salt/cli/caller.py\", line 64, in factory\r\n    return ZeroMQCaller(opts, **kwargs)\r\n  File \"/srv/salt/venv/src/salt/salt/cli/caller.py\", line 87, in __init__\r\n    self.minion = salt.minion.SMinion(opts)\r\n  File \"/srv/salt/venv/src/salt/salt/minion.py\", line 267, in __init__\r\n    self.gen_modules()\r\n  File \"/srv/salt/venv/src/salt/salt/minion.py\", line 277, in gen_modules\r\n    self.opts['environment'],\r\n  File \"/srv/salt/venv/src/salt/salt/pillar/__init__.py\", line 578, in compile_pillar\r\n    pillar, errors = self.render_pillar(matches)\r\n  File \"/srv/salt/venv/src/salt/salt/pillar/__init__.py\", line 464, in render_pillar\r\n    pillar = self.merge_sources(pillar, pstate)\r\n  File \"/srv/salt/venv/src/salt/salt/pillar/__init__.py\", line 559, in merge_sources\r\n    merged = merge_recurse(obj_a, obj_b)\r\n  File \"/srv/salt/venv/src/salt/salt/pillar/__init__.py\", line 31, in merge_recurse\r\n    return update(copied, obj_b)\r\n  File \"/srv/salt/venv/src/salt/salt/utils/dictupdate.py\", line 14, in update\r\n    ret = update(dest.get(key, {}), val)\r\n  File \"/srv/salt/venv/src/salt/salt/utils/dictupdate.py\", line 17, in update\r\n    dest[key] = upd[key]\r\nTypeError: 'NoneType' object does not support item assignment\r\n```\r\nThis is for version 2014.7.2."},"comment":{"url":"https://api.github.com/repos/saltstack/salt/issues/comments/115047925","html_url":"https://github.com/saltstack/salt/issues/21391#issuecomment-115047925","issue_url":"https://api.github.com/repos/saltstack/salt/issues/21391","id":115047925,"user":{"login":"ryan-lane","id":1538354,"avatar_url":"https://avatars.githubusercontent.com/u/1538354?v=3","gravatar_id":"","url":"https://api.github.com/users/ryan-lane","html_url":"https://github.com/ryan-lane","followers_url":"https://api.github.com/users/ryan-lane/followers","following_url":"https://api.github.com/users/ryan-lane/following{/other_user}","gists_url":"https://api.github.com/users/ryan-lane/gists{/gist_id}","starred_url":"https://api.github.com/users/ryan-lane/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryan-lane/subscriptions","organizations_url":"https://api.github.com/users/ryan-lane/orgs","repos_url":"https://api.github.com/users/ryan-lane/repos","events_url":"https://api.github.com/users/ryan-lane/events{/privacy}","received_events_url":"https://api.github.com/users/ryan-lane/received_events","type":"User","site_admin":false},"created_at":"2015-06-24T23:52:50Z","updated_at":"2015-06-24T23:52:50Z","body":"dest[key] is None. The exception is trying to assign a value to None. The key, as far as I know should exist."}}