policies

package
v1.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2024 License: Apache-2.0 Imports: 5 Imported by: 17

Documentation

Overview

Package policies provides information and interaction with the QoS policy extension for the OpenStack Networking service.

Example to Get a Port with a QoS policy

var portWithQoS struct {
    ports.Port
    policies.QoSPolicyExt
}

portID := "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2"

err = ports.Get(client, portID).ExtractInto(&portWithQoS)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Port: %+v\n", portWithQoS)

Example to Create a Port with a QoS policy

var portWithQoS struct {
    ports.Port
    policies.QoSPolicyExt
}

policyID := "d6ae28ce-fcb5-4180-aa62-d260a27e09ae"
networkID := "7069db8d-e817-4b39-a654-d2dd76e73d36"

portCreateOpts := ports.CreateOpts{
    NetworkID: networkID,
}

createOpts := policies.PortCreateOptsExt{
    CreateOptsBuilder: portCreateOpts,
    QoSPolicyID:       policyID,
}

err = ports.Create(client, createOpts).ExtractInto(&portWithQoS)
if err != nil {
    panic(err)
}

fmt.Printf("Port: %+v\n", portWithQoS)

Example to Add a QoS policy to an existing Port

var portWithQoS struct {
    ports.Port
    policies.QoSPolicyExt
}

portUpdateOpts := ports.UpdateOpts{}

policyID := "d6ae28ce-fcb5-4180-aa62-d260a27e09ae"

updateOpts := policies.PortUpdateOptsExt{
    UpdateOptsBuilder: portUpdateOpts,
    QoSPolicyID:       &policyID,
}

err := ports.Update(client, "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&portWithQoS)
if err != nil {
    panic(err)
}

fmt.Printf("Port: %+v\n", portWithQoS)

Example to Delete a QoS policy from the existing Port

var portWithQoS struct {
    ports.Port
    policies.QoSPolicyExt
}

portUpdateOpts := ports.UpdateOpts{}

policyID := ""

updateOpts := policies.PortUpdateOptsExt{
    UpdateOptsBuilder: portUpdateOpts,
    QoSPolicyID:       &policyID,
}

err := ports.Update(client, "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&portWithQoS)
if err != nil {
    panic(err)
}

fmt.Printf("Port: %+v\n", portWithQoS)

Example to Get a Network with a QoS policy

var networkWithQoS struct {
    networks.Network
    policies.QoSPolicyExt
}

networkID := "46d4bfb9-b26e-41f3-bd2e-e6dcc1ccedb2"

err = networks.Get(client, networkID).ExtractInto(&networkWithQoS)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Network: %+v\n", networkWithQoS)

Example to Create a Network with a QoS policy

var networkWithQoS struct {
    networks.Network
    policies.QoSPolicyExt
}

policyID := "d6ae28ce-fcb5-4180-aa62-d260a27e09ae"
networkID := "7069db8d-e817-4b39-a654-d2dd76e73d36"

networkCreateOpts := networks.CreateOpts{
    NetworkID: networkID,
}

createOpts := policies.NetworkCreateOptsExt{
    CreateOptsBuilder: networkCreateOpts,
    QoSPolicyID:       policyID,
}

err = networks.Create(client, createOpts).ExtractInto(&networkWithQoS)
if err != nil {
    panic(err)
}

fmt.Printf("Network: %+v\n", networkWithQoS)

Example to add a QoS policy to an existing Network

var networkWithQoS struct {
    networks.Network
    policies.QoSPolicyExt
}

networkUpdateOpts := networks.UpdateOpts{}

policyID := "d6ae28ce-fcb5-4180-aa62-d260a27e09ae"

updateOpts := policies.NetworkUpdateOptsExt{
    UpdateOptsBuilder: networkUpdateOpts,
    QoSPolicyID:       &policyID,
}

err := networks.Update(client, "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&networkWithQoS)
if err != nil {
    panic(err)
}

fmt.Printf("Network: %+v\n", networkWithQoS)

Example to delete a QoS policy from the existing Network

var networkWithQoS struct {
    networks.Network
    policies.QoSPolicyExt
}

networkUpdateOpts := networks.UpdateOpts{}

policyID := ""

updateOpts := policies.NetworkUpdateOptsExt{
    UpdateOptsBuilder: networkUpdateOpts,
    QoSPolicyID:       &policyID,
}

err := networks.Update(client, "65c0ee9f-d634-4522-8954-51021b570b0d", updateOpts).ExtractInto(&networkWithQoS)
if err != nil {
    panic(err)
}

fmt.Printf("Network: %+v\n", networkWithQoS)

Example to List QoS policies

    shared := true
    listOpts := policies.ListOpts{
        Name:   "shared-policy",
        Shared: &shared,
    }

    allPages, err := policies.List(networkClient, listOpts).AllPages()
    if err != nil {
        panic(err)
    }

	allPolicies, err := policies.ExtractPolicies(allPages)
    if err != nil {
        panic(err)
    }

    for _, policy := range allPolicies {
        fmt.Printf("%+v\n", policy)
    }

Example to Get a specific QoS policy

policyID := "30a57f4a-336b-4382-8275-d708babd2241"

policy, err := policies.Get(networkClient, policyID).Extract()
if err != nil {
    panic(err)
}

fmt.Printf("%+v\n", policy)

Example to Create a QoS policy

createOpts := policies.CreateOpts{
    Name:      "shared-default-policy",
    Shared:    true,
    IsDefault: true,
}

policy, err := policies.Create(networkClient, createOpts).Extract()
if err != nil {
    panic(err)
}

fmt.Printf("%+v\n", policy)

Example to Update a QoS policy

shared := true
isDefault := false
opts := policies.UpdateOpts{
    Name:      "new-name",
    Shared:    &shared,
    IsDefault: &isDefault,
}

policyID := "30a57f4a-336b-4382-8275-d708babd2241"

policy, err := policies.Update(networkClient, policyID, opts).Extract()
if err != nil {
    panic(err)
}

fmt.Printf("%+v\n", policy)

Example to Delete a QoS policy

policyID := "30a57f4a-336b-4382-8275-d708babd2241"

err := policies.Delete(networkClient, policyID).ExtractErr()
if err != nil {
    panic(err)
}

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExtractPolicysInto added in v0.2.0

func ExtractPolicysInto(r pagination.Page, v interface{}) error

ExtractPoliciesInto extracts the elements into a slice of RBAC Policy structs.

func List added in v0.2.0

List returns a Pager which allows you to iterate over a collection of Policy. It accepts a ListOpts struct, which allows you to filter and sort the returned collection for greater efficiency.

Types

type CreateOpts added in v0.2.0

type CreateOpts struct {
	// Name is the human-readable name of the QoS policy.
	Name string `json:"name"`

	// TenantID is the id of the Identity project.
	TenantID string `json:"tenant_id,omitempty"`

	// ProjectID is the id of the Identity project.
	ProjectID string `json:"project_id,omitempty"`

	// Shared indicates whether this QoS policy is shared across all projects.
	Shared bool `json:"shared,omitempty"`

	// Description is the human-readable description for the QoS policy.
	Description string `json:"description,omitempty"`

	// IsDefault indicates if this QoS policy is default policy or not.
	IsDefault bool `json:"is_default,omitempty"`
}

CreateOpts specifies parameters of a new QoS policy.

func (CreateOpts) ToPolicyCreateMap added in v0.2.0

func (opts CreateOpts) ToPolicyCreateMap() (map[string]interface{}, error)

ToPolicyCreateMap constructs a request body from CreateOpts.

type CreateOptsBuilder added in v0.2.0

type CreateOptsBuilder interface {
	ToPolicyCreateMap() (map[string]interface{}, error)
}

CreateOptsBuilder allows to add additional parameters to the Create request.

type CreateResult added in v0.2.0

type CreateResult struct {
	// contains filtered or unexported fields
}

CreateResult represents the result of a Create operation. Call its Extract method to interpret it as a QoS policy.

func Create added in v0.2.0

func Create(client *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult)

Create requests the creation of a new QoS policy on the server.

func (CreateResult) Extract added in v0.2.0

func (r CreateResult) Extract() (*Policy, error)

Extract is a function that accepts a result and extracts a QoS policy resource.

type DeleteResult added in v0.2.0

type DeleteResult struct {
	gophercloud.ErrResult
}

DeleteResult represents the result of a delete operation. Call its ExtractErr method to determine if the request succeeded or failed.

func Delete added in v0.2.0

func Delete(c *gophercloud.ServiceClient, id string) (r DeleteResult)

Delete accepts a unique ID and deletes the QoS policy associated with it.

type GetResult added in v0.2.0

type GetResult struct {
	// contains filtered or unexported fields
}

GetResult represents the result of a get operation. Call its Extract method to interpret it as a QoS policy.

func Get added in v0.2.0

func Get(c *gophercloud.ServiceClient, id string) (r GetResult)

Get retrieves a specific QoS policy based on its ID.

func (GetResult) Extract added in v0.2.0

func (r GetResult) Extract() (*Policy, error)

Extract is a function that accepts a result and extracts a QoS policy resource.

type ListOpts added in v0.2.0

type ListOpts struct {
	ID             string `q:"id"`
	TenantID       string `q:"tenant_id"`
	ProjectID      string `q:"project_id"`
	Name           string `q:"name"`
	Description    string `q:"description"`
	RevisionNumber *int   `q:"revision_number"`
	IsDefault      *bool  `q:"is_default"`
	Shared         *bool  `q:"shared"`
	Limit          int    `q:"limit"`
	Marker         string `q:"marker"`
	SortKey        string `q:"sort_key"`
	SortDir        string `q:"sort_dir"`
	Tags           string `q:"tags"`
	TagsAny        string `q:"tags-any"`
	NotTags        string `q:"not-tags"`
	NotTagsAny     string `q:"not-tags-any"`
}

ListOpts allows the filtering and sorting of paginated collections through the Neutron API. Filtering is achieved by passing in struct field values that map to the Policy attributes you want to see returned. SortKey allows you to sort by a particular Policy attribute. SortDir sets the direction, and is either `asc' or `desc'. Marker and Limit are used for the pagination.

func (ListOpts) ToPolicyListQuery added in v0.2.0

func (opts ListOpts) ToPolicyListQuery() (string, error)

ToPolicyListQuery formats a ListOpts into a query string.

type NetworkCreateOptsExt

type NetworkCreateOptsExt struct {
	networks.CreateOptsBuilder

	// QoSPolicyID represents an associated QoS policy.
	QoSPolicyID string `json:"qos_policy_id,omitempty"`
}

NetworkCreateOptsExt adds QoS options to the base networks.CreateOpts.

func (NetworkCreateOptsExt) ToNetworkCreateMap

func (opts NetworkCreateOptsExt) ToNetworkCreateMap() (map[string]interface{}, error)

ToNetworkCreateMap casts a CreateOpts struct to a map.

type NetworkUpdateOptsExt

type NetworkUpdateOptsExt struct {
	networks.UpdateOptsBuilder

	// QoSPolicyID represents an associated QoS policy.
	// Setting it to a pointer of an empty string will remove associated QoS policy from network.
	QoSPolicyID *string `json:"qos_policy_id,omitempty"`
}

NetworkUpdateOptsExt adds QoS options to the base networks.UpdateOpts.

func (NetworkUpdateOptsExt) ToNetworkUpdateMap

func (opts NetworkUpdateOptsExt) ToNetworkUpdateMap() (map[string]interface{}, error)

ToNetworkUpdateMap casts a UpdateOpts struct to a map.

type Policy added in v0.2.0

type Policy struct {
	// ID is the id of the policy.
	ID string `json:"id"`

	// Name is the human-readable name of the policy.
	Name string `json:"name"`

	// TenantID is the id of the Identity project.
	TenantID string `json:"tenant_id"`

	// ProjectID is the id of the Identity project.
	ProjectID string `json:"project_id"`

	// CreatedAt is the time at which the policy has been created.
	CreatedAt time.Time `json:"created_at"`

	// UpdatedAt is the time at which the policy has been created.
	UpdatedAt time.Time `json:"updated_at"`

	// IsDefault indicates if the policy is default policy or not.
	IsDefault bool `json:"is_default"`

	// Description is thehuman-readable description for the resource.
	Description string `json:"description"`

	// Shared indicates whether this policy is shared across all projects.
	Shared bool `json:"shared"`

	// RevisionNumber represents revision number of the policy.
	RevisionNumber int `json:"revision_number"`

	// Rules represents QoS rules of the policy.
	Rules []map[string]interface{} `json:"rules"`

	// Tags optionally set via extensions/attributestags
	Tags []string `json:"tags"`
}

Policy represents a QoS policy.

func ExtractPolicies added in v0.2.0

func ExtractPolicies(r pagination.Page) ([]Policy, error)

ExtractPolicies accepts a PolicyPage, and extracts the elements into a slice of Policies.

type PolicyListOptsBuilder added in v0.2.0

type PolicyListOptsBuilder interface {
	ToPolicyListQuery() (string, error)
}

PolicyListOptsBuilder allows extensions to add additional parameters to the List request.

type PolicyPage added in v0.2.0

type PolicyPage struct {
	pagination.LinkedPageBase
}

PolicyPage stores a single page of Policies from a List() API call.

func (PolicyPage) IsEmpty added in v0.2.0

func (r PolicyPage) IsEmpty() (bool, error)

IsEmpty checks whether a PolicyPage is empty.

func (PolicyPage) NextPageURL added in v0.2.0

func (r PolicyPage) NextPageURL() (string, error)

NextPageURL is invoked when a paginated collection of policies has reached the end of a page and the pager seeks to traverse over a new one. In order to do this, it needs to construct the next page's URL.

type PortCreateOptsExt

type PortCreateOptsExt struct {
	ports.CreateOptsBuilder

	// QoSPolicyID represents an associated QoS policy.
	QoSPolicyID string `json:"qos_policy_id,omitempty"`
}

PortCreateOptsExt adds QoS options to the base ports.CreateOpts.

func (PortCreateOptsExt) ToPortCreateMap

func (opts PortCreateOptsExt) ToPortCreateMap() (map[string]interface{}, error)

ToPortCreateMap casts a CreateOpts struct to a map.

type PortUpdateOptsExt

type PortUpdateOptsExt struct {
	ports.UpdateOptsBuilder

	// QoSPolicyID represents an associated QoS policy.
	// Setting it to a pointer of an empty string will remove associated QoS policy from port.
	QoSPolicyID *string `json:"qos_policy_id,omitempty"`
}

PortUpdateOptsExt adds QoS options to the base ports.UpdateOpts.

func (PortUpdateOptsExt) ToPortUpdateMap

func (opts PortUpdateOptsExt) ToPortUpdateMap() (map[string]interface{}, error)

ToPortUpdateMap casts a UpdateOpts struct to a map.

type QoSPolicyExt

type QoSPolicyExt struct {
	// QoSPolicyID represents an associated QoS policy.
	QoSPolicyID string `json:"qos_policy_id"`
}

QoSPolicyExt represents additional resource attributes available with the QoS extension.

type UpdateOpts added in v0.2.0

type UpdateOpts struct {
	// Name is the human-readable name of the QoS policy.
	Name string `json:"name,omitempty"`

	// Shared indicates whether this QoS policy is shared across all projects.
	Shared *bool `json:"shared,omitempty"`

	// Description is the human-readable description for the QoS policy.
	Description *string `json:"description,omitempty"`

	// IsDefault indicates if this QoS policy is default policy or not.
	IsDefault *bool `json:"is_default,omitempty"`
}

UpdateOpts represents options used to update a QoS policy.

func (UpdateOpts) ToPolicyUpdateMap added in v0.2.0

func (opts UpdateOpts) ToPolicyUpdateMap() (map[string]interface{}, error)

ToPolicyUpdateMap builds a request body from UpdateOpts.

type UpdateOptsBuilder added in v0.2.0

type UpdateOptsBuilder interface {
	ToPolicyUpdateMap() (map[string]interface{}, error)
}

UpdateOptsBuilder allows extensions to add additional parameters to the Update request.

type UpdateResult added in v0.2.0

type UpdateResult struct {
	// contains filtered or unexported fields
}

UpdateResult represents the result of a Create operation. Call its Extract method to interpret it as a QoS policy.

func Update added in v0.2.0

func Update(c *gophercloud.ServiceClient, policyID string, opts UpdateOptsBuilder) (r UpdateResult)

Update accepts a UpdateOpts struct and updates an existing policy using the values provided.

func (UpdateResult) Extract added in v0.2.0

func (r UpdateResult) Extract() (*Policy, error)

Extract is a function that accepts a result and extracts a QoS policy resource.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL