blob: 76e2aea5203bfb8c650d4a053a320eb4ef7cbf50 [file] [log] [blame]
/*
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.
*/
package client
import (
"encoding/json"
"errors"
"strconv"
"github.com/apache/trafficcontrol/lib/go-tc"
)
// DeliveryServices gets an array of DeliveryServices
// Deprecated: use GetDeliveryServices
func (to *Session) DeliveryServices() ([]tc.DeliveryService, error) {
dses, _, err := to.GetDeliveryServices()
return dses, err
}
func (to *Session) GetDeliveryServices() ([]tc.DeliveryService, ReqInf, error) {
var data tc.DeliveryServicesResponse
reqInf, err := get(to, deliveryServicesEp(), &data)
if err != nil {
return nil, reqInf, err
}
return data.Response, reqInf, nil
}
// DeliveryServicesByServer gets an array of all DeliveryServices with the given server ID assigend.
// Deprecated: use GetDeliveryServicesByServer
func (to *Session) DeliveryServicesByServer(id int) ([]tc.DeliveryService, error) {
dses, _, err := to.GetDeliveryServicesByServer(id)
return dses, err
}
func (to *Session) GetDeliveryServicesByServer(id int) ([]tc.DeliveryService, ReqInf, error) {
var data tc.DeliveryServicesResponse
reqInf, err := get(to, deliveryServicesByServerEp(strconv.Itoa(id)), &data)
if err != nil {
return nil, reqInf, err
}
return data.Response, reqInf, nil
}
func (to *Session) GetDeliveryServiceByXMLID(XMLID string) ([]tc.DeliveryService, ReqInf, error) {
var data tc.GetDeliveryServiceResponse
reqInf, err := get(to, deliveryServicesByXMLID(XMLID), &data)
if err != nil {
return nil, reqInf, err
}
return data.Response, reqInf, nil
}
// DeliveryService gets the DeliveryService for the ID it's passed
// Deprecated: use GetDeliveryService
func (to *Session) DeliveryService(id string) (*tc.DeliveryService, error) {
ds, _, err := to.GetDeliveryService(id)
return ds, err
}
func (to *Session) GetDeliveryService(id string) (*tc.DeliveryService, ReqInf, error) {
var data tc.DeliveryServicesResponse
reqInf, err := get(to, deliveryServiceEp(id), &data)
if err != nil {
return nil, reqInf, err
}
if len(data.Response) == 0 {
return nil, reqInf, nil
}
return &data.Response[0], reqInf, nil
}
func (to *Session) GetDeliveryServicesNullable() ([]tc.DeliveryServiceNullable, ReqInf, error) {
data := struct {
Response []tc.DeliveryServiceNullable `json:"response"`
}{}
reqInf, err := get(to, deliveryServicesEp(), &data)
if err != nil {
return nil, reqInf, err
}
return data.Response, reqInf, nil
}
func (to *Session) GetDeliveryServicesByCDNID(cdnID int) ([]tc.DeliveryServiceNullable, ReqInf, error) {
data := struct {
Response []tc.DeliveryServiceNullable `json:"response"`
}{}
reqInf, err := get(to, apiBase+dsPath+"?cdn="+strconv.Itoa(cdnID), &data)
if err != nil {
return nil, reqInf, err
}
return data.Response, reqInf, nil
}
func (to *Session) GetDeliveryServiceNullable(id string) (*tc.DeliveryServiceNullable, ReqInf, error) {
data := struct {
Response []tc.DeliveryServiceNullable `json:"response"`
}{}
reqInf, err := get(to, deliveryServiceEp(id), &data)
if err != nil {
return nil, reqInf, err
}
if len(data.Response) == 0 {
return nil, reqInf, nil
}
return &data.Response[0], reqInf, nil
}
// CreateDeliveryService creates the DeliveryService it's passed
func (to *Session) CreateDeliveryService(ds *tc.DeliveryService) (*tc.CreateDeliveryServiceResponse, error) {
if ds.TypeID == 0 && ds.Type.String() != "" {
ty, _, err := to.GetTypeByName(ds.Type.String())
if err != nil {
return nil, err
}
if len(ty) == 0 {
return nil, errors.New("no type named " + ds.Type.String())
}
ds.TypeID = ty[0].ID
}
if ds.CDNID == 0 && ds.CDNName != "" {
cdns, _, err := to.GetCDNByName(ds.CDNName)
if err != nil {
return nil, err
}
if len(cdns) == 0 {
return nil, errors.New("no CDN named " + ds.CDNName)
}
ds.CDNID = cdns[0].ID
}
if ds.ProfileID == 0 && ds.ProfileName != "" {
profiles, _, err := to.GetProfileByName(ds.ProfileName)
if err != nil {
return nil, err
}
if len(profiles) == 0 {
return nil, errors.New("no Profile named " + ds.ProfileName)
}
ds.ProfileID = profiles[0].ID
}
if ds.TenantID == 0 && ds.Tenant != "" {
ten, _, err := to.TenantByName(ds.Tenant)
if err != nil {
return nil, err
}
ds.TenantID = ten.ID
}
var data tc.CreateDeliveryServiceResponse
jsonReq, err := json.Marshal(ds)
if err != nil {
return nil, err
}
_, err = post(to, deliveryServicesEp(), jsonReq, &data)
if err != nil {
return nil, err
}
return &data, nil
}
// CreateDeliveryServiceNullable creates the DeliveryService it's passed
func (to *Session) CreateDeliveryServiceNullable(ds *tc.DeliveryServiceNullable) (*tc.CreateDeliveryServiceNullableResponse, error) {
if ds.TypeID == nil && ds.Type != nil {
ty, _, err := to.GetTypeByName(ds.Type.String())
if err != nil {
return nil, err
}
if len(ty) == 0 {
return nil, errors.New("no type named " + ds.Type.String())
}
ds.TypeID = &ty[0].ID
}
if ds.CDNID == nil && ds.CDNName != nil {
cdns, _, err := to.GetCDNByName(*ds.CDNName)
if err != nil {
return nil, err
}
if len(cdns) == 0 {
return nil, errors.New("no CDN named " + *ds.CDNName)
}
ds.CDNID = &cdns[0].ID
}
if ds.ProfileID == nil && ds.ProfileName != nil {
profiles, _, err := to.GetProfileByName(*ds.ProfileName)
if err != nil {
return nil, err
}
if len(profiles) == 0 {
return nil, errors.New("no Profile named " + *ds.ProfileName)
}
ds.ProfileID = &profiles[0].ID
}
if ds.TenantID == nil && ds.Tenant != nil {
ten, _, err := to.TenantByName(*ds.Tenant)
if err != nil {
return nil, err
}
ds.TenantID = &ten.ID
}
var data tc.CreateDeliveryServiceNullableResponse
jsonReq, err := json.Marshal(ds)
if err != nil {
return nil, err
}
_, err = post(to, deliveryServicesEp(), jsonReq, &data)
if err != nil {
return nil, err
}
return &data, nil
}
// UpdateDeliveryService updates the DeliveryService matching the ID it's passed with
// the DeliveryService it is passed
func (to *Session) UpdateDeliveryService(id string, ds *tc.DeliveryService) (*tc.UpdateDeliveryServiceResponse, error) {
var data tc.UpdateDeliveryServiceResponse
jsonReq, err := json.Marshal(ds)
if err != nil {
return nil, err
}
_, err = put(to, deliveryServiceEp(id), jsonReq, &data)
if err != nil {
return nil, err
}
return &data, nil
}
func (to *Session) UpdateDeliveryServiceNullable(id string, ds *tc.DeliveryServiceNullable) (*tc.UpdateDeliveryServiceResponse, error) {
var data tc.UpdateDeliveryServiceResponse
jsonReq, err := json.Marshal(ds)
if err != nil {
return nil, err
}
_, err = put(to, deliveryServiceEp(id), jsonReq, &data)
if err != nil {
return nil, err
}
return &data, nil
}
// DeleteDeliveryService deletes the DeliveryService matching the ID it's passed
func (to *Session) DeleteDeliveryService(id string) (*tc.DeleteDeliveryServiceResponse, error) {
var data tc.DeleteDeliveryServiceResponse
_, err := del(to, deliveryServiceEp(id), &data)
if err != nil {
return nil, err
}
return &data, nil
}
// DeliveryServiceState gets the DeliveryServiceState for the ID it's passed
// Deprecated: use GetDeliveryServiceState
func (to *Session) DeliveryServiceState(id string) (*tc.DeliveryServiceState, error) {
dss, _, err := to.GetDeliveryServiceState(id)
return dss, err
}
func (to *Session) GetDeliveryServiceState(id string) (*tc.DeliveryServiceState, ReqInf, error) {
var data tc.DeliveryServiceStateResponse
reqInf, err := get(to, deliveryServiceStateEp(id), &data)
if err != nil {
return nil, reqInf, err
}
return &data.Response, reqInf, nil
}
// DeliveryServiceHealth gets the DeliveryServiceHealth for the ID it's passed
// Deprecated: use GetDeliveryServiceHealth
func (to *Session) DeliveryServiceHealth(id string) (*tc.DeliveryServiceHealth, error) {
dsh, _, err := to.GetDeliveryServiceHealth(id)
return dsh, err
}
func (to *Session) GetDeliveryServiceHealth(id string) (*tc.DeliveryServiceHealth, ReqInf, error) {
var data tc.DeliveryServiceHealthResponse
reqInf, err := get(to, deliveryServiceHealthEp(id), &data)
if err != nil {
return nil, reqInf, err
}
return &data.Response, reqInf, nil
}
// DeliveryServiceCapacity gets the DeliveryServiceCapacity for the ID it's passed
// Deprecated: use GetDeliveryServiceCapacity
func (to *Session) DeliveryServiceCapacity(id string) (*tc.DeliveryServiceCapacity, error) {
dsc, _, err := to.GetDeliveryServiceCapacity(id)
return dsc, err
}
func (to *Session) GetDeliveryServiceCapacity(id string) (*tc.DeliveryServiceCapacity, ReqInf, error) {
var data tc.DeliveryServiceCapacityResponse
reqInf, err := get(to, deliveryServiceCapacityEp(id), &data)
if err != nil {
return nil, reqInf, err
}
return &data.Response, reqInf, nil
}
// DeliveryServiceRouting gets the DeliveryServiceRouting for the ID it's passed
// Deprecated: use GetDeliveryServiceRouting
func (to *Session) DeliveryServiceRouting(id string) (*tc.DeliveryServiceRouting, error) {
dsr, _, err := to.GetDeliveryServiceRouting(id)
return dsr, err
}
func (to *Session) GetDeliveryServiceRouting(id string) (*tc.DeliveryServiceRouting, ReqInf, error) {
var data tc.DeliveryServiceRoutingResponse
reqInf, err := get(to, deliveryServiceRoutingEp(id), &data)
if err != nil {
return nil, reqInf, err
}
return &data.Response, reqInf, nil
}
// DeliveryServiceServer gets the DeliveryServiceServer
// Deprecated: use GetDeliveryServiceServer
func (to *Session) DeliveryServiceServer(page, limit string) ([]tc.DeliveryServiceServer, error) {
dss, _, err := to.GetDeliveryServiceServer(page, limit)
return dss, err
}
func (to *Session) GetDeliveryServiceServer(page, limit string) ([]tc.DeliveryServiceServer, ReqInf, error) {
var data tc.DeliveryServiceServerResponse
reqInf, err := get(to, deliveryServiceServerEp(page, limit), &data)
if err != nil {
return nil, reqInf, err
}
return data.Response, reqInf, nil
}
// DeliveryServiceRegexes gets the DeliveryService regexes
// Deprecated: use GetDeliveryServiceRegexes
func (to *Session) DeliveryServiceRegexes() ([]tc.DeliveryServiceRegexes, error) {
dsrs, _, err := to.GetDeliveryServiceRegexes()
return dsrs, err
}
func (to *Session) GetDeliveryServiceRegexes() ([]tc.DeliveryServiceRegexes, ReqInf, error) {
var data tc.DeliveryServiceRegexResponse
reqInf, err := get(to, deliveryServiceRegexesEp(), &data)
if err != nil {
return nil, reqInf, err
}
return data.Response, reqInf, nil
}
// DeliveryServiceSSLKeysByID gets the DeliveryServiceSSLKeys by ID
// Deprecated: use GetDeliveryServiceSSLKeysByID
func (to *Session) DeliveryServiceSSLKeysByID(id string) (*tc.DeliveryServiceSSLKeys, error) {
dsks, _, err := to.GetDeliveryServiceSSLKeysByID(id)
return dsks, err
}
func (to *Session) GetDeliveryServiceSSLKeysByID(id string) (*tc.DeliveryServiceSSLKeys, ReqInf, error) {
var data tc.DeliveryServiceSSLKeysResponse
reqInf, err := get(to, deliveryServiceSSLKeysByIDEp(id), &data)
if err != nil {
return nil, reqInf, err
}
return &data.Response, reqInf, nil
}
// DeliveryServiceSSLKeysByHostname gets the DeliveryServiceSSLKeys by Hostname
// Deprecated: use GetDeliveryServiceSSLKeysByHostname
func (to *Session) DeliveryServiceSSLKeysByHostname(hostname string) (*tc.DeliveryServiceSSLKeys, error) {
dsks, _, err := to.GetDeliveryServiceSSLKeysByHostname(hostname)
return dsks, err
}
func (to *Session) GetDeliveryServiceSSLKeysByHostname(hostname string) (*tc.DeliveryServiceSSLKeys, ReqInf, error) {
var data tc.DeliveryServiceSSLKeysResponse
reqInf, err := get(to, deliveryServiceSSLKeysByHostnameEp(hostname), &data)
if err != nil {
return nil, reqInf, err
}
return &data.Response, reqInf, nil
}
func (to *Session) GetDeliveryServiceMatches() ([]tc.DeliveryServicePatterns, ReqInf, error) {
uri := apiBase + `/deliveryservice_matches`
resp := tc.DeliveryServiceMatchesResponse{}
reqInf, err := get(to, uri, &resp)
if err != nil {
return nil, reqInf, err
}
return resp.Response, reqInf, nil
}
func (to *Session) GetDeliveryServicesEligible(dsID int) ([]tc.DSServer, ReqInf, error) {
resp := struct {
Response []tc.DSServer `json:"response"`
}{Response: []tc.DSServer{}}
uri := apiBase + `/deliveryservices/` + strconv.Itoa(dsID) + `/servers/eligible`
reqInf, err := get(to, uri, &resp)
if err != nil {
return nil, reqInf, err
}
return resp.Response, reqInf, nil
}
func (to *Session) GetDeliveryServiceURLSigKeys(dsName string) (tc.URLSigKeys, ReqInf, error) {
data := struct {
Response tc.URLSigKeys `json:"response"`
}{}
path := apiBase + `/deliveryservices/xmlId/` + dsName + `/urlkeys.json`
reqInf, err := get(to, path, &data)
if err != nil {
return tc.URLSigKeys{}, reqInf, err
}
return data.Response, reqInf, nil
}
func (to *Session) GetDeliveryServiceURISigningKeys(dsName string) ([]byte, ReqInf, error) {
path := apiBase + `/deliveryservices/` + dsName + `/urisignkeys`
data := json.RawMessage{}
reqInf, err := get(to, path, &data)
if err != nil {
return []byte{}, reqInf, err
}
return []byte(data), reqInf, nil
}