cfn-forge
Version:
CloudFormation deployment automation tool with git-based workflows
135 lines (120 loc) • 3.54 kB
JavaScript
/**
* CloudFormation Interface
* Defines the contract for CloudFormation operations to ensure portability
*/
class ICloudFormation {
/**
* Deploy a CloudFormation stack
* @param {Object} params - Deployment parameters
* @param {string} params.stackName - Stack name
* @param {string} params.templateBody - Template content
* @param {Object} params.parameters - Stack parameters
* @param {string[]} params.capabilities - Stack capabilities
* @param {Object} params.tags - Stack tags
* @returns {Promise<Object>} Deployment result
*/
async deployStack(params) {
throw new Error('Not implemented');
}
/**
* Update an existing CloudFormation stack
* @param {Object} params - Update parameters
* @returns {Promise<Object>} Update result
*/
async updateStack(params) {
throw new Error('Not implemented');
}
/**
* Delete a CloudFormation stack
* @param {string} stackName - Stack name to delete
* @returns {Promise<void>}
*/
async deleteStack(stackName) {
throw new Error('Not implemented');
}
/**
* Get stack status
* @param {string} stackName - Stack name
* @returns {Promise<Object>} Stack status information
*/
async getStackStatus(stackName) {
throw new Error('Not implemented');
}
/**
* Validate a CloudFormation template
* @param {string} templateBody - Template content
* @returns {Promise<Object>} Validation result
*/
async validateTemplate(templateBody) {
throw new Error('Not implemented');
}
/**
* List all stacks
* @param {Object} filters - Optional filters
* @returns {Promise<Array>} Array of stack summaries
*/
async listStacks(filters = {}) {
throw new Error('Not implemented');
}
/**
* Get stack outputs
* @param {string} stackName - Stack name
* @returns {Promise<Object>} Stack outputs
*/
async getStackOutputs(stackName) {
throw new Error('Not implemented');
}
/**
* Get stack resources
* @param {string} stackName - Stack name
* @returns {Promise<Array>} Array of stack resources
*/
async getStackResources(stackName) {
throw new Error('Not implemented');
}
/**
* Get stack events
* @param {string} stackName - Stack name
* @param {Object} options - Query options
* @returns {Promise<Array>} Array of stack events
*/
async getStackEvents(stackName, options = {}) {
throw new Error('Not implemented');
}
/**
* Wait for stack operation to complete
* @param {string} stackName - Stack name
* @param {string} operation - Operation type (create, update, delete)
* @param {Object} options - Wait options
* @returns {Promise<Object>} Final stack status
*/
async waitForStack(stackName, operation, options = {}) {
throw new Error('Not implemented');
}
/**
* Detect stack drift
* @param {string} stackName - Stack name
* @returns {Promise<Object>} Drift detection result
*/
async detectStackDrift(stackName) {
throw new Error('Not implemented');
}
/**
* Get stack policy
* @param {string} stackName - Stack name
* @returns {Promise<string>} Stack policy document
*/
async getStackPolicy(stackName) {
throw new Error('Not implemented');
}
/**
* Set stack policy
* @param {string} stackName - Stack name
* @param {string} policyBody - Policy document
* @returns {Promise<void>}
*/
async setStackPolicy(stackName, policyBody) {
throw new Error('Not implemented');
}
}
module.exports = ICloudFormation;