Skip to content

Commit 8939bc7

Browse files
Merge pull request #81 from ingrammicro/fix-operation-detection-mechanism
Improved operation detection mechanism
2 parents 0e4b5d8 + 25bb08b commit 8939bc7

File tree

3 files changed

+20
-11
lines changed

3 files changed

+20
-11
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19.1.3
1+
19.1.4

apsconnectcli/apsconnect.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def install_frontend(self, source, oauth_key, oauth_secret, backend_url, setting
8080
connection = hub.get_connections(package.product_id)
8181
print("Detected connection {} for this Hub and product {}".format(connection['id'],
8282
package.product_id))
83-
operation = hub.check_package_operation(package, experimental)
83+
operation = hub.check_package_operation(package)
8484
update_rts = False
8585
if operation == "install":
8686
print("Importing connector {} version {}.{}".format(package.connector_id,

apsconnectcli/hub.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -178,24 +178,33 @@ def aps_devel_mode(self, disable=False):
178178
osaapi_raise_for_status(r)
179179
print("APS Development mode {}.".format('DISABLED' if disable else 'ENABLED'))
180180

181-
def check_package_operation(self, package, experimental):
182-
url = '/aps/2/types?implementing({}/app)'.format(package.connector_id)
181+
def check_package_operation(self, package):
182+
app_id = self.get_application_id(package.connector_id)
183+
if app_id is None:
184+
print("INFO: package is not installed")
185+
return "install"
186+
app_instances = self.get_application_instances(int(app_id))
187+
if len(app_instances) == 0:
188+
return "install"
189+
url = '/aps/2/resources/{}'.format(app_instances[0]['application_resource_id'])
183190
r = self.aps.get(url)
184191
try:
185192
data = json.loads(r.content.decode('utf-8'))
186193
except ValueError:
187194
print("APSController provided non-json format")
188195
sys.exit(1)
189-
if len(data) == 0:
196+
if 'aps' not in data:
190197
print("INFO: package is not installed")
191198
return "install"
192199
latest = 0
193-
for type in data:
194-
match = re.match(r'{}/app/(?P<major>\d+)\.0'.format(package.connector_id), type['id'])
195-
if match:
196-
major = int(match.groupdict()['major'])
197-
if int(latest) < major:
198-
latest = major
200+
match = re.match(r'{}/app/(?P<major>\d+)\.0'.format(
201+
package.connector_id),
202+
data['aps']['type']
203+
)
204+
if match:
205+
major = int(match.groupdict()['major'])
206+
if int(latest) < major:
207+
latest = major
199208
if int(latest) == int(package.version):
200209
return "createRTs"
201210
elif int(latest) > int(package.version):

0 commit comments

Comments
 (0)