mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Merge branch '4.19'
This commit is contained in:
commit
0af88353fb
@ -70,7 +70,7 @@ public interface SAML2AuthManager extends PluggableAPIAuthenticator, PluggableSe
|
|||||||
ConfigKey<Integer> SAMLTimeout = new ConfigKey<Integer>("Advanced", Integer.class, "saml2.timeout", "1800",
|
ConfigKey<Integer> SAMLTimeout = new ConfigKey<Integer>("Advanced", Integer.class, "saml2.timeout", "1800",
|
||||||
"SAML2 IDP Metadata refresh interval in seconds, minimum value is set to 300", true);
|
"SAML2 IDP Metadata refresh interval in seconds, minimum value is set to 300", true);
|
||||||
|
|
||||||
ConfigKey<Boolean> SAMLCheckSignature = new ConfigKey<Boolean>("Advanced", Boolean.class, "saml2.check.signature", "false",
|
ConfigKey<Boolean> SAMLCheckSignature = new ConfigKey<Boolean>("Advanced", Boolean.class, "saml2.check.signature", "true",
|
||||||
"Whether SAML2 signature must be checked, when enforced and when the SAML response does not have a signature would lead to login exception", true);
|
"Whether SAML2 signature must be checked, when enforced and when the SAML response does not have a signature would lead to login exception", true);
|
||||||
|
|
||||||
public SAMLProviderMetadata getSPMetadata();
|
public SAMLProviderMetadata getSPMetadata();
|
||||||
|
|||||||
@ -100,7 +100,9 @@ class TestClusterDRS(cloudstackTestCase):
|
|||||||
)
|
)
|
||||||
cls._cleanup.append(cls.network)
|
cls._cleanup.append(cls.network)
|
||||||
|
|
||||||
cls.migrateSvms(cls.cluster)
|
cls.hypervisor = cls.testClient.getHypervisorInfo()
|
||||||
|
if cls.hypervisor.lower() not in ['simulator']:
|
||||||
|
cls.migrateSvms(cls.cluster)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def migrateSvms(cls, cluster):
|
def migrateSvms(cls, cluster):
|
||||||
|
|||||||
@ -66,12 +66,13 @@
|
|||||||
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
}"
|
}"
|
||||||
:loading="field.loading"
|
:loading="field.loading"
|
||||||
@input="onchange($event, field.name)">
|
@input="onchange($event, field.name)"
|
||||||
|
@change="onSelectFieldChange(field.name)">
|
||||||
<a-select-option
|
<a-select-option
|
||||||
v-for="(opt, idx) in field.opts"
|
v-for="(opt, idx) in field.opts"
|
||||||
:key="idx"
|
:key="idx"
|
||||||
:value="opt.id"
|
:value="['account'].includes(field.name) ? opt.name : opt.id"
|
||||||
:label="$t(opt.path || opt.name)">
|
:label="$t((['storageid'].includes(field.name) || !opt.path) ? opt.name : opt.path)">
|
||||||
<div>
|
<div>
|
||||||
<span v-if="(field.name.startsWith('zone'))">
|
<span v-if="(field.name.startsWith('zone'))">
|
||||||
<span v-if="opt.icon">
|
<span v-if="opt.icon">
|
||||||
@ -88,7 +89,7 @@
|
|||||||
<span v-if="(field.name.startsWith('managementserver'))">
|
<span v-if="(field.name.startsWith('managementserver'))">
|
||||||
<status :text="opt.state" />
|
<status :text="opt.state" />
|
||||||
</span>
|
</span>
|
||||||
{{ $t(opt.path || opt.name) }}
|
{{ $t((['storageid'].includes(field.name) || !opt.path) ? opt.name : opt.path) }}
|
||||||
</div>
|
</div>
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
@ -242,6 +243,11 @@ export default {
|
|||||||
onchange: async function (event, fieldname) {
|
onchange: async function (event, fieldname) {
|
||||||
this.fetchDynamicFieldData(fieldname, event.target.value)
|
this.fetchDynamicFieldData(fieldname, event.target.value)
|
||||||
},
|
},
|
||||||
|
onSelectFieldChange (fieldname) {
|
||||||
|
if (fieldname === 'domainid') {
|
||||||
|
this.fetchDynamicFieldData('account')
|
||||||
|
}
|
||||||
|
},
|
||||||
onVisibleForm () {
|
onVisibleForm () {
|
||||||
this.visibleFilter = !this.visibleFilter
|
this.visibleFilter = !this.visibleFilter
|
||||||
if (!this.visibleFilter) return
|
if (!this.visibleFilter) return
|
||||||
@ -585,6 +591,9 @@ export default {
|
|||||||
if (domainIndex > -1) {
|
if (domainIndex > -1) {
|
||||||
this.fields[domainIndex].loading = false
|
this.fields[domainIndex].loading = false
|
||||||
}
|
}
|
||||||
|
if (accountIndex > -1) {
|
||||||
|
this.fields[accountIndex].loading = false
|
||||||
|
}
|
||||||
if (imageStoreIndex > -1) {
|
if (imageStoreIndex > -1) {
|
||||||
this.fields[imageStoreIndex].loading = false
|
this.fields[imageStoreIndex].loading = false
|
||||||
}
|
}
|
||||||
@ -609,7 +618,9 @@ export default {
|
|||||||
if (diskOfferingIndex > -1) {
|
if (diskOfferingIndex > -1) {
|
||||||
this.fields[diskOfferingIndex].loading = false
|
this.fields[diskOfferingIndex].loading = false
|
||||||
}
|
}
|
||||||
this.fillFormFieldValues()
|
if (Array.isArray(arrayField)) {
|
||||||
|
this.fillFormFieldValues()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
initFormFieldData () {
|
initFormFieldData () {
|
||||||
@ -620,6 +631,9 @@ export default {
|
|||||||
this.fetchDynamicFieldData(arrayField)
|
this.fetchDynamicFieldData(arrayField)
|
||||||
},
|
},
|
||||||
sortArray (data, key = 'name') {
|
sortArray (data, key = 'name') {
|
||||||
|
if (!data) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
return data.sort(function (a, b) {
|
return data.sort(function (a, b) {
|
||||||
if (a[key] < b[key]) { return -1 }
|
if (a[key] < b[key]) { return -1 }
|
||||||
if (a[key] > b[key]) { return 1 }
|
if (a[key] > b[key]) { return 1 }
|
||||||
@ -669,8 +683,15 @@ export default {
|
|||||||
},
|
},
|
||||||
fetchAccounts (searchKeyword) {
|
fetchAccounts (searchKeyword) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
api('listAccounts', { listAll: true, showicon: true, keyword: searchKeyword }).then(json => {
|
const params = { listAll: true, isrecursive: false, showicon: true, keyword: searchKeyword }
|
||||||
const account = json.listaccountsresponse.account
|
if (this.form.domainid) {
|
||||||
|
params.domainid = this.form.domainid
|
||||||
|
}
|
||||||
|
api('listAccounts', params).then(json => {
|
||||||
|
var account = json.listaccountsresponse.account
|
||||||
|
if (this.form.domainid) {
|
||||||
|
account = account.filter(a => a.domainid === this.form.domainid)
|
||||||
|
}
|
||||||
resolve({
|
resolve({
|
||||||
type: 'account',
|
type: 'account',
|
||||||
data: account
|
data: account
|
||||||
|
|||||||
@ -382,6 +382,9 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
fetchData () {
|
fetchData () {
|
||||||
|
if (this.isAdminOrDomainAdmin()) {
|
||||||
|
this.fetchDomainData()
|
||||||
|
}
|
||||||
this.fetchZoneData()
|
this.fetchZoneData()
|
||||||
this.allowSettingMTU()
|
this.allowSettingMTU()
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user