Bladeren bron

update cluster/registry names

Alexander Belanger 5 jaren geleden
bovenliggende
commit
b9569b6ef7

+ 1 - 0
internal/repository/cluster.go

@@ -16,6 +16,7 @@ type ClusterRepository interface {
 	CreateCluster(cluster *models.Cluster) (*models.Cluster, error)
 	ReadCluster(id uint) (*models.Cluster, error)
 	ListClustersByProjectID(projectID uint) ([]*models.Cluster, error)
+	UpdateCluster(cluster *models.Cluster) (*models.Cluster, error)
 	UpdateClusterTokenCache(tokenCache *ints.TokenCache) (*models.Cluster, error)
 	DeleteCluster(cluster *models.Cluster) error
 }

+ 11 - 0
internal/repository/gorm/cluster.go

@@ -193,6 +193,17 @@ func (repo *ClusterRepository) ListClustersByProjectID(
 	return clusters, nil
 }
 
+// UpdateCluster modifies an existing Cluster in the database
+func (repo *ClusterRepository) UpdateCluster(
+	cluster *models.Cluster,
+) (*models.Cluster, error) {
+	if err := repo.db.Save(cluster).Error; err != nil {
+		return nil, err
+	}
+
+	return cluster, nil
+}
+
 // UpdateClusterTokenCache updates the token cache for a cluster
 func (repo *ClusterRepository) UpdateClusterTokenCache(
 	tokenCache *ints.TokenCache,

+ 42 - 0
internal/repository/gorm/cluster_test.go

@@ -299,6 +299,48 @@ func TestListClustersByProjectID(t *testing.T) {
 	}
 }
 
+func TestUpdateCluster(t *testing.T) {
+	tester := &tester{
+		dbFileName: "./porter_update_cluster.db",
+	}
+
+	setupTestEnv(tester, t)
+	initProject(tester, t)
+	initCluster(tester, t)
+	defer cleanup(tester, t)
+
+	cluster := tester.initClusters[0]
+
+	cluster.Name = "cluster-new-name"
+
+	cluster, err := tester.repo.Cluster.UpdateCluster(
+		cluster,
+	)
+
+	if err != nil {
+		t.Fatalf("%v\n", err)
+	}
+
+	cluster, err = tester.repo.Cluster.ReadCluster(tester.initClusters[0].ID)
+
+	// make sure data is correct
+	expCluster := models.Cluster{
+		ProjectID:                tester.initProjects[0].ID,
+		Name:                     "cluster-new-name",
+		Server:                   "https://localhost",
+		KubeIntegrationID:        tester.initKIs[0].ID,
+		CertificateAuthorityData: []byte("-----BEGIN"),
+	}
+
+	// reset fields for reflect.DeepEqual
+	cluster.Model = orm.Model{}
+
+	if diff := deep.Equal(expCluster, *cluster); diff != nil {
+		t.Errorf("incorrect cluster")
+		t.Error(diff)
+	}
+}
+
 func TestUpdateClusterToken(t *testing.T) {
 	tester := &tester{
 		dbFileName: "./porter_test_update_cluster_token.db",

+ 11 - 0
internal/repository/gorm/registry.go

@@ -94,6 +94,17 @@ func (repo *RegistryRepository) ListRegistriesByProjectID(
 	return regs, nil
 }
 
+// UpdateRegistry modifies an existing Registry in the database
+func (repo *RegistryRepository) UpdateRegistry(
+	reg *models.Registry,
+) (*models.Registry, error) {
+	if err := repo.db.Save(reg).Error; err != nil {
+		return nil, err
+	}
+
+	return reg, nil
+}
+
 // UpdateRegistryTokenCache updates the token cache for a registry
 func (repo *RegistryRepository) UpdateRegistryTokenCache(
 	tokenCache *ints.RegTokenCache,

+ 39 - 0
internal/repository/gorm/registry_test.go

@@ -86,6 +86,45 @@ func TestListRegistriesByProjectID(t *testing.T) {
 	}
 }
 
+func TestUpdateRegistry(t *testing.T) {
+	tester := &tester{
+		dbFileName: "./porter_update_registry.db",
+	}
+
+	setupTestEnv(tester, t)
+	initProject(tester, t)
+	initRegistry(tester, t)
+	defer cleanup(tester, t)
+
+	reg := tester.initRegs[0]
+
+	reg.Name = "registry-new-name"
+
+	reg, err := tester.repo.Registry.UpdateRegistry(
+		reg,
+	)
+
+	if err != nil {
+		t.Fatalf("%v\n", err)
+	}
+
+	reg, err = tester.repo.Registry.ReadRegistry(tester.initRegs[0].ID)
+
+	// make sure data is correct
+	expRegistry := models.Registry{
+		ProjectID: tester.initProjects[0].ID,
+		Name:      "registry-new-name",
+	}
+
+	// reset fields for reflect.DeepEqual
+	reg.Model = orm.Model{}
+
+	if diff := deep.Equal(expRegistry, *reg); diff != nil {
+		t.Errorf("incorrect registry")
+		t.Error(diff)
+	}
+}
+
 func TestUpdateRegistryToken(t *testing.T) {
 	tester := &tester{
 		dbFileName: "./porter_test_update_registry_token.db",

+ 1 - 0
internal/repository/registry.go

@@ -10,6 +10,7 @@ type RegistryRepository interface {
 	CreateRegistry(reg *models.Registry) (*models.Registry, error)
 	ReadRegistry(id uint) (*models.Registry, error)
 	ListRegistriesByProjectID(projectID uint) ([]*models.Registry, error)
+	UpdateRegistry(reg *models.Registry) (*models.Registry, error)
 	UpdateRegistryTokenCache(tokenCache *ints.RegTokenCache) (*models.Registry, error)
 	DeleteRegistry(reg *models.Registry) error
 }

+ 18 - 0
internal/repository/test/cluster.go

@@ -144,6 +144,24 @@ func (repo *ClusterRepository) ListClustersByProjectID(
 	return res, nil
 }
 
+// UpdateCluster modifies an existing Cluster in the database
+func (repo *ClusterRepository) UpdateCluster(
+	cluster *models.Cluster,
+) (*models.Cluster, error) {
+	if !repo.canQuery {
+		return nil, errors.New("Cannot write database")
+	}
+
+	if int(cluster.ID-1) >= len(repo.clusters) || repo.clusters[cluster.ID-1] == nil {
+		return nil, gorm.ErrRecordNotFound
+	}
+
+	index := int(cluster.ID - 1)
+	repo.clusters[index] = cluster
+
+	return cluster, nil
+}
+
 // UpdateClusterTokenCache updates the token cache for a cluster
 func (repo *ClusterRepository) UpdateClusterTokenCache(
 	tokenCache *ints.TokenCache,

+ 18 - 0
internal/repository/test/registry.go

@@ -73,6 +73,24 @@ func (repo *RegistryRepository) ListRegistriesByProjectID(
 	return res, nil
 }
 
+// UpdateRegistry modifies an existing Registry in the database
+func (repo *RegistryRepository) UpdateRegistry(
+	reg *models.Registry,
+) (*models.Registry, error) {
+	if !repo.canQuery {
+		return nil, errors.New("Cannot write database")
+	}
+
+	if int(reg.ID-1) >= len(repo.registries) || repo.registries[reg.ID-1] == nil {
+		return nil, gorm.ErrRecordNotFound
+	}
+
+	index := int(reg.ID - 1)
+	repo.registries[index] = reg
+
+	return reg, nil
+}
+
 // UpdateRegistryTokenCache updates the token cache for a registry
 func (repo *RegistryRepository) UpdateRegistryTokenCache(
 	tokenCache *ints.RegTokenCache,