Blame internal/client/blueprints.go

Packit Service 4d2de5
// Package client - blueprints contains functions for the blueprint API
Packit Service 4d2de5
// Copyright (C) 2020 by Red Hat, Inc.
Packit Service 4d2de5
package client
Packit Service 4d2de5
Packit Service 4d2de5
import (
Packit Service 4d2de5
	"encoding/json"
Packit Service 4d2de5
	"fmt"
Packit Service 4d2de5
	"net/http"
Packit Service 4d2de5
	"strings"
Packit Service 4d2de5
Packit Service 4d2de5
	"github.com/osbuild/osbuild-composer/internal/weldr"
Packit Service 4d2de5
)
Packit Service 4d2de5
Packit Service 4d2de5
// PostTOMLBlueprintV0 sends a TOML blueprint string to the API
Packit Service 4d2de5
// and returns an APIResponse
Packit Service 4d2de5
func PostTOMLBlueprintV0(socket *http.Client, blueprint string) (*APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := PostTOML(socket, "/api/v0/blueprints/new", blueprint)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// PostTOMLWorkspaceV0 sends a TOML blueprint string to the API
Packit Service 4d2de5
// and returns an APIResponse
Packit Service 4d2de5
func PostTOMLWorkspaceV0(socket *http.Client, blueprint string) (*APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := PostTOML(socket, "/api/v0/blueprints/workspace", blueprint)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// PostJSONBlueprintV0 sends a JSON blueprint string to the API
Packit Service 4d2de5
// and returns an APIResponse
Packit Service 4d2de5
func PostJSONBlueprintV0(socket *http.Client, blueprint string) (*APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := PostJSON(socket, "/api/v0/blueprints/new", blueprint)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// PostJSONWorkspaceV0 sends a JSON blueprint string to the API
Packit Service 4d2de5
// and returns an APIResponse
Packit Service 4d2de5
func PostJSONWorkspaceV0(socket *http.Client, blueprint string) (*APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := PostJSON(socket, "/api/v0/blueprints/workspace", blueprint)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// DeleteBlueprintV0 deletes the named blueprint and returns an APIResponse
Packit Service 4d2de5
func DeleteBlueprintV0(socket *http.Client, bpName string) (*APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := DeleteRaw(socket, "/api/v0/blueprints/delete/"+bpName)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// DeleteWorkspaceV0 deletes the named blueprint's workspace and returns an APIResponse
Packit Service 4d2de5
func DeleteWorkspaceV0(socket *http.Client, bpName string) (*APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := DeleteRaw(socket, "/api/v0/blueprints/workspace/"+bpName)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// ListBlueprintsV0 returns a list of blueprint names
Packit Service 4d2de5
func ListBlueprintsV0(socket *http.Client) ([]string, *APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := GetJSONAll(socket, "/api/v0/blueprints/list")
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return nil, resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	var list weldr.BlueprintsListV0
Packit Service 4d2de5
	err = json.Unmarshal(body, &list)
Packit Service 4d2de5
	if err != nil {
Packit Service 4d2de5
		return nil, nil, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return list.Blueprints, nil, nil
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// GetBlueprintInfoTOMLV0 returns the requested blueprint as a TOML string
Packit Service 4d2de5
func GetBlueprintInfoTOMLV0(socket *http.Client, bpName string) (string, *APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/info/"+bpName+"?format=toml")
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return "", resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return string(body), nil, nil
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// GetBlueprintsInfoJSONV0 returns the requested blueprints and their changed state
Packit Service 4d2de5
func GetBlueprintsInfoJSONV0(socket *http.Client, bpName string) (weldr.BlueprintsInfoV0, *APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/info/"+bpName)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsInfoV0{}, resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	var info weldr.BlueprintsInfoV0
Packit Service 4d2de5
	err = json.Unmarshal(body, &info)
Packit Service 4d2de5
	if err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsInfoV0{}, nil, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return info, nil, nil
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// GetBlueprintsChangesV0 returns the changes to the listed blueprints
Packit Service 4d2de5
func GetBlueprintsChangesV0(socket *http.Client, bpNames []string) (weldr.BlueprintsChangesV0, *APIResponse, error) {
Packit Service 4d2de5
	names := strings.Join(bpNames, ",")
Packit Service 4d2de5
	body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/changes/"+names)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsChangesV0{}, resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	var changes weldr.BlueprintsChangesV0
Packit Service 4d2de5
	err = json.Unmarshal(body, &changes)
Packit Service 4d2de5
	if err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsChangesV0{}, nil, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return changes, nil, nil
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// UndoBlueprintChangeV0 reverts a blueprint to a previous commit
Packit Service 4d2de5
func UndoBlueprintChangeV0(socket *http.Client, blueprint, commit string) (*APIResponse, error) {
Packit Service 4d2de5
	request := fmt.Sprintf("/api/v0/blueprints/undo/%s/%s", blueprint, commit)
Packit Service 4d2de5
	body, resp, err := PostRaw(socket, request, "", nil)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// TagBlueprintV0 tags the current blueprint commit as a new revision
Packit Service 4d2de5
func TagBlueprintV0(socket *http.Client, blueprint string) (*APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := PostRaw(socket, "/api/v0/blueprints/tag/"+blueprint, "", nil)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return NewAPIResponse(body)
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// DepsolveBlueprintV0 depsolves the listed blueprint
Packit Service 4d2de5
func DepsolveBlueprintV0(socket *http.Client, blueprint string) (weldr.BlueprintsDepsolveV0, *APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/depsolve/"+blueprint)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsDepsolveV0{}, resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	var deps weldr.BlueprintsDepsolveV0
Packit Service 4d2de5
	err = json.Unmarshal(body, &deps)
Packit Service 4d2de5
	if err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsDepsolveV0{}, nil, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return deps, nil, nil
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
// FreezeBlueprintV0 depsolves the listed blueprint and returns the blueprint with frozen package
Packit Service 4d2de5
// versions
Packit Service 4d2de5
func FreezeBlueprintV0(socket *http.Client, blueprint string) (weldr.BlueprintsFreezeV0, *APIResponse, error) {
Packit Service 4d2de5
	body, resp, err := GetRaw(socket, "GET", "/api/v0/blueprints/freeze/"+blueprint)
Packit Service 4d2de5
	if resp != nil || err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsFreezeV0{}, resp, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	var frozen weldr.BlueprintsFreezeV0
Packit Service 4d2de5
	err = json.Unmarshal(body, &frozen)
Packit Service 4d2de5
	if err != nil {
Packit Service 4d2de5
		return weldr.BlueprintsFreezeV0{}, nil, err
Packit Service 4d2de5
	}
Packit Service 4d2de5
	return frozen, nil, nil
Packit Service 4d2de5
}