github.com/gophercloud/gophercloud@v1.11.0/openstack/compute/v2/extensions/schedulerhints/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "testing" 5 6 "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/schedulerhints" 7 "github.com/gophercloud/gophercloud/openstack/compute/v2/servers" 8 th "github.com/gophercloud/gophercloud/testhelper" 9 ) 10 11 func TestCreateOpts(t *testing.T) { 12 base := servers.CreateOpts{ 13 Name: "createdserver", 14 ImageRef: "asdfasdfasdf", 15 FlavorRef: "performance1-1", 16 } 17 18 schedulerHints := schedulerhints.SchedulerHints{ 19 Group: "101aed42-22d9-4a3e-9ba1-21103b0d1aba", 20 DifferentHost: []string{ 21 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 22 "8c19174f-4220-44f0-824a-cd1eeef10287", 23 }, 24 SameHost: []string{ 25 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 26 "8c19174f-4220-44f0-824a-cd1eeef10287", 27 }, 28 Query: []interface{}{"=", "$free_ram_mb", "1024"}, 29 TargetCell: "foobar", 30 DifferentCell: []string{ 31 "bazbar", 32 "barbaz", 33 }, 34 BuildNearHostIP: "192.168.1.1/24", 35 AdditionalProperties: map[string]interface{}{"reservation": "a0cf03a5-d921-4877-bb5c-86d26cf818e1"}, 36 } 37 38 ext := schedulerhints.CreateOptsExt{ 39 CreateOptsBuilder: base, 40 SchedulerHints: schedulerHints, 41 } 42 43 expected := ` 44 { 45 "server": { 46 "name": "createdserver", 47 "imageRef": "asdfasdfasdf", 48 "flavorRef": "performance1-1" 49 }, 50 "os:scheduler_hints": { 51 "group": "101aed42-22d9-4a3e-9ba1-21103b0d1aba", 52 "different_host": [ 53 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 54 "8c19174f-4220-44f0-824a-cd1eeef10287" 55 ], 56 "same_host": [ 57 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 58 "8c19174f-4220-44f0-824a-cd1eeef10287" 59 ], 60 "query": "[\"=\",\"$free_ram_mb\",\"1024\"]", 61 "target_cell": "foobar", 62 "different_cell": [ 63 "bazbar", 64 "barbaz" 65 ], 66 "build_near_host_ip": "192.168.1.1", 67 "cidr": "/24", 68 "reservation": "a0cf03a5-d921-4877-bb5c-86d26cf818e1" 69 } 70 } 71 ` 72 actual, err := ext.ToServerCreateMap() 73 th.AssertNoErr(t, err) 74 th.CheckJSONEquals(t, expected, actual) 75 } 76 77 func TestCreateOptsWithComplexQuery(t *testing.T) { 78 base := servers.CreateOpts{ 79 Name: "createdserver", 80 ImageRef: "asdfasdfasdf", 81 FlavorRef: "performance1-1", 82 } 83 84 schedulerHints := schedulerhints.SchedulerHints{ 85 Group: "101aed42-22d9-4a3e-9ba1-21103b0d1aba", 86 DifferentHost: []string{ 87 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 88 "8c19174f-4220-44f0-824a-cd1eeef10287", 89 }, 90 SameHost: []string{ 91 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 92 "8c19174f-4220-44f0-824a-cd1eeef10287", 93 }, 94 Query: []interface{}{"and", []string{"=", "$free_ram_mb", "1024"}, []string{"=", "$free_disk_mb", "204800"}}, 95 TargetCell: "foobar", 96 DifferentCell: []string{ 97 "bazbar", 98 "barbaz", 99 }, 100 BuildNearHostIP: "192.168.1.1/24", 101 AdditionalProperties: map[string]interface{}{"reservation": "a0cf03a5-d921-4877-bb5c-86d26cf818e1"}, 102 } 103 104 ext := schedulerhints.CreateOptsExt{ 105 CreateOptsBuilder: base, 106 SchedulerHints: schedulerHints, 107 } 108 109 expected := ` 110 { 111 "server": { 112 "name": "createdserver", 113 "imageRef": "asdfasdfasdf", 114 "flavorRef": "performance1-1" 115 }, 116 "os:scheduler_hints": { 117 "group": "101aed42-22d9-4a3e-9ba1-21103b0d1aba", 118 "different_host": [ 119 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 120 "8c19174f-4220-44f0-824a-cd1eeef10287" 121 ], 122 "same_host": [ 123 "a0cf03a5-d921-4877-bb5c-86d26cf818e1", 124 "8c19174f-4220-44f0-824a-cd1eeef10287" 125 ], 126 "query": "[\"and\",[\"=\",\"$free_ram_mb\",\"1024\"],[\"=\",\"$free_disk_mb\",\"204800\"]]", 127 "target_cell": "foobar", 128 "different_cell": [ 129 "bazbar", 130 "barbaz" 131 ], 132 "build_near_host_ip": "192.168.1.1", 133 "cidr": "/24", 134 "reservation": "a0cf03a5-d921-4877-bb5c-86d26cf818e1" 135 } 136 } 137 ` 138 actual, err := ext.ToServerCreateMap() 139 th.AssertNoErr(t, err) 140 th.CheckJSONEquals(t, expected, actual) 141 }