Skip to content
Snippets Groups Projects
ipam_vrfs.go 2.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • Christoph Glaubitz's avatar
    Christoph Glaubitz committed
    // Copyright 2017 The go-netbox Authors.
    //
    // Licensed under the Apache License, Version 2.0 (the "License");
    // you may not use this file except in compliance with the License.
    // You may obtain a copy of the License at
    //
    //   http://www.apache.org/licenses/LICENSE-2.0
    //
    // Unless required by applicable law or agreed to in writing, software
    // distributed under the License is distributed on an "AS IS" BASIS,
    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    // See the License for the specific language governing permissions and
    // limitations under the License.
    
    // Code generated by generate_functions.go. DO NOT EDIT.
    
    package netbox
    
    import (
    	"encoding/json"
    	"fmt"
    	"net/http"
    )
    
    // VRFsService is used in a Client to access NetBox's ipam/vrfs API methods.
    type VRFsService struct {
    	c *Client
    }
    
    // Get retrieves an VRF object from NetBox by its ID.
    func (s *VRFsService) Get(id int) (*VRF, error) {
    	req, err := s.c.NewRequest(
    		http.MethodGet,
    		fmt.Sprintf("api/ipam/vrfs/%d/", id),
    		nil,
    	)
    	if err != nil {
    		return nil, err
    	}
    
    	t := new(VRF)
    	err = s.c.Do(req, t)
    	if err != nil {
    		return nil, err
    	}
    	return t, nil
    }
    
    // List returns a Page associated with an NetBox API Endpoint.
    func (s *VRFsService) List(options *ListVRFOptions) *Page {
    	return NewPage(s.c, "api/ipam/vrfs/", options)
    }
    
    // Extract retrives a list of VRF objects from page.
    func (s *VRFsService) Extract(page *Page) ([]*VRF, error) {
    	if err := page.Err(); err != nil {
    		return nil, err
    	}
    
    	var groups []*VRF
    	if err := json.Unmarshal(page.data.Results, &groups); err != nil {
    		return nil, err
    	}
    	return groups, nil
    }
    
    // Create creates a new VRF object in NetBox and returns the ID of the new object.
    func (s *VRFsService) Create(data *VRF) (int, error) {
    	req, err := s.c.NewJSONRequest(http.MethodPost, "api/ipam/vrfs/", nil, data)
    	if err != nil {
    		return 0, err
    	}
    
    	g := new(writableVRF)
    	err = s.c.Do(req, g)
    	if err != nil {
    		return 0, err
    	}
    	return g.ID, nil
    }
    
    // Update changes an existing VRF object in NetBox, and returns the ID of the new object.
    func (s *VRFsService) Update(data *VRF) (int, error) {
    	req, err := s.c.NewJSONRequest(
    		http.MethodPatch,
    		fmt.Sprintf("api/ipam/vrfs/%d/", data.ID),
    		nil,
    		data,
    	)
    	if err != nil {
    		return 0, err
    	}
    
    	// g is just used to verify correct api result.
    	// data is not changed, because the g is not the full representation that one would
    	// get with Get. But if the response was unmarshaled into writableVRF correctly,
    	// everything went fine, and we do not need to update data.
    	g := new(writableVRF)
    	err = s.c.Do(req, g)
    	if err != nil {
    		return 0, err
    	}
    	return g.ID, nil
    }
    
    // Delete deletes an existing VRF object from NetBox.
    func (s *VRFsService) Delete(data *VRF) error {
    	req, err := s.c.NewRequest(
    		http.MethodDelete,
    		fmt.Sprintf("api/ipam/vrfs/%d/", data.ID),
    		nil,
    	)
    	if err != nil {
    		return err
    	}
    
    	return s.c.Do(req, nil)
    }