added support for update IAM groups (#4633)
This commit is contained in:
parent
a2c6e00e22
commit
ce0d21e9c6
@ -1574,6 +1574,8 @@ class IAMBackend(BaseBackend):
|
|||||||
policy = arns[policy_arn]
|
policy = arns[policy_arn]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise IAMNotFoundException("Policy {0} was not found.".format(policy_arn))
|
raise IAMNotFoundException("Policy {0} was not found.".format(policy_arn))
|
||||||
|
if policy.arn in self.get_group(group_name).managed_policies.keys():
|
||||||
|
return
|
||||||
policy.attach_to(self.get_group(group_name))
|
policy.attach_to(self.get_group(group_name))
|
||||||
|
|
||||||
def detach_group_policy(self, policy_arn, group_name):
|
def detach_group_policy(self, policy_arn, group_name):
|
||||||
@ -2120,6 +2122,29 @@ class IAMBackend(BaseBackend):
|
|||||||
"The group with name {0} cannot be found.".format(group_name)
|
"The group with name {0} cannot be found.".format(group_name)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def update_group(self, group_name, new_group_name, new_path="/"):
|
||||||
|
if new_group_name:
|
||||||
|
if new_group_name in self.groups:
|
||||||
|
raise IAMConflictException(
|
||||||
|
"Group {0} already exists".format(new_group_name)
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
group = self.groups[group_name]
|
||||||
|
except KeyError:
|
||||||
|
raise IAMNotFoundException(
|
||||||
|
"The group with name {0} cannot be found.".format(group_name)
|
||||||
|
)
|
||||||
|
|
||||||
|
existing_policies = group.managed_policies.copy()
|
||||||
|
for policy_arn in existing_policies:
|
||||||
|
self.detach_group_policy(policy_arn, group_name)
|
||||||
|
if new_path:
|
||||||
|
group.path = new_path
|
||||||
|
group.name = new_group_name
|
||||||
|
self.groups[new_group_name] = self.groups.pop(group_name)
|
||||||
|
for policy_arn in existing_policies:
|
||||||
|
self.attach_group_policy(policy_arn, new_group_name)
|
||||||
|
|
||||||
def create_user(self, user_name, path="/", tags=None):
|
def create_user(self, user_name, path="/", tags=None):
|
||||||
if user_name in self.users:
|
if user_name in self.users:
|
||||||
raise IAMConflictException(
|
raise IAMConflictException(
|
||||||
|
@ -504,6 +504,14 @@ class IamResponse(BaseResponse):
|
|||||||
template = self.response_template(GENERIC_EMPTY_TEMPLATE)
|
template = self.response_template(GENERIC_EMPTY_TEMPLATE)
|
||||||
return template.render(name="DeleteGroup")
|
return template.render(name="DeleteGroup")
|
||||||
|
|
||||||
|
def update_group(self):
|
||||||
|
group_name = self._get_param("GroupName")
|
||||||
|
new_group_name = self._get_param("NewGroupName")
|
||||||
|
new_path = self._get_param("NewPath", "/")
|
||||||
|
iam_backend.update_group(group_name, new_group_name, new_path)
|
||||||
|
template = self.response_template(GENERIC_EMPTY_TEMPLATE)
|
||||||
|
return template.render(name="UpdateGroup")
|
||||||
|
|
||||||
def create_user(self):
|
def create_user(self):
|
||||||
user_name = self._get_param("UserName")
|
user_name = self._get_param("UserName")
|
||||||
path = self._get_param("Path")
|
path = self._get_param("Path")
|
||||||
|
@ -118,3 +118,5 @@ TestAccAWSENI_basic
|
|||||||
TestAccAWSENI_IPv6
|
TestAccAWSENI_IPv6
|
||||||
TestAccAWSENI_disappears
|
TestAccAWSENI_disappears
|
||||||
TestAccAWSS3BucketObject_
|
TestAccAWSS3BucketObject_
|
||||||
|
TestAccAWSIAMPolicy_
|
||||||
|
TestAccAWSIAMGroup_
|
Loading…
Reference in New Issue
Block a user