type templateData struct {
StackName string `json:"stack_name"` //Only this property is relevant (exported)
- disableRollback string `json:"disable_rollback"`
- environment string `json:"environment"`
- parameters string `json:"parameters"`
- template string `json:"template"`
- timeoutMins string `json:"timeout_mins"`
+ disableRollback string
+ environment string
+ parameters string
+ template string
+ timeoutMins string
}
type brokerPOSTResponse struct {
//appsv1beta2 "k8s.io/api/apps/v1beta2"
batchv1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1"
- v1 "k8s.io/api/core/v1"
//extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
//apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
// Check for errors getting the namespace while ignoring errors where the namespace does not exist
// Error message when namespace does not exist: "namespaces "namespace-name" not found"
- if err != nil && strings.Contains(err.Error(), "not found") == false {
+ if err != nil && !strings.Contains(err.Error(), "not found") {
log.Error("Error checking for namespace", log.Fields{
"error": err,
"namespace": namespace,
updatedResourceName, err := pluginImpl.Update(resTempl.FilePath, namespace, k)
if err != nil {
var failed = true
- if createIfDoNotExist && strings.Contains(err.Error(), "not found") == true {
+ if createIfDoNotExist && strings.Contains(err.Error(), "not found") {
updatedResourceName, err = pluginImpl.Create(resTempl.FilePath, namespace, k)
if err == nil {
failed = false
err = pluginImpl.Delete(resource, namespace, k)
if err != nil {
- if strings.Contains(err.Error(), "not found") == false {
+ if !strings.Contains(err.Error(), "not found") {
return pkgerrors.Wrap(err, "Error deleting "+resource.Name)
} else {
log.Warn("Resource already does not exist", log.Fields{
opts.LabelSelector = config.GetConfiguration().KubernetesLabelName + "=" + k.instanceID
})
- factory := dynamicinformer.NewFilteredDynamicSharedInformerFactory(k.GetDynamicClient(), 0, v1.NamespaceAll, labelOptions)
+ factory := dynamicinformer.NewFilteredDynamicSharedInformerFactory(k.GetDynamicClient(), 0, corev1.NamespaceAll, labelOptions)
mapping, err := k.GetMapper().RESTMapping(gvk.GroupKind(), gvk.Version)
if err != nil {
return nil, pkgerrors.Wrap(err, "Preparing mapper based on GVK")
ConfigTag string `json:"config-tag"`
}
-//ConfigResult output for Create, Update and delete
+// ConfigResult output for Create, Update and delete
type ConfigResult struct {
InstanceName string `json:"instance-id"`
DefinitionName string `json:"rb-name"`
ConfigVersion uint `json:"config-version"`
}
-//ConfigRollback input
+// ConfigRollback input
type ConfigRollback struct {
AnyOf struct {
ConfigVersion string `json:"config-version,omitempty"`
} `json:"anyOf"`
}
-//ConfigRollback input
+// ConfigRollback input
type ConfigTag struct {
ConfigVersion uint `json:"config-version"`
ConfigTag string `json:"config-tag"`
}
-//ConfigTagit for Tagging configurations
+// ConfigTagit for Tagging configurations
type ConfigTagit struct {
TagName string `json:"tag-name"`
}
if err == nil {
return ConfigResult{}, pkgerrors.Wrap(err, "Create Error - Config exists")
} else {
- if strings.Contains(err.Error(), "Key doesn't exist") == false {
+ if !strings.Contains(err.Error(), "Key doesn't exist") {
return ConfigResult{}, pkgerrors.Wrap(err, "Create Error")
}
}
instanceID: instanceID,
configName: configName,
}
- cfg, err := cs.getConfig()
+ cfg, _ := cs.getConfig()
cvs := ConfigVersionStore{
instanceID: instanceID,
value, err := db.Etcd.Get(cfgKey)
if err != nil {
- if strings.Contains(err.Error(), "Key doesn't exist") == true {
+ if strings.Contains(err.Error(), "Key doesn't exist") {
// Counter not started yet, 0 is invalid value
return 0, nil
} else {
if err != nil {
return configResourceList{}, pkgerrors.Wrap(err, "Generate final k8s yaml")
}
- for _, tmp := range resTemplates {
- crdList = append(crdList, tmp)
- }
+ crdList = append(crdList, resTemplates...)
crl := configResourceList{
resourceTemplates: crdList,
db.Etcd = testCase.mockdb
db.DBconn = provideMockModelData(testCase.instanceID, testCase.rbName,
testCase.rbVersion, testCase.profileName)
- resolve = func(rbName, rbVersion, profileName, instanceID string, p Config, releaseName string) (configResourceList, error) {
+ resolve = func(_, _, _, _ string, _ Config, _ string) (configResourceList, error) {
return configResourceList{}, nil
}
impl := NewConfigClient()
})
}
}
-
-func main() {
-}
"helm.sh/helm/v3/pkg/release"
)
-// Timeout used when deleting resources with a hook-delete-policy.
-const defaultHookDeleteTimeoutInSeconds = int64(60)
-
// HookClient implements the Helm Hook interface
type HookClient struct {
kubeNameSpace string
continue
}
// Set default delete policy to before-hook-creation
- if h.Hook.DeletePolicies == nil || len(h.Hook.DeletePolicies) == 0 {
+ if len(h.Hook.DeletePolicies) == 0 {
h.Hook.DeletePolicies = []release.HookDeletePolicy{release.HookBeforeHookCreation}
}
if err := hc.deleteHookByPolicy(h, release.HookBeforeHookCreation, k8sClient); err != nil {
return InstanceResponse{}, pkgerrors.New("Unable to find Profile to create instance")
}
- overrideValues, hookTimeoutInfo, err := getOverridesAndHookInfo(i)
+ overrideValues, hookTimeoutInfo, _ := getOverridesAndHookInfo(i)
var generatedId string = ""
var finalId string = ""
if err == nil {
err = v.Delete(context.TODO(), id)
if err == nil {
- newInstanceDb, err := v.GetFull(ctx, newInstance.ID)
+ newInstanceDb, _ := v.GetFull(ctx, newInstance.ID)
oldKey := InstanceKey{
ID: newInstance.ID,
}
return InstanceResponse{}, pkgerrors.New("Unable to find Profile to create instance")
}
- overrideValues, hookTimeoutInfo, err := getOverridesAndHookInfo(i)
+ overrideValues, hookTimeoutInfo, _ := getOverridesAndHookInfo(i)
overrideValues = append(overrideValues, "k8s-rb-instance-id="+id)
}
}
- err = k8sClient.deleteResources(ctx, helm.GetReverseK8sResources(resToDelete), currentInstance.Namespace)
+ k8sClient.deleteResources(ctx, helm.GetReverseK8sResources(resToDelete), currentInstance.Namespace)
configClient := NewConfigClient()
configList, err := configClient.List(id)
return InstanceStatus{}, pkgerrors.Wrap(err, "Unmarshaling Instance Value")
}
- if labels == "" || strings.Contains(strings.ToLower(labels), config.GetConfiguration().KubernetesLabelName) == false {
+ if labels == "" || !strings.Contains(strings.ToLower(labels), config.GetConfiguration().KubernetesLabelName) {
labelValue := config.GetConfiguration().KubernetesLabelName + "=" + id
if labels != "" {
labels = labels + ","
}
generalStatus = append(generalStatus, podsStatus...)
- if profile.ExtraResourceTypes != nil && len(profile.ExtraResourceTypes) > 0 {
+ if len(profile.ExtraResourceTypes) > 0 {
queryClient := NewQueryClient()
labelValue := config.GetConfiguration().KubernetesLabelName + "=" + id
for _, extraType := range profile.ExtraResourceTypes {
return false, err
}
mapper := k8sClient.GetMapper()
- mapping, err := mapper.RESTMapping(schema.GroupKind{
+ mapping, _ := mapper.RESTMapping(schema.GroupKind{
Group: rss.GVK.Group,
Kind: rss.GVK.Kind,
}, rss.GVK.Version)
go func() {
inst.HookProgress = ""
if err := v.runPostDelete(k8sClient, hookClient, &inst, 0, true); err != nil {
- log.Printf(err.Error())
+ log.Print(err.Error())
}
}()
} else {
subscriptionClient := NewInstanceStatusSubClient()
err = subscriptionClient.Cleanup(id)
if err != nil {
- log.Printf(err.Error())
+ log.Print(err.Error())
}
err = db.DBconn.Delete(ctx, v.storeName, key, v.tagInst)
ID: id,
}
log.Printf(" Resolving template for release %s", instance.Request.ReleaseName)
- _, _, hookList, _, err := rb.NewProfileClient().Resolve(instance.Request.RBName, instance.Request.RBVersion, instance.Request.ProfileName, overrideValues, instance.Request.ReleaseName)
+ _, _, hookList, _, _ := rb.NewProfileClient().Resolve(instance.Request.RBName, instance.Request.RBVersion, instance.Request.ProfileName, overrideValues, instance.Request.ReleaseName)
instance.Hooks = hookList
err = db.DBconn.Update(context.TODO(), v.storeName, key, v.tagInst, instance)
if err != nil {
//the instance in DB will be deleted when SO call delete again.
instance.HookProgress = ""
if err := v.runPostDelete(k8sClient, hookClient, &instance, 0, false); err != nil {
- log.Printf(err.Error())
+ log.Print(err.Error())
}
}()
case "POST-DELETE":
go func() {
log.Printf(" The plugin quits during post-delete hook of this instance, continue post-delete hook")
if err := v.runPostDelete(k8sClient, hookClient, &instance, completedHooks, true); err != nil {
- log.Printf(err.Error())
+ log.Print(err.Error())
}
}()
default:
subscriptionClient := NewInstanceStatusSubClient()
err = subscriptionClient.Cleanup(instance.ID)
if err != nil {
- log.Printf(err.Error())
+ log.Print(err.Error())
}
err = db.DBconn.Delete(context.TODO(), v.storeName, key, v.tagInst)
if err != nil {
// HealthCheck verifies if the database is up and running
func (m *MongoStore) HealthCheck() error {
- _, err := decodeBytes(m.db.RunCommand(context.Background(), bson.D{{"serverStatus", 1}}))
+ _, err := decodeBytes(m.db.RunCommand(context.Background(), bson.D{{Key: "serverStatus", Value: 1}}))
if err != nil {
return pkgerrors.Wrap(err, "Error getting server status")
}
//Insert the data and then add the objectID to the masterTable
res, err := c.InsertOne(ctx, bson.D{
- {tag, data},
+ {Key: tag, Value: data},
})
if err != nil {
return pkgerrors.Errorf("Error inserting into database: %s", err.Error())
//Add objectID of created data to masterKey document
//Create masterkey document if it does not exist
- filter := bson.D{{"key", key}}
+ filter := bson.D{{Key: "key", Value: key}}
_, err = decodeBytes(
c.FindOneAndUpdate(
ctx,
filter,
bson.D{
- {"$set", bson.D{
- {tag, res.InsertedID},
+ {Key: "$set", Value: bson.D{
+ {Key: tag, Value: res.InsertedID},
}},
},
options.FindOneAndUpdate().SetUpsert(true).SetReturnDocument(options.After)))
c := getCollection(coll, m)
//Get the masterkey document based on given key
- filter := bson.D{{"key", key}}
+ filter := bson.D{{Key: "key", Value: key}}
keydata, err := decodeBytes(c.FindOne(ctx, filter))
if err != nil {
return pkgerrors.Errorf("Error finding master table: %s", err.Error())
}
//Update the document with new data
- filter = bson.D{{"_id", tagoid}}
+ filter = bson.D{{Key: "_id", Value: tagoid}}
_, err = decodeBytes(
c.FindOneAndUpdate(
ctx,
filter,
bson.D{
- {"$set", bson.D{
- {tag, data},
+ {Key: "$set", Value: bson.D{
+ {Key: tag, Value: data},
}},
},
options.FindOneAndUpdate().SetReturnDocument(options.After)))
c := getCollection(coll, m)
//Get the masterkey document based on given key
- filter := bson.D{{"key", key}}
+ filter := bson.D{{Key: "key", Value: key}}
keydata, err := decodeBytes(c.FindOne(ctx, filter))
if err != nil {
return nil, pkgerrors.Errorf("Error finding master table: %s", err.Error())
}
//Use tag objectID to read the data from store
- filter = bson.D{{"_id", tagoid}}
+ filter = bson.D{{Key: "_id", Value: tagoid}}
tagdata, err := decodeBytes(c.FindOne(ctx, filter))
if err != nil {
return nil, pkgerrors.Errorf("Error reading found object: %s", err.Error())
c := getCollection(coll, m)
- _, err := c.DeleteOne(ctx, bson.D{{"_id", objID}})
+ _, err := c.DeleteOne(ctx, bson.D{{Key: "_id", Value: objID}})
if err != nil {
return pkgerrors.Errorf("Error Deleting from database: %s", err.Error())
}
c := getCollection(coll, m)
//Get the masterkey document based on given key
- filter := bson.D{{"key", key}}
+ filter := bson.D{{Key: "key", Value: key}}
//Remove the tag ID entry from masterkey table
update := bson.D{
{
- "$unset", bson.D{
- {tag, ""},
+ Key: "$unset", Value: bson.D{
+ {Key: tag, Value: ""},
},
},
}
//Get all master tables in this collection
filter := bson.D{
- {"key", bson.D{
- {"$exists", true},
+ {Key: "key", Value: bson.D{
+ {Key: "$exists", Value: true},
}},
}
cursor, err := c.Find(ctx, filter)
}
//Find tag document and unmarshal it into []byte
- tagData, err := decodeBytes(c.FindOne(ctx, bson.D{{"_id", tid}}))
+ tagData, err := decodeBytes(c.FindOne(ctx, bson.D{{Key: "_id", Value: tid}}))
if err != nil {
log.Printf("Unable to decode tag data %s", err.Error())
continue
t.Fatalf("Read method returned an error (%s)", err)
}
} else {
- if bytes.Compare(got, testCase.expected) != 0 {
+ if !bytes.Equal(got, testCase.expected) {
t.Fatalf("Read returned unexpected data: %v, expected: %v",
string(got), testCase.expected)
}
mCursorCount: 1,
},
expected: map[string][]byte{
- `{"name": "testdef","version": "v1"}`: []byte{
+ `{"name": "testdef","version": "v1"}`: {
92, 17, 81, 86, 119, 127, 248, 86, 84, 36, 138, 225},
},
},
t.Run(testCase.label, func(t *testing.T) {
m, _ := NewMongoStore("name", &mongo.Database{})
// Override the getCollection function with our mocked version
- getCollection = func(coll string, m *MongoStore) MongoCollection {
+ getCollection = func(_ string, _ *MongoStore) MongoCollection {
return testCase.mockColl
}
- decodeBytes = func(sr *mongo.SingleResult) (bson.Raw, error) {
+ decodeBytes = func(_ *mongo.SingleResult) (bson.Raw, error) {
return testCase.mockColl.mCursor.Current, testCase.mockColl.Err
}
- cursorNext = func(ctx context.Context, cursor *mongo.Cursor) bool {
+ cursorNext = func(_ context.Context, _ *mongo.Cursor) bool {
if testCase.mockColl.mCursorCount > 0 {
testCase.mockColl.mCursorCount -= 1
return true
return false
}
- cursorClose = func(ctx context.Context, cursor *mongo.Cursor) error {
+ cursorClose = func(_ context.Context, _ *mongo.Cursor) error {
return nil
}
return json.Marshal(&struct {
Name string `json:"name"`
Kind string `json:"kind"`
- Path string `json:"kind"`
- Manifest string `json:"kind"`
+ Path string `json:"path"`
+ Manifest string `json:"manifest"`
Events []release.HookEvent `json:"events"`
}{h.Hook.Name, h.Hook.Kind, h.Hook.Path,
h.Hook.Manifest, h.Hook.Events})
import (
"archive/tar"
"compress/gzip"
- "github.com/onap/multicloud-k8s/src/k8splugin/internal/utils"
- pkgerrors "github.com/pkg/errors"
"io"
"io/ioutil"
"os"
"path/filepath"
+
+ "github.com/onap/multicloud-k8s/src/k8splugin/internal/utils"
+ pkgerrors "github.com/pkg/errors"
)
func isTarGz(r io.Reader) error {
tarR := tar.NewReader(gzf)
first := true
- for true {
+ for {
header, err := tarR.Next()
if err == io.EOF {
return nil
}
-//ExtractTarBall provides functionality to extract a tar.gz file
-//into a temporary location for later use.
-//It returns the path to the new location
+// ExtractTarBall provides functionality to extract a tar.gz file
+// into a temporary location for later use.
+// It returns the path to the new location
func ExtractTarBall(r io.Reader) (string, error) {
//Check if it is a valid gz
gzf, err := gzip.NewReader(r)
outDir, _ := ioutil.TempDir("", "k8s-ext-")
- for true {
+ for {
header, err := tarR.Next()
if err == io.EOF {
return nil, pkgerrors.Wrap(err, "Decode base64 string")
}
- if out != nil && len(out) != 0 {
+ if len(out) != 0 {
return out, nil
}
}
return nil, pkgerrors.Wrap(err, "Decode base64 string")
}
- if out != nil && len(out) != 0 {
+ if len(out) != 0 {
return out, nil
}
}
return nil, pkgerrors.Wrap(err, "Decode base64 string")
}
- if out != nil && len(out) != 0 {
+ if len(out) != 0 {
return out, nil
}
}