Skip to content

Commit 543fb87

Browse files
committed
configuration reading.
1 parent d2f21ee commit 543fb87

File tree

5 files changed

+71
-54
lines changed

5 files changed

+71
-54
lines changed

ConfigurationReader.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package warden
2+
3+
import (
4+
// "io"
5+
// "fmt"
6+
"encoding/json"
7+
"io/ioutil"
8+
"log"
9+
// "time"
10+
// "strconv"
11+
)
12+
13+
type ConfigurationReader struct {
14+
configFilename string
15+
}
16+
17+
// New creates a new instance of the configuration reader for this passed filename
18+
func NewConfigurationReader(filename string) *ConfigurationReader {
19+
return &ConfigurationReader{configFilename: filename}
20+
} // NewConfigurationReader
21+
22+
func (configurationReader *ConfigurationReader) Read() *Configuration {
23+
data, err := ioutil.ReadFile(configurationReader.configFilename)
24+
if err != nil {
25+
log.Fatal(err)
26+
}
27+
28+
var config *Configuration
29+
if err:= json.Unmarshal(data, &config); err != nil {
30+
return nil
31+
}
32+
33+
return config
34+
} // Read

FileServiceDescriptionReader.go

+2
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ import (
1010
// "strconv"
1111
)
1212

13+
1314
type FileServiceDescriptionReader struct {
1415
config string
1516
}
1617

18+
// New creates a new instance of the service description reader for this passed filename
1719
func NewFileServiceDescriptionReader(config string) *FileServiceDescriptionReader {
1820
return &FileServiceDescriptionReader{config: config}
1921
} // NewFileServiceDescriptionReader

registrar.go

+1-14
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,4 @@ func (warden *Warden) getMatchingContainers(logger func(s string), containerName
7878
panic(err)
7979
}
8080
return []string { fmt.Sprintf("%s", out) }
81-
} // getMatchingContainers
82-
83-
func (warden *Warden) availabilityZoneIsActive(logger func(s string), z string) bool {
84-
// get list of active availability zones
85-
activeZones := warden.getActiveAvailabilityZones(logger)
86-
87-
for _, v := range activeZones {
88-
if v == z {
89-
return true
90-
}
91-
}
92-
93-
return false
94-
} // availabilityZoneIsActive
81+
} // getMatchingContainers

types.go

+9
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,13 @@ type ServiceDescription struct {
2020

2121
type ServiceDescriptionReader interface {
2222
Read() []*ServiceDescription
23+
}
24+
25+
// Configuration holds the basic environment information for Warden including Redis details and the name of the service description file
26+
type Configuration struct {
27+
ServiceManagementRedisAddress string `json:"serviceManagementRedisAddress"`
28+
ServiceManagementRedisDatabaseNumber int64 `json:"serviceManagementRedisDatabaseNumber"`
29+
NginxRedisAddress string `json:"nginxRedisAddress"`
30+
NginxRedisDatabaseNumber int64 `json:"nginxRedisDatabaseNumber"`
31+
ServiceDescriptionFilename string `json:"serviceDescriptionFilename"`
2332
}

warden.go

+25-40
Original file line numberDiff line numberDiff line change
@@ -27,39 +27,39 @@ const ActivityPause = 300
2727
const ServiceManagerPause = 30
2828
const CandidateExpiry = 30
2929

30+
func wardenLog(s string) {
31+
fmt.Printf("warden: %s\n", s)
32+
} // WardenLog
33+
3034
// Start will run both the registrar and manager co-routines.
3135
func (warden *Warden) Start() {
32-
fmt.Println("Warden starting...")
36+
wardenLog("starting...")
3337

3438
// fetch some runtime constants:
3539
// get instance ID
3640
// get current availability zone
37-
warden.region, warden.availabilityZone, warden.instanceId = warden.getInstanceIdentity(func(s string) { fmt.Printf("warden: %s\n", s) })
38-
39-
panic(warden.instanceId)
40-
41-
serviceManagementRedisAddress := "localhost:6379"
42-
var serviceManagementRedisDatabaseNumber int64 = 11
43-
nginxRedisAddress := "localhost:6379"
44-
var nginxRedisDatabaseNumber int64 = 15
41+
warden.region, warden.availabilityZone, warden.instanceId = warden.getInstanceIdentity(wardenLog)
4542

46-
var serviceDescriptionReaderConfig = "services.json"
43+
wardenLog(fmt.Sprintf("region is %s\navailability zone is %s\ninstance ID is %s", warden.region, warden.availabilityZone, warden.instanceId))
4744

45+
configReader := NewConfigurationReader("config.json")
46+
configuration := configReader.Read()
47+
4848
var serviceDescriptionReader ServiceDescriptionReader
49-
serviceDescriptionReader = NewFileServiceDescriptionReader(serviceDescriptionReaderConfig)
49+
serviceDescriptionReader = NewFileServiceDescriptionReader(configuration.ServiceDescriptionFilename)
5050

5151
warden.services = (serviceDescriptionReader).Read()
5252

5353
warden.redisServiceManagement = redis.NewClient(&redis.Options{
54-
Addr: serviceManagementRedisAddress,
54+
Addr: configuration.ServiceManagementRedisAddress,
5555
Password: "",
56-
DB: serviceManagementRedisDatabaseNumber,
56+
DB: configuration.ServiceManagementRedisDatabaseNumber,
5757
})
5858

5959
warden.redisLocal = redis.NewClient(&redis.Options{
60-
Addr: nginxRedisAddress,
60+
Addr: configuration.NginxRedisAddress,
6161
Password: "",
62-
DB: nginxRedisDatabaseNumber,
62+
DB: configuration.NginxRedisDatabaseNumber,
6363
})
6464

6565
// start registrar coroutine
@@ -70,8 +70,6 @@ func (warden *Warden) Start() {
7070
fmt.Println("Warden finishing...")
7171
} // main
7272

73-
74-
7573
func (warden *Warden) ourAvailabilityZoneIsActive(logger func(s string)) bool {
7674
return warden.availabilityZoneIsActive(logger, warden.availabilityZone)
7775
} // ourAvailabilityZoneIsActive
@@ -103,28 +101,15 @@ func (warden *Warden) getInstanceIdentity(logger func(s string)) (string, string
103101
return doc.Region, doc.AvailabilityZone, doc.InstanceID
104102
} // getInstanceIdentity
105103

106-
func (warden *Warden) getAvailabilityZone(logger func(s string)) string {
107-
logger("getting availability zone")
108-
m := ec2metadata.New(session.New())
109-
doc, err := m.GetInstanceIdentityDocument()
110-
if err != nil {
111-
panic(err)
112-
}
113-
return doc.AvailabilityZone
114-
} // getAvailabilityZone
115-
116-
func (warden *Warden) getInstanceId(logger func(s string)) string {
117-
logger("getting instance Id")
104+
func (warden *Warden) availabilityZoneIsActive(logger func(s string), z string) bool {
105+
// get list of active availability zones
106+
activeZones := warden.getActiveAvailabilityZones(logger)
118107

119-
return "def1"
120-
} // getInstanceId
121-
122-
func (warden *Warden) getRegion(logger func(s string)) string {
123-
logger("getting region")
124-
m := ec2metadata.New(session.New())
125-
region, err := m.Region()
126-
if err != nil {
127-
panic(err)
108+
for _, v := range activeZones {
109+
if v == z {
110+
return true
111+
}
128112
}
129-
return region
130-
} // getRegion
113+
114+
return false
115+
} // availabilityZoneIsActive

0 commit comments

Comments
 (0)