mirror of
https://github.com/harness/drone.git
synced 2025-05-12 23:20:10 +08:00

* feat: [CDE-241]: Addressing review comment. * feat: [CDE-241]: Addressing review comment. * feat: [CDE-241]: Adding protocol to the gitspace port returned by the IDE and corresponding changes. Fixing gitspace instance's reference instead of value in the orchestrator.
98 lines
3.0 KiB
Go
98 lines
3.0 KiB
Go
// Copyright 2023 Harness, Inc.
|
|
//
|
|
// 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 infrastructure
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/harness/gitness/infraprovider"
|
|
"github.com/harness/gitness/types"
|
|
"github.com/harness/gitness/types/enum"
|
|
)
|
|
|
|
func (i infraProvisioner) Find(
|
|
ctx context.Context,
|
|
infraProviderResource types.InfraProviderResource,
|
|
gitspaceConfig types.GitspaceConfig,
|
|
requiredGitspacePorts []types.GitspacePort,
|
|
) (*types.Infrastructure, error) {
|
|
infraProviderEntity, err := i.getConfigFromResource(ctx, infraProviderResource)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
infraProvider, err := i.getInfraProvider(infraProviderEntity.Type)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var inputParams []types.InfraProviderParameter
|
|
var agentPort = 0
|
|
if infraProvider.ProvisioningType() == enum.InfraProvisioningTypeNew {
|
|
inputParams, err = i.paramsForProvisioningTypeNew(ctx, gitspaceConfig)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// TODO: What if the agent port has deviated from when the last instance was created?
|
|
agentPort = i.config.AgentPort
|
|
} else {
|
|
inputParams, err = i.paramsForProvisioningTypeExisting(ctx, infraProviderResource, infraProvider)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
return infraProvider.Find(ctx, gitspaceConfig.SpaceID, gitspaceConfig.SpacePath,
|
|
gitspaceConfig.Identifier, gitspaceConfig.GitspaceInstance.Identifier,
|
|
agentPort, requiredGitspacePorts, inputParams)
|
|
}
|
|
|
|
func (i infraProvisioner) paramsForProvisioningTypeNew(
|
|
ctx context.Context,
|
|
gitspaceConfig types.GitspaceConfig,
|
|
) ([]types.InfraProviderParameter, error) {
|
|
infraProvisionedLatest, err := i.infraProvisionedStore.FindLatestByGitspaceInstanceID(
|
|
ctx, gitspaceConfig.SpaceID, gitspaceConfig.GitspaceInstance.ID)
|
|
if err != nil {
|
|
return nil, fmt.Errorf(
|
|
"could not find latest infra provisioned entity for instance %d: %w",
|
|
gitspaceConfig.GitspaceInstance.ID, err)
|
|
}
|
|
if infraProvisionedLatest.InputParams == "" {
|
|
return []types.InfraProviderParameter{}, err
|
|
}
|
|
allParams, err := deserializeInfraProviderParams(infraProvisionedLatest.InputParams)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return allParams, nil
|
|
}
|
|
|
|
func (i infraProvisioner) paramsForProvisioningTypeExisting(
|
|
ctx context.Context,
|
|
infraProviderResource types.InfraProviderResource,
|
|
infraProvider infraprovider.InfraProvider,
|
|
) ([]types.InfraProviderParameter, error) {
|
|
allParams, err := i.getAllParamsFromDB(ctx, infraProviderResource, infraProvider)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("could not get all params from DB while finding: %w", err)
|
|
}
|
|
|
|
return allParams, nil
|
|
}
|