Skip to content

Commit c5ad710

Browse files
authored
Merge pull request #1 from j12y/feature/manifest-services
rename env vars, app manifest create/get for services
2 parents 057892d + 86ef9c9 commit c5ad710

File tree

12 files changed

+192
-54
lines changed

12 files changed

+192
-54
lines changed

predix/admin/acs.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ def create(self):
2929
starting settings.
3030
"""
3131
self.service.create()
32-
os.environ['PREDIX_ACS_URI'] = self.service.settings.data['uri']
33-
os.environ['PREDIX_ACS_ZONE_ID'] = self.service.serttings.data['zone']['http-header-value']
32+
os.environ[self.__module__ + '.uri'] = self.service.settings.data['uri']
33+
os.environ[self.__module__ + '.zone_id'] = self.service.settings.data['zone']['http-header-value']
3434

3535
def grant_client(self, client_id):
3636
"""
@@ -63,9 +63,9 @@ def add_to_manifest(self, manifest_path):
6363
manifest.add_service(self.service.name)
6464

6565
# Add environment variables
66-
manifest.add_env_var('PREDIX_ACS_URI',
66+
manifest.add_env_var(self.__module__ + '.uri',
6767
self.service.settings.data['uri'])
68-
manifest.add_env_var('PREDIX_ACS_ZONE_ID',
68+
manifest.add_env_var(self.__module__ + '.zone_id',
6969
self.service.settings.data['zone']['http-header-value'])
7070

7171
manifest.write_manifest()

predix/admin/asset.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ def create(self):
2929
starting settings.
3030
"""
3131
self.service.create()
32-
os.environ['PREDIX_ASSET_URI'] = self.service.settings.data['uri']
33-
os.environ['PREDIX_ASSET_ZONE_ID'] = self.get_zone_id()
32+
os.environ[self.__module__ + '.uri'] = self.service.settings.data['uri']
33+
os.environ[self.__module__ + '.zone_id'] = self.get_zone_id()
3434

3535
def grant_client(self, client_id):
3636
"""
@@ -65,8 +65,8 @@ def add_to_manifest(self, manifest_path):
6565
manifest.add_service(self.service.name)
6666

6767
# Add environment variables
68-
manifest.add_env_var('PREDIX_ASSET_URI',
68+
manifest.add_env_var(self.__module__ + '.uri',
6969
self.service.settings.data['uri'])
70-
manifest.add_env_var('PREDIX_ASSET_ZONE_ID', self.get_zone_id())
70+
manifest.add_env_var(self.__module__ + '.zone_id', self.get_zone_id())
7171

7272
manifest.write_manifest()

predix/admin/service.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ def _delete_service(self, service_only=False):
5555
Delete a Cloud Foundry service and any associations.
5656
"""
5757
logging.debug('_delete_service()')
58-
# delete this ser
59-
pass
58+
return self.service.delete_service(self.service_name)
6059

6160
def _get_or_create_service_key(self):
6261
"""

predix/admin/timeseries.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,17 @@ def create(self):
3232
self.service.create()
3333

3434
uri = self.service.settings.data['ingest']['uri']
35-
os.environ['PREDIX_TIMESERIES_INGEST_URI'] = uri
35+
os.environ[self.__module__ + '.ingest.uri'] = uri
3636

3737
zone = self.get_ingest_zone_id()
38-
os.environ['PREDIX_TIMESERIES_INGEST_ZONE_ID'] = zone
38+
os.environ[self.__module__ + '.ingest.zone_id'] = zone
3939

4040
uri = self.service.settings.data['query']['uri']
4141
uri = urlparse.urlparse(uri)
42-
os.environ['PREDIX_TIMESERIES_QUERY_URI'] = uri.scheme + '://' + uri.netloc
42+
os.environ[self.__module__ + '.query.uri'] = uri.scheme + '://' + uri.netloc
4343

4444
zone = self.get_query_zone_id()
45-
os.environ['PREDIX_TIMESERIES_QUERY_ZONE_ID'] = zone
45+
os.environ[self.__module__ + '.query.zone_id'] = zone
4646

4747
def grant_client(self, client_id, read=True, write=True):
4848
"""
@@ -92,17 +92,17 @@ def add_to_manifest(self, manifest_path):
9292
manifest.add_service(self.service.name)
9393

9494
# Add environment variables
95-
manifest.add_env_var('PREDIX_TIMESERIES_INGEST_URI',
95+
manifest.add_env_var(self.__module__ + '.ingest.uri',
9696
self.service.settings.data['ingest']['uri'])
97-
manifest.add_env_var('PREDIX_TIMESERIES_INGEST_ZONE_ID',
97+
manifest.add_env_var(self.__module__ + '.ingest.zone_id',
9898
self.get_ingest_zone_id())
9999

100100
# Query URI has extra path we don't want
101101
uri = self.service.settings.data['query']['uri']
102102
uri = urlparse.urlparse(uri)
103-
manifest.add_env_var('PREDIX_TIMESERIES_QUERY_URI',
103+
manifest.add_env_var(self.__module__ + '.query.uri',
104104
uri.scheme + '://' + uri.netloc)
105-
manifest.add_env_var('PREDIX_TIMESERIES_QUERY_ZONE_ID',
105+
manifest.add_env_var(self.__module__ + '.query.zone_id',
106106
self.get_query_zone_id())
107107

108108
manifest.write_manifest()

predix/admin/uaa.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ def create(self, secret):
4343
parameters = {"adminClientSecret": secret}
4444
self.service.create(parameters=parameters)
4545

46+
uri = self.service.settings.data['uri']
47+
os.environ[self.__module__ + '.uri'] = uri
48+
4649
# Once we create it login
4750
self.authenticate()
4851

@@ -57,7 +60,7 @@ def add_to_manifest(self, manifest_path):
5760
manifest.add_service(self.service.name)
5861

5962
# Add environment variables
60-
manifest.add_env_var('PREDIX_UAA_URI',
63+
manifest.add_env_var(self.__module__ + '.uri',
6164
self.service.settings.data['uri'])
6265

6366
manifest.write_manifest()
@@ -66,7 +69,7 @@ def authenticate(self):
6669
"""
6770
Authenticate into the UAA instance as the admin user.
6871
"""
69-
os.environ['PREDIX_UAA_URI'] = self.service.settings.data['uri']
72+
os.environ[self.__module__ + '.uri'] = self.service.settings.data['uri']
7073
self.uaac = predix.security.uaa.UserAccountAuthentication()
7174
self.uaac.authenticate('admin', self._get_admin_secret(),
7275
use_cache=False)

predix/admin/weather.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ def create(self):
2727
self.service.create()
2828

2929
zone = self.service.settings.data['zone']['http-header-value']
30-
os.environ['PREDIX_WEATHER_ZONE_ID'] = zone
30+
os.environ[self.__module__ + '.zone_id'] = zone
3131
uri = self.service.settings.data['uri']
32-
os.environ['PREDIX_WEATHER_URI'] = uri
32+
os.environ[self.__module__ + '.uri'] = uri
3333

3434
def add_to_manifest(self, manifest_path):
3535
manifest = predix.app.Manifest(manifest_path)
@@ -38,9 +38,9 @@ def add_to_manifest(self, manifest_path):
3838
manifest.add_service(self.service.name)
3939

4040
# Add environment variables
41-
manifest.add_env_var('PREDIX_WEATHER_ZONE_ID',
41+
manifest.add_env_var(self.__module__ + '.zone_id',
4242
self.service.settings.data['zone']['http-header-value'])
43-
manifest.add_env_var('PREDIX_WEATHER_URI',
43+
manifest.add_env_var(self.__module__ + '.uri',
4444
self.service.settings.data['uri'])
4545

4646
manifest.write_manifest()

predix/app.py

Lines changed: 137 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ def __init__(self, manifest_path, app_name='my-predix-app'):
1414
self.manifest_path = os.path.expanduser(manifest_path)
1515
self.app_name = app_name
1616

17+
# App may have a client
18+
self.client_id = None
19+
self.client_secret = None
20+
1721
# Read or Generate a manifest file
1822
if os.path.exists(self.manifest_path):
1923
manifest = self.read_manifest()
@@ -89,17 +93,144 @@ def get_client_id(self):
8993
needed scopes and authorities for the services
9094
in this manifest.
9195
"""
92-
if 'PREDIX_APP_CLIENT_ID' not in self.manifest['env']:
93-
raise ValueError('UAA client id must be added to manifest.')
96+
key = 'predix.security.uaa.client_id'
97+
if key not in self.manifest['env']:
98+
raise ValueError("%s undefined in manifest." % key)
9499

95-
return self.manifest['env']['PREDIX_APP_CLIENT_ID']
100+
self.client_id = self.manifest['env'][key]
101+
return self.client_id
96102

97103
def get_client_secret(self):
98104
"""
99105
Return the client secret that should correspond with
100106
the client id.
101107
"""
102-
if 'PREDIX_APP_CLIENT_SECRET' not in self.manifest['env']:
103-
raise ValueError('UAA client secret must be added to manifest.')
108+
key = 'predix.security.uaa.client_secret'
109+
if key not in self.manifest['env']:
110+
raise ValueError("%s must be added to manifest." % key)
111+
112+
self.client_secret = self.manifest['env'][key]
113+
return self.client_secret
114+
115+
def create_timeseries(self):
116+
"""
117+
Creates an instance of the Time Series Service.
118+
"""
119+
import predix.admin.timeseries
120+
ts = predix.admin.timeseries.TimeSeries()
121+
ts.create()
122+
123+
client_id = self.get_client_id()
124+
if client_id:
125+
ts.grant_client(client_id)
126+
127+
ts.add_to_manifest(self.manifest_path)
128+
return ts
129+
130+
def get_timeseries(self, *args, **kwargs):
131+
"""
132+
Returns an instance of the Time Series Service.
133+
"""
134+
import predix.data.timeseries
135+
ts = predix.data.timeseries.TimeSeries(*args, **kwargs)
136+
return ts
137+
138+
def create_asset(self):
139+
"""
140+
Creates an instance of the Asset Service.
141+
"""
142+
import predix.admin.asset
143+
asset = predix.admin.asset.Asset()
144+
asset.create()
145+
146+
client_id = self.get_client_id()
147+
if client_id:
148+
asset.grant_client(client_id)
149+
150+
asset.add_to_manifest(self.manifest_path)
151+
return asset
152+
153+
def get_asset(self):
154+
"""
155+
Returns an instance of the Asset Service.
156+
"""
157+
import predix.data.asset
158+
asset = predix.data.asset.Asset()
159+
return asset
160+
161+
def create_uaa(self, admin_secret):
162+
"""
163+
Creates an instance of UAA Service.
164+
"""
165+
import predix.admin.uaa
166+
uaa = predix.admin.uaa.UserAccountAuthentication()
167+
if not uaa.exists():
168+
uaa.create(admin_secret)
169+
uaa.add_to_manifest(self.manifest_path)
170+
return uaa
104171

105-
return self.manifest['env']['PREDIX_APP_CLIENT_SECRET']
172+
def create_client(self, client_id, client_secret):
173+
"""
174+
Create a client and add it to the manifest.
175+
"""
176+
import predix.admin.uaa
177+
uaa = predix.admin.uaa.UserAccountAuthentication()
178+
uaa.create_client(client_id, client_secret)
179+
uaa.add_client_to_manifest(client_id, client_secret,
180+
self.manifest_path)
181+
182+
def get_uaa(self):
183+
"""
184+
Returns an insstance of the UAA Service.
185+
"""
186+
import predix.security.uaa
187+
uaa = predix.security.uaa.UserAccountAuthentication()
188+
return uaa
189+
190+
def create_acs(self):
191+
"""
192+
Creates an instance of the Asset Service.
193+
"""
194+
import predix.admin.acs
195+
acs = predix.admin.acs.AccessControl()
196+
acs.create()
197+
198+
client_id = self.get_client_id()
199+
if client_id:
200+
acs.grant_client(client_id)
201+
202+
acs.grant_client(client_id)
203+
acs.add_to_manifest(self.manifest_path)
204+
return acs
205+
206+
def get_acs(self):
207+
"""
208+
Returns an instance of the Asset Control Service.
209+
"""
210+
import predix.security.acs
211+
acs = predix.security.acs.AccessControl()
212+
return acs
213+
214+
def create_weather(self):
215+
"""
216+
Creates an instance of the Asset Service.
217+
"""
218+
import predix.admin.weather
219+
weather = predix.admin.weather.WeatherForecast()
220+
weather.create()
221+
222+
client_id = self.get_client_id()
223+
if client_id:
224+
weather.grant_client(client_id)
225+
226+
weather.grant_client(client_id)
227+
weather.add_to_manifest(self.manifest_path)
228+
return weather
229+
230+
def get_weather(self):
231+
"""
232+
Returns an instance of the Weather Service.
233+
"""
234+
import predix.data.weather
235+
weather = predix.data.weather.WeatherForecast()
236+
return weather

predix/data/asset.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ class Asset(object):
1616
def __init__(self, *args, **kwargs):
1717
super(Asset, self).__init__(*args, **kwargs)
1818

19-
self.zone_id = os.environ.get('PREDIX_ASSET_ZONE_ID')
19+
ns = 'predix.admin.asset'
20+
self.zone_id = os.environ.get(ns + '.zone_id')
2021
if not self.zone_id:
21-
raise ValueError('PREDIX_ASSET_ZONE_ID environment unset')
22+
raise ValueError("%s.zone_id environment unset" % ns)
2223

23-
self.uri = os.environ.get('PREDIX_ASSET_URI')
24+
self.uri = os.environ.get(ns + '.uri')
2425
if not self.uri:
25-
raise ValueError('PREDIX_ASSET_URI environment unset')
26+
raise ValueError("%s.uri environment unset" % ns)
2627

2728
self.service = predix.service.Service(self.zone_id)
2829

predix/data/timeseries.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,24 @@ class TimeSeries(object):
2323
def __init__(self, read=True, write=True, *args, **kwargs):
2424
super(TimeSeries, self).__init__(*args, **kwargs)
2525

26-
self.query_zone_id = os.environ.get('PREDIX_TIMESERIES_QUERY_ZONE_ID')
27-
self.query_uri = os.environ.get('PREDIX_TIMESERIES_QUERY_URI')
26+
ns = 'predix.admin.timeseries'
27+
self.query_zone_id = os.environ.get(ns + '.query.zone_id')
28+
self.query_uri = os.environ.get(ns + '.query.uri')
2829
if read:
2930
if not self.query_zone_id:
30-
raise ValueError('PREDIX_TIMESERIES_QUERY_ZONE_ID env unset')
31+
raise ValueError("%s.query.zone_id env unset" % ns)
3132

3233
if not self.query_uri:
33-
raise ValueError('PREDIX_TIMESERIES_QUERY_URI environment unset')
34+
raise ValueError("%s.query.uri environment unset" % ns)
3435

35-
self.ingest_zone_id = os.environ.get('PREDIX_TIMESERIES_INGEST_ZONE_ID')
36-
self.ingest_uri = os.environ.get('PREDIX_TIMESERIES_INGEST_URI')
36+
self.ingest_zone_id = os.environ.get(ns + '.ingest.zone_id')
37+
self.ingest_uri = os.environ.get(ns + '.ingest.uri')
3738
if write:
3839
if not self.ingest_zone_id:
39-
raise ValueError('PREDIX_TIMESERIES_INGEST_ZONE_ID env unset')
40+
raise ValueError("%s.ingest.zone_id env unset" % ns)
4041

4142
if not self.ingest_uri:
42-
raise ValueError('PREDIX_TIMESERIES_INGEST_URI environment unset')
43+
raise ValueError("%s.ingest.uri environment unset" % ns)
4344

4445
self.service = predix.service.Service(self.query_zone_id)
4546

predix/data/weather.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ class WeatherForecast(object):
99
def __init__(self, *args, **kwargs):
1010
super(WeatherForecast, self).__init__(*args, **kwargs)
1111

12-
self.uri = os.environ.get('PREDIX_WEATHER_URI')
12+
ns = 'predix.admin.weather'
13+
self.uri = os.environ.get(ns + '.uri')
1314
if not self.uri:
14-
raise ValueError("PREDIX_WEATHER_URI environment unset")
15+
raise ValueError("%s.uri environment unset" % ns)
1516

16-
self.zone_id = os.environ.get('PREDIX_WEATHER_ZONE_ID')
17+
self.zone_id = os.environ.get(ns + '.zone_id')
1718
if not self.zone_id:
18-
raise ValueError("PREDIX_WEATHER_ZONE_ID environment unset")
19+
raise ValueError("%s.zone_id environment unset" % ns)
1920

2021
self.service = predix.service.Service(self.zone_id)
2122

0 commit comments

Comments
 (0)