From 259e95d0e6a4482d66af395b790d048558ec0df9 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Tue, 18 Jul 2023 14:44:29 +0530 Subject: [PATCH 01/15] typo mistake correction --- lib/go-tc/federation_resolver.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/go-tc/federation_resolver.go b/lib/go-tc/federation_resolver.go index 51bf965531..2e2f74be06 100644 --- a/lib/go-tc/federation_resolver.go +++ b/lib/go-tc/federation_resolver.go @@ -72,7 +72,7 @@ type FederationResolversResponseV50 struct { Response []FederationResolverV5 `json:"response"` } -// FederationResolverResponseV50 - represents struct response used for the latest minor version associated with APIv5. +// FederationResolverResponseV5 - represents struct response used for the latest minor version associated with APIv5. type FederationResolverResponseV5 = FederationResolverResponseV50 // FederationResolverResponseV50 - POST request to its /federation_resolvers endpoint APIv50. From 1a6cde5ba7855677e7744fb76b18e111670c7ac8 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:18:21 +0530 Subject: [PATCH 02/15] added for v5 version with time conversion --- lib/go-tc/deliveryservice_servers.go | 50 +++++++++++++++++++ .../deliveryservice/eligible.go | 18 +++++++ .../deliveryservice/servers/servers.go | 14 ++++++ 3 files changed, 82 insertions(+) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index 7f1d1a1570..69520d06f7 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -168,6 +168,47 @@ type DSServerBaseV4 struct { DeliveryServiceCapabilities []string `json:"-" db:"deliveryservice_capabilities"` } +// DSServerBaseV5 contains the base information for a Delivery Service Server associated with APIv5. +type DSServerBaseV5 = DSServerBaseV50 + +// DSServerBaseV50 contains the base information for a Delivery Service Server for the latest minor version associated with APIv50. +type DSServerBaseV50 struct { + Cachegroup *string `json:"cachegroup" db:"cachegroup"` + CachegroupID *int `json:"cachegroupId" db:"cachegroup_id"` + CDNID *int `json:"cdnId" db:"cdn_id"` + CDNName *string `json:"cdnName" db:"cdn_name"` + DeliveryServices *map[string][]string `json:"deliveryServices,omitempty"` + DomainName *string `json:"domainName" db:"domain_name"` + FQDN *string `json:"fqdn,omitempty"` + FqdnTime time.Time `json:"-"` + GUID *string `json:"guid" db:"guid"` + HostName *string `json:"hostName" db:"host_name"` + HTTPSPort *int `json:"httpsPort" db:"https_port"` + ID *int `json:"id" db:"id"` + ILOIPAddress *string `json:"iloIpAddress" db:"ilo_ip_address"` + ILOIPGateway *string `json:"iloIpGateway" db:"ilo_ip_gateway"` + ILOIPNetmask *string `json:"iloIpNetmask" db:"ilo_ip_netmask"` + ILOPassword *string `json:"iloPassword" db:"ilo_password"` + ILOUsername *string `json:"iloUsername" db:"ilo_username"` + LastUpdated *time.Time `json:"lastUpdated" db:"last_updated"` + MgmtIPAddress *string `json:"mgmtIpAddress" db:"mgmt_ip_address"` + MgmtIPGateway *string `json:"mgmtIpGateway" db:"mgmt_ip_gateway"` + MgmtIPNetmask *string `json:"mgmtIpNetmask" db:"mgmt_ip_netmask"` + OfflineReason *string `json:"offlineReason" db:"offline_reason"` + PhysLocation *string `json:"physLocation" db:"phys_location"` + PhysLocationID *int `json:"physLocationId" db:"phys_location_id"` + ProfileNames []string `json:"profileNames" db:"profile_name"` + Rack *string `json:"rack" db:"rack"` + Status *string `json:"status" db:"status"` + StatusID *int `json:"statusId" db:"status_id"` + TCPPort *int `json:"tcpPort" db:"tcp_port"` + Type string `json:"type" db:"server_type"` + TypeID *int `json:"typeId" db:"server_type_id"` + UpdPending *bool `json:"updPending" db:"upd_pending"` + ServerCapabilities []string `json:"-" db:"server_capabilities"` + DeliveryServiceCapabilities []string `json:"-" db:"deliveryservice_capabilities"` +} + // DSServerV11 contains the legacy format for a Delivery Service Server. type DSServerV11 struct { DSServerBase @@ -180,6 +221,15 @@ type DSServer struct { ServerInterfaces *[]ServerInterfaceInfo `json:"interfaces" db:"interfaces"` } +// DSServerV5 contains information of Delivery Service Server associated with APIv5. +type DSServerV5 = DSServerV50 + +// DSServerV50 contains information for a Delivery Service Server for the latest minor version associated with APIv50. +type DSServerV50 struct { + DSServerBaseV50 + ServerInterfaces *[]ServerInterfaceInfo `json:"interfaces" db:"interfaces"` +} + // DSServerResponseV30 is the type of a response from Traffic Ops to a request // for servers assigned to a Delivery Service - in API version 3.0. type DSServerResponseV30 struct { diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go index 691a1ae7ba..e89390aea1 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go @@ -25,6 +25,7 @@ import ( "fmt" "net/http" "strings" + "time" "github.com/apache/trafficcontrol/lib/go-tc" "github.com/apache/trafficcontrol/lib/go-util" @@ -42,6 +43,8 @@ func GetServersEligible(w http.ResponseWriter, r *http.Request) { } defer inf.Close() + alerts := tc.Alerts{} + dsTenantID, ok, err := getDSTenantIDByID(inf.Tx.Tx, inf.IntParams["id"]) if err != nil { api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, nil, errors.New("checking tenant: "+err.Error())) @@ -96,6 +99,21 @@ func GetServersEligible(w http.ResponseWriter, r *http.Request) { api.WriteResp(w, r, v3ServerList) return } + + if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { + + v5Servers := make([]tc.DSServerV5, len(servers)) + + for i, v1 := range servers { + r := time.Unix(v1.LastUpdated.Unix(), 0) + v5Servers[i].LastUpdated = &r + } + + api.WriteAlertsObj(w, r, http.StatusOK, alerts, v5Servers) + api.WriteResp(w, r, servers) + return + } + api.WriteResp(w, r, servers) } diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go index 21556bd7de..d1902b91f8 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go @@ -724,6 +724,20 @@ func GetReadAssigned(w http.ResponseWriter, r *http.Request) { api.WriteAlertsObj(w, r, http.StatusOK, alerts, v3ServerList) return } + + if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { + + v5Servers := make([]tc.DSServerV5, len(servers)) + + for i, v1 := range servers { + r := time.Unix(v1.LastUpdated.Unix(), 0) + v5Servers[i].LastUpdated = &r + } + + api.WriteAlertsObj(w, r, http.StatusOK, alerts, v5Servers) + return + } + api.WriteAlertsObj(w, r, http.StatusOK, alerts, servers) } From 2bf24835cf13f7f31aceb77ed97778cb37956a7b Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:40:29 +0530 Subject: [PATCH 03/15] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d366dae38..d558586777 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -136,6 +136,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - [#7575](https://github.com/apache/trafficcontrol/pull/7575) *Traffic Ops* Fixes `types` v5 apis to respond with `RFC3339` date/time Format. - [#7628](https://github.com/apache/trafficcontrol/pull/7628) *Traffic Ops* Fixes an issue where certificate chain validation failed based on leading or trailing whitespace. - [#7596](https://github.com/apache/trafficcontrol/pull/7596) *Traffic Ops* Fixes `federation_resolvers` v5 apis to respond with `RFC3339` date/time Format. +- [#7660](https://github.com/apache/trafficcontrol/pull/7660) *Traffic Ops* Fixes `deliveryServices` v5 apis to respond with `RFC3339` date/time Format. ### Removed - [#7271](https://github.com/apache/trafficcontrol/pull/7271) Remove components in `infrastructre/docker/`, not in use as cdn-in-a-box performs the same functionality. From da00599dcfbe38cf4fc5167586dca7c4107b4843 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:44:31 +0530 Subject: [PATCH 04/15] time format updated in doc --- docs/source/api/v5/deliveryservices_id_servers.rst | 2 +- docs/source/api/v5/deliveryservices_id_servers_eligible.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/api/v5/deliveryservices_id_servers.rst b/docs/source/api/v5/deliveryservices_id_servers.rst index 02e578982a..ba358205da 100644 --- a/docs/source/api/v5/deliveryservices_id_servers.rst +++ b/docs/source/api/v5/deliveryservices_id_servers.rst @@ -70,7 +70,7 @@ Response Structure :gateway: The IPv4 or IPv6 gateway address of the server - applicable for the interface ``name`` :service_address: A boolean determining if content will be routed to the IP address -:lastUpdated: The time and date at which this server was last updated, in :ref:`non-rfc-datetime` +:lastUpdated: The time and date at which this server was last updated, in :rfc:`3339` :mgmtIpAddress: The IPv4 address of the server's management port :mgmtIpGateway: The IPv4 gateway of the server's management port :mgmtIpNetmask: The IPv4 subnet mask of the server's management port diff --git a/docs/source/api/v5/deliveryservices_id_servers_eligible.rst b/docs/source/api/v5/deliveryservices_id_servers_eligible.rst index f51c34f946..5aecd30450 100644 --- a/docs/source/api/v5/deliveryservices_id_servers_eligible.rst +++ b/docs/source/api/v5/deliveryservices_id_servers_eligible.rst @@ -76,7 +76,7 @@ Response Structure :gateway: The IPv4 or IPv6 gateway address of the server - applicable for the interface ``name`` :service_address: A boolean determining if content will be routed to the IP address -:lastUpdated: The time and date at which this server was last updated, in :ref:`non-rfc-datetime` +:lastUpdated: The time and date at which this server was last updated, in :rfc:`3339` :mgmtIpAddress: The IPv4 address of the server's management port :mgmtIpGateway: The IPv4 gateway of the server's management port :mgmtIpNetmask: The IPv4 subnet mask of the server's management port From 5bbafb0e7432265c5d20ef16037ba17a679d429c Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:59:44 +0530 Subject: [PATCH 05/15] test updated --- lib/go-tc/deliveryservice_servers.go | 9 +++++++++ traffic_ops/v5-client/deliveryservice.go | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index 69520d06f7..a0b6287fe7 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -255,6 +255,15 @@ type DSServerResponseV40 struct { // API version 4. type DSServerResponseV4 = DSServerResponseV40 +// DSServerResponseV50 is response from Traffic Ops to a request for servers assigned to a Delivery Service - in the latest minor version APIv50. +type DSServerResponseV50 struct { + Response []DSServerV50 `json:"response"` + Alerts +} + +// DSServerResponseV5 is the response from Traffic Ops to a request for servers assigned to a Delivery Service - in APIv5. +type DSServerResponseV5 = DSServerResponseV50 + // ToDSServerBaseV4 upgrades the DSServerBase to the structure used by the // latest minor version of version 4 of Traffic Ops's API. func (oldBase DSServerBase) ToDSServerBaseV4() DSServerBaseV4 { diff --git a/traffic_ops/v5-client/deliveryservice.go b/traffic_ops/v5-client/deliveryservice.go index ac238c6321..2a669d585a 100644 --- a/traffic_ops/v5-client/deliveryservice.go +++ b/traffic_ops/v5-client/deliveryservice.go @@ -282,8 +282,8 @@ func (to *Session) GetDeliveryServiceSSLKeys(xmlid string, opts RequestOptions) // GetDeliveryServicesEligible returns the servers eligible for assignment to the Delivery // Service identified by the integral, unique identifier 'dsID'. -func (to *Session) GetDeliveryServicesEligible(dsID int, opts RequestOptions) (tc.DSServerResponseV4, toclientlib.ReqInf, error) { - var resp tc.DSServerResponseV4 +func (to *Session) GetDeliveryServicesEligible(dsID int, opts RequestOptions) (tc.DSServerResponseV5, toclientlib.ReqInf, error) { + var resp tc.DSServerResponseV5 reqInf, err := to.get(fmt.Sprintf(apiDeliveryServiceEligibleServers, dsID), opts, &resp) return resp, reqInf, err } From 4cff65a78e341dc6213688b278dd9beb35e16da7 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Tue, 18 Jul 2023 21:15:17 +0530 Subject: [PATCH 06/15] typo correction --- .../traffic_ops_golang/deliveryservice/eligible.go | 11 ++++++----- .../deliveryservice/servers/servers.go | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go index e89390aea1..e231b82536 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go @@ -100,16 +100,17 @@ func GetServersEligible(w http.ResponseWriter, r *http.Request) { return } + // Based on version we load Delivery Service Eligible Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - v5Servers := make([]tc.DSServerV5, len(servers)) + serverList := make([]tc.DSServerV5, len(servers)) - for i, v1 := range servers { - r := time.Unix(v1.LastUpdated.Unix(), 0) - v5Servers[i].LastUpdated = &r + for i, dss := range servers { + r := time.Unix(dss.LastUpdated.Unix(), 0) + serverList[i].LastUpdated = &r } - api.WriteAlertsObj(w, r, http.StatusOK, alerts, v5Servers) + api.WriteAlertsObj(w, r, http.StatusOK, alerts, serverList) api.WriteResp(w, r, servers) return } diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go index d1902b91f8..874fd9f8b3 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go @@ -725,16 +725,17 @@ func GetReadAssigned(w http.ResponseWriter, r *http.Request) { return } + // Based on version we load Delivery Service Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - v5Servers := make([]tc.DSServerV5, len(servers)) + serverList := make([]tc.DSServerV5, len(servers)) - for i, v1 := range servers { - r := time.Unix(v1.LastUpdated.Unix(), 0) - v5Servers[i].LastUpdated = &r + for i, dss := range servers { + r := time.Unix(dss.LastUpdated.Unix(), 0) + serverList[i].LastUpdated = &r } - api.WriteAlertsObj(w, r, http.StatusOK, alerts, v5Servers) + api.WriteAlertsObj(w, r, http.StatusOK, alerts, serverList) return } From 7886d3ac2316752fe270f2c55425de39eb66438f Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Fri, 21 Jul 2023 22:40:24 +0530 Subject: [PATCH 07/15] sample response time updated --- docs/source/api/v5/deliveryservices_id_servers.rst | 2 +- docs/source/api/v5/deliveryservices_id_servers_eligible.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/api/v5/deliveryservices_id_servers.rst b/docs/source/api/v5/deliveryservices_id_servers.rst index ba358205da..b0008360ec 100644 --- a/docs/source/api/v5/deliveryservices_id_servers.rst +++ b/docs/source/api/v5/deliveryservices_id_servers.rst @@ -125,7 +125,7 @@ Response Structure "iloIpNetmask": "", "iloPassword": "", "iloUsername": "", - "lastUpdated": "2018-11-14 21:08:44+00", + "lastUpdated": "2018-11-14T15:18:14.952814+05:30", "mgmtIpAddress": "", "mgmtIpGateway": "", "mgmtIpNetmask": "", diff --git a/docs/source/api/v5/deliveryservices_id_servers_eligible.rst b/docs/source/api/v5/deliveryservices_id_servers_eligible.rst index 5aecd30450..bd9af9f19c 100644 --- a/docs/source/api/v5/deliveryservices_id_servers_eligible.rst +++ b/docs/source/api/v5/deliveryservices_id_servers_eligible.rst @@ -121,7 +121,7 @@ Response Structure "iloIpNetmask": "", "iloPassword": "", "iloUsername": "", - "lastUpdated": "2018-10-30 16:01:12+00", + "lastUpdated": "2018-10-30T15:18:14.952814+05:30", "mgmtIpAddress": "", "mgmtIpGateway": "", "mgmtIpNetmask": "", From 5e48620ac3cb5b65227b89a0722f309fc68722df Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Fri, 21 Jul 2023 22:41:16 +0530 Subject: [PATCH 08/15] minor version typo fixed to major version for api5 --- lib/go-tc/deliveryservice_servers.go | 14 ++++++++++++-- lib/go-tc/federation_resolver.go | 8 ++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index a0b6287fe7..1b75ef2eb2 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -171,7 +171,7 @@ type DSServerBaseV4 struct { // DSServerBaseV5 contains the base information for a Delivery Service Server associated with APIv5. type DSServerBaseV5 = DSServerBaseV50 -// DSServerBaseV50 contains the base information for a Delivery Service Server for the latest minor version associated with APIv50. +// DSServerBaseV50 contains the base information for a Delivery Service Server for the latest major version associated with APIv50. type DSServerBaseV50 struct { Cachegroup *string `json:"cachegroup" db:"cachegroup"` CachegroupID *int `json:"cachegroupId" db:"cachegroup_id"` @@ -224,7 +224,7 @@ type DSServer struct { // DSServerV5 contains information of Delivery Service Server associated with APIv5. type DSServerV5 = DSServerV50 -// DSServerV50 contains information for a Delivery Service Server for the latest minor version associated with APIv50. +// DSServerV50 contains information for a Delivery Service Server for the latest major version associated with APIv50. type DSServerV50 struct { DSServerBaseV50 ServerInterfaces *[]ServerInterfaceInfo `json:"interfaces" db:"interfaces"` @@ -349,3 +349,13 @@ func (baseV4 DSServerBaseV4) ToDSServerBase(routerHostName, routerPort, pDesc *s dsServerBase.RouterPortName = routerPort return dsServerBase } + +func ConvertV4LastupdateToV5(serverList []DSServerV4) []DSServerV5 { + updatedServerList := make([]DSServerV5, len(serverList)) + + for i, server := range serverList { + r := time.Unix(server.LastUpdated.Unix(), 0) + updatedServerList[i].LastUpdated = &r + } + return updatedServerList +} diff --git a/lib/go-tc/federation_resolver.go b/lib/go-tc/federation_resolver.go index 2e2f74be06..d359cf8488 100644 --- a/lib/go-tc/federation_resolver.go +++ b/lib/go-tc/federation_resolver.go @@ -51,7 +51,7 @@ type FederationResolver struct { TypeID *uint `json:"typeId,omitempty" db:"type"` } -// FederationResolverV5 - is an alias for the Federal Resolver struct response used for the latest minor version associated with APIv5. +// FederationResolverV5 - is an alias for the Federal Resolver struct response used for the latest major version associated with APIv5. type FederationResolverV5 = FederationResolverV50 // FederationResolverV50 - is used for RFC3339 format timestamp in FederationResolver which represents a resolver record for a CDN Federation for APIv50. @@ -63,7 +63,7 @@ type FederationResolverV50 struct { TypeID *uint `json:"typeId,omitempty" db:"type"` } -// FederationResolversResponseV5 - an alias for the Federation Resolver's struct response used for the latest minor version associated with APIv5. +// FederationResolversResponseV5 - an alias for the Federation Resolver's struct response used for the latest major version associated with APIv5. type FederationResolversResponseV5 = FederationResolversResponseV50 // FederationResolversResponseV50 - GET request to its /federation_resolvers endpoint for APIv50. @@ -72,7 +72,7 @@ type FederationResolversResponseV50 struct { Response []FederationResolverV5 `json:"response"` } -// FederationResolverResponseV5 - represents struct response used for the latest minor version associated with APIv5. +// FederationResolverResponseV5 - represents struct response used for the latest major version associated with APIv5. type FederationResolverResponseV5 = FederationResolverResponseV50 // FederationResolverResponseV50 - POST request to its /federation_resolvers endpoint APIv50. @@ -104,7 +104,7 @@ func (fr *FederationResolver) Validate(tx *sql.Tx) error { } // UpgradeToFederationResolverV5 upgrades an APIv4 Federal Resolver into an APIv5 Federal Resolver of -// the latest minor version. +// the latest major version APIv5. func UpgradeToFederationResolverV5(fr FederationResolver) *FederationResolverV5 { upgraded := FederationResolverV5{ ID: fr.ID, From ca4dd13272bdb992d794e1cdd33b841369c5fea8 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Fri, 21 Jul 2023 22:43:31 +0530 Subject: [PATCH 09/15] comment added --- lib/go-tc/deliveryservice_servers.go | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index 1b75ef2eb2..39f77e7e35 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -350,6 +350,7 @@ func (baseV4 DSServerBaseV4) ToDSServerBase(routerHostName, routerPort, pDesc *s return dsServerBase } +// ConvertV4LastupdateToV5 convert DSServerV4 lastUpdated time format to RFC3339 for DSServerV5 func ConvertV4LastupdateToV5(serverList []DSServerV4) []DSServerV5 { updatedServerList := make([]DSServerV5, len(serverList)) From e6480f89d5137e6199cc4ce28d49cae83974fde9 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Fri, 21 Jul 2023 22:43:56 +0530 Subject: [PATCH 10/15] using common function --- .../traffic_ops_golang/deliveryservice/eligible.go | 12 +++--------- .../deliveryservice/servers/servers.go | 10 +++------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go index e231b82536..cc2eac81dd 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go @@ -25,7 +25,6 @@ import ( "fmt" "net/http" "strings" - "time" "github.com/apache/trafficcontrol/lib/go-tc" "github.com/apache/trafficcontrol/lib/go-util" @@ -103,15 +102,10 @@ func GetServersEligible(w http.ResponseWriter, r *http.Request) { // Based on version we load Delivery Service Eligible Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - serverList := make([]tc.DSServerV5, len(servers)) + // Convert lastupdate time format to RFC3339 of DSServerV4 to DSServerV5 + newServerList := tc.ConvertV4LastupdateToV5(servers) - for i, dss := range servers { - r := time.Unix(dss.LastUpdated.Unix(), 0) - serverList[i].LastUpdated = &r - } - - api.WriteAlertsObj(w, r, http.StatusOK, alerts, serverList) - api.WriteResp(w, r, servers) + api.WriteAlertsObj(w, r, http.StatusOK, alerts, newServerList) return } diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go index 874fd9f8b3..0f0908fd1d 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go @@ -728,14 +728,10 @@ func GetReadAssigned(w http.ResponseWriter, r *http.Request) { // Based on version we load Delivery Service Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - serverList := make([]tc.DSServerV5, len(servers)) + // Convert lastupdate time format to RFC3339 of DSServerV4 to DSServerV5 + newServerList := tc.ConvertV4LastupdateToV5(servers) - for i, dss := range servers { - r := time.Unix(dss.LastUpdated.Unix(), 0) - serverList[i].LastUpdated = &r - } - - api.WriteAlertsObj(w, r, http.StatusOK, alerts, serverList) + api.WriteAlertsObj(w, r, http.StatusOK, alerts, newServerList) return } From 2d83c5018ad1260351ed44b18f062da236b96e17 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Thu, 27 Jul 2023 22:25:01 +0530 Subject: [PATCH 11/15] comments addressed --- lib/go-tc/deliveryservice_servers.go | 63 ++++++++++++++----- lib/go-tc/federation_resolver.go | 8 +-- .../deliveryservice/eligible.go | 7 +-- .../deliveryservice/servers/servers.go | 3 +- 4 files changed, 54 insertions(+), 27 deletions(-) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index 39f77e7e35..d4a8c2404e 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -169,10 +169,7 @@ type DSServerBaseV4 struct { } // DSServerBaseV5 contains the base information for a Delivery Service Server associated with APIv5. -type DSServerBaseV5 = DSServerBaseV50 - -// DSServerBaseV50 contains the base information for a Delivery Service Server for the latest major version associated with APIv50. -type DSServerBaseV50 struct { +type DSServerBaseV5 struct { Cachegroup *string `json:"cachegroup" db:"cachegroup"` CachegroupID *int `json:"cachegroupId" db:"cachegroup_id"` CDNID *int `json:"cdnId" db:"cdn_id"` @@ -221,15 +218,6 @@ type DSServer struct { ServerInterfaces *[]ServerInterfaceInfo `json:"interfaces" db:"interfaces"` } -// DSServerV5 contains information of Delivery Service Server associated with APIv5. -type DSServerV5 = DSServerV50 - -// DSServerV50 contains information for a Delivery Service Server for the latest major version associated with APIv50. -type DSServerV50 struct { - DSServerBaseV50 - ServerInterfaces *[]ServerInterfaceInfo `json:"interfaces" db:"interfaces"` -} - // DSServerResponseV30 is the type of a response from Traffic Ops to a request // for servers assigned to a Delivery Service - in API version 3.0. type DSServerResponseV30 struct { @@ -261,7 +249,16 @@ type DSServerResponseV50 struct { Alerts } -// DSServerResponseV5 is the response from Traffic Ops to a request for servers assigned to a Delivery Service - in APIv5. +// DSServerV5 is an alias for the latest minor version of the major version 5. +type DSServerV5 = DSServerV50 + +// DSServerV50 contains information for a Delivery Service Server. +type DSServerV50 struct { + DSServerBaseV5 + ServerInterfaces *[]ServerInterfaceInfo `json:"interfaces" db:"interfaces"` +} + +// DSServerResponseV5 is an alias for the latest minor version of the major version 5. type DSServerResponseV5 = DSServerResponseV50 // ToDSServerBaseV4 upgrades the DSServerBase to the structure used by the @@ -350,13 +347,47 @@ func (baseV4 DSServerBaseV4) ToDSServerBase(routerHostName, routerPort, pDesc *s return dsServerBase } -// ConvertV4LastupdateToV5 convert DSServerV4 lastUpdated time format to RFC3339 for DSServerV5 -func ConvertV4LastupdateToV5(serverList []DSServerV4) []DSServerV5 { +// ToDSServerV5 convert DSServerV4 lastUpdated time format to RFC3339 for DSServerV5 +// and also assign V4 values to V5 +func ToDSServerV5(serverList []DSServerV4) []DSServerV5 { updatedServerList := make([]DSServerV5, len(serverList)) for i, server := range serverList { r := time.Unix(server.LastUpdated.Unix(), 0) updatedServerList[i].LastUpdated = &r + updatedServerList[i].Cachegroup = server.Cachegroup + updatedServerList[i].CachegroupID = server.CachegroupID + updatedServerList[i].CDNID = server.CDNID + updatedServerList[i].CDNName = server.CDNName + updatedServerList[i].DeliveryServices = server.DeliveryServices + updatedServerList[i].DomainName = server.DomainName + updatedServerList[i].FQDN = server.FQDN + updatedServerList[i].FqdnTime = server.FqdnTime + updatedServerList[i].GUID = server.GUID + updatedServerList[i].HostName = server.HostName + updatedServerList[i].HTTPSPort = server.HTTPSPort + updatedServerList[i].ID = server.ID + updatedServerList[i].ILOIPAddress = server.ILOIPAddress + updatedServerList[i].ILOIPGateway = server.ILOIPGateway + updatedServerList[i].ILOIPNetmask = server.ILOIPNetmask + updatedServerList[i].ILOPassword = server.ILOPassword + updatedServerList[i].ILOUsername = server.ILOUsername + updatedServerList[i].MgmtIPAddress = server.MgmtIPAddress + updatedServerList[i].MgmtIPGateway = server.MgmtIPGateway + updatedServerList[i].MgmtIPNetmask = server.MgmtIPNetmask + updatedServerList[i].OfflineReason = server.OfflineReason + updatedServerList[i].PhysLocation = server.PhysLocation + updatedServerList[i].PhysLocationID = server.PhysLocationID + updatedServerList[i].ProfileNames = server.ProfileNames + updatedServerList[i].Rack = server.Rack + updatedServerList[i].Status = server.Status + updatedServerList[i].StatusID = server.StatusID + updatedServerList[i].TCPPort = server.TCPPort + updatedServerList[i].Type = server.Type + updatedServerList[i].TypeID = server.TypeID + updatedServerList[i].UpdPending = server.UpdPending + updatedServerList[i].ServerCapabilities = server.ServerCapabilities + updatedServerList[i].DeliveryServiceCapabilities = server.DeliveryServiceCapabilities } return updatedServerList } diff --git a/lib/go-tc/federation_resolver.go b/lib/go-tc/federation_resolver.go index d359cf8488..2e2f74be06 100644 --- a/lib/go-tc/federation_resolver.go +++ b/lib/go-tc/federation_resolver.go @@ -51,7 +51,7 @@ type FederationResolver struct { TypeID *uint `json:"typeId,omitempty" db:"type"` } -// FederationResolverV5 - is an alias for the Federal Resolver struct response used for the latest major version associated with APIv5. +// FederationResolverV5 - is an alias for the Federal Resolver struct response used for the latest minor version associated with APIv5. type FederationResolverV5 = FederationResolverV50 // FederationResolverV50 - is used for RFC3339 format timestamp in FederationResolver which represents a resolver record for a CDN Federation for APIv50. @@ -63,7 +63,7 @@ type FederationResolverV50 struct { TypeID *uint `json:"typeId,omitempty" db:"type"` } -// FederationResolversResponseV5 - an alias for the Federation Resolver's struct response used for the latest major version associated with APIv5. +// FederationResolversResponseV5 - an alias for the Federation Resolver's struct response used for the latest minor version associated with APIv5. type FederationResolversResponseV5 = FederationResolversResponseV50 // FederationResolversResponseV50 - GET request to its /federation_resolvers endpoint for APIv50. @@ -72,7 +72,7 @@ type FederationResolversResponseV50 struct { Response []FederationResolverV5 `json:"response"` } -// FederationResolverResponseV5 - represents struct response used for the latest major version associated with APIv5. +// FederationResolverResponseV5 - represents struct response used for the latest minor version associated with APIv5. type FederationResolverResponseV5 = FederationResolverResponseV50 // FederationResolverResponseV50 - POST request to its /federation_resolvers endpoint APIv50. @@ -104,7 +104,7 @@ func (fr *FederationResolver) Validate(tx *sql.Tx) error { } // UpgradeToFederationResolverV5 upgrades an APIv4 Federal Resolver into an APIv5 Federal Resolver of -// the latest major version APIv5. +// the latest minor version. func UpgradeToFederationResolverV5(fr FederationResolver) *FederationResolverV5 { upgraded := FederationResolverV5{ ID: fr.ID, diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go index cc2eac81dd..67894fdd8c 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go @@ -42,8 +42,6 @@ func GetServersEligible(w http.ResponseWriter, r *http.Request) { } defer inf.Close() - alerts := tc.Alerts{} - dsTenantID, ok, err := getDSTenantIDByID(inf.Tx.Tx, inf.IntParams["id"]) if err != nil { api.HandleErr(w, r, inf.Tx.Tx, http.StatusInternalServerError, nil, errors.New("checking tenant: "+err.Error())) @@ -102,10 +100,9 @@ func GetServersEligible(w http.ResponseWriter, r *http.Request) { // Based on version we load Delivery Service Eligible Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - // Convert lastupdate time format to RFC3339 of DSServerV4 to DSServerV5 - newServerList := tc.ConvertV4LastupdateToV5(servers) + newServerList := tc.ToDSServerV5(servers) - api.WriteAlertsObj(w, r, http.StatusOK, alerts, newServerList) + api.WriteResp(w, r, newServerList) return } diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go index 0f0908fd1d..e9babcdfb0 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go @@ -728,8 +728,7 @@ func GetReadAssigned(w http.ResponseWriter, r *http.Request) { // Based on version we load Delivery Service Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - // Convert lastupdate time format to RFC3339 of DSServerV4 to DSServerV5 - newServerList := tc.ConvertV4LastupdateToV5(servers) + newServerList := tc.ToDSServerV5(servers) api.WriteAlertsObj(w, r, http.StatusOK, alerts, newServerList) return From d41973a70f68583f558036b56b45d55ba24c4952 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Fri, 28 Jul 2023 15:34:36 +0530 Subject: [PATCH 12/15] comment addressed --- lib/go-tc/deliveryservice_servers.go | 93 ++++++++++--------- .../deliveryservice/eligible.go | 6 +- .../deliveryservice/servers/servers.go | 6 +- 3 files changed, 57 insertions(+), 48 deletions(-) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index d4a8c2404e..a649edd7ff 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -243,24 +243,24 @@ type DSServerResponseV40 struct { // API version 4. type DSServerResponseV4 = DSServerResponseV40 -// DSServerResponseV50 is response from Traffic Ops to a request for servers assigned to a Delivery Service - in the latest minor version APIv50. -type DSServerResponseV50 struct { - Response []DSServerV50 `json:"response"` - Alerts -} - // DSServerV5 is an alias for the latest minor version of the major version 5. type DSServerV5 = DSServerV50 // DSServerV50 contains information for a Delivery Service Server. type DSServerV50 struct { DSServerBaseV5 - ServerInterfaces *[]ServerInterfaceInfo `json:"interfaces" db:"interfaces"` + ServerInterfaces *[]ServerInterfaceInfoV40 `json:"interfaces" db:"interfaces"` } // DSServerResponseV5 is an alias for the latest minor version of the major version 5. type DSServerResponseV5 = DSServerResponseV50 +// DSServerResponseV50 is response from Traffic Ops to a request for servers assigned to a Delivery Service - in the latest minor version APIv50. +type DSServerResponseV50 struct { + Response []DSServerV50 `json:"response"` + Alerts +} + // ToDSServerBaseV4 upgrades the DSServerBase to the structure used by the // latest minor version of version 4 of Traffic Ops's API. func (oldBase DSServerBase) ToDSServerBaseV4() DSServerBaseV4 { @@ -349,45 +349,46 @@ func (baseV4 DSServerBaseV4) ToDSServerBase(routerHostName, routerPort, pDesc *s // ToDSServerV5 convert DSServerV4 lastUpdated time format to RFC3339 for DSServerV5 // and also assign V4 values to V5 -func ToDSServerV5(serverList []DSServerV4) []DSServerV5 { - updatedServerList := make([]DSServerV5, len(serverList)) +func (server DSServerV4) ToDSServerV5() DSServerV5 { + r := time.Unix(server.LastUpdated.Unix(), 0) - for i, server := range serverList { - r := time.Unix(server.LastUpdated.Unix(), 0) - updatedServerList[i].LastUpdated = &r - updatedServerList[i].Cachegroup = server.Cachegroup - updatedServerList[i].CachegroupID = server.CachegroupID - updatedServerList[i].CDNID = server.CDNID - updatedServerList[i].CDNName = server.CDNName - updatedServerList[i].DeliveryServices = server.DeliveryServices - updatedServerList[i].DomainName = server.DomainName - updatedServerList[i].FQDN = server.FQDN - updatedServerList[i].FqdnTime = server.FqdnTime - updatedServerList[i].GUID = server.GUID - updatedServerList[i].HostName = server.HostName - updatedServerList[i].HTTPSPort = server.HTTPSPort - updatedServerList[i].ID = server.ID - updatedServerList[i].ILOIPAddress = server.ILOIPAddress - updatedServerList[i].ILOIPGateway = server.ILOIPGateway - updatedServerList[i].ILOIPNetmask = server.ILOIPNetmask - updatedServerList[i].ILOPassword = server.ILOPassword - updatedServerList[i].ILOUsername = server.ILOUsername - updatedServerList[i].MgmtIPAddress = server.MgmtIPAddress - updatedServerList[i].MgmtIPGateway = server.MgmtIPGateway - updatedServerList[i].MgmtIPNetmask = server.MgmtIPNetmask - updatedServerList[i].OfflineReason = server.OfflineReason - updatedServerList[i].PhysLocation = server.PhysLocation - updatedServerList[i].PhysLocationID = server.PhysLocationID - updatedServerList[i].ProfileNames = server.ProfileNames - updatedServerList[i].Rack = server.Rack - updatedServerList[i].Status = server.Status - updatedServerList[i].StatusID = server.StatusID - updatedServerList[i].TCPPort = server.TCPPort - updatedServerList[i].Type = server.Type - updatedServerList[i].TypeID = server.TypeID - updatedServerList[i].UpdPending = server.UpdPending - updatedServerList[i].ServerCapabilities = server.ServerCapabilities - updatedServerList[i].DeliveryServiceCapabilities = server.DeliveryServiceCapabilities + return DSServerV5{ + DSServerBaseV5: DSServerBaseV5{ + LastUpdated: &r, + Cachegroup: server.Cachegroup, + CachegroupID: server.CachegroupID, + CDNID: server.CDNID, + CDNName: server.CDNName, + DeliveryServices: server.DeliveryServices, + DomainName: server.DomainName, + FQDN: server.FQDN, + FqdnTime: server.FqdnTime, + GUID: server.GUID, + HostName: server.HostName, + HTTPSPort: server.HTTPSPort, + ID: server.ID, + ILOIPAddress: server.ILOIPAddress, + ILOIPGateway: server.ILOIPGateway, + ILOIPNetmask: server.ILOIPNetmask, + ILOPassword: server.ILOPassword, + ILOUsername: server.ILOUsername, + MgmtIPAddress: server.MgmtIPAddress, + MgmtIPGateway: server.MgmtIPGateway, + MgmtIPNetmask: server.MgmtIPNetmask, + OfflineReason: server.OfflineReason, + PhysLocation: server.PhysLocation, + PhysLocationID: server.PhysLocationID, + ProfileNames: server.ProfileNames, + Rack: server.Rack, + Status: server.Status, + StatusID: server.StatusID, + TCPPort: server.TCPPort, + Type: server.Type, + TypeID: server.TypeID, + UpdPending: server.UpdPending, + ServerCapabilities: server.ServerCapabilities, + DeliveryServiceCapabilities: server.DeliveryServiceCapabilities, + }, + ServerInterfaces: server.ServerInterfaces, } - return updatedServerList } diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go index 67894fdd8c..7f06667a46 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/eligible.go @@ -100,7 +100,11 @@ func GetServersEligible(w http.ResponseWriter, r *http.Request) { // Based on version we load Delivery Service Eligible Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - newServerList := tc.ToDSServerV5(servers) + newServerList := make([]tc.DSServerV5, len(servers)) + + for i, server := range servers { + newServerList[i] = server.ToDSServerV5() + } api.WriteResp(w, r, newServerList) return diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go index e9babcdfb0..cf518786c6 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go @@ -728,7 +728,11 @@ func GetReadAssigned(w http.ResponseWriter, r *http.Request) { // Based on version we load Delivery Service Server - for version 5 and above we use DSServerV5 if inf.Version.GreaterThanOrEqualTo(&api.Version{Major: 5, Minor: 0}) { - newServerList := tc.ToDSServerV5(servers) + newServerList := make([]tc.DSServerV5, len(servers)) + + for i, server := range servers { + newServerList[i] = server.ToDSServerV5() + } api.WriteAlertsObj(w, r, http.StatusOK, alerts, newServerList) return From ba12ae14b3266df8da273f54c7dfe55f77be9a9b Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Fri, 28 Jul 2023 15:51:04 +0530 Subject: [PATCH 13/15] test type changed --- traffic_ops/v5-client/deliveryserviceserver.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/traffic_ops/v5-client/deliveryserviceserver.go b/traffic_ops/v5-client/deliveryserviceserver.go index 225870b42a..5f269c872f 100644 --- a/traffic_ops/v5-client/deliveryserviceserver.go +++ b/traffic_ops/v5-client/deliveryserviceserver.go @@ -59,9 +59,9 @@ func (to *Session) AssignServersToDeliveryService(servers []string, xmlID string } // GetServersByDeliveryService gets the servers that are assigned to the delivery service with the given ID. -func (to *Session) GetServersByDeliveryService(id int, opts RequestOptions) (tc.DSServerResponseV4, toclientlib.ReqInf, error) { +func (to *Session) GetServersByDeliveryService(id int, opts RequestOptions) (tc.DSServerResponseV5, toclientlib.ReqInf, error) { route := fmt.Sprintf(apiDeliveryServicesServers, strconv.Itoa(id)) - resp := tc.DSServerResponseV4{} + resp := tc.DSServerResponseV5{} reqInf, err := to.get(route, opts, &resp) return resp, reqInf, err } From 570d336805b51267525189c5192bffe4238d63b5 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Mon, 31 Jul 2023 13:29:02 +0530 Subject: [PATCH 14/15] server basev5 is now remoed --- lib/go-tc/deliveryservice_servers.go | 48 ++++------------------------ 1 file changed, 6 insertions(+), 42 deletions(-) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index a649edd7ff..b846cabffb 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -168,44 +168,6 @@ type DSServerBaseV4 struct { DeliveryServiceCapabilities []string `json:"-" db:"deliveryservice_capabilities"` } -// DSServerBaseV5 contains the base information for a Delivery Service Server associated with APIv5. -type DSServerBaseV5 struct { - Cachegroup *string `json:"cachegroup" db:"cachegroup"` - CachegroupID *int `json:"cachegroupId" db:"cachegroup_id"` - CDNID *int `json:"cdnId" db:"cdn_id"` - CDNName *string `json:"cdnName" db:"cdn_name"` - DeliveryServices *map[string][]string `json:"deliveryServices,omitempty"` - DomainName *string `json:"domainName" db:"domain_name"` - FQDN *string `json:"fqdn,omitempty"` - FqdnTime time.Time `json:"-"` - GUID *string `json:"guid" db:"guid"` - HostName *string `json:"hostName" db:"host_name"` - HTTPSPort *int `json:"httpsPort" db:"https_port"` - ID *int `json:"id" db:"id"` - ILOIPAddress *string `json:"iloIpAddress" db:"ilo_ip_address"` - ILOIPGateway *string `json:"iloIpGateway" db:"ilo_ip_gateway"` - ILOIPNetmask *string `json:"iloIpNetmask" db:"ilo_ip_netmask"` - ILOPassword *string `json:"iloPassword" db:"ilo_password"` - ILOUsername *string `json:"iloUsername" db:"ilo_username"` - LastUpdated *time.Time `json:"lastUpdated" db:"last_updated"` - MgmtIPAddress *string `json:"mgmtIpAddress" db:"mgmt_ip_address"` - MgmtIPGateway *string `json:"mgmtIpGateway" db:"mgmt_ip_gateway"` - MgmtIPNetmask *string `json:"mgmtIpNetmask" db:"mgmt_ip_netmask"` - OfflineReason *string `json:"offlineReason" db:"offline_reason"` - PhysLocation *string `json:"physLocation" db:"phys_location"` - PhysLocationID *int `json:"physLocationId" db:"phys_location_id"` - ProfileNames []string `json:"profileNames" db:"profile_name"` - Rack *string `json:"rack" db:"rack"` - Status *string `json:"status" db:"status"` - StatusID *int `json:"statusId" db:"status_id"` - TCPPort *int `json:"tcpPort" db:"tcp_port"` - Type string `json:"type" db:"server_type"` - TypeID *int `json:"typeId" db:"server_type_id"` - UpdPending *bool `json:"updPending" db:"upd_pending"` - ServerCapabilities []string `json:"-" db:"server_capabilities"` - DeliveryServiceCapabilities []string `json:"-" db:"deliveryservice_capabilities"` -} - // DSServerV11 contains the legacy format for a Delivery Service Server. type DSServerV11 struct { DSServerBase @@ -248,7 +210,9 @@ type DSServerV5 = DSServerV50 // DSServerV50 contains information for a Delivery Service Server. type DSServerV50 struct { - DSServerBaseV5 + DSServerBase + LastUpdated *time.Time `json:"lastUpdated" db:"last_updated"` + ProfileNames []string `json:"profileNames" db:"profile_name"` ServerInterfaces *[]ServerInterfaceInfoV40 `json:"interfaces" db:"interfaces"` } @@ -353,8 +317,7 @@ func (server DSServerV4) ToDSServerV5() DSServerV5 { r := time.Unix(server.LastUpdated.Unix(), 0) return DSServerV5{ - DSServerBaseV5: DSServerBaseV5{ - LastUpdated: &r, + DSServerBase: DSServerBase{ Cachegroup: server.Cachegroup, CachegroupID: server.CachegroupID, CDNID: server.CDNID, @@ -378,7 +341,6 @@ func (server DSServerV4) ToDSServerV5() DSServerV5 { OfflineReason: server.OfflineReason, PhysLocation: server.PhysLocation, PhysLocationID: server.PhysLocationID, - ProfileNames: server.ProfileNames, Rack: server.Rack, Status: server.Status, StatusID: server.StatusID, @@ -389,6 +351,8 @@ func (server DSServerV4) ToDSServerV5() DSServerV5 { ServerCapabilities: server.ServerCapabilities, DeliveryServiceCapabilities: server.DeliveryServiceCapabilities, }, + LastUpdated: &r, + ProfileNames: server.ProfileNames, ServerInterfaces: server.ServerInterfaces, } } From 5191286ebf20d8571f4fe8c82aa456049eab06f0 Mon Sep 17 00:00:00 2001 From: gbkannan89 <111871677+gbkannan89@users.noreply.github.com> Date: Mon, 31 Jul 2023 21:15:15 +0530 Subject: [PATCH 15/15] comment addressed --- lib/go-tc/deliveryservice_servers.go | 79 ++++++++++++++-------------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/lib/go-tc/deliveryservice_servers.go b/lib/go-tc/deliveryservice_servers.go index b846cabffb..55894fd063 100644 --- a/lib/go-tc/deliveryservice_servers.go +++ b/lib/go-tc/deliveryservice_servers.go @@ -210,10 +210,10 @@ type DSServerV5 = DSServerV50 // DSServerV50 contains information for a Delivery Service Server. type DSServerV50 struct { - DSServerBase - LastUpdated *time.Time `json:"lastUpdated" db:"last_updated"` - ProfileNames []string `json:"profileNames" db:"profile_name"` - ServerInterfaces *[]ServerInterfaceInfoV40 `json:"interfaces" db:"interfaces"` + ServerV4 // Please replace me when ServerV50 is born + LastUpdated *time.Time `json:"lastUpdated" db:"last_updated"` + ServerCapabilities []string `json:"-" db:"server_capabilities"` + DeliveryServiceCapabilities []string `json:"-" db:"deliveryservice_capabilities"` } // DSServerResponseV5 is an alias for the latest minor version of the major version 5. @@ -317,42 +317,41 @@ func (server DSServerV4) ToDSServerV5() DSServerV5 { r := time.Unix(server.LastUpdated.Unix(), 0) return DSServerV5{ - DSServerBase: DSServerBase{ - Cachegroup: server.Cachegroup, - CachegroupID: server.CachegroupID, - CDNID: server.CDNID, - CDNName: server.CDNName, - DeliveryServices: server.DeliveryServices, - DomainName: server.DomainName, - FQDN: server.FQDN, - FqdnTime: server.FqdnTime, - GUID: server.GUID, - HostName: server.HostName, - HTTPSPort: server.HTTPSPort, - ID: server.ID, - ILOIPAddress: server.ILOIPAddress, - ILOIPGateway: server.ILOIPGateway, - ILOIPNetmask: server.ILOIPNetmask, - ILOPassword: server.ILOPassword, - ILOUsername: server.ILOUsername, - MgmtIPAddress: server.MgmtIPAddress, - MgmtIPGateway: server.MgmtIPGateway, - MgmtIPNetmask: server.MgmtIPNetmask, - OfflineReason: server.OfflineReason, - PhysLocation: server.PhysLocation, - PhysLocationID: server.PhysLocationID, - Rack: server.Rack, - Status: server.Status, - StatusID: server.StatusID, - TCPPort: server.TCPPort, - Type: server.Type, - TypeID: server.TypeID, - UpdPending: server.UpdPending, - ServerCapabilities: server.ServerCapabilities, - DeliveryServiceCapabilities: server.DeliveryServiceCapabilities, + ServerV4: ServerV4{ + Cachegroup: server.Cachegroup, + CachegroupID: server.CachegroupID, + CDNID: server.CDNID, + CDNName: server.CDNName, + DeliveryServices: server.DeliveryServices, + DomainName: server.DomainName, + FQDN: server.FQDN, + FqdnTime: server.FqdnTime, + GUID: server.GUID, + HostName: server.HostName, + HTTPSPort: server.HTTPSPort, + ID: server.ID, + ILOIPAddress: server.ILOIPAddress, + ILOIPGateway: server.ILOIPGateway, + ILOIPNetmask: server.ILOIPNetmask, + ILOPassword: server.ILOPassword, + ILOUsername: server.ILOUsername, + MgmtIPAddress: server.MgmtIPAddress, + MgmtIPGateway: server.MgmtIPGateway, + MgmtIPNetmask: server.MgmtIPNetmask, + OfflineReason: server.OfflineReason, + PhysLocation: server.PhysLocation, + PhysLocationID: server.PhysLocationID, + Rack: server.Rack, + Status: server.Status, + StatusID: server.StatusID, + TCPPort: server.TCPPort, + Type: server.Type, + TypeID: server.TypeID, + UpdPending: server.UpdPending, + Interfaces: *server.ServerInterfaces, }, - LastUpdated: &r, - ProfileNames: server.ProfileNames, - ServerInterfaces: server.ServerInterfaces, + LastUpdated: &r, + ServerCapabilities: server.ServerCapabilities, + DeliveryServiceCapabilities: server.DeliveryServiceCapabilities, } }