1/*
2Package resourcetypes provides ability to manage resource types through the Gnocchi API.
3
4Example of Listing resource types
5
6  allPages, err := resourcetypes.List(client).AllPages()
7  if err != nil {
8    panic(err)
9	}
10
11  allResourceTypes, err := resourcetypes.ExtractResourceTypes(allPages)
12  if err != nil {
13    panic(err)
14	}
15
16  for _, resourceType := range allResourceTypes {
17    fmt.Printf("%+v\n", resourceType)
18  }
19
20Example of Getting a resource type
21
22  resourceTypeName := "compute_instance"
23  resourceType, err := resourcetypes.Get(gnocchiClient, resourceTypeName).Extract()
24  if err != nil {
25    panic(err)
26  }
27
28Example of Creating a resource type
29
30  resourceTypeOpts := resourcetypes.CreateOpts{
31    Name: "compute_instance_network",
32    Attributes: map[string]resourcetypes.AttributeOpts{
33      "port_name": resourcetypes.AttributeOpts{
34        Type: "string",
35        Details: map[string]interface{}{
36          "max_length": 128,
37          "required":   false,
38        },
39      },
40      "port_id": resourcetypes.AttributeOpts{
41        Type: "uuid",
42        Details: map[string]interface{}{
43          "required": true,
44        },
45      },
46    },
47  }
48  resourceType, err := resourcetypes.Create(gnocchiClient, resourceTypeOpts).Extract()
49  if err != nil {
50    panic(err)
51  }
52
53Example of Updating a resource type
54
55  enabledAttributeOptions := resourcetypes.AttributeOpts{
56    Details: map[string]interface{}{
57      "required": true,
58      "options": map[string]interface{}{
59        "fill": true,
60      },
61    },
62    Type: "bool",
63  }
64  parendIDAttributeOptions := resourcetypes.AttributeOpts{
65    Details: map[string]interface{}{
66      "required": false,
67    },
68    Type: "uuid",
69  }
70  resourceTypeOpts := resourcetypes.UpdateOpts{
71    Attributes: []resourcetypes.AttributeUpdateOpts{
72      {
73        Name:      "enabled",
74        Operation: resourcetypes.AttributeAdd,
75        Value:     &enabledAttributeOptions,
76      },
77      {
78        Name:      "parent_id",
79        Operation: resourcetypes.AttributeAdd,
80        Value:     &parendIDAttributeOptions,
81      },
82      {
83        Name:      "domain_id",
84        Operation: resourcetypes.AttributeRemove,
85      },
86    },
87  }
88  resourceType, err := resourcetypes.Update(gnocchiClient, resourceTypeOpts).Extract()
89  if err != nil {
90    panic(err)
91  }
92
93Example of Deleting a resource type
94
95  err := resourcetypes.Delete(gnocchiClient, resourceType).ExtractErr()
96  if err != nil {
97    panic(err)
98  }
99*/
100package resourcetypes
101