Browse code

Centralize setting default branch for stable branching

One of the steps when we create a new stable branch is to
branch devstack, then update the default branch for most
repos to use the new stable branch for each repo.

This requires making multiple updates throughout stackrc,
and to further complicate things, there are some repo
branch variables for branchless repos that should not be
updated along with the others.

This can be error prone if not fully aware of these
exceptions. To simplify this process a little, this
patch adds two common variables - one that can be set to
the new stable branch name for all of the repos that
should be branched, and one that can be used for all of
the branchless repos to make it explicit that those
values should be left alone. The cycle-trailing repos
have until two weeks after final release to branch, so
also adding another variable for those to make it easy
to update them at a later time, separately from the
other repos.

Change-Id: I82aa19e739eeda3721bac1cb5153ad0bf2d1125a

Sean McGinnis authored on 2018/02/15 22:45:10
Showing 2 changed files
... ...
@@ -13,6 +13,18 @@ RC_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
13 13
 # Source required DevStack functions and globals
14 14
 source $RC_DIR/functions
15 15
 
16
+# Set the target branch. This is used so that stable branching
17
+# does not need to update each repo below.
18
+TARGET_BRANCH=master
19
+
20
+# Cycle trailing projects need to branch later than the others.
21
+TRAILING_TARGET_BRANCH=master
22
+
23
+# And some repos do not create stable branches, so this is used
24
+# to make it explicit and avoid accidentally setting to a stable
25
+# branch.
26
+BRANCHLESS_TARGET_BRANCH=master
27
+
16 28
 # Destination path for installation
17 29
 DEST=/opt/stack
18 30
 
... ...
@@ -256,35 +268,35 @@ DEVSTACK_SERIES="queens"
256 256
 
257 257
 # block storage service
258 258
 CINDER_REPO=${CINDER_REPO:-${GIT_BASE}/openstack/cinder.git}
259
-CINDER_BRANCH=${CINDER_BRANCH:-master}
259
+CINDER_BRANCH=${CINDER_BRANCH:-$TARGET_BRANCH}
260 260
 
261 261
 # image catalog service
262 262
 GLANCE_REPO=${GLANCE_REPO:-${GIT_BASE}/openstack/glance.git}
263
-GLANCE_BRANCH=${GLANCE_BRANCH:-master}
263
+GLANCE_BRANCH=${GLANCE_BRANCH:-$TARGET_BRANCH}
264 264
 
265 265
 # django powered web control panel for openstack
266 266
 HORIZON_REPO=${HORIZON_REPO:-${GIT_BASE}/openstack/horizon.git}
267
-HORIZON_BRANCH=${HORIZON_BRANCH:-master}
267
+HORIZON_BRANCH=${HORIZON_BRANCH:-$TARGET_BRANCH}
268 268
 
269 269
 # unified auth system (manages accounts/tokens)
270 270
 KEYSTONE_REPO=${KEYSTONE_REPO:-${GIT_BASE}/openstack/keystone.git}
271
-KEYSTONE_BRANCH=${KEYSTONE_BRANCH:-master}
271
+KEYSTONE_BRANCH=${KEYSTONE_BRANCH:-$TARGET_BRANCH}
272 272
 
273 273
 # neutron service
274 274
 NEUTRON_REPO=${NEUTRON_REPO:-${GIT_BASE}/openstack/neutron.git}
275
-NEUTRON_BRANCH=${NEUTRON_BRANCH:-master}
275
+NEUTRON_BRANCH=${NEUTRON_BRANCH:-$TARGET_BRANCH}
276 276
 
277 277
 # neutron fwaas service
278 278
 NEUTRON_FWAAS_REPO=${NEUTRON_FWAAS_REPO:-${GIT_BASE}/openstack/neutron-fwaas.git}
279
-NEUTRON_FWAAS_BRANCH=${NEUTRON_FWAAS_BRANCH:-master}
279
+NEUTRON_FWAAS_BRANCH=${NEUTRON_FWAAS_BRANCH:-$TARGET_BRANCH}
280 280
 
281 281
 # compute service
282 282
 NOVA_REPO=${NOVA_REPO:-${GIT_BASE}/openstack/nova.git}
283
-NOVA_BRANCH=${NOVA_BRANCH:-master}
283
+NOVA_BRANCH=${NOVA_BRANCH:-$TARGET_BRANCH}
284 284
 
285 285
 # object storage service
286 286
 SWIFT_REPO=${SWIFT_REPO:-${GIT_BASE}/openstack/swift.git}
287
-SWIFT_BRANCH=${SWIFT_BRANCH:-master}
287
+SWIFT_BRANCH=${SWIFT_BRANCH:-$TARGET_BRANCH}
288 288
 
289 289
 ##############
290 290
 #
... ...
@@ -294,11 +306,11 @@ SWIFT_BRANCH=${SWIFT_BRANCH:-master}
294 294
 
295 295
 # consolidated openstack requirements
296 296
 REQUIREMENTS_REPO=${REQUIREMENTS_REPO:-${GIT_BASE}/openstack/requirements.git}
297
-REQUIREMENTS_BRANCH=${REQUIREMENTS_BRANCH:-master}
297
+REQUIREMENTS_BRANCH=${REQUIREMENTS_BRANCH:-$TARGET_BRANCH}
298 298
 
299 299
 # Tempest test suite
300 300
 TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
301
-TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
301
+TEMPEST_BRANCH=${TEMPEST_BRANCH:-$BRANCHLESS_TARGET_BRANCH}
302 302
 
303 303
 
304 304
 ##############
... ...
@@ -310,56 +322,56 @@ TEMPEST_BRANCH=${TEMPEST_BRANCH:-master}
310 310
 
311 311
 # volume client
312 312
 GITREPO["python-cinderclient"]=${CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-cinderclient.git}
313
-GITBRANCH["python-cinderclient"]=${CINDERCLIENT_BRANCH:-master}
313
+GITBRANCH["python-cinderclient"]=${CINDERCLIENT_BRANCH:-$TARGET_BRANCH}
314 314
 
315 315
 # os-brick client for local volume attachement
316 316
 GITREPO["python-brick-cinderclient-ext"]=${BRICK_CINDERCLIENT_REPO:-${GIT_BASE}/openstack/python-brick-cinderclient-ext.git}
317
-GITBRANCH["python-brick-cinderclient-ext"]=${BRICK_CINDERCLIENT_BRANCH:-master}
317
+GITBRANCH["python-brick-cinderclient-ext"]=${BRICK_CINDERCLIENT_BRANCH:-$TARGET_BRANCH}
318 318
 
319 319
 # python barbican client library
320 320
 GITREPO["python-barbicanclient"]=${BARBICANCLIENT_REPO:-${GIT_BASE}/openstack/python-barbicanclient.git}
321
-GITBRANCH["python-barbicanclient"]=${BARBICANCLIENT_BRANCH:-master}
321
+GITBRANCH["python-barbicanclient"]=${BARBICANCLIENT_BRANCH:-$TARGET_BRANCH}
322 322
 GITDIR["python-barbicanclient"]=$DEST/python-barbicanclient
323 323
 
324 324
 # python glance client library
325 325
 GITREPO["python-glanceclient"]=${GLANCECLIENT_REPO:-${GIT_BASE}/openstack/python-glanceclient.git}
326
-GITBRANCH["python-glanceclient"]=${GLANCECLIENT_BRANCH:-master}
326
+GITBRANCH["python-glanceclient"]=${GLANCECLIENT_BRANCH:-$TARGET_BRANCH}
327 327
 
328 328
 # ironic client
329 329
 GITREPO["python-ironicclient"]=${IRONICCLIENT_REPO:-${GIT_BASE}/openstack/python-ironicclient.git}
330
-GITBRANCH["python-ironicclient"]=${IRONICCLIENT_BRANCH:-master}
330
+GITBRANCH["python-ironicclient"]=${IRONICCLIENT_BRANCH:-$TARGET_BRANCH}
331 331
 # ironic plugin is out of tree, but nova uses it. set GITDIR here.
332 332
 GITDIR["python-ironicclient"]=$DEST/python-ironicclient
333 333
 
334 334
 # the base authentication plugins that clients use to authenticate
335 335
 GITREPO["keystoneauth"]=${KEYSTONEAUTH_REPO:-${GIT_BASE}/openstack/keystoneauth.git}
336
-GITBRANCH["keystoneauth"]=${KEYSTONEAUTH_BRANCH:-master}
336
+GITBRANCH["keystoneauth"]=${KEYSTONEAUTH_BRANCH:-$TARGET_BRANCH}
337 337
 
338 338
 # python keystone client library to nova that horizon uses
339 339
 GITREPO["python-keystoneclient"]=${KEYSTONECLIENT_REPO:-${GIT_BASE}/openstack/python-keystoneclient.git}
340
-GITBRANCH["python-keystoneclient"]=${KEYSTONECLIENT_BRANCH:-master}
340
+GITBRANCH["python-keystoneclient"]=${KEYSTONECLIENT_BRANCH:-$TARGET_BRANCH}
341 341
 
342 342
 # neutron client
343 343
 GITREPO["python-neutronclient"]=${NEUTRONCLIENT_REPO:-${GIT_BASE}/openstack/python-neutronclient.git}
344
-GITBRANCH["python-neutronclient"]=${NEUTRONCLIENT_BRANCH:-master}
344
+GITBRANCH["python-neutronclient"]=${NEUTRONCLIENT_BRANCH:-$TARGET_BRANCH}
345 345
 
346 346
 # python client library to nova that horizon (and others) use
347 347
 GITREPO["python-novaclient"]=${NOVACLIENT_REPO:-${GIT_BASE}/openstack/python-novaclient.git}
348
-GITBRANCH["python-novaclient"]=${NOVACLIENT_BRANCH:-master}
348
+GITBRANCH["python-novaclient"]=${NOVACLIENT_BRANCH:-$TARGET_BRANCH}
349 349
 
350 350
 # python swift client library
351 351
 GITREPO["python-swiftclient"]=${SWIFTCLIENT_REPO:-${GIT_BASE}/openstack/python-swiftclient.git}
352
-GITBRANCH["python-swiftclient"]=${SWIFTCLIENT_BRANCH:-master}
352
+GITBRANCH["python-swiftclient"]=${SWIFTCLIENT_BRANCH:-$TARGET_BRANCH}
353 353
 
354 354
 # consolidated openstack python client
355 355
 GITREPO["python-openstackclient"]=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
356
-GITBRANCH["python-openstackclient"]=${OPENSTACKCLIENT_BRANCH:-master}
356
+GITBRANCH["python-openstackclient"]=${OPENSTACKCLIENT_BRANCH:-$TARGET_BRANCH}
357 357
 # this doesn't exist in a lib file, so set it here
358 358
 GITDIR["python-openstackclient"]=$DEST/python-openstackclient
359 359
 
360 360
 # placement-api CLI
361 361
 GITREPO["osc-placement"]=${OSC_PLACEMENT_REPO:-${GIT_BASE}/openstack/osc-placement.git}
362
-GITBRANCH["osc-placement"]=${OSC_PLACEMENT_BRANCH:-master}
362
+GITBRANCH["osc-placement"]=${OSC_PLACEMENT_BRANCH:-$TARGET_BRANCH}
363 363
 
364 364
 
365 365
 ###################
... ...
@@ -371,119 +383,119 @@ GITBRANCH["osc-placement"]=${OSC_PLACEMENT_BRANCH:-master}
371 371
 
372 372
 # castellan key manager interface
373 373
 GITREPO["castellan"]=${CASTELLAN_REPO:-${GIT_BASE}/openstack/castellan.git}
374
-GITBRANCH["castellan"]=${CASTELLAN_BRANCH:-master}
374
+GITBRANCH["castellan"]=${CASTELLAN_BRANCH:-$TARGET_BRANCH}
375 375
 
376 376
 # cliff command line framework
377 377
 GITREPO["cliff"]=${CLIFF_REPO:-${GIT_BASE}/openstack/cliff.git}
378
-GITBRANCH["cliff"]=${CLIFF_BRANCH:-master}
378
+GITBRANCH["cliff"]=${CLIFF_BRANCH:-$TARGET_BRANCH}
379 379
 
380 380
 # async framework/helpers
381 381
 GITREPO["futurist"]=${FUTURIST_REPO:-${GIT_BASE}/openstack/futurist.git}
382
-GITBRANCH["futurist"]=${FUTURIST_BRANCH:-master}
382
+GITBRANCH["futurist"]=${FUTURIST_BRANCH:-$TARGET_BRANCH}
383 383
 
384 384
 # debtcollector deprecation framework/helpers
385 385
 GITREPO["debtcollector"]=${DEBTCOLLECTOR_REPO:-${GIT_BASE}/openstack/debtcollector.git}
386
-GITBRANCH["debtcollector"]=${DEBTCOLLECTOR_BRANCH:-master}
386
+GITBRANCH["debtcollector"]=${DEBTCOLLECTOR_BRANCH:-$TARGET_BRANCH}
387 387
 
388 388
 # helpful state machines
389 389
 GITREPO["automaton"]=${AUTOMATON_REPO:-${GIT_BASE}/openstack/automaton.git}
390
-GITBRANCH["automaton"]=${AUTOMATON_BRANCH:-master}
390
+GITBRANCH["automaton"]=${AUTOMATON_BRANCH:-$TARGET_BRANCH}
391 391
 
392 392
 # oslo.cache
393 393
 GITREPO["oslo.cache"]=${OSLOCACHE_REPO:-${GIT_BASE}/openstack/oslo.cache.git}
394
-GITBRANCH["oslo.cache"]=${OSLOCACHE_BRANCH:-master}
394
+GITBRANCH["oslo.cache"]=${OSLOCACHE_BRANCH:-$TARGET_BRANCH}
395 395
 
396 396
 # oslo.concurrency
397 397
 GITREPO["oslo.concurrency"]=${OSLOCON_REPO:-${GIT_BASE}/openstack/oslo.concurrency.git}
398
-GITBRANCH["oslo.concurrency"]=${OSLOCON_BRANCH:-master}
398
+GITBRANCH["oslo.concurrency"]=${OSLOCON_BRANCH:-$TARGET_BRANCH}
399 399
 
400 400
 # oslo.config
401 401
 GITREPO["oslo.config"]=${OSLOCFG_REPO:-${GIT_BASE}/openstack/oslo.config.git}
402
-GITBRANCH["oslo.config"]=${OSLOCFG_BRANCH:-master}
402
+GITBRANCH["oslo.config"]=${OSLOCFG_BRANCH:-$TARGET_BRANCH}
403 403
 
404 404
 # oslo.context
405 405
 GITREPO["oslo.context"]=${OSLOCTX_REPO:-${GIT_BASE}/openstack/oslo.context.git}
406
-GITBRANCH["oslo.context"]=${OSLOCTX_BRANCH:-master}
406
+GITBRANCH["oslo.context"]=${OSLOCTX_BRANCH:-$TARGET_BRANCH}
407 407
 
408 408
 # oslo.db
409 409
 GITREPO["oslo.db"]=${OSLODB_REPO:-${GIT_BASE}/openstack/oslo.db.git}
410
-GITBRANCH["oslo.db"]=${OSLODB_BRANCH:-master}
410
+GITBRANCH["oslo.db"]=${OSLODB_BRANCH:-$TARGET_BRANCH}
411 411
 
412 412
 # oslo.i18n
413 413
 GITREPO["oslo.i18n"]=${OSLOI18N_REPO:-${GIT_BASE}/openstack/oslo.i18n.git}
414
-GITBRANCH["oslo.i18n"]=${OSLOI18N_BRANCH:-master}
414
+GITBRANCH["oslo.i18n"]=${OSLOI18N_BRANCH:-$TARGET_BRANCH}
415 415
 
416 416
 # oslo.log
417 417
 GITREPO["oslo.log"]=${OSLOLOG_REPO:-${GIT_BASE}/openstack/oslo.log.git}
418
-GITBRANCH["oslo.log"]=${OSLOLOG_BRANCH:-master}
418
+GITBRANCH["oslo.log"]=${OSLOLOG_BRANCH:-$TARGET_BRANCH}
419 419
 
420 420
 # oslo.messaging
421 421
 GITREPO["oslo.messaging"]=${OSLOMSG_REPO:-${GIT_BASE}/openstack/oslo.messaging.git}
422
-GITBRANCH["oslo.messaging"]=${OSLOMSG_BRANCH:-master}
422
+GITBRANCH["oslo.messaging"]=${OSLOMSG_BRANCH:-$TARGET_BRANCH}
423 423
 
424 424
 # oslo.middleware
425 425
 GITREPO["oslo.middleware"]=${OSLOMID_REPO:-${GIT_BASE}/openstack/oslo.middleware.git}
426
-GITBRANCH["oslo.middleware"]=${OSLOMID_BRANCH:-master}
426
+GITBRANCH["oslo.middleware"]=${OSLOMID_BRANCH:-$TARGET_BRANCH}
427 427
 
428 428
 # oslo.policy
429 429
 GITREPO["oslo.policy"]=${OSLOPOLICY_REPO:-${GIT_BASE}/openstack/oslo.policy.git}
430
-GITBRANCH["oslo.policy"]=${OSLOPOLICY_BRANCH:-master}
430
+GITBRANCH["oslo.policy"]=${OSLOPOLICY_BRANCH:-$TARGET_BRANCH}
431 431
 
432 432
 # oslo.privsep
433 433
 GITREPO["oslo.privsep"]=${OSLOPRIVSEP_REPO:-${GIT_BASE}/openstack/oslo.privsep.git}
434
-GITBRANCH["oslo.privsep"]=${OSLOPRIVSEP_BRANCH:-master}
434
+GITBRANCH["oslo.privsep"]=${OSLOPRIVSEP_BRANCH:-$TARGET_BRANCH}
435 435
 
436 436
 # oslo.reports
437 437
 GITREPO["oslo.reports"]=${OSLOREPORTS_REPO:-${GIT_BASE}/openstack/oslo.reports.git}
438
-GITBRANCH["oslo.reports"]=${OSLOREPORTS_BRANCH:-master}
438
+GITBRANCH["oslo.reports"]=${OSLOREPORTS_BRANCH:-$TARGET_BRANCH}
439 439
 
440 440
 # oslo.rootwrap
441 441
 GITREPO["oslo.rootwrap"]=${OSLORWRAP_REPO:-${GIT_BASE}/openstack/oslo.rootwrap.git}
442
-GITBRANCH["oslo.rootwrap"]=${OSLORWRAP_BRANCH:-master}
442
+GITBRANCH["oslo.rootwrap"]=${OSLORWRAP_BRANCH:-$TARGET_BRANCH}
443 443
 
444 444
 # oslo.serialization
445 445
 GITREPO["oslo.serialization"]=${OSLOSERIALIZATION_REPO:-${GIT_BASE}/openstack/oslo.serialization.git}
446
-GITBRANCH["oslo.serialization"]=${OSLOSERIALIZATION_BRANCH:-master}
446
+GITBRANCH["oslo.serialization"]=${OSLOSERIALIZATION_BRANCH:-$TARGET_BRANCH}
447 447
 
448 448
 # oslo.service
449 449
 GITREPO["oslo.service"]=${OSLOSERVICE_REPO:-${GIT_BASE}/openstack/oslo.service.git}
450
-GITBRANCH["oslo.service"]=${OSLOSERVICE_BRANCH:-master}
450
+GITBRANCH["oslo.service"]=${OSLOSERVICE_BRANCH:-$TARGET_BRANCH}
451 451
 
452 452
 # oslo.utils
453 453
 GITREPO["oslo.utils"]=${OSLOUTILS_REPO:-${GIT_BASE}/openstack/oslo.utils.git}
454
-GITBRANCH["oslo.utils"]=${OSLOUTILS_BRANCH:-master}
454
+GITBRANCH["oslo.utils"]=${OSLOUTILS_BRANCH:-$TARGET_BRANCH}
455 455
 
456 456
 # oslo.versionedobjects
457 457
 GITREPO["oslo.versionedobjects"]=${OSLOVERSIONEDOBJECTS_REPO:-${GIT_BASE}/openstack/oslo.versionedobjects.git}
458
-GITBRANCH["oslo.versionedobjects"]=${OSLOVERSIONEDOBJECTS_BRANCH:-master}
458
+GITBRANCH["oslo.versionedobjects"]=${OSLOVERSIONEDOBJECTS_BRANCH:-$TARGET_BRANCH}
459 459
 
460 460
 # oslo.vmware
461 461
 GITREPO["oslo.vmware"]=${OSLOVMWARE_REPO:-${GIT_BASE}/openstack/oslo.vmware.git}
462
-GITBRANCH["oslo.vmware"]=${OSLOVMWARE_BRANCH:-master}
462
+GITBRANCH["oslo.vmware"]=${OSLOVMWARE_BRANCH:-$TARGET_BRANCH}
463 463
 
464 464
 # osprofiler
465 465
 GITREPO["osprofiler"]=${OSPROFILER_REPO:-${GIT_BASE}/openstack/osprofiler.git}
466
-GITBRANCH["osprofiler"]=${OSPROFILER_BRANCH:-master}
466
+GITBRANCH["osprofiler"]=${OSPROFILER_BRANCH:-$TARGET_BRANCH}
467 467
 
468 468
 # pycadf auditing library
469 469
 GITREPO["pycadf"]=${PYCADF_REPO:-${GIT_BASE}/openstack/pycadf.git}
470
-GITBRANCH["pycadf"]=${PYCADF_BRANCH:-master}
470
+GITBRANCH["pycadf"]=${PYCADF_BRANCH:-$TARGET_BRANCH}
471 471
 
472 472
 # stevedore plugin manager
473 473
 GITREPO["stevedore"]=${STEVEDORE_REPO:-${GIT_BASE}/openstack/stevedore.git}
474
-GITBRANCH["stevedore"]=${STEVEDORE_BRANCH:-master}
474
+GITBRANCH["stevedore"]=${STEVEDORE_BRANCH:-$TARGET_BRANCH}
475 475
 
476 476
 # taskflow plugin manager
477 477
 GITREPO["taskflow"]=${TASKFLOW_REPO:-${GIT_BASE}/openstack/taskflow.git}
478
-GITBRANCH["taskflow"]=${TASKFLOW_BRANCH:-master}
478
+GITBRANCH["taskflow"]=${TASKFLOW_BRANCH:-$TARGET_BRANCH}
479 479
 
480 480
 # tooz plugin manager
481 481
 GITREPO["tooz"]=${TOOZ_REPO:-${GIT_BASE}/openstack/tooz.git}
482
-GITBRANCH["tooz"]=${TOOZ_BRANCH:-master}
482
+GITBRANCH["tooz"]=${TOOZ_BRANCH:-$TARGET_BRANCH}
483 483
 
484 484
 # pbr drives the setuptools configs
485 485
 GITREPO["pbr"]=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
486
-GITBRANCH["pbr"]=${PBR_BRANCH:-master}
486
+GITBRANCH["pbr"]=${PBR_BRANCH:-$TARGET_BRANCH}
487 487
 
488 488
 
489 489
 ##################
... ...
@@ -494,65 +506,65 @@ GITBRANCH["pbr"]=${PBR_BRANCH:-master}
494 494
 
495 495
 # cursive library
496 496
 GITREPO["cursive"]=${CURSIVE_REPO:-${GIT_BASE}/openstack/cursive.git}
497
-GITBRANCH["cursive"]=${CURSIVE_BRANCH:-master}
497
+GITBRANCH["cursive"]=${CURSIVE_BRANCH:-$TARGET_BRANCH}
498 498
 
499 499
 # glance store library
500 500
 GITREPO["glance_store"]=${GLANCE_STORE_REPO:-${GIT_BASE}/openstack/glance_store.git}
501
-GITBRANCH["glance_store"]=${GLANCE_STORE_BRANCH:-master}
501
+GITBRANCH["glance_store"]=${GLANCE_STORE_BRANCH:-$TARGET_BRANCH}
502 502
 
503 503
 # keystone middleware
504 504
 GITREPO["keystonemiddleware"]=${KEYSTONEMIDDLEWARE_REPO:-${GIT_BASE}/openstack/keystonemiddleware.git}
505
-GITBRANCH["keystonemiddleware"]=${KEYSTONEMIDDLEWARE_BRANCH:-master}
505
+GITBRANCH["keystonemiddleware"]=${KEYSTONEMIDDLEWARE_BRANCH:-$TARGET_BRANCH}
506 506
 
507 507
 # s3 support for swift
508 508
 SWIFT3_REPO=${SWIFT3_REPO:-${GIT_BASE}/openstack/swift3.git}
509
-SWIFT3_BRANCH=${SWIFT3_BRANCH:-master}
509
+SWIFT3_BRANCH=${SWIFT3_BRANCH:-$TARGET_BRANCH}
510 510
 
511 511
 # ceilometer middleware
512 512
 GITREPO["ceilometermiddleware"]=${CEILOMETERMIDDLEWARE_REPO:-${GIT_BASE}/openstack/ceilometermiddleware.git}
513
-GITBRANCH["ceilometermiddleware"]=${CEILOMETERMIDDLEWARE_BRANCH:-master}
513
+GITBRANCH["ceilometermiddleware"]=${CEILOMETERMIDDLEWARE_BRANCH:-$TARGET_BRANCH}
514 514
 GITDIR["ceilometermiddleware"]=$DEST/ceilometermiddleware
515 515
 
516 516
 # os-brick library to manage local volume attaches
517 517
 GITREPO["os-brick"]=${OS_BRICK_REPO:-${GIT_BASE}/openstack/os-brick.git}
518
-GITBRANCH["os-brick"]=${OS_BRICK_BRANCH:-master}
518
+GITBRANCH["os-brick"]=${OS_BRICK_BRANCH:-$TARGET_BRANCH}
519 519
 
520 520
 # os-client-config to manage clouds.yaml and friends
521 521
 GITREPO["os-client-config"]=${OS_CLIENT_CONFIG_REPO:-${GIT_BASE}/openstack/os-client-config.git}
522
-GITBRANCH["os-client-config"]=${OS_CLIENT_CONFIG_BRANCH:-master}
522
+GITBRANCH["os-client-config"]=${OS_CLIENT_CONFIG_BRANCH:-$TARGET_BRANCH}
523 523
 GITDIR["os-client-config"]=$DEST/os-client-config
524 524
 
525 525
 # os-vif library to communicate between Neutron to Nova
526 526
 GITREPO["os-vif"]=${OS_VIF_REPO:-${GIT_BASE}/openstack/os-vif.git}
527
-GITBRANCH["os-vif"]=${OS_VIF_BRANCH:-master}
527
+GITBRANCH["os-vif"]=${OS_VIF_BRANCH:-$TARGET_BRANCH}
528 528
 
529 529
 # osc-lib OpenStackClient common lib
530 530
 GITREPO["osc-lib"]=${OSC_LIB_REPO:-${GIT_BASE}/openstack/osc-lib.git}
531
-GITBRANCH["osc-lib"]=${OSC_LIB_BRANCH:-master}
531
+GITBRANCH["osc-lib"]=${OSC_LIB_BRANCH:-$TARGET_BRANCH}
532 532
 
533 533
 # python-openstacksdk OpenStack Python SDK
534 534
 GITREPO["python-openstacksdk"]=${OPENSTACKSDK_REPO:-${GIT_BASE}/openstack/python-openstacksdk.git}
535
-GITBRANCH["python-openstacksdk"]=${OPENSTACKSDK_BRANCH:-master}
535
+GITBRANCH["python-openstacksdk"]=${OPENSTACKSDK_BRANCH:-$TARGET_BRANCH}
536 536
 
537 537
 # ironic common lib
538 538
 GITREPO["ironic-lib"]=${IRONIC_LIB_REPO:-${GIT_BASE}/openstack/ironic-lib.git}
539
-GITBRANCH["ironic-lib"]=${IRONIC_LIB_BRANCH:-master}
539
+GITBRANCH["ironic-lib"]=${IRONIC_LIB_BRANCH:-$TARGET_BRANCH}
540 540
 # this doesn't exist in a lib file, so set it here
541 541
 GITDIR["ironic-lib"]=$DEST/ironic-lib
542 542
 
543 543
 # diskimage-builder tool
544 544
 GITREPO["diskimage-builder"]=${DIB_REPO:-${GIT_BASE}/openstack/diskimage-builder.git}
545
-GITBRANCH["diskimage-builder"]=${DIB_BRANCH:-master}
545
+GITBRANCH["diskimage-builder"]=${DIB_BRANCH:-$TARGET_BRANCH}
546 546
 GITDIR["diskimage-builder"]=$DEST/diskimage-builder
547 547
 
548 548
 # neutron-lib library containing neutron stable non-REST interfaces
549 549
 GITREPO["neutron-lib"]=${NEUTRON_LIB_REPO:-${GIT_BASE}/openstack/neutron-lib.git}
550
-GITBRANCH["neutron-lib"]=${NEUTRON_LIB_BRANCH:-master}
550
+GITBRANCH["neutron-lib"]=${NEUTRON_LIB_BRANCH:-$TARGET_BRANCH}
551 551
 GITDIR["neutron-lib"]=$DEST/neutron-lib
552 552
 
553 553
 # os-traits library for resource provider traits in the placement service
554 554
 GITREPO["os-traits"]=${OS_TRAITS_REPO:-${GIT_BASE}/openstack/os-traits.git}
555
-GITBRANCH["os-traits"]=${OS_TRAITS_BRANCH:-master}
555
+GITBRANCH["os-traits"]=${OS_TRAITS_BRANCH:-$TARGET_BRANCH}
556 556
 
557 557
 ##################
558 558
 #
... ...
@@ -562,19 +574,19 @@ GITBRANCH["os-traits"]=${OS_TRAITS_BRANCH:-master}
562 562
 
563 563
 # run-parts script required by os-refresh-config
564 564
 DIB_UTILS_REPO=${DIB_UTILS_REPO:-${GIT_BASE}/openstack/dib-utils.git}
565
-DIB_UTILS_BRANCH=${DIB_UTILS_BRANCH:-master}
565
+DIB_UTILS_BRANCH=${DIB_UTILS_BRANCH:-$BRANCHLESS_TARGET_BRANCH}
566 566
 
567 567
 # os-apply-config configuration template tool
568 568
 OAC_REPO=${OAC_REPO:-${GIT_BASE}/openstack/os-apply-config.git}
569
-OAC_BRANCH=${OAC_BRANCH:-master}
569
+OAC_BRANCH=${OAC_BRANCH:-$TRAILING_TARGET_BRANCH}
570 570
 
571 571
 # os-collect-config configuration agent
572 572
 OCC_REPO=${OCC_REPO:-${GIT_BASE}/openstack/os-collect-config.git}
573
-OCC_BRANCH=${OCC_BRANCH:-master}
573
+OCC_BRANCH=${OCC_BRANCH:-$TRAILING_TARGET_BRANCH}
574 574
 
575 575
 # os-refresh-config configuration run-parts tool
576 576
 ORC_REPO=${ORC_REPO:-${GIT_BASE}/openstack/os-refresh-config.git}
577
-ORC_BRANCH=${ORC_BRANCH:-master}
577
+ORC_BRANCH=${ORC_BRANCH:-$TRAILING_TARGET_BRANCH}
578 578
 
579 579
 
580 580
 #################
... ...
@@ -587,7 +599,7 @@ ORC_BRANCH=${ORC_BRANCH:-master}
587 587
 
588 588
 # ironic python agent
589 589
 IRONIC_PYTHON_AGENT_REPO=${IRONIC_PYTHON_AGENT_REPO:-${GIT_BASE}/openstack/ironic-python-agent.git}
590
-IRONIC_PYTHON_AGENT_BRANCH=${IRONIC_PYTHON_AGENT_BRANCH:-master}
590
+IRONIC_PYTHON_AGENT_BRANCH=${IRONIC_PYTHON_AGENT_BRANCH:-$TARGET_BRANCH}
591 591
 
592 592
 # a websockets/html5 or flash powered VNC console for vm instances
593 593
 NOVNC_REPO=${NOVNC_REPO:-https://github.com/novnc/noVNC.git}
... ...
@@ -595,7 +607,7 @@ NOVNC_BRANCH=${NOVNC_BRANCH:-stable/v0.6}
595 595
 
596 596
 # a websockets/html5 or flash powered SPICE console for vm instances
597 597
 SPICE_REPO=${SPICE_REPO:-http://anongit.freedesktop.org/git/spice/spice-html5.git}
598
-SPICE_BRANCH=${SPICE_BRANCH:-master}
598
+SPICE_BRANCH=${SPICE_BRANCH:-$BRANCHLESS_TARGET_BRANCH}
599 599
 
600 600
 # Global flag used to configure Tempest and potentially other services if
601 601
 # volume multiattach is supported. In Queens, only the libvirt compute driver
... ...
@@ -15,10 +15,10 @@
15 15
 
16 16
 echo "Ensuring we don't have crazy refs"
17 17
 
18
-REFS=`grep BRANCH stackrc | grep -v -- '-master' | grep -v 'NOVNC_BRANCH'`
18
+REFS=`grep BRANCH stackrc | grep -v 'TARGET_BRANCH' | grep -v 'NOVNC_BRANCH'`
19 19
 rc=$?
20 20
 if [[ $rc -eq 0 ]]; then
21
-    echo "Branch defaults must be master. Found:"
21
+    echo "Branch defaults must be one of the *TARGET_BRANCH values. Found:"
22 22
     echo $REFS
23 23
     exit 1
24 24
 fi