diff --git a/cmd/importverifier/BUILD b/cmd/importverifier/BUILD index f0bd155478..b3c71160e6 100644 --- a/cmd/importverifier/BUILD +++ b/cmd/importverifier/BUILD @@ -16,6 +16,7 @@ go_library( name = "go_default_library", srcs = ["importverifier.go"], importpath = "k8s.io/kubernetes/cmd/importverifier", + deps = ["//vendor/gopkg.in/yaml.v2:go_default_library"], ) filegroup( diff --git a/cmd/importverifier/importverifier.go b/cmd/importverifier/importverifier.go index b3601c24c7..584a74bdb3 100644 --- a/cmd/importverifier/importverifier.go +++ b/cmd/importverifier/importverifier.go @@ -27,15 +27,17 @@ import ( "os/exec" "path/filepath" "strings" + + "gopkg.in/yaml.v2" ) // Package is a subset of cmd/go.Package type Package struct { - Dir string `json:",omitempty"` // directory containing package sources - ImportPath string `json:",omitempty"` // import path of package in dir - Imports []string `json:",omitempty"` // import paths used by this package - TestImports []string `json:",omitempty"` // imports from TestGoFiles - XTestImports []string `json:",omitempty"` // imports from XTestGoFiles + Dir string `yaml:",omitempty"` // directory containing package sources + ImportPath string `yaml:",omitempty"` // import path of package in dir + Imports []string `yaml:",omitempty"` // import paths used by this package + TestImports []string `yaml:",omitempty"` // imports from TestGoFiles + XTestImports []string `yaml:",omitempty"` // imports from XTestGoFiles } // ImportRestriction describes a set of allowable import @@ -44,17 +46,17 @@ type ImportRestriction struct { // BaseDir is the root of the package tree that is // restricted by this configuration, given as a // relative path from the root of the repository - BaseDir string `json:"baseImportPath"` + BaseDir string `yaml:"baseImportPath"` // IgnoredSubTrees are roots of sub-trees of the // BaseDir for which we do not want to enforce // any import restrictions whatsoever, given as // relative paths from the root of the repository - IgnoredSubTrees []string `json:"ignoredSubTrees,omitempty"` + IgnoredSubTrees []string `yaml:"ignoredSubTrees,omitempty"` // AllowedImports are roots of package trees that // are allowed to be imported from the BaseDir, // given as paths that would be used in a Go // import statement - AllowedImports []string `json:"allowedImports"` + AllowedImports []string `yaml:"allowedImports"` } // ForbiddenImportsFor determines all of the forbidden @@ -164,7 +166,7 @@ var rootPackage string func main() { if len(os.Args) != 3 { - log.Fatalf("Usage: %s ROOT RESTRICTIONS.json", os.Args[0]) + log.Fatalf("Usage: %s ROOT RESTRICTIONS.yaml", os.Args[0]) } rootPackage = os.Args[1] @@ -214,7 +216,7 @@ func loadImportRestrictions(configFile string) ([]ImportRestriction, error) { } var importRestrictions []ImportRestriction - if err := json.Unmarshal(config, &importRestrictions); err != nil { + if err := yaml.Unmarshal(config, &importRestrictions); err != nil { return nil, fmt.Errorf("failed to unmarshal from %s: %v", configFile, err) } diff --git a/hack/import-restrictions.json b/hack/import-restrictions.json deleted file mode 100644 index 76e4e3b6b3..0000000000 --- a/hack/import-restrictions.json +++ /dev/null @@ -1,92 +0,0 @@ -[ - { - "baseImportPath": "./vendor/k8s.io/apimachinery/", - "allowedImports": [ - "k8s.io/apimachinery", - "k8s.io/kube-openapi" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/api/", - "allowedImports": [ - "k8s.io/api", - "k8s.io/apimachinery" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/code-generator/", - "ignoredSubTrees": [ - "./vendor/k8s.io/code-generator/_test" - ], - "allowedImports": [ - "k8s.io/gengo", - "k8s.io/code-generator", - "k8s.io/kube-openapi" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/client-go/", - "allowedImports": [ - "k8s.io/api", - "k8s.io/apimachinery", - "k8s.io/client-go" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/apiserver/", - "allowedImports": [ - "k8s.io/api", - "k8s.io/apimachinery", - "k8s.io/apiserver", - "k8s.io/client-go", - "k8s.io/kube-openapi" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/metrics/", - "allowedImports": [ - "k8s.io/api", - "k8s.io/apimachinery", - "k8s.io/client-go", - "k8s.io/metrics" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/kube-aggregator/", - "allowedImports": [ - "k8s.io/api", - "k8s.io/apimachinery", - "k8s.io/apiserver", - "k8s.io/client-go", - "k8s.io/kube-aggregator", - "k8s.io/kube-openapi" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/sample-apiserver/", - "allowedImports": [ - "k8s.io/api", - "k8s.io/apimachinery", - "k8s.io/apiserver", - "k8s.io/client-go", - "k8s.io/sample-apiserver" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/apiextensions-apiserver/", - "allowedImports": [ - "k8s.io/api", - "k8s.io/apiextensions-apiserver", - "k8s.io/apimachinery", - "k8s.io/apiserver", - "k8s.io/client-go" - ] - }, - { - "baseImportPath": "./vendor/k8s.io/kube-openapi/", - "allowedImports": [ - "k8s.io/kube-openapi", - "k8s.io/gengo" - ] - } -] \ No newline at end of file diff --git a/hack/import-restrictions.yaml b/hack/import-restrictions.yaml new file mode 100644 index 0000000000..692485df1c --- /dev/null +++ b/hack/import-restrictions.yaml @@ -0,0 +1,68 @@ +- baseImportPath: "./vendor/k8s.io/apimachinery/" + allowedImports: + - k8s.io/apimachinery + - k8s.io/kube-openapi + +- baseImportPath: "./vendor/k8s.io/api/" + allowedImports: + - k8s.io/api + - k8s.io/apimachinery + +- baseImportPath: "./vendor/k8s.io/code-generator/" + ignoredSubTrees: + - "./vendor/k8s.io/code-generator/_test" + allowedImports: + - k8s.io/gengo + - k8s.io/code-generator + - k8s.io/kube-openapi + +- baseImportPath: "./vendor/k8s.io/client-go/" + allowedImports: + - k8s.io/api + - k8s.io/apimachinery + - k8s.io/client-go + +- baseImportPath: "./vendor/k8s.io/apiserver/" + allowedImports: + - k8s.io/api + - k8s.io/apimachinery + - k8s.io/apiserver + - k8s.io/client-go + - k8s.io/kube-openapi + +- baseImportPath: "./vendor/k8s.io/metrics/" + allowedImports: + - k8s.io/api + - k8s.io/apimachinery + - k8s.io/client-go + - k8s.io/metrics + +- baseImportPath: "./vendor/k8s.io/kube-aggregator/" + allowedImports: + - k8s.io/api + - k8s.io/apimachinery + - k8s.io/apiserver + - k8s.io/client-go + - k8s.io/kube-aggregator + - k8s.io/kube-openapi + +- baseImportPath: "./vendor/k8s.io/sample-apiserver/" + allowedImports: + - k8s.io/api + - k8s.io/apimachinery + - k8s.io/apiserver + - k8s.io/client-go + - k8s.io/sample-apiserver + +- baseImportPath: "./vendor/k8s.io/apiextensions-apiserver/" + allowedImports: + - k8s.io/api + - k8s.io/apiextensions-apiserver + - k8s.io/apimachinery + - k8s.io/apiserver + - k8s.io/client-go + +- baseImportPath: "./vendor/k8s.io/kube-openapi/" + allowedImports: + - k8s.io/kube-openapi + - k8s.io/gengo diff --git a/hack/verify-imports.sh b/hack/verify-imports.sh index 7cb756f1a1..a845fa2a0b 100755 --- a/hack/verify-imports.sh +++ b/hack/verify-imports.sh @@ -38,4 +38,4 @@ if [[ ! -x "$importverifier" ]]; then exit 1 fi -"${importverifier}" "k8s.io/" "${KUBE_ROOT}/hack/import-restrictions.json" +"${importverifier}" "k8s.io/" "${KUBE_ROOT}/hack/import-restrictions.yaml"