|
|
@@ -3,24 +3,24 @@ import styled from "styled-components";
|
|
|
|
|
|
import aws from "assets/aws.png";
|
|
|
import api from "shared/api";
|
|
|
-import loading from "assets/loading.gif";
|
|
|
|
|
|
import { Context } from "shared/Context";
|
|
|
-import ExpandableSection from "components/porter/ExpandableSection";
|
|
|
import LoadingBar from "components/porter/LoadingBar";
|
|
|
import Spacer from "components/porter/Spacer";
|
|
|
-import Helper from "components/form-components/Helper";
|
|
|
import Text from "components/porter/Text";
|
|
|
+import Button from "components/porter/Button";
|
|
|
|
|
|
type Props = {
|
|
|
provisionFailureReason: string;
|
|
|
};
|
|
|
|
|
|
+const PROVISIONING_STATUS_POLL_INTERVAL = 60 * 1000; // poll every minute
|
|
|
+
|
|
|
const ProvisionerStatus: React.FC<Props> = ({
|
|
|
provisionFailureReason,
|
|
|
}) => {
|
|
|
const { currentProject, currentCluster } = useContext(Context);
|
|
|
- const [progress, setProgress] = useState(1);
|
|
|
+ const [progress, setProgress] = useState(0);
|
|
|
|
|
|
// Continuously poll provisioning status
|
|
|
const pollProvisioningStatus = async () => {
|
|
|
@@ -33,27 +33,27 @@ const ProvisionerStatus: React.FC<Props> = ({
|
|
|
cluster_id: currentCluster.id,
|
|
|
}
|
|
|
);
|
|
|
- const { status } = res.data;
|
|
|
- switch (status) {
|
|
|
- case status["BOOTSTRAP_READY"]:
|
|
|
- setProgress(2);
|
|
|
- break;
|
|
|
- case status["CONTROL_PLANE_READY"]:
|
|
|
- setProgress(3);
|
|
|
- break;
|
|
|
- case status["INFRASTRUCTURE_READY"]:
|
|
|
- setProgress(4);
|
|
|
- break;
|
|
|
- default:
|
|
|
- setProgress(1);
|
|
|
+ const { is_control_plane_ready, is_infrastructure_ready, status } = res.data;
|
|
|
+ let progress = 1;
|
|
|
+ if (is_control_plane_ready) {
|
|
|
+ progress += 1
|
|
|
+ }
|
|
|
+ if (is_infrastructure_ready) {
|
|
|
+ progress += 1
|
|
|
+ }
|
|
|
+ if (status === 'Provisioned') {
|
|
|
+ progress += 1
|
|
|
}
|
|
|
+ setProgress(progress);
|
|
|
} catch (err) {
|
|
|
console.log(err);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
useEffect(() => {
|
|
|
- pollProvisioningStatus();
|
|
|
+ const intervalId = setInterval(pollProvisioningStatus, PROVISIONING_STATUS_POLL_INTERVAL);
|
|
|
+ pollProvisioningStatus();
|
|
|
+ return () => clearInterval(intervalId);
|
|
|
}, []);
|
|
|
|
|
|
return (
|
|
|
@@ -65,9 +65,9 @@ const ProvisionerStatus: React.FC<Props> = ({
|
|
|
</Flex>
|
|
|
<Spacer height="18px" />
|
|
|
<LoadingBar
|
|
|
- color={provisionFailureReason && "failed"}
|
|
|
+ color={provisionFailureReason ? "failed" : undefined}
|
|
|
completed={progress}
|
|
|
- total={5}
|
|
|
+ total={4}
|
|
|
/>
|
|
|
<Spacer height="18px" />
|
|
|
<Text color="#aaaabb">
|
|
|
@@ -110,18 +110,6 @@ const Icon = styled.img`
|
|
|
margin-bottom: -1px;
|
|
|
`;
|
|
|
|
|
|
-const Img = styled.img`
|
|
|
- height: 15px;
|
|
|
- margin-right: 7px;
|
|
|
-`;
|
|
|
-
|
|
|
-const Status = styled.div`
|
|
|
- color: #aaaabb;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- margin-left: 15px;
|
|
|
-`;
|
|
|
-
|
|
|
const StyledProvisionerStatus = styled.div`
|
|
|
border-radius: 5px;
|
|
|
background: #26292e;
|