@@ -2989,3 +2989,83 @@ def test_32_user_a_doesnt_have_access_to_user_b_tags(self):
29892989 self .fail ("User1 has access to create tags for User2." )
29902990
29912991 return
2992+
2993+ @attr (tags = ["advanced" , "basic" ], required_hardware = "false" )
2994+ def test_33_duplicate_vm_tag (self ):
2995+ """
2996+ Test creation of a duplicate tag on UserVM and verify error return.
2997+ cleanup by deleting
2998+ """
2999+ # Validate the following
3000+ # 1. Create a tag on VM using createTags API
3001+ # 2. Create the same tag on VM using createTags API
3002+ # 3. check the return for the right error message
3003+
3004+ tag_key = 'scope'
3005+ tag_value = 'test_33_duplicate_vm_tag'
3006+
3007+ self .debug ("Creating a tag for user VM" )
3008+ # use vm_2 as vm_1 is deleted in other tests :(
3009+ tag = Tag .create (
3010+ self .apiclient ,
3011+ resourceIds = self .vm_2 .id ,
3012+ resourceType = 'userVM' ,
3013+ tags = {tag_key : tag_value }
3014+ )
3015+ self .debug ("Tag created: %s" % tag .__dict__ )
3016+
3017+ self .debug ("Trying second tag witgh the same key for user VM" )
3018+ try :
3019+ erronousTag = Tag .create (
3020+ self .apiclient ,
3021+ resourceIds = self .vm_2 .id ,
3022+ resourceType = 'userVM' ,
3023+ tags = {tag_key : tag_value }
3024+ )
3025+ except Exception as e :
3026+ # verify e.message
3027+ assert "tag scope already on UserVm with id" in e .message , \
3028+ "neat error message missing from error result"
3029+ pass
3030+
3031+
3032+ # we should still find the tag
3033+ vms = VirtualMachine .list (
3034+ self .apiclient ,
3035+ listall = True ,
3036+ key = tag_key ,
3037+ value = tag_value
3038+ )
3039+
3040+ self .assertEqual (
3041+ isinstance (vms , list ),
3042+ True ,
3043+ "Tag based VMs listing failed" )
3044+
3045+ self .debug ("Deleting the created tag.." )
3046+ try :
3047+ Tag .delete (
3048+ self .apiclient ,
3049+ resourceIds = self .vm_2 .id ,
3050+ resourceType = 'userVM' ,
3051+ tags = {tag_key : tag_value }
3052+ )
3053+ except Exception as e :
3054+ self .fail ("Failed to delete the tag - %s" % e )
3055+
3056+ self .debug ("Verifying if tag is actually deleted!" )
3057+ tags = Tag .list (
3058+ self .apiclient ,
3059+ listall = True ,
3060+ resourceType = 'userVM' ,
3061+ account = self .account .name ,
3062+ domainid = self .account .domainid ,
3063+ key = tag_key ,
3064+ value = tag_value
3065+ )
3066+ self .assertEqual (
3067+ tags ,
3068+ None ,
3069+ "List tags should return empty response"
3070+ )
3071+ return
0 commit comments