Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion src/main/java/no/fintlabs/operator/NameFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,28 @@

import io.fabric8.kubernetes.api.model.HasMetadata;

import java.util.UUID;

public class NameFactory {

public static String nameFromMetadata(HasMetadata metadata) {
public static String legacyNameFromMetadata(HasMetadata metadata) {
return String.format("%s_%s_%s",
metadata.getMetadata().getLabels().get("fintlabs.no/org-id").replace(".", "-"),
metadata.getMetadata().getLabels().get("fintlabs.no/team"),
metadata.getMetadata().getName()
);
}

public static String guidNameFromMetadata() {
return UUID.randomUUID().toString();
}

public static String nameFromMetadata(HasMetadata metadata) {
String useGuid = metadata.getMetadata().getLabels().get("fintlabs.no/use-guid");
if ("true".equalsIgnoreCase(useGuid)) {
return guidNameFromMetadata();
} else {
return legacyNameFromMetadata(metadata);
}
}
}
42 changes: 39 additions & 3 deletions src/test/groovy/no/fintlabs/operator/NameFactorySpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,53 @@ import spock.lang.Specification

class NameFactorySpec extends Specification {

def "Name should contain orgId and team"() {
def "Legacy should include orgId, team and name"() {
given:
def crd = new KafkaUserAndAclCrd()
crd.getMetadata().getLabels().put("fintlabs.no/team", "flais")
crd.getMetadata().getLabels().put("fintlabs.no/team", "test-team")
crd.getMetadata().getLabels().put("fintlabs.no/org-id", "flais.io")
crd.getMetadata().setName("fint-data-service")

when:
def name = NameFactory.legacyNameFromMetadata(crd)

then:
name.equals("flais-io_test-team_fint-data-service")
}

def "guidNameFromMetadata should return valid UUID format"() {
when:
def guid = NameFactory.guidNameFromMetadata()

then:
guid.matches(/[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/)
guid.length() <= 64
}

def "nameFromMetadata should return GUID name is use-guid is set to true"() {
given:
def crd = new KafkaUserAndAclCrd()
crd.getMetadata().getLabels().put("fintlabs.no/use-guid", "true")

when:
def name = NameFactory.nameFromMetadata(crd)

then:
name.matches(/[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/)
}

def "nameFromMetadata should return legacy name if use-guid is not true"() {
given:
def crd = new KafkaUserAndAclCrd()
crd.getMetadata().getLabels().put("fintlabs.no/team", "test-team")
crd.getMetadata().getLabels().put("fintlabs.no/org-id", "flais.io")
crd.getMetadata().getLabels().put("fintlabs.no/use-guid", "false")
crd.getMetadata().setName("fint-data-service")

when:
def name = NameFactory.nameFromMetadata(crd)

then:
name == "flais-io_flais_fint-data-service"
name.equals("flais-io_test-team_fint-data-service")
}
}