@@ -55,7 +55,13 @@ def load_components_and_configurations(self,force=False):
55
55
# for QM, no configs to load!
56
56
return
57
57
elif self .singlemode :
58
+
59
+ # xmlns:ns3="http://open-services.net/ns/core#
60
+ # <ns3:details ns4:resource="https://jazz.ibm.com:9443/qm/process/project-areas/_AzVy8LOJEe6f6NR46ab0Iw"/>
58
61
logger .debug ( f"{ self .singlemode = } " )
62
+ self .singlemode = False
63
+ self .is_optin = False
64
+ return
59
65
#get the single component from a QueryCapability
60
66
# <oslc:QueryCapability>
61
67
# <oslc_config:component rdf:resource="https://mb02-calm.rtp.raleigh.ibm.com:9443/rm/cm/component/_ln_roBIOEeumc4tx0skHCA"/>
@@ -68,9 +74,8 @@ def load_components_and_configurations(self,force=False):
68
74
69
75
sx = self .get_services_xml ()
70
76
assert sx is not None , "sx is None"
71
- compuri = rdfxml .xmlrdf_get_resource_uri (sx , ".//oslc:QueryCapability/oslc_config:component " )
77
+ compuri = rdfxml .xmlrdf_get_resource_uri (sx , ".//oslc:details " )
72
78
assert compuri is not None , "compuri is None"
73
-
74
79
ncomps += 1
75
80
self ._components [compuri ] = {'name' : self .name , 'configurations' : {}, 'confs_to_load' : []}
76
81
configs = self .execute_get_xml ( compuri + "/configurations" , intent = "Retrieve all project/component configurations (singlemode)" )
@@ -469,6 +474,43 @@ def _get_headers(self, headers=None):
469
474
result .update (headers )
470
475
return result
471
476
477
+ # load the projects from the project areas XML - doesn't create any project classes, this is done later when finding a project to open
478
+ # this is specific to QM so that projects enabled for baselines are treated as opt-out (which means you can't query baselines!)
479
+ def _load_projects (self ,include_archived = False ,force = False ):
480
+ if self .project_class is None :
481
+ raise Exception (f"projectClass has not been set on { self } !" )
482
+ if self ._projects is not None and not force :
483
+ return
484
+ logger .info ( "Loading projects" )
485
+ self ._projects = {}
486
+ uri = rdfxml .xmlrdf_get_resource_uri (self .rootservices_xml , 'jp06:projectAreas' )
487
+ params = {}
488
+ if include_archived :
489
+ params ['includeArchived' ] = 'true'
490
+ self .project_areas_xml = self .execute_get_xml (uri , params = params , intent = "Retrieve all project area definitions" )
491
+ logger .debug ( f"{ self .project_areas_xml = } " )
492
+ for projectel in rdfxml .xml_find_elements (self .project_areas_xml ,".//jp06:project-area" ):
493
+ logger .debug ( f"{ projectel = } " )
494
+ projectu = rdfxml .xmlrdf_get_resource_text (projectel ,".//jp06:url" )
495
+ projectname = rdfxml .xmlrdf_get_resource_uri (projectel ,attrib = 'jp06:name' )
496
+ logger .debug ( f"{ projectname = } " )
497
+ is_optin = False
498
+ singlemode = False
499
+ if self .supports_configs :
500
+ en = rdfxml .xmlrdf_get_resource_text (projectel ,'.//jp:configuration-management-enabled' )
501
+ is_optin = ( rdfxml .xmlrdf_get_resource_text (projectel ,'.//jp:configuration-management-enabled' ) == "true" )
502
+ singlemode = ( rdfxml .xmlrdf_get_resource_text (projectel ,'.//jp:configuration-management-mode' ) == "SINGLE" )
503
+ if singlemode :
504
+ # for QM, treat opt-in SINGLE as opt-out
505
+ is_optin = False
506
+ singlemode = False
507
+ logger .info ( f"{ projectname = } { projectu = } { is_optin = } { singlemode = } " )
508
+
509
+ self ._projects [projectu ] = {'name' :projectname , 'project' : None , 'projectu' : projectu , 'is_optin' : is_optin , 'singlemode' : singlemode }
510
+ self ._projects [projectname ] = projectu
511
+
512
+
513
+
472
514
# load the typesystem using the OSLC shape resources listed for all the creation factories and query capabilities
473
515
def load_types (self , force = False ):
474
516
self ._load_types (force )
0 commit comments