Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • project/cloud
  • issue/cloud-3181823
  • issue/cloud-3181853
  • issue/cloud-3182150
  • issue/cloud-3182294
  • issue/cloud-3182311
  • issue/cloud-3182346
  • issue/cloud-3180558
  • issue/cloud-3182682
  • issue/cloud-3183409
  • issue/cloud-3183412
  • issue/cloud-3183529
  • issue/cloud-3183619
  • issue/cloud-3183632
  • issue/cloud-3183663
  • issue/cloud-3183934
  • issue/cloud-3184142
  • issue/cloud-3184411
  • issue/cloud-3184659
  • issue/cloud-3184891
  • issue/cloud-3184994
  • issue/cloud-3185464
  • issue/cloud-3185705
  • issue/cloud-3185706
  • issue/cloud-3185708
  • issue/cloud-3185709
  • issue/cloud-3185707
  • issue/cloud-3185710
  • issue/cloud-3185711
  • issue/cloud-3185724
  • issue/cloud-3185731
  • issue/cloud-3185732
  • issue/cloud-3185809
  • issue/cloud-3186025
  • issue/cloud-3185296
  • issue/cloud-3186140
  • issue/cloud-3186241
  • issue/cloud-3186469
  • issue/cloud-3186643
  • issue/cloud-3186692
  • issue/cloud-3186882
  • issue/cloud-3187039
  • issue/cloud-3187149
  • issue/cloud-3187317
  • issue/cloud-3187373
  • issue/cloud-3187387
  • issue/cloud-3187389
  • issue/cloud-3187560
  • issue/cloud-3187586
  • issue/cloud-3187780
  • issue/cloud-3188141
  • issue/cloud-3188198
  • issue/cloud-3188368
  • issue/cloud-3188424
  • issue/cloud-3188595
  • issue/cloud-3188606
  • issue/cloud-3188798
  • issue/cloud-3188820
  • issue/cloud-3188831
  • issue/cloud-3188935
  • issue/cloud-3188976
  • issue/cloud-3188982
  • issue/cloud-3188984
  • issue/cloud-3189446
  • issue/cloud-3189447
  • issue/cloud-3189450
  • issue/cloud-3189456
  • issue/cloud-3189714
  • issue/cloud-3189745
  • issue/cloud-3189755
  • issue/cloud-3189860
  • issue/cloud-3189861
  • issue/cloud-3189868
  • issue/cloud-3189910
  • issue/cloud-3189914
  • issue/cloud-3190078
  • issue/cloud-3189974
  • issue/cloud-3190170
  • issue/cloud-3190182
  • issue/cloud-3190185
  • issue/cloud-3190263
  • issue/cloud-3189975
  • issue/cloud-3189976
  • issue/cloud-3190294
  • issue/cloud-3190348
  • issue/cloud-3190627
  • issue/cloud-3190719
  • issue/cloud-3190809
  • issue/cloud-3191234
  • issue/cloud-3191299
  • issue/cloud-3191582
  • issue/cloud-3191586
  • issue/cloud-3191587
  • issue/cloud-3191639
  • issue/cloud-3191783
  • issue/cloud-3191610
  • issue/cloud-3191523
  • issue/cloud-3192298
  • issue/cloud-3192481
  • issue/cloud-3192847
  • issue/cloud-3192902
  • issue/cloud-3192918
  • issue/cloud-3192940
  • issue/cloud-3192989
  • issue/cloud-3193019
  • issue/cloud-3193083
  • issue/cloud-3193112
  • issue/cloud-3193114
  • issue/cloud-3193424
  • issue/cloud-3193606
  • issue/cloud-3193688
  • issue/cloud-3193748
  • issue/cloud-3193938
  • issue/cloud-3194343
  • issue/cloud-3194623
  • issue/cloud-3194659
  • issue/cloud-3194663
  • issue/cloud-3194823
  • issue/cloud-3194877
  • issue/cloud-3194873
  • issue/cloud-3195307
  • issue/cloud-3195312
  • issue/cloud-3195660
  • issue/cloud-3195671
  • issue/cloud-3195991
  • issue/cloud-3195995
  • issue/cloud-3196419
  • issue/cloud-3191585
  • issue/cloud-3191583
  • issue/cloud-3191581
  • issue/cloud-3197421
  • issue/cloud-3197432
  • issue/cloud-3197433
  • issue/cloud-3191584
  • issue/cloud-3197652
  • issue/cloud-3197868
  • issue/cloud-3197880
  • issue/cloud-3198098
  • issue/cloud-3197653
  • issue/cloud-3198478
  • issue/cloud-3198860
  • issue/cloud-3199050
  • issue/cloud-3199213
  • issue/cloud-3279150
  • issue/cloud-3199243
  • issue/cloud-3199809
  • issue/cloud-3199991
  • issue/cloud-3200044
  • issue/cloud-3200047
  • issue/cloud-3200100
  • issue/cloud-3200118
  • issue/cloud-3200270
  • issue/cloud-3200520
  • issue/cloud-3200740
  • issue/cloud-3200885
  • issue/cloud-3201060
  • issue/cloud-3201071
  • issue/cloud-3201138
  • issue/cloud-3201301
  • issue/cloud-3201330
  • issue/cloud-3201341
  • issue/cloud-3201374
  • issue/cloud-3201967
  • issue/cloud-3202402
  • issue/cloud-3202652
  • issue/cloud-3202669
  • issue/cloud-3202931
  • issue/cloud-3202937
  • issue/cloud-3203121
  • issue/cloud-3203156
  • issue/cloud-3203992
  • issue/cloud-3204653
  • issue/cloud-3204816
  • issue/cloud-3205276
  • issue/cloud-3205683
  • issue/cloud-3205730
  • issue/cloud-3205778
  • issue/cloud-3205789
  • issue/cloud-3205983
  • issue/cloud-3206157
  • issue/cloud-3206273
  • issue/cloud-3279428
  • issue/cloud-3206525
  • issue/cloud-3206532
  • issue/cloud-3279435
  • issue/cloud-3206834
  • issue/cloud-3206856
  • issue/cloud-3207107
  • issue/cloud-3207198
  • issue/cloud-3207333
  • issue/cloud-3207573
  • issue/cloud-3207595
  • issue/cloud-3207758
  • issue/cloud-3207945
  • issue/cloud-3208304
  • issue/cloud-3208670
  • issue/cloud-3208850
  • issue/cloud-3209211
  • issue/cloud-3209446
  • issue/cloud-3209693
  • issue/cloud-3210496
  • issue/cloud-3210638
  • issue/cloud-3210647
  • issue/cloud-3211273
  • issue/cloud-3211567
  • issue/cloud-3212126
  • issue/cloud-3212322
  • issue/cloud-3191576
  • issue/cloud-3212496
  • issue/cloud-3212680
  • issue/cloud-3213095
  • issue/cloud-3213541
  • issue/cloud-3213754
  • issue/cloud-3213753
  • issue/cloud-3213777
  • issue/cloud-3213785
  • issue/cloud-3214270
  • issue/cloud-3210650
  • issue/cloud-3215720
  • issue/cloud-3215747
  • issue/cloud-3215934
  • issue/cloud-3191580
  • issue/cloud-3216872
  • issue/cloud-3217114
  • issue/cloud-3217769
  • issue/cloud-3217980
  • issue/cloud-3217993
  • issue/cloud-3218525
  • issue/cloud-3218529
  • issue/cloud-3218640
  • issue/cloud-3218767
  • issue/cloud-3218796
  • issue/cloud-3186209
  • issue/cloud-3218829
  • issue/cloud-3219063
  • issue/cloud-3219172
  • issue/cloud-3219206
  • issue/cloud-3219225
  • issue/cloud-3195065
  • issue/cloud-3219464
  • issue/cloud-3219501
  • issue/cloud-3219506
  • issue/cloud-3219535
  • issue/cloud-3219600
  • issue/cloud-3219979
  • issue/cloud-3219992
  • issue/cloud-3220242
  • issue/cloud-3220246
  • issue/cloud-3220250
  • issue/cloud-3220258
  • issue/cloud-3220456
  • issue/cloud-3220465
  • issue/cloud-3220511
  • issue/cloud-3220519
  • issue/cloud-3220666
  • issue/cloud-3220987
  • issue/cloud-3221005
  • issue/cloud-3221182
  • issue/cloud-3221053
  • issue/cloud-3221336
  • issue/cloud-3221392
  • issue/cloud-3221401
  • issue/cloud-3221405
  • issue/cloud-3221415
  • issue/cloud-3221623
  • issue/cloud-3222089
  • issue/cloud-3222117
  • issue/cloud-3222352
  • issue/cloud-3222502
  • issue/cloud-3222534
  • issue/cloud-3222665
  • issue/cloud-3222703
  • issue/cloud-3222893
  • issue/cloud-3222920
  • issue/cloud-3223092
  • issue/cloud-3223339
  • issue/cloud-3223508
  • issue/cloud-3223525
  • issue/cloud-3223696
  • issue/cloud-3223740
  • issue/cloud-3223850
  • issue/cloud-3223924
  • issue/cloud-3224075
  • issue/cloud-3224080
  • issue/cloud-3224081
  • issue/cloud-3224172
  • issue/cloud-3224418
  • issue/cloud-3224987
  • issue/cloud-3225006
  • issue/cloud-3225023
  • issue/cloud-3225298
  • issue/cloud-3225312
  • issue/cloud-3225597
  • issue/cloud-3225614
  • issue/cloud-3225644
  • issue/cloud-3226097
  • issue/cloud-3226130
  • issue/cloud-3226574
  • issue/cloud-3226727
  • issue/cloud-3226828
  • issue/cloud-3226854
  • issue/cloud-3226882
  • issue/cloud-3225815
  • issue/cloud-3227078
  • issue/cloud-3227081
  • issue/cloud-3227251
  • issue/cloud-3227307
  • issue/cloud-3227311
  • issue/cloud-3227408
  • issue/cloud-3227485
  • issue/cloud-3227828
  • issue/cloud-3227846
  • issue/cloud-3227852
  • issue/cloud-3228270
  • issue/cloud-3228276
  • issue/cloud-3228400
  • issue/cloud-3228579
  • issue/cloud-3228624
  • issue/cloud-3228663
  • issue/cloud-3228688
  • issue/cloud-3225218
  • issue/cloud-3229021
  • issue/cloud-3228432
  • issue/cloud-3229041
  • issue/cloud-3229047
  • issue/cloud-3229497
  • issue/cloud-3229710
  • issue/cloud-3229718
  • issue/cloud-3229938
  • issue/cloud-3230015
  • issue/cloud-3230748
  • issue/cloud-3230776
  • issue/cloud-3230796
  • issue/cloud-3230931
  • issue/cloud-3230948
  • issue/cloud-3230958
  • issue/cloud-3225219
  • issue/cloud-3231401
  • issue/cloud-3231490
  • issue/cloud-3231513
  • issue/cloud-3231856
  • issue/cloud-3231860
  • issue/cloud-3231862
  • issue/cloud-3231867
  • issue/cloud-3231898
  • issue/cloud-3225220
  • issue/cloud-3232055
  • issue/cloud-3232196
  • issue/cloud-3225272
  • issue/cloud-3225292
  • issue/cloud-3225417
  • issue/cloud-3225420
  • issue/cloud-3232747
  • issue/cloud-3232760
  • issue/cloud-3232794
  • issue/cloud-3232806
  • issue/cloud-3232932
  • issue/cloud-3232934
  • issue/cloud-3232936
  • issue/cloud-3232983
  • issue/cloud-3232992
  • issue/cloud-3233416
  • issue/cloud-3233607
  • issue/cloud-3236202
  • issue/cloud-3236419
  • issue/cloud-3236437
  • issue/cloud-3238196
  • issue/cloud-3238383
  • issue/cloud-3238409
  • issue/cloud-3238663
  • issue/cloud-3238813
  • issue/cloud-3238827
  • issue/cloud-3238842
  • issue/cloud-3238910
  • issue/cloud-3238990
  • issue/cloud-3239091
  • issue/cloud-3239248
  • issue/cloud-3239560
  • issue/cloud-3239696
  • issue/cloud-3279431
  • issue/cloud-3279805
  • issue/cloud-3279924
  • issue/cloud-3279985
  • issue/cloud-3280030
  • issue/cloud-3280044
  • issue/cloud-3278818
  • issue/cloud-3280788
  • issue/cloud-3281010
  • issue/cloud-3281025
  • issue/cloud-3281266
  • issue/cloud-3281510
  • issue/cloud-3281678
  • issue/cloud-3281723
  • issue/cloud-3282020
  • issue/cloud-3282196
  • issue/cloud-3282213
  • issue/cloud-3282373
  • issue/cloud-3282584
  • issue/cloud-3283475
  • issue/cloud-3279437
  • issue/cloud-3279601
  • issue/cloud-3279810
  • issue/cloud-3279989
  • issue/cloud-3280232
  • issue/cloud-3280281
  • issue/cloud-3280792
  • issue/cloud-3282379
  • issue/cloud-3282574
  • issue/cloud-3283282
  • issue/cloud-3283536
  • issue/cloud-3283729
  • issue/cloud-3283918
  • issue/cloud-3278819
  • issue/cloud-3279450
  • issue/cloud-3279647
  • issue/cloud-3279833
  • issue/cloud-3280042
  • issue/cloud-3280264
  • issue/cloud-3280280
  • issue/cloud-3280793
  • issue/cloud-3280993
  • issue/cloud-3281231
  • issue/cloud-3281272
  • issue/cloud-3282029
  • issue/cloud-3282167
  • issue/cloud-3282576
  • issue/cloud-3281259
  • issue/cloud-3283263
  • issue/cloud-3283539
  • issue/cloud-3283702
  • issue/cloud-3283743
  • issue/cloud-3283947
  • issue/cloud-3279562
  • issue/cloud-3279817
  • issue/cloud-3279835
  • issue/cloud-3280064
  • issue/cloud-3280639
  • issue/cloud-3280995
  • issue/cloud-3282386
  • issue/cloud-3282577
  • issue/cloud-3283290
  • issue/cloud-3283508
  • issue/cloud-3283736
  • issue/cloud-3278822
  • issue/cloud-3279617
  • issue/cloud-3279875
  • issue/cloud-3280272
  • issue/cloud-3281022
  • issue/cloud-3281027
  • issue/cloud-3281288
  • issue/cloud-3282018
  • issue/cloud-3282038
  • issue/cloud-3282193
  • issue/cloud-3282371
  • issue/cloud-3283512
  • issue/cloud-3279547
  • issue/cloud-3280273
  • issue/cloud-3281204
  • issue/cloud-3281287
  • issue/cloud-3281533
  • issue/cloud-3281673
  • issue/cloud-3281687
  • issue/cloud-3282372
  • issue/cloud-3283497
  • issue/cloud-3283635
  • issue/cloud-3283856
  • issue/cloud-3239811
  • issue/cloud-3239900
  • issue/cloud-3239946
  • issue/cloud-3240101
  • issue/cloud-3240218
  • issue/cloud-3240371
  • issue/cloud-3240440
  • issue/cloud-3240519
  • issue/cloud-3240524
  • issue/cloud-3240525
  • issue/cloud-3240421
  • issue/cloud-3240531
  • issue/cloud-3240540
  • issue/cloud-3240619
  • issue/cloud-3240658
  • issue/cloud-3240707
  • issue/cloud-3240722
  • issue/cloud-3240733
  • issue/cloud-3240740
  • issue/cloud-3240961
  • issue/cloud-3240976
  • issue/cloud-3240437
  • issue/cloud-3241241
  • issue/cloud-3241456
  • issue/cloud-3242641
  • issue/cloud-3241224
  • issue/cloud-3243034
  • issue/cloud-3243160
  • issue/cloud-3241453
  • issue/cloud-3240423
  • issue/cloud-3243282
  • issue/cloud-3243685
  • issue/cloud-3243843
  • issue/cloud-3243941
  • issue/cloud-3243975
  • issue/cloud-3244088
  • issue/cloud-3244327
  • issue/cloud-3244469
  • issue/cloud-3244513
  • issue/cloud-3244320
  • issue/cloud-3244753
  • issue/cloud-3244775
  • issue/cloud-3244801
  • issue/cloud-3244808
  • issue/cloud-3244814
  • issue/cloud-3245014
  • issue/cloud-3245015
  • issue/cloud-3245071
  • issue/cloud-3245251
  • issue/cloud-3245494
  • issue/cloud-3245650
  • issue/cloud-3245686
  • issue/cloud-3245859
  • issue/cloud-3245877
  • issue/cloud-3245881
  • issue/cloud-3246008
  • issue/cloud-3246044
  • issue/cloud-3246123
  • issue/cloud-3246271
  • issue/cloud-3246286
  • issue/cloud-3246330
  • issue/cloud-3246346
  • issue/cloud-3246352
  • issue/cloud-3246522
  • issue/cloud-3246489
  • issue/cloud-3246549
  • issue/cloud-3225216
  • issue/cloud-3246856
  • issue/cloud-3247063
  • issue/cloud-3247118
  • issue/cloud-3247207
  • issue/cloud-3247232
  • issue/cloud-3247707
  • issue/cloud-3279586
  • issue/cloud-3247826
  • issue/cloud-3247956
  • issue/cloud-3248118
  • issue/cloud-3248362
  • issue/cloud-3248389
  • issue/cloud-3248461
  • issue/cloud-3248545
  • issue/cloud-3248614
  • issue/cloud-3248632
  • issue/cloud-3248826
  • issue/cloud-3248996
  • issue/cloud-3249060
  • issue/cloud-3249313
  • issue/cloud-3249328
  • issue/cloud-3249409
  • issue/cloud-3249488
  • issue/cloud-3249604
  • issue/cloud-3249829
  • issue/cloud-3278867
  • issue/cloud-3250390
  • issue/cloud-3250573
  • issue/cloud-3250579
  • issue/cloud-3250584
  • issue/cloud-3250959
  • issue/cloud-3251179
  • issue/cloud-3251529
  • issue/cloud-3251604
  • issue/cloud-3251738
  • issue/cloud-3251782
  • issue/cloud-3251787
  • issue/cloud-3251803
  • issue/cloud-3252005
  • issue/cloud-3252127
  • issue/cloud-3252183
  • issue/cloud-3252334
  • issue/cloud-3252381
  • issue/cloud-3252556
  • issue/cloud-3252652
  • issue/cloud-3252711
  • issue/cloud-3252913
  • issue/cloud-3252922
  • issue/cloud-3252947
  • issue/cloud-3253122
  • issue/cloud-3253229
  • issue/cloud-3253431
  • issue/cloud-3253446
  • issue/cloud-3253737
  • issue/cloud-3254065
  • issue/cloud-3254096
  • issue/cloud-3254264
  • issue/cloud-3254275
  • issue/cloud-3253930
  • issue/cloud-3254463
  • issue/cloud-3254470
  • issue/cloud-3254475
  • issue/cloud-3254672
  • issue/cloud-3254719
  • issue/cloud-3254865
  • issue/cloud-3254876
  • issue/cloud-3255212
  • issue/cloud-3255214
  • issue/cloud-3255361
  • issue/cloud-3255413
  • issue/cloud-3255553
  • issue/cloud-3255554
  • issue/cloud-3255583
  • issue/cloud-3255588
  • issue/cloud-3255858
  • issue/cloud-3255910
  • issue/cloud-3255987
  • issue/cloud-3256026
  • issue/cloud-3256994
  • issue/cloud-3257126
  • issue/cloud-3257355
  • issue/cloud-3257368
  • issue/cloud-3257912
  • issue/cloud-3258040
  • issue/cloud-3258115
  • issue/cloud-3258116
  • issue/cloud-3258154
  • issue/cloud-3258302
  • issue/cloud-3258311
  • issue/cloud-3258508
  • issue/cloud-3258845
  • issue/cloud-3258891
  • issue/cloud-3259045
  • issue/cloud-3259282
  • issue/cloud-3259494
  • issue/cloud-3259688
  • issue/cloud-3260053
  • issue/cloud-3260069
  • issue/cloud-3260255
  • issue/cloud-3260256
  • issue/cloud-3260285
  • issue/cloud-3260518
  • issue/cloud-3260523
  • issue/cloud-3260524
  • issue/cloud-3260747
  • issue/cloud-3260978
  • issue/cloud-3261006
  • issue/cloud-3261010
  • issue/cloud-3261175
  • issue/cloud-3261470
  • issue/cloud-3261648
  • issue/cloud-3261694
  • issue/cloud-3262075
  • issue/cloud-3262130
  • issue/cloud-3262131
  • issue/cloud-3262412
  • issue/cloud-3262416
  • issue/cloud-3262571
  • issue/cloud-3262574
  • issue/cloud-3262625
  • issue/cloud-3262802
  • issue/cloud-3262806
  • issue/cloud-3262829
  • issue/cloud-3263015
  • issue/cloud-3263099
  • issue/cloud-3263209
  • issue/cloud-3263292
  • issue/cloud-3263309
  • issue/cloud-3263327
  • issue/cloud-3263486
  • issue/cloud-3263543
  • issue/cloud-3263633
  • issue/cloud-3263739
  • issue/cloud-3263737
  • issue/cloud-3263954
  • issue/cloud-3264010
  • issue/cloud-3264095
  • issue/cloud-3264189
  • issue/cloud-3264224
  • issue/cloud-3264410
  • issue/cloud-3264457
  • issue/cloud-3264602
  • issue/cloud-3264618
  • issue/cloud-3264872
  • issue/cloud-3264898
  • issue/cloud-3265132
  • issue/cloud-3265149
  • issue/cloud-3265154
  • issue/cloud-3265544
  • issue/cloud-3265548
  • issue/cloud-3265561
  • issue/cloud-3265571
  • issue/cloud-3265587
  • issue/cloud-3265796
  • issue/cloud-3265817
  • issue/cloud-3265970
  • issue/cloud-3266025
  • issue/cloud-3266033
  • issue/cloud-3266054
  • issue/cloud-3266178
  • issue/cloud-3266233
  • issue/cloud-3266234
  • issue/cloud-3266237
  • issue/cloud-3266374
  • issue/cloud-3266446
  • issue/cloud-3266542
  • issue/cloud-3266679
  • issue/cloud-3266832
  • issue/cloud-3266848
  • issue/cloud-3266876
  • issue/cloud-3266865
  • issue/cloud-3267036
  • issue/cloud-3267275
  • issue/cloud-3267487
  • issue/cloud-3267642
  • issue/cloud-3267692
  • issue/cloud-3267695
  • issue/cloud-3267702
  • issue/cloud-3267693
  • issue/cloud-3267722
  • issue/cloud-3267726
  • issue/cloud-3267750
  • issue/cloud-3267873
  • issue/cloud-3267881
  • issue/cloud-3267883
  • issue/cloud-3267885
  • issue/cloud-3267888
  • issue/cloud-3267906
  • issue/cloud-3267960
  • issue/cloud-3268416
  • issue/cloud-3268507
  • issue/cloud-3268546
  • issue/cloud-3268479
  • issue/cloud-3268797
  • issue/cloud-3268806
  • issue/cloud-3268811
  • issue/cloud-3268968
  • issue/cloud-3268973
  • issue/cloud-3268673
  • issue/cloud-3269021
  • issue/cloud-3269054
  • issue/cloud-3269057
  • issue/cloud-3269155
  • issue/cloud-3269344
  • issue/cloud-3269366
  • issue/cloud-3269368
  • issue/cloud-3269370
  • issue/cloud-3269374
  • issue/cloud-3269377
  • issue/cloud-3269500
  • issue/cloud-3269602
  • issue/cloud-3269708
  • issue/cloud-3269781
  • issue/cloud-3269788
  • issue/cloud-3269811
  • issue/cloud-3269815
  • issue/cloud-3269993
  • issue/cloud-3270023
  • issue/cloud-3270036
  • issue/cloud-3270066
  • issue/cloud-3270163
  • issue/cloud-3270207
  • issue/cloud-3270265
  • issue/cloud-3270268
  • issue/cloud-3270280
  • issue/cloud-3270282
  • issue/cloud-3270269
  • issue/cloud-3270658
  • issue/cloud-3269930
  • issue/cloud-3271058
  • issue/cloud-3271141
  • issue/cloud-3271151
  • issue/cloud-3271155
  • issue/cloud-3271157
  • issue/cloud-3271348
  • issue/cloud-3271363
  • issue/cloud-3271364
  • issue/cloud-3271376
  • issue/cloud-3271378
  • issue/cloud-3271560
  • issue/cloud-3271565
  • issue/cloud-3271599
  • issue/cloud-3271600
  • issue/cloud-3271750
  • issue/cloud-3271949
  • issue/cloud-3271743
  • issue/cloud-3272138
  • issue/cloud-3272183
  • issue/cloud-3272190
  • issue/cloud-3272375
  • issue/cloud-3272416
  • issue/cloud-3272419
  • issue/cloud-3272544
  • issue/cloud-3272557
  • issue/cloud-3272624
  • issue/cloud-3272661
  • issue/cloud-3272897
  • issue/cloud-3273053
  • issue/cloud-3273058
  • issue/cloud-3273073
  • issue/cloud-3273084
  • issue/cloud-3271742
  • issue/cloud-3273413
  • issue/cloud-3273418
  • issue/cloud-3273615
  • issue/cloud-3273629
  • issue/cloud-3273643
  • issue/cloud-3273644
  • issue/cloud-3273748
  • issue/cloud-3273905
  • issue/cloud-3273889
  • issue/cloud-3273962
  • issue/cloud-3274078
  • issue/cloud-3274109
  • issue/cloud-3274116
  • issue/cloud-3274157
  • issue/cloud-3274196
  • issue/cloud-3274216
  • issue/cloud-3274374
  • issue/cloud-3274382
  • issue/cloud-3274386
  • issue/cloud-3274512
  • issue/cloud-3274523
  • issue/cloud-3274702
  • issue/cloud-3274946
  • issue/cloud-3274955
  • issue/cloud-3274982
  • issue/cloud-3275209
  • issue/cloud-3275355
  • issue/cloud-3275379
  • issue/cloud-3275389
  • issue/cloud-3275170
  • issue/cloud-3275690
  • issue/cloud-3275736
  • issue/cloud-3275840
  • issue/cloud-3275841
  • issue/cloud-3275892
  • issue/cloud-3275988
  • issue/cloud-3275521
  • issue/cloud-3276136
  • issue/cloud-3276138
  • issue/cloud-3276175
  • issue/cloud-3276185
  • issue/cloud-3276321
  • issue/cloud-3276323
  • issue/cloud-3276353
  • issue/cloud-3276369
  • issue/cloud-3276410
  • issue/cloud-3276570
  • issue/cloud-3276704
  • issue/cloud-3276714
  • issue/cloud-3276788
  • issue/cloud-3276897
  • issue/cloud-3276908
  • issue/cloud-3277300
  • issue/cloud-3277750
  • issue/cloud-3277765
  • issue/cloud-3277797
  • issue/cloud-3278037
  • issue/cloud-3278112
  • issue/cloud-3278113
  • issue/cloud-3278248
  • issue/cloud-3278308
  • issue/cloud-3278479
  • issue/cloud-3278023
  • issue/cloud-3280027
  • issue/cloud-3280787
  • issue/cloud-3281004
  • issue/cloud-3281282
  • issue/cloud-3281298
  • issue/cloud-3283959
  • issue/cloud-3284108
  • issue/cloud-3284224
  • issue/cloud-3284251
  • issue/cloud-3284360
  • issue/cloud-3284361
  • issue/cloud-3284363
  • issue/cloud-3284365
  • issue/cloud-3284370
  • issue/cloud-3284388
  • issue/cloud-3284466
  • issue/cloud-3284576
  • issue/cloud-3284565
  • issue/cloud-3284578
  • issue/cloud-3284587
  • issue/cloud-3284602
  • issue/cloud-3284606
  • issue/cloud-3284714
  • issue/cloud-3284774
  • issue/cloud-3284776
  • issue/cloud-3284782
  • issue/cloud-3285053
  • issue/cloud-3284947
  • issue/cloud-3285332
  • issue/cloud-3285338
  • issue/cloud-3285367
  • issue/cloud-3285519
  • issue/cloud-3285526
  • issue/cloud-3285536
  • issue/cloud-3285538
  • issue/cloud-3285539
  • issue/cloud-3285555
  • issue/cloud-3285693
  • issue/cloud-3285702
  • issue/cloud-3285478
  • issue/cloud-3285743
  • issue/cloud-3285749
  • issue/cloud-3285764
  • issue/cloud-3285770
  • issue/cloud-3285849
  • issue/cloud-3288063
  • issue/cloud-3285730
  • issue/cloud-3290773
  • issue/cloud-3290788
  • issue/cloud-3290795
  • issue/cloud-3290820
  • issue/cloud-3290984
  • issue/cloud-3290987
  • issue/cloud-3291000
  • issue/cloud-3291013
  • issue/cloud-3291081
  • issue/cloud-3291001
  • issue/cloud-3291234
  • issue/cloud-3291241
  • issue/cloud-3291253
  • issue/cloud-3291386
  • issue/cloud-3291389
  • issue/cloud-3291392
  • issue/cloud-3291395
  • issue/cloud-3291396
  • issue/cloud-3291595
  • issue/cloud-3291597
  • issue/cloud-3291605
  • issue/cloud-3291627
  • issue/cloud-3291661
  • issue/cloud-3291742
  • issue/cloud-3291766
  • issue/cloud-3291850
  • issue/cloud-3291858
  • issue/cloud-3291878
  • issue/cloud-3399374
  • issue/cloud-3292036
  • issue/cloud-3292089
  • issue/cloud-3292090
  • issue/cloud-3292096
  • issue/cloud-3292100
  • issue/cloud-3292101
  • issue/cloud-3292105
  • issue/cloud-3292111
  • issue/cloud-3292141
  • issue/cloud-3292142
  • issue/cloud-3292363
  • issue/cloud-3292372
  • issue/cloud-3292417
  • issue/cloud-3292330
  • issue/cloud-3292575
  • issue/cloud-3292582
  • issue/cloud-3292679
  • issue/cloud-3292685
  • issue/cloud-3292544
  • issue/cloud-3292767
  • issue/cloud-3292771
  • issue/cloud-3292791
  • issue/cloud-3292794
  • issue/cloud-3292812
  • issue/cloud-3292977
  • issue/cloud-3292981
  • issue/cloud-3292989
  • issue/cloud-3293000
  • issue/cloud-3293208
  • issue/cloud-3293211
  • issue/cloud-3293219
  • issue/cloud-3293224
  • issue/cloud-3293234
  • issue/cloud-3293244
  • issue/cloud-3293419
  • issue/cloud-3293207
  • issue/cloud-3293499
  • issue/cloud-3293505
  • issue/cloud-3293701
  • issue/cloud-3293736
  • issue/cloud-3293846
  • issue/cloud-3293949
  • issue/cloud-3294027
  • issue/cloud-3294030
  • issue/cloud-3294185
  • issue/cloud-3294189
  • issue/cloud-3294201
  • issue/cloud-3294227
  • issue/cloud-3294424
  • issue/cloud-3294427
  • issue/cloud-3294451
  • issue/cloud-3294631
  • issue/cloud-3294644
  • issue/cloud-3294865
  • issue/cloud-3294886
  • issue/cloud-3295011
  • issue/cloud-3295067
  • issue/cloud-3295095
  • issue/cloud-3295125
  • issue/cloud-3295194
  • issue/cloud-3295196
  • issue/cloud-3295237
  • issue/cloud-3295251
  • issue/cloud-3295254
  • issue/cloud-3295418
  • issue/cloud-3295646
  • issue/cloud-3295669
  • issue/cloud-3295673
  • issue/cloud-3295695
  • issue/cloud-3295873
  • issue/cloud-3296392
  • issue/cloud-3298293
  • issue/cloud-3296083
  • issue/cloud-3303765
  • issue/cloud-3303941
  • issue/cloud-3304247
  • issue/cloud-3304374
  • issue/cloud-3304580
  • issue/cloud-3305386
  • issue/cloud-3305476
  • issue/cloud-3305606
  • issue/cloud-3298542
  • issue/cloud-3298732
  • issue/cloud-3299211
  • issue/cloud-3299866
  • issue/cloud-3298957
  • issue/cloud-3300356
  • issue/cloud-3300110
  • issue/cloud-3300392
  • issue/cloud-3303800
  • issue/cloud-3303812
  • issue/cloud-3304166
  • issue/cloud-3304547
  • issue/cloud-3304644
  • issue/cloud-3300947
  • issue/cloud-3301042
  • issue/cloud-3301207
  • issue/cloud-3301951
  • issue/cloud-3301955
  • issue/cloud-3302049
  • issue/cloud-3302260
  • issue/cloud-3302747
  • issue/cloud-3302977
  • issue/cloud-3303222
  • issue/cloud-3303229
  • issue/cloud-3303236
  • issue/cloud-3303390
  • issue/cloud-3303428
  • issue/cloud-3303635
  • issue/cloud-3304212
  • issue/cloud-3304632
  • issue/cloud-3301956
  • issue/cloud-3304894
  • issue/cloud-3305398
  • issue/cloud-3306033
  • issue/cloud-3305650
  • issue/cloud-3306114
  • issue/cloud-3306116
  • issue/cloud-3310203
  • issue/cloud-3310210
  • issue/cloud-3310262
  • issue/cloud-3310457
  • issue/cloud-3310560
  • issue/cloud-3310642
  • issue/cloud-3310995
  • issue/cloud-3311042
  • issue/cloud-3309974
  • issue/cloud-3306321
  • issue/cloud-3306357
  • issue/cloud-3306359
  • issue/cloud-3306380
  • issue/cloud-3306643
  • issue/cloud-3306689
  • issue/cloud-3306521
  • issue/cloud-3306702
  • issue/cloud-3306754
  • issue/cloud-3306966
  • issue/cloud-3306981
  • issue/cloud-3306987
  • issue/cloud-3306988
  • issue/cloud-3307021
  • issue/cloud-3306990
  • issue/cloud-3307162
  • issue/cloud-3306991
  • issue/cloud-3307215
  • issue/cloud-3307239
  • issue/cloud-3307396
  • issue/cloud-3307397
  • issue/cloud-3307437
  • issue/cloud-3306992
  • issue/cloud-3307456
  • issue/cloud-3307462
  • issue/cloud-3307499
  • issue/cloud-3307668
  • issue/cloud-3307678
  • issue/cloud-3307733
  • issue/cloud-3307925
  • issue/cloud-3307933
  • issue/cloud-3308070
  • issue/cloud-3308279
  • issue/cloud-3308275
  • issue/cloud-3308490
  • issue/cloud-3308495
  • issue/cloud-3308496
  • issue/cloud-3308655
  • issue/cloud-3308676
  • issue/cloud-3308695
  • issue/cloud-3308708
  • issue/cloud-3308717
  • issue/cloud-3308270
  • issue/cloud-3308812
  • issue/cloud-3308934
  • issue/cloud-3308967
  • issue/cloud-3308974
  • issue/cloud-3308999
  • issue/cloud-3309150
  • issue/cloud-3309165
  • issue/cloud-3309286
  • issue/cloud-3309124
  • issue/cloud-3309333
  • issue/cloud-3309357
  • issue/cloud-3309517
  • issue/cloud-3309540
  • issue/cloud-3309587
  • issue/cloud-3309705
  • issue/cloud-3309758
  • issue/cloud-3309787
  • issue/cloud-3309788
  • issue/cloud-3309878
  • issue/cloud-3309971
  • issue/cloud-3309981
  • issue/cloud-3310024
  • issue/cloud-3310263
  • issue/cloud-3310707
  • issue/cloud-3310768
  • issue/cloud-3309596
  • issue/cloud-3311026
  • issue/cloud-3311463
  • issue/cloud-3311664
  • issue/cloud-3311665
  • issue/cloud-3311766
  • issue/cloud-3311779
  • issue/cloud-3311935
  • issue/cloud-3311268
  • issue/cloud-3312203
  • issue/cloud-3312218
  • issue/cloud-3312215
  • issue/cloud-3312472
  • issue/cloud-3311750
  • issue/cloud-3312576
  • issue/cloud-3312622
  • issue/cloud-3312708
  • issue/cloud-3312766
  • issue/cloud-3312549
  • issue/cloud-3312780
  • issue/cloud-3311749
  • issue/cloud-3312838
  • issue/cloud-3312996
  • issue/cloud-3313318
  • issue/cloud-3313353
  • issue/cloud-3317433
  • issue/cloud-3317489
  • issue/cloud-3317731
  • issue/cloud-3317919
  • issue/cloud-3318174
  • issue/cloud-3318236
  • issue/cloud-3317924
  • issue/cloud-3313550
  • issue/cloud-3313552
  • issue/cloud-3313770
  • issue/cloud-3313779
  • issue/cloud-3313812
  • issue/cloud-3313999
  • issue/cloud-3314252
  • issue/cloud-3314398
  • issue/cloud-3317496
  • issue/cloud-3317494
  • issue/cloud-3314603
  • issue/cloud-3314652
  • issue/cloud-3314804
  • issue/cloud-3314812
  • issue/cloud-3314400
  • issue/cloud-3314844
  • issue/cloud-3315043
  • issue/cloud-3315268
  • issue/cloud-3315586
  • issue/cloud-3315797
  • issue/cloud-3315878
  • issue/cloud-3316407
  • issue/cloud-3316471
  • issue/cloud-3316494
  • issue/cloud-3316681
  • issue/cloud-3317116
  • issue/cloud-3317301
  • issue/cloud-3318439
  • issue/cloud-3318463
  • issue/cloud-3318898
  • issue/cloud-3318641
  • issue/cloud-3325922
  • issue/cloud-3319229
  • issue/cloud-3319231
  • issue/cloud-3327455
  • issue/cloud-3327525
  • issue/cloud-3325925
  • issue/cloud-3326094
  • issue/cloud-3319611
  • issue/cloud-3326730
  • issue/cloud-3327023
  • issue/cloud-3327303
  • issue/cloud-3327527
  • issue/cloud-3327959
  • issue/cloud-3320297
  • issue/cloud-3326151
  • issue/cloud-3320385
  • issue/cloud-3320601
  • issue/cloud-3320310
  • issue/cloud-3320609
  • issue/cloud-3320654
  • issue/cloud-3320663
  • issue/cloud-3326999
  • issue/cloud-3327965
  • issue/cloud-3328378
  • issue/cloud-3329613
  • issue/cloud-3329614
  • issue/cloud-3329626
  • issue/cloud-3325459
  • issue/cloud-3325485
  • issue/cloud-3326711
  • issue/cloud-3326759
  • issue/cloud-3327068
  • issue/cloud-3327318
  • issue/cloud-3327495
  • issue/cloud-3327545
  • issue/cloud-3327733
  • issue/cloud-3328717
  • issue/cloud-3320860
  • issue/cloud-3320868
  • issue/cloud-3320301
  • issue/cloud-3320915
  • issue/cloud-3320944
  • issue/cloud-3320945
  • issue/cloud-3321029
  • issue/cloud-3321067
  • issue/cloud-3325489
  • issue/cloud-3326481
  • issue/cloud-3326682
  • issue/cloud-3326722
  • issue/cloud-3327003
  • issue/cloud-3327036
  • issue/cloud-3328728
  • issue/cloud-3328928
  • issue/cloud-3329000
  • issue/cloud-3321709
  • issue/cloud-3321712
  • issue/cloud-3321322
  • issue/cloud-3322010
  • issue/cloud-3322021
  • issue/cloud-3322024
  • issue/cloud-3325391
  • issue/cloud-3325462
  • issue/cloud-3327042
  • issue/cloud-3327092
  • issue/cloud-3327228
  • issue/cloud-3328138
  • issue/cloud-3328509
  • issue/cloud-3328964
  • issue/cloud-3322344
  • issue/cloud-3322368
  • issue/cloud-3322385
  • issue/cloud-3322638
  • issue/cloud-3322725
  • issue/cloud-3322833
  • issue/cloud-3322836
  • issue/cloud-3323031
  • issue/cloud-3319538
  • issue/cloud-3323489
  • issue/cloud-3323495
  • issue/cloud-3323705
  • issue/cloud-3323738
  • issue/cloud-3323864
  • issue/cloud-3323928
  • issue/cloud-3323929
  • issue/cloud-3324001
  • issue/cloud-3324002
  • issue/cloud-3324004
  • issue/cloud-3324005
  • issue/cloud-3324023
  • issue/cloud-3323516
  • issue/cloud-3322870
  • issue/cloud-3324489
  • issue/cloud-3324666
  • issue/cloud-3324707
  • issue/cloud-3324719
  • issue/cloud-3324821
  • issue/cloud-3324864
  • issue/cloud-3324903
  • issue/cloud-3324906
  • issue/cloud-3324924
  • issue/cloud-3325053
  • issue/cloud-3325239
  • issue/cloud-3324908
  • issue/cloud-3325245
  • issue/cloud-3325264
  • issue/cloud-3325269
  • issue/cloud-3325936
  • issue/cloud-3329673
  • issue/cloud-3329897
  • issue/cloud-3329909
  • issue/cloud-3329927
  • issue/cloud-3328760
  • issue/cloud-3329988
  • issue/cloud-3331383
  • issue/cloud-3331442
  • issue/cloud-3331666
  • issue/cloud-3332069
  • issue/cloud-3332132
  • issue/cloud-3332171
  • issue/cloud-3332242
  • issue/cloud-3332373
  • issue/cloud-3332492
  • issue/cloud-3332620
  • issue/cloud-3332862
  • issue/cloud-3333124
  • issue/cloud-3333520
  • issue/cloud-3333526
  • issue/cloud-3333674
  • issue/cloud-3327817
  • issue/cloud-3333686
  • issue/cloud-3332491
  • issue/cloud-3334130
  • issue/cloud-3345121
  • issue/cloud-3334371
  • issue/cloud-3343041
  • issue/cloud-3334693
  • issue/cloud-3335024
  • issue/cloud-3335029
  • issue/cloud-3335061
  • issue/cloud-3335087
  • issue/cloud-3342932
  • issue/cloud-3344161
  • issue/cloud-3341767
  • issue/cloud-3345098
  • issue/cloud-3345130
  • issue/cloud-3350756
  • issue/cloud-3335392
  • issue/cloud-3335148
  • issue/cloud-3335656
  • issue/cloud-3335692
  • issue/cloud-3335976
  • issue/cloud-3335023
  • issue/cloud-3336208
  • issue/cloud-3336316
  • issue/cloud-3336577
  • issue/cloud-3336021
  • issue/cloud-3336803
  • issue/cloud-3337420
  • issue/cloud-3337751
  • issue/cloud-3337755
  • issue/cloud-3341768
  • issue/cloud-3345671
  • issue/cloud-3337802
  • issue/cloud-3338098
  • issue/cloud-3338102
  • issue/cloud-3344162
  • issue/cloud-3344856
  • issue/cloud-3344882
  • issue/cloud-3345783
  • issue/cloud-3338419
  • issue/cloud-3338437
  • issue/cloud-3338444
  • issue/cloud-3338794
  • issue/cloud-3339470
  • issue/cloud-3343034
  • issue/cloud-3343350
  • issue/cloud-3343582
  • issue/cloud-3345631
  • issue/cloud-3339774
  • issue/cloud-3339828
  • issue/cloud-3339860
  • issue/cloud-3340098
  • issue/cloud-3340135
  • issue/cloud-3340157
  • issue/cloud-3340431
  • issue/cloud-3340440
  • issue/cloud-3340454
  • issue/cloud-3340720
  • issue/cloud-3340731
  • issue/cloud-3340733
  • issue/cloud-3340739
  • issue/cloud-3340764
  • issue/cloud-3340875
  • issue/cloud-3341036
  • issue/cloud-3341158
  • issue/cloud-3341166
  • issue/cloud-3341225
  • issue/cloud-3341272
  • issue/cloud-3341453
  • issue/cloud-3341310
  • issue/cloud-3341759
  • issue/cloud-3341770
  • issue/cloud-3341772
  • issue/cloud-3324909
  • issue/cloud-3342217
  • issue/cloud-3342235
  • issue/cloud-3341766
  • issue/cloud-3342543
  • issue/cloud-3342559
  • issue/cloud-3343270
  • issue/cloud-3343591
  • issue/cloud-3343619
  • issue/cloud-3344152
  • issue/cloud-3344592
  • issue/cloud-3344860
  • issue/cloud-3345154
  • issue/cloud-3342631
  • issue/cloud-3342633
  • issue/cloud-3343275
  • issue/cloud-3346151
  • issue/cloud-3346177
  • issue/cloud-3346180
  • issue/cloud-3346196
  • issue/cloud-3346423
  • issue/cloud-3346385
  • issue/cloud-3346437
  • issue/cloud-3346439
  • issue/cloud-3346864
  • issue/cloud-3346876
  • issue/cloud-3346902
  • issue/cloud-3347135
  • issue/cloud-3347138
  • issue/cloud-3347147
  • issue/cloud-3347172
  • issue/cloud-3347213
  • issue/cloud-3347446
  • issue/cloud-3347542
  • issue/cloud-3347557
  • issue/cloud-3347743
  • issue/cloud-3347752
  • issue/cloud-3347756
  • issue/cloud-3347774
  • issue/cloud-3347890
  • issue/cloud-3348036
  • issue/cloud-3341769
  • issue/cloud-3348048
  • issue/cloud-3348082
  • issue/cloud-3348349
  • issue/cloud-3348370
  • issue/cloud-3352191
  • issue/cloud-3352626
  • issue/cloud-3348610
  • issue/cloud-3348611
  • issue/cloud-3348828
  • issue/cloud-3348833
  • issue/cloud-3348632
  • issue/cloud-3349074
  • issue/cloud-3349192
  • issue/cloud-3349209
  • issue/cloud-3349784
  • issue/cloud-3349803
  • issue/cloud-3349813
  • issue/cloud-3350051
  • issue/cloud-3349505
  • issue/cloud-3350094
  • issue/cloud-3350107
  • issue/cloud-3351774
  • issue/cloud-3351990
  • issue/cloud-3352343
  • issue/cloud-3352839
  • issue/cloud-3352843
  • issue/cloud-3353083
  • issue/cloud-3353128
  • issue/cloud-3352095
  • issue/cloud-3352284
  • issue/cloud-3352627
  • issue/cloud-3352840
  • issue/cloud-3352861
  • issue/cloud-3353134
  • issue/cloud-3352618
  • issue/cloud-3352836
  • issue/cloud-3353073
  • issue/cloud-3353144
  • issue/cloud-3351227
  • issue/cloud-3351815
  • issue/cloud-3352337
  • issue/cloud-3352821
  • issue/cloud-3353170
  • issue/cloud-3353175
  • issue/cloud-3353180
  • issue/cloud-3353296
  • issue/cloud-3353191
  • issue/cloud-3353380
  • issue/cloud-3353595
  • issue/cloud-3353930
  • issue/cloud-3354139
  • issue/cloud-3354236
  • issue/cloud-3354374
  • issue/cloud-3354376
  • issue/cloud-3354379
  • issue/cloud-3354502
  • issue/cloud-3354505
  • issue/cloud-3354736
  • issue/cloud-3354768
  • issue/cloud-3354809
  • issue/cloud-3355219
  • issue/cloud-3355236
  • issue/cloud-3355256
  • issue/cloud-3355302
  • issue/cloud-3355515
  • issue/cloud-3355903
  • issue/cloud-3355942
  • issue/cloud-3355954
  • issue/cloud-3355965
  • issue/cloud-3356158
  • issue/cloud-3356230
  • issue/cloud-3356454
  • issue/cloud-3356456
  • issue/cloud-3356527
  • issue/cloud-3356528
  • issue/cloud-3356531
  • issue/cloud-3356744
  • issue/cloud-3356758
  • issue/cloud-3356775
  • issue/cloud-3356778
  • issue/cloud-3356780
  • issue/cloud-3356995
  • issue/cloud-3357000
  • issue/cloud-3357013
  • issue/cloud-3357099
  • issue/cloud-3357058
  • issue/cloud-3357545
  • issue/cloud-3357753
  • issue/cloud-3358765
  • issue/cloud-3358769
  • issue/cloud-3358768
  • issue/cloud-3358789
  • issue/cloud-3358803
  • issue/cloud-3358945
  • issue/cloud-3359271
  • issue/cloud-3359275
  • issue/cloud-3359313
  • issue/cloud-3359518
  • issue/cloud-3360272
  • issue/cloud-3360861
  • issue/cloud-3360865
  • issue/cloud-3360866
  • issue/cloud-3360896
  • issue/cloud-3360927
  • issue/cloud-3361130
  • issue/cloud-3361362
  • issue/cloud-3361479
  • issue/cloud-3361611
  • issue/cloud-3361750
  • issue/cloud-3362575
  • issue/cloud-3362605
  • issue/cloud-3362795
  • issue/cloud-3362829
  • issue/cloud-3363078
  • issue/cloud-3363113
  • issue/cloud-3363458
  • issue/cloud-3363744
  • issue/cloud-3363771
  • issue/cloud-3363773
  • issue/cloud-3363995
  • issue/cloud-3364325
  • issue/cloud-3364381
  • issue/cloud-3364561
  • issue/cloud-3364562
  • issue/cloud-3364581
  • issue/cloud-3364582
  • issue/cloud-3364603
  • issue/cloud-3364689
  • issue/cloud-3364751
  • issue/cloud-3365043
  • issue/cloud-3365220
  • issue/cloud-3365221
  • issue/cloud-3365226
  • issue/cloud-3365514
  • issue/cloud-3365773
  • issue/cloud-3366067
  • issue/cloud-3366115
  • issue/cloud-3366345
  • issue/cloud-3366349
  • issue/cloud-3366350
  • issue/cloud-3366436
  • issue/cloud-3366614
  • issue/cloud-3366618
  • issue/cloud-3366641
  • issue/cloud-3366900
  • issue/cloud-3367141
  • issue/cloud-3367261
  • issue/cloud-3367394
  • issue/cloud-3367407
  • issue/cloud-3367408
  • issue/cloud-3367793
  • issue/cloud-3367795
  • issue/cloud-3367838
  • issue/cloud-3367848
  • issue/cloud-3368747
  • issue/cloud-3368924
  • issue/cloud-3369296
  • issue/cloud-3369298
  • issue/cloud-3369977
  • issue/cloud-3370000
  • issue/cloud-3370030
  • issue/cloud-3402291
  • issue/cloud-3402708
  • issue/cloud-3406367
  • issue/cloud-3406626
  • issue/cloud-3370376
  • issue/cloud-3370570
  • issue/cloud-3400344
  • issue/cloud-3370819
  • issue/cloud-3370824
  • issue/cloud-3370846
  • issue/cloud-3403931
  • issue/cloud-3400408
  • issue/cloud-3405792
  • issue/cloud-3406395
  • issue/cloud-3406669
  • issue/cloud-3401036
  • issue/cloud-3401432
  • issue/cloud-3403261
  • issue/cloud-3404490
  • issue/cloud-3404789
  • issue/cloud-3399268
  • issue/cloud-3401037
  • issue/cloud-3401472
  • issue/cloud-3405390
  • issue/cloud-3405417
  • issue/cloud-3406378
  • issue/cloud-3399270
  • issue/cloud-3401473
  • issue/cloud-3406140
  • issue/cloud-3402646
  • issue/cloud-3402982
  • issue/cloud-3399472
  • issue/cloud-3399772
  • issue/cloud-3402301
  • issue/cloud-3406159
  • issue/cloud-3401049
  • issue/cloud-3406113
  • issue/cloud-3406635
  • issue/cloud-3406675
  • issue/cloud-3399993
  • issue/cloud-3405084
  • issue/cloud-3405425
  • issue/cloud-3399443
  • issue/cloud-3401420
  • issue/cloud-3400001
  • issue/cloud-3404519
  • issue/cloud-3371211
  • issue/cloud-3371251
  • issue/cloud-3371479
  • issue/cloud-3371480
  • issue/cloud-3371514
  • issue/cloud-3371922
  • issue/cloud-3372114
  • issue/cloud-3372119
  • issue/cloud-3372366
  • issue/cloud-3372415
  • issue/cloud-3373050
  • issue/cloud-3373136
  • issue/cloud-3373299
  • issue/cloud-3373456
  • issue/cloud-3373754
  • issue/cloud-3373789
  • issue/cloud-3374262
  • issue/cloud-3374538
  • issue/cloud-3374266
  • issue/cloud-3375128
  • issue/cloud-3375264
  • issue/cloud-3375434
  • issue/cloud-3375481
  • issue/cloud-3375708
  • issue/cloud-3375818
  • issue/cloud-3375970
  • issue/cloud-3376004
  • issue/cloud-3376008
  • issue/cloud-3376108
  • issue/cloud-3376363
  • issue/cloud-3376471
  • issue/cloud-3376804
  • issue/cloud-3377028
  • issue/cloud-3377300
  • issue/cloud-3377611
  • issue/cloud-3377631
  • issue/cloud-3377667
  • issue/cloud-3377984
  • issue/cloud-3378118
  • issue/cloud-3378152
  • issue/cloud-3378661
  • issue/cloud-3378883
  • issue/cloud-3378898
  • issue/cloud-3378678
  • issue/cloud-3379058
  • issue/cloud-3379176
  • issue/cloud-3379178
  • issue/cloud-3379196
  • issue/cloud-3379427
  • issue/cloud-3379498
  • issue/cloud-3379581
  • issue/cloud-3379826
  • issue/cloud-3379831
  • issue/cloud-3379866
  • issue/cloud-3380153
  • issue/cloud-3380164
  • issue/cloud-3380403
  • issue/cloud-3380604
  • issue/cloud-3380806
  • issue/cloud-3380859
  • issue/cloud-3380867
  • issue/cloud-3380950
  • issue/cloud-3381113
  • issue/cloud-3381159
  • issue/cloud-3399745
  • issue/cloud-3400002
  • issue/cloud-3405430
  • issue/cloud-3381738
  • issue/cloud-3381795
  • issue/cloud-3382016
  • issue/cloud-3382020
  • issue/cloud-3382180
  • issue/cloud-3382217
  • issue/cloud-3382223
  • issue/cloud-3382242
  • issue/cloud-3382222
  • issue/cloud-3382427
  • issue/cloud-3382740
  • issue/cloud-3382739
  • issue/cloud-3382746
  • issue/cloud-3382783
  • issue/cloud-3383005
  • issue/cloud-3383010
  • issue/cloud-3383054
  • issue/cloud-3383248
  • issue/cloud-3383258
  • issue/cloud-3383329
  • issue/cloud-3383507
  • issue/cloud-3383575
  • issue/cloud-3383633
  • issue/cloud-3383636
  • issue/cloud-3383641
  • issue/cloud-3383642
  • issue/cloud-3383687
  • issue/cloud-3384450
  • issue/cloud-3384636
  • issue/cloud-3384506
  • issue/cloud-3385077
  • issue/cloud-3385085
  • issue/cloud-3385104
  • issue/cloud-3385244
  • issue/cloud-3385247
  • issue/cloud-3385269
  • issue/cloud-3385261
  • issue/cloud-3385308
  • issue/cloud-3385535
  • issue/cloud-3385807
  • issue/cloud-3385822
  • issue/cloud-3385981
  • issue/cloud-3386037
  • issue/cloud-3386224
  • issue/cloud-3386250
  • issue/cloud-3386259
  • issue/cloud-3386365
  • issue/cloud-3386366
  • issue/cloud-3386367
  • issue/cloud-3386384
  • issue/cloud-3386471
  • issue/cloud-3386601
  • issue/cloud-3386610
  • issue/cloud-3386619
  • issue/cloud-3386712
  • issue/cloud-3386739
  • issue/cloud-3386873
  • issue/cloud-3386883
  • issue/cloud-3387181
  • issue/cloud-3387448
  • issue/cloud-3387454
  • issue/cloud-3387479
  • issue/cloud-3387562
  • issue/cloud-3387722
  • issue/cloud-3387724
  • issue/cloud-3387728
  • issue/cloud-3387819
  • issue/cloud-3387854
  • issue/cloud-3387938
  • issue/cloud-3387987
  • issue/cloud-3388149
  • issue/cloud-3388428
  • issue/cloud-3388430
  • issue/cloud-3388435
  • issue/cloud-3388469
  • issue/cloud-3388533
  • issue/cloud-3388714
  • issue/cloud-3388999
  • issue/cloud-3389044
  • issue/cloud-3389063
  • issue/cloud-3389266
  • issue/cloud-3389343
  • issue/cloud-3389344
  • issue/cloud-3389352
  • issue/cloud-3389430
  • issue/cloud-3389433
  • issue/cloud-3389470
  • issue/cloud-3389474
  • issue/cloud-3389704
  • issue/cloud-3389830
  • issue/cloud-3390034
  • issue/cloud-3390522
  • issue/cloud-3390564
  • issue/cloud-3390573
  • issue/cloud-3390762
  • issue/cloud-3390897
  • issue/cloud-3390908
  • issue/cloud-3390991
  • issue/cloud-3391015
  • issue/cloud-3391487
  • issue/cloud-3391488
  • issue/cloud-3392084
  • issue/cloud-3392090
  • issue/cloud-3392095
  • issue/cloud-3392108
  • issue/cloud-3392127
  • issue/cloud-3392137
  • issue/cloud-3392305
  • issue/cloud-3392432
  • issue/cloud-3392783
  • issue/cloud-3392803
  • issue/cloud-3393133
  • issue/cloud-3393432
  • issue/cloud-3393448
  • issue/cloud-3393450
  • issue/cloud-3395061
  • issue/cloud-3396478
  • issue/cloud-3396494
  • issue/cloud-3396497
  • issue/cloud-3396782
  • issue/cloud-3396841
  • issue/cloud-3397568
  • issue/cloud-3397597
  • issue/cloud-3396795
  • issue/cloud-3397917
  • issue/cloud-3397921
  • issue/cloud-3398036
  • issue/cloud-3398238
  • issue/cloud-3398925
  • issue/cloud-3399189
  • issue/cloud-3406842
  • issue/cloud-3406908
  • issue/cloud-3406963
  • issue/cloud-3407721
  • issue/cloud-3407815
  • issue/cloud-3407818
  • issue/cloud-3407819
  • issue/cloud-3407826
  • issue/cloud-3407829
  • issue/cloud-3407830
  • issue/cloud-3407982
  • issue/cloud-3407990
  • issue/cloud-3408015
  • issue/cloud-3408028
  • issue/cloud-3408068
  • issue/cloud-3408070
  • issue/cloud-3408104
  • issue/cloud-3408343
  • issue/cloud-3408346
  • issue/cloud-3408134
  • issue/cloud-3408372
  • issue/cloud-3408385
  • issue/cloud-3408832
  • issue/cloud-3408899
  • issue/cloud-3408933
  • issue/cloud-3408939
  • issue/cloud-3408965
  • issue/cloud-3408967
  • issue/cloud-3409356
  • issue/cloud-3409363
  • issue/cloud-3409375
  • issue/cloud-3409382
  • issue/cloud-3409553
  • issue/cloud-3409555
  • issue/cloud-3446961
  • issue/cloud-3409889
  • issue/cloud-3409911
  • issue/cloud-3409916
  • issue/cloud-3410153
  • issue/cloud-3410164
  • issue/cloud-3410185
  • issue/cloud-3410475
  • issue/cloud-3410677
  • issue/cloud-3410766
  • issue/cloud-3410771
  • issue/cloud-3410780
  • issue/cloud-3410824
  • issue/cloud-3410830
  • issue/cloud-3410832
  • issue/cloud-3410852
  • issue/cloud-3410853
  • issue/cloud-3410955
  • issue/cloud-3410968
  • issue/cloud-3410970
  • issue/cloud-3411114
  • issue/cloud-3411116
  • issue/cloud-3411129
  • issue/cloud-3411135
  • issue/cloud-3411149
  • issue/cloud-3411154
  • issue/cloud-3413903
  • issue/cloud-3413926
  • issue/cloud-3413928
  • issue/cloud-3413929
  • issue/cloud-3414125
  • issue/cloud-3414192
  • issue/cloud-3414204
  • issue/cloud-3414209
  • issue/cloud-3414221
  • issue/cloud-3414223
  • issue/cloud-3415106
  • issue/cloud-3415190
  • issue/cloud-3415219
  • issue/cloud-3415363
  • issue/cloud-3415372
  • issue/cloud-3415697
  • issue/cloud-3416044
  • issue/cloud-3416628
  • issue/cloud-3418203
  • issue/cloud-3418510
  • issue/cloud-3420266
  • issue/cloud-3422779
  • issue/cloud-3422777
  • issue/cloud-3423102
  • issue/cloud-3424163
  • issue/cloud-3424203
  • issue/cloud-3424219
  • issue/cloud-3424234
  • issue/cloud-3424222
  • issue/cloud-3425376
  • issue/cloud-3425385
  • issue/cloud-3425508
  • issue/cloud-3425630
  • issue/cloud-3425894
  • issue/cloud-3425931
  • issue/cloud-3426516
  • issue/cloud-3426535
  • issue/cloud-3426534
  • issue/cloud-3426964
  • issue/cloud-3427185
  • issue/cloud-3426240
  • issue/cloud-3427759
  • issue/cloud-3428019
  • issue/cloud-3436665
  • issue/cloud-3428380
  • issue/cloud-3437561
  • issue/cloud-3437562
  • issue/cloud-3437563
  • issue/cloud-3437159
  • issue/cloud-3436606
  • issue/cloud-3443311
  • issue/cloud-3436314
  • issue/cloud-3443330
  • issue/cloud-3436316
  • issue/cloud-3431187
  • issue/cloud-3432015
  • issue/cloud-3432549
  • issue/cloud-3432891
  • issue/cloud-3432907
  • issue/cloud-3447759
  • issue/cloud-3447760
  • issue/cloud-3449171
  • issue/cloud-3452826
  • issue/cloud-3452874
  • issue/cloud-3452875
  • issue/cloud-3452876
  • issue/cloud-3458095
  • issue/cloud-3458421
  • issue/cloud-3458886
  • issue/cloud-3458887
  • issue/cloud-3458885
  • issue/cloud-3458897
  • issue/cloud-3461750
  • issue/cloud-3461928
  • issue/cloud-3464812
  • issue/cloud-3467938
  • issue/cloud-3487684
  • issue/cloud-3487704
  • issue/cloud-3488325
1980 results
Show changes
Commits on Source (3238)
--errors=box-model,
display-property-grouping,
duplicate-background-images,
duplicate-properties,
empty-rules,
ids,
import,
important,
known-properties,
outline-none,
overqualified-elements,
qualified-headings,
shorthand,
star-property-hack,
text-indent,
underscore-property-hack,
unique-headings,
unqualified-attributes,
vendor-prefix,
zero-units
--ignore=adjoining-classes,
box-sizing,
bulletproof-font-face,
compatible-vendor-prefixes,
errors,
fallback-colors,
floats,
font-faces,
font-sizes,
gradients,
import-ie-limit,
order-alphabetical,
regex-selectors,
rules-count,
selector-max,
selector-max-approaching,
selector-newline,
universal-selector
--exclude-list=./modules/cloud_dashboard/css,
./modules/cloud_dashboard/cloud_dashboard/src
{
"root": true,
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": [
"plugin:yml/recommended"
],
"ignorePatterns": [
"modules/cloud_dashboard/js/index.js",
"modules/cloud_dashboard/cloud_dashboard",
"modules/cloud_service_providers/cloud_cluster/templates/k8s/cloud_orchestrator.yml"
]
}
/.DS_Store
/.project
.DS_Store
################
# DrupalCI GitLabCI template
#
# Gitlab-ci.yml to replicate DrupalCI testing for Contrib
#
# With thanks to:
# * The GitLab Acceleration Initiative participants
# * DrupalSpoons
################
################
# Guidelines
#
# This template is designed to give any Contrib maintainer everything they need to test, without requiring modification. It is also designed to keep up to date with Core Development automatically through the use of include files that can be centrally maintained.
#
# However, you can modify this template if you have additional needs for your project.
################
################
# Includes
#
# Additional configuration can be provided through includes.
# One advantage of include files is that if they are updated upstream, the changes affect all pipelines using that include.
#
# Includes can be overridden by re-declaring anything provided in an include, here in gitlab-ci.yml
# https://docs.gitlab.com/ee/ci/yaml/includes.html#override-included-configuration-values
################
include:
################
# DrupalCI includes:
# As long as you include this, any future includes added by the Drupal Association will be accessible to your pipelines automatically.
# View these include files at https://git.drupalcode.org/project/gitlab_templates/
################
- project: $_GITLAB_TEMPLATES_REPO
# "ref" value can be:
# - Recommended (default) - `ref: $_GITLAB_TEMPLATES_REF` - The Drupal Association will update this value to the recommended tag for contrib.
# - Latest - `ref: main` - Get the latest additions and bug fixes as they are merged into the templates.
# - Minor or Major latests - `ref: 1.x-latest` or `ref: 1.0.x-latest` - Get the latest additions within a minor (mostly bugfixes) or major (bugs and new features).
# - Fixed tag - `ref: 1.0.1` - Set the value to a known tag. This will not get any updates.
# If you change the default value of ref, you should set the _CURL_TEMPLATES_REF variable in the variables section to be the same as set here.
ref: $_GITLAB_TEMPLATES_REF
file:
- '/includes/include.drupalci.main.yml'
# For Drupal 7, remove the above line and uncomment the below.
# - '/includes/include.drupalci.main-d7.yml'
- '/includes/include.drupalci.variables.yml'
- '/includes/include.drupalci.workflows.yml'
################
# Pipeline configuration variables
#
# These are the variables provided to the Run Pipeline form that a user may want to override.
#
# Docs at https://git.drupalcode.org/project/gitlab_templates/-/blob/main/includes/include.drupalci.variables.yml
################
variables:
# Set to 1 to skip the cspell CI job
SKIP_CSPELL: '1'
# Run the phpunit job leveraging concurrency. Turned off by default, set to 1 to enable concurrency. This will use the Drupal core `run-tests.sh` script currently used in DrupalCI for both core and contrib.
# See also: https://git.drupalcode.org/project/gitlab_templates/-/blob/main/includes/include.drupalci.variables.yml#L71-73
_PHPUNIT_CONCURRENT: '1'
composer:
variables:
# Change the PHP and drupal/core versions.
PHP_VERSION: "$CORE_PHP_MAX"
DRUPAL_CORE: '10.3.x'
################
# Make jobs of validate stage not allow failure.
################
composer-lint:
allow_failure: false
phpcs:
allow_failure: false
phpstan:
allow_failure: false
stylelint:
allow_failure: false
eslint:
allow_failure: false
###################################################################################
#
# *
# /(
# ((((,
# /(((((((
# ((((((((((*
# ,(((((((((((((((
# ,(((((((((((((((((((
# ((((((((((((((((((((((((*
# *(((((((((((((((((((((((((((((
# ((((((((((((((((((((((((((((((((((*
# *(((((((((((((((((( .((((((((((((((((((
# ((((((((((((((((((. /(((((((((((((((((*
# /((((((((((((((((( .(((((((((((((((((,
# ,(((((((((((((((((( ((((((((((((((((((
# .(((((((((((((((((((( .(((((((((((((((((
# ((((((((((((((((((((((( ((((((((((((((((/
# (((((((((((((((((((((((((((/ ,(((((((((((((((*
# .((((((((((((((/ /(((((((((((((. ,(((((((((((((((
# *(((((((((((((( ,(((((((((((((/ *((((((((((((((.
# ((((((((((((((, /(((((((((((((. ((((((((((((((,
# (((((((((((((/ ,(((((((((((((* ,(((((((((((((,
# *((((((((((((( .((((((((((((((( ,(((((((((((((
# ((((((((((((/ /((((((((((((((((((. ,((((((((((((/
# ((((((((((((( *(((((((((((((((((((((((* *((((((((((((
# ((((((((((((( ,(((((((((((((..((((((((((((( *((((((((((((
# ((((((((((((, /((((((((((((* /((((((((((((/ ((((((((((((
# ((((((((((((( /((((((((((((/ (((((((((((((* ((((((((((((
# (((((((((((((/ /(((((((((((( ,((((((((((((, *((((((((((((
# (((((((((((((( *(((((((((((/ *((((((((((((. ((((((((((((/
# *((((((((((((((((((((((((((, /(((((((((((((((((((((((((
# ((((((((((((((((((((((((( ((((((((((((((((((((((((,
# .(((((((((((((((((((((((/ ,(((((((((((((((((((((((
# ((((((((((((((((((((((/ ,(((((((((((((((((((((/
# *((((((((((((((((((((( (((((((((((((((((((((,
# ,(((((((((((((((((((((, ((((((((((((((((((((/
# ,(((((((((((((((((((((* /((((((((((((((((((((
# ((((((((((((((((((((((, ,/((((((((((((((((((((,
# ,(((((((((((((((((((((((((((((((((((((((((((((((((((
# .(((((((((((((((((((((((((((((((((((((((((((((
# .((((((((((((((((((((((((((((((((((((,.
# .,(((((((((((((((((((((((((.
#
###################################################################################
services:
php:
image: q0rban/tugboat-drupal:latest
privileged: true
default: true
http: false
depends: memcached
# depends: mysql
commands:
init: |
set -eux
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get update > /dev/null 2>&1 && \
apt-get install -y --no-install-recommends gcc g++ make nodejs yarnpkg \
cron \
git \
libfreetype6-dev \
libjpeg-dev \
libmemcached-dev \
libpng-dev \
libssl-dev \
libwebp-dev \
libzip-dev \
sqlite3 \
unzip \
zip \
zlib1g > /dev/null 2>&1
# Avoid an error: "Allowed memory size of 134217728 bytes exhausted"
export PHP_INI='/usr/local/etc/php/conf.d/my-php.ini'
echo 'memory_limit = -1' >> "${PHP_INI}"
# Set up the max execution time.
echo 'max_execution_time = 600' >> "${PHP_INI}"
# Set up the max input time.
echo 'max_input_time = 600' >> "${PHP_INI}"
# Set up the max input vars.
echo 'max_input_vars = 100000' >> "${PHP_INI}"
# Set up the default output buffering size.
echo 'output_buffering = 4096' >> "${PHP_INI}"
# Check out a branch using the unique Tugboat ID for this repository, to
# ensure we don't clobber an existing branch.
git checkout -b "${TUGBOAT_REPO_ID}"
# Install Memcached libraries.
git clone https://github.com/php-memcached-dev/php-memcached /usr/src/php/ext/memcached
cd /usr/src/php/ext/memcached
docker-php-ext-install memcached > /dev/null 2>&1
echo 'memcache.hash_strategy=consistent' >> /usr/local/etc/php/conf.d/docker-php-ext-memcached.ini
# Install APCu libraries.
git clone https://github.com/krakjoe/apcu /usr/src/php/ext/apcu
cd /usr/src/php/ext/apcu
docker-php-ext-install apcu > /dev/null 2>&1
# Install OpCache.
docker-php-ext-install -j "$(nproc)" opcache > /dev/null 2>&1
# Install uploadprogress.
pecl install uploadprogress > /dev/null 2>&1
docker-php-ext-enable uploadprogress > /dev/null 2>&1
# Install graphic libraries.
docker-php-ext-configure gd \
--with-freetype \
--with-jpeg \
--with-webp > /dev/null 2>&1
docker-php-ext-install -j "$(nproc)" \
gd \
mysqli \
opcache \
pdo_mysql \
zip > /dev/null 2>&1
# Composer is hungry. You need a Tugboat project with a pretty sizeable
# chunk of memory.
export COMPOSER_MEMORY_LIMIT=-1
# This is an environment variable we added in the Dockerfile that
# provides the path to Drupal composer root (not the web root).
cd "${DRUPAL_COMPOSER_ROOT}"
# We configure the Drupal project to use the checkout of the module as a
# Composer package repository.
composer config repositories.tugboat vcs "${TUGBOAT_ROOT}"
# Install Admin Toolbar.
composer require drupal/admin_toolbar
# Install Memcached.
composer require drupal/memcache
# Allow "minimum-stability": "dev" and "prefer-stable": true
composer config minimum-stability dev
composer config prefer-stable true
# Now we can require drupal/cloud, specifying the branch name we created
# above that uses the "${TUGBOAT_REPO_ID}" environment variable.
composer require "drupal/cloud:dev-${TUGBOAT_REPO_ID}"
# Set up a drush command.
ln -s "$(pwd)/vendor/bin/drush" /usr/local/bin/
update: |
set -eux
# Install Drupal on the site.
# Use --db-url=mysql://tugboat:tugboat@mysql:3306/tugboat for mysql connection.
export FILES_DIR='sites/default/files'
drush -y si standard \
--db-url="sqlite://${FILES_DIR}/db.sqlite" \
--site-name="Cloud Orchestrator live preview for '${TUGBOAT_PREVIEW_NAME}'" \
--account-pass='admin'
# Set a images/cloud/icons directory.
mkdir -p "${DRUPAL_DOCROOT}/${FILES_DIR}/images/cloud/icons"
# Set a private directory.
export PRIVATE_DIR="${DRUPAL_DOCROOT}/${FILES_DIR}/private"
mkdir -p "${PRIVATE_DIR}"
# Set up a files directory.
mkdir -p "${DRUPAL_DOCROOT}/${FILES_DIR}"
chown -R www-data:www-data "${DRUPAL_DOCROOT}/${FILES_DIR}"
chmod -R 2775 "${DRUPAL_DOCROOT}/${FILES_DIR}"
chmod -R g+w "${DRUPAL_DOCROOT}/${FILES_DIR}"
# Set up $settings['file_private_path'] in settings.php
export SETTINGS_FILE="${DRUPAL_DOCROOT}/sites/default/settings.php"
echo "\$settings['file_private_path'] = '${PRIVATE_DIR}';" >> "${SETTINGS_FILE}"
# Set up $settings['trusted_host_patterns'] in settings.php
echo "\$settings['trusted_host_patterns'] = ['^.+\.(tugboat\.qa|tugboatqa\.com)$'];" >> "${SETTINGS_FILE}"
# Enable the Cloud family modules.
drush -y en cloud cloud_dashboard
drush -y en aws_cloud gapps
drush -y en k8s
drush -y en openstack
drush -y en terraform
drush -y en vmware
# Enable the other modules.
drush -y en admin_toolbar
drush -y en entity_export_csv
drush -y en geocoder
drush -y en memcache memcache_admin
drush -y en simple_oauth
# Enable the themes.
drush -y then rigel
drush -y then claro
drush -y cset system.theme default rigel
drush -y cset system.theme admin claro
# The settings must be written after enabling the memcache module.
tee -a "${SETTINGS_FILE}" > /dev/null << EOF
\$settings['memcache']['servers'] = ['memcached:11211' => 'default'];
\$settings['memcache']['bins'] = ['default' => 'default'];
\$settings['memcache']['key_prefix'] = 'cloud_orchestrator';
\$settings['memcache']['options'] = [
Memcached::OPT_DISTRIBUTION => Memcached::DISTRIBUTION_CONSISTENT,
];
\$settings['cache']['default'] = 'cache.backend.memcache';
EOF
chmod 444 "${SETTINGS_FILE}"
# Setup crontab.
DRUSH_QUEUE_RUN_SCRIPT="${DRUPAL_DOCROOT}/modules/contrib/cloud/scripts/drush_queue_run.sh"
chmod +x "${DRUSH_QUEUE_RUN_SCRIPT}"
tee /etc/crontab > /dev/null <<EOF
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=''
*/1 * * * * www-data cd '${DRUPAL_DOCROOT}'; drush cron > /dev/null 2>&1
*/15 * * * * www-data cd '${DRUPAL_DOCROOT}'; '${DRUSH_QUEUE_RUN_SCRIPT}' > /dev/null 2>&1
EOF
build: |
set -eux
# Delete and re-check out this branch in case this is built from a Base Preview.
git checkout 8.x && git branch -D "${TUGBOAT_REPO_ID}" && git checkout -b "${TUGBOAT_REPO_ID}" || true
export COMPOSER_MEMORY_LIMIT=-1
cd "${DRUPAL_COMPOSER_ROOT}"
composer install --optimize-autoloader
# Update installed modules.
composer update drupal/cloud --with-all-dependencies
# Build and install cloud_dashboard.
export NODE_PATH='/usr/lib/nodejs:/usr/share/nodejs'
cd "${DRUPAL_DOCROOT}/modules/contrib/cloud/modules/cloud_dashboard/cloud_dashboard"
npm install -g npm@8.3.0
npm install babel-runtime
ln -s /usr/bin/yarnpkg /usr/bin/yarn
./build.sh
# Update databases and clear cache.
cd "${DRUPAL_DOCROOT}"
drush -y updb
drush cr
# mysql:
# image: tugboatqa/mariadb
memcached:
image: tugboatqa/memcached
CHANGE HISTORY
==============
2018/11/21 8.x-1.x-dev
- Add some documentation about MockHandler().
- Remove unnecessary module.
- Resolve deprecation notices outputted in the simpletest.
2018/11/20 8.x-1.x-dev
- Update instance IP information when cron runs.
- Remove references to entity.*.collection routing.
2018/11/18 8.x-1.x-dev
- Add Attach/Detach volume functionality.
2018/11/15 8.x-1.x-dev
- Cannot remove existing AWS Cloud image.
2018/11/14 8.x-1.x-dev
- Fix errors in automated testing.
- Randomize the test data (YAML properties) in test cases.
2018/11/13 8.x-1.x-dev
- Add SimpleTest for cloud_server_template module.
- Cannot delete Elastic IP.
2018/11/12 8.x-1.x-dev
- Update SimpleTest test cases for module aws_cloud.
2018/11/09 8.x-1.x-dev
- Resolve the error "IOPS cannot be set unless volume type is Provisioned IOPS.
SSD" in volume simpletest.
- Update the property name of the SecurityGroup entity after creating a
security group.
- Resolve notice messages of updating instances.
- Add permission "XXX own YYY" in order to operate cloud service provider
(CloudConfig) entities of self.
- Update the property ami_name of image when adding an image.
- Remove duplicate root_device_type declaration.
2018/11/08 8.x-1.x-dev
- Cannot create a volume.
- Add permission 'view published cloud service provider entities'.
2018/11/07 8.x-1.x-dev
- Add trim() to remove white spaces in a textfield.
2018/10/31 8.x-1.0-beta1
- Add ability to notify instance owners.
- Add instance link token to aws_cloud.tokens.inc.
- In the edit screen, default instance timestamp to blank if not set.
- Add ability to terminate instances on a specific date.
- SQL error after any cloud server template launch.
- Enhance access control for aws instances.
- Add support for cloud service provider (CloudConfig) based permissions.
- Add a views filtering plugin that supports dropdown filtering.
- Support Drupal 8.6
- launch time not being brought back when refreshing aws cloud ec2 instances.
- Update instance name with the "Name" tag from Amazon EC2 API.
2018/09/10 8.x-1.0-alpha2
- Swap the /clouds and /cloud/designs out for views pages.
- Add confirmation form when launching an instance.
- An error occurs "Cannot declare class SecurityGroupViewsData, because the
name is already in use" while installing cloud.
2018/08/23 8.x-1.0-alpha1
- Add a start/stop operation to AWS instances.
- Default the aws_instances view sorting to instance_state.
- Instance names are not.
- [Porting to D8] - Implement hook_cloud_config_delete().
- Merge code from GitHub back into Drupal.org
2018/05/31 8.x-1.x-dev
- Re-architect cloud server template to use Entity/Bundles. The cloud server
templates are fieldable.
- The cloud server template uses a plugin manager. Implementing clouds can
provide a plugin to launch instances, and perform other cloud specific
operations.
- The cloud service provider (CloudConfig) uses Entity/Bundles. Each cloud
service provider (CloudConfig) is fieldable.
- The cloud service provider (CloudConfig) uses a PluginManager to manager
implementing cloud service provider (CloudConfig) entities.
- Fixed cron for aws_cloud.
- aws_cloud listing pages are using Views.
- Added aws image importing.
- Cleaned up old drupal 7 files.
2018/03/13 8.x-1.x-dev
- [Porting to D8] - All AWS entities throw MissingMandatoryParametersException
for cloud_context.
2016/04/15 8.x-1.x-dev
- Fixed and testd on drupal-8.2.x-dev
- NOTE: Changed the URL removing 'cloud' for Server Templates and Scripting in case of conflict including 'cloud' in hostname (e.g. http://cloud.example.com or http://example.com/cloud)
- Fixed and tested on drupal-8.2.x-dev.
- NOTE: Changed the URL removing 'cloud' for cloud server templates and
Scripting in case of conflict including 'cloud' in hostname (e.g.
http://cloud.example.com or http://example.com/cloud).
2015/09/28 8.x-1.x-dev
- Fixed and tested on drupal-8.0.0-beta15
- NOTE: Server Templates module didn't pass SimpleTest
- Fixed and tested on drupal-8.0.0-beta15.
- NOTE: Cloud server templates module did not pass SimpleTest.
2015/08/20 8.x-1.x-dev
- Uploaded some modules
- Uploaded some modules.
2015/07/28 8.x-1.x-dev
- Initial commit
- Initial commit.
2015/05/19 8.x-1.x-dev
- Initial copy
- Initial copy.
End of CHANGELOG.txt
Version
=======
Cloud 8.x-1.x
* This is under development as a very initial stage.
Introduction
============
Cloud is a set of modules to enable Cloud orchestration: A Drupal-based
Cloud dashboard for _AWS_, _Kubernetes_, _OpenStack_, _VMware_ and _Terraform
Cloud_ as a one-stop portal to manage multiple cloud service providers.
Requirements
============
- PHP `8.3` or higher (`128 MB` memory or higher)
- MySQL `8.0` or higher _OR_ MariaDB `10.5` or higher
- Drupal `10.3` or higher
- Cloud `8.x`
- This branch includes support for _AWS_, _Kubernetes_, _OpenStack_,
_VMware_ and _Terraform Cloud_
- Future support includes _GCP_ and _MS Azure_
Limitations
===========
- The `aws_cloud` module does **not** support *Classic EC2 instances*
(_Non-VPC_).
**Note:** Classic instances (_Non-VPC_) are available for AWS accounts
created before *2013-12-03*.
`aws_cloud` module is only tested for _EC2-VPC_ instances.
See also:
- [Default VPC and Default Subnets](
https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html
)
- [Discussion Forums: Launch a NON-VPC EC2 instance?](
https://forums.aws.amazon.com/thread.jspa?threadID=182773
)
Installation
============
- There are the following options to install `cloud` module as a [Cloud
Orchestrator](https://www.drupal.org/project/cloud_orchestrator) distribution:
1. Use PHP composer: `composer create-project
docomoinnovations/cloud_orchestrator cloud_orchestrator`
2. Launch Cloud [Cloud Orchestrator](
https://www.drupal.org/project/cloud_orchestrator
) `8.x-dev` from [AWS Marketplace](
https://aws.amazon.com/marketplace/pp/B08PN2Z6X6?ref_=srh_res_product_title
)
3. Launch an Amazon EC2 instance of Cloud Orchestrator using
[AWS CloudFormation Template](
https://cloud-orchestrator.s3.amazonaws.com/cfn/cloud_orchestrator_single.yaml
)
4. [Download the module](
https://www.drupal.org/project/cloud
) directly to an existing Drupal installation
Configuration
=============
BASIC INFO
==========
IAM Policy (AWS)
----------------
Cloud (a.k.a Clanavi) is a set of modules that lets users administer public and
private clouds from within Drupal. Clanavi provide users the ability to manage public
clouds such as AWS EC2 clouds as well as private clouds like OpenStack, Eucalyptus and XCP.
- Before you create a new _AWS Cloud service provider_, you may want to
configure _IAM Policy_ as follows:
- Mandatory _IAM policy_ for creating an _AWS Cloud service provider_
are:
```
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Mandatory",
"Effect": "Allow",
"Action": [
"ec2:DescribeAddresses",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeIamInstanceProfileAssociations",
"ec2:DescribeCarrierGateways",
"ec2:DescribeFlowLogs",
"ec2:DescribeImageAttribute",
"ec2:DescribeImages",
"ec2:DescribeInstanceAttribute",
"ec2:DescribeInstances",
"ec2:DescribeInternetGateways",
"ec2:DescribeKeyPairs",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSnapshots",
"ec2:DescribeSubnets",
"ec2:DescribeTransitGateways",
"ec2:DescribeVolumes",
"ec2:DescribeVpcPeeringConnections",
"ec2:DescribeVpcs",
"iam:ListInstanceProfiles"
],
"Resource": "*"
}
]
}
```
- Optional _IAM policy_ for creating an _AWS Cloud service provider_ are:
```
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Optional",
"Effect": "Allow",
"Action": [
"cloudwatch:GetMetricData",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateKeyPair",
"ec2:CreateLaunchTemplate",
"ec2:CreateNetworkInterface",
"ec2:CreateSecurityGroup",
"ec2:CreateSnapshot",
"ec2:CreateSubnet",
"ec2:CreateTags",
"ec2:CreateVpc",
"ec2:GetConsoleOutput",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress"
],
"Resource": "*"
}
]
}
```
- The resource field should limit to the AWS account number and target
resource e.g. `"Resource": "arn:aws:ec2:*:049876562615:key-pair/*"`.
- See also: [Example policies for working in the Amazon EC2 console](
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-ec2-console.html
)
FEATURES
========
- TODO
Basic Setup (AWS)
-----------------
INSTALLATION: FOR USAGE WITH AMAZON EC2
=======================================
- TODO
1. Add a new _AWS Cloud service provider_ based on your needs.
Go to `Structure` > `Cloud service providers` and click
`+ Add cloud service provider` for _AWS Cloud_
2. Enter all required configuration parameters. The system will automatically
set up all regions from your AWS account. There are three options for
specifying AWS credentials:
BASIC USAGE: AMAZON EC2
=======================
- TODO
1. Instance credentials - If cloud module is running on an EC2 instance and
the EC2 instance has an IAM role attached, you have the option to check
`Use Instance Credentials`. Doing so is secure and does not require
`Access key ID` and `Secret access key` to be entered into Drupal.
Please refer to this AWS tutorial about IAM role and EC2 Instance:
PERMISSONS
==========
- TODO
https://aws.amazon.com/blogs/security/easily-replace-or-attach-an-iam-role-to-an-existing-ec2-instance-by-using-the-ec2-console/
SYSTEM REQUIREMENTS
===================
- PHP 5.4 or Higher
- MySQL 5.5 or Higher
- Drupal 8.x
- 512MB Memory: If you use AWS Cloud module, the running host of this
system requires more than 512MB memory to download a list of images
(because it's huge amount of data for listing).
2. Simple access - Specify `Access key ID` and `Secret access key` to access
a particular account's EC2 instances.
3. Assume role - Specify `Access key ID`, `Secret access key` and the
`Assume role` section. With this combination, the `cloud` module can
assume the role of another AWS account and access their EC2 instances.
To learn more about setting up assume role setup, please read this AWS
tutorial:
DIRECTORY STRUCTURE
===================
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html
3. Run cron to update your specific Cloud region.
4. Use the links under `Cloud service providers` > `[Cloud service provider]`
to manage your Amazon EC2 entities.
5. Import Images using the tab:
`Cloud service providers` > `[Cloud service provider]` | `Images`
- Click on `+ Import AWS Cloud image`
- Search for images by AMI name. For example, to import `Anaconda` images
based on Ubuntu, type in `anaconda*ubuntu*`.
Use the AWS Console on `aws.amazon.com` to search for images to import
6. `Import` or `Add AWS Cloud key pair`. The key pair is used to log into any
system you launch. Use the links under the tab:
`Cloud service providers` > `[Cloud service provider]` | `Key pair`
- Use the `+ Import AWS Cloud key pair` button to import an existing key
pair. You will be uploading your public key.
- Use `+ Add AWS Cloud key pair` to have AWS generate a new private key.
You will be prompted to download the key after it is created.
7. Setup `Security groups`, `Network interfaces` as needed.
Launching Instance
------------------
1. Create a launch template under
`Design` > `Launch template` > `[Cloud service provider]`
2. After creating a template, change the workflow status to `Approved`.
3. Click the `Launch` tab to launch it.
Permissions
-----------
- Configure permissions per your requirements.
- [The detail about permissions is here.](
https://www.drupal.org/docs/8/modules/cloud/configuration
)
Module Structure
================
`cloud` is the heart of modules of the `Cloud` and `Cloud service provider`
packages.
```
cloud
+-modules (depends on Cloud module) (Cloud is a core module for Cloud package)
+-cloud_alerts
+-cloud_pricing
+-cloud_scripting
+-cloud_server_templates
+-modules
- cloud_service_providers
- aws_cloud
hook_api() FOR SUBSIDIARY MODULES
======================================
- TODO
`-- modules
|-- cloud_budget
|-- cloud_cluster_worker
|-- cloud_dashboard
|-- cloud_service_providers
| |-- aws_cloud
| |-- cloud_cluster
| |-- docker
| |-- k8s
| |-- openstack
| |-- terraform
| `-- vmware
|-- gapps
`-- tools
|-- k8s_to_s3
`-- s3_to_k8s
```
Known Issues
============
- When adding a Metrics Server enabled Kubernetes cluster, the metrics
importing operation can potentially take a long time to complete.
During this process, there might be database corruption if the `aws_cloud`
module is enabled.
- As a workaround, enable `aws_cloud` when the server is idle and not processing
an `Add cloud service provider` for _Kubernetes_ operation.
License
=======
Cloud Orchestrator is released under the terms of the [GPLv2 license](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#SEC1).
Maintainers
===========
- Yas Naoi (`yas`) (https://drupal.org/u/yas)
- Baldwin Louie (`baldwinlouie`) (https://www.drupal.org/u/baldwinlouie)
<?php
/**
* @file
* Hooks provided by Cloud.
* This is a documentation file.
*/
/**
* This hook lets subclouds implement cloud actions.
*
* @param string $op
* The operation to be executed: launch, launch_using params,
* terminate, check_key_sg_data, check_key_data, check_sg_data, get_images_count,
* backup, detach_volume, check_snapshot_completion, check_volume_attached_status, check_instance_terminated
* get_instance_lock_status
* NOTE: for get_instance_lock_status, the params array should contain the instance/vm id against the instance_id key, for all clouds
* @param array $params
* An array contain all the required information. The cloud_context is passed
* as one of the array elements.
*/
function hook_cloud_action($op, $params = []) {
switch ($op) {
case 'launch':
break;
case 'launch_using_params':
break;
case 'post_launch':
break;
case 'terminate':
break;
case 'check_key_sg_data':
break;
case 'check_key_data':
break;
case 'check_sg_data':
break;
case 'get_images_count':
break;
case 'backup':
break;
case 'detach_volume':
break;
case 'check_snapshot_completion':
break;
case 'check_volume_attached_status':
break;
case 'check_instance_terminated':
break;
case 'get_instance_lock_status':
break;
}
}
/**
* This hook returns the list of instances presented in an enabled
* sub-cloud.
*
* @param string $cloud_context
* The sub-cloud to return information from
* @param array $filter
* An array of filters passed from the UI
*/
function hook_cloud_get_all_instances($cloud_context, $filter = []) {
// Return your instance information from the database.
}
/**
* This hook returns data about a particular sub-cloud.
*
* @param string $cloud_context
* The sub-cloud to query and return data
* @param array $filter
* An array of filters passed from the UI
*/
function hook_cloud_get_instance($cloud_context, $filter = []) {
// Return your sub-cloud information.
}
/**
* This hook returns the ssh key for a particular user.
*
* @param array $params
* The param array contains the key_name, cloud_context
*/
function hook_cloud_get_ssh_key($params) {
// Return your ssh key information from the database.
}
/**
* This hook is called when data about a particular sub-cloud
* needs to be downloaded.
*
* @param string $cloud_context
* The sub-cloud for which the information is to be retrieved
*/
function hook_cloud_update_data($cloud_context) {
// Download your cloud data here.
}
/**
* This hook sets some initialization information about a
* particular sub-cloud. This hook isn't really utilized
* with the new cloud administration ui. Sub-clouds that
* have not been moved to the new ui still uses this hook.
*
* @param string $cloud_context
* Cloud context is passed if your module implements
* more than one variant of your cloud. For example: the
* OpenStack, Eucalyptus and Amazon EC2 implementations are
* handled by one module. cloud_context is used to distingush
* the different sub-clouds.
*/
function hook_cloud_set_info($cloud_context = '') {
return [
'cloud_display_name' => DISPLAY_NAME,
'cloud_name' => CONTEXT,
'module' => 'xcp',
'base_cloud' => 'xcp',
'instance_types' => [
XCP_DEFAULT_INSTANCE_TYPE => XCP_DEFAULT_INSTANCE_TYPE,
],
'cloud_pricing_data' => [
XCP_DEFAULT_INSTANCE_TYPE => [
'instance_type' => XCP_DEFAULT_INSTANCE_TYPE,
'description' => t('Default'),
'linux_or_unix_cost' => '0.085',
'windows_cost' => '0.089',
],
],
];
}
/***** New hooks added to cloud module******/
/**
* This hook is called when a sub-cloud row is saved
* into the table cloud_clouds. This allows sub-cloud modules to
* take the data and store it in different places or
* do something else with it. The cloud_pricing and cloud_server_template
* modules have implemented this hook.
*
* @param string $op
* The op can be 'create' or 'edit'
* @param object $cloud
*/
function hook_cloud_save($op, $cloud) {
// Do something with the data.
}
/**
* This hook is called when a sub-cloud row is
* deleted from the table cloud_clouds. The cloud_pricing
* and cloud_server_template modules have implemented this hook.
*
* @param unknown_type $cloud_name
*/
function hook_cloud_delete($cloud_name) {
// Do something to the sub-cloud.
}
/**
* Thsi hook is called to return a specific piece
* of information about a sub-cloud. For example, the
* cloud module will need to retrieve the host_uri, or
* user/password. the aws_cloud module implements this hook.
*
* @param string $cloud_name
* @param string $key
*/
function hook_cloud_get_info($cloud_name, $key) {
// Return any name/value pairs.
}
<?php
/**
* @file
* This is a supplemental file for launching a SSH console.
*
*/
<?php
/**
* @file
* Defines constants for cloud.module.
*
*/
/**
* @file
* Provides common functionalites for cloud management.
*/
drupal_set_time_limit(5000);
//project name as a prefix to all project specific tables
define('CLOUD_PREFIX' , 'cloud_');
define('CLOUD_NONE' , '- none -');
define('CLOUD_CLOUDS_TABLE' , CLOUD_PREFIX . 'clouds');
define('CLOUD_TEMP_TABLE' , CLOUD_PREFIX . 'temp_table');
define('CLOUD_INSTANCE_TYPE_TABLE' , CLOUD_PREFIX . 'instance_types');
define('CLOUD_PAGER_LIMIT' , 50);
define('CLOUD_SSH_USER_NAME' , 'root');
define('CLOUD_RRD_FILE' , 'rrd.php');
define('CLOUD_REMOTE_SNMP_MANAGER' , 'cloud_snmp_manager.php');
// This Module Name list will be mainly used to check whether the Module is enabled or no.
//for linux
define('CLOUD_PATH_SEPARATOR' , '/');
define('CLOUD_PHP_PATH' , 'php');
define('CLOUD_SSH_PATH' , 'ssh');
define('CLOUD_SCP_PATH' , 'scp');
define('CLOUD_HOST_ENTRIES_REFRESH_TIME', 5);
define('CLOUD_INPUTS_PARAMETER_VALUES_TABLE', CLOUD_PREFIX . 'inputs_parameter_values');
define('CLOUD_INSTANCE_STATUS_BOOTING' , 'booting');
define('CLOUD_INSTANCE_STATUS_OPERATIONAL', 'operational');
/**
* DIGIT [0-9] only without decimal point. int value only
*/
define('CLOUD_VALID_DIGIT', '/^[0-9]+$/');
define('CLOUD_TIME_LIMIT', 1000);
<?php
/**
* @file
* Provides common database-related functionalites for cloud management.
*
*/
/**
* update cloud table with latest timestamp
* @return unknown_type
*/
function cloud_update_host_entries_last_update_time($cloud_context) {
$num_updated = db_update(CLOUD_CLOUDS_TABLE)
->fields(array(
'last_update_time' => REQUEST_TIME,
))
->condition('cloud_name', $cloud_context, '=')
->execute();
// User Activity Log
cloud_audit_user_activity( array(
'type' => 'user_activity',
'message' => t('Cloud has been modified: @cloud_context', array('@cloud_context' => $cloud_context)),
'link' => '', //'design/alerts/create&id=' . $alert_id
)
);
return;
}
/**
* Add a cloud row into the cloud_clouds table
* @param unknown_type $query_args
*/
function cloud_add_cloud_row($query_args) {
$num_inserted = db_insert(CLOUD_CLOUDS_TABLE)
->fields(
array(
'cloud_name' => $query_args[0],
'cloud_display_name' => $query_args[1],
'last_update_time' => REQUEST_TIME -10,
'host_entries_refresh_time' => $query_args[2],
'module' => $query_args[3],
'base_cloud' => $query_args[4],
))
->execute();
return $num_inserted;
}
/**
* Get the module responsible for this cloud_context.
*/
function cloud_get_module($cloud_context) {
static $modules;
$return = NULL;
if (isset($modules[$cloud_context])) {
$return = $modules[$cloud_context];
}
else {
$module = db_query('SELECT module from {' . CLOUD_CLOUDS_TABLE . '} where cloud_name = :cloud_name ', array(':cloud_name' => $cloud_context))->fetchField();
if ($module !== FALSE) {
$return = $module;
$modules[$cloud_context] = $return;
}
}
return $return;
}
/**
* Get the base cloud type for this cloud_context
*/
function cloud_get_base_cloud($cloud_context) {
return db_query("SELECT base_cloud from {" . CLOUD_CLOUDS_TABLE . "} where cloud_name = :cloud_name ", array(':cloud_name' => $cloud_context))->fetchField();
}
/**
* Check for an existing cloud_name in the database
* @param unknown_type $cloud_name
*/
function cloud_check_cloud_name($cloud_name) {
return cloud_get_db_results("SELECT cloud_name from {" . CLOUD_CLOUDS_TABLE . "} where cloud_name = :cloud_name ", array(':cloud_name' => $cloud_name));
}
/**
* @todo Please document this function.
* @see http://drupal.org/node/1354
*/
function cloud_get_all_scripts($type) {
$query = _cloud_scripting_get_scripts();
$query->condition('type', $type, '=');
$result = $query->execute();
$script_options = array();
foreach ($result as $script) {
$script_options[$script->script_id] = $script->name;
}
return $script_options;
}
......@@ -25,20 +25,24 @@ DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME = "Cloud 8.0.x-dev"
PROJECT_NAME = Cloud
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
# This could be handy for archiving the generated documentation or
# if some version control system is used.
PROJECT_NUMBER = ver.8.0.x-dev
PROJECT_NUMBER = ver.8.x-dev
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = /var/www/html/data/d8/docs
# If the web directory for your web site is /var/www/html/web, then you can
# access to the docs at: https://example.com/docs/cloud
# See also: https://www.drupal.org/docs/8/modules/cloud/api-docs
OUTPUT_DIRECTORY = /var/www/html/web/docs
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
......@@ -86,7 +90,7 @@ REPEAT_BRIEF = YES
# "The $name file" "is" "provides" "specifies" "contains"
# "represents" "a" "an" "the"
ABBREVIATE_BRIEF =
ABBREVIATE_BRIEF =
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
......@@ -114,7 +118,7 @@ FULL_PATH_NAMES = YES
# If left blank the directory from which doxygen is run is used as the
# path to strip.
STRIP_FROM_PATH =
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
......@@ -123,11 +127,11 @@ STRIP_FROM_PATH =
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
STRIP_FROM_INC_PATH =
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful if your file system
# doesn't support long names like on DOS, Mac, or CD-ROM.
# does not support long names like on DOS, Mac, or CD-ROM.
SHORT_NAMES = NO
......@@ -179,7 +183,7 @@ TAB_SIZE = 8
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
ALIASES =
ALIASES =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
......@@ -273,22 +277,6 @@ SUBGROUPING = YES
TYPEDEF_HIDES_STRUCT = NO
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
# determine which symbols to keep in memory and which to flush to disk.
# When the cache is full, less often used symbols will be written to disk.
# For small to medium size projects (<1000 input files) the default value is
# probably good enough. For larger projects a too small cache size can cause
# doxygen to be busy swapping symbols to and from disk most of the time
# causing a significant performance penality.
# If the system has enough physical memory increasing the cache will improve the
# performance by keeping more symbols in memory. Note that the value works on
# a logarithmic scale so increasing the size by one will roughly double the
# memory usage. The cache size is given by this formula:
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols
SYMBOL_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
......@@ -465,7 +453,7 @@ GENERATE_DEPRECATEDLIST = YES
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
ENABLED_SECTIONS =
ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or macro consists of for it to appear in
......@@ -483,12 +471,6 @@ MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
# If the sources in your project are distributed over multiple directories
# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
# in the documentation. The default is NO.
SHOW_DIRECTORIES = NO
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES.
......@@ -510,7 +492,7 @@ SHOW_NAMESPACES = YES
# provided by doxygen. Whatever the program writes to standard output
# is used as the file version. See the manual for examples.
FILE_VERSION_FILTER =
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
......@@ -519,7 +501,7 @@ FILE_VERSION_FILTER =
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.
LAYOUT_FILE =
LAYOUT_FILE =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
......@@ -545,7 +527,7 @@ WARN_IF_UNDOCUMENTED = YES
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as not documenting some
# parameters in a documented function, or documenting parameters that
# don't exist or using markup commands wrongly.
# do not exist or using markup commands wrongly.
WARN_IF_DOC_ERROR = YES
......@@ -570,7 +552,7 @@ WARN_FORMAT = "$file:$line: $text"
# and error messages should be written. If left blank the output is written
# to stderr.
WARN_LOGFILE =
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
......@@ -633,20 +615,20 @@ EXCLUDE_PATTERNS = .svn *.info *.txt *.jar *.sh *.bat IPv4.php cloud_failover.na
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
EXCLUDE_SYMBOLS =
EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
# the \include command).
EXAMPLE_PATH =
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
# blank all files are included.
EXAMPLE_PATTERNS =
EXAMPLE_PATTERNS =
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude
......@@ -659,7 +641,7 @@ EXAMPLE_RECURSIVE = NO
# directories that contain image that are included in the documentation (see
# the \image command).
IMAGE_PATH =
IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
......@@ -670,7 +652,7 @@ IMAGE_PATH =
# If FILTER_PATTERNS is specified, this tag will be
# ignored.
INPUT_FILTER =
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis.
......@@ -681,7 +663,7 @@ INPUT_FILTER =
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
FILTER_PATTERNS =
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
......@@ -766,7 +748,7 @@ COLS_IN_ALPHA_INDEX = 5
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
IGNORE_PREFIX =
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
......@@ -793,22 +775,22 @@ HTML_FILE_EXTENSION = .php
# each generated HTML page. If it is left blank doxygen will generate a
# standard header.
HTML_HEADER =
HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
HTML_FOOTER =
HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own
# the style sheet file to the HTML output directory, so do not put your own
# stylesheet in the HTML output directory as well, or it will be erased!
HTML_STYLESHEET =
HTML_STYLESHEET =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the stylesheet and background images
......@@ -841,12 +823,6 @@ HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = YES
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
# NO a bullet list will be used.
HTML_ALIGN_MEMBERS = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
......@@ -904,14 +880,14 @@ GENERATE_HTMLHELP = NO
# can add a path in front of the file if the result should not be
# written to the html output directory.
CHM_FILE =
CHM_FILE =
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
# be used to specify the location (absolute path including file name) of
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
# the HTML help compiler on the generated index.hhp.
HHC_LOCATION =
HHC_LOCATION =
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
# controls if a separate .chi index file is generated (YES) or that
......@@ -923,7 +899,7 @@ GENERATE_CHI = NO
# is used to encode HtmlHelp index (hhk), content (hhc) and project file
# content.
CHM_INDEX_ENCODING =
CHM_INDEX_ENCODING =
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
# controls whether a binary table of contents is generated (YES) or a
......@@ -947,7 +923,7 @@ GENERATE_QHP = NO
# be used to specify the file name of the resulting .qch file.
# The path specified is relative to the HTML output folder.
QCH_FILE =
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
......@@ -965,14 +941,14 @@ QHP_VIRTUAL_FOLDER = doc
# add. For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
# Qt Help Project / Custom Filters</a>.
QHP_CUST_FILTER_ATTRS =
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's
......@@ -980,14 +956,14 @@ QHP_CUST_FILTER_ATTRS =
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
# Qt Help Project / Filter Attributes</a>.
QHP_SECT_FILTER_ATTRS =
QHP_SECT_FILTER_ATTRS =
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
# be used to specify the location of Qt's qhelpgenerator.
# If non-empty doxygen will try to run qhelpgenerator on the generated
# .qhp file.
QHG_LOCATION =
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
......@@ -1028,11 +1004,6 @@ ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
# and Class Hierarchy pages using a tree view instead of an ordered list.
USE_INLINE_TREES = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
# is shown.
......@@ -1143,14 +1114,14 @@ PAPER_TYPE = a4
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
# packages that should be included in the LaTeX output.
EXTRA_PACKAGES =
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
# the generated latex document. The header should contain everything until
# the first chapter. If it is left blank doxygen will generate a
# standard header. Notice: only use this tag if you know what you are doing!
LATEX_HEADER =
LATEX_HEADER =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
......@@ -1220,12 +1191,12 @@ RTF_HYPERLINKS = NO
# config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
RTF_STYLESHEET_FILE =
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an rtf document.
# Syntax is similar to doxygen's config file.
RTF_EXTENSIONS_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
......@@ -1271,18 +1242,6 @@ GENERATE_XML = NO
XML_OUTPUT = xml
# The XML_SCHEMA tag can be used to specify an XML schema,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_SCHEMA =
# The XML_DTD tag can be used to specify an XML DTD,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
XML_DTD =
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
# dump the program listings (including syntax highlighting
# and cross-referencing information) to the XML output. Note that
......@@ -1333,9 +1292,9 @@ PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file
# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
# This is useful so different doxyrules.make files included by the same
# Makefile don't overwrite each other's variables.
# Makefile do not overwrite each other's variables.
PERLMOD_MAKEVAR_PREFIX =
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
......@@ -1369,14 +1328,14 @@ SEARCH_INCLUDES = YES
# contain include files that are not input files but should be processed by
# the preprocessor.
INCLUDE_PATH =
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
# be used.
INCLUDE_FILE_PATTERNS =
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
......@@ -1386,14 +1345,14 @@ INCLUDE_FILE_PATTERNS =
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED =
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition.
EXPAND_AS_DEFINED =
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all function-like macros that are alone
......@@ -1424,12 +1383,12 @@ SKIP_FUNCTION_MACROS = YES
# If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here.
TAGFILES =
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
GENERATE_TAGFILE =
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
# in the class index. If set to NO only the inherited external classes
......@@ -1467,7 +1426,7 @@ CLASS_DIAGRAMS = NO
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
MSCGEN_PATH =
MSCGEN_PATH =
# If set to YES, the inheritance and collaboration graphs will hide
# inheritance and usage relations if the target is undocumented
......@@ -1490,29 +1449,11 @@ HAVE_DOT = YES
DOT_NUM_THREADS = 0
# By default doxygen will write a font called FreeSans.ttf to the output
# directory and reference it in all dot files that doxygen generates. This
# font does not include all possible unicode characters however, so when you need
# these (or just want a differently looking font) you can specify the font name
# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
# which can be done by putting it in a standard location or by setting the
# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
# containing the font.
DOT_FONTNAME = FreeSans.ttf
# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
# The default size is 10pt.
DOT_FONTSIZE = 10
# By default doxygen will tell dot to use the output directory to look for the
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
# different font using DOT_FONTNAME you can set the path where dot
# can find it using this tag.
DOT_FONTPATH =
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect inheritance relations. Setting this tag to YES will force the
......@@ -1594,19 +1535,19 @@ DOT_IMAGE_FORMAT = png
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
DOT_PATH =
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the
# \dotfile command).
DOTFILE_DIRS =
DOTFILE_DIRS =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the
# \mscfile command).
MSCFILE_DIRS =
MSCFILE_DIRS =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph
......
This diff is collapsed.
name: Cloud
name: 'Cloud'
type: module
description: Allows users to manage Clouds.
description: 'Allows users to manage cloud service providers.'
package: Cloud
version : 8.x-1.x
core : 8.x
project : cloud
scripts:
- js/cloud.js
\ No newline at end of file
core_version_requirement: ^10.3 || ^11
configure: cloud.settings
dependencies:
- drupal:field
- drupal:file
- drupal:filter
- drupal:image
- drupal:link
- drupal:options
- drupal:user
- drupal:taxonomy
- drupal:text
- drupal:views
interface translation project: cloud
interface translation server pattern: modules/contrib/cloud/translations/%language.po
This diff is collapsed.
cloud:
version: 8.x-1.x
css:
theme:
css/cloud.css: {}
js:
js/cloud.js: {}
dependencies:
- core/jquery
\ No newline at end of file
cloud_view_builder:
version: 8.x-dev
css:
theme:
css/cloud_view_builder.css: {}
d3:
remote: https://github.com/d3/d3
license:
name: BSD 3-Clause "New" or "Revised" License
url: https://github.com/d3/d3/blob/master/LICENSE
gpl-compatible: true
js:
https://d3js.org/d3.v5.min.js: { type: external, minified: true }
d3-horizon-chart:
version: 8.x-dev
license:
name: Apache License, Version 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
gpl-compatible: false
js:
https://unpkg.com/@docomoinnovations/horizon-chart@1.1.0/dist/d3-horizon-chart.js: { type: external, minified: true }
js/cloud_horizon_chart.js: {}
dependencies:
- cloud/d3
c3:
remote: https://github.com/c3js/c3
version: 0.7.15
license:
name: The MIT License (MIT)
url: https://github.com/c3js/c3/blob/master/LICENSE
gpl-compatible: true
js:
https://cdnjs.cloudflare.com/ajax/libs/c3/0.7.15/c3.min.js: { type: external, minified: true }
css:
theme:
https://cdnjs.cloudflare.com/ajax/libs/c3/0.7.15/c3.min.css: { type: external, minified: true }
dependencies:
- cloud/d3
tom-select:
remote: https://github.com/orchidjs/tom-select
version: 2.3.1
license:
name: Apache License, Version 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
gpl-compatible: false
js:
https://cdn.jsdelivr.net/npm/tom-select@2.3.1/dist/js/tom-select.complete.min.js: { type: external, minified: true }
css:
theme:
https://cdn.jsdelivr.net/npm/tom-select@2.3.1/dist/css/tom-select.css: { type: external, minified: true }
datatables:
remote: https://github.com/fiduswriter/Simple-DataTables
version: 3.1.2
license:
name: GNU LESSER GENERAL PUBLIC LICENSE
url: https://raw.githubusercontent.com/fiduswriter/Simple-DataTables/main/LICENSE
gpl-compatible: true
js:
https://cdn.jsdelivr.net/npm/simple-datatables@3.1.2/dist/umd/simple-datatables.min.js: { type: external, minified: true }
js/cloud_datatables_config.js: {}
# K8s node Metrics Charts
chartjs:
remote: https://github.com/chartjs/Chart.js
version: 2.8.0
license:
name: The MIT License (MIT)
url: https://raw.githubusercontent.com/chartjs/Chart.js/master/LICENSE.md
js:
https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js: { type: external, minified: true }
cloud_config_location:
version: 8.x-dev
js:
js/cloud_config_location.js: {}
dependencies:
- core/jquery
- cloud/d3
css:
theme:
css/cloud_config_location.css: {}
cloud_geocoder:
version: 8.x-dev
js:
js/cloud_geocoder.js: {}
dependencies:
- core/jquery
cloud_icon:
version: 8.x-dev
css:
theme:
css/cloud_icon.css: {}
cloud_ansi_color:
version: 8.x-dev
css:
theme:
css/cloud_ansi_color.css: {}
entity.cloud_context.add_form:
route_name: 'entity.cloud_context.add_form'
title: 'Add CloudContext'
title: 'Add cloud service provider'
appears_on:
- entity.cloud_context.collection
entity.cloud_config.add_form:
route_name: entity.cloud_config.add_page
title: 'Add cloud service provider'
appears_on:
- entity.cloud_config.collection
entity.cloud_config_type.add_form:
route_name: entity.cloud_config_type.add_form
title: 'Add cloud service provider type'
appears_on:
- entity.cloud_config_type.collection
entity.cloud_launch_template.add_form:
route_name: entity.cloud_launch_template.add_form
title: 'Add launch template'
class: 'Drupal\cloud\Plugin\Derivative\CloudLaunchTemplateLocalAction'
appears_on:
- entity.cloud_launch_template.collection
entity.cloud_launch_template.collection:
route_name: entity.cloud_launch_template.collection
title: 'List launch template'
appears_on:
- entity.cloud_launch_template.add_form
- entity.cloud_launch_template.edit_form
- entity.cloud_launch_template.delete_form
entity.cloud_server_template_type.add_form:
route_name: entity.cloud_server_template_type.add_form
title: 'Add launch template type'
appears_on:
- entity.cloud_server_template_type.collection
entity.cloud_launch_template.refresh_edit:
route_name: entity.cloud_launch_template.list_update
title: 'Refresh'
appears_on:
- entity.cloud_launch_template.edit_form
entity.cloud_launch_template.refresh_view:
route_name: entity.cloud_launch_template.list_update
title: 'Refresh'
appears_on:
- entity.cloud_launch_template.canonical
entity.cloud_launch_template.approve_edit:
route_name: entity.cloud_launch_template.approve
title: 'Approve'
appears_on:
- entity.cloud_launch_template.edit_form
entity.cloud_launch_template.approve_view:
route_name: entity.cloud_launch_template.approve
title: 'Approve'
appears_on:
- entity.cloud_launch_template.canonical
entity.cloud_launch_template.review_view:
route_name: entity.cloud_launch_template.review
title: 'Review'
appears_on:
- entity.cloud_launch_template.canonical
entity.cloud_launch_template.refresh_view.all:
route_name: entity.cloud_launch_template.list_update.all
title: 'Refresh'
appears_on:
- view.cloud_launch_template.all
- entity.cloud_launch_template.collection.all
entity.cloud_project.refresh_view.all:
route_name: entity.cloud_project.list_update.all
title: 'Refresh'
appears_on:
- entity.cloud_project.collection.all
entity.cloud_project.add_form:
route_name: entity.cloud_project.add_form
title: 'Add cloud project'
class: 'Drupal\cloud\Plugin\Derivative\CloudProjectLocalAction'
appears_on:
- entity.cloud_project.collection
entity.cloud_project.collection:
route_name: entity.cloud_project.collection
title: 'List cloud project'
appears_on:
- entity.cloud_project.add_form
- entity.cloud_project.edit_form
- entity.cloud_project.delete_form
entity.cloud_project_type.add_form:
route_name: entity.cloud_project_type.add_form
title: 'Add cloud project type'
appears_on:
- entity.cloud_project_type.collection
entity.cloud_project.refresh_edit:
route_name: entity.cloud_project.list_update
title: 'Refresh'
appears_on:
- entity.cloud_project.edit_form
entity.cloud_project.refresh_view:
route_name: entity.cloud_project.list_update
title: 'Refresh'
appears_on:
- entity.cloud_project.canonical
entity.cloud_store.add_form:
route_name: entity.cloud_store.add_form
title: 'Add cloud store'
class: 'Drupal\cloud\Plugin\Derivative\CloudStoreLocalAction'
entity.cloud_store.collection:
route_name: view.cloud_store.list
title: 'List cloud store'
appears_on:
- entity.cloud_store.add_form
- entity.cloud_store.edit_form
- entity.cloud_store.delete_form
entity.cloud_store_type.add_form:
route_name: entity.cloud_store_type.add_form
title: 'Add cloud store type'
appears_on:
- entity.cloud_store_type.collection
entity.cloud_store.refresh_edit:
route_name: entity.cloud_store.list_update
title: 'Refresh'
appears_on:
- entity.cloud_store.edit_form
# MENU_NORMAL_ITEM
cloud.service_providers.menu:
title: 'Cloud Service Providers'
route_name: 'cloud.service_providers'
# MENU_NORMAL_ITEM
cloud.design.menu:
title: 'Design'
route_name: 'cloud.design'
# This is the /clouds menu.
cloud.service_providers.menu:
class: Drupal\cloud\Plugin\Menu\CloudProviderLink
menu_name: main
expanded: true
weight: 100
# MENU_NORMAL_ITEM.
cloud.design.menu:
title: 'Design'
route_name: 'view.cloud_config.design'
menu_name: main
expanded: true
weight: 110
# Manage cloud service provider (CloudConfig).
cloud.admin.menu:
title: 'Manage'
route_name: 'view.cloud_config.admin'
menu_name: main
expanded: true
weight: 120
cloud.admin.menu.administration:
title: 'Administration'
route_name: 'view.cloud_config.admin'
parent: cloud.admin.menu
weight: 10
cloud.menu.cloud_links:
deriver: 'Drupal\cloud\Plugin\Derivative\CloudMenuLinks'
weight: 110
cloud.menu.design_links:
deriver: 'Drupal\cloud\Plugin\Derivative\CloudDesignMenuLinks'
weight: 110
# Structure | Cloud service provider
cloud.admin_structure:
title: 'Cloud service providers'
description: 'Add and manage cloud service providers.'
route_name: entity.cloud_config.collection
parent: system.admin_structure
# Structure | Cloud service provider | Add cloud service provider.
cloud.cloud_config.add_form:
title: 'Add cloud service provider'
description: 'Add a cloud service provider.'
parent: cloud.admin_structure
route_name: entity.cloud_config.add_page
weight: 10
# Structure | Cloud service providers | Cloud service provider types.
cloud.admin_structure.cloud_service_provider_types:
title: 'Cloud service provider types'
description: 'Add and manage cloud service provider types.'
parent: cloud.admin_structure
route_name: entity.cloud_config_type.collection
weight: 20
# Structure | Cloud service providers | Cloud launch template types.
cloud.admin_structure.cloud_server_template_types:
title: 'Launch template types'
description: 'Add a launch template type.'
parent: cloud.admin_structure
route_name: entity.cloud_server_template_type.collection
weight: 30
# Structure | Cloud service providers | Cloud project types.
cloud.admin_structure.cloud_project_types:
title: 'Cloud project types'
description: 'Add a cloud project type.'
parent: cloud.admin_structure
route_name: entity.cloud_project_type.collection
weight: 40
# Structure | Cloud service providers | Cloud store types.
cloud.admin_structure.cloud_store_types:
title: 'Cloud store types'
description: 'Add a cloud store type.'
parent: cloud.admin_structure
route_name: entity.cloud_store_type.collection
weight: 50
# Structure | Cloud service providers | cloud service provider types |
# Add cloud service provider type.
cloud.cloud_service_provider_types.add_form:
title: 'Add cloud service provider type'
description: 'Add a cloud service provider type.'
parent: cloud.admin_structure.cloud_service_provider_types
route_name: entity.cloud_config_type.add_form
# Structure | Cloud service providers | Cloud launch template types |
# Add cloud launch template type.
cloud.cloud_server_template_types.add_form:
title: 'Add launch template type'
description: 'Add a launch template type.'
parent: cloud.admin_structure.cloud_server_template_types
route_name: entity.cloud_server_template_type.add_form
# Structure | Cloud service providers | cloud project types |
# Add cloud project type.
cloud.cloud_project_types.add_form:
title: 'Add cloud project types'
route_name: entity.cloud_project_type.add_form
parent: cloud.admin_structure.cloud_project_types
# Structure | Cloud service providers | cloud store types |
# Add cloud store type.
cloud.cloud_store_types.add_form:
title: 'Add cloud store types'
route_name: entity.cloud_store_type.add_form
parent: cloud.admin_structure.cloud_store_types
# Configuration | Web services | Cloud.
# Admin settings for cloud.
cloud.settings:
title: 'Cloud'
description: 'Configure Cloud module.'
parent: system.admin_config_services
route_name: cloud.settings
# The cloud service provider (CloudConfig) routing definition.
entity.cloud_config.canonical:
route_name: entity.cloud_config.canonical
base_route: entity.cloud_config.canonical
title: 'View'
entity.cloud_config.edit_form:
route_name: entity.cloud_config.edit_form
base_route: entity.cloud_config.canonical
title: 'Edit'
entity.cloud_config.delete_form:
route_name: entity.cloud_config.delete_form
base_route: entity.cloud_config.canonical
title: Delete
weight: 10
entity.cloud_launch_template.canonical:
route_name: entity.cloud_launch_template.canonical
base_route: entity.cloud_launch_template.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudLaunchTemplateTab'
title: 'View'
entity.cloud_launch_template.edit_form:
route_name: entity.cloud_launch_template.edit_form
base_route: entity.cloud_launch_template.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudLaunchTemplateTab'
title: 'Edit'
entity.cloud_launch_template.delete_form:
route_name: entity.cloud_launch_template.delete_form
base_route: entity.cloud_launch_template.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudLaunchTemplateTab'
title: 'Delete'
entity.cloud_launch_template.launch:
route_name: entity.cloud_launch_template.launch
base_route: entity.cloud_launch_template.canonical
title: 'Launch'
entity.cloud_launch_template.copy:
route_name: entity.cloud_launch_template.copy
base_route: entity.cloud_launch_template.canonical
title: 'Copy'
entity.cloud_project.canonical:
route_name: entity.cloud_project.canonical
base_route: entity.cloud_project.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudProjectTab'
title: 'View'
entity.cloud_project.edit_form:
route_name: entity.cloud_project.edit_form
base_route: entity.cloud_project.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudProjectTab'
title: 'Edit'
entity.cloud_project.delete_form:
route_name: entity.cloud_project.delete_form
base_route: entity.cloud_project.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudProjectTab'
title: 'Delete'
entity.cloud_project.launch:
route_name: entity.cloud_project.launch
base_route: entity.cloud_project.canonical
title: 'Launch'
entity.cloud_project.copy:
route_name: entity.cloud_project.copy
base_route: entity.cloud_project.canonical
title: 'Copy'
entity.cloud_store.canonical:
route_name: entity.cloud_store.canonical
base_route: entity.cloud_store.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudStoreTab'
title: 'View'
entity.cloud_store.edit_form:
route_name: entity.cloud_store.edit_form
base_route: entity.cloud_store.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudStoreTab'
title: 'Edit'
entity.cloud_store.copy:
route_name: entity.cloud_store.copy
base_route: entity.cloud_store.canonical
title: 'Copy'
entity.cloud_store.delete_form:
route_name: entity.cloud_store.delete_form
base_route: entity.cloud_store.canonical
class: '\Drupal\cloud\Plugin\Derivative\CloudStoreTab'
title: 'Delete'
# Structure | Cloud service providers | List.
# The cloud service provider (CloudConfig) menu items definition.
cloud.cloud_config.collection:
title: 'List'
description: 'List cloud service providers.'
route_name: entity.cloud_config.collection
base_route: cloud.admin_structure
weight: 100
# Structure | cloud service providers | cloud service provider types.
# The cloud service provider type (CloudConfigType) menu items definition.
cloud.cloud_config_type.collection:
title: 'Cloud service provider types'
description: 'List cloud service provider types (bundles)'
route_name: entity.cloud_config_type.collection
base_route: cloud.admin_structure
weight: 110
# Structure | cloud service providers | cloud launch template types.
# The cloud launch template type menu items definition.
cloud.cloud_server_template_type.collection:
title: 'Launch template types'
description: 'List launch template types (bundles)'
route_name: entity.cloud_server_template_type.collection
base_route: cloud.admin_structure
weight: 120
# Structure | cloud service providers | cloud project types.
# The cloud project type menu items definition.
cloud.cloud_project_type.collection:
title: 'Cloud project types'
description: 'List cloud project types (bundles)'
route_name: entity.cloud_project_type.collection
base_route: cloud.admin_structure
weight: 130
# Structure | cloud service providers | cloud store types.
# The cloud store type menu items definition.
cloud.cloud_store_type.collection:
title: 'Cloud store types'
description: 'List cloud store types (bundles)'
route_name: entity.cloud_store_type.collection
base_route: cloud.admin_structure
weight: 140
# Configuration | Web services | Cloud settings | Settings.
cloud.settings:
title: 'Settings'
description: 'Configure the location map for cloud service providers.'
route_name: cloud.settings
base_route: cloud.settings
weight: 20
; Clanavi makefile
; ----------------
; This make file will pull all the clanavi related modules from Drupal.org
core = 7.x
api = 2
projects[] = drupal
projects[] = aws
projects[] = cloud
projects[] = drupal_queue
projects[] = rest_client