blob: 9a377bb472828eafad12d23f495e7d57b588e016 [file] [log] [blame]
package tc
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
import (
"database/sql"
)
// CDNsResponse is a list of CDNs as a response.
// swagger:response CDNsResponse
// in: body
type CDNsResponse struct {
// in: body
Response []CDN `json:"response"`
Alerts
}
// CDNResponse is a single CDN response for Update and Create to depict what
// changed.
// swagger:response CDNResponse
// in: body
type CDNResponse struct {
// in: body
Response CDN `json:"response"`
Alerts
}
// A CDN represents a set of configuration and hardware that can be used to
// serve content within a specific top-level domain.
type CDN struct {
// The CDN to retrieve
//
// enables Domain Name Security Extensions on the specified CDN
//
// required: true
DNSSECEnabled bool `json:"dnssecEnabled" db:"dnssec_enabled"`
// DomainName of the CDN
//
// required: true
DomainName string `json:"domainName" db:"domain_name"`
// ID of the CDN
//
// required: true
ID int `json:"id" db:"id"`
// LastUpdated
//
LastUpdated TimeNoMod `json:"lastUpdated" db:"last_updated"`
// Name of the CDN
//
// required: true
Name string `json:"name" db:"name"`
}
// CDNNullable is identical to CDN except that its fields are reference values,
// which allows them to be nil.
type CDNNullable struct {
// The CDN to retrieve
//
// enables Domain Name Security Extensions on the specified CDN
//
// required: true
DNSSECEnabled *bool `json:"dnssecEnabled" db:"dnssec_enabled"`
// DomainName of the CDN
//
// required: true
DomainName *string `json:"domainName" db:"domain_name"`
// ID of the CDN
//
// required: true
ID *int `json:"id" db:"id"`
// LastUpdated
//
LastUpdated *TimeNoMod `json:"lastUpdated" db:"last_updated"`
// Name of the CDN
//
// required: true
Name *string `json:"name" db:"name"`
}
// CDNSSLKeysResponse is the structure of the Traffic Ops API's response to
// requests made to its /cdns/name/{{name}}/sslkeys endpoint.
type CDNSSLKeysResponse struct {
Response []CDNSSLKeys `json:"response"`
Alerts
}
// CDNSSLKeys is an SSL key/certificate pair for a certain Delivery Service.
type CDNSSLKeys struct {
DeliveryService string `json:"deliveryservice"`
Certificate CDNSSLKeysCertificate `json:"certificate"`
Hostname string `json:"hostname"`
}
// CDNSSLKeysCertificate is an SSL key/certificate pair.
type CDNSSLKeysCertificate struct {
Crt string `json:"crt"`
Key string `json:"key"`
}
// CDNConfig includes the name and ID of a single CDN configuration.
type CDNConfig struct {
Name *string `json:"name"`
ID *int `json:"id"`
}
// CDNExistsByName returns whether a cdn with the given name exists, and any error.
// TODO move to helper package.
func CDNExistsByName(name string, tx *sql.Tx) (bool, error) {
exists := false
err := tx.QueryRow(`SELECT EXISTS(SELECT * FROM cdn WHERE name = $1)`, name).Scan(&exists)
return exists, err
}
// CDNQueueUpdateRequest encodes the request data for the POST
// cdns/{{ID}}/queue_update endpoint.
type CDNQueueUpdateRequest ServerQueueUpdateRequest
// CDNQueueUpdateResponse encodes the response data for the POST
// cdns/{{ID}}/queue_update endpoint.
type CDNQueueUpdateResponse struct {
Action string `json:"action"`
CDNID int64 `json:"cdnId"`
}