// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 package api import "context" // Internal can be used to query endpoints that are intended for // Hashicorp internal-use only. type Internal struct { c *Client } // Internal returns a handle to endpoints that are for internal // Hashicorp usage only. There is not guarantee that these will // be backwards-compatible or supported, so usage of these is // not encouraged. func (c *Client) Internal() *Internal { return &Internal{c} } type AssignServiceManualVIPsRequest struct { Service string ManualVIPs []string } type AssignServiceManualVIPsResponse struct { ServiceFound bool `json:"Found"` UnassignedFrom []PeeredServiceName } type PeeredServiceName struct { ServiceName CompoundServiceName Peer string } func (i *Internal) AssignServiceVirtualIP( ctx context.Context, service string, manualVIPs []string, wo *WriteOptions, ) (*AssignServiceManualVIPsResponse, *QueryMeta, error) { req := i.c.newRequest("PUT", "/v1/internal/service-virtual-ip") req.setWriteOptions(wo) req.ctx = ctx req.obj = AssignServiceManualVIPsRequest{ Service: service, ManualVIPs: manualVIPs, } rtt, resp, err := i.c.doRequest(req) if err != nil { return nil, nil, err } defer closeResponseBody(resp) if err := requireOK(resp); err != nil { return nil, nil, err } qm := &QueryMeta{RequestTime: rtt} parseQueryMeta(resp, qm) var out AssignServiceManualVIPsResponse if err := decodeBody(resp, &out); err != nil { return nil, nil, err } return &out, qm, nil }