Skip to content

Commit 9440f18

Browse files
feat: add pulsar admin namespace properties methods for PUT/GET/DELETE (#1390)
1 parent c587b5c commit 9440f18

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

pulsaradmin/pkg/admin/namespace.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,15 @@ type Namespaces interface {
305305
// RemoveSubscriptionExpirationTime removes subscription expiration time from a namespace,
306306
// defaulting to broker settings
307307
RemoveSubscriptionExpirationTime(namespace utils.NameSpaceName) error
308+
309+
// UpdateProperties updates the properties of a namespace
310+
UpdateProperties(namespace utils.NameSpaceName, properties map[string]string) error
311+
312+
// GetProperties returns the properties of a namespace
313+
GetProperties(namespace utils.NameSpaceName) (map[string]string, error)
314+
315+
// RemoveProperties clears the properties of a namespace
316+
RemoveProperties(namespace utils.NameSpaceName) error
308317
}
309318

310319
type namespaces struct {
@@ -970,3 +979,20 @@ func (n *namespaces) RemoveSubscriptionExpirationTime(namespace utils.NameSpaceN
970979
endpoint := n.pulsar.endpoint(n.basePath, namespace.String(), "subscriptionExpirationTime")
971980
return n.pulsar.Client.Delete(endpoint)
972981
}
982+
983+
func (n *namespaces) UpdateProperties(namespace utils.NameSpaceName, properties map[string]string) error {
984+
endpoint := n.pulsar.endpoint(n.basePath, namespace.String(), "properties")
985+
return n.pulsar.Client.Put(endpoint, properties)
986+
}
987+
988+
func (n *namespaces) GetProperties(namespace utils.NameSpaceName) (map[string]string, error) {
989+
endpoint := n.pulsar.endpoint(n.basePath, namespace.String(), "properties")
990+
properties := make(map[string]string)
991+
err := n.pulsar.Client.Get(endpoint, &properties)
992+
return properties, err
993+
}
994+
995+
func (n *namespaces) RemoveProperties(namespace utils.NameSpaceName) error {
996+
endpoint := n.pulsar.endpoint(n.basePath, namespace.String(), "properties")
997+
return n.pulsar.Client.Delete(endpoint)
998+
}

pulsaradmin/pkg/admin/namespace_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,3 +495,31 @@ func TestNamespaces_GetSchemaCompatibilityStrategy(t *testing.T) {
495495
}
496496
assert.Equal(t, utils.SchemaCompatibilityStrategyUndefined, defaultStrategy)
497497
}
498+
499+
func TestNamespaces_Properties(t *testing.T) {
500+
config := &config.Config{}
501+
admin, err := New(config)
502+
require.NoError(t, err)
503+
require.NotNil(t, admin)
504+
505+
namespace, err := utils.GetNamespaceName("public/default")
506+
assert.Equal(t, err, nil)
507+
508+
// Namespace properties are expected to be set and retrieved successfully
509+
properties := map[string]string{
510+
"key-1": "value-1",
511+
}
512+
err = admin.Namespaces().UpdateProperties(*namespace, properties)
513+
assert.Equal(t, err, nil)
514+
515+
actualProperties, err := admin.Namespaces().GetProperties(*namespace)
516+
assert.Equal(t, err, nil)
517+
assert.Equal(t, actualProperties, properties)
518+
519+
// All namespace properties are expected to be deleted successfully
520+
err = admin.Namespaces().RemoveProperties(*namespace)
521+
assert.Equal(t, err, nil)
522+
actualPropertiesAfterRemoveCall, err := admin.Namespaces().GetProperties(*namespace)
523+
assert.Equal(t, err, nil)
524+
assert.Equal(t, actualPropertiesAfterRemoveCall, map[string]string{})
525+
}

0 commit comments

Comments
 (0)