wbfish

package module
v0.5.3 Latest Latest
Warning

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

Go to latest
Published: Jul 2, 2020 License: BSD-3-Clause Imports: 14 Imported by: 0

README

Gofish - Redfish and Swordfish client library

Go Doc Go Report Card Releases LICENSE

Gofish Logo

Introduction

Gofish is a Golang library for interacting with DMTF Redfish and SNIA Swordfish enabled devices.

Usage

Basic usage would be:


package main

import (
    "fmt"

    "github.com/LRichi/gofish"
)

func main() {
    c, err := gofish.ConnectDefault("http://localhost:5000")
    if err != nil {
        panic(err)
    }

    service := c.Service
    chassis, err := service.Chassis()
    if err != nil {
        panic(err)
    }

    for _, chass := range chassis {
        fmt.Printf("Chassis: %#v\n\n", chass)
    }
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIClient

type APIClient struct {

	// HTTPClient is for direct http actions
	HTTPClient *http.Client

	// Service is the ServiceRoot of this Redfish instance
	Service *Service
	// contains filtered or unexported fields
}

APIClient represents a connection to a Redfish/Swordfish enabled service or device.

func Connect

func Connect(config ClientConfig) (c *APIClient, err error)

Connect creates a new client connection to a Redfish service.

func ConnectDefault

func ConnectDefault(endpoint string) (c *APIClient, err error)

ConnectDefault creates an unauthenticated connection to a Redfish service.

func (*APIClient) Delete

func (c *APIClient) Delete(url string) error

Delete performs a Delete request against the Redfish service.

func (*APIClient) Get

func (c *APIClient) Get(url string) (*http.Response, error)

Get performs a GET request against the Redfish service.

func (*APIClient) Logout

func (c *APIClient) Logout()

Logout will delete any active session. Useful to defer logout when creating a new connection.

func (*APIClient) Patch

func (c *APIClient) Patch(url string, payload interface{}) (*http.Response, error)

Patch performs a Patch request against the Redfish service.

func (*APIClient) Post

func (c *APIClient) Post(url string, payload interface{}) (*http.Response, error)

Post performs a Post request against the Redfish service.

func (*APIClient) Put

func (c *APIClient) Put(url string, payload interface{}) (*http.Response, error)

Put performs a Put request against the Redfish service.

type ClientConfig

type ClientConfig struct {
	// Endpoint is the URL of the redfish service
	Endpoint string

	// Username is the optional user name to authenticate with.
	Username string

	// Password is the password to use for authentication.
	Password string

	// Insecure controls whether to enforce SSL certificate validity.
	Insecure bool

	// Controls TLS handshake timeout
	TLSHandshakeTimeout int

	// HTTPClient is the optional client to connect with.
	HTTPClient *http.Client

	// DumpWriter is an optional io.Writer to receive dumps of HTTP
	// requests and responses.
	DumpWriter io.Writer

	// BasicAuth tells the APIClient if basic auth should be used (true) or token based auth must be used (false)
	BasicAuth bool
}

ClientConfig holds the settings for establishing a connection.

type ErrorWrongResponse added in v0.5.1

type ErrorWrongResponse struct {
	Code    int
	Payload []byte
}

ErrorResponse the error describes data when the response code is incorrect.

func (ErrorWrongResponse) Error added in v0.5.1

func (e ErrorWrongResponse) Error() string

type Expand

type Expand struct {
	// ExpandAll shall be a boolean indicating whether this service supports the
	// use of asterisk (expand all entries) as a value for the $expand query
	// parameter as described by the specification.
	ExpandAll bool
	// Levels shall be a boolean indicating whether this service supports the
	// use of $levels as a value for the $expand query parameter as described by
	// the specification.
	Levels bool
	// Links shall be a boolean indicating whether this service supports the use
	// of tilde (expand only entries in the Links section) as a value for the
	// $expand query parameter as described by the specification.
	Links bool
	// MaxLevels shall be the maximum value of the $levels qualifier supported
	// by the service and shall only be included if the value of the Levels
	// property is true.
	MaxLevels int
	// NoLinks shall be a boolean indicating whether this service supports the
	// use of period (expand only entries not in the Links section) as a value
	// for the $expand query parameter as described by the specification.
	NoLinks bool
}

Expand shall contain information about the support of the $expand query parameter by the service.

type ProtocolFeaturesSupported

type ProtocolFeaturesSupported struct {
	// ExcerptQuery shall be a boolean indicating whether this service supports
	// the use of the 'excerpt' query parameter as described by the
	// specification.
	ExcerptQuery bool
	// ExpandQuery shall contain information about the support of the $expand
	// query parameter by the service.
	ExpandQuery Expand
	// FilterQuery shall be a boolean indicating whether this service supports
	// the use of the $filter query parameter as described by the specification.
	FilterQuery bool
	// OnlyMemberQuery shall be a boolean indicating whether this service
	// supports the use of the 'only' query parameter as described by the
	// specification.
	OnlyMemberQuery bool
	// SelectQuery shall be a boolean indicating whether this service supports
	// the use of the $select query parameter as described by the specification.
	SelectQuery bool
}

ProtocolFeaturesSupported contains information about protocol features supported by the service.

type Service

type Service struct {
	common.Entity

	// ODataContext is the odata context.
	ODataContext string `json:"@odata.context"`
	// ODataEtag is the odata etag.
	ODataEtag string `json:"@odata.etag"`
	// ODataID is the odata identifier.
	ODataID string `json:"@odata.id"`
	// ODataType is the odata type.
	ODataType string `json:"@odata.type"`

	// Description provides a description of this resource.
	Description string

	// Product shall include the name of the product represented by this Redfish
	// service.
	Product string
	// ProtocolFeaturesSupported contains information about protocol features
	// supported by the service.
	ProtocolFeaturesSupported ProtocolFeaturesSupported
	// RedfishVersion shall represent the version of the Redfish service. The
	// format of this string shall be of the format
	// majorversion.minorversion.errata in compliance with Protocol Version
	// section of the Redfish specification.
	RedfishVersion string

	// UUID shall be an exact match of the UUID value returned in a 200OK from
	// an SSDP M-SEARCH request during discovery. RFC4122 describes methods that
	// can be used to create a UUID value. The value should be considered to be
	// opaque. Client software should only treat the overall value as a
	// universally unique identifier and should not interpret any sub-fields
	// within the UUID.
	UUID string

	// Vendor shall include the name of the manufacturer or vendor represented
	// by this Redfish service. If this property is supported, the vendor name
	// shall not be included in the value of the Product property.
	Vendor string
	// contains filtered or unexported fields
}

Service represents the root Redfish service. All values for resources described by this schema shall comply to the requirements as described in the Redfish specification.

func ServiceRoot

func ServiceRoot(c common.Client) (*Service, error)

ServiceRoot will get a Service instance from the service.

func (*Service) AccountService

func (serviceroot *Service) AccountService() (*redfish.AccountService, error)

AccountService gets the Redfish AccountService

func (*Service) Chassis

func (serviceroot *Service) Chassis() ([]*redfish.Chassis, error)

Chassis gets the chassis instances managed by this service.

func (*Service) CompositionService

func (serviceroot *Service) CompositionService() (*redfish.CompositionService, error)

CompositionService gets the composition service instance

func (*Service) CreateSession

func (serviceroot *Service) CreateSession(username string, password string) (*redfish.AuthToken, error)

CreateSession creates a new session and returns the token and id

func (*Service) DeleteSession

func (serviceroot *Service) DeleteSession(url string) error

DeleteSession logout the specified session

func (*Service) EventService

func (serviceroot *Service) EventService() (*redfish.EventService, error)

EventService gets the Redfish EventService

func (*Service) GetRawData added in v0.4.3

func (serviceroot *Service) GetRawData() []byte

GetRawData get raw data json

func (*Service) Managers

func (serviceroot *Service) Managers() ([]*redfish.Manager, error)

Managers gets the manager instances of this service.

func (*Service) Sessions

func (serviceroot *Service) Sessions() ([]*redfish.Session, error)

Sessions gets the system's active sessions

func (*Service) StorageServices

func (serviceroot *Service) StorageServices() ([]*swordfish.StorageService, error)

StorageServices gets the Swordfish storage services

func (*Service) StorageSystems

func (serviceroot *Service) StorageSystems() ([]*swordfish.StorageSystem, error)

StorageSystems gets the storage system instances managed by this service.

func (*Service) Systems

func (serviceroot *Service) Systems() ([]*redfish.ComputerSystem, error)

Systems get the system instances from the service

func (*Service) Tasks

func (serviceroot *Service) Tasks() ([]*redfish.Task, error)

Tasks gets the system's tasks

func (*Service) UnmarshalJSON

func (serviceroot *Service) UnmarshalJSON(b []byte) error

UnmarshalJSON unmarshals a Service object from the raw JSON.

Directories

Path Synopsis
examples
change_login
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: BSD-3-Clause
query_chassis
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: BSD-3-Clause
query_sessions
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: BSD-3-Clause

Jump to

Keyboard shortcuts

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