Skip to content

Commit

Permalink
Code improvement
Browse files Browse the repository at this point in the history
  • Loading branch information
devashish-patel committed Apr 25, 2024
1 parent 6c2525c commit 7dbaa7f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 30 deletions.
6 changes: 3 additions & 3 deletions packer/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,22 +60,22 @@ type BuildMetadata struct {
func (b *CoreBuild) getPluginsMetadata() map[string]PluginDetails {
resp := map[string]PluginDetails{}

builderPlugin, builderPluginOk := PluginsDetailsStorage.GetPlugin(fmt.Sprintf("%q-%q", PluginComponentBuilder, b.BuilderType))
builderPlugin, builderPluginOk := GlobalPluginsDetailsStore.Get(fmt.Sprintf("%q-%q", PluginComponentBuilder, b.BuilderType))
if builderPluginOk {
resp[builderPlugin.Name] = builderPlugin
}

for _, pp := range b.PostProcessors {
for _, p := range pp {
postprocessorsPlugin, postprocessorsPluginOk := PluginsDetailsStorage.GetPlugin(fmt.Sprintf("%q-%q", PluginComponentPostProcessor, p.PType))
postprocessorsPlugin, postprocessorsPluginOk := GlobalPluginsDetailsStore.Get(fmt.Sprintf("%q-%q", PluginComponentPostProcessor, p.PType))
if postprocessorsPluginOk {
resp[postprocessorsPlugin.Name] = postprocessorsPlugin
}
}
}

for _, pv := range b.Provisioners {
provisionerPlugin, provisionerPluginOk := PluginsDetailsStorage.GetPlugin(fmt.Sprintf("%q-%q", PluginComponentProvisioner, pv.PType))
provisionerPlugin, provisionerPluginOk := GlobalPluginsDetailsStore.Get(fmt.Sprintf("%q-%q", PluginComponentProvisioner, pv.PType))
if provisionerPluginOk {
resp[provisionerPlugin.Name] = provisionerPlugin
}
Expand Down
45 changes: 18 additions & 27 deletions packer/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error
c.Builders.Set(key, func() (packersdk.Builder, error) {
return c.Client(pluginPath, "start", "builder", builderName).Builder()
})
PluginsDetailsStorage.AddPlugin(fmt.Sprintf("%q-%q", PluginComponentBuilder, key), pluginDetails)
GlobalPluginsDetailsStore.Set(fmt.Sprintf("%q-%q", PluginComponentBuilder, key), pluginDetails)

}

Expand All @@ -169,7 +169,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error
c.PostProcessors.Set(key, func() (packersdk.PostProcessor, error) {
return c.Client(pluginPath, "start", "post-processor", postProcessorName).PostProcessor()
})
PluginsDetailsStorage.AddPlugin(fmt.Sprintf("%q-%q", PluginComponentPostProcessor, key), pluginDetails)
GlobalPluginsDetailsStore.Set(fmt.Sprintf("%q-%q", PluginComponentPostProcessor, key), pluginDetails)
}

if len(desc.PostProcessors) > 0 {
Expand All @@ -185,7 +185,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error
c.Provisioners.Set(key, func() (packersdk.Provisioner, error) {
return c.Client(pluginPath, "start", "provisioner", provisionerName).Provisioner()
})
PluginsDetailsStorage.AddPlugin(fmt.Sprintf("%q-%q", PluginComponentProvisioner, key), pluginDetails)
GlobalPluginsDetailsStore.Set(fmt.Sprintf("%q-%q", PluginComponentProvisioner, key), pluginDetails)

}
if len(desc.Provisioners) > 0 {
Expand All @@ -201,7 +201,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error
c.DataSources.Set(key, func() (packersdk.Datasource, error) {
return c.Client(pluginPath, "start", "datasource", datasourceName).Datasource()
})
PluginsDetailsStorage.AddPlugin(fmt.Sprintf("%q-%q", PluginComponentDataSource, key), pluginDetails)
GlobalPluginsDetailsStore.Set(fmt.Sprintf("%q-%q", PluginComponentDataSource, key), pluginDetails)
}
if len(desc.Datasources) > 0 {
log.Printf("found external %v datasource from %s plugin", desc.Datasources, pluginName)
Expand Down Expand Up @@ -269,35 +269,26 @@ type PluginDetails struct {
PluginPath string
}

type SafePluginsDetailsStorage struct {
mutex sync.RWMutex
data map[string]PluginDetails
type PluginsDetailsStorage struct {
rwMutex sync.RWMutex
data map[string]PluginDetails
}

var (
PluginsDetailsStorage *SafePluginsDetailsStorage
once sync.Once
)

func init() {
once.Do(func() {
PluginsDetailsStorage = &SafePluginsDetailsStorage{
data: make(map[string]PluginDetails),
}
})
var GlobalPluginsDetailsStore = &PluginsDetailsStorage{
data: make(map[string]PluginDetails),
}

func (spds *SafePluginsDetailsStorage) AddPlugin(key string, plugin PluginDetails) {
spds.mutex.Lock()
defer spds.mutex.Unlock()
if _, exists := spds.data[key]; !exists {
spds.data[key] = plugin
func (pds *PluginsDetailsStorage) Set(key string, plugin PluginDetails) {
pds.rwMutex.Lock()
defer pds.rwMutex.Unlock()
if _, exists := pds.data[key]; !exists {
pds.data[key] = plugin
}
}

func (spds *SafePluginsDetailsStorage) GetPlugin(key string) (PluginDetails, bool) {
spds.mutex.RLock()
plugin, exists := spds.data[key]
spds.mutex.RUnlock()
func (pds *PluginsDetailsStorage) Get(key string) (PluginDetails, bool) {
pds.rwMutex.RLock()
defer pds.rwMutex.RUnlock()
plugin, exists := pds.data[key]
return plugin, exists
}

0 comments on commit 7dbaa7f

Please sign in to comment.