@@ -17,6 +17,7 @@ import (
1717 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/pauseunpause"
1818 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/serverusage"
1919 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/suspendresume"
20+ "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/tags"
2021 "github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
2122 "github.com/gophercloud/gophercloud/openstack/networking/v2/networks"
2223 th "github.com/gophercloud/gophercloud/testhelper"
@@ -506,9 +507,34 @@ func TestServersTags(t *testing.T) {
506507 networkID , err := networks .IDFromName (networkClient , choices .NetworkName )
507508 th .AssertNoErr (t , err )
508509
510+ // Create server with tags.
509511 server , err := CreateServerWithTags (t , client , networkID )
510512 th .AssertNoErr (t , err )
511513 defer DeleteServer (t , client , server )
514+
515+ // Check all tags.
516+ allTags , err := tags .List (client , server .ID ).Extract ()
517+ th .AssertNoErr (t , err )
518+ th .AssertDeepEquals (t , []string {"tag1" , "tag2" }, allTags )
519+
520+ // Check single tag.
521+ exists , err := tags .Check (client , server .ID , "tag2" ).Extract ()
522+ th .AssertNoErr (t , err )
523+ th .AssertEquals (t , true , exists )
524+
525+ // Add new tag.
526+ newTags , err := tags .ReplaceAll (client , server .ID , tags.ReplaceAllOpts {Tags : []string {"tag3" , "tag4" }}).Extract ()
527+ th .AssertNoErr (t , err )
528+ th .AssertDeepEquals (t , []string {"tag3" , "tag4" }, newTags )
529+
530+ // Add new single tag.
531+ err = tags .Add (client , server .ID , "tag5" ).ExtractErr ()
532+ th .AssertNoErr (t , err )
533+
534+ // Check current tags.
535+ newAllTags , err := tags .List (client , server .ID ).Extract ()
536+ th .AssertNoErr (t , err )
537+ th .AssertDeepEquals (t , []string {"tag3" , "tag4" , "tag5" }, newAllTags )
512538}
513539
514540func TestServersWithExtendedAttributesCreateDestroy (t * testing.T ) {
0 commit comments