1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
/*
Package qos provides information and interaction with the QoS specifications
for the Openstack Blockstorage service.
Example to create a QoS specification
createOpts := qos.CreateOpts{
Name: "test",
Consumer: qos.ConsumerFront,
Specs: map[string]string{
"read_iops_sec": "20000",
},
}
test, err := qos.Create(client, createOpts).Extract()
if err != nil {
log.Fatal(err)
}
fmt.Printf("QoS: %+v\n", test)
Example to delete a QoS specification
qosID := "d6ae28ce-fcb5-4180-aa62-d260a27e09ae"
deleteOpts := qos.DeleteOpts{
Force: false,
}
err = qos.Delete(client, qosID, deleteOpts).ExtractErr()
if err != nil {
log.Fatal(err)
}
Example to list QoS specifications
listOpts := qos.ListOpts{}
allPages, err := qos.List(client, listOpts).AllPages()
if err != nil {
panic(err)
}
allQoS, err := qos.ExtractQoS(allPages)
if err != nil {
panic(err)
}
for _, qos := range allQoS {
fmt.Printf("List: %+v\n", qos)
}
Example to get a single QoS specification
qosID := "de075d5e-8afc-4e23-9388-b84a5183d1c0"
singleQos, err := qos.Get(client, test.ID).Extract()
if err != nil {
panic(err)
}
fmt.Printf("Get: %+v\n", singleQos)
Example of updating QoSSpec
qosID := "de075d5e-8afc-4e23-9388-b84a5183d1c0"
updateOpts := qos.UpdateOpts{
Consumer: qos.ConsumerBack,
Specs: map[string]string{
"read_iops_sec": "40000",
},
}
specs, err := qos.Update(client, qosID, updateOpts).Extract()
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", specs)
Example of deleting specific keys/specs from a QoS
qosID := "de075d5e-8afc-4e23-9388-b84a5183d1c0"
keysToDelete := qos.DeleteKeysOpts{"read_iops_sec"}
err = qos.DeleteKeys(client, qosID, keysToDelete).ExtractErr()
if err != nil {
panic(err)
}
Example of associating a QoS with a volume type
qosID := "de075d5e-8afc-4e23-9388-b84a5183d1c0"
volID := "b596be6a-0ce9-43fa-804a-5c5e181ede76"
associateOpts := qos.AssociateOpts{
VolumeTypeID: volID,
}
err = qos.Associate(client, qosID, associateOpts).ExtractErr()
if err != nil {
panic(err)
}
Example of disassociating a QoS from a volume type
qosID := "de075d5e-8afc-4e23-9388-b84a5183d1c0"
volID := "b596be6a-0ce9-43fa-804a-5c5e181ede76"
disassociateOpts := qos.DisassociateOpts{
VolumeTypeID: volID,
}
err = qos.Disassociate(client, qosID, disassociateOpts).ExtractErr()
if err != nil {
panic(err)
}
Example of disaassociating a Qos from all volume types
qosID := "de075d5e-8afc-4e23-9388-b84a5183d1c0"
err = qos.DisassociateAll(client, qosID).ExtractErr()
if err != nil {
panic(err)
}
Example of listing all associations of a QoS
qosID := "de075d5e-8afc-4e23-9388-b84a5183d1c0"
allQosAssociations, err := qos.ListAssociations(client, qosID).AllPages()
if err != nil {
panic(err)
}
allAssociations, err := qos.ExtractAssociations(allQosAssociations)
if err != nil {
panic(err)
}
for _, association := range allAssociations {
fmt.Printf("Association: %+v\n", association)
}
*/
package qos
|