forked from TrueCloudLab/frostfs-sdk-go
[#276] Merge repo with frostfs-api-go
Signed-off-by: Pavel Pogodaev <p.pogodaev@yadro.com>
This commit is contained in:
parent
5361f0eceb
commit
6ce73790ea
337 changed files with 66666 additions and 283 deletions
90
api/container/attributes.go
Normal file
90
api/container/attributes.go
Normal file
|
@ -0,0 +1,90 @@
|
|||
package container
|
||||
|
||||
// SysAttributePrefix is a prefix of key to system attribute.
|
||||
const SysAttributePrefix = "__SYSTEM__"
|
||||
|
||||
const (
|
||||
// SysAttributeName is a string of human-friendly container name registered as the domain in NNS contract.
|
||||
SysAttributeName = SysAttributePrefix + "NAME"
|
||||
|
||||
// SysAttributeZone is a string of zone for container name.
|
||||
SysAttributeZone = SysAttributePrefix + "ZONE"
|
||||
|
||||
// SysAttributeHomomorphicHashing is a container's homomorphic hashing state.
|
||||
SysAttributeHomomorphicHashing = SysAttributePrefix + "DISABLE_HOMOMORPHIC_HASHING"
|
||||
)
|
||||
|
||||
// SysAttributePrefixNeoFS is a prefix of key to system attribute.
|
||||
// Deprecated: use SysAttributePrefix.
|
||||
const SysAttributePrefixNeoFS = "__NEOFS__"
|
||||
|
||||
const (
|
||||
// SysAttributeNameNeoFS is a string of human-friendly container name registered as the domain in NNS contract.
|
||||
// Deprecated: use SysAttributeName.
|
||||
SysAttributeNameNeoFS = SysAttributePrefixNeoFS + "NAME"
|
||||
|
||||
// SysAttributeZoneNeoFS is a string of zone for container name.
|
||||
// Deprecated: use SysAttributeZone.
|
||||
SysAttributeZoneNeoFS = SysAttributePrefixNeoFS + "ZONE"
|
||||
|
||||
// SysAttributeHomomorphicHashingNeoFS is a container's homomorphic hashing state.
|
||||
// Deprecated: use SysAttributeHomomorphicHashing.
|
||||
SysAttributeHomomorphicHashingNeoFS = SysAttributePrefixNeoFS + "DISABLE_HOMOMORPHIC_HASHING"
|
||||
)
|
||||
|
||||
// SysAttributeZoneDefault is a default value for SysAttributeZone attribute.
|
||||
const SysAttributeZoneDefault = "container"
|
||||
|
||||
const disabledHomomorphicHashingValue = "true"
|
||||
|
||||
// HomomorphicHashingState returns container's homomorphic
|
||||
// hashing state:
|
||||
// - true if hashing is enabled;
|
||||
// - false if hashing is disabled.
|
||||
//
|
||||
// All container's attributes must be unique, otherwise behavior
|
||||
// is undefined.
|
||||
//
|
||||
// See also SetHomomorphicHashingState.
|
||||
func (c Container) HomomorphicHashingState() bool {
|
||||
for i := range c.attr {
|
||||
if c.attr[i].GetKey() == SysAttributeHomomorphicHashing || c.attr[i].GetKey() == SysAttributeHomomorphicHashingNeoFS {
|
||||
return c.attr[i].GetValue() != disabledHomomorphicHashingValue
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// SetHomomorphicHashingState sets homomorphic hashing state for
|
||||
// container.
|
||||
//
|
||||
// All container's attributes must be unique, otherwise behavior
|
||||
// is undefined.
|
||||
//
|
||||
// See also HomomorphicHashingState.
|
||||
func (c *Container) SetHomomorphicHashingState(enable bool) {
|
||||
for i := range c.attr {
|
||||
if c.attr[i].GetKey() == SysAttributeHomomorphicHashing || c.attr[i].GetKey() == SysAttributeHomomorphicHashingNeoFS {
|
||||
if enable {
|
||||
// approach without allocation/waste
|
||||
// coping works since the attributes
|
||||
// order is not important
|
||||
c.attr[i] = c.attr[len(c.attr)-1]
|
||||
c.attr = c.attr[:len(c.attr)-1]
|
||||
} else {
|
||||
c.attr[i].SetValue(disabledHomomorphicHashingValue)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if !enable {
|
||||
attr := Attribute{}
|
||||
attr.SetKey(SysAttributeHomomorphicHashing)
|
||||
attr.SetValue(disabledHomomorphicHashingValue)
|
||||
|
||||
c.attr = append(c.attr, attr)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue