Skip to content
This repository has been archived by the owner on Sep 27, 2023. It is now read-only.

Remove OAM and update adapter library #238

Merged
merged 9 commits into from
Apr 21, 2023
Merged
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
10 changes: 3 additions & 7 deletions build/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,16 @@ import (

var DefaultGenerationMethod string
var LatestVersion string
var WorkloadPath string
var MeshModelPath string
var CRDnames []string
var OverrideURL string
var AllVersions []string

const Component = "OSM"

var meshmodelmetadata = make(map[string]interface{})

var MeshModelConfig = adapter.MeshModelConfig{ //Move to build/config.go
Category: "Orchestration & Management",
Metadata: meshmodelmetadata,
Category: "Cloud Native Network",
Metadata: map[string]interface{}{},
}

// NewConfig creates the configuration for creating components
Expand Down Expand Up @@ -68,8 +65,7 @@ func init() {
}()
byt, _ := io.ReadAll(f)

_ = json.Unmarshal(byt, &meshmodelmetadata)
WorkloadPath = filepath.Join(wd, "templates", "oam", "workloads")
_ = json.Unmarshal(byt, &MeshModelConfig.Metadata)
MeshModelPath = filepath.Join(wd, "templates", "meshmodel", "components")
AllVersions, _ = utils.GetLatestReleaseTagsSorted("openservicemesh", "osm")
if len(AllVersions) == 0 {
Expand Down
7 changes: 0 additions & 7 deletions build/meshmodel_component.json

This file was deleted.

7 changes: 7 additions & 0 deletions build/meshmodel_metadata.json

Large diffs are not rendered by default.

8 changes: 2 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ replace (

require (
github.com/google/uuid v1.3.0
github.com/layer5io/meshery-adapter-library v0.6.5
github.com/layer5io/meshkit v0.6.31
github.com/layer5io/meshery-adapter-library v0.6.7
github.com/layer5io/meshkit v0.6.40
github.com/layer5io/service-mesh-performance v0.3.4
gopkg.in/yaml.v2 v2.4.0
k8s.io/apimachinery v0.26.1
Expand All @@ -28,8 +28,6 @@ require (
github.com/Masterminds/squirrel v1.5.3 // indirect
github.com/Microsoft/go-winio v0.5.2 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/acomagu/bufpipe v1.0.3 // indirect
github.com/apache/thrift v0.13.0 // indirect
github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect
Expand Down Expand Up @@ -123,7 +121,6 @@ require (
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0-rc2 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.9.1 // indirect
Expand All @@ -132,7 +129,6 @@ require (
github.com/prometheus/common v0.37.0 // indirect
github.com/prometheus/procfs v0.8.0 // indirect
github.com/rubenv/sql-migrate v1.2.0 // indirect
github.com/russross/blackfriday v1.6.0 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sergi/go-diff v1.1.0 // indirect
github.com/shopspring/decimal v1.2.0 // indirect
Expand Down
258 changes: 18 additions & 240 deletions go.sum

Large diffs are not rendered by default.

29 changes: 1 addition & 28 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import (
"fmt"
"os"
"path"
"path/filepath"
"strings"
"time"

Expand Down Expand Up @@ -132,16 +131,6 @@ func serviceAddress() string {
}

func registerCapabilities(port string, log logger.Handler) {
// Register workloads
if err := oam.RegisterWorkloads(mesheryServerAddress(), serviceAddress()+":"+port); err != nil {
log.Info(err.Error())
}

// Register traits
if err := oam.RegisterTraits(mesheryServerAddress(), serviceAddress()+":"+port); err != nil {
log.Info(err.Error())
}

// Register meshmodel components
if err := oam.RegisterMeshModelComponents(instanceID, mesheryServerAddress(), serviceAddress(), port); err != nil {
log.Info(err.Error())
Expand All @@ -168,22 +157,13 @@ func registerWorkloads(port string, log logger.Handler) {
log.Info("Components available statically for version ", version, ". Skipping dynamic component registeration")
return
}
//If a URL is passed from env variable, it will be used for component generation with default method being "using manifests"
// In case a helm chart URL is passed, COMP_GEN_METHOD env variable should be set to Helm otherwise the component generation fails
if os.Getenv("COMP_GEN_URL") != "" && (os.Getenv("COMP_GEN_METHOD") == "Helm" || os.Getenv("COMP_GEN_METHOD") == "Manifest") {
build.OverrideURL = os.Getenv("COMP_GEN_URL")
gm = os.Getenv("COMP_GEN_METHOD")
log.Info("Registering workload components from url ", build.OverrideURL, " using ", gm, " method...")
build.CRDnames = []string{"user passed configuration"}
}
log.Info("Registering latest workload components for version ", version)
// Register workloads
for _, crd := range build.CRDnames {
log.Info("Generating components for ", crd)
if err := adapter.CreateComponents(adapter.StaticCompConfig{
URL: build.GetDefaultURL(crd),
Method: gm,
OAMPath: build.WorkloadPath,
MeshModelPath: build.MeshModelPath,
MeshModelConfig: build.MeshModelConfig,
DirName: version,
Expand All @@ -197,19 +177,12 @@ func registerWorkloads(port string, log logger.Handler) {

//*The below log is checked in the workflows. If you change this log, reflect that change in the workflow where components are generated
log.Info("Component creation completed for version ", version)

//Now we will register in case
log.Info("Registering workloads with Meshery Server for version ", version)
originalPath := oam.WorkloadPath
oam.WorkloadPath = filepath.Join(originalPath, version)
defer resetWorkloadPath(originalPath)
if err := oam.RegisterWorkloads(mesheryServerAddress(), serviceAddress()+":"+port); err != nil {
if err := oam.RegisterMeshModelComponents(instanceID, mesheryServerAddress(), serviceAddress(), port); err != nil {
log.Info(err.Error())
return
}

log.Info("Latest workload components successfully registered.")
}
func resetWorkloadPath(orig string) {
oam.WorkloadPath = orig
}
116 changes: 1 addition & 115 deletions osm/oam/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,21 @@ import (
"os"
"path/filepath"
"strconv"
"strings"
"sync"

"github.com/layer5io/meshery-adapter-library/adapter"
"github.com/layer5io/meshery-osm/internal/config"
"github.com/layer5io/meshkit/models/meshmodel/core/types"
)

var (
basePath, _ = os.Getwd()
//WorkloadPath will be used by both static and component generation
WorkloadPath = filepath.Join(basePath, "templates", "oam", "workloads")
basePath, _ = os.Getwd()
MeshmodelComponents = filepath.Join(basePath, "templates", "meshmodel", "components")
traitPath = filepath.Join(basePath, "templates", "oam", "traits")
)

// AvailableVersions denote the component versions available statically
var AvailableVersions = map[string]bool{}
var pathSets []schemaDefinitionPathSet
var availableVersionGlobalMutex sync.Mutex

type schemaDefinitionPathSet struct {
oamDefinitionPath string
jsonSchemaPath string
name string
}

type meshmodelDefinitionPathSet struct {
meshmodelDefinitionPath string
}
Expand All @@ -57,65 +45,6 @@ func RegisterMeshModelComponents(uuid, runtime, host, port string) error {
Register(uuid)
}

// RegisterWorkloads will register all of the workload definitions
// present in the path oam/workloads
//
// Registration process will send POST request to $runtime/api/oam/workload
func RegisterWorkloads(runtime, host string) error {
oamRDP := []adapter.OAMRegistrantDefinitionPath{}

for _, pathSet := range pathSets {
metadata := map[string]string{
config.OAMAdapterNameMetadataKey: config.OSMOperation,
}

if strings.HasSuffix(pathSet.name, "addon") {
metadata[config.OAMComponentCategoryMetadataKey] = "addon"
}

oamRDP = append(oamRDP, adapter.OAMRegistrantDefinitionPath{
OAMDefintionPath: pathSet.oamDefinitionPath,
OAMRefSchemaPath: pathSet.jsonSchemaPath,
Host: host,
Metadata: metadata,
})
}

return adapter.
NewOAMRegistrant(oamRDP, fmt.Sprintf("%s/api/oam/workload", runtime)).
Register()
}

// RegisterTraits will register all of the trait definitions
// present in the path oam/traits
//
// Registeration process will send POST request to $runtime/api/oam/trait
func RegisterTraits(runtime, host string) error {
oamRDP := []adapter.OAMRegistrantDefinitionPath{}

pathSets, err := load(traitPath)
if err != nil {
return err
}

for _, pathSet := range pathSets {
metadata := map[string]string{
config.OAMAdapterNameMetadataKey: config.OSMOperation,
}

oamRDP = append(oamRDP, adapter.OAMRegistrantDefinitionPath{
OAMDefintionPath: pathSet.oamDefinitionPath,
OAMRefSchemaPath: pathSet.jsonSchemaPath,
Host: host,
Metadata: metadata,
})
}

return adapter.
NewOAMRegistrant(oamRDP, fmt.Sprintf("%s/api/oam/trait", runtime)).
Register()
}

func loadMeshmodelComponents(basepath string) ([]meshmodelDefinitionPathSet, error) {
res := []meshmodelDefinitionPathSet{}
if err := filepath.Walk(basepath, func(path string, info os.FileInfo, err error) error {
Expand All @@ -140,46 +69,3 @@ func loadMeshmodelComponents(basepath string) ([]meshmodelDefinitionPathSet, err

return res, nil
}

func load(basePath string) ([]schemaDefinitionPathSet, error) {
res := []schemaDefinitionPathSet{}

if err := filepath.Walk(basePath, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}

if info.IsDir() {
return nil
}

if matched, err := filepath.Match("*_definition.json", filepath.Base(path)); err != nil {
return err
} else if matched {
nameWithPath := strings.TrimSuffix(path, "_definition.json")

res = append(res, schemaDefinitionPathSet{
oamDefinitionPath: path,
jsonSchemaPath: fmt.Sprintf("%s.meshery.layer5io.schema.json", nameWithPath),
name: filepath.Base(nameWithPath),
})
availableVersionGlobalMutex.Lock()
AvailableVersions[filepath.Base(filepath.Dir(path))] = true
availableVersionGlobalMutex.Unlock()
}

return nil
}); err != nil {
return nil, err
}

return res, nil
}

func init() {
var err error
pathSets, err = load(WorkloadPath)
if err != nil {
fmt.Println("Err loading components: ", err.Error())
}
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

9 changes: 8 additions & 1 deletion templates/meshmodel/components/v0.0.1/osmmesh_meshmodel.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

9 changes: 8 additions & 1 deletion templates/meshmodel/components/v0.0.9/osmmesh_meshmodel.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

9 changes: 8 additions & 1 deletion templates/meshmodel/components/v0.1.0/osmmesh_meshmodel.json

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

This file was deleted.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

This file was deleted.

Loading