Skip to content

Commit 18b0efc

Browse files
committed
Merge pull request #1553 from CodeNow/SAN-3912-dockerfile-mirroing
San 3912 dockerfile mirroing
2 parents 05f6e37 + ee92e4c commit 18b0efc

File tree

45 files changed

+2623
-295
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+2623
-295
lines changed

client/assets/styles/scss/modals/modals-server-select.scss

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@
165165
}
166166
}
167167

168-
&:active .btn-icon {
168+
&:active:not(.disabled) .btn-icon {
169169
@extend %green;
170170
color: $white;
171171
}
@@ -200,6 +200,11 @@
200200
> .small {
201201
color: $gray-light;
202202
}
203+
204+
.btn-icon {
205+
cursor: default;
206+
opacity: .5;
207+
}
203208
}
204209

205210
&:active:not(.disabled),

client/directives/activePanel/directiveActivePanel.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ require('app')
1212
*/
1313
function activePanel(
1414
$sce,
15+
cleanStartCommand,
1516
keypather
1617
) {
1718
return {
@@ -35,8 +36,7 @@ function activePanel(
3536

3637
$scope.startCommand = function () {
3738
var cmd = keypather.get($scope, 'instance.containers.models[0].attrs.inspect.Config.Cmd[2]');
38-
cmd = cmd || '';
39-
return cmd.replace('until grep -q ethwe /proc/net/dev; do sleep 1; done;', '');
39+
return cleanStartCommand(cmd);
4040
};
4141

4242
$scope.showDebugCmd = false;

client/directives/activePanel/tabs/editor/directiveFileEditor.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ require('app')
77
* @ngInject
88
*/
99
function fileEditor(
10+
$q,
1011
$rootScope,
1112
debounce,
1213
errs,
@@ -56,6 +57,9 @@ function fileEditor(
5657

5758
function fetchFile() {
5859
delete $scope.hasError;
60+
if ($scope.readOnly && keypather.get($scope.file, 'attrs.isRemoteCopy')) {
61+
return $q.when(true);
62+
}
5963
$scope.loading = true;
6064
return promisify($scope.file, 'fetch')()
6165
.then(resetFileBodyState)

client/directives/components/explorer/fileTreeDirView.jade

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ li.folder(
5858
li.file(
5959
ng-class = "{\
6060
active: acv.editing,\
61-
disabled: !acv.id() || readOnly\
61+
disabled: !acv.id() || readOnly || (acv.id() === fileModel.getMainAppCodeVersion().id()) \
6262
}"
6363
ng-repeat = "acv in fileModel.appCodeVersions.models | orderBy:'attrs.repo'"
6464
pop-over
@@ -71,9 +71,10 @@ li.folder(
7171
a(
7272
ng-class = "{\
7373
active: acv.editing,\
74-
disabled: !acv.id()\
74+
disabled: !acv.id() || acv.id() === fileModel.getMainAppCodeVersion().id()\
7575
}"
7676
ng-click = "popoverFileExplorerRepository.actions.editRepo(acv)"
77+
ng-disabled = "acv.id() === fileModel.getMainAppCodeVersion().id()"
7778
pop-over
7879
pop-over-actions = "popoverFilesRepositoryCommitToggle.actions"
7980
pop-over-active = "acv.editing"

client/directives/components/serverModalButtons/serverModalButtonsDirective.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ function serverModalButtonsDirective(
1818
},
1919
link: function ($scope) {
2020
$scope.showSaveAndBuild = function () {
21-
return (!$scope.SMC.instance && $scope.SMC.state.step < 4) || ($scope.SMC.isDirty() === 'build' && !$rootScope.isLoading[$scope.SMC.name]);
21+
return (
22+
(!$scope.SMC.instance && ($scope.SMC.state.advanced || $scope.SMC.state.step < 4)) ||
23+
($scope.SMC.isDirty() === 'build' && !$rootScope.isLoading[$scope.SMC.name])
24+
);
2225
};
2326
$scope.createServerOrUpdate = function () {
2427
if ($scope.isPrimaryButtonDisabled()) {

client/directives/components/serverModalButtons/serverModalButtonsView.jade

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
button.btn.btn-md.gray.btn-cancel.float-left.js-animate(
22
ng-click = "SMC.actions.close()"
3-
ng-if = "!SMC.instance && SMC.state.step < 4"
3+
ng-if = "!SMC.instance"
44
type = "button"
55
) Cancel
66

@@ -9,14 +9,14 @@ button.btn.btn-md.btn-done.white.float-right(
99
'js-animate': SMC.state.step > 3\
1010
}"
1111
ng-click = "SMC.actions.close()"
12-
ng-if = "SMC.instance || SMC.state.step > 3"
12+
ng-if = "SMC.instance"
1313
type = "button"
1414
) Done
1515

1616
button.btn.btn-md.btn-primary.white.text-next.float-right(
1717
ng-click = "SMC.goToNextStep()"
1818
ng-disabled = "isPrimaryButtonDisabled()"
19-
ng-if = "SMC.state.step < 3"
19+
ng-if = "!SMC.instance && !SMC.isTabVisible('buildfiles')"
2020
type = "button"
2121
)
2222
span.btn-text.float-left Next
@@ -39,8 +39,8 @@ button.btn.btn-md.white.btn-primary.float-right.js-animate(
3939
'text-save-build': showSaveAndBuild()\
4040
}"
4141
ng-click = "thisForm.$invalid || createServerOrUpdate()"
42-
ng-disabled = "(SMC.needToBeDirtyToSaved() && !SMC.isDirty()) || isPrimaryButtonDisabled()"
43-
ng-if = "SMC.instance || SMC.state.step > 2"
42+
ng-disabled = "(SMC.needsToBeDirtySaved() && !SMC.isDirty()) || isPrimaryButtonDisabled()"
43+
ng-if = "SMC.instance || SMC.isTabVisible('buildfiles')"
4444
type = "submit"
4545
)
4646
span.btn-text.float-left Save

client/directives/environment/environmentBody/serverCards/serverCardView.jade

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ ul.card-body.load(
3030
li.btn.white(
3131
ng-click = "openEditServerModal('repository')"
3232
ng-class = "{'btn-hint': helpCards.cardIsActiveOnThisContainer(instance) && helpCards.getActiveCard().targets.repository}"
33-
ng-if = "server.repo && (!server.advanced || $root.featureFlags.dockerfileMirroring)"
33+
ng-if = "\
34+
server.repo && \
35+
(!server.advanced || $root.featureFlags.dockerfileMirroring) \
36+
"
3437
)
3538
svg.iconnables
3639
use(
@@ -120,7 +123,10 @@ ul.card-body.load(
120123
li.btn.white(
121124
ng-click = "openEditServerModal('translation')"
122125
ng-class = "{'btn-hint': helpCards.cardIsActiveOnThisContainer(instance) && helpCards.getActiveCard().targets.findAndReplace}"
123-
ng-if = "server.repo"
126+
ng-if = "\
127+
server.repo && \
128+
!server.instance.hasDockerfileMirroring() \
129+
"
124130
)
125131
svg.iconnables
126132
use(
@@ -135,7 +141,11 @@ ul.card-body.load(
135141
//- backup & restore
136142
li.btn.white(
137143
ng-click = "openEditServerModal('backup')"
138-
ng-if = "!server.repo && $root.featureFlags.backup"
144+
ng-if = "\
145+
server.repo && \
146+
!server.instance.hasDockerfileMirroring() && \
147+
$root.featureFlags.backup \
148+
"
139149
)
140150
svg.iconnables
141151
use(
@@ -160,7 +170,7 @@ ul.card-body.load(
160170
small.small.text-overflow(
161171
ng-if = "server.advanced"
162172
)
163-
span.span.float-left {{$root.featureFlags.dockerfileMirroring ? 'Last updated 1m ago' : '—'}}
173+
span.span.float-left
164174
//- span.span.float-left Error: Dockerfile not found
165175
166176
@@ -189,7 +199,11 @@ ul.card-body.load(
189199
//- only repo containers can sync
190200
//- show this instead of the lock, when mirroring
191201
svg.iconnables.icons-sync(
192-
ng-if = "$root.featureFlags.dockerfileMirroring && server.advanced"
202+
ng-if = "\
203+
$root.featureFlags.dockerfileMirroring && \
204+
server.advanced && \
205+
server.instance.hasDockerfileMirroring() \
206+
"
193207
)
194208
use(
195209
xlink:href = "#icons-sync"
@@ -202,13 +216,16 @@ ul.card-body.load(
202216
xlink:href = "#icons-alert-alt"
203217
)
204218
svg.iconnables.icons-lock(
205-
ng-if = "!$root.featureFlags.dockerfileMirroring && !server.advanced"
219+
ng-if = "!server.advanced"
206220
)
207221
use(
208222
xlink:href = "#icons-lock"
209223
)
210224
svg.iconnables.icons-unlock(
211-
ng-if = "!$root.featureFlags.dockerfileMirroring && server.advanced"
225+
ng-if = "\
226+
server.advanced && \
227+
!($root.featureFlags.dockerfileMirroring || server.instance.hasDockerfileMirroring()) \
228+
"
212229
)
213230
use(
214231
xlink:href = "#icons-unlock"

client/directives/environment/environmentController.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function EnvironmentController(
5656
newContainer: function () {
5757
return ModalService.showModal({
5858
controller: 'NewContainerModalController',
59-
controllerAs: 'NCMC',
59+
controllerAs: 'MC', // Shared
6060
templateUrl: 'newContainerModalView'
6161
});
6262
},

client/directives/environment/modals/forms/formBuildfiles/viewFormBuildfiles.jade

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
state = "SMC.state"
4848
)
4949
button.btn.btn-sm.white(
50-
internal-modal-helper = "confirmSetupAdvancedModalView"
50+
ng-click = "SMC.showAdvancedModeConfirm()"
5151
ng-if = "$root.featureFlags.dockerfileMirroring"
5252
)
5353
svg.iconnables.icons-lock
@@ -58,22 +58,26 @@
5858

5959
//- add logic for repository containers only
6060
.grid-block.shrink.align-center.well.gray.in.row-xxs(
61-
ng-if = "$root.featureFlags.dockerfileMirroring && SMC.state.advanced"
61+
ng-if = "$root.featureFlags.dockerfileMirroring && SMC.state.advanced && !SMC.state.isNonRepoContainer"
6262
)
6363
svg.grid-content.row-xxs.shrink.iconnables.icons-sync
6464
use(
6565
xlink:href = "#icons-sync"
6666
)
6767
.grid-content.row-xxs.text-overflow(
68-
ng-class = "{'padding-right': state.syncing}"
68+
ng-class = "{'padding-right': SMC.state.advanced === 'isMirroringDockerfile'}"
6969
)
7070
div Mirror Dockerfile
7171
small.small(
72-
ng-if = "state.syncing"
72+
ng-if = "SMC.state.advanced === 'isMirroringDockerfile'"
7373
)
7474
span.span.text-overflow.float-left(
75-
title = "reponame/path/to/dockerfile"
76-
) Mirroring from GitHub: reponame/path/to/dockerfile
75+
ng-title = "SMC.state.contextVersion.attrs.buildDockerfilePath"
76+
) Mirroring from GitHub: {{ SMC.state.contextVersion.attrs.buildDockerfilePath }}
77+
small.small(
78+
ng-if = "SMC.state.advanced !== 'isMirroringDockerfile'"
79+
)
80+
span.span.text-overflow.float-left Mirror with a Dockerfile from this repo on GitHub.
7781
//- when there's an error
7882
//- svg.iconnables.icons-alert-alt.float-left
7983
//- use(
@@ -92,16 +96,15 @@
9296
xlink:href = "#icons-help"
9397
)
9498
button.btn.btn-xxs.gray(
99+
ng-if = "$root.featureFlags.dockerfileMirroringMultiple"
95100
internal-modal-helper = "changeMirrorView"
96101
) Change…
97-
small.small(
98-
ng-if = "!state.syncing"
99-
) Mirror with a Dockerfile from this repo on GitHub.
100102

101103
//- this should open the 'viewModalSync' view when syncing has not been set up
102104
label.toggle-wrapper
103105
input.toggle-input(
104-
ng-model = "state.syncing"
106+
ng-model = "SMC.switchBetweenAdvancedAndMirroring"
107+
ng-model-options = "{getterSetter: true}"
105108
type = "checkbox"
106109
)
107110
.toggle-group.toggle-sm
@@ -114,7 +117,6 @@
114117
'ace-runnable-dark': !$root.featureFlags.imAfraidOfTheDark,\
115118
'ace-runnable-light': $root.featureFlags.imAfraidOfTheDark\
116119
}"
117-
ng-init = "state.syncing = null"
118120
)
119121

120122
.sidebar(
@@ -123,7 +125,7 @@
123125
explorer-title = "Build Files"
124126
file-model = "SMC.state.contextVersion"
125127
loading-promises-target = "editServerModal"
126-
ng-if = "!state.syncing"
128+
ng-if = "SMC.state.advanced !== 'isMirroringDockerfile'"
127129
open-items = "SMC.openItems"
128130
read-only = "!SMC.state.advanced"
129131
root-dir = "SMC.state.contextVersion.rootDir"
@@ -135,11 +137,11 @@
135137
file = "item"
136138
file-editor
137139
loading-promises-target = "editServerModal"
138-
ng-class = "{'readonly': !SMC.state.advanced || state.syncing}"
140+
ng-class = "{'readonly': !SMC.state.advanced || (SMC.state.advanced && SMC.state.advanced === 'isMirroringDockerfile') }"
139141
ng-if = "item.state.type === 'File'"
140142
ng-repeat = "item in SMC.openItems.models track by item.id()"
141143
ng-show = "item === SMC.openItems.activeHistory.last()"
142-
read-only = "!SMC.state.advanced || state.syncing"
144+
read-only = "!SMC.state.advanced || SMC.state.advanced === 'isMirroringDockerfile'"
143145
state = "SMC.state"
144146
)
145147

client/directives/environment/modals/forms/formStack/stackSelectorFormDirective.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ function stackSelectorForm(
1919
scope: {
2020
loadingPromisesTarget: '@?',
2121
state: '=',
22+
showStackSelector: '=',
2223
isNewContainer: '=?'
2324
},
2425
link: function ($scope) {

client/directives/environment/modals/forms/formStack/viewFormStack.jade

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
.label.clearfix(
2+
ng-if = "showStackSelector"
23
ng-include = "'viewFormStackSelector'"
34
)
45

client/directives/environment/modals/modalChangeMirror/changeMirrorView.jade

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
ng-class = "{'in': active}"
44
)
55
.popover-header Choose Dockerfile
6-
svg.iconnables.icons-close
6+
svg.iconnables.icons-close(
7+
ng-click = "MC.cancel()"
8+
)
79
use(
810
xlink:href = "#icons-close"
911
)
@@ -14,12 +16,15 @@
1416
onload = "fromTool = true"
1517
)
1618
footer.modal-footer.clearfix
17-
button.btn.btn-md.white.float-left Cancel
19+
button.btn.btn-md.white.float-left(
20+
ng-click = "MC.cancel()"
21+
) Cancel
1822
button.btn.btn-md.green.float-right.btn-spinner(
19-
ng-disabled = "!dockerfile.selection"
23+
ng-click = "MC.confirm(MC.state.dockerfile)"
24+
ng-disabled = "!MC.state.dockerfile"
2025
)
2126
//- add the 'in' class to .btn-spinner when spinning!
2227
//- .spinner-wrapper.spinner-white.spinner-sm.in(
2328
//- ng-include = "'spinner'"
2429
//- )
25-
| Start Mirroring
30+
| Start Mirroring

0 commit comments

Comments
 (0)