Fixed is_default is not reset on old default version.
This commit is contained in:
parent
ed01ceddc8
commit
6f5948af33
@ -66,6 +66,13 @@ class Policy(BaseModel):
|
|||||||
self.create_date = create_date if create_date is not None else datetime.utcnow()
|
self.create_date = create_date if create_date is not None else datetime.utcnow()
|
||||||
self.update_date = update_date if update_date is not None else datetime.utcnow()
|
self.update_date = update_date if update_date is not None else datetime.utcnow()
|
||||||
|
|
||||||
|
def update_default_version(self, new_default_version_id):
|
||||||
|
for version in self.versions:
|
||||||
|
if version.version_id == self.default_version_id:
|
||||||
|
version.is_default = False
|
||||||
|
break
|
||||||
|
self.default_version_id = new_default_version_id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def created_iso_8601(self):
|
def created_iso_8601(self):
|
||||||
return iso_8601_datetime_with_milliseconds(self.create_date)
|
return iso_8601_datetime_with_milliseconds(self.create_date)
|
||||||
@ -760,12 +767,13 @@ class IAMBackend(BaseBackend):
|
|||||||
policy = self.get_policy(policy_arn)
|
policy = self.get_policy(policy_arn)
|
||||||
if not policy:
|
if not policy:
|
||||||
raise IAMNotFoundException("Policy not found")
|
raise IAMNotFoundException("Policy not found")
|
||||||
|
set_as_default = (set_as_default == "true") # convert it to python bool
|
||||||
version = PolicyVersion(policy_arn, policy_document, set_as_default)
|
version = PolicyVersion(policy_arn, policy_document, set_as_default)
|
||||||
policy.versions.append(version)
|
policy.versions.append(version)
|
||||||
version.version_id = 'v{0}'.format(policy.next_version_num)
|
version.version_id = 'v{0}'.format(policy.next_version_num)
|
||||||
policy.next_version_num += 1
|
policy.next_version_num += 1
|
||||||
if set_as_default:
|
if set_as_default:
|
||||||
policy.default_version_id = version.version_id
|
policy.update_default_version(version.version_id)
|
||||||
return version
|
return version
|
||||||
|
|
||||||
def get_policy_version(self, policy_arn, version_id):
|
def get_policy_version(self, policy_arn, version_id):
|
||||||
@ -788,8 +796,8 @@ class IAMBackend(BaseBackend):
|
|||||||
if not policy:
|
if not policy:
|
||||||
raise IAMNotFoundException("Policy not found")
|
raise IAMNotFoundException("Policy not found")
|
||||||
if version_id == policy.default_version_id:
|
if version_id == policy.default_version_id:
|
||||||
raise IAMConflictException(
|
raise IAMConflictException(code="DeleteConflict",
|
||||||
"Cannot delete the default version of a policy")
|
message="Cannot delete the default version of a policy.")
|
||||||
for i, v in enumerate(policy.versions):
|
for i, v in enumerate(policy.versions):
|
||||||
if v.version_id == version_id:
|
if v.version_id == version_id:
|
||||||
del policy.versions[i]
|
del policy.versions[i]
|
||||||
|
Loading…
Reference in New Issue
Block a user