2
2
3
3
from __future__ import absolute_import
4
4
5
+ import copy
5
6
import datetime
6
7
import hashlib
7
8
import fnmatch
@@ -189,6 +190,13 @@ def list_by_post(self, query):
189
190
pass
190
191
191
192
193
+ class User (WeCubeResource ):
194
+ def list (self , params ):
195
+ api_client = self .get_cmdb_client ()
196
+ url = self .server + '/platform/v1/users/retrieve'
197
+ resp_json = api_client .get (url , {}, check_resp = False )
198
+ return resp_json .get ('data' , [])
199
+
192
200
class ProcessDef (WeCubeResource ):
193
201
def list (self , params ):
194
202
params ['plugin' ] = 'artifacts'
@@ -375,6 +383,24 @@ def list_by_post(self, query, unit_design_id):
375
383
i [field ] = self .build_file_object (i .get (field , None ))
376
384
return resp_json ['data' ]
377
385
386
+ def get_package_statistics (self , post_data , unit_design_id ):
387
+ cmdb_client = self .get_cmdb_client ()
388
+ result = {}
389
+ post_data = post_data or {}
390
+ query = post_data
391
+ query .setdefault ('dialect' , {"queryMode" : "new" })
392
+ query .setdefault ('filters' , [])
393
+ query .setdefault ('paging' , True )
394
+ query .setdefault ('pageable' , {'pageSize' :1 , 'startIndex' : 1 })
395
+ self .set_package_query_fields (query )
396
+ query ['filters' ].append ({"name" : "unit_design" , "operator" : "eq" , "value" : unit_design_id })
397
+ for t in [constant .PackageType .app , constant .PackageType .db , constant .PackageType .mixed , constant .PackageType .image , constant .PackageType .rule ]:
398
+ query_tmp = copy .deepcopy (query )
399
+ query_tmp ['filters' ].append ({"name" : field_pkg_package_type_name , "operator" : "eq" , "value" : t })
400
+ resp_json = cmdb_client .retrieve (CONF .wecube .wecmdb .citypes .deploy_package , query_tmp )
401
+ result [t ] = resp_json ['data' ]['pageInfo' ]['totalRows' ]
402
+ return result
403
+
378
404
def build_file_object (self , filenames , spliter = None ):
379
405
if spliter is None :
380
406
spliter = r'[|,]'
@@ -773,7 +799,9 @@ def _pack_compose_package(self, pack_filepath, deploy_package_id:str):
773
799
tar .add (package_path_db_diffconfigs , arcname = os .path .basename (package_path_db_diffconfigs ))
774
800
return output_filename
775
801
776
- def upload (self , filename , filetype , fileobj , baseline_package , unit_design_id ):
802
+ def upload (self , filename , filetype , fileobj , baseline_package , package_type , unit_design_id ):
803
+ if not package_type :
804
+ package_type = constant .PackageType .default
777
805
if not is_upload_local_enabled ():
778
806
raise exceptions .PluginError (message = _ ("Package uploading is disabled!" ))
779
807
if self ._is_compose_package (filename ):
@@ -803,7 +831,8 @@ def upload(self, filename, filetype, fileobj, baseline_package, unit_design_id):
803
831
field_pkg_is_decompression_name : field_pkg_is_decompression_default_value ,
804
832
'upload_user' : scoped_globals .GLOBALS .request .auth_user ,
805
833
'upload_time' : datetime .datetime .now ().strftime ('%Y-%m-%d %H:%M:%S' ),
806
- 'unit_design' : unit_design_id
834
+ 'unit_design' : unit_design_id ,
835
+ field_pkg_package_type_name : package_type
807
836
}]
808
837
exist_package = self ._get_deploy_package_by_name_unit (filename ,unit_design_id )
809
838
if exist_package is None :
@@ -812,13 +841,17 @@ def upload(self, filename, filetype, fileobj, baseline_package, unit_design_id):
812
841
package_rows [0 ]['guid' ] = exist_package ['guid' ]
813
842
package_result = self .pure_update (package_rows )
814
843
new_package_guid = package_result ['data' ][0 ]['guid' ]
815
- new_deploy_attrs = self ._analyze_package_attrs (new_package_guid , baseline_package , {})
844
+ new_deploy_attrs = self ._analyze_package_attrs (new_package_guid , baseline_package , {
845
+ field_pkg_package_type_name : package_type
846
+ })
816
847
# update 属性
817
848
new_deploy_attrs ['guid' ] = new_package_guid
818
849
self .pure_update ([new_deploy_attrs ])
819
850
return [self ._get_deploy_package_by_id (new_package_guid )]
820
851
821
- def upload_from_nexus (self , download_url , baseline_package , unit_design_id ):
852
+ def upload_from_nexus (self , download_url , baseline_package , package_type , unit_design_id ):
853
+ if not package_type :
854
+ package_type = constant .PackageType .default
822
855
if not is_upload_nexus_enabled ():
823
856
raise exceptions .PluginError (message = _ ("Package uploading is disabled!" ))
824
857
url_info = self .download_url_parse (download_url )
@@ -876,7 +909,8 @@ def upload_from_nexus(self, download_url, baseline_package, unit_design_id):
876
909
field_pkg_is_decompression_name : field_pkg_is_decompression_default_value ,
877
910
'upload_user' : scoped_globals .GLOBALS .request .auth_user ,
878
911
'upload_time' : datetime .datetime .now ().strftime ('%Y-%m-%d %H:%M:%S' ),
879
- 'unit_design' : unit_design_id
912
+ 'unit_design' : unit_design_id ,
913
+ field_pkg_package_type_name :package_type
880
914
}]
881
915
exist_package = self ._get_deploy_package_by_name_unit (url_info ['filename' ],unit_design_id )
882
916
if exist_package is None :
@@ -885,7 +919,9 @@ def upload_from_nexus(self, download_url, baseline_package, unit_design_id):
885
919
package_rows [0 ]['guid' ] = exist_package ['guid' ]
886
920
package_result = self .pure_update (package_rows )
887
921
new_package_guid = package_result ['data' ][0 ]['guid' ]
888
- new_deploy_attrs = self ._analyze_package_attrs (new_package_guid , baseline_package , {})
922
+ new_deploy_attrs = self ._analyze_package_attrs (new_package_guid , baseline_package , {
923
+ field_pkg_package_type_name : package_type
924
+ })
889
925
# update 属性
890
926
new_deploy_attrs ['guid' ] = new_package_guid
891
927
self .pure_update ([new_deploy_attrs ])
@@ -927,7 +963,8 @@ def upload_from_nexus(self, download_url, baseline_package, unit_design_id):
927
963
'upload_time' :
928
964
datetime .datetime .now ().strftime ('%Y-%m-%d %H:%M:%S' ),
929
965
'unit_design' :
930
- unit_design_id
966
+ unit_design_id ,
967
+ field_pkg_package_type_name :package_type
931
968
}]
932
969
exist_package = self ._get_deploy_package_by_name_unit (filename ,unit_design_id )
933
970
if exist_package is None :
@@ -936,7 +973,9 @@ def upload_from_nexus(self, download_url, baseline_package, unit_design_id):
936
973
package_rows [0 ]['guid' ] = exist_package ['guid' ]
937
974
package_result = self .pure_update (package_rows )
938
975
new_package_guid = package_result ['data' ][0 ]['guid' ]
939
- new_deploy_attrs = self ._analyze_package_attrs (new_package_guid , baseline_package , {})
976
+ new_deploy_attrs = self ._analyze_package_attrs (new_package_guid , baseline_package , {
977
+ field_pkg_package_type_name : package_type
978
+ })
940
979
# update 属性
941
980
new_deploy_attrs ['guid' ] = new_package_guid
942
981
self .pure_update ([new_deploy_attrs ])
@@ -958,6 +997,11 @@ def _pop_none(d, k):
958
997
rule = '1, 36' ,
959
998
rule_type = 'length' ,
960
999
nullable = False ),
1000
+ crud .ColumnValidator ('packageType' ,
1001
+ validate_on = ['update:O' ],
1002
+ rule = '1, 36' ,
1003
+ rule_type = 'length' ,
1004
+ nullable = True ),
961
1005
]
962
1006
clean_data = crud .ColumnValidator .get_clean_data (validates , data , 'update' )
963
1007
baseline_package_id = clean_data .get ('baselinePackage' )
@@ -966,7 +1010,7 @@ def _pop_none(d, k):
966
1010
url = CONF .wecube .nexus .server .rstrip (
967
1011
'/' ) + '/repository/' + CONF .wecube .nexus .repository + '/' + clean_data ['nexusUrl' ].lstrip ('/' )
968
1012
unit_design_id = baseline_package ['unit_design' ]['guid' ]
969
- new_pakcage = self .upload_from_nexus (url , baseline_package_id , unit_design_id )[0 ]
1013
+ new_pakcage = self .upload_from_nexus (url , baseline_package_id , clean_data . get ( 'packageType' ), unit_design_id )[0 ]
970
1014
return {'guid' : new_pakcage ['guid' ]}
971
1015
972
1016
def upload_and_create2 (self , data ):
@@ -1009,6 +1053,10 @@ def _pop_none(d, k):
1009
1053
rule = validator .LengthValidator (1 , 255 ),
1010
1054
validate_on = ['check:M' ],
1011
1055
nullable = False ),
1056
+ crud .ColumnValidator (field = 'package_type' ,
1057
+ rule = validator .LengthValidator (1 , 255 ),
1058
+ validate_on = ['check:O' ],
1059
+ nullable = True ),
1012
1060
]
1013
1061
1014
1062
result = {'resultCode' : '0' , 'resultMessage' : 'success' , 'results' : {'outputs' : []}}
@@ -1046,7 +1094,9 @@ def _pop_none(d, k):
1046
1094
unit_design = resp_json ['data' ]['contents' ][0 ]
1047
1095
if clean_data ['package_guid' ]:
1048
1096
# 有package_guid,则更新
1049
- new_deploy_attrs = self ._analyze_package_attrs (clean_data ['package_guid' ], clean_data ['baseline_package_guid' ], {})
1097
+ new_deploy_attrs = self ._analyze_package_attrs (clean_data ['package_guid' ], clean_data ['baseline_package_guid' ], {
1098
+ field_pkg_package_type_name : clean_data .get ('package_type' )
1099
+ })
1050
1100
# update 属性
1051
1101
new_deploy_attrs ['guid' ] = clean_data ['package_guid' ]
1052
1102
self .pure_update ([new_deploy_attrs ])
@@ -1059,7 +1109,7 @@ def _pop_none(d, k):
1059
1109
r_artifact_path = group
1060
1110
download_url = CONF .wecube .nexus .server .rstrip (
1061
1111
'/' ) + '/repository/' + CONF .wecube .nexus .repository + r_artifact_path + clean_data ['package_name' ]
1062
- self .upload_from_nexus (download_url , clean_data ['baseline_package_guid' ], clean_data ['unit_design' ])
1112
+ self .upload_from_nexus (download_url , clean_data ['baseline_package_guid' ], clean_data . get ( 'package_type' ), clean_data ['unit_design' ])
1063
1113
result ['results' ]['outputs' ].append (single_result )
1064
1114
except Exception as e :
1065
1115
single_result ['errorCode' ] = '1'
@@ -2555,3 +2605,12 @@ def list_by_post(self, query):
2555
2605
result .append ({"id" : item , "displayName" : item , "unit_design_id" : unit_design_id })
2556
2606
2557
2607
return result
2608
+
2609
+ class CiData (WeCubeResource ):
2610
+ def list_by_post (self , query , citype ):
2611
+ cmdb_client = self .get_cmdb_client ()
2612
+ query .setdefault ('dialect' , {"queryMode" : "new" })
2613
+ query .setdefault ('filters' , [])
2614
+ query .setdefault ('paging' , False )
2615
+ resp_json = cmdb_client .retrieve (citype , query )
2616
+ return resp_json ['data' ]
0 commit comments