/*
 * Tencent is pleased to support the open source community by making Blueking Container Service available. 
 * Copyright (C) 2019 THL A29 Limited, a Tencent company.  All rights reserved. 
 * Licensed under the MIT License (the "License"); you may not use this file except
 * in compliance with the License.  You may obtain a copy of the License at
 * http://opensource.org/licenses/MIT
 * 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 kubedriver

import (
	"github.com/Tencent/bk-bcs/bcs-common/common/types"
	bcsVersion "github.com/Tencent/bk-bcs/bcs-common/common/version"
	"github.com/Tencent/bk-bcs/bcs-k8s/bcs-k8s-driver/kubedriver/options"
	"os"
)

// GetServerInfo returns server info of current driver node
func GetServerInfo(opts *options. KubeDriverServerOptions, clusterID string) types. ServerInfo {
	hostname, _ := os. Hostname()

	var port uint
	var scheme string
	if opts. SecureServerConfigured() {
		scheme = options. HTTPS
		port = opts. SecurePort
	} else {
		scheme = options. HTTP
		port = opts. InsecurePort
	}
	if opts. CustomReportPort ! = 0 {
		port = opts. CustomReportPort
	}

	hostIp := opts. HostIP
	if opts. CustomReportAddress ! = "" {
		hostIp = opts. CustomReportAddress
	}

	return types. ServerInfo{
		IP:           hostIp,
		Port:         port,
		ExternalIp:   opts. ExternalIp,
		ExternalPort: opts. ExternalPort,
		HostName:     hostname,
		Scheme:       scheme,
		Cluster:      clusterID,
		Version:      bcsVersion. GetVersion(),
		Pid:          os. Getpid(),
	}
}
